8#ifndef HPP_ALIB_EXPRESSIONS_DETAIL_PROGRAM
9#define HPP_ALIB_EXPRESSIONS_DETAIL_PROGRAM
17namespace alib {
namespace expressions {
ALIB_API void AssembleCondFinalize_T(integer idxInOriginal, integer idxInNormalized)
ALIB_API ~Program()
Destructor.
CompileStorage * compileStorage
ALIB_API bool collectArgs(integer qty)
ALIB_API void AssembleCondFinalize_F(integer idxInOriginal, integer idxInNormalized)
ALIB_API void AssembleUnaryOp(String &op, integer idxInOriginal, integer idxInNormalized)
integer commandsCount
The number of commands.
Compiler & compiler
The compiler that created this object.
int qtyOptimizations
Counter of the number of optimization made during program assembly.
ALIB_API Program(Compiler &pCompiler, ExpressionVal &pExpression, MonoAllocator *ctAlloc)
ALIB_API const Box & ResultType() const
ALIB_API void AssembleConstant(Box &value, integer idxInOriginal, integer idxInNormalized)
ALIB_API void AssembleCondFinalize_Q(integer idxInOriginal, integer idxInNormalized)
StdVectorMono< Expression > ctNestedExpressions
VM::Command * commands
The array of commands.
ALIB_API void AssembleFunction(AString &functionName, bool isIdentifier, int qtyArgs, integer idxInOriginal, integer idxInNormalized)
int CountOptimizations() const
ExpressionVal & expression
The expression that this program evaluates.
ALIB_API void AssembleFinalize()
VM::Command & At(VM::PC pc)
ALIB_API void AssembleBinaryOp(String &op, integer idxInOriginal, integer idxInNormalized)
#define ALIB_WARNINGS_RESTORE
#define ALIB_WARNINGS_ALLOW_UNSAFE_BUFFER_USAGE
std::vector< T, SCAMono< T > > StdVectorMono
Type alias in namespace alib.
lang::integer integer
Type alias in namespace alib.
Compile-time information on conditional operator jump positions.
VM::PC QJumpPos
The position of the lhs result.
VM::PC TJumpPos
The position of the jump command between T and F.
CompileStorage(MonoAllocator &compileTimeAllocator)
StdVectorMono< VM::PC > ResultStack
List< MonoAllocator, String > FunctionsWithNonMatchingArguments
StdVectorMono< ConditionalInfo > ConditionalStack
StdVectorMono< VirtualMachine::Command * > Assembly
integer PC
Type definition for a program counter.
static ALIB_API alib::Box Run(Program &program, Scope &scope)