// 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 _Interface_Graph_HeaderFile #define _Interface_Graph_HeaderFile #ifndef _Standard_HeaderFile #include #endif #ifndef _Standard_Macro_HeaderFile #include #endif #ifndef _Handle_Interface_InterfaceModel_HeaderFile #include #endif #ifndef _TCollection_AsciiString_HeaderFile #include #endif #ifndef _TColStd_Array1OfInteger_HeaderFile #include #endif #ifndef _Interface_BitMap_HeaderFile #include #endif #ifndef _Interface_IntList_HeaderFile #include #endif #ifndef _Handle_Interface_Protocol_HeaderFile #include #endif #ifndef _Handle_Interface_GTool_HeaderFile #include #endif #ifndef _Standard_Boolean_HeaderFile #include #endif #ifndef _Standard_Integer_HeaderFile #include #endif #ifndef _Handle_Standard_Transient_HeaderFile #include #endif #ifndef _Handle_Standard_Type_HeaderFile #include #endif #ifndef _Handle_TCollection_HAsciiString_HeaderFile #include #endif class Interface_InterfaceModel; class Standard_DomainError; class Interface_GeneralLib; class Interface_Protocol; class Interface_GTool; class Interface_IntList; class Standard_Transient; class Interface_BitMap; class Interface_EntityIterator; class Standard_Type; class TCollection_HAsciiString; //! Gives basic data structure for operating and storing
//! graph results (usage is normally internal)
//! Entities are Mapped according their Number in the Model
//!
//! Each Entity from the Model can be known as "Present" or
//! not; if it is, it is Mapped with a Status : an Integer
//! which can be used according to needs of each algorithm
//! In addition, the Graph brings a BitMap which can be used
//! by any caller
//!
//! Also, it is bound with two lists : a list of Shared
//! Entities (in fact, their Numbers in the Model) which is
//! filled by a ShareTool, and a list of Sharing Entities,
//! computed by deduction from the Shared Lists
//!
//! Moreover, it is possible to redefine the list of Entities
//! Shared by an Entity (instead of standard answer by general
//! service Shareds) : this new list can be empty; it can
//! be changed or reset (i.e. to come back to standard answer)
class Interface_Graph { 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 an empty graph, ready to receive Entities from amodel
//! Note that this way of Creation allows to verify that
//! Entities to work with are contained in
//! Basic Shared and Sharing lists are obtained from a General
//! Services Library, given directly as an argument
Standard_EXPORT Interface_Graph(const Handle(Interface_InterfaceModel)& amodel,const Interface_GeneralLib& lib); //! Same as above, but the Library is defined through a Protocol
Standard_EXPORT Interface_Graph(const Handle(Interface_InterfaceModel)& amodel,const Handle(Interface_Protocol)& protocol); //! Same as above, but the Library is defined through a Protocol
Standard_EXPORT Interface_Graph(const Handle(Interface_InterfaceModel)& amodel,const Handle(Interface_GTool)& gtool); //! Same a above but works with the Protocol recorded in the Model
Standard_EXPORT Interface_Graph(const Handle(Interface_InterfaceModel)& amodel); //! Creates a Graph from another one, getting all its data
//! Remark that status are copied from , but the other
//! lists (sharing/shared) are copied only if = True
Standard_EXPORT Interface_Graph(const Interface_Graph& agraph,const Standard_Boolean copied = Standard_False); //! Reevaluates the Sharing Lists of the Graph, starting from the
//! Shared Lists (priority to the redefined ones)
Standard_EXPORT void EvalSharings() ; //! Erases data, making graph ready to rebegin from void
//! (also resets Shared lists redefinitions)
Standard_EXPORT void Reset() ; //! Erases Status (Values and Flags of Presence), making graph
//! ready to rebegin from void. Does not concerns Shared lists
Standard_EXPORT void ResetStatus() ; //! Returns size (max nb of entities, i.e. Model's nb of entities)
Standard_EXPORT Standard_Integer Size() const; //! Returns the Number of the entity in the Map, computed at
//! creation time (Entities loaded from the Model)
//! Returns 0 if not contained by Model used to create
//! (that is, is unknown from )
Standard_EXPORT Standard_Integer EntityNumber(const Handle(Standard_Transient)& ent) const; //! Returns True if an Entity is noted as present in the graph
//! (See methods Get... which determine this status)
//! Returns False if is out of range too
Standard_EXPORT Standard_Boolean IsPresent(const Standard_Integer num) const; //! Same as above but directly on an Entity : if it is not
//! contained in the Model, returns False. Else calls
//! IsPresent(num) with given by EntityNumber
Standard_EXPORT Standard_Boolean IsPresent(const Handle(Standard_Transient)& ent) const; //! Returns mapped Entity given its no (if it is present)
Standard_EXPORT const Handle_Standard_Transient& Entity(const Standard_Integer num) const; //! Returns Status associated to a numero (only to read it)
Standard_EXPORT Standard_Integer Status(const Standard_Integer num) const; //! Returns Status associated to a numero, to be read or changed
Standard_EXPORT Standard_Integer& CStatus(const Standard_Integer num) ; //! Modifies Status associated to a numero
Standard_EXPORT void SetStatus(const Standard_Integer num,const Standard_Integer stat) ; //! Clears Entity and sets Status to 0, for a numero
Standard_EXPORT void RemoveItem(const Standard_Integer num) ; //! Changes all status which value is oldstat to new value newstat
Standard_EXPORT void ChangeStatus(const Standard_Integer oldstat,const Standard_Integer newstat) ; //! Removes all items of which status has a given value stat
Standard_EXPORT void RemoveStatus(const Standard_Integer stat) ; //! Returns the Bit Map in order to read or edit flag values
Standard_EXPORT const Interface_BitMap& BitMap() const; //! Returns the Bit Map in order to edit it (add new flags)
Standard_EXPORT Interface_BitMap& CBitMap() ; //! Returns the Model with which this Graph was created
Standard_EXPORT const Handle_Interface_InterfaceModel& Model() const; //! Loads Graph with all Entities contained in the Model
Standard_EXPORT void GetFromModel() ; //! Gets an Entity, plus its shared ones (at every level) if
//! "shared" is True. New items are set to status "newstat"
//! Items already present in graph remain unchanged
//! Of course, redefinitions of Shared lists are taken into
//! account if there are some
Standard_EXPORT void GetFromEntity(const Handle(Standard_Transient)& ent,const Standard_Boolean shared,const Standard_Integer newstat = 0) ; //! Gets an Entity, plus its shared ones (at every level) if
//! "shared" is True. New items are set to status "newstat".
//! Items already present in graph are processed as follows :
//! - if they already have status "newstat", they remain unchanged
//! - if they have another status, this one is modified :
//! if cumul is True, to former status + overlapstat (cumul)
//! if cumul is False, to overlapstat (enforce)
Standard_EXPORT void GetFromEntity(const Handle(Standard_Transient)& ent,const Standard_Boolean shared,const Standard_Integer newstat,const Standard_Integer overlapstat,const Standard_Boolean cumul) ; //! Gets Entities given by an EntityIterator. Entities which were
//! not yet present in the graph are mapped with status "newstat"
//! Entities already present remain unchanged
Standard_EXPORT void GetFromIter(const Interface_EntityIterator& iter,const Standard_Integer newstat) ; //! Gets Entities given by an EntityIterator and distinguishes
//! those already present in the Graph :
//! - new entities added to the Graph with status "newstst"
//! - entities already present with status = "newstat" remain
//! unchanged
//! - entities already present with status different form
//! "newstat" have their status modified :
//! if cumul is True, to former status + overlapstat (cumul)
//! if cumul is False, to overlapstat (enforce)
//! (Note : works as GetEntity, shared = False, for each entity)
Standard_EXPORT void GetFromIter(const Interface_EntityIterator& iter,const Standard_Integer newstat,const Standard_Integer overlapstat,const Standard_Boolean cumul) ; //! Gets all present items from another graph
Standard_EXPORT void GetFromGraph(const Interface_Graph& agraph) ; //! Gets items from another graph which have a specific Status
Standard_EXPORT void GetFromGraph(const Interface_Graph& agraph,const Standard_Integer stat) ; //! Returns True if or the list of entities shared by
//! (not redefined) contains items unknown from this Graph
//! Remark : apart from the status HasShareError, these items
//! are ignored
Standard_EXPORT Standard_Boolean HasShareErrors(const Handle(Standard_Transient)& ent) const; //! Returns True if Shared list of has been redefined
//! (Thus, Shareds from Graph gives a result different from
//! general service Shareds)
Standard_EXPORT Standard_Boolean HasRedefinedShareds(const Handle(Standard_Transient)& ent) const; //! Returns the list of Entities Shared by an Entity, as recorded
//! by the Graph. That is, by default Basic Shared List, else it
//! can be redefined by methods SetShare, SetNoShare ... see below
Standard_EXPORT Interface_EntityIterator Shareds(const Handle(Standard_Transient)& ent) const; //! Same as Shareds, but under the form of a list of Integers,
//! each one beeing the Number of a Shared Entity in the Graph
//! Especially intended for fast internal uses
//! Returns a Null Handle if is not contained by
Standard_EXPORT Interface_IntList SharedNums(const Standard_Integer num) const; //! Returns the list of Entities which Share an Entity, computed
//! from the Basic or Redefined Shared Lists
Standard_EXPORT Interface_EntityIterator Sharings(const Handle(Standard_Transient)& ent) const; //! Same as Sharings, but under the form of a list of Integers
//! each one beeing the Number of a Sharing Entity in the Graph
Standard_EXPORT Interface_IntList SharingNums(const Standard_Integer num) const; //! Returns the list of sharings entities, AT ANY LEVEL, which are
//! kind of a given type. A sharing entity kind of this type
//! ends the exploration of its branch
Standard_EXPORT Interface_EntityIterator TypedSharings(const Handle(Standard_Transient)& ent,const Handle(Standard_Type)& type) const; //! Returns the Entities which are not Shared (their Sharing List
//! is empty) in the Model
Standard_EXPORT Interface_EntityIterator RootEntities() const; //! Sets explicit the shared list of an Entity , that is,
//! available for a further edit (Add/Remove). All SetShare and
//! SetNoShare methods allow further edit operations.
//! Effect cancelled by ResetShare
//! Remark that all Redefinition methods work on Shared Lists,
//! but also manage (update) the Sharing Lists
Standard_EXPORT void SetShare(const Handle(Standard_Transient)& ent) ; //! Sets as Shared list of an Entity considered by ,
//! the list given as an EntityIterator . It can be empty.
//! This list will now be considered by method Shareds above
//! Does nothing if is not contained by
Standard_EXPORT void SetShare(const Handle(Standard_Transient)& ent,const Interface_EntityIterator& list) ; //! Same as above, but the list is given as the list of Numbers
//! of the Entities shared by
Standard_EXPORT void SetShare(const Handle(Standard_Transient)& ent,const Interface_IntList& list) ; //! Sets the Shared list of an Entity considered in as beeing
//! Empty (if is contained by )
Standard_EXPORT void SetNoShare(const Handle(Standard_Transient)& ent) ; //! Sets the Shared lists of a list of Entities to be Empty
Standard_EXPORT void SetNoShare(const Interface_EntityIterator& list) ; //! Adds a shared Entity to a redefined Shared List (formerly
//! defined by SetShare or SetNoShare). Does nothing if already in
Standard_EXPORT void AddShared(const Handle(Standard_Transient)& ent,const Handle(Standard_Transient)& shared) ; //! Removes a shared Entity from a redefined Shared List (formerly
//! defined ...). Does nothing if no in the list
Standard_EXPORT void RemoveShared(const Handle(Standard_Transient)& ent,const Handle(Standard_Transient)& shared) ; //! Comes back to the standard Shared list for : Cancels all
//! the former redefinitions for it
Standard_EXPORT void ResetShare(const Handle(Standard_Transient)& ent) ; //! Clears all effects of former redefinition of Shared lists
Standard_EXPORT void ResetAllShare() ; //! Determines the name attached to an entity, by using the
//! general service Name in GeneralModule
//! Returns a null handle if no name could be computed or if
//! the entity is not in the model
Standard_EXPORT Handle_TCollection_HAsciiString Name(const Handle(Standard_Transient)& ent) const; protected: private: //! Performs the Evaluation of the Graph, from an initial Library,
//! either defined through a Protocol, or given dierctly
//! Called by the non-empty Constructors
//!
//! Normally, gtool suffices. But if a Graph is created from a
//! GeneralLib directly, it cannot be used
//! If is defined, it has priority
Standard_EXPORT void Evaluate(const Interface_GeneralLib& lib,const Handle(Interface_GTool)& gtool) ; //! Returns the Table of Basic Shared lists. Used to Create
//! another Graph from
Standard_EXPORT Interface_IntList BasicSharedTable() const; //! Returns the Table of redefined Shared lists. Used to Create
//! another Graph from . Null Handle is no one redefinition
Standard_EXPORT Interface_IntList RedefinedSharedTable() const; //! Returns the Table of Sharing lists. Used to Create
//! another Graph from
Standard_EXPORT Interface_IntList SharingTable() const; Handle_Interface_InterfaceModel themodel; TCollection_AsciiString thepresents; TColStd_Array1OfInteger thestats; Interface_BitMap theflags; Interface_IntList theshareds; Interface_IntList thesharnews; Interface_IntList thesharings; }; // other Inline functions and methods (like "C++: function call" methods) #endif