sdaiInsertAfter
Table 1 – Required value buffer depending on valueType (on the example of sdaiInsertAfter but valid for all put-functions)
valueType C/C++ C#
sdaiINTEGER int_t val = 123; int_t val = 123;
sdaiInsertAfter (iterator, sdaiINTEGER, &val); ifcengine.sdaiInsertAfter (iterator, ifcengine.sdaiINTEGER, ref val);
sdaiREAL or sdaiNUMBER double val = 123.456; double val = 123.456;
sdaiInsertAfter (iterator, sdaiREAL, &val); ifcengine.sdaiInsertAfter (iterator, ifcengine.sdaiREAL, ref val);
sdaiBOOLEAN SdaiBoolean val = sdaiTRUE; bool val = true;
sdaiInsertAfter (iterator, sdaiBOOLEAN, &val); ifcengine.sdaiInsertAfter (iterator, ifcengine.sdaiBOOLEAN, ref val);
sdaiLOGICAL const TCHAR* val = "U"; string val = "U";
sdaiInsertAfter (iterator, sdaiLOGICAL, val); ifcengine.sdaiInsertAfter (iterator, ifcengine.sdaiLOGICAL, val);
sdaiENUM const TCHAR* val = "NOTDEFINED"; string val = "NOTDEFINED";
sdaiInsertAfter (iterator, sdaiENUM, val); ifcengine.sdaiInsertAfter (iterator, ifcengine.sdaiENUM, val);
sdaiBINARY const TCHAR* val = "0123456ABC"; string val = "0123456ABC";
sdaiInsertAfter (iterator, sdaiBINARY, val); ifcengine.sdaiInsertAfter (iterator, ifcengine.sdaiBINARY, val);
sdaiSTRING const char* val = "My Simple String"; string val = "My Simple String";
sdaiInsertAfter (iterator, sdaiSTRING, val); ifcengine.sdaiInsertAfter (iterator, ifcengine.sdaiSTRING, val);
sdaiUNICODE const wchar_t* val = L"Any Unicode String"; string val = "Any Unicode String";
sdaiInsertAfter (iterator, sdaiUNICODE, val); ifcengine.sdaiInsertAfter (iterator, ifcengine.sdaiUNICODE, val);
sdaiEXPRESSSTRING const char* val = "EXPRESS format, i.e. \\X2\\00FC\\X0\\"; string val = "EXPRESS format, i.e. \\X2\\00FC\\X0\\";
sdaiInsertAfter (iterator, sdaiEXPRESSSTRING, val); ifcengine.sdaiInsertAfter (iterator, ifcengine.sdaiEXPRESSSTRING, val);
sdaiINSTANCE SdaiInstance val = sdaiCreateInstanceBN (model, "IFCSITE"); int_t val = ifcengine.sdaiCreateInstanceBN (model, "IFCSITE");
sdaiInsertAfter (iterator, sdaiINSTANCE, val); ifcengine.sdaiInsertAfter (iterator, ifcengine.sdaiINSTANCE, val);
sdaiAGGR SdaiAggr val = sdaiCreateAggr (inst, 0); int_t val = sdaiCreateAggr (inst, 0);
sdaiPutAttr (val, sdaiINSTANCE, inst); ifcengine.sdaiPutAttr (val, ifcengine.sdaiINSTANCE, inst);
sdaiInsertAfter (iterator, sdaiAGGR, val); ifcengine.sdaiInsertAfter (iterator, ifcengine.sdaiAGGR, val);
sdaiADB int_t integerValue = 123; int_t integerValue = 123;
SdaiADB val = sdaiCreateADB (sdaiINTEGER, &integerValue); int_t val = ifcengine.sdaiCreateADB (ifcengine.sdaiINTEGER, ref integerValue);
sdaiPutADBTypePath (val, 1, "IFCINTEGER"); ifcengine.sdaiPutADBTypePath (val, 1, "IFCINTEGER");
sdaiInsertAfter (iterator, sdaiADB, val); ifcengine.sdaiInsertAfter (iterator, ifcengine.sdaiADB, val);
sdaiDeleteADB (val); ifcengine.sdaiDeleteADB (val);
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 . . . . . . . . .
sdaiREAL . Yes . . . . . . . .
sdaiNUMBER . Yes . . . . . . . .
sdaiBOOLEAN . . Yes . . . . . . .
sdaiLOGICAL . . Yes Yes . . . . . .
sdaiENUM . . Yes Yes Yes . . . . .
sdaiBINARY . . . . . Yes . . . .
sdaiSTRING . . . . . . Yes . . .
sdaiUNICODE . . . . . . Yes . . .
sdaiEXPRESSSTRING . . . . . . Yes . . .
sdaiINSTANCE . . . . . . . Yes . .
sdaiAGGR . . . . . . . . Yes .
sdaiADB Yes Yes Yes Yes Yes Yes Yes Yes Yes .
Syntax
// // Strong typing definition // void sdaiInsertAfter( const SdaiIterator iterator, SdaiPrimitiveType valueType, const void * value ); // // Weak typing definition // void __declspec(dllexport) __stdcall sdaiInsertAfter( const void * iterator, int_t valueType, const void * value );