8#ifndef HPP_ALIB_EXPRESSIONS_COMPILERPLUGIN
9#define HPP_ALIB_EXPRESSIONS_COMPILERPLUGIN
17namespace alib {
namespace expressions {
185 ,
ArgsEnd ( scope.Stack->end() )
251 return *(
ArgsBegin +
static_cast<ptrdiff_t
>( no ) );
285 String& op ,
bool argIsConst )
354 String& op,
bool lhsIsConst,
bool rhsIsConst)
456 String& op,
bool isConst,
bool rhsIsConst )
590 { (void) ciAutoCast;
return false; }
Plugin(PrioritiesType pPriority)
StdVectorMono< Box >::iterator ArgIterator
Box(*)(Scope &scope, ArgIterator argsBegin, ArgIterator argsEnd) CallbackDecl
strings::TString< character > String
Type alias in namespace alib.
characters::nchar nchar
Type alias in namespace alib.
String ReverseCastFunctionName
CIAutoCast(Scope &scope, MonoAllocator &compileTimeAllocator, String &op, bool isConst, bool rhsIsConst)
bool RhsIsConst
Input: denotes if rhs argument is constant value.
const nchar * DbgCallbackNameRhs
String ReverseCastFunctionNameRhs
String & Operator
Input/Output: The binary operator symbol.
bool LhsIsConst
Input: Denotes if the lhs-argument is a constant value.
bool RhsIsConst
Input: Denotes if the rhs-argument is a constant value.
bool NonConstArgIsResult
Output: Used with optimization, see this struct's documentation for more information.
CIBinaryOp(Scope &scope, MonoAllocator &compileTimeAllocator, String &op, bool lhsIsConst, bool rhsIsConst)
CIFunction(Scope &scope, MonoAllocator &compileTimeAllocator, AString &name, bool isIdentifier, bool argsAreConst, List< MonoAllocator, String > &hints)
void AddFunctionsWithNonMatchingArguments(const String &signature)
List< MonoAllocator, String > & FunctionsWithNonMatchingArguments
AString & Name
Input: The identifier name to search.
CIUnaryOp(Scope &scope, MonoAllocator &compileTimeAllocator, String &op, bool argIsConst)
String & Operator
Input/Output: The unary operator.
const nchar * DbgCallbackName
CompilationInfo(Scope &scope, MonoAllocator &allocator)
MonoAllocator & CompileTimeAllocator
CallbackDecl Callback
Output: The native C++ callback function to be set by one of the plug-ins.
virtual bool TryCompilation(CIAutoCast &ciAutoCast)
virtual bool TryCompilation(CIBinaryOp &ciBinaryOp)
CompilerPlugin(const NString &name, Compiler &compiler, CompilePriorities pPriority)
Compiler & Cmplr
The compiler that this plug-in is attached to.
virtual bool TryCompilation(CIUnaryOp &ciUnaryOp)
virtual bool TryCompilation(CIFunction &ciFunction)
virtual ~CompilerPlugin()
Virtual destructor.