// 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_ModelCopier_HeaderFile #define _IFSelect_ModelCopier_HeaderFile #ifndef _Standard_HeaderFile #include #endif #ifndef _Standard_DefineHandle_HeaderFile #include #endif #ifndef _Handle_IFSelect_ModelCopier_HeaderFile #include #endif #ifndef _IFSelect_SequenceOfInterfaceModel_HeaderFile #include #endif #ifndef _TColStd_SequenceOfAsciiString_HeaderFile #include #endif #ifndef _IFSelect_SequenceOfAppliedModifiers_HeaderFile #include #endif #ifndef _Handle_IFSelect_ShareOut_HeaderFile #include #endif #ifndef _Handle_TColStd_HArray1OfInteger_HeaderFile #include #endif #ifndef _Handle_TColStd_HSequenceOfHAsciiString_HeaderFile #include #endif #ifndef _MMgt_TShared_HeaderFile #include #endif #ifndef _Standard_Boolean_HeaderFile #include #endif #ifndef _Handle_Interface_InterfaceModel_HeaderFile #include #endif #ifndef _Standard_Integer_HeaderFile #include #endif #ifndef _Handle_IFSelect_AppliedModifiers_HeaderFile #include #endif #ifndef _Handle_IFSelect_WorkLibrary_HeaderFile #include #endif #ifndef _Handle_Interface_Protocol_HeaderFile #include #endif #ifndef _Standard_CString_HeaderFile #include #endif class IFSelect_ShareOut; class TColStd_HArray1OfInteger; class TColStd_HSequenceOfHAsciiString; class TCollection_AsciiString; class Interface_InterfaceModel; class IFSelect_AppliedModifiers; class Interface_CheckIterator; class IFSelect_ShareOutResult; class IFSelect_WorkLibrary; class Interface_Protocol; class Interface_CopyTool; class Interface_Graph; class Interface_EntityIterator; //! This class performs the Copy operations involved by the
//! description of a ShareOut (evaluated by a ShareOutResult)
//! plus, if there are, the Modifications on the results, with
//! the help of Modifiers. Each Modifier can work on one or more
//! resulting packets, accoding its criteria : it operates on a
//! Model once copied and filled with the content of the packet.
//!
//! Modifiers can be :
//! - Model Modifiers, inheriting from the specific class Modifier
//! able to run on the content of a Model (header or entities),
//! activated by the ModelCopier itself
//! - File Modifiers, inheriting directly from GeneralModifier,
//! intended to be activated under the control of a WorkLibrary,
//! once the Model has been produced (i.e. to act on output
//! format, or other specific file features)
//!
//! The Copy operations can be :
//! - immediately put to files : for each packet, a Model is
//! created and filled, then the file is output, at that's all
//! - memorized : for each packet, a Model is created and filled,
//! it is memorized with the corresponding file name.
//! it is possible to query the result of memorization (list of
//! produced Models and their file names)
//! -> it is also possible to send it into the files :
//! once files are written, the result is cleared
//!
//! In addition, a list of really written files is managed :
//! A first call to BeginSentFiles clears the list and commands,
//! either to begin a new list, or to stop recording it. A call
//! to SentFiles returns the list (if recording has been required)
//! This list allows to globally exploit the set of produced files
//!
//! Remark : For operations which concern specific Entities, see
//! also in package IFAdapt : a sub-class of ModelCopier allows
//! to work with EntityModifier, in addition to Modifier itself
//! which still applies to a whole copied Model.
class IFSelect_ModelCopier : public MMgt_TShared { public: //! Creates an empty ModelCopier
Standard_EXPORT IFSelect_ModelCopier(); //! Sets the ShareOut, which is used to define Modifiers to apply
Standard_EXPORT void SetShareOut(const Handle(IFSelect_ShareOut)& sho) ; //! Clears the list of produced Models
Standard_EXPORT void ClearResult() ; //! Records a new File to be sent, as a couple
//! (Name as AsciiString, Content as InterfaceModel)
//! Returns True if Done, False if is already attached
//! to another File
Standard_EXPORT Standard_Boolean AddFile(const TCollection_AsciiString& filename,const Handle(Interface_InterfaceModel)& content) ; //! Changes the Name attached to a File which was formerly defined
//! by a call to AddFile
//! Returns True if Done, False else : if out of range or if
//! the new is already attached to another File
//! Remark : Giving an empty File Name is equivalent to ClearFile
Standard_EXPORT Standard_Boolean NameFile(const Standard_Integer num,const TCollection_AsciiString& filename) ; //! Clears the Name attached to a File which was formerly defined
//! by a call to AddFile. This Clearing can be undone by a call to
//! NameFile (with same )
//! Returns True if Done, False else : if is out of range
Standard_EXPORT Standard_Boolean ClearFile(const Standard_Integer num) ; //! Sets a list of File Modifiers to be applied on a file
Standard_EXPORT Standard_Boolean SetAppliedModifiers(const Standard_Integer num,const Handle(IFSelect_AppliedModifiers)& applied) ; //! Clears the list of File Modifiers to be applied on a file
Standard_EXPORT Standard_Boolean ClearAppliedModifiers(const Standard_Integer num) ; //! Performs the Copy Operations, which include the Modifications
//! defined by the list of Modifiers. Memorizes the result, as a
//! list of InterfaceModels with the corresponding FileNames
//! They can then be sent, by the method Send, or queried
//! Copy calls internal method Copying.
//! Returns the produced CheckList
Standard_EXPORT Interface_CheckIterator Copy(IFSelect_ShareOutResult& eval,const Handle(IFSelect_WorkLibrary)& WL,const Handle(Interface_Protocol)& protocol) ; //! Sends the formerly defined results (see method Copy) to files,
//! then clears it
//! Remark : A Null File Name cause file to be not produced
Standard_EXPORT Interface_CheckIterator SendCopied(const Handle(IFSelect_WorkLibrary)& WL,const Handle(Interface_Protocol)& protocol) ; //! Performs the Copy Operations (which include the Modifications)
//! and Sends the result on files, without memorizing it.
//! (the memorized result is ignored : neither queried not filled)
Standard_EXPORT Interface_CheckIterator Send(IFSelect_ShareOutResult& eval,const Handle(IFSelect_WorkLibrary)& WL,const Handle(Interface_Protocol)& protocol) ; //! Sends a model (defined in ) into one file, without managing
//! remaining data, already sent files, etc. Applies the Model and
//! File Modifiers.
//! Returns True if well done, False else
Standard_EXPORT Interface_CheckIterator SendAll(const Standard_CString filename,const Interface_Graph& G,const Handle(IFSelect_WorkLibrary)& WL,const Handle(Interface_Protocol)& protocol) ; //! Sends a part of a model into one file. Model is gotten from
//! , the part is defined in .
//! Remaining data are managed and can be later be worked on.
//! Returns True if well done, False else
Standard_EXPORT Interface_CheckIterator SendSelected(const Standard_CString filename,const Interface_Graph& G,const Handle(IFSelect_WorkLibrary)& WL,const Handle(Interface_Protocol)& protocol,const Interface_EntityIterator& iter) ; //! Produces a Model copied from the Remaining List as
//! is a Null Handle if this list is empty
//! performs the copy by using
//! is assumed to have been defined with the starting model
//! same as defined by .
Standard_EXPORT void CopiedRemaining(const Interface_Graph& G,const Handle(IFSelect_WorkLibrary)& WL,Interface_CopyTool& TC,Handle(Interface_InterfaceModel)& newmod) ; //! Updates Graph status for remaining data, for each entity :
//! - Entities just Sent to file or Copied (by CopiedRemaining)
//! have their status set to 1
//! - the other keep their former status (1 for Send/Copied,
//! 0 for Remaining)
//! These status are computed by Copying/Sending/CopiedRemaining
//! Then, SetRemaining updates graph status, and mustr be called
//! just after one of these method has been called
//! Returns True if done, False if remaining info if not in phase
//! which the Graph (not same counts of items)
Standard_EXPORT Standard_Boolean SetRemaining(Interface_Graph& CG) const; //! Returns the count of Files produced, i.e. the count of Models
//! memorized (produced by the mmethod Copy) with their file names
Standard_EXPORT Standard_Integer NbFiles() const; //! Returns the File Name for a file given its rank
//! It is empty after a call to ClearFile on same
Standard_EXPORT TCollection_AsciiString FileName(const Standard_Integer num) const; //! Returns the content of a file before sending, under the form
//! of an InterfaceModel, given its rank
Standard_EXPORT Handle_Interface_InterfaceModel FileModel(const Standard_Integer num) const; //! Returns the list of File Modifiers to be applied on a file
//! when it will be sent, as computed by CopiedModel :
//! If it is a null handle, no File Modifier has to be applied.
Standard_EXPORT Handle_IFSelect_AppliedModifiers AppliedModifiers(const Standard_Integer num) const; //! Begins a sequence of recording the really sent files
//! : the default file numbering is cleared
//! If is False, clears the list and stops recording
//! If is True, clears the list and commands recording
//! Creation time corresponds to "stop recording"
Standard_EXPORT void BeginSentFiles(const Handle(IFSelect_ShareOut)& sho,const Standard_Boolean record) ; //! Adds the name of a just sent file, if BeginSentFiles
//! has commanded recording; else does nothing
//! It is called by methods SendCopied Sending
Standard_EXPORT void AddSentFile(const Standard_CString filename) ; //! Returns the list of recorded names of sent files. Can be empty
//! (if no file has been sent). Returns a Null Handle if
//! BeginSentFiles has stopped recording.
Standard_EXPORT Handle_TColStd_HSequenceOfHAsciiString SentFiles() const; DEFINE_STANDARD_RTTI(IFSelect_ModelCopier) protected: //! Internal routine which does the effective Copy. It allows to
//! work, either with a standard CopyTool, or a specialised one
//! Copying itself is done by which uses a CopyTool
Standard_EXPORT Interface_CheckIterator Copying(IFSelect_ShareOutResult& eval,const Handle(IFSelect_WorkLibrary)& WL,const Handle(Interface_Protocol)& protocol,Interface_CopyTool& TC) ; //! Internal routine which does the effective Send. It allows to
//! work, either with a standard CopyTool, or a specialised one
Standard_EXPORT Interface_CheckIterator Sending(IFSelect_ShareOutResult& eval,const Handle(IFSelect_WorkLibrary)& WL,const Handle(Interface_Protocol)& protocol,Interface_CopyTool& TC) ; //! Performs the Copy of a unitary Packet
//! Input parameters are :
//! is the graph which defines the starting entities, it
//! contains the original InterfaceModel
//! performs the copy by using
//! is the used protocol (can be usefull for Modifiers)
//! is the list of Entities which are the Roots of the
//! packet to be copied
//! is the name of the file which will receive it
//! is the Identifier of the Dispatch which have produced
//! this packet, is the rank of the packet for this
//! Dispatch
//! is a CopyTool, which performs the copy
//!
//! Returned values (as arguments) are :
//! is the result of the copy, as a new InterfaceModel on
//! which Model Modifiers have already been applied (if there are)
//! determines the File Modifiers which remain to be
//! applied (when the file itself will be output) : for each File
//! Modifier recorded in , 's Value is :
//! - Null if this Modifier has not to be applied
//! - an empty list if this Modifier has to be applied without
//! distinguishing specific entities
//! - a list of numbers of entities in if this Modifier
//! concerns particularly these entities (which are the results
//! of copying the result of its input selection)
//! is the produced Check List (by Modifiers as required)
//!
//! Warning : File Modifiers are evaluated at the time of Copy itself
//! If their list is changed between this Copy and the Sending
//! itself of the file, these changes are ignored
Standard_EXPORT void CopiedModel(const Interface_Graph& G,const Handle(IFSelect_WorkLibrary)& WL,const Handle(Interface_Protocol)& protocol,const Interface_EntityIterator& topcopy,const TCollection_AsciiString& filename,const Standard_Integer dispnum,const Standard_Integer numod,Interface_CopyTool& TC,Handle(Interface_InterfaceModel)& newmod,Handle(IFSelect_AppliedModifiers)& applied,Interface_CheckIterator& checks) const; private: IFSelect_SequenceOfInterfaceModel thefilemodels; TColStd_SequenceOfAsciiString thefilenames; IFSelect_SequenceOfAppliedModifiers theapplieds; Handle_IFSelect_ShareOut theshareout; Handle_TColStd_HArray1OfInteger theremain; Handle_TColStd_HSequenceOfHAsciiString thesentfiles; }; // other Inline functions and methods (like "C++: function call" methods) #endif