Classes | Namespaces | Macros | Typedefs | Enumerations
ECExpressions.h File Reference
#include "ECInstanceIterable.h"
#include "ECInstance.h"

Go to the source code of this file.

Classes

struct  ExpressionContext
 The context in which an expression is evaluated. More...
 
struct  InstanceListExpressionContext
 A context in which multiple IECInstances provide the context for expression evaluation. More...
 
struct  InstanceExpressionContext
 An InstanceListExpressionContext which simply wraps one or more IECInstances. More...
 
struct  SymbolExpressionContext
 A context which provides a set of symbols for expression evaluation. More...
 
struct  Symbol
 Base class for all symbol types. More...
 
struct  ContextSymbol
 Used to give a name to an instance. More...
 
struct  MethodSymbol
 Used to introduce a named method into the context. More...
 
struct  ValueSymbol
 Used to introduce a named value into the context. More...
 
struct  NodeVisitor
 Visitor interface for an in-order traversal of the Nodes of an ECExpression tree. More...
 
struct  ECEvaluator
 Parses an EC expression string to produce an expression tree which can be used to evaluate the expression. More...
 
struct  ValueResult
 Holds the result of evaluating an EC expression. More...
 
struct  ExpressionResolver
 An object which can optimize an ECExpression tree by resolving constant sub-expressions to literal values, or perform other optimizations. More...
 
struct  Node
 Defines an expression tree for a parsed EC expression. More...
 

Namespaces

 Bentley
 The Bentley namespace contains types defined by the Bentley Library.
 
 Bentley::ECN
 

Macros

#define EXPR_TYPEDEFS(_name_)
 

Typedefs

typedef ArgumentTreeNode * ArgumentTreeNodeP
 
typedef ArgumentTreeNode & ArgumentTreeNodeR
 
typedef ArgumentTreeNode const * ArgumentTreeNodeCP
 
typedef ArgumentTreeNode const & ArgumentTreeNodeCR
 
typedef ArithmeticNode * ArithmeticNodeP
 
typedef ArithmeticNode & ArithmeticNodeR
 
typedef ArithmeticNode const * ArithmeticNodeCP
 
typedef ArithmeticNode const & ArithmeticNodeCR
 
typedef UnitSpecNode * UnitSpecNodeP
 
typedef UnitSpecNode & UnitSpecNodeR
 
typedef UnitSpecNode const * UnitSpecNodeCP
 
typedef UnitSpecNode const & UnitSpecNodeCR
 
typedef BinaryNode * BinaryNodeP
 
typedef BinaryNode & BinaryNodeR
 
typedef BinaryNode const * BinaryNodeCP
 
typedef BinaryNode const & BinaryNodeCR
 
typedef CallNode * CallNodeP
 
typedef CallNode & CallNodeR
 
typedef CallNode const * CallNodeCP
 
typedef CallNode const & CallNodeCR
 
typedef LambdaNode * LambdaNodeP
 
typedef LambdaNode & LambdaNodeR
 
typedef LambdaNode const * LambdaNodeCP
 
typedef LambdaNode const & LambdaNodeCR
 
typedef ComparisonNode * ComparisonNodeP
 
typedef ComparisonNode & ComparisonNodeR
 
typedef ComparisonNode const * ComparisonNodeCP
 
typedef ComparisonNode const & ComparisonNodeCR
 
typedef ConcatenateNode * ConcatenateNodeP
 
typedef ConcatenateNode & ConcatenateNodeR
 
typedef ConcatenateNode const * ConcatenateNodeCP
 
typedef ConcatenateNode const & ConcatenateNodeCR
 
typedef ContextSymbol * ContextSymbolP
 
typedef ContextSymbol & ContextSymbolR
 
typedef ContextSymbol const * ContextSymbolCP
 
typedef ContextSymbol const & ContextSymbolCR
 
typedef CustomSymbol * CustomSymbolP
 
typedef CustomSymbol & CustomSymbolR
 
typedef CustomSymbol const * CustomSymbolCP
 
typedef CustomSymbol const & CustomSymbolCR
 
typedef DivideNode * DivideNodeP
 
typedef DivideNode & DivideNodeR
 
typedef DivideNode const * DivideNodeCP
 
typedef DivideNode const & DivideNodeCR
 
typedef DotNode * DotNodeP
 
typedef DotNode & DotNodeR
 
typedef DotNode const * DotNodeCP
 
typedef DotNode const & DotNodeCR
 
typedef ErrorNode * ErrorNodeP
 
typedef ErrorNode & ErrorNodeR
 
typedef ErrorNode const * ErrorNodeCP
 
typedef ErrorNode const & ErrorNodeCR
 
typedef EvaluationResult * EvaluationResultP
 
typedef EvaluationResult & EvaluationResultR
 
typedef EvaluationResult const * EvaluationResultCP
 
typedef EvaluationResult const & EvaluationResultCR
 
typedef ExpressionContext * ExpressionContextP
 
typedef ExpressionContext & ExpressionContextR
 
typedef ExpressionContext const * ExpressionContextCP
 
typedef ExpressionContext const & ExpressionContextCR
 
typedef ExpressionResolver * ExpressionResolverP
 
typedef ExpressionResolver & ExpressionResolverR
 
typedef ExpressionResolver const * ExpressionResolverCP
 
typedef ExpressionResolver const & ExpressionResolverCR
 
typedef ExpressionType * ExpressionTypeP
 
typedef ExpressionType & ExpressionTypeR
 
typedef ExpressionType const * ExpressionTypeCP
 
typedef ExpressionType const & ExpressionTypeCR
 
typedef IValueListResult * IValueListResultP
 
typedef IValueListResult & IValueListResultR
 
typedef IValueListResult const * IValueListResultCP
 
typedef IValueListResult const & IValueListResultCR
 
typedef LambdaValue * LambdaValueP
 
typedef LambdaValue & LambdaValueR
 
typedef LambdaValue const * LambdaValueCP
 
typedef LambdaValue const & LambdaValueCR
 
typedef IdentNode * IdentNodeP
 
typedef IdentNode & IdentNodeR
 
typedef IdentNode const * IdentNodeCP
 
typedef IdentNode const & IdentNodeCR
 
typedef IIfNode * IIfNodeP
 
typedef IIfNode & IIfNodeR
 
typedef IIfNode const * IIfNodeCP
 
typedef IIfNode const & IIfNodeCR
 
typedef
InstanceListExpressionContext * 
InstanceListExpressionContextP
 
typedef
InstanceListExpressionContext & 
InstanceListExpressionContextR
 
typedef
InstanceListExpressionContext
const * 
InstanceListExpressionContextCP
 
typedef
InstanceListExpressionContext
const & 
InstanceListExpressionContextCR
 
typedef InstanceExpressionContext * InstanceExpressionContextP
 
typedef InstanceExpressionContext & InstanceExpressionContextR
 
typedef
InstanceExpressionContext
const * 
InstanceExpressionContextCP
 
typedef
InstanceExpressionContext
const & 
InstanceExpressionContextCR
 
typedef LBracketNode * LBracketNodeP
 
typedef LBracketNode & LBracketNodeR
 
typedef LBracketNode const * LBracketNodeCP
 
typedef LBracketNode const & LBracketNodeCR
 
typedef Lexer * LexerP
 
typedef Lexer & LexerR
 
typedef Lexer const * LexerCP
 
typedef Lexer const & LexerCR
 
typedef LogicalNode * LogicalNodeP
 
typedef LogicalNode & LogicalNodeR
 
typedef LogicalNode const * LogicalNodeCP
 
typedef LogicalNode const & LogicalNodeCR
 
typedef MethodReference * MethodReferenceP
 
typedef MethodReference & MethodReferenceR
 
typedef MethodReference const * MethodReferenceCP
 
typedef MethodReference const & MethodReferenceCR
 
typedef MethodSymbol * MethodSymbolP
 
typedef MethodSymbol & MethodSymbolR
 
typedef MethodSymbol const * MethodSymbolCP
 
typedef MethodSymbol const & MethodSymbolCR
 
typedef MultiplyNode * MultiplyNodeP
 
typedef MultiplyNode & MultiplyNodeR
 
typedef MultiplyNode const * MultiplyNodeCP
 
typedef MultiplyNode const & MultiplyNodeCR
 
typedef Node * NodeP
 
typedef Node & NodeR
 
typedef Node const * NodeCP
 
typedef Node const & NodeCR
 
typedef NodeVisitor * NodeVisitorP
 
typedef NodeVisitor & NodeVisitorR
 
typedef NodeVisitor const * NodeVisitorCP
 
typedef NodeVisitor const & NodeVisitorCR
 
typedef PlusMinusNode * PlusMinusNodeP
 
typedef PlusMinusNode & PlusMinusNodeR
 
typedef PlusMinusNode const * PlusMinusNodeCP
 
typedef PlusMinusNode const & PlusMinusNodeCR
 
typedef PrimaryListNode * PrimaryListNodeP
 
typedef PrimaryListNode & PrimaryListNodeR
 
typedef PrimaryListNode const * PrimaryListNodeCP
 
typedef PrimaryListNode const & PrimaryListNodeCR
 
typedef ReferenceResult * ReferenceResultP
 
typedef ReferenceResult & ReferenceResultR
 
typedef ReferenceResult const * ReferenceResultCP
 
typedef ReferenceResult const & ReferenceResultCR
 
typedef ResolvedTypeNode * ResolvedTypeNodeP
 
typedef ResolvedTypeNode & ResolvedTypeNodeR
 
typedef ResolvedTypeNode const * ResolvedTypeNodeCP
 
typedef ResolvedTypeNode const & ResolvedTypeNodeCR
 
typedef ShiftNode * ShiftNodeP
 
typedef ShiftNode & ShiftNodeR
 
typedef ShiftNode const * ShiftNodeCP
 
typedef ShiftNode const & ShiftNodeCR
 
typedef Symbol * SymbolP
 
typedef Symbol & SymbolR
 
typedef Symbol const * SymbolCP
 
typedef Symbol const & SymbolCR
 
typedef SymbolExpressionContext * SymbolExpressionContextP
 
typedef SymbolExpressionContext & SymbolExpressionContextR
 
typedef
SymbolExpressionContext const * 
SymbolExpressionContextCP
 
typedef
SymbolExpressionContext const & 
SymbolExpressionContextCR
 
typedef UnaryArithmeticNode * UnaryArithmeticNodeP
 
typedef UnaryArithmeticNode & UnaryArithmeticNodeR
 
typedef UnaryArithmeticNode const * UnaryArithmeticNodeCP
 
typedef UnaryArithmeticNode const & UnaryArithmeticNodeCR
 
typedef ValueResult * ValueResultP
 
typedef ValueResult & ValueResultR
 
typedef ValueResult const * ValueResultCP
 
typedef ValueResult const & ValueResultCR
 
typedef ValueSymbol * ValueSymbolP
 
typedef ValueSymbol & ValueSymbolR
 
typedef ValueSymbol const * ValueSymbolCP
 
typedef ValueSymbol const & ValueSymbolCR
 
typedef IECSymbolProvider * IECSymbolProviderP
 
typedef IECSymbolProvider & IECSymbolProviderR
 
typedef IECSymbolProvider const * IECSymbolProviderCP
 
typedef IECSymbolProvider const & IECSymbolProviderCR
 
typedef RefCountedPtr
< ArgumentTreeNode > 
ArgumentTreeNodePtr
 
typedef RefCountedPtr< CallNode > CallNodePtr
 
typedef RefCountedPtr< LambdaNode > LambdaNodePtr
 
typedef RefCountedPtr
< ContextSymbol > 
ContextSymbolPtr
 
typedef RefCountedPtr< DotNode > DotNodePtr
 
typedef RefCountedPtr< ErrorNode > ErrorNodePtr
 
typedef RefCountedPtr
< ExpressionType > 
ExpressionTypePtr
 
typedef RefCountedPtr
< IValueListResult > 
IValueListResultPtr
 
typedef RefCountedPtr
< LambdaValue > 
LambdaValuePtr
 
typedef RefCountedPtr
< ExpressionContext > 
ExpressionContextPtr
 
typedef RefCountedPtr< IdentNode > IdentNodePtr
 
typedef RefCountedPtr
< UnitSpecNode > 
UnitSpecNodePtr
 
typedef RefCountedPtr
< InstanceListExpressionContext > 
InstanceListExpressionContextPtr
 
typedef RefCountedPtr
< InstanceExpressionContext > 
InstanceExpressionContextPtr
 
typedef RefCountedPtr
< LBracketNode > 
LBracketNodePtr
 
typedef RefCountedPtr< Lexer > LexerPtr
 
typedef RefCountedPtr
< MethodReference > 
MethodReferencePtr
 
typedef RefCountedPtr
< MethodSymbol > 
MethodSymbolPtr
 
typedef RefCountedPtr< Node > NodePtr
 
typedef RefCountedPtr
< PrimaryListNode > 
PrimaryListNodePtr
 
typedef RefCountedPtr
< ResolvedTypeNode > 
ResolvedTypeNodePtr
 
typedef RefCountedPtr< Symbol > SymbolPtr
 
typedef RefCountedPtr
< SymbolExpressionContext > 
SymbolExpressionContextPtr
 
typedef RefCountedPtr
< ValueResult > 
ValueResultPtr
 
typedef RefCountedPtr
< ValueSymbol > 
ValueSymbolPtr
 
typedef bvector< NodeP > NodeVector
 
typedef bvector< NodeCP > NodeCPVector
 
typedef NodeVector::iterator NodeVectorIterator
 
typedef bvector< NodePtr > NodePtrVector
 
typedef NodePtrVector::iterator NodePtrVectorIterator
 
typedef bvector< EvaluationResult > EvaluationResultVector
 
typedef
EvaluationResultVector::iterator 
EvaluationResultVectorIterator
 
typedef ExpressionStatus(* ExpressionStaticMethod_t )(EvaluationResult &evalResult, EvaluationResultVector &arguments)
 
typedef ExpressionStatus(* ExpressionInstanceMethod_t )(EvaluationResult &evalResult, ECInstanceListCR instanceList, EvaluationResultVector &arguments)
 
typedef ExpressionStatus(* ExpressionValueListMethod_t )(EvaluationResult &evalResult, IValueListResultCR valueList, EvaluationResultVector &arguments)
 

Enumerations

enum  ExpressionToken {
  TOKEN_None = 0, TOKEN_Null = 16, TOKEN_True = 17, TOKEN_False = 18,
  TOKEN_Like = 19, TOKEN_Is = 20, TOKEN_Star = 40, TOKEN_Plus = 41,
  TOKEN_Minus = 42, TOKEN_Slash = 43, TOKEN_Comma = 44, TOKEN_IntegerDivide = 45,
  TOKEN_LParen = 46, TOKEN_RParen = 47, TOKEN_Exponentiation = 48, TOKEN_And = 50,
  TOKEN_AndAlso = 51, TOKEN_Or = 52, TOKEN_OrElse = 53, TOKEN_Concatenate = 54,
  TOKEN_Mod = 55, TOKEN_ShiftLeft = 56, TOKEN_ShiftRight = 57, TOKEN_Colon = 58,
  TOKEN_LessEqual = 59, TOKEN_GreaterEqual = 60, TOKEN_Less = 61, TOKEN_Greater = 62,
  TOKEN_Equal = 63, TOKEN_NotEqual = 64, TOKEN_Not = 65, TOKEN_Xor = 66,
  TOKEN_UnsignedShiftRight = 68, TOKEN_LeftBracket = 69, TOKEN_RightBracket = 70, TOKEN_Dot = 71,
  TOKEN_IIf = 72, TOKEN_LCurly = 73, TOKEN_RCurly = 74, TOKEN_If = 75,
  TOKEN_Else = 76, TOKEN_ElseIf = 77, TOKEN_Select = 78, TOKEN_End = 79,
  TOKEN_EndIf = 80, TOKEN_Lambda = 85, TOKEN_DoubleColon = 100, TOKEN_Error = 181,
  TOKEN_Ident = 182, TOKEN_StringConst = 183, TOKEN_PointConst = 184, TOKEN_DateTimeConst = 185,
  TOKEN_IntegerConstant = 187, TOKEN_HexConstant = 188, TOKEN_FloatConst = 189, TOKEN_UnitsConst = 190,
  TOKEN_Unrecognized = 200, TOKEN_BadNumber = 201, TOKEN_BadOctalNumber = 202, TOKEN_BadHexNumber = 203,
  TOKEN_BadFloatingPointNumber = 204, TOKEN_UnterminatedString = 205, TOKEN_PrimaryList = 206
}
 

Macro Definition Documentation

#define EXPR_TYPEDEFS (   _name_)
Value:
BEGIN_BENTLEY_ECOBJECT_NAMESPACE \
struct _name_; \
typedef _name_ * _name_##P; \
typedef _name_ & _name_##R; \
typedef _name_ const* _name_##CP; \
typedef _name_ const& _name_##CR; \
#define END_BENTLEY_ECOBJECT_NAMESPACE
Definition: DgnPlatform.h:41

Copyright © 2017 Bentley Systems, Incorporated. All rights reserved.