decompiler  1.0.0
Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | List of all members
ScopeInternal Class Reference

An in-memory implementation of the Scope interface. More...

#include <database.hh>

Inheritance diagram for ScopeInternal:
Scope ScopeGhidraNamespace ScopeLocal

Public Member Functions

 ScopeInternal (const string &nm, Architecture *g)
 Construct the Scope. More...
 
virtual void clear (void)
 Clear all symbols from this scope.
 
virtual void categorySanity (void)
 Make sure Symbol categories are sane. More...
 
virtual void clearCategory (int4 cat)
 Clear all symbols of the given category from this scope.
 
virtual void clearUnlocked (void)
 Clear all unlocked symbols from this scope.
 
virtual void clearUnlockedCategory (int4 cat)
 Clear unlocked symbols of the given category from this scope.
 
virtual MapIterator begin (void) const
 Beginning iterator to mapped SymbolEntrys.
 
virtual MapIterator end (void) const
 Ending iterator to mapped SymbolEntrys.
 
virtual list< SymbolEntry >::const_iterator beginDynamic (void) const
 Beginning iterator to dynamic SymbolEntrys.
 
virtual list< SymbolEntry >::const_iterator endDynamic (void) const
 Ending iterator to dynamic SymbolEntrys.
 
virtual list< SymbolEntry >::iterator beginDynamic (void)
 Beginning iterator to dynamic SymbolEntrys.
 
virtual list< SymbolEntry >::iterator endDynamic (void)
 Ending iterator to dynamic SymbolEntrys.
 
virtual void removeSymbol (Symbol *symbol)
 Remove the given Symbol from this Scope.
 
virtual void renameSymbol (Symbol *sym, const string &newname)
 Rename a Symbol within this Scope.
 
virtual void retypeSymbol (Symbol *sym, Datatype *ct)
 Change the data-type of a Symbol within this Scope. More...
 
virtual void setAttribute (Symbol *sym, uint4 attr)
 Set boolean Varnode properties on a Symbol.
 
virtual void clearAttribute (Symbol *sym, uint4 attr)
 Clear boolean Varnode properties on a Symbol.
 
virtual void setDisplayFormat (Symbol *sym, uint4 attr)
 Set the display format for a Symbol.
 
virtual SymbolEntryfindAddr (const Address &addr, const Address &usepoint) const
 Find a Symbol at a given address and usepoint. More...
 
virtual SymbolEntryfindContainer (const Address &addr, int4 size, const Address &usepoint) const
 Find the smallest Symbol containing the given memory range. More...
 
virtual SymbolEntryfindClosestFit (const Address &addr, int4 size, const Address &usepoint) const
 Find Symbol which is the closest fit to the given memory range. More...
 
virtual FuncdatafindFunction (const Address &addr) const
 Find the function starting at the given address. More...
 
virtual ExternRefSymbolfindExternalRef (const Address &addr) const
 Find an external reference at the given address. More...
 
virtual LabSymbolfindCodeLabel (const Address &addr) const
 Find a label Symbol at the given address. More...
 
virtual SymbolEntryfindOverlap (const Address &addr, int4 size) const
 Find first Symbol overlapping the given memory range. More...
 
virtual SymbolEntryfindBefore (const Address &addr) const
 Find first Symbol before (but not containing) a given address. More...
 
virtual SymbolEntryfindAfter (const Address &addr) const
 Find first Symbol after (but not containing) a given address. More...
 
virtual void findByName (const string &name, vector< Symbol * > &res) const
 Find a Symbol by name within this Scope. More...
 
virtual FuncdataresolveExternalRefFunction (ExternRefSymbol *sym) const
 Convert an external reference to the referenced function. More...
 
virtual string buildVariableName (const Address &addr, const Address &pc, Datatype *ct, int4 &index, uint4 flags) const
 Given an address and data-type, build a suitable generic symbol name. More...
 
virtual string buildUndefinedName (void) const
 Build a formal undefined name, used internally when a Symbol is not given a name. More...
 
virtual string makeNameUnique (const string &nm) const
 Produce a version of the given symbol name that won't collide with other names in this Scope. More...
 
virtual void saveXml (ostream &s) const
 Write out this as a <scope> XML tag.
 
virtual void restoreXml (const Element *el)
 Restore this Scope from a <scope> XML tag.
 
virtual void printEntries (ostream &s) const
 Dump a description of all SymbolEntry objects to a stream.
 
virtual int4 getCategorySize (int4 cat) const
 Get the number of Symbols in the given category. More...
 
virtual SymbolgetCategorySymbol (int4 cat, int4 ind) const
 Retrieve a Symbol by index within a specific category. More...
 
virtual void setCategory (Symbol *sym, int4 cat, int4 ind)
 Set the category and index for the given Symbol. More...
 
- Public Member Functions inherited from Scope
 Scope (const string &nm, Architecture *g)
 Construct an empty scope, given a name and Architecture.
 
virtual ~Scope (void)
 Destructor.
 
virtual bool inScope (const Address &addr, int4 size, const Address &usepoint) const
 Query if the given range is owned by this Scope. More...
 
virtual SymbolEntryaddSymbol (const string &name, Datatype *ct, const Address &addr, const Address &usepoint)
 Add a new Symbol to this Scope, given a name, data-type, and a single mapping. More...
 
const string & getName (void) const
 Get the name of the Scope.
 
bool isGlobal (void) const
 Return true if this scope is global.
 
void queryByName (const string &name, vector< Symbol * > &res) const
 Look-up symbols by name. More...
 
FuncdataqueryFunction (const string &name) const
 Look-up a function by name. More...
 
SymbolEntryqueryByAddr (const Address &addr, const Address &usepoint) const
 Get Symbol with matching address. More...
 
SymbolEntryqueryContainer (const Address &addr, int4 size, const Address &usepoint) const
 Find the smallest containing Symbol. More...
 
SymbolEntryqueryProperties (const Address &addr, int4 size, const Address &usepoint, uint4 &flags) const
 Find a Symbol or properties at the given address. More...
 
FuncdataqueryFunction (const Address &addr) const
 Look-up a function by address. More...
 
FuncdataqueryExternalRefFunction (const Address &addr) const
 Look-up a function thru an external reference. More...
 
LabSymbolqueryCodeLabel (const Address &addr) const
 Look-up a code label by address. More...
 
ScoperesolveScope (const string &name) const
 Find a child Scope of this. More...
 
ScopediscoverScope (const Address &addr, int4 sz, const Address &usepoint)
 Find the owning Scope of a given memory range. More...
 
ScopeMap::const_iterator childrenBegin () const
 Beginning iterator of child scopes.
 
ScopeMap::const_iterator childrenEnd () const
 Ending iterator of child scopes.
 
void saveXmlRecursive (ostream &s, bool onlyGlobal) const
 Save all contained scopes as an XML stream. More...
 
void overrideSizeLockType (Symbol *sym, Datatype *ct)
 Change the data-type of a Symbol that is sizelocked. More...
 
void resetSizeLockType (Symbol *sym)
 Clear a Symbol's size-locked data-type. More...
 
bool isSubScope (const Scope *scp) const
 Is this a sub-scope of the given Scope. More...
 
string getFullName (void) const
 Get the full name of this Scope.
 
void getNameSegments (vector< string > &vec) const
 Get the fullname of this in segments. More...
 
ArchitecturegetArch (void) const
 Get the Architecture associated with this.
 
ScopegetParent (void) const
 Get the parent Scope (or NULL if this is the global Scope)
 
SymboladdSymbol (const string &name, Datatype *ct)
 Add a new Symbol without mapping it to an address. More...
 
SymbolEntryaddMapPoint (Symbol *sym, const Address &addr, const Address &usepoint)
 Map a Symbol to a specific address. More...
 
SymboladdMapSym (const Element *el)
 Add a mapped Symbol from a <mapsym> XML tag. More...
 
FunctionSymboladdFunction (const Address &addr, const string &nm)
 Create a function Symbol at the given address in this Scope. More...
 
ExternRefSymboladdExternalRef (const Address &addr, const Address &refaddr, const string &nm)
 
LabSymboladdCodeLabel (const Address &addr, const string &nm)
 Create a code label at the given address in this Scope. More...
 
SymboladdDynamicSymbol (const string &nm, Datatype *ct, const Address &caddr, uint8 hash)
 Create a dynamically mapped Symbol attached to a specific data-flow. More...
 
bool isReadOnly (const Address &addr, int4 size, const Address &usepoint) const
 Is the given memory range marked as read-only. More...
 
void printBounds (ostream &s) const
 Print a description of this Scope's owned memory ranges.
 

Static Public Member Functions

static void savePathXml (ostream &s, const vector< string > &vec)
 Save a path with <val> tags. More...
 
static void restorePathXml (vector< string > &vec, const Element *el)
 Restore path from <val> tags. More...
 

Protected Member Functions

virtual void addSymbolInternal (Symbol *sym)
 Put a Symbol into the name map. More...
 
virtual SymbolEntryaddMapInternal (Symbol *sym, uint4 exfl, const Address &addr, int4 off, int4 sz, const RangeList &uselim)
 Create a new SymbolEntry for a Symbol given a memory range. More...
 
virtual SymbolEntryaddDynamicMapInternal (Symbol *sym, uint4 exfl, uint8 hash, int4 off, int4 sz, const RangeList &uselim)
 Create a new SymbolEntry for a Symbol given a dynamic hash. More...
 
- Protected Member Functions inherited from Scope
const RangeListgetRangeTree (void) const
 Access the address ranges owned by this Scope.
 
virtual void restrictScope (Funcdata *f)
 Convert this to a local Scope. More...
 
virtual void addRange (AddrSpace *spc, uintb first, uintb last)
 Add a memory range to the ownership of this Scope. More...
 
virtual void removeRange (AddrSpace *spc, uintb first, uintb last)
 Remove a memory range from the ownership of this Scope. More...
 
SymbolEntryaddMap (const SymbolEntry &entry)
 Integrate a SymbolEntry into the range maps. More...
 

Protected Attributes

SymbolNameTree nametree
 The set of Symbol objects, sorted by name.
 
vector< EntryMap * > maptable
 Rangemaps of SymbolEntry, one map for each address space.
 
vector< vector< Symbol * > > category
 References to Symbol objects organized by category.
 
list< SymbolEntrydynamicentry
 Dynamic symbol entries.
 
- Protected Attributes inherited from Scope
Architectureglb
 Architecture of this scope.
 
string name
 Name of this scope.
 
Funcdatafd
 (If non-null) the function which this is the local Scope for
 
uint4 dedupId
 Id to dedup scopes with same name (when allowed)
 

Private Member Functions

void processHole (const Element *el)
 Parse a <hole> XML tag that describes boolean properties of memory range. More...
 
void insertNameTree (Symbol *sym)
 Insert a Symbol into the nametree. More...
 
SymbolNameTree::const_iterator findFirstByName (const string &name) const
 Find an iterator pointing to the first Symbol in the ordering with a given name. More...
 

Additional Inherited Members

- Static Protected Member Functions inherited from Scope
static const ScopestackAddr (const Scope *scope1, const Scope *scope2, const Address &addr, const Address &usepoint, SymbolEntry **addrmatch)
 Query for Symbols starting at a given address, which match a given usepoint. More...
 
static const ScopestackContainer (const Scope *scope1, const Scope *scope2, const Address &addr, int4 size, const Address &usepoint, SymbolEntry **addrmatch)
 
static const ScopestackClosestFit (const Scope *scope1, const Scope *scope2, const Address &addr, int4 size, const Address &usepoint, SymbolEntry **addrmatch)
 
static const ScopestackFunction (const Scope *scope1, const Scope *scope2, const Address &addr, Funcdata **addrmatch)
 
static const ScopestackExternalRef (const Scope *scope1, const Scope *scope2, const Address &addr, ExternRefSymbol **addrmatch)
 
static const ScopestackCodeLabel (const Scope *scope1, const Scope *scope2, const Address &addr, LabSymbol **addrmatch)
 

Detailed Description

An in-memory implementation of the Scope interface.

This can act as a stand-alone Scope object or serve as an in-memory cache for another implementation. This implements a nametree, which is a a set of Symbol objects (the set owns the Symbol objects). It also implements a maptable, which is a list of rangemaps that own the SymbolEntry objects.

Constructor & Destructor Documentation

◆ ScopeInternal()

ScopeInternal::ScopeInternal ( const string &  nm,
Architecture g 
)

Construct the Scope.

Parameters
nmis the name of the Scope
gis the Architecture it belongs to

References maptable, and AddrSpaceManager::numSpaces().

Member Function Documentation

◆ addDynamicMapInternal()

SymbolEntry * ScopeInternal::addDynamicMapInternal ( Symbol sym,
uint4  exfl,
uint8  hash,
int4  off,
int4  sz,
const RangeList uselim 
)
protectedvirtual

Create a new SymbolEntry for a Symbol given a dynamic hash.

The SymbolEntry is specified in terms of a hash and usepoint, which describe how to find the temporary Varnode holding the symbol value.

Parameters
symis the given Symbol being mapped
exflare any boolean Varnode properties
hashis the given dynamic hash
offis the byte offset of the new SymbolEntry (relative to the whole Symbol)
szis the number of bytes occupied by the Varnode
uselimis the given usepoint
Returns
the newly created SymbolEntry

Implements Scope.

References dynamicentry, and Symbol::mapentry.

◆ addMapInternal()

SymbolEntry * ScopeInternal::addMapInternal ( Symbol sym,
uint4  exfl,
const Address addr,
int4  off,
int4  sz,
const RangeList uselim 
)
protectedvirtual

Create a new SymbolEntry for a Symbol given a memory range.

The SymbolEntry is specified in terms of a memory range and usepoint

Parameters
symis the given Symbol being mapped
exflare any boolean Varnode properties specific to the memory range
addris the starting address of the given memory range
offis the byte offset of the new SymbolEntry (relative to the whole Symbol)
szis the number of bytes in the range
uselimis the given usepoint (which may be invalid)
Returns
the newly created SymbolEntry

Implements Scope.

Reimplemented in ScopeGhidraNamespace.

References AddrSpace::getIndex(), Symbol::getName(), Address::getOffset(), Address::getSpace(), Symbol::mapentry, and maptable.

Referenced by ScopeGhidraNamespace::addMapInternal().

◆ addSymbolInternal()

void ScopeInternal::addSymbolInternal ( Symbol sym)
protectedvirtual

Put a Symbol into the name map.

Parameters
symis the preconstructed Symbol

Implements Scope.

References buildUndefinedName(), Symbol::category, category, Symbol::catindex, Symbol::getName(), Datatype::getSize(), Symbol::getType(), insertNameTree(), and Symbol::name.

◆ buildUndefinedName()

string ScopeInternal::buildUndefinedName ( void  ) const
virtual

Build a formal undefined name, used internally when a Symbol is not given a name.

Returns
a special internal name that won't collide with other names in this Scope

Implements Scope.

References nametree.

Referenced by addSymbolInternal(), ScopeGhidra::buildUndefinedName(), clearUnlocked(), and clearUnlockedCategory().

◆ buildVariableName()

string ScopeInternal::buildVariableName ( const Address addr,
const Address pc,
Datatype ct,
int4 &  index,
uint4  flags 
) const
virtual

Given an address and data-type, build a suitable generic symbol name.

Parameters
addris the given address
pcis the address at which the name is getting used
ctis a data-type used to inform the name
indexis a reference to an index used to make the name unique, which will be updated
flagsare boolean properties of the variable we need the name for
Returns
the new variable name

Implements Scope.

Reimplemented in ScopeLocal.

References Varnode::addrtied, AddrSpace::byteToAddress(), findFirstByName(), Address::getAddrSize(), AddrSpace::getName(), Address::getOffset(), Translate::getRegisterName(), Datatype::getSize(), Address::getSpace(), AddrSpace::getWordSize(), Scope::glb, Varnode::indirect_creation, Varnode::input, makeNameUnique(), nametree, Varnode::persist, Datatype::printNameBase(), Varnode::return_address, Architecture::translate, and Varnode::unaffected.

Referenced by ScopeGhidra::buildVariableName(), and ScopeLocal::buildVariableName().

◆ categorySanity()

void ScopeInternal::categorySanity ( void  )
virtual

Make sure Symbol categories are sane.

Look for NULL entries in the category tables. If there are, clear out the entire category, marking all symbols as uncategorized

References category, and setCategory().

Referenced by restoreXml().

◆ findAddr()

SymbolEntry * ScopeInternal::findAddr ( const Address addr,
const Address usepoint 
) const
virtual

Find a Symbol at a given address and usepoint.

Parameters
addris the given address
usepointis the point at which the Symbol is accessed (may be invalid)
Returns
the matching SymbolEntry or NULL

Implements Scope.

References SymbolEntry::getAddr(), AddrSpace::getIndex(), Address::getOffset(), Address::getSpace(), SymbolEntry::inUse(), Address::isInvalid(), and maptable.

Referenced by ScopeGhidra::findAddr(), and ScopeGhidra::findCodeLabel().

◆ findAfter()

SymbolEntry * ScopeInternal::findAfter ( const Address addr) const
virtual

Find first Symbol after (but not containing) a given address.

Parameters
addris the given address
Returns
a SymbolEntry occurring immediately after or NULL if none exists

Implements Scope.

References AddrSpace::getIndex(), Address::getOffset(), Address::getSpace(), and maptable.

◆ findBefore()

SymbolEntry * ScopeInternal::findBefore ( const Address addr) const
virtual

Find first Symbol before (but not containing) a given address.

Parameters
addris the given address
Returns
the SymbolEntry occurring immediately before or NULL if none exists

Implements Scope.

References AddrSpace::getIndex(), Address::getOffset(), Address::getSpace(), and maptable.

◆ findByName()

void ScopeInternal::findByName ( const string &  name,
vector< Symbol * > &  res 
) const
virtual

Find a Symbol by name within this Scope.

If there are multiple Symbols with the same name, all are passed back.

Parameters
nameis the name to search for
reswill contain any matching Symbols

Implements Scope.

References findFirstByName(), Symbol::name, Scope::name, and nametree.

◆ findClosestFit()

SymbolEntry * ScopeInternal::findClosestFit ( const Address addr,
int4  size,
const Address usepoint 
) const
virtual

Find Symbol which is the closest fit to the given memory range.

Parameters
addris the starting address of the given memory range
sizeis the number of bytes in the range
usepointis the point at which the Symbol is accessed (may be invalid)
Returns
the matching SymbolEntry or NULL

Implements Scope.

References AddrSpace::getIndex(), SymbolEntry::getLast(), Address::getOffset(), SymbolEntry::getSize(), Address::getSpace(), SymbolEntry::inUse(), Address::isInvalid(), and maptable.

Referenced by ScopeGhidra::findContainer().

◆ findCodeLabel()

LabSymbol * ScopeInternal::findCodeLabel ( const Address addr) const
virtual

Find a label Symbol at the given address.

Parameters
addris the given address
Returns
the matching LabSymbol or NULL

Implements Scope.

References SymbolEntry::getAddr(), AddrSpace::getIndex(), Address::getOffset(), Address::getSpace(), SymbolEntry::getSymbol(), SymbolEntry::inUse(), and maptable.

Referenced by ScopeGhidra::findCodeLabel().

◆ findContainer()

SymbolEntry * ScopeInternal::findContainer ( const Address addr,
int4  size,
const Address usepoint 
) const
virtual

Find the smallest Symbol containing the given memory range.

Parameters
addris the starting address of the given memory range
sizeis the number of bytes in the range
usepointis the point at which the Symbol is accessed (may be invalid)
Returns
the matching SymbolEntry or NULL

Implements Scope.

References end(), AddrSpace::getIndex(), SymbolEntry::getLast(), Address::getOffset(), SymbolEntry::getSize(), Address::getSpace(), SymbolEntry::inUse(), Address::isInvalid(), and maptable.

Referenced by ScopeGhidra::findAddr(), ScopeGhidra::findExternalRef(), and ScopeGhidra::findFunction().

◆ findExternalRef()

ExternRefSymbol * ScopeInternal::findExternalRef ( const Address addr) const
virtual

Find an external reference at the given address.

Parameters
addris the given address
Returns
the matching ExternRefSymbol or NULL

Implements Scope.

References SymbolEntry::getAddr(), AddrSpace::getIndex(), Address::getOffset(), Address::getSpace(), SymbolEntry::getSymbol(), and maptable.

Referenced by ScopeGhidra::findExternalRef().

◆ findFirstByName()

SymbolNameTree::const_iterator ScopeInternal::findFirstByName ( const string &  name) const
private

Find an iterator pointing to the first Symbol in the ordering with a given name.

Parameters
nameis the name to search for
Returns
iterator pointing to the first Symbol or nametree.end() if there is no matching Symbol

References Scope::name, and nametree.

Referenced by buildVariableName(), findByName(), and makeNameUnique().

◆ findFunction()

Funcdata * ScopeInternal::findFunction ( const Address addr) const
virtual

Find the function starting at the given address.

Parameters
addris the given starting address
Returns
the matching Funcdata object or NULL

Implements Scope.

References SymbolEntry::getAddr(), FunctionSymbol::getFunction(), AddrSpace::getIndex(), Address::getOffset(), Address::getSpace(), SymbolEntry::getSymbol(), and maptable.

Referenced by ScopeGhidra::findFunction(), and ScopeGhidra::resolveExternalRefFunction().

◆ findOverlap()

SymbolEntry * ScopeInternal::findOverlap ( const Address addr,
int4  size 
) const
virtual

Find first Symbol overlapping the given memory range.

Parameters
addris the starting address of the given range
sizeis the number of bytes in the range
Returns
an overlapping SymbolEntry or NULL if none exists

Implements Scope.

References AddrSpace::getIndex(), Address::getOffset(), Address::getSpace(), and maptable.

Referenced by Funcdata::updateFlags().

◆ getCategorySize()

int4 ScopeInternal::getCategorySize ( int4  cat) const
virtual

Get the number of Symbols in the given category.

Parameters
catis the Symbol category
Returns
the number in that category

Implements Scope.

References category.

◆ getCategorySymbol()

Symbol * ScopeInternal::getCategorySymbol ( int4  cat,
int4  ind 
) const
virtual

Retrieve a Symbol by index within a specific category.

Parameters
catis the Symbol category
indis the index (within the category) of the Symbol
Returns
the indicated Symbol or NULL if no Symbol with that index exists

Implements Scope.

References category.

◆ insertNameTree()

void ScopeInternal::insertNameTree ( Symbol sym)
private

Insert a Symbol into the nametree.

Duplicate symbol names are allowed for by establishing a deduplication id for the Symbol.

Parameters
symis the Symbol to insert

References Symbol::name, Symbol::nameDedup, and nametree.

Referenced by addSymbolInternal(), and renameSymbol().

◆ makeNameUnique()

string ScopeInternal::makeNameUnique ( const string &  nm) const
virtual

Produce a version of the given symbol name that won't collide with other names in this Scope.

Parameters
nmis the given name
Returns
return a unique version of the name

Implements Scope.

References findFirstByName(), Symbol::getName(), Symbol::nameDedup, and nametree.

Referenced by ScopeLocal::buildVariableName(), buildVariableName(), ActionNameVars::lookForBadJumpTables(), ActionNameVars::lookForFuncParamNames(), and ActionNameVars::lookForRecommendedNames().

◆ processHole()

void ScopeInternal::processHole ( const Element el)
private

Parse a <hole> XML tag that describes boolean properties of memory range.

The <scope> XML tag is allowed to contain <hole> tags, which are really descriptions of memory globally. This method parses them and passes the info to the Database object.

Parameters
elis the <hole> element

References Scope::glb, Varnode::readonly, Range::restoreXml(), Database::setPropertyRange(), Architecture::symboltab, and Varnode::volatil.

Referenced by restoreXml().

◆ resolveExternalRefFunction()

Funcdata * ScopeInternal::resolveExternalRefFunction ( ExternRefSymbol sym) const
virtual

Convert an external reference to the referenced function.

Parameters
symis the Symbol marking the external reference
Returns
the underlying Funcdata object or NULL if none exists

Implements Scope.

References ExternRefSymbol::getRefAddr(), and Scope::queryFunction().

◆ restorePathXml()

void ScopeInternal::restorePathXml ( vector< string > &  vec,
const Element el 
)
static

Restore path from <val> tags.

Given an element, parse all of its children (as <val> tags) and put each of their content into a string array.

Parameters
vecwill hold the resulting string array
elis the XML element

Referenced by Database::parseParentTag().

◆ retypeSymbol()

void ScopeInternal::retypeSymbol ( Symbol sym,
Datatype ct 
)
virtual

Change the data-type of a Symbol within this Scope.

If the size of the Symbol changes, any mapping (SymbolEntry) is adjusted

Parameters
symis the given Symbol
ctis the new data-type

Implements Scope.

References Scope::addMapPoint(), Symbol::checkSizeTypeLock(), Datatype::getSize(), Symbol::mapentry, maptable, Symbol::name, and Symbol::type.

Referenced by ActionDynamicSymbols::apply().

◆ savePathXml()

void ScopeInternal::savePathXml ( ostream &  s,
const vector< string > &  vec 
)
static

Save a path with <val> tags.

Given a list of name strings, write out each one in an XML <val> tag.

Parameters
sis the output stream
vecis the list of names

Referenced by saveXml().

◆ setCategory()

void ScopeInternal::setCategory ( Symbol sym,
int4  cat,
int4  ind 
)
virtual

Set the category and index for the given Symbol.

Parameters
symis the given Symbol
catis the category to set for the Symbol
indis the index position to set (within the category)

Implements Scope.

References Symbol::category, category, and Symbol::catindex.

Referenced by categorySanity().


The documentation for this class was generated from the following files: