ALib C++ Library
Library Version: 2402 R1
Documentation generated by doxygen
No Matches
CompilerPlugin::CIFunction Struct Reference


Info struct for compiling expression identifiers and functions. This struct is used with method TryCompilation(CIFunction&) to provide information to derived compiler plug-ins, as well as to receive information back.

Definition at line 228 of file compilerplugin.hpp.

#include <compilerplugin.hpp>

Inheritance diagram for CompilerPlugin::CIFunction:
Collaboration diagram for CompilerPlugin::CIFunction:

Public Field Index:

bool AllArgsAreConst
List< String > & FunctionsWithNonMatchingArguments
bool NoParentheses
- Public Field Index: inherited from CompilerPlugin::CompilationInfo
ArgIterator ArgsBegin
ArgIterator ArgsEnd
CallbackDecl Callback = nullptr
const ncharDbgCallbackName = nullptr
Box TypeOrValue = nullptr

Public Method Index:

 CIFunction (Scope &scope, MonoAllocator &compileTimeAllocator, AString &name, bool noParentheses, bool argsAreConst, List< String > &hints)
void AddFunctionsWithNonMatchingArguments (const String &signature)
BoxArg (size_t no)
size_t QtyArgs ()
- Public Method Index: inherited from CompilerPlugin::CompilationInfo
 CompilationInfo (Scope &scope, MonoAllocator &allocator)

Field Details:

◆ AllArgsAreConst

bool AllArgsAreConst

Input: Denotes if all arguments provided are constant values. Operator callbacks that do not use context information from the scope, should calculate the then constant result and return this value instead of the callback method. (Compile-time optimization.)

Definition at line 248 of file compilerplugin.hpp.

◆ FunctionsWithNonMatchingArguments

List<String>& FunctionsWithNonMatchingArguments

A plug-in may add names of functions that matched, while the arguments did not. This will be stored in the details of a potential exception, if no other plug-in compiles this function and may be displayed to the end-user.

To add entries here, convenience method AddFunctionsWithNonMatchingArguments is provided.

Definition at line 258 of file compilerplugin.hpp.

◆ Name

AString& Name

Input: The identifier name to search.

Definition at line 233 of file compilerplugin.hpp.

◆ NoParentheses

bool NoParentheses

Input: If the function was given as a pure "identifier" this flag is true.

See also
See also flag AllowOmittingParenthesesOfParameterlessFunctions of field
See also alib::expressions::Compiler::CfgCompilation. "Compiler::CfgCompilation." .

Definition at line 241 of file compilerplugin.hpp.

Constructor(s) / Destructor Details::

◆ CIFunction()

CIFunction ( Scope & scope,
MonoAllocator & compileTimeAllocator,
AString & name,
bool noParentheses,
bool argsAreConst,
List< String > & hints )


scopePassed to parent.
compileTimeAllocatorPassed to parent.
nameStored in Name.
noParenthesesStored in NoParentheses.
argsAreConstPassed to AllArgsAreConst.
hintsStored in FunctionsWithNonMatchingArguments.

Definition at line 269 of file compilerplugin.hpp.

Method Details:

◆ AddFunctionsWithNonMatchingArguments()

void AddFunctionsWithNonMatchingArguments ( const String & signature)

Convenience method that adds creates a monotonically allocated copy of the given string and adds it to list FunctionsWithNonMatchingArguments.

signatureThe function signature to add.

Definition at line 308 of file compilerplugin.hpp.

Here is the call graph for this function:

◆ Arg()

Box & Arg ( size_t no)

Returns the argument number no .

noThe number of the argument requested.
A reference to the requested argument.

Definition at line 297 of file compilerplugin.hpp.

◆ QtyArgs()

size_t QtyArgs ( )

Returns the number of arguments given.

The number of arguments the function call requested.

Definition at line 287 of file compilerplugin.hpp.

The documentation for this struct was generated from the following file: