8#ifndef HPP_ALIB_EXPRESSIONS_COMPILERPLUGIN
9#define HPP_ALIB_EXPRESSIONS_COMPILERPLUGIN
11#ifndef HPP_ALIB_EXPRESSIONS_EXPRESSIONS
15#ifndef HPP_ALIB_EXPRESSIONS_SCOPE
19#ifndef HPP_ALIB_EXPRESSIONS_COMPILER
23#if !defined (HPP_ALIB_MONOMEM_LIST)
27#if !defined (HPP_ALIB_MONOMEM_MASTRING)
31namespace alib {
namespace expressions {
219 ,
ArgsEnd ( scope.Stack.end() )
299 return *(
ArgsBegin +
static_cast<ptrdiff_t
>( no ) );
340 String& op ,
bool argIsConst )
411 String& op,
bool lhsIsConst,
bool rhsIsConst)
658 { (void) ciAutoCast;
return false; }
strings::TString< TChar > EmplaceString(const strings::TString< TChar > &src)
std::vector< Box >::iterator ArgIterator
Box(*)(Scope &scope, ArgIterator argsBegin, ArgIterator argsEnd) CallbackDecl
characters::nchar nchar
Type alias in namespace alib.
String ReverseCastFunctionName
CIAutoCast(Scope &scope, MonoAllocator &compileTimeAllocator, String &op, bool isConst, bool rhsIsConst)
const nchar * DbgCallbackNameRhs
String ReverseCastFunctionNameRhs
String & Operator
Input/Output: The binary operator symbol.
CIBinaryOp(Scope &scope, MonoAllocator &compileTimeAllocator, String &op, bool lhsIsConst, bool rhsIsConst)
List< String > & FunctionsWithNonMatchingArguments
void AddFunctionsWithNonMatchingArguments(const String &signature)
CIFunction(Scope &scope, MonoAllocator &compileTimeAllocator, AString &name, bool noParentheses, bool argsAreConst, List< String > &hints)
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
virtual bool TryCompilation(CIAutoCast &ciAutoCast)
virtual bool TryCompilation(CIBinaryOp &ciBinaryOp)
virtual bool TryCompilation(CIUnaryOp &ciUnaryOp)
CompilerPlugin(const NString &name, Compiler &compiler)
virtual bool TryCompilation(CIFunction &ciFunction)
virtual ~CompilerPlugin()