// 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_Transformer_HeaderFile #define _IFSelect_Transformer_HeaderFile #ifndef _Standard_HeaderFile #include #endif #ifndef _Standard_DefineHandle_HeaderFile #include #endif #ifndef _Handle_IFSelect_Transformer_HeaderFile #include #endif #ifndef _MMgt_TShared_HeaderFile #include #endif #ifndef _Standard_Boolean_HeaderFile #include #endif #ifndef _Handle_Interface_Protocol_HeaderFile #include #endif #ifndef _Handle_Interface_InterfaceModel_HeaderFile #include #endif #ifndef _Handle_Standard_Transient_HeaderFile #include #endif class Interface_Graph; class Interface_Protocol; class Interface_CheckIterator; class Interface_InterfaceModel; class Standard_Transient; class TCollection_AsciiString; //! A Transformer defines the way an InterfaceModel is transformed
//! (without sending it to a file).
//! In order to work, each type of Transformer defines it method
//! Perform, it can be parametred as needed.
//!
//! It receives a Model (the data set) as input. It then can :
//! - edit this Model on the spot (i.e. alter its content : by
//! editing entities, or adding/replacing some ...)
//! - produce a copied Model, which detains the needed changes
//! (typically on the same type, but some or all entities beeing
//! rebuilt or converted; or converted from a protocol to
//! another one)
class IFSelect_Transformer : public MMgt_TShared { public: //! Performs a Transformation (defined by each sub-class) :
//! gives the input data (especially the starting model) and
//! can be used for queries (by Selections, etc...)
//! allows to work with General Services as necessary
//! (it applies to input data)
//! If the change corresponds to a conversion to a new protocol,
//! see also the method ChangeProtocol
//! stores produced checks messages if any
//! gives the result of the transformation :
//! - if it is Null (i.e. has not been affected), the transformation
//! has been made on the spot, it is assumed to cause no change
//! to the graph of dependances
//! - if it equates the starting Model, it has been transformed on
//! the spot (possibiliy some entities were replaced inside it)
//! - if it is new, it corresponds to a new data set which replaces
//! the starting one
//!
//! is mutable to allow results for ChangeProtocol to be
//! memorized if needed, and to store informations useful for
//! the method Updated
//!
//! Returns True if Done, False if an Error occured : in this case,
//! if a new data set has been produced, the transformation
//! is ignored, else data may be corrupted.
Standard_EXPORT virtual Standard_Boolean Perform(const Interface_Graph& G,const Handle(Interface_Protocol)& protocol,Interface_CheckIterator& checks,Handle(Interface_InterfaceModel)& newmod) = 0; //! This methods allows to declare that the Protocol applied to
//! the new Model has changed. It applies to the last call to
//! Perform.
//!
//! Returns True if the Protocol has changed, False else.
//! The provided default keeps the starting Protocol. This method
//! should be redefined as required by the effect of Perform.
Standard_EXPORT virtual Standard_Boolean ChangeProtocol(Handle(Interface_Protocol)& newproto) const; //! This method allows to know what happened to a starting
//! entity after the last Perform. If (from starting
//! model) has one and only one known item which corresponds in
//! the new produced model, this method must return True and
//! fill the argument . Else, it returns False.
Standard_EXPORT virtual Standard_Boolean Updated(const Handle(Standard_Transient)& entfrom,Handle(Standard_Transient)& entto) const = 0; //! Returns a text which defines the way a Transformer works
//! (to identify the transformation it performs)
Standard_EXPORT virtual TCollection_AsciiString Label() const = 0; DEFINE_STANDARD_RTTI(IFSelect_Transformer) protected: private: }; // other Inline functions and methods (like "C++: function call" methods) #endif