home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftptest.leeds.ac.uk
/
2015.02.ftptest.leeds.ac.uk.tar
/
ftptest.leeds.ac.uk
/
bionet
/
CAE-GROUP
/
SCL-WIN3x
/
SCL.EXE
/
SFILE.H
< prev
next >
Wrap
C/C++ Source or Header
|
1994-07-26
|
6KB
|
208 lines
#ifndef _SFILE_H
#define _SFILE_H
/*
* NIST STEP Core Class Library
* cleditor/STEPfile.h
* February, 1994
* Peter Carr
* K. C. Morris
* David Sauder
* Development of this software was funded by the United States Government,
* and is not subject to copyright.
*/
/* $Id: STEPfile.h,v 2.0.1.1 1994/04/05 16:41:35 sauderd Exp $ */
#ifdef __O3DB__
#include <OpenOODB.h>
#endif
/*#include <math.h>*/
#include <instmgr.h>
#include <Registry.h>
#include <fstream.h>
//#include <dirobj.h>
#include <errordes.h>
#include <time.h>
#include <schemahe.h>
//error reporting level
#define READ_COMPLETE 10
#define READ_INCOMPLETE 20
enum FileTypeCode {
TYPE_UNKNOWN = -2,
VERSION_OLD = -1,
VERSION_UNKNOWN = 0,
VERSION_CURRENT = 1,
WORKING_SESSION = 2,
OLD_WORKING_SESSION = 3
};
class STEPfile
{
protected:
//data members
#ifdef __O3DB__
InstMgr * _instances;
Registry * _reg;
InstMgr & instances () { return *_instances; }
Registry & reg () { return *_reg; }
#else
InstMgr& _instances;
Registry& _reg;
InstMgr & instances () { return _instances; }
Registry & reg () { return _reg; }
#endif
int _fileIdIncr; //Increment value to be added to FileId Numbers on input
//header information
InstMgr* _headerInstances;
Registry *_headerRegistry;
//Registry *_headerUserDefined;
// Registry *_headerRegistryOld;
int _headerId; //STEPfile_id given to STEPentity from header section
//file information
char* _currentDir;
char* _fileName;
//error information
ErrorDescriptor _error;
int _errorCount;
int _warningCount;
int _maxErrorCount;
protected:
//file type information
FileTypeCode _fileType;
char ENTITY_NAME_DELIM;
char* FILE_DELIM;
char* END_FILE_DELIM;
//public member functions
public:
//public access to member variables
//header information
InstMgr* HeaderInstances() { return _headerInstances; }
//file information
const char* FileName() const { return _fileName; }
const char* SetFileName (const char* name = "");
const char* TruncFileName (const char* name) const;
//error information
ErrorDescriptor& Error() /* const */ { return _error; }
int ErrorCount() const { return _errorCount; }
int WarningCount() const { return _warningCount; }
Severity AppendEntityErrorMsg (ErrorDescriptor *e);
//version information
FileTypeCode FileType() const { return _fileType; }
void FileType (FileTypeCode ft) { _fileType = ft; }
int SetFileType (FileTypeCode ft = VERSION_CURRENT);
//Reading and Writing
Severity ReadExchangeFile (const char* filename =0);
Severity AppendExchangeFile (const char* filename =0);
Severity ReadWorkingFile (const char* filename =0);
Severity AppendWorkingFile (const char* filename =0);
Severity AppendFile (istream* in) ;
Severity WriteExchangeFile (ostream& out, int validate =1);
Severity WriteExchangeFile (const char* filename =0, int validate =1);
Severity WriteWorkingFile (ostream& out);
Severity WriteWorkingFile (const char* filename =0);
void Renumber ();
//constructors
STEPfile (Registry& r, InstMgr& i, const char *filename = (const char*)0);
~STEPfile();
protected:
//member functions
//called by ReadExchangeFile
istream* OpenInputFile (const char* filename = "");
void CloseInputFile(istream* in);
Severity ReadHeader(istream& in);
InstMgr* HeaderConvertToNew(InstMgr& oldinst);
Severity HeaderVerifyInstances(InstMgr* im);
void HeaderMergeInstances(InstMgr* im);
STEPentity* HeaderDefaultFileName();
STEPentity* HeaderDefaultFileDescription();
STEPentity* HeaderDefaultFileSchema();
int HeaderId (int increment =1);
int HeaderId (const char* nm ="\0");
int HeaderIdOld (const char* nm ="\0");
int ReadData1 (istream& in);
int ReadWorkingData1 (istream& in);
int ReadData2 (istream& in);
int ReadWorkingData2 (istream& in);
void ReadRestOfFile(istream& in);
STEPentity * CreateInstance(istream& in);
STEPentity * ReadInstance (istream& in);
// reading scopes and subsuper instances is still incomplete
// these functions are stubs
Severity CreateScopeInstances(istream& in, STEPentityH ** scopelist);
Severity CreateSubSuperInstance(istream& in, int fileid);
Severity ReadScopeInstances(istream& in);
Severity ReadSubSuperInstance(istream& in);
// used for instances that aren\'t valid - reads to next \';\'
Severity SkipInstance (istream& in, SCLstring & buf);
int FindDataSection (istream& in);
int FindHeaderSection (istream& in);
void ReadComment(istream& in);
void ReadCommentTail (char c, istream& in);
void ReadWhiteSpace(istream& in);
Severity ReadPcd(istream& in); //print control directive
// writing working session files
void WriteWorkingData(ostream& out);
//called by WriteExchangeFile
ofstream* OpenOutputFile(const char* filename =0);
void CloseOutputFile(ostream* out);
void WriteHeader (ostream& out);
void WriteHeaderInstance (STEPentity *obj, ostream& out);
void WriteHeaderInstanceFileName (ostream& out);
void WriteHeaderInstanceFileDescription (ostream& out);
void WriteHeaderInstanceFileSchema (ostream& out);
void WriteData (ostream& out);
int IncrementFileId (int fileid);
int FileIdIncr() { return _fileIdIncr; }
void SetFileIdIncrement ();
void MakeBackupFile();
const char* GetKeyword(istream& in, const char* delims);
int ReadTokenSeparator(istream& in);
};
//inline functions
#endif /* _STEPFILE_H */