#ifndef P23SDAI_H #define P23SDAI_H /* * NIST STEP Core Class Library * clstepcore/sdai.h * April 1997 * David Sauder * KC Morris * Development of this software was funded by the United States Government, * and is not subject to copyright. * This file is included to support the proposed SDAI/C++ Language Binding * specified in Annex D of STEP Part 22. * This file specifies the appropriate naming conventions and NULL * values for the EXPRESS base types. */ /* $Id: sdai.h,v 1.4 2000/02/14 13:44:03 gcosmo Exp $ */ extern const char *SCLversion; #include //#include //#include //#include #include #ifdef PART26 // Change the name of the include file defining the defs for Bool and Logical // inside the file corbaIncludes.h #include #endif #ifdef __OSTORE__ #include // Required to access ObjectStore Class Library #include void Application_instance_access_hook_in(void *object, enum os_access_reason reason, void *user_data, void *start_range, void *end_range); #endif #include #include #include #include #include #include typedef String_var Express_id; #ifdef __O3DB__ /* OpenOODB.h must be the first include file. */ #include #endif //#include class TypeDescriptor; class EntityDescriptor; class SelectTypeDescriptor; class InstMgr; #include class STEPattributeList; class STEPattribute; #ifndef BINARY_DELIM #define BINARY_DELIM '\"' #endif #ifndef STRING_DELIM #define STRING_DELIM '\'' #endif // STRING #define S_STRING_NULL "" #ifndef CC_NO_NESTED_CLASSES #ifndef PART26 struct P23_NAMESPACE { #endif // PART26 #endif // CC_NO_NESTED_CLASSES // INTEGER //typedef long Integer; //typedef short Short; //typedef unsigned short UShort; //typedef unsigned long ULong; typedef long SCLP23_NAME(Integer); typedef short SCLP23_NAME(Short); typedef unsigned short SCLP23_NAME(UShort); typedef unsigned long SCLP23_NAME(ULong); typedef double SCLP23_NAME(Real); // C++ from values.h DAS PORT #ifdef CC_NO_NESTED_CLASSES extern const SCLP23_NAME(Integer) SCLP23_NAME(INT_NULL); extern const SCLP23_NAME(Real) SCLP23_NAME(REAL_NULL); // arbitrary choice by me for number DAS extern const SCLP23_NAME(Real) SCLP23_NAME(NUMBER_NULL); #else #ifdef PART26 extern const SCLP23_NAME(Integer) SCLP23_NAME(INT_NULL); extern const SCLP23_NAME(Real) SCLP23_NAME(REAL_NULL); // arbitrary choice by me for number DAS extern const SCLP23_NAME(Real) SCLP23_NAME(NUMBER_NULL); #else static const SCLP23_NAME(Integer) SCLP23_NAME(INT_NULL); static const SCLP23_NAME(Real) SCLP23_NAME(REAL_NULL); // arbitrary choice by me for number DAS static const SCLP23_NAME(Real) SCLP23_NAME(NUMBER_NULL); #endif #endif /* // C++ from values.h DAS PORT //static const Integer INT_NULL = MAXLONG; static const Integer INT_NULL; // REAL typedef double Real; // C++ from values.h DAS PORT //static const Real REAL_NULL = MINFLOAT; static const Real REAL_NULL; // NUMBER // arbitrary choice by me for number DAS // C++ from values.h DAS PORT //static const Real NUMBER_NULL = MINFLOAT; static const Real NUMBER_NULL; */ enum SCLP23_NAME(Access_type) { SCLP23_NAME(sdaiRO), SCLP23_NAME(sdaiRW), SCLP23_NAME(Access_type_unset) }; enum SCLP23_NAME(Commit_mode) { SCLP23_NAME(sdaiCOMMIT), SCLP23_NAME(sdaiABORT) } ; enum SCLP23_NAME(AttrFlag) { SCLP23_NAME(sdaiSET), SCLP23_NAME(sdaiUNSET) } ; enum SCLP23_NAME(ImplementationClass) { SCLP23_NAME(sdaiCLASS1), SCLP23_NAME(sdaiCLASS2), SCLP23_NAME(sdaiCLASS3), SCLP23_NAME(sdaiCLASS4), SCLP23_NAME(sdaiCLASS5) }; // conflict with part 22 EXPRESS: enum SCLP23_NAME(Error_id) { // // error codes taken from 10303-23, Jan 28, 1997. // ISO TC184/SC4/WG11 N 004 // SCLP23_NAME(sdaiNO_ERR) = 0, // No error SCLP23_NAME(sdaiSS_OPN) = 10, // Session open SCLP23_NAME(sdaiSS_NAVL) = 20, // Session not available SCLP23_NAME(sdaiSS_NOPN) = 30, // Session is not open SCLP23_NAME(sdaiRP_NEXS) = 40, // Repository does not exist SCLP23_NAME(sdaiRP_NAVL) = 50, // Repository not available SCLP23_NAME(sdaiRP_OPN) = 60, // Repository already opened SCLP23_NAME(sdaiRP_NOPN) = 70, // Repository is not open SCLP23_NAME(sdaiTR_EAB) = 80, // Transaction ended abnormally so it no longer exists SCLP23_NAME(sdaiTR_EXS) = 90, // Transaction exists SCLP23_NAME(sdaiTR_NAVL) = 100, // Transaction not available SCLP23_NAME(sdaiTR_RW) = 110, // Transaction read-write SCLP23_NAME(sdaiTR_NRW) = 120, // Transaction not read-write SCLP23_NAME(sdaiTR_NEXS) = 130, // Transaction does not exist SCLP23_NAME(sdaiMO_NDEQ) = 140, // SDAI-model not domain-equivalent SCLP23_NAME(sdaiMO_NEXS) = 150, // SDAI-model does not exist SCLP23_NAME(sdaiMO_NVLD) = 160, // SDAI-model invalid SCLP23_NAME(sdaiMO_DUP) = 170, // SDAI-model duplicate SCLP23_NAME(sdaiMX_NRW) = 180, // SDAI-model access not read-write SCLP23_NAME(sdaiMX_NDEF) = 190, // SDAI-model access is not defined SCLP23_NAME(sdaiMX_RW) = 200, // SDAI-model access read-write SCLP23_NAME(sdaiMX_RO) = 210, // SDAI-model access read-only SCLP23_NAME(sdaiSD_NDEF) = 220, // Schema definition is not defined SCLP23_NAME(sdaiED_NDEF) = 230, // Entity definition not defined SCLP23_NAME(sdaiED_NDEQ) = 240, // Entity definition not domain equivalent SCLP23_NAME(sdaiED_NVLD) = 250, // Entity definition invalid // SCLP23_NAME(sdaiED_NAVL) = 250, // Entity definition not available SCLP23_NAME(sdaiRU_NDEF) = 260, // Rule not defined SCLP23_NAME(sdaiEX_NSUP) = 270, // Expression evaluation not supported SCLP23_NAME(sdaiAT_NVLD) = 280, // Attribute invalid SCLP23_NAME(sdaiAT_NDEF) = 290, // Attribute not defined SCLP23_NAME(sdaiSI_DUP) = 300, // Schema instance duplicate SCLP23_NAME(sdaiSI_NEXS) = 310, // Schema instance does not exist SCLP23_NAME(sdaiEI_NEXS) = 320, // Entity instance does not exist SCLP23_NAME(sdaiEI_NAVL) = 330, // Entity instance not available SCLP23_NAME(sdaiEI_NVLD) = 340, // Entity instance invalid SCLP23_NAME(sdaiEI_NEXP) = 350, // Entity instance not exported SCLP23_NAME(sdaiSC_NEXS) = 360, // Scope does not exist SCLP23_NAME(sdaiSC_EXS) = 370, // Scope exists SCLP23_NAME(sdaiAI_NEXS) = 380, // Aggregate instance does not exist SCLP23_NAME(sdaiAI_NVLD) = 390, // Aggregate instance invalid SCLP23_NAME(sdaiAI_NSET) = 400, // Aggregate instance is empty SCLP23_NAME(sdaiVA_NVLD) = 410, // Value invalid SCLP23_NAME(sdaiVA_NEXS) = 420, // Value does not exist SCLP23_NAME(sdaiVA_NSET) = 430, // Value not set SCLP23_NAME(sdaiVT_NVLD) = 440, // Value type invalid SCLP23_NAME(sdaiIR_NEXS) = 450, // Iterator does not exist SCLP23_NAME(sdaiIR_NSET) = 460, // Current member is not defined SCLP23_NAME(sdaiIX_NVLD) = 470, // Index invalid SCLP23_NAME(sdaiER_NSET) = 480, // Event recording not set SCLP23_NAME(sdaiOP_NVLD) = 490, // Operator invalid SCLP23_NAME(sdaiFN_NAVL) = 500, // Function not available SCLP23_NAME(sdaiSY_ERR) = 1000 // Underlying system error }; typedef char * SCLP23_NAME(Time_stamp); typedef char * SCLP23_NAME(Entity_name); typedef char * SCLP23_NAME(Schema_name); /* enum Access_type {sdaiRO, sdaiRW}; enum Commit_mode {sdaiCOMMIT, sdaiABORT} ; enum AttrFlag { sdaiSET, sdaiUNSET } ; enum ImplementationClass { sdaiCLASS1, sdaiCLASS2, sdaiCLASS3, sdaiCLASS4, sdaiCLASS5 }; // conflict with part 22 EXPRESS: enum Error_id { sdaiNO_ERR = 0 , // No error sdaiSS_OPN = 10, // Session open sdaiSS_NAVL = 20, // Session not available sdaiSS_NOPN = 30, // Session is not open sdaiRP_NEXS = 40, // Repository does not exist sdaiRP_NAVL = 50, // Repository not available sdaiRP_OPN = 60, // Repository already opened sdaiRP_NOPN = 70, // Repository not open sdaiTR_EXS = 80, // Transaction exists sdaiTR_NRO = 90, // Transaction not read-only sdaiTR_NRW = 100, // Transaction not read-write sdaiTR_NEXS = 110, // Transaction does not exist sdaiSD_NDEF = 120, // Schema definition is not defined sdaiMO_NEXS = 130, // SDAI-model does not exist sdaiMO_NAVL = 140, // SDAI-model is not active sdaiMX_NVLD = 150, // SDAI-model access invalid sdaiMX_NRO = 160, // SDAI-model not read-only sdaiMX_NRW = 170, // SDAI-model not read-write sdaiMX_NDEF = 180, // SDAI-model access is not defined sdaiMO_NVLD = 190, // SDAI-model invalid sdaiMO_DUP = 200, // SDAI-model duplicate sdaiED_NDEF = 210, // Entity definition not defined sdaiTY_NDEF = 220, // Type not defined sdaiTY_NVLD = 230, // Type invalid sdaiRU_NEXS = 240, // Rule does not exist sdaiFN_NAVL = 250, // Function not available sdaiEI_NEXS = 260, // Entity instance does not exist sdaiAT_NDEF = 270, // Attribute not defined sdaiSI_DUP = 280, // Schema instance duplicate sdaiVT_NVLD = 290, // Value type invalid sdaiAG_NEXS = 300, // Aggregate does not exist sdaiIR_NEXS = 310, // Iterator does not exist sdaiAG_NSET = 320, // Aggregate is empty sdaiIR_NSET = 330, // Current member is not defined sdaiAD_NVLD = 340, // Aggregate definition invalid sdaiVA_NSET = 350, // Value not set sdaiIX_NVLD = 360, // Index invalid sdaiED_NAVL = 370, // Entity definition is not available sdaiSI_NEXS = 380, // Schema instance does not exist sdaiEI_NAVL = 390, // Entity instance not available sdaiSC_DUP = 400, // Scope duplicate sdaiEI_NEXP = 410, // Entity instance not exported sdaiMO_NINT = 420, // SDAI-model not interoperable sdaiSY_ERR = 1000 // Underlying system error }; */ #include #include // define Object which I am calling sdaiObject for now - DAS #include /****************************************************************************** ENUMERATION These types do not use the interface specified. The interface used is to enumerated values. The enumerations are mapped in the following way: * enumeration-item-from-schema ==> enumeration item in c++ enum clause * all enumeration items in c++ enum are in upper case * the value ENUM_NULL is used to represent NULL for all enumerated types *****************************************************************************/ #include /****************************************************************************** BOOLEAN and LOGICAL Logical are implemented as an enumeration in sdaiEnum.h: Boolean are implemented as an enumeration in sdaiEnum.h: ******************************************************************************/ // ***note*** this file needs classes from sdaiEnum.h // define DAObjectID and classes PID, PID_DA, PID_SDAI, DAObject, DAObject_SDAI #include #include #include /****************************************************************************** SELECT Selects are represented as subclasses of the SCLP23(Select) class in sdaiSelect.h ******************************************************************************/ #include //typedef char * SCLP23_NAME(Entity_name); class SCLP23_NAME(Model_contents); typedef SCLP23_NAME(Model_contents) * SCLP23_NAME(Model_contents_ptr); typedef SCLP23_NAME(Model_contents_ptr) SCLP23_NAME(Model_contents_var); #include #include #include #include #include #ifndef CC_NO_NESTED_CLASSES #ifndef PART26 }; // end struct P23_NAMESPACE #endif // PART26 #endif // CC_NO_NESTED_CLASSES #ifdef PART26 //#define SDAI_DEF_TIE_P26_Application_instance(x) DEF_TIE_P26_Application_instance(x) #define Application_instance_i SCLP23(Application_instance) DEF_TIE_IDL_Application_instance(Application_instance_i) //DEF_TIE_P26_Application_instance(Application_instance_i) //DEF_TIE_IDL_Application_instance(SCLP23(Application_instance)) #endif // ENTITY extern SCLP23(Application_instance) NilSTEPentity; #define ENTITY_NULL &NilSTEPentity #define NULL_ENTITY &NilSTEPentity #define S_ENTITY_NULL &NilSTEPentity //#define STEPentity SCLP23_NAME(Application_instance); typedef SCLP23(Application_instance) STEPentity; typedef SCLP23(Application_instance)* STEPentity_ptr; typedef STEPentity_ptr STEPentity_var; typedef SCLP23(Application_instance)* STEPentityPtr; typedef SCLP23(Application_instance)* STEPentityH; extern SCLP23(Application_instance) * ReadEntityRef(G4std::istream &in, ErrorDescriptor *err, char *tokenList, InstMgr * instances, int addFileId); #define SdaiInteger SCLP23(Integer) #define SdaiReal SCLP23(Real) #define STEPenumeration SCLP23(Enum) #define SdaiSelect SCLP23(Select) #define SdaiString SCLP23(String) #define SdaiBinary SCLP23(Binary) #define S_INT_NULL SCLP23(INT_NULL) #define S_REAL_NULL SCLP23(REAL_NULL) #define S_NUMBER_NULL SCLP23(NUMBER_NULL) /****************************************************************************** AGGREGATE TYPES Aggregate types are accessed generically. (There are not seperate classes for the different types of aggregates.) Aggregates are implemented through the STEPaggregate class. ******************************************************************************/ #ifdef __OSTORE__ SCLP23(BOOL) *create_BOOL(os_database *db); #else inline SCLP23(BOOL) *create_BOOL() { return new SCLP23(BOOL) ; } #endif #ifdef __OSTORE__ SCLP23(LOGICAL) *create_LOGICAL(os_database *db); #else inline SCLP23(LOGICAL) *create_LOGICAL() { return new SCLP23(LOGICAL) ; } #endif // below is outdated typedef SCLP23(Select) * SdaiSelectH; //#define INT_NULL MAXLONG // C from limits.h //#define S_INT_NULL LONG_MAX //#define S_REAL_NULL 10 ** DBL_MAX_10_EXP //#define FLT_MIN 1E-37 - port 29-Mar-1994 kcm // C++ from values.h DAS PORT //#define REAL_NULL MINFLOAT // C from float.h //#define S_REAL_NULL FLT_MIN //#define NUMBER_NULL MINFLOAT // C from float.h //#define S_NUMBER_NULL FLT_MIN #endif