PUMA Library Reference Manual
Puma::CT_List Class Reference

#include <Puma/CTree.h>

+ Inheritance diagram for Puma::CT_List:

Description

Base class for tree nodes representing lists.

Public Types

enum  {
  OPEN = 1,
  CLOSE = 2,
  OPEN_CLOSE = 3,
  SEPARATORS = 4,
  FORCE_EMPTY = 8,
  END_SEP = 16,
  NO_LAST_SEP = 32,
  INTRO = 64
}
 List properties. More...
 

Public Member Functions

CT_ListIsList ()
 Get a pointer to this CT_List. More...
 
int Entries () const
 Get the number of list entries. More...
 
CTreeEntry (int n) const
 Get the n-th list entry. More...
 
int Sons () const
 Get the number of sons. More...
 
CTreeSon (int n) const
 Get the n-th son. More...
 
int Index (CTree *son)
 Get the index of the given son, or -1 if not found. More...
 
int GetProperties () const
 Get the list properties. More...
 
void AddProperties (int p)
 Add a list property. More...
 
void AddSon (CTree *s)
 Add a son. More...
 
void PrefixSon (CTree *s)
 Prepend a son. More...
 
void InsertSon (CTree *before, CTree *son)
 Insert a son before another son. More...
 
void ReplaceSon (CTree *old_son, CTree *new_son)
 Replace a son. More...
 
void RemoveSon (CTree *son)
 Remove a son. More...
 
void InsertSon (int idx, CTree *s)
 Insert a son at the given index. More...
 
void ReplaceSon (int idx, CTree *s)
 Replace the son at the given index. More...
 
void RemoveSon (int idx)
 Remove the son at the given index. More...
 
- Public Member Functions inherited from Puma::CTree
virtual ~CTree ()
 Destructor. More...
 
virtual const char * NodeName () const =0
 Get the node name (node identifier). More...
 
virtual Tokentoken () const
 Get the first token of the syntactic construct represented by this sub-tree. More...
 
virtual Tokenend_token () const
 Get the last token of the syntactic construct represented by this sub-tree. More...
 
virtual CT_Tokentoken_node () const
 Get the CT_Token node of the first token of the syntactic construct represented by this sub-tree. More...
 
virtual CT_Tokenend_token_node () const
 Get the CT_Token node of the last token of the syntactic construct represented by this sub-tree. More...
 
virtual CTreeParent () const
 Get the parent node. More...
 
virtual CTypeInfoType () const
 Get the semantic type of the node. More...
 
virtual CExprValueValue () const
 Get the calculated value of the expression. More...
 
virtual CSemScopeSemScope () const
 Get the scope opened by the node. More...
 
virtual CSemValueSemValue () const
 Get the semantic value of the node. More...
 
virtual CSemObjectSemObject () const
 Get the semantic information of the node. More...
 
virtual CT_SimpleNameIsSimpleName ()
 Get a pointer to CT_SimpleName if the current node represents a name. More...
 
virtual CT_StringIsString ()
 Get a pointer to CT_String if the current node represents a string. More...
 
virtual CT_DeclaratorIsDeclarator ()
 Get a pointer to CT_Declarator if the current node represents a declarator. More...
 
virtual CT_StatementIsStatement ()
 Get a pointer to CT_Statement if the current node represents a statement. More...
 
virtual CT_ExpressionIsExpression ()
 Get a pointer to CT_Expression if the current node represents a expression. More...
 
virtual CT_DeclIsDeclaration ()
 Get a pointer to CT_Decl if the current node represents a declaration. More...
 
virtual CT_CallIsCall ()
 Get a pointer to CT_Call if the current node represents a call expression. More...
 
virtual CT_DelayedParseIsDelayedParse ()
 Get a pointer to CT_DelayedParse if the current node represents a delayed code fragment. More...
 
bool HasValueNull () const
 Return true if the tree has the constant value 0. More...
 

Protected Member Functions

 CT_List (int size=5, int incr=5, int props=0)
 Constructor. More...
 
- Protected Member Functions inherited from Puma::CTree
CTreeSon (CTree *const *sons, int len, int n) const
 Get the n-th son from given sons array. More...
 
int Sons (CTree *const *sons, int len) const
 Get the number of sons in the given sons array. More...
 
void ReplaceSon (CTree **sons, int len, CTree *old_son, CTree *new_son)
 Replace a son. More...
 
void ReplaceSon (CTree *&son, CTree *old_son, CTree *new_son)
 Replace a son if it equals the given son. More...
 
void AddSon (CTree *&son, CTree *new_son)
 Add a new son. More...
 
void SetParent (const CTree *parent)
 Set the parent tree node. More...
 
void SetParent (CTree *node, const CTree *parent)
 Set the parent tree node of the given tree node. More...
 
 CTree ()
 Default constructor. More...
 

Additional Inherited Members

- Static Public Attributes inherited from Puma::CTree
static int alloc
 
static int release
 

Member Enumeration Documentation

◆ anonymous enum

anonymous enum

List properties.

Enumerator
OPEN 

List has a start token, like ':' in ":a(1),b(2)"

CLOSE 

List has an end token

OPEN_CLOSE 

List has opening and closing delimiters, like '(' and ')'

SEPARATORS 

List has separators, like ','

FORCE_EMPTY 

List pretend to be empty, like for "(void)"

END_SEP 

List has trailing separator, like "a,b,c,"

NO_LAST_SEP 

List has no separator before last element, like "(a,b...)"

INTRO 

List has an introduction chararacter, like "=" in "={a,b}"

Constructor & Destructor Documentation

◆ CT_List()

Puma::CT_List::CT_List ( int  size = 5,
int  incr = 5,
int  props = 0 
)
inlineprotected

Constructor.

Parameters
sizeThe initial list size.
incrThe initial increment count.
propsThe list properties (bit array).

Member Function Documentation

◆ AddProperties()

void Puma::CT_List::AddProperties ( int  p)
inline

Add a list property.

Parameters
pThe property to add.

◆ AddSon()

void Puma::CT_List::AddSon ( CTree s)

Add a son.

Parameters
sThe son to add.

◆ Entries()

int Puma::CT_List::Entries ( ) const

Get the number of list entries.

◆ Entry()

CTree* Puma::CT_List::Entry ( int  n) const

Get the n-th list entry.

Parameters
nThe index of the entry.
Returns
The list entry or NULL.

◆ GetProperties()

int Puma::CT_List::GetProperties ( ) const
inline

Get the list properties.

◆ Index()

int Puma::CT_List::Index ( CTree son)

Get the index of the given son, or -1 if not found.

◆ InsertSon() [1/2]

void Puma::CT_List::InsertSon ( CTree before,
CTree son 
)

Insert a son before another son.

Parameters
beforeThe son to insert the new son before.
sonThe son to insert.

◆ InsertSon() [2/2]

void Puma::CT_List::InsertSon ( int  idx,
CTree s 
)

Insert a son at the given index.

Parameters
idxThe index at which to insert.
sThe son to insert.

◆ IsList()

CT_List* Puma::CT_List::IsList ( )
inlinevirtual

Get a pointer to this CT_List.

Reimplemented from Puma::CTree.

◆ PrefixSon()

void Puma::CT_List::PrefixSon ( CTree s)

Prepend a son.

Parameters
sThe son to prepend.

◆ RemoveSon() [1/2]

void Puma::CT_List::RemoveSon ( CTree son)

Remove a son.

Parameters
sonThe son to remove.

◆ RemoveSon() [2/2]

void Puma::CT_List::RemoveSon ( int  idx)

Remove the son at the given index.

Parameters
idxThe index of the son to remove.

◆ ReplaceSon() [1/2]

void Puma::CT_List::ReplaceSon ( CTree old_son,
CTree new_son 
)
virtual

Replace a son.

Parameters
old_sonThe son to replace.
new_sonThe new son.

Reimplemented from Puma::CTree.

◆ ReplaceSon() [2/2]

void Puma::CT_List::ReplaceSon ( int  idx,
CTree s 
)

Replace the son at the given index.

Parameters
idxThe index of the son to replace.
sThe new son.

◆ Son()

CTree* Puma::CT_List::Son ( int  n) const
inlinevirtual

Get the n-th son.

Parameters
nThe index of the son.
Returns
The n-th son or NULL.

Reimplemented from Puma::CTree.

Reimplemented in Puma::CT_PrivateName.

◆ Sons()

int Puma::CT_List::Sons ( ) const
inlinevirtual

Get the number of sons.

Implements Puma::CTree.

Reimplemented in Puma::CT_PrivateName, and Puma::CT_GnuLocalLabelStmt.