Files
geant4/source/geometry/solids/STEP/include/sdaiDaObject.h
T
2016-06-08 15:42:07 +02:00

663 lines
21 KiB
C++

#ifndef SDAIDAOBJECT_H
#define SDAIDAOBJECT_H 1
/*
#include <sclprefixes.h>
#ifdef PART26
#include <CORBA.h>
#include <corbaIncludes.h>
#else
typedef char* DAObjectID;
#endif
#include <Object.h>
*/
#ifndef PART26
typedef char* SCLP23_NAME(DAObjectID);
#endif
// interface PID (ISO/DIS 10303-23:1996(E) 5.3.10.1)
// Also, CORBA POS specification, Section 5.4
//
// The PID class maintains the persistent object identifier for every
// persistent object, objects of class DAObject, and objects of any class
// derived directly or indirectly from DAObject.
//
// POS: The PID identifies one or more locations within a Datastore that
// represent the persistent data of an object and generates a string
// identifier for that data. An object must have a PID in order to store
// its data persistently.
//
/*
The EXPRESS ENTITY application_instance from the SDAI_data_type_schema from
clause 10 in ISO 10303-22, shall be mapped to the C++ class
Application_instance. The class Application_instance shall be a subtype of
the C++ class DAObject and of the C++ class Entity_instance.
The class DAObject is supported by the classes PID, PID_SDAI and the type
SCLP23(DAObjectID) as follows:
*/
class SCLP23_NAME(PID) : public SCLP23_NAME(sdaiObject)
{
public:
// These are in the IDL generated code for Part 26. I will have to think about
// why they should be here (for Part 23). DAS
// static PID_ptr _duplicate(PID_ptr);
// static PID_ptr _narrow(SCLP23_NAME(sdaiObject_ptr));
// static PID_ptr _nil();
SCLP23_NAME(String) _datastore_type ;
SCLP23_NAME(String) _pidstring ;
// constructor/destructor
SCLP23_NAME(PID)();
virtual ~SCLP23_NAME(PID)();
#ifndef PART26
/*
The Datestore_type attribute shall identify the type of the underlying
datastore.
*/
char* Datastore_type() const { return (char*) _datastore_type.chars(); }
void Datastore_type(char *x) { _datastore_type = x; }
/*
This function shall return a string version of the receiver.
*/
char* get_PIDString();
#else
virtual void datastore_type (const char * x, CORBA::Environment &IT_env=CORBA::IT_chooseDefaultEnv ()) throw (CORBA::SystemException)
{ _datastore_type = x; }
virtual char * datastore_type (CORBA::Environment &IT_env=CORBA::IT_chooseDefaultEnv ()) throw (CORBA::SystemException)
{ return CORBA::string_dupl(_datastore_type); }
virtual char * get_PIDString (CORBA::Environment &IT_env=CORBA::IT_chooseDefaultEnv ()) throw (CORBA::SystemException)
{ return CORBA::string_dupl(_pidstring); }
#endif
#ifdef __OSTORE__
static os_typespec* get_os_typespec();
#endif
};
#ifdef PART26
//DEF_TIE_PID( SCLP23_NAME(PID) )
#endif
typedef SCLP23_NAME(PID)* SCLP23_NAME(PID_ptr);
typedef SCLP23_NAME(PID_ptr) SCLP23_NAME(PID_var);
// interface PID_DA (ISO/DIS 10303-23:1996(E) 5.3.10.3)
// Also, CORBA POS specification, Direct Access Protocol, Section 5.10.1
//
// The Direct Access Protocol supports direct access to persistent data
// through typed attributes organized in data objects that are defined
// in a Data Definition Language (DDL). An object using this protocol
// whould represent its persistent data as one or more interconnected
// data objects, For uniformity, the persistent data of an object is
// described as a single data object; however, that data object might be
// the root of a graph of data objects interconnected by stored data
// object references. If an object uses multiple data objects, the
// object traverses the graph by following stored data object references.
//
// The PID_DA class maintains the persistent object identifier for an
// application DAObject.
//
// POS: The Persistent Identifiers (PIDs) used by the PDS_DA contain
// an object identifier that is local to the particular PDS. This value
// may be accessed through this extension to the CosPersistencePID
// interface.
//
class SCLP23_NAME(PID_DA): public SCLP23_NAME(PID)
{
public:
SCLP23_NAME(String) _oid ;
// oid (ISO/DIS 10303-23:1996(E) 5.3.10.3)
//
// This attribute shall set and return the string representation of the
// persistent identifier, local to the Model_contents, of the DAObject
// referred to by this object.
//
// POS: This returns the data object identifier used by this PDS for
// the data object specified by the PID. The SCLP23(DAObjectID) type is
// defined as an unbounded sequence of bytes that may be
// vendor-dependent.
//
// constructor/destructor
SCLP23_NAME(PID_DA)();
virtual ~SCLP23_NAME(PID_DA)();
#ifndef PART26
virtual void oid (const SCLP23_NAME(DAObjectID) x) { _oid = x; }
virtual SCLP23_NAME(DAObjectID) oid () const
{ return (char*) _oid.chars(); }
#else
// virtual void oid (const SCLP26(DAObjectID) x, CORBA::Environment &IT_env=CORBA::IT_chooseDefaultEnv ()) throw (CORBA::SystemException)
virtual void oid (const DAObjectID x, CORBA::Environment &IT_env=CORBA::IT_chooseDefaultEnv ()) throw (CORBA::SystemException)
{ _oid = x; }
// virtual SCLP26(DAObjectID) oid (CORBA::Environment &IT_env=CORBA::IT_chooseDefaultEnv ()) throw (CORBA::SystemException)
virtual DAObjectID oid (CORBA::Environment &IT_env=CORBA::IT_chooseDefaultEnv ()) throw (CORBA::SystemException)
{ return CORBA::string_dupl(_oid); }
#endif
#ifdef __OSTORE__
static os_typespec* get_os_typespec();
#endif
};
#ifdef PART26
//DEF_TIE_PID_DA( SCLP23(PID_DA) )
#endif
typedef SCLP23_NAME(PID_DA)* SCLP23_NAME(PID_DA_ptr);
typedef SCLP23_NAME(PID_DA_ptr) SCLP23_NAME(PID_DA_var);
// interface PID_SDAI (ISO/DIS 10303-23:1996(E) 5.3.10.2)
//
// The PID_SDAI class maintains the persistent object identifier for
// a Model_contents object.
//
class SCLP23_NAME(PID_SDAI) : public SCLP23_NAME(PID)
{
public:
SCLP23_NAME(String) _modelid ;
// static PID_SDAI_ptr _duplicate(PID_SDAI_ptr);
// static PID_SDAI_ptr _narrow(SCLP23_NAME(sdaiObject_ptr));
// static PID_SDAI_ptr _nil();
// constructor/destructor
SCLP23_NAME(PID_SDAI)();
virtual ~SCLP23_NAME(PID_SDAI)();
// Modelid (ISO/DIS 10303-23:1996(E) 5.3.10.3)
//
// This attribute shall set and return the string representation of
// the persistent identifier of the cluster of data for the
// Model_contents referred to by this PID.
//
#ifndef PART26
virtual void Modelid (const char * x) { _modelid = x; }
virtual char * Modelid () const { return (char*) _modelid.chars(); }
#else
virtual void Modelid (const char * x, CORBA::Environment &IT_env=CORBA::IT_chooseDefaultEnv ()) throw (CORBA::SystemException)
{ _modelid = x; }
virtual char * Modelid (CORBA::Environment &IT_env=CORBA::IT_chooseDefaultEnv ()) throw (CORBA::SystemException)
{ return CORBA::string_dupl(_modelid); }
#endif
#ifdef __OSTORE__
static os_typespec* get_os_typespec();
#endif
};
#ifdef PART26
//DEF_TIE_PID_SDAI( SCLP23(PID_SDAI) )
#endif
typedef SCLP23_NAME(PID_SDAI)* SCLP23_NAME(PID_SDAI_ptr);
typedef SCLP23_NAME(PID_SDAI_ptr) SCLP23_NAME(PID_SDAI_var);
// interface DAObject (ISO/DIS 10303-23:1996(E) 5.3.10.5)
// Also, CORBA POS Section 5.10.2, Direct Access Protocol.
//
// From POS: The DAObject interface provides operations that many data
// object clients need. A Datastore implementation may provide support
// for these operations automatically for its data objects. A data object
// is not required to support this interface. A client can obtain access
// to these operations by narrowing a data object reference to the
// DAObject interface.
//
// predefine these _ptr since they are used inside this class
class SCLP23_NAME(DAObject);
typedef SCLP23_NAME(DAObject)* SCLP23_NAME(DAObject_ptr);
typedef SCLP23_NAME(DAObject_ptr) SCLP23_NAME(DAObject_var);
class SCLP23_NAME(DAObject) : public SCLP23_NAME(sdaiObject)
//class DAObject : public SCLP23_NAME(sdaiObject)
{
public:
SCLP23_NAME(String) _dado_oid;
// static DAObject_ptr _duplicate(DAObject_ptr);
// static DAObject_ptr _narrow(SCLP23_NAME(sdaiObject_ptr));
// static DAObject_ptr _nil();
// dado_same (ISO/DIS 10303-23:1996(E) 5.3.10.5)
//
// Returns TRUE if obj points to the same object as self
//
// POS specification description: This returns true if the target
// data object and the parameter data object are the same data object.
// This operation can be used to test data object references for
// identity.
//
// constructor/destructor
SCLP23_NAME(DAObject)();
virtual ~SCLP23_NAME(DAObject)();
#ifdef PART26
// virtual SCLP26(Application_instance_ptr) create_TIE();
virtual IDL_Application_instance_ptr create_TIE();
#endif
#ifndef PART26
SCLBOOL_H(Bool) dado_same(SCLP23_NAME(DAObject_ptr) obj)
{
// this will make the compiler happy that we used obj
strcmp(obj->dado_oid(),dado_oid());
return SCLBOOL_H(BUnset);
}
#else
virtual SCLBOOL_H(Bool) dado_same (SCLP23_NAME(DAObject_ptr) obj, CORBA::Environment &IT_env=CORBA::IT_chooseDefaultEnv ()) throw (CORBA::SystemException) { return SCLBOOL_H(BUnset); }
#endif
// Get persistent label (ISO/DIS 10303-22:1996(E) 10.11.6)
//
// This operation returns a persistent label for the specified
// application instance. The label shall be unique within the
// repository containing the SDAI-model containing the application
// instance. Any subsequent request for a persistent label for the
// same application instance shall return the same persistent label
// in the current or nay subsequent SDAI session.
//
// Possible Error indicators:
//
// sdaiTR_NEXS The transaction has not been started
// sdaiTR_NAVL The transaction is currently not available
// sdaiTR_EAB The transaction ended abnormally
// sdaiRP_NOPN The repository is not open
// sdaiEI_NEXS The entity instance does not exist
// sdaiFN_NAVL This function is not supported by the implementation
// sdaiSY_ERR An underlying system error occurred
//
// POS specification description: This returns the object identifier
// for the data object. The scope of data object identifiers is
// implementation-specific, but is not guaranteed to be global.
//
/* jg == The return value of this function in Part 23 is PID_DA which
seems wrong. We follow the CORBAservices specification here.
(Persistent Object Service Specification, Section 5.10). Also
note that the return value as described in the text above
should be a string type.
*/
#ifndef PART26
SCLP23_NAME(DAObjectID) dado_oid()
{ return (char*) _dado_oid.chars(); }
#else
// virtual SCLP26(DAObjectID) dado_oid (CORBA::Environment &IT_env=CORBA::IT_chooseDefaultEnv ()) throw (CORBA::SystemException)
virtual DAObjectID dado_oid (CORBA::Environment &IT_env=CORBA::IT_chooseDefaultEnv ()) throw (CORBA::SystemException)
{ return CORBA::string_dupl(_dado_oid); }
#endif
// dado_pid
//
// POS specification description: This returns a PID_DA for the
// data object.
//
/* jg == This function is not included in Part 23 and 26. However, it is
part of interface DAObject in the specification of the
Persistent Object Service.
*/
#ifndef PART26
SCLP23_NAME(PID_DA_ptr) dado_pid()
{ return 0; }
#else
virtual SCLP23_NAME(PID_DA_ptr) dado_pid (CORBA::Environment &IT_env=CORBA::IT_chooseDefaultEnv ()) throw (CORBA::SystemException)
{ return 0; }
#endif
// dado_remove (ISO/DIS 10303-23:1996(E) 5.3.10.5)
//
// This function shall delete the object from persistent store and
// releases its resources. The function need not delete the aggregate-
// valued attributes of an object.
//
// POS specification description: This deletes the object from the
// persistent store and deletes the in-memory data object.
//
#ifndef PART26
void dado_remove()
{ }
#else
virtual void dado_remove (CORBA::Environment &IT_env=CORBA::IT_chooseDefaultEnv ()) throw (CORBA::SystemException)
{ }
#endif
// dado_free (ISO/DIS 10303-23:1996(E) 5.3.10.5)
//
// This function shall inform the implementation that it is free
// to move the object back to the persistent store.
//
// POS specification description: This informs the PDS (Persistent
// Data Service) that the data object is not required for the time
// being, and the PDS may move it back to persistent store. The data
// object must be preserved and must be brought back the next time it is
// referenced. This operation is only a hint and is provided to improve
// performance and resource usage.
//
#ifndef PART26
void dado_free()
{ }
#else
virtual void dado_free (CORBA::Environment &IT_env=CORBA::IT_chooseDefaultEnv ()) throw (CORBA::SystemException)
{ }
#endif
#ifdef __OSTORE__
static os_typespec* get_os_typespec();
virtual void Access_hook_in(void *object,
enum os_access_reason reason, void *user_data,
void *start_range, void *end_range);
#endif
};
/*
5.3.10.1 DAObject_SDAI
*/
class SCLP23_NAME(DAObject_SDAI) : public SCLP23_NAME(DAObject) {
public:
SCLP23_NAME(DAObject_SDAI)();
// SCLP23_NAME(DAObject_SDAI)(const SCLP23_NAME(DAObject_SDAI)&);
virtual ~SCLP23_NAME(DAObject_SDAI)();
#ifdef PART26
// virtual SCLP26(Application_instance_ptr) create_TIE();
virtual IDL_Application_instance_ptr create_TIE();
#endif
/*
5.3.10.1.1 Find entity instance SDAI-model
*/
// Model_ptr Owning_model() const;
/*
The Owning_model function shall implement the SDAI operation, Find
entity instance SDAI-model.
The following specifies the coorespondence between each SDAI
input/output and its equivalent specified in this Part.
SDAI C++
------ -------
Object receiver
Model return value
5.3.10.1.2 Find entity instance users
*/
// Object__list_var FindObjectUsers(const
// Schema_instance__list_var& aggr) const;
/*
The FindObjectUsers function shall implement the SDAI operation,
Find entity instance users.
The following specifies the coorespondence between each SDAI
input/output and its equivalent specified in this Part.
SDAI C++
-------- --------
Instance receiver
Domain aggr
Result return value
5.3.10.1.3 Is same
*/
SCLLOG_H(Logical) IsSame(const SCLP23_NAME(sdaiObject_ptr)& otherEntity) const;
/*
Function:
The IsSame function shall determine whether the parameter otherEntity
refers to the same instance as the receiver. This function shall
implement the behaviour of the EXPRESS operator (:=:).
Output:
This function shall return TRUE if the two instances are identical.
This function shall return FALSE if the two instances are not identical.
This function shall return UNKNOWN if either instance is unset.
Possible error indicators:
sdaiMX_NDEF // SDAI-model access not defined
sdaiEI_NEXS // Entity instance does not exist
sdaiTY_NDEF // Type not defined
sdaiSY_ERR // Underlying system error
Origin: Convenience function
5.3.10.1.4 Get attribute
*/
#ifdef SDAI_CPP_LATE_BINDING
Any_var GetAttr(const Attribute_ptr& attDef);
Any_var GetAttr(const char* attName);
#endif
/*
The GetAttr functions shall implement the SDAI operation, Get attribute.
The following specifies the coorespondence between each SDAI
input/output and its equivalent specified in this Part.
SDAI C++
------ ---------
Object receiver
Attribute attDef, attName
Value return value
5.3.10.1.5 Get instance type
*/
#ifdef SDAI_CPP_LATE_BINDING
const Entity_ptr GetInstanceType() const;
#endif
/*
Function:
The GetInstanceType functions shall implement the SDAI operation,
Get instance type.
The following specifies the coorespondence between each SDAI
input/output and its equivalent specified in this Part.
SDAI C++
------ --------
Object receiver
Type return value
5.3.10.1.6 Is instance of
*/
SCLBOOL_H(Bool) IsInstanceOf(const char* typeName) const;
#ifdef SDAI_CPP_LATE_BINDING
SCLBOOL_H(Bool) IsInstanceOf(const Entity_ptr& otherEntity) const;
#endif
/*
Function:
The IsInstanceOf functions shall implement the SDAI operation Is
instance of.
The following specifies the coorespondence between each SDAI
input/output and its equivalent specified in this Part.
SDAI C++
------ --------
Object receiver
Type typeName, otherEntity
Result return value
5.3.10.1.7 Is kind of
*/
SCLBOOL_H(Bool) IsKindOf(const char* typeName) const;
#ifdef SDAI_CPP_LATE_BINDING
SCLBOOL_H(Bool) IsKindOf(const Entity_ptr& theType) const;
#endif
/*
The IsKindOf functions shall implement the SDAI operation, Is kind of.
The following specifies the coorespondence between each SDAI
input/output and its equivalent specified in this Part.
SDAI C++
------ --------
Object receiver
Type typeName, theType
Result return value
5.3.10.1.8 Is SDAI kind of
*/
SCLBOOL_H(Bool) IsSDAIKindOf(const char* typeName) const;
#ifdef SDAI_CPP_LATE_BINDING
SCLBOOL_H(Bool) IsSDAIKindOf(const Entity_ptr& theType) const;
#endif
/*
The IsSDAIKindOf functions shall implement the SDAI operation,
Is SDAI Kind Of.
The following specifies the coorespondence between each SDAI
input/output and its equivalent specified in this Part.
SDAI C++
------ --------
Object receiver
Type typeName, theType
Result return value
5.3.10.1.9 Test attribute
*/
#ifdef SDAI_CPP_LATE_BINDING
SCLBOOL_H(Bool) TestAttr(const Attribute_ptr& attDef);
SCLBOOL_H(Bool) TestAttr(const char* attName) const;
#endif
/*
The TestAttr functions shall implement the SDAI operation,
Test attribute.
The following specifies the coorespondence between each SDAI
input/output and its equivalent specified in this Part.
SDAI C++
------ ---------
Object receiver
Attribute attDef, attName
Result return value
5.3.10.1.10 Get instance type name
*/
#ifndef SDAI_CPP_LATE_BINDING
char * GetInstanceTypeName() const;
#endif
/*
Function:
The GetInstanceType function shall retrieve the name of the type of
the receiver.
Output:
This function shall return a String which contains the name of the
type of the receiver. The returned name shall be the name as it
appears in the Dictionary Model.
Possible error indicators:
sdaiMX_NDEF // SDAI-model access not defined
sdaiEI_NEXS // Entity instance does not exist
sdaiSY_ERR // Underlying system error
Origin: Convenience function
*/
#ifdef __OSTORE__
static os_typespec* get_os_typespec();
virtual void Access_hook_in(void *object,
enum os_access_reason reason, void *user_data,
void *start_range, void *end_range);
#endif
};
typedef SCLP23_NAME(DAObject_SDAI)* SCLP23_NAME(DAObject_SDAI_ptr);
typedef SCLP23_NAME(DAObject_SDAI_ptr) SCLP23_NAME(DAObject_SDAI_var);
class SCLP23_NAME(DAObject__set) {
public:
#ifdef __OSTORE__
os_Collection<SCLP23_NAME(DAObject_ptr)> &_rep;
os_Cursor<SCLP23_NAME(DAObject_ptr)> _cursor;
SCLBOOL_H(Bool) _first;
#endif
SCLP23_NAME(DAObject__set)(int = 16);
~SCLP23_NAME(DAObject__set)();
SCLP23_NAME(DAObject_ptr) retrieve(int index);
int is_empty();
#ifndef __OSTORE__
SCLP23_NAME(DAObject_ptr)& operator[](int index);
#endif
void Insert(SCLP23_NAME(DAObject_ptr), int index);
void Append(SCLP23_NAME(DAObject_ptr));
void Remove(int index);
#ifndef __OSTORE__
int Index(SCLP23_NAME(DAObject_ptr));
void Clear();
#endif
int Count();
#ifdef __OSTORE__
// cursor stuff
SCLP23_NAME(DAObject_ptr) first();
SCLP23_NAME(DAObject_ptr) next();
SCLP23_NAME(Integer) more();
#endif
private:
void Check(int index);
private:
SCLP23_NAME(DAObject_ptr)* _buf;
int _bufsize;
int _count;
public:
#ifdef __OSTORE__
static os_typespec* get_os_typespec();
#endif
};
typedef SCLP23_NAME(DAObject__set)* SCLP23_NAME(DAObject__set_ptr);
typedef SCLP23_NAME(DAObject__set_ptr) SCLP23_NAME(DAObject__set_var);
#endif