|
decompiler
1.0.0
|
An implementation of the ConstantPool interface storing records internally in RAM. More...
#include <cpool.hh>
Classes | |
| class | CheapSorter |
| A cheap (efficient) placeholder for a reference to a constant pool record. More... | |
Public Member Functions | |
| virtual const CPoolRecord * | getRecord (const vector< uintb > &refs) const |
| Retrieve a constant pool record (CPoolRecord) given a reference to it. More... | |
| virtual bool | empty (void) const |
| Is the container empty of records. | |
| virtual void | clear (void) |
| Release any (local) resources. | |
| virtual void | saveXml (ostream &s) const |
| Save all records in this container to an XML stream. More... | |
| virtual void | restoreXml (const Element *el, TypeFactory &typegrp) |
| Restore constant pool records from an XML stream. More... | |
Public Member Functions inherited from ConstantPool | |
| virtual | ~ConstantPool () |
| Destructor. | |
| void | putRecord (const vector< uintb > &refs, uint4 tag, const string &tok, Datatype *ct) |
| A a new constant pool record to this database. More... | |
| const CPoolRecord * | restoreXmlRecord (const vector< uintb > &refs, const Element *el, TypeFactory &typegrp) |
| Restore a CPoolRecord given a reference and an XML stream. More... | |
Private Member Functions | |
| virtual CPoolRecord * | createRecord (const vector< uintb > &refs) |
| Allocate a new CPoolRecord object, given a reference to it. More... | |
Private Attributes | |
| map< CheapSorter, CPoolRecord > | cpoolMap |
| A map from reference to constant pool record. | |
An implementation of the ConstantPool interface storing records internally in RAM.
The CPoolRecord objects are held directly in a map container. This class can be used as a stand-alone ConstantPool that holds all its records in RAM. Or, it can act as a local CPoolRecord cache for some other implementation.
|
privatevirtual |
Allocate a new CPoolRecord object, given a reference to it.
The object will still need to be initialized but is already associated with the reference. Any issue with allocation (like a dupicate reference) causes an exception.
| refs | is the reference of 1 or more identifying integers |
Implements ConstantPool.
References CPoolRecord::CPoolRecord().
|
virtual |
Retrieve a constant pool record (CPoolRecord) given a reference to it.
| refs | is the reference (made up of 1 or more identifying integers) |
Implements ConstantPool.
Referenced by ConstantPoolGhidra::getRecord().
|
virtual |
Restore constant pool records from an XML stream.
(If supported) The container is populated with CPooLRecords initialized from a <constantpool> XML tag.
| el | is the XML element |
| typegrp | is the TypeFactory used to resolve data-type references in the XML |
Implements ConstantPool.
References ConstantPoolInternal::CheapSorter::apply(), Element::getChildren(), CPoolRecord::restoreXml(), and ConstantPoolInternal::CheapSorter::restoreXml().
|
virtual |
Save all records in this container to an XML stream.
(If supported) An <constantpool> element is written containing <cpoolrec> child elements for each CPoolRecord in the container.
| s | is the output stream |
Implements ConstantPool.
1.8.11