decompiler 1.0.0
Classes | Typedefs | Variables
database.hh File Reference

Symbol and Scope objects for the decompiler. More...

#include "variable.hh"
#include "partmap.hh"
#include "rangemap.hh"

Classes

class  SymbolEntry
 A storage location for a particular Symbol. More...
 
class  SymbolEntry::EntryInitData
 Initialization data for a SymbolEntry to facilitate a rangemap. More...
 
class  SymbolEntry::EntrySubsort
 Class for sub-sorting different SymbolEntry objects at the same address. More...
 
class  Symbol
 The base class for a symbol in a symbol table or scope. More...
 
class  FunctionSymbol
 A Symbol representing an executable function. More...
 
class  EquateSymbol
 A Symbol that holds equate information for a constant. More...
 
class  UnionFacetSymbol
 
class  LabSymbol
 A Symbol that labels code internal to a function. More...
 
class  ExternRefSymbol
 A function Symbol referring to an external location. More...
 
class  SymbolCompareName
 Comparator for sorting Symbol objects by name. More...
 
class  MapIterator
 An iterator over SymbolEntry objects in multiple address spaces. More...
 
struct  DuplicateFunctionError
 Exception thrown when a function is added more than once to the database. More...
 
class  Scope
 A collection of Symbol objects within a single (namespace or functional) scope. More...
 
class  ScopeInternal
 An in-memory implementation of the Scope interface. More...
 
class  ScopeMapper
 An Address range associated with the symbol Scope that owns it. More...
 
class  ScopeMapper::NullSubsort
 Helper class for not doing any sub-sorting of overlapping ScopeMapper ranges. More...
 
class  Database
 A manager for symbol scopes for a whole executable. More...
 

Typedefs

typedef rangemap< SymbolEntryEntryMap
 A rangemap of SymbolEntry.
 
typedef set< Symbol *, SymbolCompareNameSymbolNameTree
 A set of Symbol objects sorted by name.
 
typedef map< uint8, Scope * > ScopeMap
 A map from id to Scope.
 
typedef rangemap< ScopeMapperScopeResolve
 A map from address to the owning Scope.
 

Variables

AttributeId ATTRIB_CAT
 Marshaling attribute "cat".
 
AttributeId ATTRIB_FIELD
 Marshaling attribute "field".
 
AttributeId ATTRIB_MERGE
 Marshaling attribute "merge".
 
AttributeId ATTRIB_SCOPEIDBYNAME
 Marshaling attribute "scopeidbyname".
 
AttributeId ATTRIB_VOLATILE
 Marshaling attribute "volatile".
 
ElementId ELEM_COLLISION
 Marshaling element <collision>
 
ElementId ELEM_DB
 Marshaling element <db>
 
ElementId ELEM_EQUATESYMBOL
 Marshaling element <equatesymbol>
 
ElementId ELEM_EXTERNREFSYMBOL
 Marshaling element <externrefsymbol>
 
ElementId ELEM_FACETSYMBOL
 Marshaling element <facetsymbol>
 
ElementId ELEM_FUNCTIONSHELL
 Marshaling element <functionshell>
 
ElementId ELEM_HASH
 Marshaling element <hash>
 
ElementId ELEM_HOLE
 Marshaling element <hole>
 
ElementId ELEM_LABELSYM
 Marshaling element <labelsym>
 
ElementId ELEM_MAPSYM
 Marshaling element <mapsym>
 
ElementId ELEM_PARENT
 Marshaling element <parent>
 
ElementId ELEM_PROPERTY_CHANGEPOINT
 Marshaling element <property_changepoint>
 
ElementId ELEM_RANGEEQUALSSYMBOLS
 Marshaling element <rangeequalssymbols>
 
ElementId ELEM_SCOPE
 Marshaling element <scope>
 
ElementId ELEM_SYMBOLLIST
 Marshaling element <symbollist>
 

Detailed Description

Symbol and Scope objects for the decompiler.

These implement the main symbol table, with support for symbols, local and global scopes, namespaces etc. Search can be by name or the address of the Symbol storage location.