Spicy
Classes | Public Member Functions | Static Public Member Functions | Protected Member Functions | List of all members
hilti::Builder Class Reference

#include <builder.h>

Inheritance diagram for hilti::Builder:
hilti::builder::NodeFactory hilti::ExtendedBuilderTemplate< Builder > spicy::BuilderBase

Public Member Functions

 Builder (ASTContext *ctx)
 
 Builder (ASTContext *context, statement::Block *block)
 
const auto & block () const
 
const Optionsoptions () const
 
auto coerceTo (Expression *e, QualifiedType *t)
 
auto coerceTo (Expression *e, QualifiedType *t, const Meta &m)
 
auto ctorType (UnqualifiedType *t)
 
auto import (const std::string &module, const Meta &m=Meta())
 
auto import (const std::string &module, const std::string &parse_extension, const Meta &m=Meta())
 
auto import (const std::string &module, const std::string &parse_extension, ID search_scope, const Meta &m=Meta())
 
auto local (ID id_, QualifiedType *t, Meta m=Meta())
 
auto local (ID id_, Expression *init, const Meta &m=Meta())
 
auto local (ID id_, QualifiedType *t, Expression *init, Meta m=Meta())
 
auto local (ID id_, QualifiedType *t, Expressions args, Meta m=Meta())
 
auto global (ID id_, QualifiedType *t, declaration::Linkage linkage=declaration::Linkage::Private, Meta m=Meta())
 
auto global (ID id_, Expression *init, declaration::Linkage linkage=declaration::Linkage::Private, const Meta &m=Meta())
 
auto global (ID id_, QualifiedType *t, Expression *init, declaration::Linkage linkage=declaration::Linkage::Private, Meta m=Meta())
 
auto global (ID id_, QualifiedType *t, Expressions args, declaration::Linkage linkage=declaration::Linkage::Private, Meta m=Meta())
 
auto type (ID id, QualifiedType *type, declaration::Linkage linkage=declaration::Linkage::Private, Meta m=Meta())
 
auto type (ID id, QualifiedType *type, AttributeSet *attrs, declaration::Linkage linkage=declaration::Linkage::Private, Meta m=Meta())
 
auto constant (ID id_, Expression *init, declaration::Linkage linkage=declaration::Linkage::Private, Meta m=Meta())
 
auto parameter (ID id, UnqualifiedType *type, parameter::Kind kind=parameter::Kind::In, Meta m=Meta())
 
auto parameter (ID id, UnqualifiedType *type, Expression *default_, parameter::Kind kind=parameter::Kind::In, Meta m=Meta())
 
auto function (const ID &id, QualifiedType *result, const declaration::Parameters &params, type::function::Flavor flavor=type::function::Flavor::Function, declaration::Linkage linkage=declaration::Linkage::Private, type::function::CallingConvention cc=type::function::CallingConvention::Standard, AttributeSet *attrs={}, const Meta &m=Meta())
 
auto function (const ID &id, QualifiedType *result, const declaration::Parameters &params, Statement *body, type::function::Flavor flavor=type::function::Flavor::Function, declaration::Linkage linkage=declaration::Linkage::Private, type::function::CallingConvention cc=type::function::CallingConvention::Standard, AttributeSet *attrs={}, const Meta &m=Meta())
 
auto typeTypeInfo (const Meta &m=Meta())
 
auto id (const ID &id_, const Meta &m=Meta())
 
auto stringMutable (std::string_view s, const Meta &m=Meta())
 
auto stringLiteral (std::string_view s, const Meta &m=Meta())
 
auto bool_ (bool b, const Meta &m=Meta())
 
auto bytes (std::string s, const Meta &m=Meta())
 
auto default_ (UnqualifiedType *t, const Meta &m=Meta())
 
auto default_ (UnqualifiedType *t, const Expressions &type_args, const Meta &m=Meta())
 
auto exception (UnqualifiedType *t, const std::string &msg, const Meta &m=Meta())
 
auto exception (UnqualifiedType *t, Expression *msg, const Meta &m=Meta())
 
auto exception (UnqualifiedType *t, Expression *what, Expression *where, const Meta &m=Meta())
 
auto integer (int i, const Meta &m=Meta())
 
auto integer (int64_t i, const Meta &m=Meta())
 
auto integer (unsigned int i, const Meta &m=Meta())
 
auto integer (uint64_t i, const Meta &m=Meta())
 
auto null (const Meta &m=Meta())
 
auto optional (Expression *e, const Meta &m=Meta())
 
auto optional (QualifiedType *t, const Meta &m=Meta())
 
auto port (hilti::rt::Port p, const Meta &m=Meta())
 
auto regexp (std::string p, AttributeSet *attrs={}, const Meta &m=Meta())
 
auto regexp (hilti::ctor::regexp::Patterns p, AttributeSet *attrs={}, const Meta &m=Meta())
 
auto stream (std::string s, const Meta &m=Meta())
 
auto string (std::string s, bool is_literal, const Meta &m=Meta())
 
auto struct_ (const ctor::struct_::Fields &f, const Meta &m=Meta())
 
auto struct_ (const ctor::struct_::Fields &f, QualifiedType *t, const Meta &m=Meta())
 
auto tuple (const Expressions &v, const Meta &m=Meta())
 
auto vector (const Expressions &v, const Meta &m=Meta())
 
auto vector (QualifiedType *t, const Expressions &v, const Meta &m=Meta())
 
auto vector (QualifiedType *t, const Meta &m=Meta())
 
auto void_ (const Meta &m=Meta())
 
auto strongReference (QualifiedType *t, const Meta &m=Meta())
 
auto weakReference (QualifiedType *t, const Meta &m=Meta())
 
auto valueReference (Expression *e, const Meta &m=Meta())
 
auto add (Expression *target, Expression *index, const Meta &m=Meta())
 
auto and_ (Expression *op0, Expression *op1, const Meta &m=Meta())
 
auto or_ (Expression *op0, Expression *op1, const Meta &m=Meta())
 
auto begin (Expression *e, const Meta &m=Meta())
 
auto cast (Expression *e, QualifiedType *dst, const Meta &m=Meta())
 
auto delete_ (Expression *self, const ID &field, const Meta &m=Meta())
 
auto deref (Expression *e, const Meta &m=Meta())
 
auto end (Expression *e, const Meta &m=Meta())
 
auto call (const ID &id_, const Expressions &v, const Meta &m=Meta())
 
auto index (Expression *value, Expression *index, const Meta &m=Meta())
 
auto size (Expression *op, const Meta &m=Meta())
 
auto modulo (Expression *op1, Expression *op2, const Meta &m=Meta())
 
auto lowerEqual (Expression *op1, Expression *op2, const Meta &m=Meta())
 
auto greaterEqual (Expression *op1, Expression *op2, const Meta &m=Meta())
 
auto lower (Expression *op1, Expression *op2, const Meta &m=Meta())
 
auto greater (Expression *op1, Expression *op2, const Meta &m=Meta())
 
auto equal (Expression *op1, Expression *op2, const Meta &m=Meta())
 
auto unequal (Expression *op1, Expression *op2, const Meta &m=Meta())
 
auto member (Expression *self, const std::string &id_, const Meta &m=Meta())
 
auto hasMember (Expression *self, const std::string &id_, const Meta &m=Meta())
 
auto tryMember (Expression *self, const std::string &id_, const Meta &m=Meta())
 
auto memberCall (Expression *self, const std::string &id_, const Expressions &args={}, const Meta &m=Meta())
 
auto memberCall (Expression *self, const std::string &id_, ctor::Tuple *args, const Meta &m=Meta())
 
auto pack (QualifiedType *type, const Expressions &args, const Meta &m=Meta())
 
auto unpack (QualifiedType *type, const Expressions &args, const Meta &m=Meta())
 
auto unset (Expression *self, const ID &field, const Meta &m=Meta())
 
auto sumAssign (Expression *op1, Expression *op2, const Meta &m=Meta())
 
auto differenceAssign (Expression *op1, Expression *op2, const Meta &m=Meta())
 
auto sum (Expression *op1, Expression *op2, const Meta &m=Meta())
 
auto difference (Expression *op1, Expression *op2, const Meta &m=Meta())
 
auto decrementPostfix (Expression *op, const Meta &m=Meta())
 
auto decrementPrefix (Expression *op, const Meta &m=Meta())
 
auto incrementPostfix (Expression *op, const Meta &m=Meta())
 
auto incrementPrefix (Expression *op, const Meta &m=Meta())
 
auto new_ (UnqualifiedType *t, const Meta &m=Meta())
 
auto new_ (UnqualifiedType *t, const Expressions &args, const Meta &m=Meta())
 
auto division (Expression *op1, Expression *op2, const Meta &m=Meta())
 
auto expression (Ctor *c, const Meta &m=Meta())
 
auto expression (const Location &l)
 
auto expression (const Meta &m)
 
auto grouping (Expression *e, const Meta &m=Meta())
 
auto move (Expression *e, const Meta &m=Meta())
 
auto typeinfo (QualifiedType *t, const Meta &m=Meta())
 
auto typeinfo (Expression *e, const Meta &m=Meta())
 
auto assign (Expression *target, Expression *src, const Meta &m=Meta())
 
auto not_ (Expression *e, const Meta &m=Meta())
 
auto ternary (Expression *cond, Expression *true_, Expression *false_, const Meta &m=Meta())
 
auto conditionTest (Expression *value, Expression *error, const Meta &m=Meta())
 
auto min (Expression *e1, Expression *e2, const Meta &m=Meta())
 
auto max (Expression *e1, Expression *e2, const Meta &m=Meta())
 
auto namedCtor (const std::string &name, const Expressions &args, const Meta &m=Meta())
 
auto scope (const Meta &m=Meta())
 
ExpressionaddTmp (const std::string &prefix, Expression *init)
 
ExpressionaddTmp (const std::string &prefix, QualifiedType *t, const Expressions &args={})
 
ExpressionaddTmp (const std::string &prefix, QualifiedType *t, Expression *init)
 
ExpressionaddTmp (const std::string &prefix, UnqualifiedType *t, const Expressions &args={})
 
ExpressionaddTmp (const std::string &prefix, UnqualifiedType *t, Expression *init)
 
void addLocal (ID id, QualifiedType *t, Meta m=Meta())
 
void addLocal (ID id, Expression *init, const Meta &m=Meta())
 
void addLocal (ID id, QualifiedType *t, Expression *init, Meta m=Meta())
 
void addLocal (ID id, QualifiedType *t, std::vector< hilti::Expression * > args, Meta m=Meta())
 
void addExpression (Expression *expr)
 
void addAssert (Expression *cond, std::string_view msg, Meta m=Meta())
 
void addAssign (Expression *dst, Expression *src, const Meta &m=Meta())
 
void addSumAssign (Expression *dst, Expression *src, const Meta &m=Meta())
 
void addAssign (const ID &dst, Expression *src, const Meta &m=Meta())
 
void addBreak (Meta m=Meta())
 
void addContinue (Meta m=Meta())
 
void addSumAssign (const ID &dst, Expression *src, const Meta &m=Meta())
 
void addCall (const ID &id, const Expressions &v, const Meta &m=Meta())
 
void addMemberCall (Expression *self, const ID &id, const Expressions &v, const Meta &m=Meta())
 
void addComment (std::string comment, hilti::statement::comment::Separator separator=hilti::statement::comment::Separator::Before, const Meta &m=Meta())
 
void addReturn (Expression *e, Meta m=Meta())
 
void addReturn (Ctor *c, const Meta &m=Meta())
 
void addReturn (Meta m=Meta())
 
void addThrow (Expression *excpt, Meta m=Meta())
 
void addRethrow (Meta m=Meta())
 
void addDebugMsg (std::string_view stream, std::string_view fmt, Expressions args={})
 
void addDebugIndent (std::string_view stream)
 
void addDebugDedent (std::string_view stream)
 
void addPrint (const Expressions &exprs)
 
void addPrint (Expression *expr)
 
void setLocation (const Location &l)
 
bool empty () const
 
ExpressionstartProfiler (std::string_view name, Expression *size=nullptr)
 
void stopProfiler (Expression *profiler, Expression *size=nullptr)
 
- Public Member Functions inherited from hilti::builder::NodeFactory
 NodeFactory (ASTContext *context)
 
ASTContextcontext () const
 
auto attribute (const hilti::attribute::Kind &kind, Expression *v, const Meta &m=Meta())
 
auto attribute (const hilti::attribute::Kind &kind, const Meta &m=Meta())
 
auto attributeSet (const Attributes &attrs={}, Meta m=Meta())
 
auto ctorAddress (hilti::rt::Address v, const Meta &meta={})
 
auto ctorBitfield (const ctor::bitfield::BitRanges &bits, QualifiedType *type, const Meta &m=Meta())
 
auto ctorBitfieldBitRange (const ID &id, Expression *expr, Meta meta=Meta())
 
auto ctorBool (bool v, const Meta &meta={})
 
auto ctorBytes (std::string value, const Meta &meta={})
 
auto ctorCoerced (Ctor *orig, Ctor *new_, Meta meta={})
 
auto ctorDefault (UnqualifiedType *type, const Expressions &type_args, const Meta &meta={})
 
auto ctorDefault (UnqualifiedType *type, const Meta &meta={})
 
auto ctorEnum (type::enum_::Label *label, const Meta &meta={})
 
auto ctorError (std::string v, const Meta &meta={})
 
auto ctorException (UnqualifiedType *type, Expression *value, Expression *location, const Meta &meta={})
 
auto ctorException (UnqualifiedType *type, Expression *value, const Meta &meta={})
 
auto ctorInterval (hilti::rt::Interval v, const Meta &meta={})
 
auto ctorLibrary (Ctor *ctor, QualifiedType *type, const Meta &meta={})
 
auto ctorList (const Expressions &exprs, Meta meta={})
 
auto ctorList (QualifiedType *etype, const Expressions &exprs, Meta meta={})
 
auto ctorMap (QualifiedType *key, QualifiedType *value, const ctor::map::Elements &elements, Meta meta={})
 
auto ctorMap (const ctor::map::Elements &elements, Meta meta={})
 
auto ctorMapElement (Expression *key, Expression *value, Meta meta={})
 
auto ctorNetwork (hilti::rt::Network v, const Meta &meta={})
 
auto ctorNull (const Meta &meta={})
 
auto ctorOptional (Expression *expr, const Meta &meta={})
 
auto ctorOptional (QualifiedType *type, const Meta &meta={})
 
auto ctorPort (hilti::rt::Port v, const Meta &meta={})
 
auto ctorReal (double v, const Meta &meta={})
 
auto ctorRegExp (hilti::ctor::regexp::Patterns v, AttributeSet *attrs=nullptr, const Meta &meta={})
 
auto ctorResult (Expression *expr, const Meta &meta={})
 
auto ctorResult (QualifiedType *type, const Meta &meta={})
 
auto ctorSet (const Expressions &exprs, Meta meta={})
 
auto ctorSet (QualifiedType *etype, const Expressions &exprs, Meta meta={})
 
auto ctorSignedInteger (int64_t value, unsigned int width, const Meta &meta={})
 
auto ctorStream (std::string value, const Meta &meta={})
 
auto ctorString (std::string value, bool is_literal, const Meta &meta={})
 
auto ctorStrongReference (QualifiedType *t, const Meta &meta={})
 
auto ctorStruct (const ctor::struct_::Fields &fields, QualifiedType *t, Meta meta={})
 
auto ctorStruct (const ctor::struct_::Fields &fields, const Meta &meta={})
 
auto ctorStructField (ID id, Expression *expr, Meta meta={})
 
auto ctorTime (hilti::rt::Time v, const Meta &meta={})
 
auto ctorTuple (const Expressions &exprs, Meta meta={})
 
auto ctorUnion (QualifiedType *type, Expression *value, Meta meta={})
 
auto ctorUnsignedInteger (uint64_t value, unsigned int width, const Meta &meta={})
 
auto ctorUnsignedInteger (uint64_t value, unsigned int width, UnqualifiedType *t, Meta meta={})
 
auto ctorValueReference (Expression *expr, Meta meta={})
 
auto ctorVector (const Expressions &exprs, Meta meta={})
 
auto ctorVector (QualifiedType *etype, const Expressions &exprs, Meta meta={})
 
auto ctorWeakReference (QualifiedType *t, const Meta &meta={})
 
auto declarationConstant (ID id, Expression *value, declaration::Linkage linkage=declaration::Linkage::Private, Meta meta={})
 
auto declarationConstant (ID id, QualifiedType *type, Expression *value, declaration::Linkage linkage=declaration::Linkage::Private, Meta meta={})
 
auto declarationExpression (ID id, Expression *expr, AttributeSet *attrs, declaration::Linkage linkage, Meta meta={})
 
auto declarationExpression (ID id, Expression *expr, declaration::Linkage linkage, Meta meta={})
 
auto declarationField (ID id, type::Function *ftype, AttributeSet *attrs, Meta meta={})
 
auto declarationField (ID id, QualifiedType *type, AttributeSet *attrs, Meta meta={})
 
auto declarationField (const ID &id, Function *inline_func, AttributeSet *attrs, Meta meta={})
 
auto declarationFunction (hilti::Function *function, declaration::Linkage linkage=declaration::Linkage::Private, Meta meta={})
 
auto declarationGlobalVariable (ID id, Expression *init, declaration::Linkage linkage=declaration::Linkage::Private, const Meta &meta={})
 
auto declarationGlobalVariable (ID id, QualifiedType *type, Expression *init=nullptr, declaration::Linkage linkage=declaration::Linkage::Private, Meta meta={})
 
auto declarationGlobalVariable (ID id, QualifiedType *type, Expressions args, Expression *init=nullptr, declaration::Linkage linkage=declaration::Linkage::Private, Meta meta={})
 
auto declarationGlobalVariable (ID id, QualifiedType *type, declaration::Linkage linkage=declaration::Linkage::Private, Meta meta={})
 
auto declarationGlobalVariable (ID id, declaration::Linkage linkage=declaration::Linkage::Private, const Meta &meta={})
 
auto declarationImportedModule (ID id, const std::string &parse_extension, ID search_scope, Meta meta={})
 
auto declarationImportedModule (ID id, const std::string &parse_extension, Meta meta={})
 
auto declarationImportedModule (ID id, hilti::rt::filesystem::path path, Meta meta={})
 
auto declarationLocalVariable (ID id, Expression *init, const Meta &meta={})
 
auto declarationLocalVariable (ID id, const Meta &meta={})
 
auto declarationLocalVariable (ID id, QualifiedType *type, Expression *init, Meta meta={})
 
auto declarationLocalVariable (ID id, QualifiedType *type, Expressions args, Expression *init=nullptr, Meta meta={})
 
auto declarationLocalVariable (ID id, QualifiedType *type, Meta meta={})
 
auto declarationModule (const declaration::module::UID &uid, const ID &scope={}, Meta meta={})
 
auto declarationModule (const declaration::module::UID &uid, const ID &scope, const Declarations &decls, const Statements &stmts, Meta meta={})
 
auto declarationModule (const declaration::module::UID &uid, const ID &scope, const Declarations &decls, Meta meta={})
 
auto declarationParameter (ID id, UnqualifiedType *type, parameter::Kind kind, hilti::Expression *default_, AttributeSet *attrs, Meta meta={})
 
auto declarationParameter (ID id, UnqualifiedType *type, parameter::Kind kind, hilti::Expression *default_, bool is_type_param, AttributeSet *attrs, Meta meta={})
 
auto declarationProperty (ID id, Meta meta={})
 
auto declarationProperty (ID id, Expression *expr, Meta meta={})
 
auto declarationType (ID id, QualifiedType *type, AttributeSet *attrs, declaration::Linkage linkage=declaration::Linkage::Private, Meta meta={})
 
auto declarationType (ID id, QualifiedType *type, declaration::Linkage linkage=declaration::Linkage::Private, Meta meta={})
 
auto expressionAssign (Expression *target, Expression *src, Meta meta={})
 
auto expressionBuiltInFunction (const std::string &name, const std::string &cxxname, QualifiedType *type, const type::function::Parameters &parameters, const Expressions &arguments, Meta meta={})
 
auto expressionCoerced (Expression *expr, QualifiedType *target, Meta meta={})
 
auto expressionCtor (Ctor *ctor, Meta meta={})
 
auto expressionGrouping (Expression *expr, Meta meta={})
 
auto expressionKeyword (expression::keyword::Kind kind, const Meta &meta={})
 
auto expressionKeyword (expression::keyword::Kind kind, QualifiedType *type, Meta meta={})
 
auto expressionListComprehension (Expression *input, Expression *output, const ID &id, Expression *cond, Meta meta={})
 
auto expressionLogicalAnd (Expression *op0, Expression *op1, const Meta &meta={})
 
auto expressionLogicalNot (Expression *expression, const Meta &meta={})
 
auto expressionLogicalOr (Expression *op0, Expression *op1, const Meta &meta={})
 
auto expressionMember (QualifiedType *member_type, const hilti::ID &id, Meta meta={})
 
auto expressionMember (const hilti::ID &id, const Meta &meta={})
 
auto expressionMove (Expression *expression, Meta meta={})
 
auto expressionName (const hilti::ID &id, const Meta &meta={})
 
auto expressionConditionTest (Expression *cond, Expression *error, Meta meta={})
 
auto expressionPendingCoerced (Expression *expr, QualifiedType *type, Meta meta={})
 
auto expressionTernary (Expression *cond, Expression *true_, Expression *false_, Meta meta={})
 
auto expressionType (QualifiedType *type, const Meta &meta={})
 
auto expressionTypeInfo (Expression *expr, Meta meta={})
 
auto expressionTypeWrapped (Expression *expr, QualifiedType *type, Meta meta={})
 
auto expressionUnresolvedOperator (operator_::Kind kind, Expressions operands, const Meta &meta={})
 
auto expressionUnresolvedOperator (operator_::Kind kind, hilti::node::Range< Expression > operands, const Meta &meta={})
 
auto expressionVoid (const Meta &meta={})
 
auto function (const ID &id, type::Function *ftype, Statement *body, AttributeSet *attrs=nullptr, const Meta &meta={})
 
auto qualifiedType (UnqualifiedType *t, Constness const_, Meta m=Meta())
 
auto qualifiedType (UnqualifiedType *t, Constness const_, Side side, const Meta &m=Meta())
 
auto statementAssert (Expression *expr, Expression *msg=nullptr, Meta meta={})
 
auto statementAssert (statement::assert::Exception _unused, Expression *expr, UnqualifiedType *excpt, Expression *msg=nullptr, Meta meta={})
 
auto statementBlock (const Meta &meta={})
 
auto statementBlock (const Statements &stmts, Meta meta={})
 
auto statementBreak (Meta meta={})
 
auto statementComment (std::string comment, statement::comment::Separator separator=statement::comment::Separator::Before, Meta meta={})
 
auto statementContinue (Meta meta={})
 
auto statementDeclaration (hilti::Declaration *d, Meta meta={})
 
auto statementExpression (Expression *e, Meta meta={})
 
auto statementFor (const hilti::ID &id, Expression *seq, Statement *body, Meta meta={})
 
auto statementIf (Declaration *init, Expression *cond, Statement *true_, Statement *false_, Meta meta={})
 
auto statementIf (Expression *cond, Statement *true_, Statement *false_, Meta meta={})
 
auto statementReturn (Meta meta={})
 
auto statementReturn (Expression *expr, Meta meta={})
 
auto statementSetLocation (Expression *expr, Meta meta={})
 
auto statementSwitch (Declaration *cond, const statement::switch_::Cases &cases, Meta meta={})
 
auto statementSwitch (Expression *cond, const statement::switch_::Cases &cases, Meta meta={})
 
auto statementSwitchCase (Expression *expr, Statement *body, Meta meta={})
 
auto statementSwitchCase (const Expressions &exprs, Statement *body, Meta meta={})
 
auto statementSwitchCase (statement::switch_::Default _unused, Statement *body, Meta meta={})
 
auto statementThrow (Meta meta={})
 
auto statementThrow (Expression *expr, Meta meta={})
 
auto statementTry (Statement *body, const statement::try_::Catches &catches, Meta meta={})
 
auto statementTryCatch (Declaration *param, Statement *body, Meta meta={})
 
auto statementTryCatch (Statement *body, Meta meta={})
 
auto statementWhile (Declaration *init, Expression *cond, Statement *body, Statement *else_=nullptr, Meta meta={})
 
auto statementWhile (Expression *cond, Statement *body, Meta meta={})
 
auto statementWhile (Expression *cond, Statement *body, Statement *else_=nullptr, Meta meta={})
 
auto statementYield (Meta meta={})
 
auto typeAddress (const Meta &m=Meta())
 
auto typeAny (Meta m=Meta())
 
auto typeAuto (const Meta &m=Meta())
 
auto typeBitfield (int width, const type::bitfield::BitRanges &bits, AttributeSet *attrs, const Meta &m=Meta())
 
auto typeBitfield (type::Wildcard _, const Meta &m=Meta())
 
auto typeBitfieldBitRange (const ID &id, int lower, int upper, int field_width, AttributeSet *attrs={}, Expression *ctor_value=nullptr, Meta meta=Meta())
 
auto typeBitfieldBitRange (const ID &id, int lower, int upper, int field_width, AttributeSet *attrs={}, Meta meta=Meta())
 
auto typeBool (Meta meta={})
 
auto typeBytes (const Meta &meta={})
 
auto typeBytesIterator (Meta meta={})
 
auto typeDocOnly (const std::string &description, Meta meta={})
 
auto typeEnum (type::Wildcard _, const Meta &m=Meta())
 
auto typeEnum (type::enum_::Labels labels, Meta meta={})
 
auto typeEnumLabel (const ID &id, Meta meta={})
 
auto typeEnumLabel (const ID &id, int value, Meta meta={})
 
auto typeError (Meta meta={})
 
auto typeException (Meta meta={})
 
auto typeException (UnqualifiedType *base, Meta meta={})
 
auto typeException (type::Wildcard _, const Meta &m=Meta())
 
auto typeFunction (QualifiedType *result, const declaration::Parameters &params, type::function::Flavor flavor=type::function::Flavor::Function, type::function::CallingConvention cc=type::function::CallingConvention::Standard, Meta meta={})
 
auto typeFunction (type::Wildcard _, const Meta &m=Meta())
 
auto typeInterval (Meta meta={})
 
auto typeLibrary (std::string cxx_name, Meta meta={})
 
auto typeLibrary (Constness const_, std::string cxx_name, Meta meta={})
 
auto typeList (QualifiedType *t, const Meta &meta={})
 
auto typeList (type::Wildcard _, const Meta &m=Meta())
 
auto typeListIterator (QualifiedType *etype, Meta meta={})
 
auto typeListIterator (type::Wildcard _, const Meta &m=Meta())
 
auto typeMap (QualifiedType *ktype, QualifiedType *vtype, const Meta &meta={})
 
auto typeMap (type::Wildcard _, const Meta &m=Meta())
 
auto typeMapIterator (QualifiedType *ktype, QualifiedType *vtype, const Meta &meta={})
 
auto typeMapIterator (type::Wildcard _, const Meta &meta=Meta())
 
auto typeMember (const ID &id, Meta meta={})
 
auto typeMember (type::Wildcard _, const Meta &m=Meta())
 
auto typeName (const ID &id, Meta meta={})
 
auto typeNetwork (Meta meta={})
 
auto typeNull (Meta meta={})
 
auto typeOperandList (type::Wildcard _, const Meta &m=Meta())
 
auto typeOperandList (type::operand_list::Operands operands, Meta meta={})
 
auto typeOperandListOperand (ID id, parameter::Kind kind, UnqualifiedType *type, bool optional=false, std::string doc="", Meta meta={})
 
auto typeOperandListOperand (ID id, parameter::Kind kind, UnqualifiedType *type, Expression *default_, bool optional, std::string doc="", Meta meta={})
 
auto typeOperandListOperand (ID id, parameter::Kind kind, UnqualifiedType *type, Expression *default_, std::string doc="", Meta meta={})
 
auto typeOperandListOperand (parameter::Kind kind, UnqualifiedType *type, bool optional=false, std::string doc="", Meta meta={})
 
auto typeOptional (QualifiedType *t, Meta m=Meta())
 
auto typeOptional (type::Wildcard _, const Meta &m=Meta())
 
auto typePort (Meta meta={})
 
auto typeReal (Meta meta={})
 
auto typeRegExp (Meta meta={})
 
auto typeResult (QualifiedType *t, Meta m=Meta())
 
auto typeResult (type::Wildcard _, const Meta &m=Meta())
 
auto typeSet (QualifiedType *t, const Meta &meta={})
 
auto typeSet (type::Wildcard _, const Meta &m=Meta())
 
auto typeSetIterator (QualifiedType *etype, Meta meta={})
 
auto typeSetIterator (type::Wildcard _, const Meta &m=Meta())
 
auto typeSignedInteger (type::Wildcard _, const Meta &m=Meta())
 
auto typeSignedInteger (unsigned int width, const Meta &m=Meta())
 
auto typeStream (const Meta &meta={})
 
auto typeStreamIterator (Meta meta={})
 
auto typeStreamView (const Meta &meta={})
 
auto typeString (Meta meta={})
 
auto typeStrongReference (QualifiedType *type, Meta meta={})
 
auto typeStrongReference (type::Wildcard _, const Meta &m=Meta())
 
auto typeStruct (const Declarations &fields, Meta meta={})
 
auto typeStruct (const declaration::Parameters &params, const Declarations &fields, Meta meta={})
 
auto typeStruct (type::Struct::AnonymousStruct _, const Declarations &fields, Meta meta={})
 
auto typeStruct (type::Wildcard _, Meta meta={})
 
auto typeTime (Meta meta={})
 
auto typeTuple (const QualifiedTypes &types, Meta meta={})
 
auto typeTuple (type::Wildcard _, const Meta &m=Meta())
 
auto typeTuple (const type::tuple::Elements &elements, Meta meta={})
 
auto typeTupleElement (ID id, QualifiedType *type, Meta meta={})
 
auto typeTupleElement (QualifiedType *type, Meta meta={})
 
auto typeType (QualifiedType *type, Meta meta={})
 
auto typeType (type::Wildcard _, const Meta &m=Meta())
 
auto typeUnion (const Declarations &fields, Meta meta={})
 
auto typeUnion (const declaration::Parameters &params, const Declarations &fields, Meta meta={})
 
auto typeUnion (type::Union::AnonymousUnion _, const Declarations &fields, Meta meta={})
 
auto typeUnion (type::Wildcard _, Meta meta={})
 
auto typeUnknown (Meta meta={})
 
auto typeUnsignedInteger (type::Wildcard _, const Meta &m=Meta())
 
auto typeUnsignedInteger (unsigned int width, const Meta &m=Meta())
 
auto typeValueReference (QualifiedType *type, Meta meta={})
 
auto typeValueReference (type::Wildcard _, const Meta &m=Meta())
 
auto typeVector (QualifiedType *t, const Meta &meta={})
 
auto typeVector (type::Wildcard _, const Meta &m=Meta())
 
auto typeVectorIterator (QualifiedType *etype, Meta meta={})
 
auto typeVectorIterator (type::Wildcard _, const Meta &m=Meta())
 
auto typeVoid (Meta meta={})
 
auto typeWeakReference (QualifiedType *type, Meta meta={})
 
auto typeWeakReference (type::Wildcard _, const Meta &m=Meta())
 

Static Public Member Functions

template<typename... Params>
static auto parameters (Params &&... params)
 

Protected Member Functions

 Builder (Builder *parent)
 

Detailed Description

Builder wrapping an AST context to provide convenience factory methods for AST nodes.

There are two types of factory methods:

  1. All create() methods of any Node-derived class gets a corresponding method inside the builder that simply forwards all arguments, just adding the builder's AST context. This allows the caller to use an existing builder without needing to worry about the context parameter that all the create() method need. All the forwarding methods are defined in the auto-generated builder::NodeFactory base class.
  2. Additional convenience methods constructing nodes that don't have a direct 1-to-1 equivalent in any create() method, including creating entire subtrees of nodes at once. These methods are defined directly in the Builder class.

Constructor & Destructor Documentation

◆ Builder() [1/2]

hilti::Builder::Builder ( ASTContext ctx)
inline

Constructs a builder that will use a given context.

◆ Builder() [2/2]

hilti::Builder::Builder ( ASTContext context,
statement::Block block 
)
inline

Construct a builder that adds any flow-level nodes to a given pre-existing block.

Member Function Documentation

◆ block()

const auto& hilti::Builder::block ( ) const
inline

Returns the current block associated with the builder for creating flow-level nodes, or null if none.

◆ coerceTo() [1/2]

auto hilti::Builder::coerceTo ( Expression e,
QualifiedType t 
)
inline

Expresses the coercion of an expression into a target type. Note that the coercion will not be immediately performed, but just recorded to perform later during AST resolving. This version associated the source expressions meta data with the coercion.

◆ coerceTo() [2/2]

auto hilti::Builder::coerceTo ( Expression e,
QualifiedType t,
const Meta m 
)
inline

Expresses the coercion of an expression into a target type. Note that the coercion will not be immediately performed, but just recorded to perform later during AST resolving. This version associated custom meta data with the coercion.

◆ ctorType()

auto hilti::Builder::ctorType ( UnqualifiedType t)
inline

Constructs a node representing the main node for constructor call operator.

◆ options()

const Options & Builder::options ( ) const

Shortcut to retrieve compiler options from the AST context.


The documentation for this class was generated from the following files: