Main Page | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Class Members | File Members

LExpressionSymbol Class Reference

#include <lsymbol.hpp>

Inheritance diagram for LExpressionSymbol:

Inheritance graph
[legend]
Collaboration diagram for LExpressionSymbol:

Collaboration graph
[legend]
List of all members.

Detailed Description

The Lisp symbol S-expression.

The class represents the functionality of a Lisp symbol

Definition at line 40 of file lsymbol.hpp.

Public Member Functions

 LExpressionSymbol (const char *a_name)
 The constructor.
const LReferenceGetDynamicValue () const
 Get the dynamic (global) value of the symbol.
LReferenceGetDynamicValueRef ()
 Get the dynamic (global) value by reference.
void SetDynamicValue (const SReference &val)
 Set the dynamic (global) value of the symbol.
const LReferenceGetFunction () const
 Get the associated functional object if any.
LReferenceGetFunctionRef ()
 Get the associated functional by reference.
void SetFunction (const LReference &val)
 Set the associated functional object.
bool IsDynamic () const
 Query if the symbol has dynamic binding style.
bool IsConstant () const
 Query if the symbol is a constant.
void SetDynamicBinding (bool dyn=true)
 Set binding style.
void SetConstant (bool cnst=true)
 Set constantness.
virtual SString TextRepresentation () const
 Text representation of the S-expression.
const char * GetName () const
const IntelibTypeIdTermType () const
 Actual S-expression type.
bool IsChangeable () const
 Can it be changed during the lifetime of the object?
virtual SExpressionClone () const
 Clone a changeable object.
virtual bool SpecificEql (const SExpression *) const
 Are the two objects EQL (while not EQ).

Static Public Attributes

static IntelibTypeId TypeId
 The type identifier.

Protected Member Functions

 LExpressionSymbol (const char *a_name, const IntelibTypeId &t)
 ~LExpressionSymbol ()
bool CanDie ()
 Is it OK to delete the object now?


Constructor & Destructor Documentation

LExpressionSymbol::LExpressionSymbol const char *  a_name,
const IntelibTypeId t
[protected]
 

Definition at line 46 of file lsymbol.hpp.

LExpressionSymbol::~LExpressionSymbol  )  [protected]
 

Definition at line 49 of file lsymbol.hpp.

LExpressionSymbol::LExpressionSymbol const char *  a_name  ) 
 

The constructor.

Definition at line 54 of file lsymbol.hpp.

References TypeId.


Member Function Documentation

const LReference& LExpressionSymbol::GetDynamicValue  )  const
 

Get the dynamic (global) value of the symbol.

Definition at line 59 of file lsymbol.hpp.

LReference& LExpressionSymbol::GetDynamicValueRef  ) 
 

Get the dynamic (global) value by reference.

Definition at line 61 of file lsymbol.hpp.

void LExpressionSymbol::SetDynamicValue const SReference val  ) 
 

Set the dynamic (global) value of the symbol.

Definition at line 38 of file lsymbol.cpp.

Referenced by LSymbolNIL::LSymbolNIL(), LSymbolT::LSymbolT(), and LSymbol::~LSymbol().

const LReference& LExpressionSymbol::GetFunction  )  const
 

Get the associated functional object if any.

Definition at line 65 of file lsymbol.hpp.

Referenced by RetrieveFunctionObject().

LReference& LExpressionSymbol::GetFunctionRef  ) 
 

Get the associated functional by reference.

Definition at line 67 of file lsymbol.hpp.

void LExpressionSymbol::SetFunction const LReference val  ) 
 

Set the associated functional object.

Definition at line 69 of file lsymbol.hpp.

Referenced by LSymbol::~LSymbol().

bool LExpressionSymbol::IsDynamic  )  const
 

Query if the symbol has dynamic binding style.

Definition at line 72 of file lsymbol.hpp.

bool LExpressionSymbol::IsConstant  )  const
 

Query if the symbol is a constant.

Definition at line 74 of file lsymbol.hpp.

void LExpressionSymbol::SetDynamicBinding bool  dyn = true  ) 
 

Set binding style.

Definition at line 76 of file lsymbol.hpp.

void LExpressionSymbol::SetConstant bool  cnst = true  ) 
 

Set constantness.

Definition at line 78 of file lsymbol.hpp.

Referenced by LSymbolNIL::LSymbolNIL(), and LSymbolT::LSymbolT().

virtual SString SExpressionLabel::TextRepresentation  )  const [virtual, inherited]
 

Text representation of the S-expression.

Returns the text string which represents the given S-expression as for real Lisp (for example, (25 36 49))

Implements SExpression.

const char* SExpressionLabel::GetName  )  const [inherited]
 

Definition at line 440 of file sexpress.hpp.

Referenced by SExpressionHashPackage::Import().

const IntelibTypeId& SExpression::TermType  )  const [inherited]
 

Actual S-expression type.

Definition at line 195 of file sexpress.hpp.

Referenced by SReference::DynamicCastGetPtr(), SchReference::IsEql(), LReference::IsEql(), SReference::SimpleCastGetPtr(), SchReference::TextRepresentation(), and LReference::TextRepresentation().

bool SExpression::IsChangeable  )  const [inherited]
 

Can it be changed during the lifetime of the object?

Definition at line 198 of file sexpress.hpp.

References IntelibTypeId::IsChangeable().

virtual SExpression* SExpression::Clone  )  const [virtual, inherited]
 

Clone a changeable object.

The method should return the pointer created with new

Note:
It can (and should) return null pointer for non-changeables
Warning:
This method will hang your program being called for a looped data structure, including looped lists, a hash table which references a list in which it is a member, etc.

If you create a changeable S-expression, you MUST make sure this method duplicates your object in such a way that nothing is shared between the old and new objects, that is, changing the new object can not in any way change the old object.

Reimplemented in SExpressionBacklink, SExpressionCons, SExpressionHashTable, SExpressionRawBuffer, and SExpressionVector.

Definition at line 214 of file sexpress.hpp.

virtual bool SExpression::SpecificEql const SExpression  )  const [virtual, inherited]
 

Are the two objects EQL (while not EQ).

This function is overriden by those SExpressions able to be EQL while being not EQ.

Warning:
It is not demanded that this function return true if it's arguments are the same SExpression (that is, they're EQ). It is only called by the EQL predicate implementation when it has been checked that the operands are not the same object.

Reimplemented in SExpressionInt, SExpressionFloat, SExpressionChar, and SExpressionString.

Definition at line 235 of file sexpress.hpp.

Referenced by SchReference::IsEql(), and LReference::IsEql().

bool GarbageSafe::CanDie  )  [protected, inherited]
 

Is it OK to delete the object now?

Our children have no access to the private attribute RefCount and should never need it except when checking if the destruction is not an error. This solves the problem.

Definition at line 53 of file refcount.hpp.


Member Data Documentation

IntelibTypeId LExpressionSymbol::TypeId [static]
 

The type identifier.

Reimplemented from SExpressionLabel.

Referenced by LExpressionSymbol().


The documentation for this class was generated from the following files:
Generated on Tue Dec 18 00:41:35 2007 for InteLib by  doxygen 1.4.1