ROSE 0.11.145.147
|
Abstract base class for unparsers.
This defines the interface only. All data that's used during unparsing is provided to each function so that this interface is thread-safe. Only the configuration settings are stored in the unparser itself.
End users generally invoke the high-level output methods, which are provided by non-virtual function operators that are overloaded on the type of object being unparsed.
The high-level function operators each call a corresponding overloaded virtual unparse function that kicks things off by creating an unparse Unparser::State object, setting the front parser to the one whose unparse method was called, and invoking an appropriate mid-level "emit" function in that front parser.
Mid-level "emit" functions use a combination of C++ virtual functions and unparser object chaining as described in the documentation for those functions. This permits two ways to override or augment behavior: behavior modification based on architecture (virtual functions) and behavior modification based on a filtering concept to support things like tables and HTML (chaining).
The following code is a starting point for creating your own unparser:
To instantiate this parser from a Partitioner2::Partitioner
object named partitioner
, do this:
Definition at line 413 of file Unparser/Base.h.
#include <Rose/BinaryAnalysis/Unparser/Base.h>
Public Types | |
typedef Sawyer::SharedPointer< Base > | Ptr |
Public Member Functions | |
virtual Ptr | copy () const =0 |
Architecture::BaseConstPtr | architecture () const |
Property: Architecture. | |
virtual void | initializeState (State &) const |
Finish initializing the unparser state. | |
virtual void | updateIntraFunctionArrows (State &) const |
Calculate intra-function arrows. | |
virtual const Settings & | settings () const =0 |
Property: Settings associated with this unparser. | |
virtual Settings & | settings ()=0 |
Property: Settings associated with this unparser. | |
void | settings (const Settings &s) |
Property: Settings associated with this unparser. | |
Ptr | nextUnparser () const |
Property: Next parser in chain. | |
void | nextUnparser (Ptr next) |
Property: Next parser in chain. | |
void | operator() (std::ostream &, const Partitioner2::PartitionerConstPtr &) const |
Emit the entity to an output stream. | |
void | operator() (std::ostream &, const Partitioner2::PartitionerConstPtr &, SgAsmInstruction *) const |
Emit the entity to an output stream. | |
void | operator() (std::ostream &, const Partitioner2::PartitionerConstPtr &, const Partitioner2::BasicBlockPtr &) const |
Emit the entity to an output stream. | |
void | operator() (std::ostream &, const Partitioner2::PartitionerConstPtr &, const Partitioner2::DataBlockPtr &) const |
Emit the entity to an output stream. | |
void | operator() (std::ostream &, const Partitioner2::PartitionerConstPtr &, const Partitioner2::FunctionPtr &) const |
Emit the entity to an output stream. | |
void | operator() (std::ostream &, SgAsmInstruction *) const |
Emit the entity to an output stream. | |
std::string | operator() (const Partitioner2::PartitionerConstPtr &, const Progress::Ptr &=Progress::Ptr()) const |
Emit the entity to a string. | |
std::string | operator() (const Partitioner2::PartitionerConstPtr &, SgAsmInstruction *) const |
Emit the entity to a string. | |
std::string | operator() (const Partitioner2::PartitionerConstPtr &, const Partitioner2::BasicBlockPtr &) const |
Emit the entity to a string. | |
std::string | operator() (const Partitioner2::PartitionerConstPtr &, const Partitioner2::DataBlockPtr &) const |
Emit the entity to a string. | |
std::string | operator() (const Partitioner2::PartitionerConstPtr &, const Partitioner2::FunctionPtr &) const |
Emit the entity to a string. | |
std::string | operator() (SgAsmInstruction *) const |
Emit the entity to a string. | |
void | unparse (std::ostream &, const Partitioner2::PartitionerConstPtr &, const Progress::Ptr &=Progress::Ptr()) const |
High-level unparsing function. | |
void | unparse (std::ostream &, const Partitioner2::PartitionerConstPtr &, SgAsmInstruction *) const |
High-level unparsing function. | |
void | unparse (std::ostream &, const Partitioner2::PartitionerConstPtr &, const Partitioner2::BasicBlockPtr &) const |
High-level unparsing function. | |
void | unparse (std::ostream &, const Partitioner2::PartitionerConstPtr &, const Partitioner2::DataBlockPtr &) const |
High-level unparsing function. | |
void | unparse (std::ostream &, const Partitioner2::PartitionerConstPtr &, const Partitioner2::FunctionPtr &) const |
High-level unparsing function. | |
void | unparse (std::ostream &, SgAsmInstruction *) const |
High-level unparsing function. | |
std::string | unparse (const Partitioner2::PartitionerConstPtr &, const Progress::Ptr &=Progress::Ptr()) const |
High-level unparsing function. | |
std::string | unparse (const Partitioner2::PartitionerConstPtr &, SgAsmInstruction *) const |
High-level unparsing function. | |
std::string | unparse (const Partitioner2::PartitionerConstPtr &, const Partitioner2::BasicBlockPtr &) const |
High-level unparsing function. | |
std::string | unparse (const Partitioner2::PartitionerConstPtr &, const Partitioner2::DataBlockPtr &) const |
High-level unparsing function. | |
std::string | unparse (const Partitioner2::PartitionerConstPtr &, const Partitioner2::FunctionPtr &) const |
High-level unparsing function. | |
std::string | unparse (SgAsmInstruction *) const |
High-level unparsing function. | |
virtual void | emitFunction (std::ostream &, const Partitioner2::FunctionPtr &, State &) const |
Mid-level unparser function. | |
virtual void | emitFunctionPrologue (std::ostream &, const Partitioner2::FunctionPtr &, State &) const |
Mid-level unparser function. | |
virtual void | emitFunctionBody (std::ostream &, const Partitioner2::FunctionPtr &, State &) const |
Mid-level unparser function. | |
virtual void | emitFunctionEpilogue (std::ostream &, const Partitioner2::FunctionPtr &, State &) const |
Mid-level unparser function. | |
virtual void | emitFunctionSourceLocation (std::ostream &, const Partitioner2::FunctionPtr &, State &) const |
Mid-level unparser function. | |
virtual void | emitFunctionReasons (std::ostream &, const Partitioner2::FunctionPtr &, State &) const |
Mid-level unparser function. | |
virtual void | emitFunctionCallers (std::ostream &, const Partitioner2::FunctionPtr &, State &) const |
Mid-level unparser function. | |
virtual void | emitFunctionCallees (std::ostream &, const Partitioner2::FunctionPtr &, State &) const |
Mid-level unparser function. | |
virtual void | emitFunctionComment (std::ostream &, const Partitioner2::FunctionPtr &, State &) const |
Mid-level unparser function. | |
virtual void | emitFunctionStackDelta (std::ostream &, const Partitioner2::FunctionPtr &, State &) const |
Mid-level unparser function. | |
virtual void | emitFunctionCallingConvention (std::ostream &, const Partitioner2::FunctionPtr &, State &) const |
Mid-level unparser function. | |
virtual void | emitFunctionNoopAnalysis (std::ostream &, const Partitioner2::FunctionPtr &, State &) const |
Mid-level unparser function. | |
virtual void | emitFunctionMayReturn (std::ostream &, const Partitioner2::FunctionPtr &, State &) const |
Mid-level unparser function. | |
virtual void | emitDataBlockSourceLocation (std::ostream &, const Partitioner2::DataBlockPtr &, State &) const |
Mid-level unparser function. | |
virtual void | emitDataBlock (std::ostream &, const Partitioner2::DataBlockPtr &, State &) const |
Mid-level unparser function. | |
virtual void | emitDataBlockPrologue (std::ostream &, const Partitioner2::DataBlockPtr &, State &) const |
Mid-level unparser function. | |
virtual void | emitDataBlockBody (std::ostream &, const Partitioner2::DataBlockPtr &, State &) const |
Mid-level unparser function. | |
virtual void | emitDataBlockEpilogue (std::ostream &, const Partitioner2::DataBlockPtr &, State &) const |
Mid-level unparser function. | |
virtual void | emitBasicBlock (std::ostream &, const Partitioner2::BasicBlockPtr &, State &) const |
Mid-level unparser function. | |
virtual void | emitBasicBlockPrologue (std::ostream &, const Partitioner2::BasicBlockPtr &, State &) const |
Mid-level unparser function. | |
virtual void | emitBasicBlockBody (std::ostream &, const Partitioner2::BasicBlockPtr &, State &) const |
Mid-level unparser function. | |
virtual void | emitBasicBlockEpilogue (std::ostream &, const Partitioner2::BasicBlockPtr &, State &) const |
Mid-level unparser function. | |
virtual void | emitBasicBlockSourceLocation (std::ostream &, const Partitioner2::BasicBlockPtr &, State &) const |
Mid-level unparser function. | |
virtual void | emitBasicBlockComment (std::ostream &, const Partitioner2::BasicBlockPtr &, State &) const |
Mid-level unparser function. | |
virtual void | emitBasicBlockSharing (std::ostream &, const Partitioner2::BasicBlockPtr &, State &) const |
Mid-level unparser function. | |
virtual void | emitBasicBlockPredecessors (std::ostream &, const Partitioner2::BasicBlockPtr &, State &) const |
Mid-level unparser function. | |
virtual void | emitBasicBlockSuccessors (std::ostream &, const Partitioner2::BasicBlockPtr &, State &) const |
Mid-level unparser function. | |
virtual void | emitBasicBlockReachability (std::ostream &, const Partitioner2::BasicBlockPtr &, State &) const |
Mid-level unparser function. | |
virtual void | emitInstruction (std::ostream &, SgAsmInstruction *, State &) const |
Mid-level unparser function. | |
virtual void | emitInstructionPrologue (std::ostream &, SgAsmInstruction *, State &) const |
Mid-level unparser function. | |
virtual void | emitInstructionBody (std::ostream &, SgAsmInstruction *, State &) const |
Mid-level unparser function. | |
virtual void | emitInstructionEpilogue (std::ostream &, SgAsmInstruction *, State &) const |
Mid-level unparser function. | |
virtual void | emitInstructionAddress (std::ostream &, SgAsmInstruction *, State &) const |
Mid-level unparser function. | |
virtual void | emitInstructionBytes (std::ostream &, SgAsmInstruction *, State &) const |
Mid-level unparser function. | |
virtual void | emitInstructionStackDelta (std::ostream &, SgAsmInstruction *, State &) const |
Mid-level unparser function. | |
virtual void | emitInstructionMnemonic (std::ostream &, SgAsmInstruction *, State &) const |
Mid-level unparser function. | |
virtual void | emitInstructionOperands (std::ostream &, SgAsmInstruction *, State &) const |
Mid-level unparser function. | |
virtual void | emitInstructionComment (std::ostream &, SgAsmInstruction *, State &) const |
Mid-level unparser function. | |
virtual void | emitInstructionSemantics (std::ostream &, SgAsmInstruction *, State &) const |
Mid-level unparser function. | |
virtual void | emitOperand (std::ostream &, SgAsmExpression *, State &) const |
Mid-level unparser function. | |
virtual void | emitOperandPrologue (std::ostream &, SgAsmExpression *, State &) const |
Mid-level unparser function. | |
virtual void | emitOperandBody (std::ostream &, SgAsmExpression *, State &) const |
Mid-level unparser function. | |
virtual void | emitOperandEpilogue (std::ostream &, SgAsmExpression *, State &) const |
Mid-level unparser function. | |
virtual void | emitExpression (std::ostream &, SgAsmExpression *, State &) const |
Mid-level unparser function. | |
virtual void | emitRegister (std::ostream &, RegisterDescriptor, State &) const |
Mid-level unparser function. | |
virtual std::vector< std::string > | emitUnsignedInteger (std::ostream &, const Sawyer::Container::BitVector &, State &) const |
Mid-level unparser function. | |
virtual std::vector< std::string > | emitSignedInteger (std::ostream &, const Sawyer::Container::BitVector &, State &) const |
Mid-level unparser function. | |
virtual std::vector< std::string > | emitInteger (std::ostream &, const Sawyer::Container::BitVector &, State &, bool isSigned) const |
Mid-level unparser function. | |
virtual bool | emitAddress (std::ostream &, rose_addr_t, State &, bool always=true) const |
Mid-level unparser function. | |
virtual bool | emitAddress (std::ostream &, const Sawyer::Container::BitVector &, State &, bool always=true) const |
Mid-level unparser function. | |
virtual void | emitCommentBlock (std::ostream &, const std::string &, State &, const std::string &prefix=";;; ") const |
Mid-level unparser function. | |
virtual void | emitTypeName (std::ostream &, SgAsmType *, State &) const |
Mid-level unparser function. | |
virtual void | emitLinePrefix (std::ostream &, State &) const |
Mid-level unparser function. | |
Public Member Functions inherited from Sawyer::SharedObject | |
SharedObject () | |
Default constructor. | |
SharedObject (const SharedObject &) | |
Copy constructor. | |
virtual | ~SharedObject () |
Virtual destructor. | |
SharedObject & | operator= (const SharedObject &) |
Assignment. | |
Static Public Member Functions | |
static std::string | leftJustify (const std::string &, size_t nchars) |
Render a string left justified. | |
static std::string | juxtaposeColumns (const std::vector< std::string > &content, const std::vector< size_t > &minWidths, const std::vector< std::pair< std::string, std::string > > &colorEscapes, const std::string &columnSeparator=" ") |
Render a table row. | |
static bool | ascendingSourceAddress (Partitioner2::ControlFlowGraph::ConstEdgeIterator a, Partitioner2::ControlFlowGraph::ConstEdgeIterator b) |
Return true if edges are in order by source address. | |
static bool | ascendingTargetAddress (Partitioner2::ControlFlowGraph::ConstEdgeIterator a, Partitioner2::ControlFlowGraph::ConstEdgeIterator b) |
Return true if edges are in order by target address. | |
static std::vector< Partitioner2::ControlFlowGraph::ConstEdgeIterator > | orderedBlockPredecessors (const Partitioner2::PartitionerConstPtr &, const Partitioner2::BasicBlockPtr &) |
Ordered incoming CFG edges. | |
static std::vector< Partitioner2::ControlFlowGraph::ConstEdgeIterator > | orderedBlockSuccessors (const Partitioner2::PartitionerConstPtr &, const Partitioner2::BasicBlockPtr &) |
Ordered outgoing CFG edges. | |
Protected Member Functions | |
Base (const Architecture::BaseConstPtr &) | |
Base (const Ptr &nextUnparser) | |
Definition at line 415 of file Unparser/Base.h.
|
pure virtual |
Property: Settings associated with this unparser.
Most of these settings can also be configured from the command-line. They control features of the unparser directly without the programmer having to invervene by creating a subclss or chaining a new parser. Most of the switches simply turn things on and off.
Copying an unparser also copies its settings.
Implemented in Rose::BinaryAnalysis::Unparser::Cil, Rose::BinaryAnalysis::Unparser::Jvm, Rose::BinaryAnalysis::Unparser::M68k, Rose::BinaryAnalysis::Unparser::Mips, Rose::BinaryAnalysis::Unparser::Null, Rose::BinaryAnalysis::Unparser::Powerpc, and Rose::BinaryAnalysis::Unparser::X86.
Referenced by settings().
|
pure virtual |
Property: Settings associated with this unparser.
Most of these settings can also be configured from the command-line. They control features of the unparser directly without the programmer having to invervene by creating a subclss or chaining a new parser. Most of the switches simply turn things on and off.
Copying an unparser also copies its settings.
Implemented in Rose::BinaryAnalysis::Unparser::Cil, Rose::BinaryAnalysis::Unparser::Jvm, Rose::BinaryAnalysis::Unparser::M68k, Rose::BinaryAnalysis::Unparser::Mips, Rose::BinaryAnalysis::Unparser::Null, Rose::BinaryAnalysis::Unparser::Powerpc, and Rose::BinaryAnalysis::Unparser::X86.
|
inline |
Property: Settings associated with this unparser.
Most of these settings can also be configured from the command-line. They control features of the unparser directly without the programmer having to invervene by creating a subclss or chaining a new parser. Most of the switches simply turn things on and off.
Copying an unparser also copies its settings.
Definition at line 440 of file Unparser/Base.h.
References settings().
|
inline |
Property: Next parser in chain.
Parsers can be subclass and/or chained. Nearly all functions check for chaining and delegate to the next parser in the chain. When one function calls some other function, it uses the first parser of the chain. The chain can be created by supplying an argument to the constructor, or it can be constructed later by setting this property.
Definition at line 452 of file Unparser/Base.h.
|
inline |
Property: Next parser in chain.
Parsers can be subclass and/or chained. Nearly all functions check for chaining and delegate to the next parser in the chain. When one function calls some other function, it uses the first parser of the chain. The chain can be created by supplying an argument to the constructor, or it can be constructed later by setting this property.
Definition at line 453 of file Unparser/Base.h.
Architecture::BaseConstPtr Rose::BinaryAnalysis::Unparser::Base::architecture | ( | ) | const |
Property: Architecture.
A non-null pointer to the architecture that this unparser unparses.
void Rose::BinaryAnalysis::Unparser::Base::operator() | ( | std::ostream & | , |
const Partitioner2::PartitionerConstPtr & | |||
) | const |
Emit the entity to an output stream.
Renders the third argument as text and sends it to the stream indicated by the first argument. The partitioner
argument provides additional details about the thing being printed. The version of this function that takes only two arguments causes all functions to be emitted.
void Rose::BinaryAnalysis::Unparser::Base::operator() | ( | std::ostream & | , |
const Partitioner2::PartitionerConstPtr & | , | ||
SgAsmInstruction * | |||
) | const |
Emit the entity to an output stream.
Renders the third argument as text and sends it to the stream indicated by the first argument. The partitioner
argument provides additional details about the thing being printed. The version of this function that takes only two arguments causes all functions to be emitted.
void Rose::BinaryAnalysis::Unparser::Base::operator() | ( | std::ostream & | , |
const Partitioner2::PartitionerConstPtr & | , | ||
const Partitioner2::BasicBlockPtr & | |||
) | const |
Emit the entity to an output stream.
Renders the third argument as text and sends it to the stream indicated by the first argument. The partitioner
argument provides additional details about the thing being printed. The version of this function that takes only two arguments causes all functions to be emitted.
void Rose::BinaryAnalysis::Unparser::Base::operator() | ( | std::ostream & | , |
const Partitioner2::PartitionerConstPtr & | , | ||
const Partitioner2::DataBlockPtr & | |||
) | const |
Emit the entity to an output stream.
Renders the third argument as text and sends it to the stream indicated by the first argument. The partitioner
argument provides additional details about the thing being printed. The version of this function that takes only two arguments causes all functions to be emitted.
void Rose::BinaryAnalysis::Unparser::Base::operator() | ( | std::ostream & | , |
const Partitioner2::PartitionerConstPtr & | , | ||
const Partitioner2::FunctionPtr & | |||
) | const |
Emit the entity to an output stream.
Renders the third argument as text and sends it to the stream indicated by the first argument. The partitioner
argument provides additional details about the thing being printed. The version of this function that takes only two arguments causes all functions to be emitted.
void Rose::BinaryAnalysis::Unparser::Base::operator() | ( | std::ostream & | , |
SgAsmInstruction * | |||
) | const |
Emit the entity to an output stream.
Renders the third argument as text and sends it to the stream indicated by the first argument. The partitioner
argument provides additional details about the thing being printed. The version of this function that takes only two arguments causes all functions to be emitted.
std::string Rose::BinaryAnalysis::Unparser::Base::operator() | ( | const Partitioner2::PartitionerConstPtr & | , |
const Progress::Ptr & | = Progress::Ptr() |
||
) | const |
Emit the entity to a string.
This is just a convenience wrapper around the three-argument form.
std::string Rose::BinaryAnalysis::Unparser::Base::operator() | ( | const Partitioner2::PartitionerConstPtr & | , |
SgAsmInstruction * | |||
) | const |
Emit the entity to a string.
This is just a convenience wrapper around the three-argument form.
std::string Rose::BinaryAnalysis::Unparser::Base::operator() | ( | const Partitioner2::PartitionerConstPtr & | , |
const Partitioner2::BasicBlockPtr & | |||
) | const |
Emit the entity to a string.
This is just a convenience wrapper around the three-argument form.
std::string Rose::BinaryAnalysis::Unparser::Base::operator() | ( | const Partitioner2::PartitionerConstPtr & | , |
const Partitioner2::DataBlockPtr & | |||
) | const |
Emit the entity to a string.
This is just a convenience wrapper around the three-argument form.
std::string Rose::BinaryAnalysis::Unparser::Base::operator() | ( | const Partitioner2::PartitionerConstPtr & | , |
const Partitioner2::FunctionPtr & | |||
) | const |
Emit the entity to a string.
This is just a convenience wrapper around the three-argument form.
std::string Rose::BinaryAnalysis::Unparser::Base::operator() | ( | SgAsmInstruction * | ) | const |
Emit the entity to a string.
This is just a convenience wrapper around the three-argument form.
void Rose::BinaryAnalysis::Unparser::Base::unparse | ( | std::ostream & | , |
const Partitioner2::PartitionerConstPtr & | , | ||
const Progress::Ptr & | = Progress::Ptr() |
||
) | const |
High-level unparsing function.
This function does the same thing as the function operator that has the same arguments.
void Rose::BinaryAnalysis::Unparser::Base::unparse | ( | std::ostream & | , |
const Partitioner2::PartitionerConstPtr & | , | ||
SgAsmInstruction * | |||
) | const |
High-level unparsing function.
This function does the same thing as the function operator that has the same arguments.
void Rose::BinaryAnalysis::Unparser::Base::unparse | ( | std::ostream & | , |
const Partitioner2::PartitionerConstPtr & | , | ||
const Partitioner2::BasicBlockPtr & | |||
) | const |
High-level unparsing function.
This function does the same thing as the function operator that has the same arguments.
void Rose::BinaryAnalysis::Unparser::Base::unparse | ( | std::ostream & | , |
const Partitioner2::PartitionerConstPtr & | , | ||
const Partitioner2::DataBlockPtr & | |||
) | const |
High-level unparsing function.
This function does the same thing as the function operator that has the same arguments.
void Rose::BinaryAnalysis::Unparser::Base::unparse | ( | std::ostream & | , |
const Partitioner2::PartitionerConstPtr & | , | ||
const Partitioner2::FunctionPtr & | |||
) | const |
High-level unparsing function.
This function does the same thing as the function operator that has the same arguments.
void Rose::BinaryAnalysis::Unparser::Base::unparse | ( | std::ostream & | , |
SgAsmInstruction * | |||
) | const |
High-level unparsing function.
This function does the same thing as the function operator that has the same arguments.
std::string Rose::BinaryAnalysis::Unparser::Base::unparse | ( | const Partitioner2::PartitionerConstPtr & | , |
const Progress::Ptr & | = Progress::Ptr() |
||
) | const |
High-level unparsing function.
This function does the same thing as the function operator that has the same arguments.
std::string Rose::BinaryAnalysis::Unparser::Base::unparse | ( | const Partitioner2::PartitionerConstPtr & | , |
SgAsmInstruction * | |||
) | const |
High-level unparsing function.
This function does the same thing as the function operator that has the same arguments.
std::string Rose::BinaryAnalysis::Unparser::Base::unparse | ( | const Partitioner2::PartitionerConstPtr & | , |
const Partitioner2::BasicBlockPtr & | |||
) | const |
High-level unparsing function.
This function does the same thing as the function operator that has the same arguments.
std::string Rose::BinaryAnalysis::Unparser::Base::unparse | ( | const Partitioner2::PartitionerConstPtr & | , |
const Partitioner2::DataBlockPtr & | |||
) | const |
High-level unparsing function.
This function does the same thing as the function operator that has the same arguments.
std::string Rose::BinaryAnalysis::Unparser::Base::unparse | ( | const Partitioner2::PartitionerConstPtr & | , |
const Partitioner2::FunctionPtr & | |||
) | const |
High-level unparsing function.
This function does the same thing as the function operator that has the same arguments.
std::string Rose::BinaryAnalysis::Unparser::Base::unparse | ( | SgAsmInstruction * | ) | const |
High-level unparsing function.
This function does the same thing as the function operator that has the same arguments.
|
virtual |
Mid-level unparser function.
This function emits some entity to the specified output stream. All call-specific state is supplied in the State reference so that this function can be called with a const parser references and is thread safe per state object. The high-level functions create the state – states are not intended for end users – before calling this mid-level function.
This mid-level function uses a combination of C++ virtual function calls and object chaining. The virtual functions allow subclasses to override or augment behavior from the base class, so that, e.g., an x86 operand expression can be output in a different format than an m68k expression. The object chaining allows one unparser to override or augment the behavior of another function and is used, for example, to provide HTML wrapping around various entities.
The object chaining is implemented in two parts: every unparser object has a nextUnparser pointer and the final unparser in the list has a null pointer for this property; the Unparser::State object has a frontUnparser method that returns the first unparser in this list. This mid-level function is expected to always invoke functions on the front unparser in order to give every parser in the chain a chance to influence behavior. The base implementation of this mid-level function defers to the next parser in the chain if there is one, otherwise it performs some default output that's hopefully appropriate for most unparsers.
All such chained and virtual emitters begin with the letters "emit".
|
virtual |
Mid-level unparser function.
This function emits some entity to the specified output stream. All call-specific state is supplied in the State reference so that this function can be called with a const parser references and is thread safe per state object. The high-level functions create the state – states are not intended for end users – before calling this mid-level function.
This mid-level function uses a combination of C++ virtual function calls and object chaining. The virtual functions allow subclasses to override or augment behavior from the base class, so that, e.g., an x86 operand expression can be output in a different format than an m68k expression. The object chaining allows one unparser to override or augment the behavior of another function and is used, for example, to provide HTML wrapping around various entities.
The object chaining is implemented in two parts: every unparser object has a nextUnparser pointer and the final unparser in the list has a null pointer for this property; the Unparser::State object has a frontUnparser method that returns the first unparser in this list. This mid-level function is expected to always invoke functions on the front unparser in order to give every parser in the chain a chance to influence behavior. The base implementation of this mid-level function defers to the next parser in the chain if there is one, otherwise it performs some default output that's hopefully appropriate for most unparsers.
All such chained and virtual emitters begin with the letters "emit".
|
virtual |
Mid-level unparser function.
This function emits some entity to the specified output stream. All call-specific state is supplied in the State reference so that this function can be called with a const parser references and is thread safe per state object. The high-level functions create the state – states are not intended for end users – before calling this mid-level function.
This mid-level function uses a combination of C++ virtual function calls and object chaining. The virtual functions allow subclasses to override or augment behavior from the base class, so that, e.g., an x86 operand expression can be output in a different format than an m68k expression. The object chaining allows one unparser to override or augment the behavior of another function and is used, for example, to provide HTML wrapping around various entities.
The object chaining is implemented in two parts: every unparser object has a nextUnparser pointer and the final unparser in the list has a null pointer for this property; the Unparser::State object has a frontUnparser method that returns the first unparser in this list. This mid-level function is expected to always invoke functions on the front unparser in order to give every parser in the chain a chance to influence behavior. The base implementation of this mid-level function defers to the next parser in the chain if there is one, otherwise it performs some default output that's hopefully appropriate for most unparsers.
All such chained and virtual emitters begin with the letters "emit".
|
virtual |
Mid-level unparser function.
This function emits some entity to the specified output stream. All call-specific state is supplied in the State reference so that this function can be called with a const parser references and is thread safe per state object. The high-level functions create the state – states are not intended for end users – before calling this mid-level function.
This mid-level function uses a combination of C++ virtual function calls and object chaining. The virtual functions allow subclasses to override or augment behavior from the base class, so that, e.g., an x86 operand expression can be output in a different format than an m68k expression. The object chaining allows one unparser to override or augment the behavior of another function and is used, for example, to provide HTML wrapping around various entities.
The object chaining is implemented in two parts: every unparser object has a nextUnparser pointer and the final unparser in the list has a null pointer for this property; the Unparser::State object has a frontUnparser method that returns the first unparser in this list. This mid-level function is expected to always invoke functions on the front unparser in order to give every parser in the chain a chance to influence behavior. The base implementation of this mid-level function defers to the next parser in the chain if there is one, otherwise it performs some default output that's hopefully appropriate for most unparsers.
All such chained and virtual emitters begin with the letters "emit".
|
virtual |
Mid-level unparser function.
This function emits some entity to the specified output stream. All call-specific state is supplied in the State reference so that this function can be called with a const parser references and is thread safe per state object. The high-level functions create the state – states are not intended for end users – before calling this mid-level function.
This mid-level function uses a combination of C++ virtual function calls and object chaining. The virtual functions allow subclasses to override or augment behavior from the base class, so that, e.g., an x86 operand expression can be output in a different format than an m68k expression. The object chaining allows one unparser to override or augment the behavior of another function and is used, for example, to provide HTML wrapping around various entities.
The object chaining is implemented in two parts: every unparser object has a nextUnparser pointer and the final unparser in the list has a null pointer for this property; the Unparser::State object has a frontUnparser method that returns the first unparser in this list. This mid-level function is expected to always invoke functions on the front unparser in order to give every parser in the chain a chance to influence behavior. The base implementation of this mid-level function defers to the next parser in the chain if there is one, otherwise it performs some default output that's hopefully appropriate for most unparsers.
All such chained and virtual emitters begin with the letters "emit".
|
virtual |
Mid-level unparser function.
This function emits some entity to the specified output stream. All call-specific state is supplied in the State reference so that this function can be called with a const parser references and is thread safe per state object. The high-level functions create the state – states are not intended for end users – before calling this mid-level function.
This mid-level function uses a combination of C++ virtual function calls and object chaining. The virtual functions allow subclasses to override or augment behavior from the base class, so that, e.g., an x86 operand expression can be output in a different format than an m68k expression. The object chaining allows one unparser to override or augment the behavior of another function and is used, for example, to provide HTML wrapping around various entities.
The object chaining is implemented in two parts: every unparser object has a nextUnparser pointer and the final unparser in the list has a null pointer for this property; the Unparser::State object has a frontUnparser method that returns the first unparser in this list. This mid-level function is expected to always invoke functions on the front unparser in order to give every parser in the chain a chance to influence behavior. The base implementation of this mid-level function defers to the next parser in the chain if there is one, otherwise it performs some default output that's hopefully appropriate for most unparsers.
All such chained and virtual emitters begin with the letters "emit".
|
virtual |
Mid-level unparser function.
This function emits some entity to the specified output stream. All call-specific state is supplied in the State reference so that this function can be called with a const parser references and is thread safe per state object. The high-level functions create the state – states are not intended for end users – before calling this mid-level function.
This mid-level function uses a combination of C++ virtual function calls and object chaining. The virtual functions allow subclasses to override or augment behavior from the base class, so that, e.g., an x86 operand expression can be output in a different format than an m68k expression. The object chaining allows one unparser to override or augment the behavior of another function and is used, for example, to provide HTML wrapping around various entities.
The object chaining is implemented in two parts: every unparser object has a nextUnparser pointer and the final unparser in the list has a null pointer for this property; the Unparser::State object has a frontUnparser method that returns the first unparser in this list. This mid-level function is expected to always invoke functions on the front unparser in order to give every parser in the chain a chance to influence behavior. The base implementation of this mid-level function defers to the next parser in the chain if there is one, otherwise it performs some default output that's hopefully appropriate for most unparsers.
All such chained and virtual emitters begin with the letters "emit".
|
virtual |
Mid-level unparser function.
This function emits some entity to the specified output stream. All call-specific state is supplied in the State reference so that this function can be called with a const parser references and is thread safe per state object. The high-level functions create the state – states are not intended for end users – before calling this mid-level function.
This mid-level function uses a combination of C++ virtual function calls and object chaining. The virtual functions allow subclasses to override or augment behavior from the base class, so that, e.g., an x86 operand expression can be output in a different format than an m68k expression. The object chaining allows one unparser to override or augment the behavior of another function and is used, for example, to provide HTML wrapping around various entities.
The object chaining is implemented in two parts: every unparser object has a nextUnparser pointer and the final unparser in the list has a null pointer for this property; the Unparser::State object has a frontUnparser method that returns the first unparser in this list. This mid-level function is expected to always invoke functions on the front unparser in order to give every parser in the chain a chance to influence behavior. The base implementation of this mid-level function defers to the next parser in the chain if there is one, otherwise it performs some default output that's hopefully appropriate for most unparsers.
All such chained and virtual emitters begin with the letters "emit".
|
virtual |
Mid-level unparser function.
This function emits some entity to the specified output stream. All call-specific state is supplied in the State reference so that this function can be called with a const parser references and is thread safe per state object. The high-level functions create the state – states are not intended for end users – before calling this mid-level function.
This mid-level function uses a combination of C++ virtual function calls and object chaining. The virtual functions allow subclasses to override or augment behavior from the base class, so that, e.g., an x86 operand expression can be output in a different format than an m68k expression. The object chaining allows one unparser to override or augment the behavior of another function and is used, for example, to provide HTML wrapping around various entities.
The object chaining is implemented in two parts: every unparser object has a nextUnparser pointer and the final unparser in the list has a null pointer for this property; the Unparser::State object has a frontUnparser method that returns the first unparser in this list. This mid-level function is expected to always invoke functions on the front unparser in order to give every parser in the chain a chance to influence behavior. The base implementation of this mid-level function defers to the next parser in the chain if there is one, otherwise it performs some default output that's hopefully appropriate for most unparsers.
All such chained and virtual emitters begin with the letters "emit".
|
virtual |
Mid-level unparser function.
This function emits some entity to the specified output stream. All call-specific state is supplied in the State reference so that this function can be called with a const parser references and is thread safe per state object. The high-level functions create the state – states are not intended for end users – before calling this mid-level function.
This mid-level function uses a combination of C++ virtual function calls and object chaining. The virtual functions allow subclasses to override or augment behavior from the base class, so that, e.g., an x86 operand expression can be output in a different format than an m68k expression. The object chaining allows one unparser to override or augment the behavior of another function and is used, for example, to provide HTML wrapping around various entities.
The object chaining is implemented in two parts: every unparser object has a nextUnparser pointer and the final unparser in the list has a null pointer for this property; the Unparser::State object has a frontUnparser method that returns the first unparser in this list. This mid-level function is expected to always invoke functions on the front unparser in order to give every parser in the chain a chance to influence behavior. The base implementation of this mid-level function defers to the next parser in the chain if there is one, otherwise it performs some default output that's hopefully appropriate for most unparsers.
All such chained and virtual emitters begin with the letters "emit".
|
virtual |
Mid-level unparser function.
This function emits some entity to the specified output stream. All call-specific state is supplied in the State reference so that this function can be called with a const parser references and is thread safe per state object. The high-level functions create the state – states are not intended for end users – before calling this mid-level function.
This mid-level function uses a combination of C++ virtual function calls and object chaining. The virtual functions allow subclasses to override or augment behavior from the base class, so that, e.g., an x86 operand expression can be output in a different format than an m68k expression. The object chaining allows one unparser to override or augment the behavior of another function and is used, for example, to provide HTML wrapping around various entities.
The object chaining is implemented in two parts: every unparser object has a nextUnparser pointer and the final unparser in the list has a null pointer for this property; the Unparser::State object has a frontUnparser method that returns the first unparser in this list. This mid-level function is expected to always invoke functions on the front unparser in order to give every parser in the chain a chance to influence behavior. The base implementation of this mid-level function defers to the next parser in the chain if there is one, otherwise it performs some default output that's hopefully appropriate for most unparsers.
All such chained and virtual emitters begin with the letters "emit".
|
virtual |
Mid-level unparser function.
This function emits some entity to the specified output stream. All call-specific state is supplied in the State reference so that this function can be called with a const parser references and is thread safe per state object. The high-level functions create the state – states are not intended for end users – before calling this mid-level function.
This mid-level function uses a combination of C++ virtual function calls and object chaining. The virtual functions allow subclasses to override or augment behavior from the base class, so that, e.g., an x86 operand expression can be output in a different format than an m68k expression. The object chaining allows one unparser to override or augment the behavior of another function and is used, for example, to provide HTML wrapping around various entities.
The object chaining is implemented in two parts: every unparser object has a nextUnparser pointer and the final unparser in the list has a null pointer for this property; the Unparser::State object has a frontUnparser method that returns the first unparser in this list. This mid-level function is expected to always invoke functions on the front unparser in order to give every parser in the chain a chance to influence behavior. The base implementation of this mid-level function defers to the next parser in the chain if there is one, otherwise it performs some default output that's hopefully appropriate for most unparsers.
All such chained and virtual emitters begin with the letters "emit".
|
virtual |
Mid-level unparser function.
This function emits some entity to the specified output stream. All call-specific state is supplied in the State reference so that this function can be called with a const parser references and is thread safe per state object. The high-level functions create the state – states are not intended for end users – before calling this mid-level function.
This mid-level function uses a combination of C++ virtual function calls and object chaining. The virtual functions allow subclasses to override or augment behavior from the base class, so that, e.g., an x86 operand expression can be output in a different format than an m68k expression. The object chaining allows one unparser to override or augment the behavior of another function and is used, for example, to provide HTML wrapping around various entities.
The object chaining is implemented in two parts: every unparser object has a nextUnparser pointer and the final unparser in the list has a null pointer for this property; the Unparser::State object has a frontUnparser method that returns the first unparser in this list. This mid-level function is expected to always invoke functions on the front unparser in order to give every parser in the chain a chance to influence behavior. The base implementation of this mid-level function defers to the next parser in the chain if there is one, otherwise it performs some default output that's hopefully appropriate for most unparsers.
All such chained and virtual emitters begin with the letters "emit".
|
virtual |
Mid-level unparser function.
This function emits some entity to the specified output stream. All call-specific state is supplied in the State reference so that this function can be called with a const parser references and is thread safe per state object. The high-level functions create the state – states are not intended for end users – before calling this mid-level function.
This mid-level function uses a combination of C++ virtual function calls and object chaining. The virtual functions allow subclasses to override or augment behavior from the base class, so that, e.g., an x86 operand expression can be output in a different format than an m68k expression. The object chaining allows one unparser to override or augment the behavior of another function and is used, for example, to provide HTML wrapping around various entities.
The object chaining is implemented in two parts: every unparser object has a nextUnparser pointer and the final unparser in the list has a null pointer for this property; the Unparser::State object has a frontUnparser method that returns the first unparser in this list. This mid-level function is expected to always invoke functions on the front unparser in order to give every parser in the chain a chance to influence behavior. The base implementation of this mid-level function defers to the next parser in the chain if there is one, otherwise it performs some default output that's hopefully appropriate for most unparsers.
All such chained and virtual emitters begin with the letters "emit".
|
virtual |
Mid-level unparser function.
This function emits some entity to the specified output stream. All call-specific state is supplied in the State reference so that this function can be called with a const parser references and is thread safe per state object. The high-level functions create the state – states are not intended for end users – before calling this mid-level function.
This mid-level function uses a combination of C++ virtual function calls and object chaining. The virtual functions allow subclasses to override or augment behavior from the base class, so that, e.g., an x86 operand expression can be output in a different format than an m68k expression. The object chaining allows one unparser to override or augment the behavior of another function and is used, for example, to provide HTML wrapping around various entities.
The object chaining is implemented in two parts: every unparser object has a nextUnparser pointer and the final unparser in the list has a null pointer for this property; the Unparser::State object has a frontUnparser method that returns the first unparser in this list. This mid-level function is expected to always invoke functions on the front unparser in order to give every parser in the chain a chance to influence behavior. The base implementation of this mid-level function defers to the next parser in the chain if there is one, otherwise it performs some default output that's hopefully appropriate for most unparsers.
All such chained and virtual emitters begin with the letters "emit".
|
virtual |
Mid-level unparser function.
This function emits some entity to the specified output stream. All call-specific state is supplied in the State reference so that this function can be called with a const parser references and is thread safe per state object. The high-level functions create the state – states are not intended for end users – before calling this mid-level function.
This mid-level function uses a combination of C++ virtual function calls and object chaining. The virtual functions allow subclasses to override or augment behavior from the base class, so that, e.g., an x86 operand expression can be output in a different format than an m68k expression. The object chaining allows one unparser to override or augment the behavior of another function and is used, for example, to provide HTML wrapping around various entities.
The object chaining is implemented in two parts: every unparser object has a nextUnparser pointer and the final unparser in the list has a null pointer for this property; the Unparser::State object has a frontUnparser method that returns the first unparser in this list. This mid-level function is expected to always invoke functions on the front unparser in order to give every parser in the chain a chance to influence behavior. The base implementation of this mid-level function defers to the next parser in the chain if there is one, otherwise it performs some default output that's hopefully appropriate for most unparsers.
All such chained and virtual emitters begin with the letters "emit".
|
virtual |
Mid-level unparser function.
This function emits some entity to the specified output stream. All call-specific state is supplied in the State reference so that this function can be called with a const parser references and is thread safe per state object. The high-level functions create the state – states are not intended for end users – before calling this mid-level function.
This mid-level function uses a combination of C++ virtual function calls and object chaining. The virtual functions allow subclasses to override or augment behavior from the base class, so that, e.g., an x86 operand expression can be output in a different format than an m68k expression. The object chaining allows one unparser to override or augment the behavior of another function and is used, for example, to provide HTML wrapping around various entities.
The object chaining is implemented in two parts: every unparser object has a nextUnparser pointer and the final unparser in the list has a null pointer for this property; the Unparser::State object has a frontUnparser method that returns the first unparser in this list. This mid-level function is expected to always invoke functions on the front unparser in order to give every parser in the chain a chance to influence behavior. The base implementation of this mid-level function defers to the next parser in the chain if there is one, otherwise it performs some default output that's hopefully appropriate for most unparsers.
All such chained and virtual emitters begin with the letters "emit".
|
virtual |
Mid-level unparser function.
This function emits some entity to the specified output stream. All call-specific state is supplied in the State reference so that this function can be called with a const parser references and is thread safe per state object. The high-level functions create the state – states are not intended for end users – before calling this mid-level function.
This mid-level function uses a combination of C++ virtual function calls and object chaining. The virtual functions allow subclasses to override or augment behavior from the base class, so that, e.g., an x86 operand expression can be output in a different format than an m68k expression. The object chaining allows one unparser to override or augment the behavior of another function and is used, for example, to provide HTML wrapping around various entities.
The object chaining is implemented in two parts: every unparser object has a nextUnparser pointer and the final unparser in the list has a null pointer for this property; the Unparser::State object has a frontUnparser method that returns the first unparser in this list. This mid-level function is expected to always invoke functions on the front unparser in order to give every parser in the chain a chance to influence behavior. The base implementation of this mid-level function defers to the next parser in the chain if there is one, otherwise it performs some default output that's hopefully appropriate for most unparsers.
All such chained and virtual emitters begin with the letters "emit".
|
virtual |
Mid-level unparser function.
This function emits some entity to the specified output stream. All call-specific state is supplied in the State reference so that this function can be called with a const parser references and is thread safe per state object. The high-level functions create the state – states are not intended for end users – before calling this mid-level function.
This mid-level function uses a combination of C++ virtual function calls and object chaining. The virtual functions allow subclasses to override or augment behavior from the base class, so that, e.g., an x86 operand expression can be output in a different format than an m68k expression. The object chaining allows one unparser to override or augment the behavior of another function and is used, for example, to provide HTML wrapping around various entities.
The object chaining is implemented in two parts: every unparser object has a nextUnparser pointer and the final unparser in the list has a null pointer for this property; the Unparser::State object has a frontUnparser method that returns the first unparser in this list. This mid-level function is expected to always invoke functions on the front unparser in order to give every parser in the chain a chance to influence behavior. The base implementation of this mid-level function defers to the next parser in the chain if there is one, otherwise it performs some default output that's hopefully appropriate for most unparsers.
All such chained and virtual emitters begin with the letters "emit".
|
virtual |
Mid-level unparser function.
This function emits some entity to the specified output stream. All call-specific state is supplied in the State reference so that this function can be called with a const parser references and is thread safe per state object. The high-level functions create the state – states are not intended for end users – before calling this mid-level function.
This mid-level function uses a combination of C++ virtual function calls and object chaining. The virtual functions allow subclasses to override or augment behavior from the base class, so that, e.g., an x86 operand expression can be output in a different format than an m68k expression. The object chaining allows one unparser to override or augment the behavior of another function and is used, for example, to provide HTML wrapping around various entities.
The object chaining is implemented in two parts: every unparser object has a nextUnparser pointer and the final unparser in the list has a null pointer for this property; the Unparser::State object has a frontUnparser method that returns the first unparser in this list. This mid-level function is expected to always invoke functions on the front unparser in order to give every parser in the chain a chance to influence behavior. The base implementation of this mid-level function defers to the next parser in the chain if there is one, otherwise it performs some default output that's hopefully appropriate for most unparsers.
All such chained and virtual emitters begin with the letters "emit".
|
virtual |
Mid-level unparser function.
This function emits some entity to the specified output stream. All call-specific state is supplied in the State reference so that this function can be called with a const parser references and is thread safe per state object. The high-level functions create the state – states are not intended for end users – before calling this mid-level function.
This mid-level function uses a combination of C++ virtual function calls and object chaining. The virtual functions allow subclasses to override or augment behavior from the base class, so that, e.g., an x86 operand expression can be output in a different format than an m68k expression. The object chaining allows one unparser to override or augment the behavior of another function and is used, for example, to provide HTML wrapping around various entities.
The object chaining is implemented in two parts: every unparser object has a nextUnparser pointer and the final unparser in the list has a null pointer for this property; the Unparser::State object has a frontUnparser method that returns the first unparser in this list. This mid-level function is expected to always invoke functions on the front unparser in order to give every parser in the chain a chance to influence behavior. The base implementation of this mid-level function defers to the next parser in the chain if there is one, otherwise it performs some default output that's hopefully appropriate for most unparsers.
All such chained and virtual emitters begin with the letters "emit".
|
virtual |
Mid-level unparser function.
This function emits some entity to the specified output stream. All call-specific state is supplied in the State reference so that this function can be called with a const parser references and is thread safe per state object. The high-level functions create the state – states are not intended for end users – before calling this mid-level function.
This mid-level function uses a combination of C++ virtual function calls and object chaining. The virtual functions allow subclasses to override or augment behavior from the base class, so that, e.g., an x86 operand expression can be output in a different format than an m68k expression. The object chaining allows one unparser to override or augment the behavior of another function and is used, for example, to provide HTML wrapping around various entities.
The object chaining is implemented in two parts: every unparser object has a nextUnparser pointer and the final unparser in the list has a null pointer for this property; the Unparser::State object has a frontUnparser method that returns the first unparser in this list. This mid-level function is expected to always invoke functions on the front unparser in order to give every parser in the chain a chance to influence behavior. The base implementation of this mid-level function defers to the next parser in the chain if there is one, otherwise it performs some default output that's hopefully appropriate for most unparsers.
All such chained and virtual emitters begin with the letters "emit".
|
virtual |
Mid-level unparser function.
This function emits some entity to the specified output stream. All call-specific state is supplied in the State reference so that this function can be called with a const parser references and is thread safe per state object. The high-level functions create the state – states are not intended for end users – before calling this mid-level function.
This mid-level function uses a combination of C++ virtual function calls and object chaining. The virtual functions allow subclasses to override or augment behavior from the base class, so that, e.g., an x86 operand expression can be output in a different format than an m68k expression. The object chaining allows one unparser to override or augment the behavior of another function and is used, for example, to provide HTML wrapping around various entities.
The object chaining is implemented in two parts: every unparser object has a nextUnparser pointer and the final unparser in the list has a null pointer for this property; the Unparser::State object has a frontUnparser method that returns the first unparser in this list. This mid-level function is expected to always invoke functions on the front unparser in order to give every parser in the chain a chance to influence behavior. The base implementation of this mid-level function defers to the next parser in the chain if there is one, otherwise it performs some default output that's hopefully appropriate for most unparsers.
All such chained and virtual emitters begin with the letters "emit".
|
virtual |
Mid-level unparser function.
This function emits some entity to the specified output stream. All call-specific state is supplied in the State reference so that this function can be called with a const parser references and is thread safe per state object. The high-level functions create the state – states are not intended for end users – before calling this mid-level function.
This mid-level function uses a combination of C++ virtual function calls and object chaining. The virtual functions allow subclasses to override or augment behavior from the base class, so that, e.g., an x86 operand expression can be output in a different format than an m68k expression. The object chaining allows one unparser to override or augment the behavior of another function and is used, for example, to provide HTML wrapping around various entities.
The object chaining is implemented in two parts: every unparser object has a nextUnparser pointer and the final unparser in the list has a null pointer for this property; the Unparser::State object has a frontUnparser method that returns the first unparser in this list. This mid-level function is expected to always invoke functions on the front unparser in order to give every parser in the chain a chance to influence behavior. The base implementation of this mid-level function defers to the next parser in the chain if there is one, otherwise it performs some default output that's hopefully appropriate for most unparsers.
All such chained and virtual emitters begin with the letters "emit".
|
virtual |
Mid-level unparser function.
This function emits some entity to the specified output stream. All call-specific state is supplied in the State reference so that this function can be called with a const parser references and is thread safe per state object. The high-level functions create the state – states are not intended for end users – before calling this mid-level function.
This mid-level function uses a combination of C++ virtual function calls and object chaining. The virtual functions allow subclasses to override or augment behavior from the base class, so that, e.g., an x86 operand expression can be output in a different format than an m68k expression. The object chaining allows one unparser to override or augment the behavior of another function and is used, for example, to provide HTML wrapping around various entities.
The object chaining is implemented in two parts: every unparser object has a nextUnparser pointer and the final unparser in the list has a null pointer for this property; the Unparser::State object has a frontUnparser method that returns the first unparser in this list. This mid-level function is expected to always invoke functions on the front unparser in order to give every parser in the chain a chance to influence behavior. The base implementation of this mid-level function defers to the next parser in the chain if there is one, otherwise it performs some default output that's hopefully appropriate for most unparsers.
All such chained and virtual emitters begin with the letters "emit".
|
virtual |
Mid-level unparser function.
This function emits some entity to the specified output stream. All call-specific state is supplied in the State reference so that this function can be called with a const parser references and is thread safe per state object. The high-level functions create the state – states are not intended for end users – before calling this mid-level function.
This mid-level function uses a combination of C++ virtual function calls and object chaining. The virtual functions allow subclasses to override or augment behavior from the base class, so that, e.g., an x86 operand expression can be output in a different format than an m68k expression. The object chaining allows one unparser to override or augment the behavior of another function and is used, for example, to provide HTML wrapping around various entities.
The object chaining is implemented in two parts: every unparser object has a nextUnparser pointer and the final unparser in the list has a null pointer for this property; the Unparser::State object has a frontUnparser method that returns the first unparser in this list. This mid-level function is expected to always invoke functions on the front unparser in order to give every parser in the chain a chance to influence behavior. The base implementation of this mid-level function defers to the next parser in the chain if there is one, otherwise it performs some default output that's hopefully appropriate for most unparsers.
All such chained and virtual emitters begin with the letters "emit".
|
virtual |
Mid-level unparser function.
This function emits some entity to the specified output stream. All call-specific state is supplied in the State reference so that this function can be called with a const parser references and is thread safe per state object. The high-level functions create the state – states are not intended for end users – before calling this mid-level function.
This mid-level function uses a combination of C++ virtual function calls and object chaining. The virtual functions allow subclasses to override or augment behavior from the base class, so that, e.g., an x86 operand expression can be output in a different format than an m68k expression. The object chaining allows one unparser to override or augment the behavior of another function and is used, for example, to provide HTML wrapping around various entities.
The object chaining is implemented in two parts: every unparser object has a nextUnparser pointer and the final unparser in the list has a null pointer for this property; the Unparser::State object has a frontUnparser method that returns the first unparser in this list. This mid-level function is expected to always invoke functions on the front unparser in order to give every parser in the chain a chance to influence behavior. The base implementation of this mid-level function defers to the next parser in the chain if there is one, otherwise it performs some default output that's hopefully appropriate for most unparsers.
All such chained and virtual emitters begin with the letters "emit".
|
virtual |
Mid-level unparser function.
This function emits some entity to the specified output stream. All call-specific state is supplied in the State reference so that this function can be called with a const parser references and is thread safe per state object. The high-level functions create the state – states are not intended for end users – before calling this mid-level function.
This mid-level function uses a combination of C++ virtual function calls and object chaining. The virtual functions allow subclasses to override or augment behavior from the base class, so that, e.g., an x86 operand expression can be output in a different format than an m68k expression. The object chaining allows one unparser to override or augment the behavior of another function and is used, for example, to provide HTML wrapping around various entities.
The object chaining is implemented in two parts: every unparser object has a nextUnparser pointer and the final unparser in the list has a null pointer for this property; the Unparser::State object has a frontUnparser method that returns the first unparser in this list. This mid-level function is expected to always invoke functions on the front unparser in order to give every parser in the chain a chance to influence behavior. The base implementation of this mid-level function defers to the next parser in the chain if there is one, otherwise it performs some default output that's hopefully appropriate for most unparsers.
All such chained and virtual emitters begin with the letters "emit".
|
virtual |
Mid-level unparser function.
This function emits some entity to the specified output stream. All call-specific state is supplied in the State reference so that this function can be called with a const parser references and is thread safe per state object. The high-level functions create the state – states are not intended for end users – before calling this mid-level function.
This mid-level function uses a combination of C++ virtual function calls and object chaining. The virtual functions allow subclasses to override or augment behavior from the base class, so that, e.g., an x86 operand expression can be output in a different format than an m68k expression. The object chaining allows one unparser to override or augment the behavior of another function and is used, for example, to provide HTML wrapping around various entities.
The object chaining is implemented in two parts: every unparser object has a nextUnparser pointer and the final unparser in the list has a null pointer for this property; the Unparser::State object has a frontUnparser method that returns the first unparser in this list. This mid-level function is expected to always invoke functions on the front unparser in order to give every parser in the chain a chance to influence behavior. The base implementation of this mid-level function defers to the next parser in the chain if there is one, otherwise it performs some default output that's hopefully appropriate for most unparsers.
All such chained and virtual emitters begin with the letters "emit".
Reimplemented in Rose::BinaryAnalysis::Unparser::Cil, Rose::BinaryAnalysis::Unparser::M68k, Rose::BinaryAnalysis::Unparser::Mips, and Rose::BinaryAnalysis::Unparser::Powerpc.
|
virtual |
Mid-level unparser function.
This function emits some entity to the specified output stream. All call-specific state is supplied in the State reference so that this function can be called with a const parser references and is thread safe per state object. The high-level functions create the state – states are not intended for end users – before calling this mid-level function.
This mid-level function uses a combination of C++ virtual function calls and object chaining. The virtual functions allow subclasses to override or augment behavior from the base class, so that, e.g., an x86 operand expression can be output in a different format than an m68k expression. The object chaining allows one unparser to override or augment the behavior of another function and is used, for example, to provide HTML wrapping around various entities.
The object chaining is implemented in two parts: every unparser object has a nextUnparser pointer and the final unparser in the list has a null pointer for this property; the Unparser::State object has a frontUnparser method that returns the first unparser in this list. This mid-level function is expected to always invoke functions on the front unparser in order to give every parser in the chain a chance to influence behavior. The base implementation of this mid-level function defers to the next parser in the chain if there is one, otherwise it performs some default output that's hopefully appropriate for most unparsers.
All such chained and virtual emitters begin with the letters "emit".
|
virtual |
Mid-level unparser function.
This function emits some entity to the specified output stream. All call-specific state is supplied in the State reference so that this function can be called with a const parser references and is thread safe per state object. The high-level functions create the state – states are not intended for end users – before calling this mid-level function.
This mid-level function uses a combination of C++ virtual function calls and object chaining. The virtual functions allow subclasses to override or augment behavior from the base class, so that, e.g., an x86 operand expression can be output in a different format than an m68k expression. The object chaining allows one unparser to override or augment the behavior of another function and is used, for example, to provide HTML wrapping around various entities.
The object chaining is implemented in two parts: every unparser object has a nextUnparser pointer and the final unparser in the list has a null pointer for this property; the Unparser::State object has a frontUnparser method that returns the first unparser in this list. This mid-level function is expected to always invoke functions on the front unparser in order to give every parser in the chain a chance to influence behavior. The base implementation of this mid-level function defers to the next parser in the chain if there is one, otherwise it performs some default output that's hopefully appropriate for most unparsers.
All such chained and virtual emitters begin with the letters "emit".
|
virtual |
Mid-level unparser function.
This function emits some entity to the specified output stream. All call-specific state is supplied in the State reference so that this function can be called with a const parser references and is thread safe per state object. The high-level functions create the state – states are not intended for end users – before calling this mid-level function.
This mid-level function uses a combination of C++ virtual function calls and object chaining. The virtual functions allow subclasses to override or augment behavior from the base class, so that, e.g., an x86 operand expression can be output in a different format than an m68k expression. The object chaining allows one unparser to override or augment the behavior of another function and is used, for example, to provide HTML wrapping around various entities.
The object chaining is implemented in two parts: every unparser object has a nextUnparser pointer and the final unparser in the list has a null pointer for this property; the Unparser::State object has a frontUnparser method that returns the first unparser in this list. This mid-level function is expected to always invoke functions on the front unparser in order to give every parser in the chain a chance to influence behavior. The base implementation of this mid-level function defers to the next parser in the chain if there is one, otherwise it performs some default output that's hopefully appropriate for most unparsers.
All such chained and virtual emitters begin with the letters "emit".
|
virtual |
Mid-level unparser function.
This function emits some entity to the specified output stream. All call-specific state is supplied in the State reference so that this function can be called with a const parser references and is thread safe per state object. The high-level functions create the state – states are not intended for end users – before calling this mid-level function.
This mid-level function uses a combination of C++ virtual function calls and object chaining. The virtual functions allow subclasses to override or augment behavior from the base class, so that, e.g., an x86 operand expression can be output in a different format than an m68k expression. The object chaining allows one unparser to override or augment the behavior of another function and is used, for example, to provide HTML wrapping around various entities.
The object chaining is implemented in two parts: every unparser object has a nextUnparser pointer and the final unparser in the list has a null pointer for this property; the Unparser::State object has a frontUnparser method that returns the first unparser in this list. This mid-level function is expected to always invoke functions on the front unparser in order to give every parser in the chain a chance to influence behavior. The base implementation of this mid-level function defers to the next parser in the chain if there is one, otherwise it performs some default output that's hopefully appropriate for most unparsers.
All such chained and virtual emitters begin with the letters "emit".
|
virtual |
Mid-level unparser function.
This function emits some entity to the specified output stream. All call-specific state is supplied in the State reference so that this function can be called with a const parser references and is thread safe per state object. The high-level functions create the state – states are not intended for end users – before calling this mid-level function.
This mid-level function uses a combination of C++ virtual function calls and object chaining. The virtual functions allow subclasses to override or augment behavior from the base class, so that, e.g., an x86 operand expression can be output in a different format than an m68k expression. The object chaining allows one unparser to override or augment the behavior of another function and is used, for example, to provide HTML wrapping around various entities.
The object chaining is implemented in two parts: every unparser object has a nextUnparser pointer and the final unparser in the list has a null pointer for this property; the Unparser::State object has a frontUnparser method that returns the first unparser in this list. This mid-level function is expected to always invoke functions on the front unparser in order to give every parser in the chain a chance to influence behavior. The base implementation of this mid-level function defers to the next parser in the chain if there is one, otherwise it performs some default output that's hopefully appropriate for most unparsers.
All such chained and virtual emitters begin with the letters "emit".
|
virtual |
Mid-level unparser function.
This function emits some entity to the specified output stream. All call-specific state is supplied in the State reference so that this function can be called with a const parser references and is thread safe per state object. The high-level functions create the state – states are not intended for end users – before calling this mid-level function.
This mid-level function uses a combination of C++ virtual function calls and object chaining. The virtual functions allow subclasses to override or augment behavior from the base class, so that, e.g., an x86 operand expression can be output in a different format than an m68k expression. The object chaining allows one unparser to override or augment the behavior of another function and is used, for example, to provide HTML wrapping around various entities.
The object chaining is implemented in two parts: every unparser object has a nextUnparser pointer and the final unparser in the list has a null pointer for this property; the Unparser::State object has a frontUnparser method that returns the first unparser in this list. This mid-level function is expected to always invoke functions on the front unparser in order to give every parser in the chain a chance to influence behavior. The base implementation of this mid-level function defers to the next parser in the chain if there is one, otherwise it performs some default output that's hopefully appropriate for most unparsers.
All such chained and virtual emitters begin with the letters "emit".
|
virtual |
Mid-level unparser function.
This function emits some entity to the specified output stream. All call-specific state is supplied in the State reference so that this function can be called with a const parser references and is thread safe per state object. The high-level functions create the state – states are not intended for end users – before calling this mid-level function.
This mid-level function uses a combination of C++ virtual function calls and object chaining. The virtual functions allow subclasses to override or augment behavior from the base class, so that, e.g., an x86 operand expression can be output in a different format than an m68k expression. The object chaining allows one unparser to override or augment the behavior of another function and is used, for example, to provide HTML wrapping around various entities.
The object chaining is implemented in two parts: every unparser object has a nextUnparser pointer and the final unparser in the list has a null pointer for this property; the Unparser::State object has a frontUnparser method that returns the first unparser in this list. This mid-level function is expected to always invoke functions on the front unparser in order to give every parser in the chain a chance to influence behavior. The base implementation of this mid-level function defers to the next parser in the chain if there is one, otherwise it performs some default output that's hopefully appropriate for most unparsers.
All such chained and virtual emitters begin with the letters "emit".
Reimplemented in Rose::BinaryAnalysis::Unparser::Jvm, Rose::BinaryAnalysis::Unparser::Null, and Rose::BinaryAnalysis::Unparser::X86.
|
virtual |
Mid-level unparser function.
This function emits some entity to the specified output stream. All call-specific state is supplied in the State reference so that this function can be called with a const parser references and is thread safe per state object. The high-level functions create the state – states are not intended for end users – before calling this mid-level function.
This mid-level function uses a combination of C++ virtual function calls and object chaining. The virtual functions allow subclasses to override or augment behavior from the base class, so that, e.g., an x86 operand expression can be output in a different format than an m68k expression. The object chaining allows one unparser to override or augment the behavior of another function and is used, for example, to provide HTML wrapping around various entities.
The object chaining is implemented in two parts: every unparser object has a nextUnparser pointer and the final unparser in the list has a null pointer for this property; the Unparser::State object has a frontUnparser method that returns the first unparser in this list. This mid-level function is expected to always invoke functions on the front unparser in order to give every parser in the chain a chance to influence behavior. The base implementation of this mid-level function defers to the next parser in the chain if there is one, otherwise it performs some default output that's hopefully appropriate for most unparsers.
All such chained and virtual emitters begin with the letters "emit".
|
virtual |
Mid-level unparser function.
This function emits some entity to the specified output stream. All call-specific state is supplied in the State reference so that this function can be called with a const parser references and is thread safe per state object. The high-level functions create the state – states are not intended for end users – before calling this mid-level function.
This mid-level function uses a combination of C++ virtual function calls and object chaining. The virtual functions allow subclasses to override or augment behavior from the base class, so that, e.g., an x86 operand expression can be output in a different format than an m68k expression. The object chaining allows one unparser to override or augment the behavior of another function and is used, for example, to provide HTML wrapping around various entities.
The object chaining is implemented in two parts: every unparser object has a nextUnparser pointer and the final unparser in the list has a null pointer for this property; the Unparser::State object has a frontUnparser method that returns the first unparser in this list. This mid-level function is expected to always invoke functions on the front unparser in order to give every parser in the chain a chance to influence behavior. The base implementation of this mid-level function defers to the next parser in the chain if there is one, otherwise it performs some default output that's hopefully appropriate for most unparsers.
All such chained and virtual emitters begin with the letters "emit".
|
virtual |
Mid-level unparser function.
This function emits some entity to the specified output stream. All call-specific state is supplied in the State reference so that this function can be called with a const parser references and is thread safe per state object. The high-level functions create the state – states are not intended for end users – before calling this mid-level function.
This mid-level function uses a combination of C++ virtual function calls and object chaining. The virtual functions allow subclasses to override or augment behavior from the base class, so that, e.g., an x86 operand expression can be output in a different format than an m68k expression. The object chaining allows one unparser to override or augment the behavior of another function and is used, for example, to provide HTML wrapping around various entities.
The object chaining is implemented in two parts: every unparser object has a nextUnparser pointer and the final unparser in the list has a null pointer for this property; the Unparser::State object has a frontUnparser method that returns the first unparser in this list. This mid-level function is expected to always invoke functions on the front unparser in order to give every parser in the chain a chance to influence behavior. The base implementation of this mid-level function defers to the next parser in the chain if there is one, otherwise it performs some default output that's hopefully appropriate for most unparsers.
All such chained and virtual emitters begin with the letters "emit".
|
virtual |
Mid-level unparser function.
This function emits some entity to the specified output stream. All call-specific state is supplied in the State reference so that this function can be called with a const parser references and is thread safe per state object. The high-level functions create the state – states are not intended for end users – before calling this mid-level function.
This mid-level function uses a combination of C++ virtual function calls and object chaining. The virtual functions allow subclasses to override or augment behavior from the base class, so that, e.g., an x86 operand expression can be output in a different format than an m68k expression. The object chaining allows one unparser to override or augment the behavior of another function and is used, for example, to provide HTML wrapping around various entities.
The object chaining is implemented in two parts: every unparser object has a nextUnparser pointer and the final unparser in the list has a null pointer for this property; the Unparser::State object has a frontUnparser method that returns the first unparser in this list. This mid-level function is expected to always invoke functions on the front unparser in order to give every parser in the chain a chance to influence behavior. The base implementation of this mid-level function defers to the next parser in the chain if there is one, otherwise it performs some default output that's hopefully appropriate for most unparsers.
All such chained and virtual emitters begin with the letters "emit".
|
virtual |
Mid-level unparser function.
This function emits some entity to the specified output stream. All call-specific state is supplied in the State reference so that this function can be called with a const parser references and is thread safe per state object. The high-level functions create the state – states are not intended for end users – before calling this mid-level function.
This mid-level function uses a combination of C++ virtual function calls and object chaining. The virtual functions allow subclasses to override or augment behavior from the base class, so that, e.g., an x86 operand expression can be output in a different format than an m68k expression. The object chaining allows one unparser to override or augment the behavior of another function and is used, for example, to provide HTML wrapping around various entities.
The object chaining is implemented in two parts: every unparser object has a nextUnparser pointer and the final unparser in the list has a null pointer for this property; the Unparser::State object has a frontUnparser method that returns the first unparser in this list. This mid-level function is expected to always invoke functions on the front unparser in order to give every parser in the chain a chance to influence behavior. The base implementation of this mid-level function defers to the next parser in the chain if there is one, otherwise it performs some default output that's hopefully appropriate for most unparsers.
All such chained and virtual emitters begin with the letters "emit".
|
virtual |
Mid-level unparser function.
This function emits some entity to the specified output stream. All call-specific state is supplied in the State reference so that this function can be called with a const parser references and is thread safe per state object. The high-level functions create the state – states are not intended for end users – before calling this mid-level function.
This mid-level function uses a combination of C++ virtual function calls and object chaining. The virtual functions allow subclasses to override or augment behavior from the base class, so that, e.g., an x86 operand expression can be output in a different format than an m68k expression. The object chaining allows one unparser to override or augment the behavior of another function and is used, for example, to provide HTML wrapping around various entities.
The object chaining is implemented in two parts: every unparser object has a nextUnparser pointer and the final unparser in the list has a null pointer for this property; the Unparser::State object has a frontUnparser method that returns the first unparser in this list. This mid-level function is expected to always invoke functions on the front unparser in order to give every parser in the chain a chance to influence behavior. The base implementation of this mid-level function defers to the next parser in the chain if there is one, otherwise it performs some default output that's hopefully appropriate for most unparsers.
All such chained and virtual emitters begin with the letters "emit".
Reimplemented in Rose::BinaryAnalysis::Unparser::Cil, Rose::BinaryAnalysis::Unparser::Jvm, Rose::BinaryAnalysis::Unparser::M68k, Rose::BinaryAnalysis::Unparser::Mips, Rose::BinaryAnalysis::Unparser::Powerpc, and Rose::BinaryAnalysis::Unparser::X86.
|
virtual |
Mid-level unparser function.
This function emits some entity to the specified output stream. All call-specific state is supplied in the State reference so that this function can be called with a const parser references and is thread safe per state object. The high-level functions create the state – states are not intended for end users – before calling this mid-level function.
This mid-level function uses a combination of C++ virtual function calls and object chaining. The virtual functions allow subclasses to override or augment behavior from the base class, so that, e.g., an x86 operand expression can be output in a different format than an m68k expression. The object chaining allows one unparser to override or augment the behavior of another function and is used, for example, to provide HTML wrapping around various entities.
The object chaining is implemented in two parts: every unparser object has a nextUnparser pointer and the final unparser in the list has a null pointer for this property; the Unparser::State object has a frontUnparser method that returns the first unparser in this list. This mid-level function is expected to always invoke functions on the front unparser in order to give every parser in the chain a chance to influence behavior. The base implementation of this mid-level function defers to the next parser in the chain if there is one, otherwise it performs some default output that's hopefully appropriate for most unparsers.
All such chained and virtual emitters begin with the letters "emit".
|
virtual |
Mid-level unparser function.
This function emits some entity to the specified output stream. All call-specific state is supplied in the State reference so that this function can be called with a const parser references and is thread safe per state object. The high-level functions create the state – states are not intended for end users – before calling this mid-level function.
This mid-level function uses a combination of C++ virtual function calls and object chaining. The virtual functions allow subclasses to override or augment behavior from the base class, so that, e.g., an x86 operand expression can be output in a different format than an m68k expression. The object chaining allows one unparser to override or augment the behavior of another function and is used, for example, to provide HTML wrapping around various entities.
The object chaining is implemented in two parts: every unparser object has a nextUnparser pointer and the final unparser in the list has a null pointer for this property; the Unparser::State object has a frontUnparser method that returns the first unparser in this list. This mid-level function is expected to always invoke functions on the front unparser in order to give every parser in the chain a chance to influence behavior. The base implementation of this mid-level function defers to the next parser in the chain if there is one, otherwise it performs some default output that's hopefully appropriate for most unparsers.
All such chained and virtual emitters begin with the letters "emit".
|
virtual |
Mid-level unparser function.
This function emits some entity to the specified output stream. All call-specific state is supplied in the State reference so that this function can be called with a const parser references and is thread safe per state object. The high-level functions create the state – states are not intended for end users – before calling this mid-level function.
This mid-level function uses a combination of C++ virtual function calls and object chaining. The virtual functions allow subclasses to override or augment behavior from the base class, so that, e.g., an x86 operand expression can be output in a different format than an m68k expression. The object chaining allows one unparser to override or augment the behavior of another function and is used, for example, to provide HTML wrapping around various entities.
The object chaining is implemented in two parts: every unparser object has a nextUnparser pointer and the final unparser in the list has a null pointer for this property; the Unparser::State object has a frontUnparser method that returns the first unparser in this list. This mid-level function is expected to always invoke functions on the front unparser in order to give every parser in the chain a chance to influence behavior. The base implementation of this mid-level function defers to the next parser in the chain if there is one, otherwise it performs some default output that's hopefully appropriate for most unparsers.
All such chained and virtual emitters begin with the letters "emit".
|
virtual |
Mid-level unparser function.
This function emits some entity to the specified output stream. All call-specific state is supplied in the State reference so that this function can be called with a const parser references and is thread safe per state object. The high-level functions create the state – states are not intended for end users – before calling this mid-level function.
This mid-level function uses a combination of C++ virtual function calls and object chaining. The virtual functions allow subclasses to override or augment behavior from the base class, so that, e.g., an x86 operand expression can be output in a different format than an m68k expression. The object chaining allows one unparser to override or augment the behavior of another function and is used, for example, to provide HTML wrapping around various entities.
The object chaining is implemented in two parts: every unparser object has a nextUnparser pointer and the final unparser in the list has a null pointer for this property; the Unparser::State object has a frontUnparser method that returns the first unparser in this list. This mid-level function is expected to always invoke functions on the front unparser in order to give every parser in the chain a chance to influence behavior. The base implementation of this mid-level function defers to the next parser in the chain if there is one, otherwise it performs some default output that's hopefully appropriate for most unparsers.
All such chained and virtual emitters begin with the letters "emit".
|
virtual |
Mid-level unparser function.
This function emits some entity to the specified output stream. All call-specific state is supplied in the State reference so that this function can be called with a const parser references and is thread safe per state object. The high-level functions create the state – states are not intended for end users – before calling this mid-level function.
This mid-level function uses a combination of C++ virtual function calls and object chaining. The virtual functions allow subclasses to override or augment behavior from the base class, so that, e.g., an x86 operand expression can be output in a different format than an m68k expression. The object chaining allows one unparser to override or augment the behavior of another function and is used, for example, to provide HTML wrapping around various entities.
The object chaining is implemented in two parts: every unparser object has a nextUnparser pointer and the final unparser in the list has a null pointer for this property; the Unparser::State object has a frontUnparser method that returns the first unparser in this list. This mid-level function is expected to always invoke functions on the front unparser in order to give every parser in the chain a chance to influence behavior. The base implementation of this mid-level function defers to the next parser in the chain if there is one, otherwise it performs some default output that's hopefully appropriate for most unparsers.
All such chained and virtual emitters begin with the letters "emit".
|
virtual |
Mid-level unparser function.
This function emits some entity to the specified output stream. All call-specific state is supplied in the State reference so that this function can be called with a const parser references and is thread safe per state object. The high-level functions create the state – states are not intended for end users – before calling this mid-level function.
This mid-level function uses a combination of C++ virtual function calls and object chaining. The virtual functions allow subclasses to override or augment behavior from the base class, so that, e.g., an x86 operand expression can be output in a different format than an m68k expression. The object chaining allows one unparser to override or augment the behavior of another function and is used, for example, to provide HTML wrapping around various entities.
The object chaining is implemented in two parts: every unparser object has a nextUnparser pointer and the final unparser in the list has a null pointer for this property; the Unparser::State object has a frontUnparser method that returns the first unparser in this list. This mid-level function is expected to always invoke functions on the front unparser in order to give every parser in the chain a chance to influence behavior. The base implementation of this mid-level function defers to the next parser in the chain if there is one, otherwise it performs some default output that's hopefully appropriate for most unparsers.
All such chained and virtual emitters begin with the letters "emit".
|
virtual |
Mid-level unparser function.
This function emits some entity to the specified output stream. All call-specific state is supplied in the State reference so that this function can be called with a const parser references and is thread safe per state object. The high-level functions create the state – states are not intended for end users – before calling this mid-level function.
This mid-level function uses a combination of C++ virtual function calls and object chaining. The virtual functions allow subclasses to override or augment behavior from the base class, so that, e.g., an x86 operand expression can be output in a different format than an m68k expression. The object chaining allows one unparser to override or augment the behavior of another function and is used, for example, to provide HTML wrapping around various entities.
The object chaining is implemented in two parts: every unparser object has a nextUnparser pointer and the final unparser in the list has a null pointer for this property; the Unparser::State object has a frontUnparser method that returns the first unparser in this list. This mid-level function is expected to always invoke functions on the front unparser in order to give every parser in the chain a chance to influence behavior. The base implementation of this mid-level function defers to the next parser in the chain if there is one, otherwise it performs some default output that's hopefully appropriate for most unparsers.
All such chained and virtual emitters begin with the letters "emit".
|
virtual |
Mid-level unparser function.
This function emits some entity to the specified output stream. All call-specific state is supplied in the State reference so that this function can be called with a const parser references and is thread safe per state object. The high-level functions create the state – states are not intended for end users – before calling this mid-level function.
This mid-level function uses a combination of C++ virtual function calls and object chaining. The virtual functions allow subclasses to override or augment behavior from the base class, so that, e.g., an x86 operand expression can be output in a different format than an m68k expression. The object chaining allows one unparser to override or augment the behavior of another function and is used, for example, to provide HTML wrapping around various entities.
The object chaining is implemented in two parts: every unparser object has a nextUnparser pointer and the final unparser in the list has a null pointer for this property; the Unparser::State object has a frontUnparser method that returns the first unparser in this list. This mid-level function is expected to always invoke functions on the front unparser in order to give every parser in the chain a chance to influence behavior. The base implementation of this mid-level function defers to the next parser in the chain if there is one, otherwise it performs some default output that's hopefully appropriate for most unparsers.
All such chained and virtual emitters begin with the letters "emit".
|
virtual |
Mid-level unparser function.
This function emits some entity to the specified output stream. All call-specific state is supplied in the State reference so that this function can be called with a const parser references and is thread safe per state object. The high-level functions create the state – states are not intended for end users – before calling this mid-level function.
This mid-level function uses a combination of C++ virtual function calls and object chaining. The virtual functions allow subclasses to override or augment behavior from the base class, so that, e.g., an x86 operand expression can be output in a different format than an m68k expression. The object chaining allows one unparser to override or augment the behavior of another function and is used, for example, to provide HTML wrapping around various entities.
The object chaining is implemented in two parts: every unparser object has a nextUnparser pointer and the final unparser in the list has a null pointer for this property; the Unparser::State object has a frontUnparser method that returns the first unparser in this list. This mid-level function is expected to always invoke functions on the front unparser in order to give every parser in the chain a chance to influence behavior. The base implementation of this mid-level function defers to the next parser in the chain if there is one, otherwise it performs some default output that's hopefully appropriate for most unparsers.
All such chained and virtual emitters begin with the letters "emit".
|
virtual |
Mid-level unparser function.
This function emits some entity to the specified output stream. All call-specific state is supplied in the State reference so that this function can be called with a const parser references and is thread safe per state object. The high-level functions create the state – states are not intended for end users – before calling this mid-level function.
This mid-level function uses a combination of C++ virtual function calls and object chaining. The virtual functions allow subclasses to override or augment behavior from the base class, so that, e.g., an x86 operand expression can be output in a different format than an m68k expression. The object chaining allows one unparser to override or augment the behavior of another function and is used, for example, to provide HTML wrapping around various entities.
The object chaining is implemented in two parts: every unparser object has a nextUnparser pointer and the final unparser in the list has a null pointer for this property; the Unparser::State object has a frontUnparser method that returns the first unparser in this list. This mid-level function is expected to always invoke functions on the front unparser in order to give every parser in the chain a chance to influence behavior. The base implementation of this mid-level function defers to the next parser in the chain if there is one, otherwise it performs some default output that's hopefully appropriate for most unparsers.
All such chained and virtual emitters begin with the letters "emit".
Reimplemented in Rose::BinaryAnalysis::Unparser::X86.
|
virtual |
Mid-level unparser function.
This function emits some entity to the specified output stream. All call-specific state is supplied in the State reference so that this function can be called with a const parser references and is thread safe per state object. The high-level functions create the state – states are not intended for end users – before calling this mid-level function.
This mid-level function uses a combination of C++ virtual function calls and object chaining. The virtual functions allow subclasses to override or augment behavior from the base class, so that, e.g., an x86 operand expression can be output in a different format than an m68k expression. The object chaining allows one unparser to override or augment the behavior of another function and is used, for example, to provide HTML wrapping around various entities.
The object chaining is implemented in two parts: every unparser object has a nextUnparser pointer and the final unparser in the list has a null pointer for this property; the Unparser::State object has a frontUnparser method that returns the first unparser in this list. This mid-level function is expected to always invoke functions on the front unparser in order to give every parser in the chain a chance to influence behavior. The base implementation of this mid-level function defers to the next parser in the chain if there is one, otherwise it performs some default output that's hopefully appropriate for most unparsers.
All such chained and virtual emitters begin with the letters "emit".
|
virtual |
Finish initializing the unparser state.
This gets called by the unparse methods just after the state object is created. It can be used to adjust the state before any unparsing actually starts. One common use is to initialize the global margin arrows. The base implementation does nothing except chain to the next unparser.
|
virtual |
Calculate intra-function arrows.
This is the oppurtunity for the subclass to calculate the intra-function arrows that should appear in the left margin of the output. This function is invoked by the base parser after emitting the function prologue and after possibly calculating CFG intra-function arrows but before emitting any basic blocks or data blocks for the function.
|
static |
Render a table row.
Given a row of table data as a vector of cell contents, each of which could be multiple lines, return a string, also possibly multiple lines, that renders the row into columns. The colorEscapes
are the pair of strings that should be emitted before and after each column and do not contribute to the width of the column.
|
static |
Return true if edges are in order by source address.
If edge a
has a source address that's less than the address of b
, or if @ a has a source address and b
has no source address, then return true; otherwise return false. Both edges must be valid edges, not end iterators. This defines the order that block prefixes are emitted. Source addresses are the last address of the source vertex.
|
static |
Return true if edges are in order by target address.
If edge a
has a target address that's less than the address of b
, or if @ a has a target address and b
has no target address, then return true; otherwise return false. Both edges must be valid edges, not end iterators. This defines the order that block suffixes are emitted. Target addresses are the first address of the target vertex.
|
static |
Ordered incoming CFG edges.
Returns the incoming CFG edges for the specified basic block in the order that they should be displayed in the listing. The order is defined by ascendingSourceAddress.
|
static |
Ordered outgoing CFG edges.
Returns the outgoing CFG edges for the specified basic block in the order that they should be displayed in the listing. The order is defined by ascendingTargetAddress.