OCC Main Page | DataExchange | Toolkits | Packages | Class Hierarchy | Data Structures | File List | Data Fields | Globals

DataExchange
TKXSBase
Interface


Interface_CopyTool Class Reference

Performs Deep Copies of sets of Entities
Allows to perform Copy of Interface Entities from a Model to
another one. Works by calling general services GetFromAnother
and GetImplied.
Uses a CopyMap to bind a unique Result to each Copied Entity

It is possible to command Copies of Entities (and those they
reference) by call to the General Service Library, or to
enforce results for transfer of some Entities (calling Bind)

A Same CopyTool can be used for several successive Copies from
the same Model : either by restarting from scratch (e.g. to
copy different parts of a starting Model to several Targets),
or incremental : in that case, it is possible to know what is
the content of the last increment (defined by last call to
ClearLastFlags and queried by call to LastCopiedAfter)

Works in two times : first, create the list of copied Entities
second, pushes them to a target Model (manages also Model's
Header) or returns the Result as an Iterator, as desired

The core action (Copy) works by using ShallowCopy (method
attached to each class) and Copy from GeneralLib (itself using
dedicated tools). It can be redefined for specific actions.
.

#include <Interface_CopyTool.hxx>

Inheritance diagram for Interface_CopyTool:

Inheritance graph
[legend]

Public Member Functions

void * operator new (size_t, void *anAddress)
void * operator new (size_t size)
void operator delete (void *anAddress)
Standard_EXPORT Interface_CopyTool (const Handle(Interface_InterfaceModel)&amodel, const Interface_GeneralLib &lib)
 Creates a CopyTool adapted to work from a Model. Works
with a General Service Library, given as an argument
.
Standard_EXPORT Interface_CopyTool (const Handle(Interface_InterfaceModel)&amodel, const Handle(Interface_Protocol)&protocol)
 Same as above, but Library is defined through a Protocol
.
Standard_EXPORT Interface_CopyTool (const Handle(Interface_InterfaceModel)&amodel)
 Same as above, but works with the Active Protocol
.
Standard_EXPORT Handle_Interface_InterfaceModel Model () const
 Returns the Model on which the CopyTool works
.
Standard_EXPORT void SetControl (const Handle(Interface_CopyControl)&othermap)
 Changes the Map of Result for another one. This allows to work
with a more sophisticated Mapping Control than the Standard
one which is CopyMap (e.g. TransferProcess from Transfer)
.
Standard_EXPORT Handle_Interface_CopyControl Control () const
 Returns the object used for Control
.
virtual Standard_EXPORT void Clear ()
 Clears Transfer List. Gets Ready to begin another Transfer
.
virtual Standard_EXPORT Standard_Boolean Copy (const Handle(Standard_Transient)&entfrom, Handle(Standard_Transient)&entto, const Standard_Boolean mapped, const Standard_Boolean errstat)
 Creates the CounterPart of an Entity (by ShallowCopy), Binds
it, then Copies the content of the former Entity to the other
one (same Type), by call to the General Service Library
It may command the Copy of Referenced Entities
Then, its returns True.

If <mapped> is True, the Map is used to store the Result
Else, the Result is simply produced : it can be used to Copy
internal sub-parts of Entities, which are not intended to be
shared (Strings, Arrays, etc...)
If <errstat> is True, this means that the Entity is recorded
in the Model as Erroneous : in this case, the General Service
for Deep Copy is not called (this could be dangerous) : hence
the Counter-Part is produced but empty, it can be referenced.

This method does nothing and returns False if the Protocol
does not recognize <ent>.
It basically makes a Deep Copy without changing the Types.
It can be redefined for special uses.
.
Standard_EXPORT Handle_Standard_Transient Transferred (const Handle(Standard_Transient)&ent)
 Transfers one Entity, if not yet bound to a result
Remark : For an Entity which is reported in the Starting Model,
the ReportEntity will also be copied with its Content if it
has one (at least ShallowCopy; Complete Copy if the Protocol
recognizes the Content : see method Copy)
.
Standard_EXPORT void Bind (const Handle(Standard_Transient)&ent, const Handle(Standard_Transient)&res)
 Defines a Result for the Transfer of a Starting object.
Used by method Transferred (which performs a normal Copy),
but can also be called to enforce a result : in the latter
case, the enforced result must be compatible with the other
Transfers which are performed
.
Standard_EXPORT Standard_Boolean Search (const Handle(Standard_Transient)&ent, Handle(Standard_Transient)&res) const
 Search for the result of a Starting Object (i.e. an Entity)
Returns True if a Result is Bound (and fills "result")
Returns False if no result is Bound
.
Standard_EXPORT void ClearLastFlags ()
 Clears LastFlags only. This allows to know what Entities are
copied after its call (see method LastCopiedAfter). It can be
used when copies are done by increments, which must be
distinghished. ClearLastFlags is also called by Clear.
.
Standard_EXPORT Standard_Integer LastCopiedAfter (const Standard_Integer numfrom, Handle(Standard_Transient)&ent, Handle(Standard_Transient)&res) const
 Returns an copied Entity and its Result which were operated
after last call to ClearLastFlags. It returns the first
"Last Copied Entity" which Number follows <numfrom>, Zero if
none. It is used in a loop as follow :
Integer num = 0;
while ( (num = CopyTool.LastCopiedAfter(num,ent,res)) ) {
.. Process Starting <ent> and its Result <res>
}
.
Standard_EXPORT void TransferEntity (const Handle(Standard_Transient)&ent)
 Transfers one Entity and records result into the Transfer List
Calls method Transferred
.
Standard_EXPORT void RenewImpliedRefs ()
 Renews the Implied References. These References do not involve
Copying of referenced Entities. For such a Reference, if the
Entity which defines it AND the referenced Entity are both
copied, then this Reference is renewed. Else it is deleted in
the copied Entities.
Remark : this concerns only some specific references, such as
"back pointers".
.
Standard_EXPORT void FillModel (const Handle(Interface_InterfaceModel)&bmodel)
 Fills a Model with the result of the transfer (TransferList)
Commands copy of Header too, and calls RenewImpliedRefs
.
Standard_EXPORT Interface_EntityIterator CompleteResult (const Standard_Boolean withreports=Standard_False) const
 Returns the complete list of copied Entities
If <withreports> is given True, the entities which were
reported in the Starting Model are replaced in the list
by the copied ReportEntities
.
Standard_EXPORT Interface_EntityIterator RootResult (const Standard_Boolean withreports=Standard_False) const
 Returns the list of Root copied Entities (those which were
asked for copy by the user of CopyTool, not by copying
another Entity)
.
virtual Standard_EXPORT void Destroy ()
virtual Standard_EXPORT ~Interface_CopyTool ()

Protected Member Functions

virtual Standard_EXPORT Standard_Boolean NewVoid (const Handle(Standard_Transient)&entfrom, Handle(Standard_Transient)&entto)
 Creates a new void instance (just created) of the same class
as <entfrom>. Uses the general service GeneralModule:NewVoid
Returns True if OK (Recognize has succeeded), False else
(in such a case, the standard method ShallowCopy is called
to produce <ento> from <entfrom> : hence it is not void)

No mapping is managed by this method
.

Protected Attributes

Interface_GeneralLib thelib

Private Member Functions

virtual Standard_EXPORT void Implied (const Handle(Standard_Transient)&entfrom, const Handle(Standard_Transient)&entto)
 Renews the Implied References of one already Copied Entity
.

Private Attributes

Handle_Interface_InterfaceModel themod
Handle_Interface_CopyControl themap
Handle_Interface_CopyMap therep
Interface_BitMap thelst
Standard_Integer thelev
TColStd_SequenceOfInteger therts
Standard_Boolean theimp
Handle_Standard_Transient theent
Handle_Interface_GeneralModule themdu
Standard_Integer theCN

Constructor & Destructor Documentation

Standard_EXPORT Interface_CopyTool::Interface_CopyTool const Handle(Interface_InterfaceModel)&  amodel,
const Interface_GeneralLib lib
 

Standard_EXPORT Interface_CopyTool::Interface_CopyTool const Handle(Interface_InterfaceModel)&  amodel,
const Handle(Interface_Protocol)&  protocol
 

Standard_EXPORT Interface_CopyTool::Interface_CopyTool const Handle(Interface_InterfaceModel)&  amodel  ) 
 

virtual Standard_EXPORT Interface_CopyTool::~Interface_CopyTool  )  [inline, virtual]
 


Member Function Documentation

Standard_EXPORT void Interface_CopyTool::Bind const Handle(Standard_Transient)&  ent,
const Handle(Standard_Transient)&  res
 

virtual Standard_EXPORT void Interface_CopyTool::Clear  )  [virtual]
 

Standard_EXPORT void Interface_CopyTool::ClearLastFlags  ) 
 

Standard_EXPORT Interface_EntityIterator Interface_CopyTool::CompleteResult const Standard_Boolean  withreports = Standard_False  )  const
 

Standard_EXPORT Handle_Interface_CopyControl Interface_CopyTool::Control  )  const
 

virtual Standard_EXPORT Standard_Boolean Interface_CopyTool::Copy const Handle(Standard_Transient)&  entfrom,
Handle(Standard_Transient)&  entto,
const Standard_Boolean  mapped,
const Standard_Boolean  errstat
[virtual]
 

Reimplemented in Transfer_TransferDispatch.

virtual Standard_EXPORT void Interface_CopyTool::Destroy  )  [virtual]
 

Standard_EXPORT void Interface_CopyTool::FillModel const Handle(Interface_InterfaceModel)&  bmodel  ) 
 

virtual Standard_EXPORT void Interface_CopyTool::Implied const Handle(Standard_Transient)&  entfrom,
const Handle(Standard_Transient)&  entto
[private, virtual]
 

Standard_EXPORT Standard_Integer Interface_CopyTool::LastCopiedAfter const Standard_Integer  numfrom,
Handle(Standard_Transient)&  ent,
Handle(Standard_Transient)&  res
const
 

Standard_EXPORT Handle_Interface_InterfaceModel Interface_CopyTool::Model  )  const
 

virtual Standard_EXPORT Standard_Boolean Interface_CopyTool::NewVoid const Handle(Standard_Transient)&  entfrom,
Handle(Standard_Transient)&  entto
[protected, virtual]
 

void Interface_CopyTool::operator delete void *  anAddress  )  [inline]
 

Reimplemented in Transfer_TransferDispatch.

void* Interface_CopyTool::operator new size_t  size  )  [inline]
 

Reimplemented in Transfer_TransferDispatch.

void* Interface_CopyTool::operator new size_t  ,
void *  anAddress
[inline]
 

Reimplemented in Transfer_TransferDispatch.

Standard_EXPORT void Interface_CopyTool::RenewImpliedRefs  ) 
 

Standard_EXPORT Interface_EntityIterator Interface_CopyTool::RootResult const Standard_Boolean  withreports = Standard_False  )  const
 

Standard_EXPORT Standard_Boolean Interface_CopyTool::Search const Handle(Standard_Transient)&  ent,
Handle(Standard_Transient)&  res
const
 

Standard_EXPORT void Interface_CopyTool::SetControl const Handle(Interface_CopyControl)&  othermap  ) 
 

Standard_EXPORT void Interface_CopyTool::TransferEntity const Handle(Standard_Transient)&  ent  ) 
 

Standard_EXPORT Handle_Standard_Transient Interface_CopyTool::Transferred const Handle(Standard_Transient)&  ent  ) 
 


Field Documentation

Standard_Integer Interface_CopyTool::theCN [private]
 

Handle_Standard_Transient Interface_CopyTool::theent [private]
 

Standard_Boolean Interface_CopyTool::theimp [private]
 

Standard_Integer Interface_CopyTool::thelev [private]
 

Interface_GeneralLib Interface_CopyTool::thelib [protected]
 

Interface_BitMap Interface_CopyTool::thelst [private]
 

Handle_Interface_CopyControl Interface_CopyTool::themap [private]
 

Handle_Interface_GeneralModule Interface_CopyTool::themdu [private]
 

Handle_Interface_InterfaceModel Interface_CopyTool::themod [private]
 

Handle_Interface_CopyMap Interface_CopyTool::therep [private]
 

TColStd_SequenceOfInteger Interface_CopyTool::therts [private]
 


The documentation for this class was generated from the following file:
Generated on Mon Aug 25 14:41:33 2008 for OpenCASCADE by  doxygen 1.4.1