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

742 lines
20 KiB
C++

#ifndef STEPAGGREGATE_H
#define STEPAGGREGATE_H
/*
* NIST STEP Core Class Library
* clstepcore/STEPaggregate.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: STEPaggregate.h,v 1.4 2000/01/21 13:42:31 gcosmo Exp $ */
#ifdef __OSTORE__
#include <ostore/ostore.hh> // Required to access ObjectStore Class Library
#endif
#ifdef __O3DB__
#include <OpenOODB.h>
#endif
class InstMgr;
class STEPaggregate;
#ifndef _ODI_OSSG_
class LOGICAL;
class BOOL;
#endif
class TypeDescriptor;
#include <errordesc.h>
#include <SingleLinkList.h>
#include <baseType.h>
#include <sdai.h>
#include <STEPundefined.h>
#include <scl_string.h>
#include "G4ios.hh"
//class SCLP23(Application_instance);
//#define S_ENTITY_NULL &NilSTEPentity
//extern SCLP23(Application_instance) NilSTEPentity;
#define AGGR_NULL &NilSTEPaggregate
extern STEPaggregate NilSTEPaggregate;
//typedef unsigned short BOOLEAN;
class SingleLinkNode;
/******************************************************************************
**
*****************************************************************************/
typedef STEPaggregate * STEPaggregateH;
typedef STEPaggregate * STEPaggregate_ptr;
typedef STEPaggregate_ptr STEPaggregate_var;
class STEPaggregate : public SingleLinkList
{
protected:
int _null;
protected:
virtual Severity ReadValue(G4std::istream &in, ErrorDescriptor *err,
const TypeDescriptor *elem_type,
InstMgr *insts, int addFileId =0,
int assignVal =1, int ExchangeFileFormat =1,
const char *currSch =0);
public:
int is_null() { return _null; }
virtual Severity AggrValidLevel(const char *value, ErrorDescriptor *err,
const TypeDescriptor *elem_type, InstMgr *insts,
int optional, char *tokenList, int addFileId =0,
int clearError =0);
virtual Severity AggrValidLevel(G4std::istream &in, ErrorDescriptor *err,
const TypeDescriptor *elem_type, InstMgr *insts,
int optional, char *tokenList, int addFileId =0,
int clearError =0);
// INPUT
virtual Severity StrToVal(const char *s, ErrorDescriptor *err =0,
const TypeDescriptor *elem_type =0,
InstMgr *insts =0, int addFileId = 0);
virtual Severity STEPread (G4std::istream& in, ErrorDescriptor *err,
const TypeDescriptor *elem_type =0,
InstMgr *insts =0, int addFileId =0,
const char *currSch =0);
// OUTPUT
virtual const char *asStr(SCLstring & s) const;
virtual void STEPwrite (G4std::ostream& out =G4cout, const char * =0) const;
// SingleLinkNode * GetHead () const
// { return (STEPnode *) SingleLinkList::GetHead(); }
virtual SingleLinkNode * NewNode ();
void AddNode (SingleLinkNode *);
void Empty ();
STEPaggregate ();
virtual ~STEPaggregate ();
// COPY - defined in subtypes
virtual STEPaggregate& ShallowCopy (const STEPaggregate&);
#ifdef __OSTORE__
static os_typespec* get_os_typespec();
#endif
};
/******************************************************************
** Class: GenericAggregate
** Description: This class supports LIST OF:
** SELECT_TYPE, BINARY_TYPE, GENERIC_TYPE, ENUM_TYPE, UNKNOWN_TYPE type
******************************************************************/
class GenericAggregate : public STEPaggregate
{
public:
virtual SingleLinkNode *NewNode();
virtual STEPaggregate& ShallowCopy (const STEPaggregate&);
GenericAggregate();
virtual ~GenericAggregate();
#ifdef __OSTORE__
static os_typespec* get_os_typespec();
#endif
};
typedef GenericAggregate * GenericAggregateH;
typedef GenericAggregate * GenericAggregate_ptr;
typedef GenericAggregate_ptr GenericAggregate_var;
/******************************************************************************
**
*****************************************************************************/
class EntityAggregate : public STEPaggregate
{
public:
virtual Severity ReadValue(G4std::istream &in, ErrorDescriptor *err,
const TypeDescriptor *elem_type,
InstMgr *insts, int addFileId =0,
int assignVal =1, int ExchangeFileFormat =1,
const char *currSch =0);
virtual SingleLinkNode *NewNode();
virtual STEPaggregate& ShallowCopy (const STEPaggregate&);
EntityAggregate ();
virtual ~EntityAggregate ();
#ifdef __OSTORE__
static os_typespec* get_os_typespec();
#endif
};
typedef EntityAggregate * EntityAggregateH;
typedef EntityAggregate * EntityAggregate_ptr;
typedef EntityAggregate_ptr EntityAggregate_var;
/******************************************************************
** Class: SelectAggregate
** Description: this is a minimal representions for a collection of
** SCLP23(Select)
******************************************************************/
class SelectAggregate : public STEPaggregate
{
public:
virtual Severity ReadValue(G4std::istream &in, ErrorDescriptor *err,
const TypeDescriptor *elem_type,
InstMgr *insts, int addFileId =0,
int assignVal =1, int ExchangeFileFormat =1,
const char *currSch =0);
virtual SingleLinkNode *NewNode ();
virtual STEPaggregate& ShallowCopy (const STEPaggregate&);
SelectAggregate ();
virtual ~SelectAggregate ();
#ifdef __OSTORE__
static os_typespec* get_os_typespec();
#endif
};
typedef SelectAggregate * SelectAggregateH;
typedef SelectAggregate * SelectAggregate_ptr;
typedef SelectAggregate_ptr SelectAggregate_var;
/******************************************************************
** Class: StringAggregate
** Description: This class supports LIST OF STRING type
******************************************************************/
class StringAggregate : public STEPaggregate
{
public:
virtual SingleLinkNode *NewNode();
virtual STEPaggregate& ShallowCopy (const STEPaggregate&);
StringAggregate();
virtual ~StringAggregate();
#ifdef __OSTORE__
static os_typespec* get_os_typespec();
#endif
};
typedef StringAggregate * StringAggregateH;
typedef StringAggregate * StringAggregate_ptr;
typedef StringAggregate_ptr StringAggregate_var;
/******************************************************************
** Class: BinaryAggregate
** Description: This class supports LIST OF BINARY type
******************************************************************/
class BinaryAggregate : public STEPaggregate
{
public:
virtual SingleLinkNode *NewNode();
virtual STEPaggregate& ShallowCopy (const STEPaggregate&);
BinaryAggregate();
virtual ~BinaryAggregate();
#ifdef __OSTORE__
static os_typespec* get_os_typespec();
#endif
};
typedef BinaryAggregate * BinaryAggregateH;
typedef BinaryAggregate * BinaryAggregate_ptr;
typedef BinaryAggregate_ptr BinaryAggregate_var;
/******************************************************************
** Class: EnumAggregate
** Description: this is a minimal representions for a collection of
** SCLP23(Enum)
******************************************************************/
class EnumAggregate : public STEPaggregate
{
public:
virtual SingleLinkNode *NewNode ();
virtual STEPaggregate& ShallowCopy (const STEPaggregate&);
EnumAggregate ();
virtual ~EnumAggregate ();
#ifdef __OSTORE__
static os_typespec* get_os_typespec();
#endif
};
typedef EnumAggregate * EnumAggregateH;
typedef EnumAggregate * EnumAggregate_ptr;
typedef EnumAggregate_ptr EnumAggregate_var;
class LOGICALS : public EnumAggregate
{
public:
virtual SingleLinkNode * NewNode ();
LOGICALS();
virtual ~LOGICALS();
#ifdef __OSTORE__
static os_typespec* get_os_typespec();
#endif
};
typedef LOGICALS * LogicalsH;
typedef LOGICALS * LOGICALS_ptr;
typedef LOGICALS_ptr LOGICALS_var;
#ifdef __OSTORE__
LOGICALS * create_LOGICALS(os_database *db);
#else
LOGICALS * create_LOGICALS();
#endif
class BOOLS : public EnumAggregate
{
public:
virtual SingleLinkNode * NewNode ();
BOOLS();
virtual ~BOOLS();
#ifdef __OSTORE__
static os_typespec* get_os_typespec();
#endif
};
//typedef BOOLS * BooleansH;
typedef BOOLS * BOOLS_ptr;
typedef BOOLS_ptr BOOLS_var;
#ifdef __OSTORE__
BOOLS * create_BOOLS(os_database *db);
#else
BOOLS * create_BOOLS();
#endif
class RealAggregate : public STEPaggregate {
public:
virtual SingleLinkNode *NewNode();
virtual STEPaggregate& ShallowCopy (const STEPaggregate&);
RealAggregate();
virtual ~RealAggregate();
#ifdef __OSTORE__
static os_typespec* get_os_typespec();
#endif
};
typedef RealAggregate * RealAggregateH;
typedef RealAggregate * RealAggregate_ptr;
typedef RealAggregate_ptr RealAggregate_var;
class IntAggregate : public STEPaggregate {
public:
virtual SingleLinkNode *NewNode();
virtual STEPaggregate& ShallowCopy (const STEPaggregate&);
IntAggregate();
virtual ~IntAggregate();
#ifdef __OSTORE__
static os_typespec* get_os_typespec();
#endif
};
typedef IntAggregate * IntAggregateH;
typedef IntAggregate * IntAggregate_ptr;
typedef IntAggregate_ptr IntAggregate_var;
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
class STEPnode : public SingleLinkNode {
protected:
int _null;
public:
int is_null() { return _null; }
void set_null() { _null = 1; }
// INPUT
virtual Severity StrToVal(const char *s, ErrorDescriptor *err);
virtual Severity StrToVal(G4std::istream &in, ErrorDescriptor *err);
virtual Severity STEPread(const char *s, ErrorDescriptor *err);
virtual Severity STEPread(G4std::istream &in, ErrorDescriptor *err);
// OUTPUT
virtual const char *asStr(SCLstring & s);
virtual const char *STEPwrite(SCLstring &s, const char * =0);
virtual void STEPwrite (G4std::ostream& out =G4cout);
#ifdef __OSTORE__
static os_typespec* get_os_typespec();
#endif
};
typedef STEPnode * STEPnodeH;
/******************************************************************
** Class: GenericNode
** Description: This class is for the Nodes of GenericAggregates
******************************************************************/
class GenericAggrNode : public STEPnode {
public:
SCLundefined value;
public:
// INPUT
virtual Severity StrToVal(const char *s, ErrorDescriptor *err);
virtual Severity StrToVal(G4std::istream &in, ErrorDescriptor *err);
virtual Severity STEPread(const char *s, ErrorDescriptor *err);
virtual Severity STEPread(G4std::istream &in, ErrorDescriptor *err);
// OUTPUT
virtual const char *asStr(SCLstring & s);
virtual const char *STEPwrite(SCLstring &s, const char * =0);
virtual void STEPwrite (G4std::ostream& out =G4cout);
// CONSTRUCTORS
GenericAggrNode (const char *str);
GenericAggrNode (GenericAggrNode& gan);
GenericAggrNode ();
~GenericAggrNode ();
virtual SingleLinkNode * NewNode ();
#ifdef __OSTORE__
static os_typespec* get_os_typespec();
#endif
};
/////////////////////////////////////////////////////////////////////////////
class EntityNode : public STEPnode {
public:
SCLP23(Application_instance) * node;
// INPUT
virtual Severity StrToVal(const char *s, ErrorDescriptor *err,
const TypeDescriptor *elem_type,
InstMgr *insts, int addFileId = 0);
virtual Severity StrToVal(G4std::istream &in, ErrorDescriptor *err,
const TypeDescriptor *elem_type,
InstMgr *insts, int addFileId = 0);
virtual Severity STEPread(const char *s, ErrorDescriptor *err,
const TypeDescriptor *elem_type,
InstMgr *insts, int addFileId = 0);
virtual Severity STEPread(G4std::istream &in, ErrorDescriptor *err,
const TypeDescriptor *elem_type,
InstMgr *insts, int addFileId = 0);
// OUTPUT
virtual const char *asStr(SCLstring & s);
virtual const char *STEPwrite (SCLstring &s, const char * =0);
virtual void STEPwrite (G4std::ostream& out =G4cout);
// CONSTRUCTORS
EntityNode (SCLP23(Application_instance) * e);
EntityNode();
~EntityNode();
virtual SingleLinkNode * NewNode ();
// Calling these funtions is an error.
Severity StrToVal(const char *s, ErrorDescriptor *err)
{
G4cerr << "Internal error: " << __FILE__ << __LINE__
<< "\n" << _POC_ "\n";
return StrToVal(s, err, 0, 0, 0);
}
Severity StrToVal(G4std::istream &in, ErrorDescriptor *err)
{
G4cerr << "Internal error: " << __FILE__ << __LINE__
<< "\n" << _POC_ "\n";
return StrToVal(in, err, 0, 0, 0);
}
Severity STEPread(const char *s, ErrorDescriptor *err)
{
G4cerr << "Internal error: " << __FILE__ << __LINE__
<< "\n" << _POC_ "\n";
return STEPread(s, err, 0, 0, 0);
}
Severity STEPread(G4std::istream &in, ErrorDescriptor *err)
{
G4cerr << "Internal error: " << __FILE__ << __LINE__
<< "\n" << _POC_ "\n";
return STEPread(in, err, 0, 0, 0);
}
#ifdef __OSTORE__
static os_typespec* get_os_typespec();
#endif
};
///////////////////////////////////////////////////////////////////////////
/******************************************************************
** Class: SelectNode
** Description: this is a minimal representions for node in lists of
** SCLP23(Select)
******************************************************************/
class SelectNode : public STEPnode {
public:
SCLP23(Select) * node;
public:
// INPUT
virtual Severity StrToVal(const char *s, ErrorDescriptor *err,
const TypeDescriptor *elem_type,
InstMgr *insts, int addFileId = 0);
virtual Severity StrToVal(G4std::istream &in, ErrorDescriptor *err,
const TypeDescriptor *elem_type,
InstMgr *insts, int addFileId = 0,
const char *currSch =0);
virtual Severity STEPread(const char *s, ErrorDescriptor *err,
const TypeDescriptor *elem_type,
InstMgr *insts, int addFileId = 0);
virtual Severity STEPread(G4std::istream &in, ErrorDescriptor *err,
const TypeDescriptor *elem_type,
InstMgr *insts, int addFileId = 0,
const char *currSch =0);
// OUTPUT
virtual const char *asStr(SCLstring & s);
virtual const char *STEPwrite (SCLstring &s, const char * =0);
virtual void STEPwrite (G4std::ostream& out =G4cout);
// CONSTRUCTORS
SelectNode(SCLP23(Select) * s);
SelectNode();
~SelectNode();
virtual SingleLinkNode * NewNode ();
// Calling these funtions is an error.
Severity StrToVal(const char *s, ErrorDescriptor *err)
{
G4cerr << "Internal error: " << __FILE__ << __LINE__
<< "\n" << _POC_ "\n";
return StrToVal(s, err, 0, 0, 0);
}
Severity StrToVal(G4std::istream &in, ErrorDescriptor *err)
{
G4cerr << "Internal error: " << __FILE__ << __LINE__
<< "\n" << _POC_ "\n";
return StrToVal(in, err, 0, 0, 0);
}
Severity STEPread(const char *s, ErrorDescriptor *err)
{
G4cerr << "Internal error: " << __FILE__ << __LINE__
<< "\n" << _POC_ "\n";
return STEPread(s, err, 0, 0, 0);
}
Severity STEPread(G4std::istream &in, ErrorDescriptor *err)
{
G4cerr << "Internal error: " << __FILE__ << __LINE__
<< "\n" << _POC_ "\n";
return STEPread(in, err, 0, 0, 0);
}
#ifdef __OSTORE__
static os_typespec* get_os_typespec();
#endif
};
///////////////////////////////////////////////////////////////////////////
/******************************************************************
** Class: StringNode
** Description: This class is for the Nodes of StringAggregates
******************************************************************/
class StringNode : public STEPnode {
public:
SCLP23(String) value;
public:
// INPUT
virtual Severity StrToVal(const char *s, ErrorDescriptor *err);
virtual Severity StrToVal(G4std::istream &in, ErrorDescriptor *err);
virtual Severity STEPread(const char *s, ErrorDescriptor *err);
virtual Severity STEPread(G4std::istream &in, ErrorDescriptor *err);
// OUTPUT
virtual const char *asStr(SCLstring & s);
virtual const char *STEPwrite (SCLstring &s, const char * =0);
virtual void STEPwrite (G4std::ostream& out =G4cout);
// CONSTRUCTORS
StringNode(StringNode& sn);
StringNode (const char * sStr);
StringNode();
~StringNode();
virtual SingleLinkNode * NewNode ();
#ifdef __OSTORE__
static os_typespec* get_os_typespec();
#endif
};
///////////////////////////////////////////////////////////////////////////
/******************************************************************
** Class: BinaryNode
** Description: This class is for the Nodes of BinaryAggregates
******************************************************************/
class BinaryNode : public STEPnode {
public:
SCLP23(Binary) value;
public:
// INPUT
virtual Severity StrToVal(const char *s, ErrorDescriptor *err);
virtual Severity StrToVal(G4std::istream &in, ErrorDescriptor *err);
virtual Severity STEPread(const char *s, ErrorDescriptor *err);
virtual Severity STEPread(G4std::istream &in, ErrorDescriptor *err);
// OUTPUT
virtual const char *asStr(SCLstring & s);
virtual const char *STEPwrite (SCLstring &s, const char * =0);
virtual void STEPwrite (G4std::ostream& out =G4cout);
// CONSTRUCTORS
BinaryNode(BinaryNode& bn);
BinaryNode (const char * sStr);
BinaryNode();
~BinaryNode();
virtual SingleLinkNode * NewNode ();
#ifdef __OSTORE__
static os_typespec* get_os_typespec();
#endif
};
/******************************************************************
** Class: EnumNode
** Description: this is a minimal representions for node in lists of
** SCLP23(Enum)
******************************************************************/
class EnumNode : public STEPnode {
public:
SCLP23(Enum) * node;
public:
// INPUT
virtual Severity StrToVal(const char *s, ErrorDescriptor *err);
virtual Severity StrToVal(G4std::istream &in, ErrorDescriptor *err);
virtual Severity STEPread(const char *s, ErrorDescriptor *err);
virtual Severity STEPread(G4std::istream &in, ErrorDescriptor *err);
// OUTPUT
virtual const char *asStr(SCLstring & s);
virtual const char *STEPwrite (SCLstring &s, const char * =0);
virtual void STEPwrite (G4std::ostream& out =G4cout);
// CONSTRUCTORS
EnumNode(SCLP23(Enum) * e);
EnumNode();
~EnumNode();
virtual SingleLinkNode * NewNode ();
#ifdef __OSTORE__
static os_typespec* get_os_typespec();
#endif
};
class RealNode : public STEPnode {
public:
SCLP23(Real) value; // double
public:
// INPUT
virtual Severity StrToVal(const char *s, ErrorDescriptor *err);
virtual Severity StrToVal(G4std::istream &in, ErrorDescriptor *err);
virtual Severity STEPread(const char *s, ErrorDescriptor *err);
virtual Severity STEPread(G4std::istream &in, ErrorDescriptor *err);
// OUTPUT
virtual const char *asStr(SCLstring & s);
virtual const char *STEPwrite (SCLstring &s, const char * =0);
virtual void STEPwrite (G4std::ostream& out =G4cout);
// CONSTRUCTORS
RealNode();
~RealNode();
virtual SingleLinkNode * NewNode ();
#ifdef __OSTORE__
static os_typespec* get_os_typespec();
#endif
};
class IntNode : public STEPnode {
public:
SCLP23(Integer) value; // long int
public:
// INPUT
virtual Severity StrToVal(const char *s, ErrorDescriptor *err);
virtual Severity StrToVal(G4std::istream &in, ErrorDescriptor *err);
virtual Severity STEPread(const char *s, ErrorDescriptor *err);
virtual Severity STEPread(G4std::istream &in, ErrorDescriptor *err);
// OUTPUT
virtual const char *asStr(SCLstring & s);
virtual const char *STEPwrite (SCLstring &s, const char * =0);
virtual void STEPwrite (G4std::ostream& out =G4cout);
// CONSTRUCTORS
IntNode();
~IntNode();
virtual SingleLinkNode * NewNode ();
#ifdef __OSTORE__
static os_typespec* get_os_typespec();
#endif
};
/******************************************************************
** The following classes are currently stubs
**
**/
/*
class Array : public STEPaggregate {
public:
int lowerBound;
int upperBound;
};
class Bag : public STEPaggregate {
public:
int min_ele;
int max_ele;
};
class List : public STEPaggregate {
int min_ele;
int max_ele;
List *prev;
};
class Set :
public STEPaggregate {
int cnt;
};
*/
#endif