234 lines
7.9 KiB
C++
234 lines
7.9 KiB
C++
#ifndef STEPENTITY_H
|
|
#define STEPENTITY_H 1
|
|
|
|
//#ifdef PART26
|
|
//#include <CORBA.h>
|
|
//#include <corbaIncludes.h>
|
|
//#endif
|
|
|
|
/*
|
|
* NIST STEP Core Class Library
|
|
* clstepcore/sdaiApplication_instance.h
|
|
* April 1997
|
|
* K. C. Morris
|
|
* David Sauder
|
|
|
|
* Development of this software was funded by the United States Government,
|
|
* and is not subject to copyright.
|
|
*/
|
|
|
|
/* $Id: sdaiApplication_instance.h,v 1.1 2000/01/21 13:42:43 gcosmo Exp $ */
|
|
|
|
//#ifdef __OSTORE__
|
|
//#include <ostore/ostore.hh> // Required to access ObjectStore Class Library
|
|
//void Application_instance_access_hook_in(void *object,
|
|
// enum os_access_reason reason, void *user_data,
|
|
// void *start_range, void *end_range);
|
|
//#endif
|
|
|
|
//#ifdef __O3DB__
|
|
//#include <OpenOODB.h>
|
|
//#endif
|
|
|
|
//#include <stdio.h>
|
|
//#include <STEPattributeList.h>
|
|
|
|
//#include <EntityInstance.h>
|
|
|
|
//#include <sdai.h>
|
|
|
|
//class STEPattributeList;
|
|
//class STEPattribute;
|
|
|
|
//#include <ctype.h>
|
|
//#include <Str.h>
|
|
|
|
//class InstMgr;
|
|
//class EntityDescriptor;
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
// SCLP23(Application_instance) used to be STEPentity
|
|
|
|
//class SCLP23_NAME(Application_instance) /* : public SCLP23(DAObject_SDAI) */
|
|
class SCLP23_NAME(Application_instance) : public SCLP23_NAME(DAObject_SDAI)
|
|
{
|
|
private:
|
|
int _cur; // provides a built-in way of accessing attributes in order.
|
|
|
|
public:
|
|
STEPattributeList attributes;
|
|
int STEPfile_id;
|
|
ErrorDescriptor _error;
|
|
SCLstring *p21Comment;
|
|
// registry additions
|
|
EntityDescriptor *eDesc;
|
|
|
|
// head entity for multiple inheritance. If it is null then this
|
|
// SCLP23_NAME(Application_instance) is not part of a multiply inherited entity. If it
|
|
// points to a SCLP23_NAME(Application_instance) then this SCLP23_NAME(Application_instance) is part of a mi entity
|
|
// and head points at the root SCLP23_NAME(Application_instance) of the primary inheritance
|
|
// path (the one that is the root of the leaf entity).
|
|
SCLP23_NAME(Application_instance) *headMiEntity;
|
|
// these form a chain of other entity parents for multiple inheritance
|
|
SCLP23_NAME(Application_instance) *nextMiEntity;
|
|
|
|
protected:
|
|
int _complex;
|
|
|
|
public:
|
|
SCLP23_NAME(Application_instance) ();
|
|
SCLP23_NAME(Application_instance) (int fileid, int complex = 0);
|
|
virtual ~SCLP23_NAME(Application_instance)();
|
|
|
|
int IsComplex() const { return _complex; }
|
|
|
|
#ifdef PART26
|
|
// virtual P26::Application_instance_ptr create_TIE();
|
|
virtual IDL_Application_instance_ptr create_TIE();
|
|
#endif
|
|
|
|
#ifndef PART26
|
|
void StepFileId (int fid) { STEPfile_id = fid; }
|
|
int StepFileId() const { return STEPfile_id; }
|
|
#else
|
|
void StepFileId (CORBA::Long fid,
|
|
CORBA::Environment &IT_env=CORBA::IT_chooseDefaultEnv ())
|
|
throw (CORBA::SystemException)
|
|
{ STEPfile_id = fid; }
|
|
CORBA::Long StepFileId (CORBA::Environment &IT_env=
|
|
CORBA::IT_chooseDefaultEnv ())
|
|
throw (CORBA::SystemException)
|
|
{ return STEPfile_id; }
|
|
|
|
// The IDL for the following 2 functions
|
|
// string GetPersistentLabel() raises(SDAIException);
|
|
// string GetDescription() raises(SDAIException);
|
|
|
|
// virtual char * GetPersistentLabel (CORBA::Environment &IT_env=CORBA::IT_chooseDefaultEnv ()) throw (CORBA::SystemException, SCLP26(SDAIException))
|
|
virtual char * GetPersistentLabel (CORBA::Environment &IT_env=CORBA::IT_chooseDefaultEnv ()) throw (CORBA::SystemException, SDAIException)
|
|
{ return 0; }
|
|
|
|
// virtual char * GetDescription (CORBA::Environment &IT_env=CORBA::IT_chooseDefaultEnv ()) throw (CORBA::SystemException, SCLP26(SDAIException))
|
|
virtual char * GetDescription (CORBA::Environment &IT_env=CORBA::IT_chooseDefaultEnv ()) throw (CORBA::SystemException, SDAIException)
|
|
{ return 0; }
|
|
|
|
#endif
|
|
|
|
void AddP21Comment(SCLstring &s, int replace = 1);
|
|
void AddP21Comment(const char *s, int replace = 1);
|
|
void DeleteP21Comment() { delete p21Comment; p21Comment = 0; }
|
|
|
|
// guaranteed a string (may be null string)
|
|
const char *P21Comment()
|
|
{ return ( p21Comment ? p21Comment->chars() : "" ); }
|
|
// returns null if no comment exists
|
|
const char *P21CommentRep()
|
|
{ return ( p21Comment ? p21Comment->rep() : 0 ); }
|
|
|
|
const char *EntityName( const char *schnm =NULL) const;
|
|
|
|
virtual const EntityDescriptor * IsA(const EntityDescriptor *) const;
|
|
|
|
virtual Severity ValidLevel(ErrorDescriptor *error, InstMgr *im,
|
|
int clearError = 1);
|
|
ErrorDescriptor &Error() { return _error; }
|
|
// clears entity's error and optionally all attr's errors
|
|
void ClearError(int clearAttrs = 1);
|
|
// clears all attr's errors
|
|
void ClearAttrError();
|
|
// void EnforceOptionality(int on = 1);
|
|
|
|
virtual SCLP23_NAME(Application_instance) *Replicate();
|
|
|
|
// ACCESS attributes in order.
|
|
int AttributeCount();
|
|
STEPattribute * NextAttribute();
|
|
void ResetAttributes() { _cur =0; }
|
|
|
|
// READ
|
|
virtual Severity STEPread(int id, int addFileId,
|
|
class InstMgr * instance_set,
|
|
G4std::istream& in =G4cin, const char *currSch =NULL,
|
|
int useTechCor =1);
|
|
virtual void STEPread_error(char c, int index, G4std::istream& in);
|
|
|
|
// WRITE
|
|
virtual void STEPwrite(G4std::ostream& out =G4cout, const char *currSch =NULL,
|
|
int writeComments = 1);
|
|
virtual const char * STEPwrite(SCLstring &buf, const char *currSch =NULL);
|
|
|
|
void WriteValuePairs(G4std::ostream& out, const char *currSch =NULL,
|
|
int writeComments = 1, int mixedCase = 1);
|
|
|
|
void STEPwrite_reference (G4std::ostream& out =G4cout);
|
|
const char * STEPwrite_reference (SCLstring &buf);
|
|
|
|
void beginSTEPwrite(G4std::ostream& out =G4cout); // writes out the SCOPE section
|
|
void endSTEPwrite(G4std::ostream& out =G4cout);
|
|
|
|
// MULTIPLE INHERITANCE
|
|
int MultipleInheritance() { return !(headMiEntity == 0); }
|
|
|
|
void HeadEntity(SCLP23_NAME(Application_instance) *se) { headMiEntity = se; }
|
|
SCLP23_NAME(Application_instance) * HeadEntity() { return headMiEntity; }
|
|
|
|
SCLP23_NAME(Application_instance) *GetNextMiEntity() { return nextMiEntity; }
|
|
SCLP23_NAME(Application_instance) *GetMiEntity(char *EntityName);
|
|
void AppendMultInstance(SCLP23_NAME(Application_instance) *se);
|
|
|
|
#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
|
|
|
|
protected:
|
|
STEPattribute * GetSTEPattribute (const char *);
|
|
STEPattribute * MakeDerived (const char *);
|
|
STEPattribute * MakeRedefined (STEPattribute *redefiningAttr,
|
|
const char * nm);
|
|
|
|
virtual void CopyAs (SCLP23_NAME(Application_instance) *);
|
|
void PrependEntityErrMsg();
|
|
public:
|
|
// these functions are going to go away in the future.
|
|
int SetFileId(int fid) { return STEPfile_id = fid; }
|
|
int GetFileId() const { return STEPfile_id; }
|
|
int FileId (int fid) { return STEPfile_id = fid; }
|
|
int FileId() const { return STEPfile_id; }
|
|
|
|
}
|
|
;
|
|
|
|
// current style of CORBA handles for Part 23
|
|
typedef SCLP23_NAME(Application_instance)* SCLP23_NAME(Application_instance_ptr);
|
|
typedef SCLP23_NAME(Application_instance_ptr) SCLP23_NAME(Application_instance_var);
|
|
|
|
// Everything below has been moved to sdai.h
|
|
/*
|
|
//#ifdef PART26
|
|
//DEF_TIE_P26_IDL_Application_instance(SCLP23_NAME(Application_instance))
|
|
//#endif
|
|
*/
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
//extern SCLP23_NAME(Application_instance) NilSTEPentity;
|
|
//#define ENTITY_NULL &NilSTEPentity
|
|
//#define NULL_ENTITY &NilSTEPentity
|
|
|
|
//typedef SCLP23_NAME(Application_instance)* STEPentity_ptr;
|
|
//typedef STEPentity_ptr STEPentity_var;
|
|
|
|
//typedef SCLP23_NAME(Application_instance)* STEPentityPtr;
|
|
//typedef SCLP23_NAME(Application_instance)* STEPentityH;
|
|
|
|
//extern SCLP23_NAME(Application_instance) *
|
|
//ReadEntityRef(G4std::istream &in, ErrorDescriptor *err, char *tokenList,
|
|
// InstMgr * instances, int addFileId);
|
|
|
|
//typedef SCLP23_NAME(Application_instance) * (* Creator) () const;
|
|
//typedef SCLP23_NAME(Application_instance) * (* Creator) () ;
|
|
|
|
#endif
|