// This file is generated by WOK (CPPExt). // Please do not edit this file; modify original file instead. // The copyright and license terms as defined for the original file apply to // this header file considered to be the "object code" form of the original source. #ifndef _IFSelect_SessionFile_HeaderFile #define _IFSelect_SessionFile_HeaderFile #ifndef _Standard_HeaderFile #include #endif #ifndef _Standard_Macro_HeaderFile #include #endif #ifndef _Standard_Boolean_HeaderFile #include #endif #ifndef _Handle_IFSelect_WorkSession_HeaderFile #include #endif #ifndef _Handle_TColStd_HArray1OfInteger_HeaderFile #include #endif #ifndef _Handle_Dico_DictionaryOfInteger_HeaderFile #include #endif #ifndef _TColStd_SequenceOfAsciiString_HeaderFile #include #endif #ifndef _Standard_Integer_HeaderFile #include #endif #ifndef _TCollection_AsciiString_HeaderFile #include #endif #ifndef _Standard_CString_HeaderFile #include #endif #ifndef _Standard_Character_HeaderFile #include #endif #ifndef _Handle_Standard_Transient_HeaderFile #include #endif class IFSelect_WorkSession; class TColStd_HArray1OfInteger; class Dico_DictionaryOfInteger; class TCollection_AsciiString; class Standard_Transient; //! A SessionFile is intended to manage access between a
//! WorkSession and an Ascii Form, to be considered as a Dump.
//! It allows to write the File from the WorkSession, and later
//! read the File to the WorkSession, by keeping required
//! descriptions (such as dependances).
//!
//! The produced File is under an Ascii Form, then it may be
//! easily consulted.
//! It is possible to cumulate reading of several Files. But in
//! case of Names conflict, the newer Names are forgottens.
//!
//! The Dump supports the description of XSTEP functionnalities
//! (Sharing an Interface File, with Selections, Dispatches,
//! Modifiers ...) but does not refer to the Interface File
//! which is currently loaded.
//!
//! SessionFile works with a library of SessionDumper type objects
//!
//! The File is Produced as follows :
//! SessionFile produces all general Informations (such as Int and
//! Text Parameters, Types and Inputs of Selections, Dispatches,
//! Modifiers ...) and calls the SessionDumpers to produce all
//! the particular Data : creation arguments, parameters to be set
//! It is Read in the same terms :
//! SessionFile reads and interprets all general Informations,
//! and calls the SessionDumpers to recognize Types and for a
//! recognized Type create the corresponding Object with its
//! particular parameters as they were written.
//! The best way to work is to have one SessionDumper for each
//! consistent set of classes (e.g. a package).
class IFSelect_SessionFile { public: void* operator new(size_t,void* anAddress) { return anAddress; } void* operator new(size_t size) { return Standard::Allocate(size); } void operator delete(void *anAddress) { if (anAddress) Standard::Free((Standard_Address&)anAddress); } //! Creates a SessionFile, ready to read Files in order to load
//! them into a given WorkSession.
//! The following Read Operations must then be called.
//! It is also possible to perform a Write, which produces a
//! complete File of all the content of the WorkSession.
Standard_EXPORT IFSelect_SessionFile(const Handle(IFSelect_WorkSession)& WS); //! Creates a SessionFile which Writes the content of a WorkSession
//! to a File (directly calls Write)
//! Then, IsDone aknowledges on the result of the Operation.
//! But such a SessionFile may not Read a File to a WorkSession.
Standard_EXPORT IFSelect_SessionFile(const Handle(IFSelect_WorkSession)& WS,const Standard_CString filename); //! Clears the lines recorded whatever for writing or for reading
Standard_EXPORT void ClearLines() ; //! Returns the count of recorded lines
Standard_EXPORT Standard_Integer NbLines() const; //! Returns a line given its rank in the list of recorded lines
Standard_EXPORT const TCollection_AsciiString& Line(const Standard_Integer num) const; //! Adds a line to the list of recorded lines
Standard_EXPORT void AddLine(const Standard_CString line) ; //! Removes the last line. Can be called recursively.
//! Does nothing if the list is empty
Standard_EXPORT void RemoveLastLine() ; //! Writes the recorded lines to a file named then clears
//! the list of lines.
//! Returns False (with no clearing) if the file could not be
//! created
Standard_EXPORT Standard_Boolean WriteFile(const Standard_CString name) ; //! Reads the recorded lines from a file named , after
//! having cleared the list (stops if RecognizeFile fails)
//! Returns False (with no clearing) if the file could not be read
Standard_EXPORT Standard_Boolean ReadFile(const Standard_CString name) ; //! Recognizes the header line. returns True if OK, False else
Standard_EXPORT Standard_Boolean RecognizeFile(const Standard_CString headerline) ; //! Performs a Write Operation from a WorkSession to a File
//! i.e. calls WriteSession then WriteEnd, and WriteFile
//! Returned Value is : 0 for OK, -1 File could not be created,
//! >0 Error during Write (see WriteSession)
//! IsDone can be called too (will return True for OK)
Standard_EXPORT Standard_Integer Write(const Standard_CString filename) ; //! Performs a Read Operation from a file to a WorkSession
//! i.e. calls ReadFile, then ReadSession and ReadEnd
//! Returned Value is : 0 for OK, -1 File could not be opened,
//! >0 Error during Read (see WriteSession)
//! IsDone can be called too (will return True for OK)
Standard_EXPORT Standard_Integer Read(const Standard_CString filename) ; //! Prepares the Write operation from a WorkSession (IFSelect) to
//! a File, i.e. fills the list of lines (the file itself remains
//! to be written; or NbLines/Line may be called)
//! Important Remark : this excludes the reading of the last line,
//! which is performed by WriteEnd
//! Returns 0 if OK, status > 0 in case of error
Standard_EXPORT Standard_Integer WriteSession() ; //! Writes the trailing line. It is separate from WriteSession,
//! in order to allow to redefine WriteSession without touching
//! WriteEnd (WriteSession defines the body of the file)
//! WriteEnd fills the list of lines. Returns a status of error,
//! 0 if OK, >0 else
Standard_EXPORT Standard_Integer WriteEnd() ; //! Writes a line to the File. If is given, it is added
//! at the following of the line. '\n' must be added for the end.
Standard_EXPORT void WriteLine(const Standard_CString line,const Standard_Character follow = 0) ; //! Writes the Parameters own to each type of Item. Uses the
//! Library of SessionDumpers
//! Returns True if Done, False if could not be treated
//! (hence it remains written with no Own Parameter)
Standard_EXPORT Standard_Boolean WriteOwn(const Handle(Standard_Transient)& item) ; //! Performs a Read Operation from a File to a WorkSession, i.e.
//! reads the list of line (which must have already been loaded,
//! by ReadFile or by calls to AddLine)
//! Important Remark : this excludes the reading of the last line,
//! which is performed by ReadEnd
//! Returns 0 for OK, >0 status for Read Error (not a suitable
//! File, or WorkSession given as Immutable at Creation Time)
//! IsDone can be called too (will return True for OK)
Standard_EXPORT Standard_Integer ReadSession() ; //! Reads the end of a file (its last line). Returns 0 if OK,
//! status >0 in case of error (not a suitable end line).
Standard_EXPORT Standard_Integer ReadEnd() ; //! Reads a Line and splits it into a set of alphanumeric items,
//! which can then be queried by NbParams/ParamValue ...
Standard_EXPORT Standard_Boolean ReadLine() ; //! Internal routine which processes a line into words
//! and prepares its exploration
Standard_EXPORT void SplitLine(const Standard_CString line) ; //! Tries to Read an Item, by calling the Library of Dumpers
//! Sets the list of parameters of the line to be read from the
//! first own one
Standard_EXPORT Standard_Boolean ReadOwn(Handle(Standard_Transient)& item) ; //! Adds an Item to the WorkSession, taken as Name the first
//! item of the read Line. If this Name is not a Name but a Number
//! or if this Name is already recorded in the WorkSession, it
//! adds the Item but with no Name. Then the Name is recorded
//! in order to be used by the method ItemValue
//! commands to make active or not in the session
Standard_EXPORT void AddItem(const Handle(Standard_Transient)& item,const Standard_Boolean active = Standard_True) ; //! Returns True if the last Read or Write operation has been
//! corectly performed. ELse returns False.
Standard_EXPORT Standard_Boolean IsDone() const; //! Returns the WorkSession on which a SessionFile works.
//! Remark that it is returned as Immutable.
Standard_EXPORT Handle_IFSelect_WorkSession WorkSession() const; //! At beginning of writing an Item, writes its basics :
//! - either its name in the session if it has one
//! - or its relative number of item in the file, else
//! (preceeded by a '_')
//! - then, its Dynamic Type (in the sense of cdl : pk_class)
//! This basic description can be followed by the parameters
//! which are used in the definition of the item.
Standard_EXPORT void NewItem(const Standard_Integer ident,const Handle(Standard_Transient)& par) ; //! Sets Parameters to be sent as Own if is True (their
//! Name or Number or Void Mark or Text Value is preceeded by a
//! Column sign ':') else they are sent normally
//! Hence, the Own Parameter are clearly identified in the File
Standard_EXPORT void SetOwn(const Standard_Boolean mode) ; //! During a Write action, commands to send a Void Parameter
//! i.e. a Parameter which is present but undefined
//! Its form will be the dollar sign : $
Standard_EXPORT void SendVoid() ; //! During a Write action, commands to send the identification of
//! a Parameter : if it is Null (undefined) it is send as Void ($)
//! if it is Named in the WorkSession, its Name is sent preceeded
//! by ':', else a relative Ident Number is sent preceeded by '#'
//! (relative to the present Write, i.e. starting at one, without
//! skip, and counted part from Named Items)
Standard_EXPORT void SendItem(const Handle(Standard_Transient)& par) ; //! During a Write action, commands to send a Text without
//! interpretation. It will be sent as well
Standard_EXPORT void SendText(const Standard_CString text) ; //! Sets the rank of Last General Parameter to a new value. It is
//! followed by the Fist Own Parameter of the item.
//! Used by SessionFile after reading general parameters.
Standard_EXPORT void SetLastGeneral(const Standard_Integer lastgen) ; //! During a Read operation, SessionFile processes sequencially
//! the Items to read. For each one, it gives access to the list
//! of its Parameters : they were defined by calls to
//! SendVoid/SendParam/SendText during Writing the File.
//! NbParams returns the count of Parameters for the line
//! currently read.
Standard_EXPORT Standard_Integer NbParams() const; //! Returns True if a Parameter, given its rank in the Own List
//! (see NbOwnParams), is Void. Returns also True if is
//! out of range (undefined parameters)
Standard_EXPORT Standard_Boolean IsVoid(const Standard_Integer num) const; //! Returns True if a Parameter, in the Own List (see NbOwnParams)
//! is a Text (between "..."). Else it is an Item (Parameter,
//! Selection, Dispatch ...), which can be Void.
Standard_EXPORT Standard_Boolean IsText(const Standard_Integer num) const; //! Returns a Parameter (alphanumeric item of a line) as it
//! has been read
Standard_EXPORT const TCollection_AsciiString& ParamValue(const Standard_Integer num) const; //! Returns the content of a Text Parameter (without the quotes).
//! Returns an empty string if the Parameter is not a Text.
Standard_EXPORT TCollection_AsciiString TextValue(const Standard_Integer num) const; //! Returns a Parameter as an Item. Returns a Null Handle if the
//! Parameter is a Text, or if it is defined as Void
Standard_EXPORT Handle_Standard_Transient ItemValue(const Standard_Integer num) const; //! Specific Destructor (closes the File if not yet done)
Standard_EXPORT void Destroy() ; ~IFSelect_SessionFile() { Destroy(); } protected: Handle_IFSelect_WorkSession thesess; Handle_TColStd_HArray1OfInteger thenums; Handle_Dico_DictionaryOfInteger thenames; Standard_Integer thenl; TColStd_SequenceOfAsciiString theline; private: Standard_Boolean themode; TColStd_SequenceOfAsciiString thelist; TCollection_AsciiString thebuff; Standard_Integer thelastgen; Standard_Boolean thedone; Standard_Boolean theownflag; Standard_Integer thenewnum; }; // other Inline functions and methods (like "C++: function call" methods) #endif