sdaiGetAttrBN
Table 1 – Required value buffer depending on valueType (on the example of sdaiGetAttrBN but valid for all get-functions)
valueType C/C++ C#
sdaiINTEGER int_t val; int_t val;
sdaiGetAttrBN (instance, "attrName", sdaiINTEGER, &val); ifcengine.sdaiGetAttrBN (instance, "attrName", ifcengine.sdaiINTEGER, out val);
sdaiREAL or sdaiNUMBER double val; double val;
sdaiGetAttrBN (instance, "attrName", sdaiREAL, &val); ifcengine.sdaiGetAttrBN (instance, "attrName", ifcengine.sdaiREAL, out val);
sdaiBOOLEAN SdaiBoolean val; bool val;
sdaiGetAttrBN (instance, "attrName", sdaiBOOLEAN, &val); ifcengine.sdaiGetAttrBN (instance, "attrName", ifcengine.sdaiBOOLEAN, out val);
sdaiLOGICAL const TCHAR* val; string val;
sdaiGetAttrBN (instance, "attrName", sdaiLOGICAL, &val); ifcengine.sdaiGetAttrBN (instance, "attrName", ifcengine.sdaiLOGICAL, out val);
sdaiENUM const TCHAR* val; string val;
sdaiGetAttrBN (instance, "attrName", sdaiENUM, &val); ifcengine.sdaiGetAttrBN (instance, "attrName", ifcengine.sdaiENUM, out val);
sdaiBINARY const TCHAR* val; string val;
sdaiGetAttrBN (instance, "attrName", sdaiBINARY, &val); ifcengine.sdaiGetAttrBN (instance, "attrName", ifcengine.sdaiBINARY, out val);
sdaiSTRING const char* val; string val;
sdaiGetAttrBN (instance, "attrName", sdaiSTRING, &val); ifcengine.sdaiGetAttrBN (instance, "attrName", ifcengine.sdaiSTRING, out val);
sdaiUNICODE const wchar_t* val; string val;
sdaiGetAttrBN (instance, "attrName", sdaiUNICODE, &val); ifcengine.sdaiGetAttrBN (instance, "attrName", ifcengine.sdaiUNICODE, out val);
sdaiEXPRESSSTRING const char* val; string val;
sdaiGetAttrBN (instance, "attrName", sdaiEXPRESSSTRING, &val); ifcengine.sdaiGetAttrBN (instance, "attrName", ifcengine.sdaiEXPRESSSTRING, out val);
sdaiINSTANCE SdaiInstance val; int_t val;
sdaiGetAttrBN (instance, "attrName", sdaiINSTANCE, &val); ifcengine.sdaiGetAttrBN (instance, "attrName", ifcengine.sdaiINSTANCE, out val);
sdaiAGGR SdaiAggr aggr; int_t aggr;
sdaiGetAttrBN (instance, "attrName", sdaiAGGR, &aggr); ifcengine.sdaiGetAttrBN (instance, "attrName", ifcengine.sdaiAGGR, out aggr);
sdaiADB SdaiADB adb = sdaiCreateEmptyADB(); int_t adb = 0; // it is important to initialize
sdaiGetAttrBN (instance, "attrName", sdaiADB, adb); ifcengine.sdaiGetAttrBN (instance, "attrName", ifcengine.sdaiADB, out adb);
sdaiDeleteADB (adb);
SdaiADB adb = nullptr; // it is important to initialize
sdaiGetAttrBN (instance, "attrName", sdaiADB, &adb);
TCHAR is “char” or “wchar_t” depending on setStringUnicode.
(Non-standard behavior) sdaiLOGICAL behaves differently from ISO 10303-24-2001: it expects char* while standard declares int_t.
(Non-standard extension) sdiADB in C++ has an option to work without sdaiCreateEmptyADB and sdaiDeleteADB as shown in the table.
Table 2 - valueType can be requested depending on actual model data.
valueType Works for following values in the model
integer real .T. or .F. .U. other enum binary string instance list $ (empty)
sdaiINTEGER Yes Yes * . . . . . . . .
sdaiREAL Yes Yes . . . . . . . .
sdaiNUMBER Yes Yes . . . . . . . .
sdaiBOOLEAN . . Yes . . . . . . .
sdaiLOGICAL . . Yes Yes . . . . . .
sdaiENUM . . Yes Yes Yes . . . . .
sdaiBINARY . . . . . Yes . . . .
sdaiSTRING Yes Yes Yes Yes Yes Yes Yes . . .
sdaiUNICODE Yes Yes Yes Yes Yes Yes Yes . . .
sdaiEXPRESSSTRING Yes Yes Yes Yes Yes Yes Yes . . .
sdaiINSTANCE . . . . . . . Yes . .
sdaiAGGR . . . . . . . . Yes .
sdaiADB Yes Yes Yes Yes Yes Yes Yes Yes Yes .
Note: sdaiGetAttr, stdaiGetAttrBN, engiGetElement will success with any model data, except non-set($)
(Non-standard extensions) sdaiGetADBValue: sdaiADB is allowed and will success when sdaiGetADBTypePath is not NULL, returning ABD value has type path element removed.
Technically sdaiGetAttrBN will transform into the following call
sdaiGetAttr(
instance,
sdaiGetAttrDefinition(
sdaiGetInstanceType(
instance
),
attributeName
),
valueType,
value
);
Syntax
// // Strong typing definition // void * sdaiGetAttrBN( SdaiInstance instance, SdaiString attributeName, SdaiPrimitiveType valueType, void * value ); static inline void * sdaiGetAttrBN( SdaiInstance instance, char * attributeName, SdaiPrimitiveType valueType, void * value ) { return sdaiGetAttrBN( instance, (SdaiString) attributeName, valueType, value ); } static inline SdaiInstance sdaiGetAttrBN( SdaiInstance instance, SdaiString attributeName, SdaiInstance * sdaiInstance ) { return (SdaiInstance) sdaiGetAttrBN( instance, attributeName, sdaiINSTANCE, // valueType (void*) sdaiInstance // value ); } static inline SdaiInstance sdaiGetAttrBN( SdaiInstance instance, char * attributeName, SdaiInstance * sdaiInstance ) { return sdaiGetAttrBN( instance, (SdaiString) attributeName, sdaiInstance ); } static inline SdaiInstance sdaiGetAttrBN( SdaiInstance instance, SdaiString attributeName ) { SdaiInstance sdaiInstance = 0; return sdaiGetAttrBN( instance, attributeName, &sdaiInstance // value ); } static inline SdaiInstance sdaiGetAttrBN( SdaiInstance instance, char * attributeName ) { return sdaiGetAttrBN( instance, (SdaiString) attributeName ); } // // Weak typing definition // void __declspec(dllexport) * __stdcall sdaiGetAttrBN( int_t instance, const char * attributeName, int_t valueType, void * value ); static inline void * sdaiGetAttrBN( int_t instance, char * attributeName, int_t valueType, void * value ) { return sdaiGetAttrBN( instance, (const SdaiString) attributeName, valueType, value ); } static inline void sdaiGetAttrBN( int_t instance, const char * attributeName, int_t * sdaiInstance ) { return (SdaiInstance) sdaiGetAttrBN( instance, attributeName, sdaiINSTANCE, // valueType (void*) sdaiInstance // value ); } static inline void sdaiGetAttrBN( int_t instance, char * attributeName, int_t * sdaiInstance ) { return sdaiGetAttrBN( instance, (const SdaiString) attributeName, sdaiInstance ); } static inline void sdaiGetAttrBN( int_t instance, const char * attributeName ) { SdaiInstance sdaiInstance = 0; return sdaiGetAttrBN( instance, attributeName, &sdaiInstance // value ); } static inline void sdaiGetAttrBN( int_t instance, char * attributeName ) { return sdaiGetAttrBN( instance, (const SdaiString) attributeName ); }
Property instance
Size: 32 bit / 4 byte (value)Property attributeName
Size: 32 bit / 4 byte (reference)Property valueType
Size: 32 bit / 4 byte (value)Property value
Size: 32 bit / 4 byte (reference)
Example (based on pure API calls)
Here you can find code snippits that show how the API call sdaiGetAttrBN can be used.
#include "./include/ifcengine.h" { // // Schema data // ENTITY MyEntity // MyAttribute : REAL; // END_ENTITY; // // Instance data // #101 = MYENTITY(1.23); // SdaiInstance myEntityInstance = 0; sdaiGetAggrByIndex(sdaiGetEntity(model, "MyEntity"), 0 /* index */, sdaiINSTANCE, &myEntityInstance); int_t iValue; void * rValue = sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiINTEGER, (void*) &iValue); assert(rValue && iValue == 1); .. double dValue; void * rValue = sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiREAL, (void*) &dValue); assert(rValue && dValue == 1.23); .. double dValue; void * rValue = sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiNUMBER, (void*) &dValue); assert(rValue && dValue == 1.23); .. bool bValue; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiBOOLEAN, (void*) &bValue) == nullptr); .. const char * strValue; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiLOGICAL, (void*) &strValue) == nullptr); .. const char * strValue; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiENUM, (void*) &strValue) == nullptr); .. const char * strValue; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiBINARY, (void*) &strValue) == nullptr); .. const char * strValue; void * rValue = sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiSTRING, (void*) &strValue); assert(rValue && atof(strValue) == 1.23); .. const wchar_t * strValue; void * rValue = sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiUNICODE, (void*) &strValue); assert(rValue && wtof(strValue) == 1.23); .. const char * strValue; void * rValue = sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiEXPRESSSTRING, (void*) &strValue); assert(rValue && atof(strValue) == 1.23); .. SdaiInstance instValue; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiINSTANCE, (void*) &instValue) == nullptr); .. SdaiAggr aggregate; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiAGGR, (void*) &aggregate) == nullptr); .. SdaiADB attributeDataBlock = nullptr; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiADB, (void*) &attributeDataBlock) == nullptr); } { // // Schema data // ENTITY MyEntity // MyAttribute : INTEGER; // END_ENTITY; // // Instance data // #101 = MYENTITY(123); // SdaiInstance myEntityInstance = 0; sdaiGetAggrByIndex(sdaiGetEntity(model, "MyEntity"), 0 /* index */, sdaiINSTANCE, &myEntityInstance); int_t iValue; void * rValue = sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiINTEGER, (void*) &iValue); assert(rValue && iValue == 123); .. double dValue; void * rValue = sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiREAL, (void*) &dValue); assert(rValue && dValue == 123.); .. double dValue; void * rValue = sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiNUMBER, (void*) &dValue); assert(rValue && dValue == 123.); .. bool bValue; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiBOOLEAN, (void*) &bValue) == nullptr); .. const char * strValue; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiLOGICAL, (void*) &strValue) == nullptr); .. const char * strValue; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiENUM, (void*) &strValue) == nullptr); .. const char * strValue; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiBINARY, (void*) &strValue) == nullptr); .. const char * strValue; void * rValue = sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiSTRING, (void*) &strValue); assert(rValue && atoi(strValue) == 1.23); .. const wchar_t * strValue; void * rValue = sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiUNICODE, (void*) &strValue); assert(rValue && wtoi(strValue) == 1.23); .. const char * strValue; void * rValue = sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiEXPRESSSTRING, (void*) &strValue); assert(rValue && atoi(strValue) == 123); .. SdaiInstance instValue; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiINSTANCE, (void*) &instValue) == nullptr); .. SdaiAggr aggregate; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiAGGR, (void*) &aggregate) == nullptr); .. SdaiADB attributeDataBlock = nullptr; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiADB, (void*) &attributeDataBlock) == nullptr); } { // // Schema data // ENTITY MyEntity // MyAttribute : BOOLEAN; // END_ENTITY; // // Instance data // #101 = MYENTITY(.T.); // SdaiInstance myEntityInstance = 0; sdaiGetAggrByIndex(sdaiGetEntity(model, "MyEntity"), 0 /* index */, sdaiINSTANCE, &myEntityInstance); int_t iValue; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiINTEGER, (void*) &iValue) == nullptr); .. double dValue; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiREAL, (void*) &dValue) == nullptr); .. double dValue; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiNUMBER, (void*) &dValue) == nullptr); .. bool bValue; void * rValue = sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiBOOLEAN, (void*) &bValue); assert(rValue && bValue == true); .. const char * strValue; void * rValue = sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiLOGICAL, (void*) &strValue); assert(rValue && equal(strValue, "T")); .. const char * strValue; void * rValue = sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiENUM, (void*) &strValue); assert(rValue && equal(strValue, "T")); .. const char * strValue; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiBINARY, (void*) &strValue) == nullptr); .. const char * strValue; void * rValue = sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiSTRING, (void*) &strValue); assert(rValue && equal(strValue, ".T.")); .. const wchar_t * strValue; void * rValue = sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiUNICODE, (void*) &strValue); assert(rValue && equal(strValue, L".T.")); .. const char * strValue; void * rValue = sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiEXPRESSSTRING, (void*) &strValue); assert(rValue && equal(strValue, ".T.")); .. SdaiInstance instValue; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiINSTANCE, (void*) &instValue) == nullptr); .. SdaiAggr aggregate; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiAGGR, (void*) &aggregate) == nullptr); .. SdaiADB attributeDataBlock = nullptr; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiADB, (void*) &attributeDataBlock) == nullptr); } { // // Schema data // ENTITY MyEntity // MyAttribute : LOGICAL; // END_ENTITY; // // Instance data // #101 = MYENTITY(.U.); // SdaiInstance myEntityInstance = 0; sdaiGetAggrByIndex(sdaiGetEntity(model, "MyEntity"), 0 /* index */, sdaiINSTANCE, &myEntityInstance); int_t iValue; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiINTEGER, (void*) &iValue) == nullptr); .. double dValue; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiREAL, (void*) &dValue) == nullptr); .. double dValue; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiNUMBER, (void*) &dValue) == nullptr); .. bool bValue; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiBOOLEAN, (void*) &bValue) == nullptr); .. const char * strValue; void * rValue = sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiLOGICAL, (void*) &strValue); assert(rValue && equal(strValue, "U")); .. const char * strValue; void * rValue = sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiENUM, (void*) &strValue); assert(rValue && equal(strValue, "U")); .. const char * strValue; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiBINARY, (void*) &strValue) == nullptr); .. const char * strValue; void * rValue = sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiSTRING, (void*) &strValue); assert(rValue && equal(strValue, ".U.")); .. const wchar_t * strValue; void * rValue = sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiUNICODE, (void*) &strValue); assert(rValue && equal(strValue, L".U.")); .. const char * strValue; void * rValue = sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiEXPRESSSTRING, (void*) &strValue); assert(rValue && equal(strValue, ".U.")); .. SdaiInstance instValue; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiINSTANCE, (void*) &instValue) == nullptr); .. SdaiAggr aggregate; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiAGGR, (void*) &aggregate) == nullptr); .. SdaiADB attributeDataBlock = nullptr; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiADB, (void*) &attributeDataBlock) == nullptr); } { // // Schema data // TYPE MyEnum = ENUMERATION OF // (EXAMPLE // ,NOTDEFINED); // END_TYPE; // // ENTITY MyEntity // MyAttribute : MyEnum; // END_ENTITY; // // Instance data // #101 = MYENTITY(.EXAMPLE.); // SdaiInstance myEntityInstance = 0; sdaiGetAggrByIndex(sdaiGetEntity(model, "MyEntity"), 0 /* index */, sdaiINSTANCE, &myEntityInstance); int_t iValue; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiINTEGER, (void*) &iValue) == nullptr); .. double dValue; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiREAL, (void*) &dValue) == nullptr); .. double dValue; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiNUMBER, (void*) &dValue) == nullptr); .. bool bValue; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiBOOLEAN, (void*) &bValue) == nullptr); .. const char * strValue; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiLOGICAL, (void*) &strValue) == nullptr); .. const char * strValue; void * rValue = sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiENUM, (void*) &strValue); assert(rValue && equal(strValue, "EXAMPLE")); .. const char * strValue; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiBINARY, (void*) &strValue) == nullptr); .. const char * strValue; void * rValue = sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiSTRING, (void*) &strValue); assert(rValue && equal(strValue, ".EXAMPLE.")); .. const wchar_t * strValue; void * rValue = sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiUNICODE, (void*) &strValue); assert(rValue && equal(strValue, L".EXAMPLE.")); .. const char * strValue; void * rValue = sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiEXPRESSSTRING, (void*) &strValue); assert(rValue && equal(strValue, ".EXAMPLE.")); .. SdaiInstance instValue; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiINSTANCE, (void*) &instValue) == nullptr); .. SdaiAggr aggregate; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiAGGR, (void*) &aggregate) == nullptr); .. SdaiADB attributeDataBlock = nullptr; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiADB, (void*) &attributeDataBlock) == nullptr); } { // // Schema data // ENTITY MyEntity // MyAttribute : BINARY; // END_ENTITY; // // Instance data // #101 = MYENTITY('abc'); // SdaiInstance myEntityInstance = 0; sdaiGetAggrByIndex(sdaiGetEntity(model, "MyEntity"), 0 /* index */, sdaiINSTANCE, &myEntityInstance); int_t iValue; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiINTEGER, (void*) &iValue) == nullptr); .. double dValue; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiREAL, (void*) &dValue) == nullptr); .. double dValue; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiNUMBER, (void*) &dValue) == nullptr); .. bool bValue; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiBOOLEAN, (void*) &bValue) == nullptr); .. const char * strValue; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiLOGICAL, (void*) &strValue) == nullptr); .. const char * strValue; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiENUM, (void*) &strValue) == nullptr); .. const char * strValue; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiBINARY, (void*) &strValue) == nullptr); assert(rValue && equal(strValue, "abc")); .. const char * strValue; void * rValue = sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiSTRING, (void*) &strValue); assert(rValue && equal(strValue, "abc")); .. const wchar_t * strValue; void * rValue = sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiUNICODE, (void*) &strValue); assert(rValue && equal(strValue, L"abc")); .. const char * strValue; void * rValue = sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiEXPRESSSTRING, (void*) &strValue); assert(rValue && equal(strValue, "abc")); .. SdaiInstance instValue; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiINSTANCE, (void*) &instValue) == nullptr); .. SdaiAggr aggregate; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiAGGR, (void*) &aggregate) == nullptr); .. SdaiADB attributeDataBlock = nullptr; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiADB, (void*) &attributeDataBlock) == nullptr); } { // // Schema data // ENTITY MyEntity // MyAttribute : STRING; // END_ENTITY; // // Instance data // #101 = MYENTITY('K\X2\00F6\X0\ln'); // SdaiInstance myEntityInstance = 0; sdaiGetAggrByIndex(sdaiGetEntity(model, "MyEntity"), 0 /* index */, sdaiINSTANCE, &myEntityInstance); int_t iValue; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiINTEGER, (void*) &iValue) == nullptr); .. double dValue; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiREAL, (void*) &dValue) == nullptr); .. double dValue; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiNUMBER, (void*) &dValue) == nullptr); .. bool bValue; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiBOOLEAN, (void*) &bValue) == nullptr); .. const char * strValue; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiLOGICAL, (void*) &strValue) == nullptr); .. const char * strValue; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiENUM, (void*) &strValue) == nullptr); .. const char * strValue; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiBINARY, (void*) &strValue) == nullptr); .. const char * strValue; void * rValue = sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiSTRING, (void*) &strValue); assert(rValue && equal(strValue, "K?ln")); .. const wchar_t * strValue; void * rValue = sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiUNICODE, (void*) &strValue); assert(rValue && equal(strValue, L"Koln")); .. const char * strValue; void * rValue = sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiEXPRESSSTRING, (void*) &strValue); assert(rValue && equal(strValue, "K\X2\00F6\X0\ln")); .. SdaiInstance instValue; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiINSTANCE, (void*) &instValue) == nullptr); .. SdaiAggr aggregate; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiAGGR, (void*) &aggregate) == nullptr); .. SdaiADB attributeDataBlock = nullptr; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiADB, (void*) &attributeDataBlock) == nullptr); } { // // Schema data // ENTITY MyEntity // MyAttribute : MyEntity; // END_ENTITY; // // Instance data // #101 = MYENTITY(#101); // SdaiInstance myEntityInstance = 0; sdaiGetAggrByIndex(sdaiGetEntity(model, "MyEntity"), 0 /* index */, sdaiINSTANCE, &myEntityInstance); int_t iValue; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiINTEGER, (void*) &iValue) == nullptr); .. double dValue; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiREAL, (void*) &dValue) == nullptr); .. double dValue; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiNUMBER, (void*) &dValue) == nullptr); .. bool bValue; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiBOOLEAN, (void*) &bValue) == nullptr); .. const char * strValue; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiLOGICAL, (void*) &strValue) == nullptr); .. const char * strValue; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiENUM, (void*) &strValue) == nullptr); .. const char * strValue; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiBINARY, (void*) &strValue) == nullptr); .. const char * strValue; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiSTRING, (void*) &strValue) == nullptr); .. const wchar_t * strValue; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiUNICODE, (void*) &strValue) == nullptr); .. const char * strValue; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiEXPRESSSTRING, (void*) &strValue) == nullptr); .. SdaiInstance instValue; void * rValue = sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiINSTANCE, (void*) &instValue); assert(rValue && instValue == myEntityInstance); .. SdaiAggr aggregate; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiAGGR, (void*) &aggregate) == nullptr); .. SdaiADB attributeDataBlock = nullptr; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiADB, (void*) &attributeDataBlock) == nullptr); } { // // Schema data // ENTITY MyEntity // MyAttribute : SET [0:?] OF ...; // END_ENTITY; // // Instance data // #101 = MYENTITY((.., .., ..)); // SdaiInstance myEntityInstance = 0; sdaiGetAggrByIndex(sdaiGetEntity(model, "MyEntity"), 0 /* index */, sdaiINSTANCE, &myEntityInstance); int_t iValue; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiINTEGER, (void*) &iValue) == nullptr); .. double dValue; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiREAL, (void*) &dValue) == nullptr); .. double dValue; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiNUMBER, (void*) &dValue) == nullptr); .. bool bValue; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiBOOLEAN, (void*) &bValue) == nullptr); .. const char * strValue; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiLOGICAL, (void*) &strValue) == nullptr); .. const char * strValue; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiENUM, (void*) &strValue) == nullptr); .. const char * strValue; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiBINARY, (void*) &strValue) == nullptr); .. const char * strValue; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiSTRING, (void*) &strValue) == nullptr); .. const wchar_t * strValue; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiUNICODE, (void*) &strValue) == nullptr); .. const char * strValue; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiEXPRESSSTRING, (void*) &strValue) == nullptr); .. SdaiInstance instValue; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiINSTANCE, (void*) &strValue) == nullptr); .. SdaiAggr aggregate; void * rValue = sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiAGGR, (void*) &aggregate); assert(rValue && aggregate && sdaiGetMemberCount(aggregate) == 3); .. SdaiADB attributeDataBlock = nullptr; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiADB, (void*) &attributeDataBlock) == nullptr); } { // // Schema data // ENTITY MyEntity // MyAttribute : OPTIONAL ...; // END_ENTITY; // // Instance data // #101 = MYENTITY($); // SdaiInstance myEntityInstance = 0; sdaiGetAggrByIndex(sdaiGetEntity(model, "MyEntity"), 0 /* index */, sdaiINSTANCE, &myEntityInstance); int_t iValue; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiINTEGER, (void*) &iValue) == nullptr); .. double dValue; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiREAL, (void*) &dValue) == nullptr); .. double dValue; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiNUMBER, (void*) &dValue) == nullptr); .. bool bValue; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiBOOLEAN, (void*) &bValue) == nullptr); .. const char * strValue; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiLOGICAL, (void*) &strValue) == nullptr); .. const char * strValue; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiENUM, (void*) &strValue) == nullptr); .. const char * strValue; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiBINARY, (void*) &strValue) == nullptr); .. const char * strValue; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiSTRING, (void*) &strValue) == nullptr); .. const wchar_t * strValue; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiUNICODE, (void*) &strValue) == nullptr); .. const char * strValue; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiEXPRESSSTRING, (void*) &strValue) == nullptr); .. SdaiInstance instValue; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiINSTANCE, (void*) &strValue) == nullptr); .. SdaiAggr aggregate; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiAGGR, (void*) &strValue) == nullptr); .. SdaiADB attributeDataBlock = nullptr; assert(sdaiGetAttrBN(myEntityInstance, "MyAttribute", sdaiADB, (void*) &attributeDataBlock) == nullptr); }