Classes | Macros | Typedefs | Enumerations

ECObjects is a set of abstractions for working with engineering/business data and metadata. More...

Classes

struct  ECSchemaReadContext
 Context object used for schema creation and deserialization. More...
 
struct  ECInstanceReadContext
 Context object used for instance creation and deserialization. More...
 
struct  PropertyLayout
 
struct  ClassLayout
 
struct  SchemaLayout
 
struct  ECDBuffer
 Base class for ECN::IECInstance implementations that get/set values from a block of memory, e.g. More...
 
struct  ECEnabler
 An ECEnabler is the interface between an ECClass and an ECInstance. More...
 
struct  IECRelationshipEnabler
 Base class for all relationship enablers. More...
 
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...
 
struct  ICustomECStructSerializer
 Interface for a custom ECStruct Serializer. More...
 
struct  CustomStructSerializerManager
 Used to manage multiple custom struct serializers. More...
 
struct  IECInstance
 An IECInstance represents an instance of an ECClass. More...
 
struct  IECRelationshipInstance
 ECN::IECRelationshipInstance is an instance of an ECRelationshipClass and represents the relationship between two IECInstances. More...
 
struct  IInstanceCollectionIteratorAdapter< value_type >
 This is the iterator that is exposed using VirtualCollectionIterator. More...
 
struct  IInstanceCollectionAdapter< value_type >
 A container collection which allows you to expose different kinds of collection as a single type. More...
 
struct  ECInstanceIterable
 typical usage for (ECInstanceIterable::const_iterator iter = collection.begin(); iter != collection.end(); ++iter) { IECInstanceP instance = *iter; } More...
 
struct  ECRelationshipIterable
 typical usage for (ECRelationshipIterable::const_iterator iter = collection.begin(); iter != collection.end(); ++iter) { IECRelationshipInstanceP instance = *iter; } More...
 
struct  IECProvider
 
struct  ECNameValidation
 Handles validation, encoding, and decoding of names for ECSchemas, ECClasses, and ECProperties. More...
 
struct  ECTypeDescriptor
 Used to represent the type of an ECProperty. More...
 
struct  IECCustomAttributeContainer
 Interface adopted by a container object which can hold custom attributes, such as those associated with an ECProperty, ECSchema, or ECClass. More...
 
struct  ECCustomAttributeInstanceIterable
 Iterates over the custom attribute instances in a container. More...
 
struct  IECTypeAdapterContext
 Base class for an object which provides the context for an IECTypeAdapter. More...
 
struct  IECTypeAdapter
 Base class for an object which adapts the internal value of an ECProperty to a user-friendly string representation. More...
 
struct  ECProperty
 The in-memory representation of an ECProperty as defined by ECSchemaXML. More...
 
struct  PrimitiveECProperty
 The in-memory representation of an ECProperty as defined by ECSchemaXML. More...
 
struct  StructECProperty
 The in-memory representation of an ECProperty as defined by ECSchemaXML. More...
 
struct  ArrayECProperty
 The in-memory representation of an ECProperty as defined by ECSchemaXML. More...
 
struct  ECPropertyIterable
 Container holding ECProperties that supports STL like iteration. More...
 
struct  ECClass
 The in-memory representation of an ECClass as defined by ECSchemaXML. More...
 
struct  RelationshipCardinality
 This class describes the cardinality of a relationship. More...
 
struct  ECRelationshipConstraint
 The in-memory representation of the source and target constraints for an ECRelationshipClass as defined by ECSchemaXML. More...
 
struct  ECRelationshipClass
 The in-memory representation of a relationship class as defined by ECSchemaXML. More...
 
struct  SchemaKey
 Fully defines a schema with its name, major and minor versions, and a checksum. More...
 
struct  SchemaKeyMatch< MatchType >
 Determines whether two SchemaKeys match. More...
 
struct  SchemaKeyLessThan< MatchType >
 Determines whether one SchemaKey is less than the other. More...
 
struct  SchemaKeyMatchPredicate
 
struct  SchemaNameClassNamePair
 
struct  QualifiedECAccessor
 Identifies an ECProperty by schema name, class name, and access string. More...
 
struct  SchemaMapExact
 
struct  ECClassContainer
 Supports STL like iterator of classes in a schema. More...
 
struct  IStandaloneEnablerLocater
 Interface to find a standalone enabler, typically for an embedded ECStruct in an ECInstance. More...
 
struct  IECSchemaLocater
 Interface implemented by class that provides schema location services. More...
 
struct  ECSchemaCache
 An object that controls the lifetime of a set of ECSchemas. More...
 
struct  ECSchema
 The in-memory representation of a schema as defined by ECSchemaXML. More...
 
struct  ArrayInfo
 Information about an array in an ECN::IECInstance. More...
 
struct  ECValue
 Variant-like object used to set and retrieve property values in ECInstances. More...
 
struct  ECValueAccessor
 A structure used for describing the complete location of an ECValue within an ECInstance. More...
 
struct  ECPropertyValue
 Relates an ECProperty with an ECValue. More...
 
struct  ECValuesCollectionIterator
 An iterator over the ECPropertyValues contained in an ECValuesCollection. More...
 
struct  ECValuesCollection
 A collection of all ECPropertyValues contained in an IECInstance or an ECPropertyValue. More...
 
struct  PresentationMetadataHelper
 Helper object used to apply metadata to ECSchemas, ECClasses, and ECProperties used to control how they are presented in the UI. More...
 
struct  OrderIdEntries
 Used to set the orderIds of a relationship upon persistence two IECInstances. More...
 
struct  StandaloneECRelationshipInstance
 StandaloneECRelationshipInstance is used to represent a relationship between two IECInstances. More...
 
struct  StandaloneECRelationshipEnabler
 ECEnabler for Standalone ECRelationshipInstances (IECInstances not tied to a specific persistent store) More...
 
struct  DateTimeInfo
 DateTimeInfo contains the meta data held by the custom attribute DateTimeInfo on an ECProperty of type DgnPlatform::PRIMITIVETYPE_DateTime. More...
 
struct  StandardCustomAttributeHelper
 StandardCustomAttributeHelper provides APIs to access items of the Bentley standard schemas. More...
 
struct  SupplementalSchemaMetaData
 Used to store the information from the SupplementalSchemaMetaData custom attribute. More...
 
struct  SupplementedSchemaBuilder
 The SupplementedSchemaBuilder merges ECCustomAttributes from multiple schemas into one combined Schema. More...
 
struct  SupplementalSchemaInfo
 Container for information about supplemental schemas. More...
 

Macros

#define INVALID_PROPERTY_INDEX   0;
 

Typedefs

typedef RefCountedPtr
< ECSchemaReadContext > 
ECSchemaReadContextPtr
 
typedef RefCountedPtr
< ECInstanceReadContext > 
ECInstanceReadContextPtr
 
typedef RefCountedPtr
< ClassLayout > 
ClassLayoutPtr
 
typedef bvector< ClassLayoutPtr > ClassLayoutVector
 
typedef RefCountedPtr
< StandaloneECEnabler
StandaloneECEnablerPtr
 
typedef RefCountedPtr< ECEnablerECEnablerPtr
 
typedef RefCountedPtr
< StandaloneECRelationshipInstance
StandaloneECRelationshipInstancePtr
 
typedef bmap< WString,
ICustomECStructSerializerP > 
NameSerializerMap
 
typedef RefCountedPtr
< IECInstance > 
IECInstancePtr
 
typedef RefCountedPtr
< IECRelationshipInstance > 
IECRelationshipInstancePtr
 
typedef bvector< IECInstancePtr > ECInstanceList
 
typedef ECInstanceList * ECInstanceListP
 
typedef ECInstanceList & ECInstanceListR
 
typedef ECInstanceList const * ECInstanceListCP
 
typedef ECInstanceList const & ECInstanceListCR
 
typedef
ECN::IInstanceCollectionAdapter
< IECInstanceP const > 
IECInstanceCollectionAdapter
 
typedef RefCountedPtr
< IECInstanceCollectionAdapter
IECInstanceCollectionAdapterPtr
 
typedef
ECN::IInstanceCollectionIteratorAdapter
< IECInstanceP const > 
IECInstanceCollectionIteratorAdapter
 
typedef
ECN::IInstanceCollectionAdapter
< IECRelationshipInstanceP
const > 
IECRelationshipCollectionAdapter
 
typedef RefCountedPtr
< IECRelationshipCollectionAdapter
IECRelationshipCollectionAdapterPtr
 
typedef
ECN::IInstanceCollectionIteratorAdapter
< IECRelationshipInstanceP
const > 
IECRelationshipCollectionIteratorAdapter
 
typedef struct IStream * IStreamP
 
typedef enum
Bentley::ECN::ECErrorCategories 
ECErrorCategories
 Error code categories. More...
 
typedef int64_t ECClassId
 
typedef int64_t ECPropertyId
 
typedef int64_t ECSchemaId
 
typedef bvector< IECInstancePtr > ECCustomAttributeCollection
 
typedef RefCountedPtr
< IECTypeAdapterContext
IECTypeAdapterContextPtr
 
typedef bvector< ECClassP > ECBaseClassesList
 
typedef bvector< ECClassP > ECDerivedClassesList
 
typedef bvector< ECClassP > ECConstraintClassesList
 
typedef RefCountedPtr
< StandaloneECEnabler
StandaloneECEnablerPtr
 
typedef StandaloneECEnablerStandaloneECEnablerP
 
typedef RefCountedPtr< ECSchemaECSchemaPtr
 
typedef RefCountedPtr
< SearchPathSchemaFileLocater > 
SearchPathSchemaFileLocaterPtr
 
typedef RefCountedPtr
< ECRelationshipClass
ECRelationshipClassPtr
 
typedef bmap< SchemaKey,
ECSchemaPtr
SchemaMap
 
typedef bvector
< QualifiedECAccessor
QualifiedECAccessorList
 
typedef
QualifiedECAccessorList const & 
QualifiedECAccessorListCR
 
typedef SchemaMapExact ECSchemaReferenceList
 
typedef const
ECSchemaReferenceList
ECSchemaReferenceListCR
 
typedef RefCountedPtr
< ECSchemaCache
ECSchemaCachePtr
 
typedef RefCountedPtr
< SupplementalSchemaInfo
SupplementalSchemaInfoPtr
 

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
}
 
enum  ECErrorCategories {
  ECOBJECTS_ERROR_BASE = 0x31000, SCHEMA_READ_STATUS_BASE = 0x32000, SCHEMA_WRITE_STATUS_BASE = 0x33000, INSTANCE_READ_STATUS_BASE = 0x34000,
  INSTANCE_WRITE_STATUS_BASE = 0x35000, SUPPLEMENTED_SCHEMA_STATUS_BASE = 0x36000
}
 Error code categories. More...
 
enum  ECObjectsStatus {
  ECOBJECTS_STATUS_Success = SUCCESS, ECOBJECTS_STATUS_PropertyNotFound = ECOBJECTS_ERROR_BASE + 0x01, ECOBJECTS_STATUS_DataTypeMismatch = ECOBJECTS_ERROR_BASE + 0x02, ECOBJECTS_STATUS_ECInstanceImplementationNotSupported = ECOBJECTS_ERROR_BASE + 0x03,
  ECOBJECTS_STATUS_InvalidPropertyAccessString = ECOBJECTS_ERROR_BASE + 0x04, ECOBJECTS_STATUS_IndexOutOfRange = ECOBJECTS_ERROR_BASE + 0x05, ECOBJECTS_STATUS_ECClassNotSupported = ECOBJECTS_ERROR_BASE + 0x06, ECOBJECTS_STATUS_ECSchemaNotSupported = ECOBJECTS_ERROR_BASE + 0x07,
  ECOBJECTS_STATUS_AccessStringDisagreesWithNIndices = ECOBJECTS_ERROR_BASE + 0x08, ECOBJECTS_STATUS_EnablerNotFound = ECOBJECTS_ERROR_BASE + 0x09, ECOBJECTS_STATUS_OperationNotSupported = ECOBJECTS_ERROR_BASE + 0x0A, ECOBJECTS_STATUS_ParseError = ECOBJECTS_ERROR_BASE + 0x0B,
  ECOBJECTS_STATUS_NamedItemAlreadyExists = ECOBJECTS_ERROR_BASE + 0x0C, ECOBJECTS_STATUS_PreconditionViolated = ECOBJECTS_ERROR_BASE + 0x0D, ECOBJECTS_STATUS_SchemaNotFound = ECOBJECTS_ERROR_BASE + 0x0E, ECOBJECTS_STATUS_ClassNotFound = ECOBJECTS_ERROR_BASE + 0x0F,
  ECOBJECTS_STATUS_BaseClassUnacceptable = ECOBJECTS_ERROR_BASE + 0x10, ECOBJECTS_STATUS_SchemaInUse = ECOBJECTS_ERROR_BASE + 0x11, ECOBJECTS_STATUS_InvalidName = ECOBJECTS_ERROR_BASE + 0x12, ECOBJECTS_STATUS_DataTypeNotSupported = ECOBJECTS_ERROR_BASE + 0x13,
  ECOBJECTS_STATUS_UnableToAllocateMemory = ECOBJECTS_ERROR_BASE + 0x14, ECOBJECTS_STATUS_MemoryBoundsOverrun = ECOBJECTS_ERROR_BASE + 0x15, ECOBJECTS_STATUS_NullPointerValue = ECOBJECTS_ERROR_BASE + 0x16, ECOBJECTS_STATUS_NotCustomAttributeClass = ECOBJECTS_ERROR_BASE + 0x17,
  ECOBJECTS_STATUS_DuplicateSchema = ECOBJECTS_ERROR_BASE + 0x18, ECOBJECTS_STATUS_UnableToSetReadOnlyInstance = ECOBJECTS_ERROR_BASE + 0x19, ECOBJECTS_STATUS_UnableToSetReadOnlyProperty = ECOBJECTS_ERROR_BASE + 0x1A, ECOBJECTS_STATUS_ArrayIndexDoesNotExist = ECOBJECTS_ERROR_BASE + 0x1B,
  ECOBJECTS_STATUS_PropertyValueMatchesNoChange = ECOBJECTS_ERROR_BASE + 0x1C, ECOBJECTS_STATUS_NoChildProperties = ECOBJECTS_ERROR_BASE + 0x1D, ECOBJECTS_STATUS_UnableToAllocateManagedMemory = ECOBJECTS_ERROR_BASE + 0x1E, ECOBJECTS_STATUS_MemoryAllocationCallbackRequired = ECOBJECTS_ERROR_BASE + 0x1F,
  ECOBJECTS_STATUS_UnableToAddStructArrayMember = ECOBJECTS_ERROR_BASE + 0x20, ECOBJECTS_STATUS_UnableToSetStructArrayMemberInstance = ECOBJECTS_ERROR_BASE + 0x21, ECOBJECTS_STATUS_UnableToGetStructArrayMemberInstance = ECOBJECTS_ERROR_BASE + 0x22, ECOBJECTS_STATUS_InvalidIndexForPerPropertyFlag = ECOBJECTS_ERROR_BASE + 0x23,
  ECOBJECTS_STATUS_SchemaHasReferenceCycle = ECOBJECTS_ERROR_BASE + 0x24, ECOBJECTS_STATUS_SchemaNotSupplemented = ECOBJECTS_ERROR_BASE + 0x25, ECOBJECTS_STATUS_UnableToQueryForNullPropertyFlag = ECOBJECTS_ERROR_BASE + 0x26, ECOBJECTS_STATUS_UnableToResizeFixedSizedArray = ECOBJECTS_ERROR_BASE + 0x27,
  ECOBJECTS_STATUS_SchemaIsImmutable = ECOBJECTS_ERROR_BASE + 0x28, ECOBJECTS_STATUS_Error = ECOBJECTS_ERROR_BASE + 0xFFF
}
 General purpose result codes. More...
 
enum  SchemaReadStatus {
  SCHEMA_READ_STATUS_Success = SUCCESS, SCHEMA_READ_STATUS_FailedToParseXml = SCHEMA_READ_STATUS_BASE + 0x02, SCHEMA_READ_STATUS_InvalidECSchemaXml = SCHEMA_READ_STATUS_BASE + 0x03, SCHEMA_READ_STATUS_ReferencedSchemaNotFound = SCHEMA_READ_STATUS_BASE + 0x04,
  SCHEMA_READ_STATUS_DuplicateSchema = SCHEMA_READ_STATUS_BASE + 0x05, SCHEMA_READ_STATUS_InvalidPrimitiveType = SCHEMA_READ_STATUS_BASE + 0x06, SCHEMA_READ_STATUS_HasReferenceCycle = SCHEMA_READ_STATUS_BASE + 0x07
}
 Result status for deserializing an ECSchema from Xml. More...
 
enum  SchemaWriteStatus { SCHEMA_WRITE_STATUS_Success = SUCCESS, SCHEMA_WRITE_STATUS_FailedToSaveXml = SCHEMA_WRITE_STATUS_BASE + 0x01, SCHEMA_WRITE_STATUS_FailedToCreateXml = SCHEMA_WRITE_STATUS_BASE + 0x02, SCHEMA_WRITE_STATUS_FailedToWriteFile = SCHEMA_WRITE_STATUS_BASE + 0x03 }
 Result status for serializing an ECSchema to Xml. More...
 
enum  InstanceReadStatus {
  INSTANCE_READ_STATUS_Success = 0, INSTANCE_READ_STATUS_FileNotFound = INSTANCE_READ_STATUS_BASE + 1, INSTANCE_READ_STATUS_CantCreateStream = INSTANCE_READ_STATUS_BASE + 2, INSTANCE_READ_STATUS_CantCreateXmlReader = INSTANCE_READ_STATUS_BASE + 3,
  INSTANCE_READ_STATUS_CantSetStream = INSTANCE_READ_STATUS_BASE + 4, INSTANCE_READ_STATUS_NoElementName = INSTANCE_READ_STATUS_BASE + 5, INSTANCE_READ_STATUS_BadElement = INSTANCE_READ_STATUS_BASE + 6, INSTANCE_READ_STATUS_UnexpectedElement = INSTANCE_READ_STATUS_BASE + 7,
  INSTANCE_READ_STATUS_EmptyElement = INSTANCE_READ_STATUS_BASE + 8, INSTANCE_READ_STATUS_EndElementDoesntMatch = INSTANCE_READ_STATUS_BASE + 9, INSTANCE_READ_STATUS_XmlFileIncomplete = INSTANCE_READ_STATUS_BASE + 10, INSTANCE_READ_STATUS_XmlParseError = INSTANCE_READ_STATUS_BASE + 20,
  INSTANCE_READ_STATUS_ECClassNotFound = INSTANCE_READ_STATUS_BASE + 30, INSTANCE_READ_STATUS_BadECProperty = INSTANCE_READ_STATUS_BASE + 31, INSTANCE_READ_STATUS_BadPrimitivePropertyType = INSTANCE_READ_STATUS_BASE + 32, INSTANCE_READ_STATUS_BadBinaryData = INSTANCE_READ_STATUS_BASE + 33,
  INSTANCE_READ_STATUS_BadTimeValue = INSTANCE_READ_STATUS_BASE + 34, INSTANCE_READ_STATUS_BadDoubleValue = INSTANCE_READ_STATUS_BASE + 35, INSTANCE_READ_STATUS_BadIntegerValue = INSTANCE_READ_STATUS_BASE + 36, INSTANCE_READ_STATUS_BadLongValue = INSTANCE_READ_STATUS_BASE + 37,
  INSTANCE_READ_STATUS_BadPoint2dValue = INSTANCE_READ_STATUS_BASE + 38, INSTANCE_READ_STATUS_BadPoint3dValue = INSTANCE_READ_STATUS_BASE + 39, INSTANCE_READ_STATUS_BadArrayElement = INSTANCE_READ_STATUS_BASE + 40, INSTANCE_READ_STATUS_TypeMismatch = INSTANCE_READ_STATUS_BASE + 41,
  INSTANCE_READ_STATUS_CantSetValue = INSTANCE_READ_STATUS_BASE + 42, INSTANCE_READ_STATUS_ECSchemaNotFound = INSTANCE_READ_STATUS_BASE + 43, INSTANCE_READ_STATUS_UnableToGetStandaloneEnabler = INSTANCE_READ_STATUS_BASE + 44, INSTANCE_READ_STATUS_CommentOnly = INSTANCE_READ_STATUS_BASE + 45,
  INSTANCE_READ_STATUS_PropertyNotFound = INSTANCE_READ_STATUS_BASE + 46
}
 Result status of deserializing an IECInstance from Xml. More...
 
enum  InstanceWriteStatus {
  INSTANCE_WRITE_STATUS_Success = 0, INSTANCE_WRITE_STATUS_CantCreateStream = INSTANCE_WRITE_STATUS_BASE + 1, INSTANCE_WRITE_STATUS_CantCreateXmlWriter = INSTANCE_WRITE_STATUS_BASE + 3, INSTANCE_WRITE_STATUS_CantSetStream = INSTANCE_WRITE_STATUS_BASE + 4,
  INSTANCE_WRITE_STATUS_XmlWriteError = INSTANCE_WRITE_STATUS_BASE + 5, INSTANCE_WRITE_STATUS_CantReadFromStream = INSTANCE_WRITE_STATUS_BASE + 6, INSTANCE_WRITE_STATUS_FailedToWriteFile = INSTANCE_WRITE_STATUS_BASE + 7, INSTANCE_WRITE_STATUS_BadPrimitivePropertyType = INSTANCE_WRITE_STATUS_BASE + 30
}
 Result status of writing an IECInstance to Xml. More...
 
enum  SupplementedSchemaStatus {
  SUPPLEMENTED_SCHEMA_STATUS_Success = 0, SUPPLEMENTED_SCHEMA_STATUS_Metadata_Missing = SUPPLEMENTED_SCHEMA_STATUS_BASE + 1, SUPPLEMENTED_SCHEMA_STATUS_Duplicate_Precedence_Error = SUPPLEMENTED_SCHEMA_STATUS_BASE + 2, SUPPLEMENTED_SCHEMA_STATUS_IECRelationship_Not_Allowed = SUPPLEMENTED_SCHEMA_STATUS_BASE + 3,
  SUPPLEMENTED_SCHEMA_STATUS_SchemaMergeException = SUPPLEMENTED_SCHEMA_STATUS_BASE + 4, SUPPLEMENTED_SCHEMA_STATUS_SupplementalClassHasBaseClass = SUPPLEMENTED_SCHEMA_STATUS_BASE + 5
}
 Result status of trying to supplement an ECSchema. More...
 
enum  EvaluationOptions { EVALOPT_Legacy = 0, EVALOPT_SuppressTypeConversions = 1 << 0, EVALOPT_EnforceUnits = (1 << 1) | EVALOPT_SuppressTypeConversions, EVALOPT_EnforceGlobalRepresentation = (1 << 2) }
 Options to be used when evaluating an ECExpression. More...
 
enum  ValueKind : unsigned short { VALUEKIND_Uninitialized = 0x00, VALUEKIND_Primitive = 0x01, VALUEKIND_Struct = 0x02, VALUEKIND_Array = 0x04 }
 Represents the classification of the data type of an ECValue. More...
 
enum  ArrayKind : unsigned short { ARRAYKIND_Primitive = 0x01, ARRAYKIND_Struct = 0x02 }
 Represents the classification of the data type of an EC array element. More...
 
enum  PrimitiveType : unsigned short {
  PRIMITIVETYPE_Binary = 0x101, PRIMITIVETYPE_Boolean = 0x201, PRIMITIVETYPE_DateTime = 0x301, PRIMITIVETYPE_Double = 0x401,
  PRIMITIVETYPE_Integer = 0x501, PRIMITIVETYPE_Long = 0x601, PRIMITIVETYPE_Point2D = 0x701, PRIMITIVETYPE_Point3D = 0x801,
  PRIMITIVETYPE_String = 0x901, PRIMITIVETYPE_IGeometry = 0xa01
}
 Enumeration of primitive datatypes supported by native "ECObjects" implementation. More...
 
enum  ExpressionStatus {
  ExprStatus_Success = 0, ExprStatus_UnknownError = 1, ExprStatus_UnknownMember = 2, ExprStatus_PrimitiveRequired = 3,
  ExprStatus_StructRequired = 4, ExprStatus_ArrayRequired = 5, ExprStatus_UnknownSymbol = 6, ExprStatus_DotNotSupported = 7,
  ExprStatus_NotImpl = 8, ExprStatus_NeedsLValue = 9, ExprStatus_WrongType = 10, ExprStatus_IncompatibleTypes = 11,
  ExprStatus_MethodRequired = 12, ExprStatus_InstanceMethodRequired = 13, ExprStatus_StaticMethodRequired = 14, ExprStatus_InvalidTypesForDivision = 15,
  ExprStatus_DivideByZero = 16, ExprStatus_WrongNumberOfArguments = 17, ExprStatus_IndexOutOfRange = 18, ExprStatus_IncompatibleUnits = 19
}
 Enumerates the possible return values for evaluating an expression or its value. More...
 
enum  OrderIdStorageMode : uint8_t { ORDERIDSTORAGEMODE_None = 0, ORDERIDSTORAGEMODE_ProvidedByPersistence = 1, ORDERIDSTORAGEMODE_ProvidedByClient = 2 }
 Used to define how the relationship OrderId is handled. More...
 
enum  ECRelationshipEnd { ECRelationshipEnd_Source = 0, ECRelationshipEnd_Target }
 Used to define which end of the relationship, source or target. More...
 
enum  ECRelatedInstanceDirection { STRENGTHDIRECTION_Forward = 1, STRENGTHDIRECTION_Backward = 2 }
 Used to describe the direction of a related instance within the context of an IECRelationshipInstance. More...
 
enum  StrengthType { STRENGTHTYPE_Referencing, STRENGTHTYPE_Holding, STRENGTHTYPE_Embedding }
 The various strengths supported on a relationship class. More...
 
enum  SchemaMatchType { SCHEMAMATCHTYPE_Identical = 0, SCHEMAMATCHTYPE_Exact = 1, SCHEMAMATCHTYPE_LatestCompatible = 2, SCHEMAMATCHTYPE_Latest = 3 }
 Defines what sort of match should be used when locating a schema. More...
 
enum  PropertySortPriority : int32_t {
  VeryHigh = 400000, High = 300000, Medium = 200000, Low = 100000,
  VeryLow = 0
}
 Standard sorting priorities for properties. More...
 
enum  CategorySortPriority : int32_t {
  VeryHigh = 400000, High = 300000, Medium = 200000, Low = 100000,
  VeryLow = 0
}
 Standard sorting priorities for property categories. More...
 

Detailed Description

ECObjects is a set of abstractions for working with engineering/business data and metadata.

"EC" stands for "Engineering Content". There are several implementations of the ECObjects abstractions:

You can think of an ECClass as being like a C++ or .NET class that only defines properties (ECClasses define no methods or behaviors.) In some ways, they are closer to .NET interfaces that hold only properties... or C++ pure virtual abstract base classes that only contain property getters and setters. They are also very analogous to a database table definition.

ECClasses contain ECProperties. These are property definitions, not values.

ECInstances represent instances of objects. Each "belongs" to an ECClass and holds ECPropertyValues. They are somewhat analogous to the rows of a database table.

An ECSchema is just a collection of ECClasses.

There are also ECRelationshipClasses that are ECClasses that also define "RelationshipConstraints" indicating what ECClasses they relate. ECRelationshipInstances represent the relationships between the ECinstances (defined/constrainted by their ECRelationshipClass) ECRelationships work more like database foreign key constraint that C++ pointers or .NET object references.

See also
Bentley::EC

Macro Definition Documentation

#define INVALID_PROPERTY_INDEX   0;

Typedef Documentation

typedef RefCountedPtr< ClassLayout > ClassLayoutPtr
typedef bvector<ClassLayoutPtr> ClassLayoutVector
typedef bvector<ECClassP> ECBaseClassesList
typedef int64_t ECClassId
typedef bvector<ECClassP> ECConstraintClassesList
typedef bvector<IECInstancePtr> ECCustomAttributeCollection
typedef bvector<ECClassP> ECDerivedClassesList
typedef enum Bentley::ECN::ECErrorCategories ECErrorCategories

Error code categories.

typedef bvector<IECInstancePtr> ECInstanceList
typedef ECInstanceList const* ECInstanceListCP
typedef ECInstanceList const& ECInstanceListCR
typedef ECInstanceList* ECInstanceListP
typedef ECInstanceList & ECInstanceListR
typedef RefCountedPtr<ECInstanceReadContext> ECInstanceReadContextPtr
typedef RefCountedPtr<ECSchemaReadContext> ECSchemaReadContextPtr
typedef ECN::IInstanceCollectionAdapter<IECInstanceP const> IECInstanceCollectionAdapter
typedef ECN::IInstanceCollectionIteratorAdapter<IECInstanceP const> IECInstanceCollectionIteratorAdapter
typedef RefCountedPtr<IECInstance> IECInstancePtr
typedef ECN::IInstanceCollectionAdapter<IECRelationshipInstanceP const> IECRelationshipCollectionAdapter
typedef ECN::IInstanceCollectionIteratorAdapter<IECRelationshipInstanceP const> IECRelationshipCollectionIteratorAdapter
typedef RefCountedPtr<IECRelationshipInstance> IECRelationshipInstancePtr
typedef struct IStream* IStreamP
typedef bmap<WString, ICustomECStructSerializerP> NameSerializerMap
typedef bmap<SchemaKey , ECSchemaPtr> SchemaMap
typedef RefCountedPtr<SearchPathSchemaFileLocater> SearchPathSchemaFileLocaterPtr

Enumeration Type Documentation

enum ArrayKind : unsigned short

Represents the classification of the data type of an EC array element.

The classification is not the data type itself, but a category of type. Currently an ECArray can only contain primitive or struct data types.

Enumerator
ARRAYKIND_Primitive 
ARRAYKIND_Struct 
enum CategorySortPriority : int32_t
strong

Standard sorting priorities for property categories.

Enumerator
VeryHigh 
High 

>Very High

Medium 

>High

Low 

>Medium

VeryLow 

>Low

enum ECErrorCategories

Error code categories.

Enumerator
ECOBJECTS_ERROR_BASE 
SCHEMA_READ_STATUS_BASE 
SCHEMA_WRITE_STATUS_BASE 
INSTANCE_READ_STATUS_BASE 
INSTANCE_WRITE_STATUS_BASE 
SUPPLEMENTED_SCHEMA_STATUS_BASE 
enum ECObjectsStatus

General purpose result codes.

Enumerator
ECOBJECTS_STATUS_Success 
ECOBJECTS_STATUS_PropertyNotFound 
ECOBJECTS_STATUS_DataTypeMismatch 
ECOBJECTS_STATUS_ECInstanceImplementationNotSupported 
ECOBJECTS_STATUS_InvalidPropertyAccessString 
ECOBJECTS_STATUS_IndexOutOfRange 
ECOBJECTS_STATUS_ECClassNotSupported 
ECOBJECTS_STATUS_ECSchemaNotSupported 
ECOBJECTS_STATUS_AccessStringDisagreesWithNIndices 
ECOBJECTS_STATUS_EnablerNotFound 
ECOBJECTS_STATUS_OperationNotSupported 
ECOBJECTS_STATUS_ParseError 
ECOBJECTS_STATUS_NamedItemAlreadyExists 
ECOBJECTS_STATUS_PreconditionViolated 
ECOBJECTS_STATUS_SchemaNotFound 
ECOBJECTS_STATUS_ClassNotFound 
ECOBJECTS_STATUS_BaseClassUnacceptable 
ECOBJECTS_STATUS_SchemaInUse 
ECOBJECTS_STATUS_InvalidName 
ECOBJECTS_STATUS_DataTypeNotSupported 
ECOBJECTS_STATUS_UnableToAllocateMemory 
ECOBJECTS_STATUS_MemoryBoundsOverrun 
ECOBJECTS_STATUS_NullPointerValue 
ECOBJECTS_STATUS_NotCustomAttributeClass 
ECOBJECTS_STATUS_DuplicateSchema 
ECOBJECTS_STATUS_UnableToSetReadOnlyInstance 
ECOBJECTS_STATUS_UnableToSetReadOnlyProperty 
ECOBJECTS_STATUS_ArrayIndexDoesNotExist 
ECOBJECTS_STATUS_PropertyValueMatchesNoChange 
ECOBJECTS_STATUS_NoChildProperties 
ECOBJECTS_STATUS_UnableToAllocateManagedMemory 
ECOBJECTS_STATUS_MemoryAllocationCallbackRequired 
ECOBJECTS_STATUS_UnableToAddStructArrayMember 
ECOBJECTS_STATUS_UnableToSetStructArrayMemberInstance 
ECOBJECTS_STATUS_UnableToGetStructArrayMemberInstance 
ECOBJECTS_STATUS_InvalidIndexForPerPropertyFlag 
ECOBJECTS_STATUS_SchemaHasReferenceCycle 
ECOBJECTS_STATUS_SchemaNotSupplemented 
ECOBJECTS_STATUS_UnableToQueryForNullPropertyFlag 
ECOBJECTS_STATUS_UnableToResizeFixedSizedArray 
ECOBJECTS_STATUS_SchemaIsImmutable 
ECOBJECTS_STATUS_Error 

Used to describe the direction of a related instance within the context of an IECRelationshipInstance.

Enumerator
STRENGTHDIRECTION_Forward 

Related instance is the target in the relationship instance.

STRENGTHDIRECTION_Backward 

Related instance is the source in the relationship instance.

Used to define which end of the relationship, source or target.

Enumerator
ECRelationshipEnd_Source 

End is the source.

ECRelationshipEnd_Target 

End is the target.

enum EvaluationOptions

Options to be used when evaluating an ECExpression.

The options are specified on an ExpressionContext. Inner contexts inherit the options associated with their outer context.

Enumerator
EVALOPT_Legacy 

Legacy behavior.

IECTypeAdapter::_ConvertTo/FromExpressionType() will be invoked for each property value used in the ECExpression. This can have undesirable results:

  • Converts linear units to dimensionsed meters
  • Converts boolean and StandardValues values to localized strings
  • etc. This option is not appropriate for expressions intended to be persisted.
EVALOPT_SuppressTypeConversions 

IECTypeAdapter::_ConvertTo/FromExpressionType() will not be invoked for property values used in the ECExpression.

  • Property values will retain their storage units
  • StandardValues values will retain their internal integer values
  • Boolean property values will be represented as non-localized true/false This option is recommended when units are important, or if the results of the ECExpression will not be displayed to the user directly, or if the expression will be persisted.
EVALOPT_EnforceUnits 

Arithmetic, comparison, and assignment operations will check the units of their operands and:

  • Convert values to compatible units if possible, or
  • Produce an error if units are not compatible If units are not specified for a numeric value within the ECExpression, an attempt will be made to infer the units from the other operand. Currently, units are enforced as follows:
  • Addition, subtraction, and comparison: Units must be compatible (have same base unit).
  • Multiplication and division: Only one operand may have units; the other is a scalar. This option implies type conversions will be suppressed.
EVALOPT_EnforceGlobalRepresentation 

IECTypeAdapter::_ConvertTo/FromExpressionType() will be invoked only for property values used in the ECExpression that requires evaluation based on their global representation.

For example: in Microstation LevelId for the same LevelName in different files (references) can be different and evaluating against LevelId will not work. So instead LevelId should be converted to global representation and compared against it. When this option is turned on, ECExpression string should also be formated accordingly based on what global representation is for that particular property. IECTypeAdapter::_RequiresExpressionTypeConversion() and IECTypeAdapter::_ConvertToExpressionType() functions can be used to detect that.

enum ExpressionStatus

Enumerates the possible return values for evaluating an expression or its value.

Enumerator
ExprStatus_Success 

Success.

ExprStatus_UnknownError 

There as an unknown error in evaluation.

ExprStatus_UnknownMember 

Returned if a property name in the expression cannot be found in the containing class.

ExprStatus_PrimitiveRequired 

Returned when a primitive is expected and not found.

ExprStatus_StructRequired 

Returned when a struct is expected and not found.

ExprStatus_ArrayRequired 

Returned when an array is expected and not found.

ExprStatus_UnknownSymbol 

Returned when the symbol in the expression cannot be resolved.

ExprStatus_DotNotSupported 
ExprStatus_NotImpl 
ExprStatus_NeedsLValue 

Returned when the symbol needs to be an lvalue.

ExprStatus_WrongType 

Returned when the symbol type is of the wrong type for the expression.

ExprStatus_IncompatibleTypes 

Returned when expression uses incompatible types (ie, trying to perform arithmetic on two strings)

ExprStatus_MethodRequired 

Returned when a method token is expected and not found.

ExprStatus_InstanceMethodRequired 

Returned when an instance method is called, but has not been defined.

ExprStatus_StaticMethodRequired 

Returned when a static method is called, but has not been defined.

ExprStatus_InvalidTypesForDivision 

Returned when the expression tries to perform a division operation on types that cannot be divided.

ExprStatus_DivideByZero 

Returned when the division operation tries to divide by zero.

ExprStatus_WrongNumberOfArguments 

Returned when the number of arguments to a method in an expression do not match the number of arguments actually expected.

ExprStatus_IndexOutOfRange 

Returned when array index is used which is outside the bounds of the array.

ExprStatus_IncompatibleUnits 

Returned when units are combined in an unsupported manner within the expression, for example adding angles and lengths.

enum ExpressionToken
Enumerator
TOKEN_None 
TOKEN_Null 
TOKEN_True 
TOKEN_False 
TOKEN_Like 
TOKEN_Is 
TOKEN_Star 
TOKEN_Plus 
TOKEN_Minus 
TOKEN_Slash 
TOKEN_Comma 
TOKEN_IntegerDivide 
TOKEN_LParen 
TOKEN_RParen 
TOKEN_Exponentiation 
TOKEN_And 
TOKEN_AndAlso 
TOKEN_Or 
TOKEN_OrElse 
TOKEN_Concatenate 
TOKEN_Mod 
TOKEN_ShiftLeft 
TOKEN_ShiftRight 
TOKEN_Colon 
TOKEN_LessEqual 
TOKEN_GreaterEqual 
TOKEN_Less 
TOKEN_Greater 
TOKEN_Equal 
TOKEN_NotEqual 
TOKEN_Not 
TOKEN_Xor 
TOKEN_UnsignedShiftRight 
TOKEN_LeftBracket 
TOKEN_RightBracket 
TOKEN_Dot 
TOKEN_IIf 
TOKEN_LCurly 
TOKEN_RCurly 
TOKEN_If 
TOKEN_Else 
TOKEN_ElseIf 
TOKEN_Select 
TOKEN_End 
TOKEN_EndIf 
TOKEN_Lambda 
TOKEN_DoubleColon 
TOKEN_Error 
TOKEN_Ident 
TOKEN_StringConst 
TOKEN_PointConst 
TOKEN_DateTimeConst 
TOKEN_IntegerConstant 
TOKEN_HexConstant 
TOKEN_FloatConst 
TOKEN_UnitsConst 
TOKEN_Unrecognized 
TOKEN_BadNumber 
TOKEN_BadOctalNumber 
TOKEN_BadHexNumber 
TOKEN_BadFloatingPointNumber 
TOKEN_UnterminatedString 
TOKEN_PrimaryList 
enum InstanceReadStatus

Result status of deserializing an IECInstance from Xml.

Enumerator
INSTANCE_READ_STATUS_Success 
INSTANCE_READ_STATUS_FileNotFound 
INSTANCE_READ_STATUS_CantCreateStream 
INSTANCE_READ_STATUS_CantCreateXmlReader 
INSTANCE_READ_STATUS_CantSetStream 
INSTANCE_READ_STATUS_NoElementName 
INSTANCE_READ_STATUS_BadElement 
INSTANCE_READ_STATUS_UnexpectedElement 
INSTANCE_READ_STATUS_EmptyElement 
INSTANCE_READ_STATUS_EndElementDoesntMatch 
INSTANCE_READ_STATUS_XmlFileIncomplete 
INSTANCE_READ_STATUS_XmlParseError 
INSTANCE_READ_STATUS_ECClassNotFound 
INSTANCE_READ_STATUS_BadECProperty 
INSTANCE_READ_STATUS_BadPrimitivePropertyType 
INSTANCE_READ_STATUS_BadBinaryData 
INSTANCE_READ_STATUS_BadTimeValue 
INSTANCE_READ_STATUS_BadDoubleValue 
INSTANCE_READ_STATUS_BadIntegerValue 
INSTANCE_READ_STATUS_BadLongValue 
INSTANCE_READ_STATUS_BadPoint2dValue 
INSTANCE_READ_STATUS_BadPoint3dValue 
INSTANCE_READ_STATUS_BadArrayElement 
INSTANCE_READ_STATUS_TypeMismatch 
INSTANCE_READ_STATUS_CantSetValue 
INSTANCE_READ_STATUS_ECSchemaNotFound 
INSTANCE_READ_STATUS_UnableToGetStandaloneEnabler 
INSTANCE_READ_STATUS_CommentOnly 
INSTANCE_READ_STATUS_PropertyNotFound 
enum InstanceWriteStatus

Result status of writing an IECInstance to Xml.

Enumerator
INSTANCE_WRITE_STATUS_Success 
INSTANCE_WRITE_STATUS_CantCreateStream 
INSTANCE_WRITE_STATUS_CantCreateXmlWriter 
INSTANCE_WRITE_STATUS_CantSetStream 
INSTANCE_WRITE_STATUS_XmlWriteError 
INSTANCE_WRITE_STATUS_CantReadFromStream 
INSTANCE_WRITE_STATUS_FailedToWriteFile 
INSTANCE_WRITE_STATUS_BadPrimitivePropertyType 

Used to define how the relationship OrderId is handled.

Enumerator
ORDERIDSTORAGEMODE_None 
ORDERIDSTORAGEMODE_ProvidedByPersistence 
ORDERIDSTORAGEMODE_ProvidedByClient 
enum PrimitiveType : unsigned short

Enumeration of primitive datatypes supported by native "ECObjects" implementation.

These should correspond to all of the datatypes supported in .NET ECObjects

Enumerator
PRIMITIVETYPE_Binary 
PRIMITIVETYPE_Boolean 
PRIMITIVETYPE_DateTime 

Additional date time metadata can be specified on an ECProperty of this type via the custom attribute DateTimeInfo defined in the schema Bentley_Standard_CustomAttributes.

See also
DateTimeInfo
PRIMITIVETYPE_Double 
PRIMITIVETYPE_Integer 
PRIMITIVETYPE_Long 
PRIMITIVETYPE_Point2D 
PRIMITIVETYPE_Point3D 
PRIMITIVETYPE_String 
PRIMITIVETYPE_IGeometry 
enum PropertySortPriority : int32_t
strong

Standard sorting priorities for properties.

Enumerator
VeryHigh 
High 

>Very High

Medium 

>High

Low 

>Medium

VeryLow 

>Low

Defines what sort of match should be used when locating a schema.

Enumerator
SCHEMAMATCHTYPE_Identical 

Find exact VersionMajor, VersionMinor match as well as Data.

SCHEMAMATCHTYPE_Exact 

Find exact VersionMajor, VersionMinor match.

SCHEMAMATCHTYPE_LatestCompatible 

Find latest version with matching VersionMajor and VersionMinor that is equal or greater.

SCHEMAMATCHTYPE_Latest 

Find latest version.

enum SchemaReadStatus

Result status for deserializing an ECSchema from Xml.

Enumerator
SCHEMA_READ_STATUS_Success 
SCHEMA_READ_STATUS_FailedToParseXml 
SCHEMA_READ_STATUS_InvalidECSchemaXml 
SCHEMA_READ_STATUS_ReferencedSchemaNotFound 
SCHEMA_READ_STATUS_DuplicateSchema 
SCHEMA_READ_STATUS_InvalidPrimitiveType 
SCHEMA_READ_STATUS_HasReferenceCycle 
enum SchemaWriteStatus

Result status for serializing an ECSchema to Xml.

Enumerator
SCHEMA_WRITE_STATUS_Success 
SCHEMA_WRITE_STATUS_FailedToSaveXml 
SCHEMA_WRITE_STATUS_FailedToCreateXml 
SCHEMA_WRITE_STATUS_FailedToWriteFile 

The various strengths supported on a relationship class.

Enumerator
STRENGTHTYPE_Referencing 

'Referencing' relationships imply no ownership and no cascading deletes when the object on either end of the relationship is deleted.

For example, a document object may have a reference to the User that last modified it. This is like "Association" in UML.

STRENGTHTYPE_Holding 

'Holding' relationships imply shared ownership.

A given object can be "held" by many different objects, and the object will not get deleted unless all of the objects holding it are first deleted (or the relationships severed.) This is like "Aggregation" in UML.

STRENGTHTYPE_Embedding 

'Embedding' relationships imply exclusive ownership and cascading deletes.

An object that is the target of an 'embedding' relationship may also be the target of other 'referencing' relationships, but cannot be the target of any 'holding' relationships. For examples, a Folder 'embeds' the Documents that it contains. This is like "Composition" in UML.

enum SupplementedSchemaStatus

Result status of trying to supplement an ECSchema.

Enumerator
SUPPLEMENTED_SCHEMA_STATUS_Success 
SUPPLEMENTED_SCHEMA_STATUS_Metadata_Missing 
SUPPLEMENTED_SCHEMA_STATUS_Duplicate_Precedence_Error 
SUPPLEMENTED_SCHEMA_STATUS_IECRelationship_Not_Allowed 
SUPPLEMENTED_SCHEMA_STATUS_SchemaMergeException 
SUPPLEMENTED_SCHEMA_STATUS_SupplementalClassHasBaseClass 
enum ValueKind : unsigned short

Represents the classification of the data type of an ECValue.

The classification is not the data type itself, but a category of type such as struct, array or primitive.

Enumerator
VALUEKIND_Uninitialized 

The ECValue has not be initialized yet.

VALUEKIND_Primitive 

The ECValue holds a Primitive type.

VALUEKIND_Struct 

The ECValue holds a struct.

VALUEKIND_Array 

The ECValue holds an array.


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