PUMA Library Reference Manual
Loading...
Searching...
No Matches
Puma::MacroUnit Class Reference

#include <Puma/MacroUnit.h>

+ Inheritance diagram for Puma::MacroUnit:

Description

Specialized unit for preprocessor macro expansions.

Public Member Functions

 MacroUnit ()
 Construct an empty macro unit. More...
 
 MacroUnit (const Unit &unit)
 Construct a macro unit. More...
 
virtual ~MacroUnit ()
 Destructor. More...
 
virtual bool isMacroExp () const
 Check if this is a macro expansion unit. More...
 
void CallingUnit (Unit *unit)
 Set the unit containing the macro call. More...
 
UnitCallingUnit () const
 Get the unit containing the macro call. More...
 
void MacroBegin (Token *token)
 Set the first token of the macro call in the calling unit. More...
 
void MacroEnd (Token *token)
 Set the last token of the macro call in the calling unit. More...
 
TokenMacroBegin () const
 Get the first token of the macro call in the calling unit. More...
 
TokenMacroEnd () const
 Get the last token of the macro call in the calling unit. More...
 
TokenExpansionBegin (Token *token) const
 Get the first token of the whole macro expansion in the source file if the given token is the first token of this expansion or nested expansion (macro generated macro call). More...
 
TokenExpansionEnd (Token *token) const
 Get the last token of the whole macro expansion in the source file if the given token is the last token of this expansion or nested expansion (macro generated macro call). More...
 
- Public Member Functions inherited from Puma::Unit
 Unit ()
 Constructor. More...
 
 Unit (const List &list)
 Copy-constructor. More...
 
virtual ~Unit ()
 Destructor. More...
 
virtual void name (const char *name)
 Set the name of the unit (usually the file name). More...
 
char * name () const
 Get the name of the unit (usually the file name). More...
 
virtual void print (std::ostream &os) const
 Print the tokens of the unit on the given stream. More...
 
virtual bool isFile () const
 Check if this is a unit for a file. More...
 
virtual bool isMacroExp () const
 Check if this is a unit for a macro expansion. More...
 
virtual bool isTemplateInstance () const
 Check if this is a unit for a template instance. More...
 
UnitStatestate ()
 Get the state of the unit. More...
 
char * toString () const
 Serialize the tokens of the unit. More...
 
Tokenfirst () const
 Get the first token in the unit. More...
 
Tokenlast () const
 Get the last token in the unit. More...
 
Tokennext (const Token *token) const
 Get the next token of the given token. More...
 
Tokenprev (const Token *token) const
 Get the previous token of the given token. More...
 
- Public Member Functions inherited from Puma::List
 List ()
 Constructor. More...
 
 List (const List &copy)
 Copy-constructor. More...
 
 ~List ()
 Destructor. More...
 
Listoperator= (const List &copy)
 Assignment operator. More...
 
Listoperator+= (const List &list)
 Append the given list. More...
 
List operator+ (const List &list)
 Create a new list containing the elements of this list followed by the elements of the given list. More...
 
void clear ()
 Destroy the list elements. More...
 
void append (ListElement &element)
 Append an element to the list. More...
 
void prepend (ListElement &element)
 Prepend an element to the list. More...
 
void insert (ListElement *at, ListElement &element)
 Insert an element at the given list position. More...
 
void remove (ListElement *element)
 Remove the given element from the list. More...
 
void kill (ListElement *from, ListElement *to=(ListElement *) 0)
 Remove and destroy all elements between the given list elements. More...
 
void cut (List &out, ListElement *from, ListElement *to=(ListElement *) 0)
 Cut all elements between the given list elements. More...
 
Listcopy (ListElement *from=(ListElement *) 0, ListElement *to=(ListElement *) 0)
 Copy all elements between the given list elements. More...
 
void paste (ListElement *at, const List &l)
 Insert copies of the elements of the given list at the given list position. More...
 
void paste_before (ListElement *at, const List &l)
 Insert copies of the elements of the given list before the given list position. More...
 
void move (ListElement *at, List &l)
 Insert the elements of the given list at the given list position. More...
 
void move_before (ListElement *at, List &l)
 Insert the elements of the given list before the given list position. More...
 
bool empty () const
 Check if the list is empty. More...
 
const ListElementfirst () const
 Get the first element in the list. More...
 
const ListElementlast () const
 Get the last element in the list. More...
 
const ListElementnext (const ListElement *element) const
 Get the next element of the given element. More...
 
const ListElementprev (const ListElement *element) const
 Get the previous element of the given element. More...
 
- Public Member Functions inherited from Puma::Printable
virtual ~Printable ()
 Destructor. More...
 
virtual void print (std::ostream &os) const =0
 Print object information on the given output stream. More...
 

Constructor & Destructor Documentation

◆ MacroUnit() [1/2]

Puma::MacroUnit::MacroUnit ( )
inline

Construct an empty macro unit.

◆ MacroUnit() [2/2]

Puma::MacroUnit::MacroUnit ( const Unit unit)
inline

Construct a macro unit.

Parameters
unitThe unit containing the macro expansion.

◆ ~MacroUnit()

virtual Puma::MacroUnit::~MacroUnit ( )
inlinevirtual

Destructor.

Member Function Documentation

◆ CallingUnit() [1/2]

Unit * Puma::MacroUnit::CallingUnit ( ) const
inline

Get the unit containing the macro call.

Returns
A pointer to the unit, or NULL if not set.

◆ CallingUnit() [2/2]

void Puma::MacroUnit::CallingUnit ( Unit unit)
inline

Set the unit containing the macro call.

Parameters
unitThe unit.

◆ ExpansionBegin()

Token * Puma::MacroUnit::ExpansionBegin ( Token token) const

Get the first token of the whole macro expansion in the source file if the given token is the first token of this expansion or nested expansion (macro generated macro call).

Parameters
tokenThe token.
Returns
The first token, or NULL otherwise.

◆ ExpansionEnd()

Token * Puma::MacroUnit::ExpansionEnd ( Token token) const

Get the last token of the whole macro expansion in the source file if the given token is the last token of this expansion or nested expansion (macro generated macro call).

Parameters
tokenThe token.
Returns
The last token, or NULL otherwise.

◆ isMacroExp()

virtual bool Puma::MacroUnit::isMacroExp ( ) const
inlinevirtual

Check if this is a macro expansion unit.

Returns
Always returns true.

Reimplemented from Puma::Unit.

◆ MacroBegin() [1/2]

Token * Puma::MacroUnit::MacroBegin ( ) const
inline

Get the first token of the macro call in the calling unit.

Returns
A pointer to the token.

◆ MacroBegin() [2/2]

void Puma::MacroUnit::MacroBegin ( Token token)
inline

Set the first token of the macro call in the calling unit.

Parameters
tokenThe first token.

◆ MacroEnd() [1/2]

Token * Puma::MacroUnit::MacroEnd ( ) const
inline

Get the last token of the macro call in the calling unit.

Returns
A pointer to the token.

◆ MacroEnd() [2/2]

void Puma::MacroUnit::MacroEnd ( Token token)
inline

Set the last token of the macro call in the calling unit.

Parameters
tokenThe last token.