X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSMESH_I%2FSMESH_Group_i.hxx;h=469adf293a682ec4ad534fc08219bde34d025cb5;hb=499f29d24922cec66e41b41a0039a954993bc6df;hp=90ea264a44ff228e8cf61dd76815cde7fff2f853;hpb=251f8c052dd12dd29922210dc901b295fe999a0e;p=modules%2Fsmesh.git diff --git a/src/SMESH_I/SMESH_Group_i.hxx b/src/SMESH_I/SMESH_Group_i.hxx index 90ea264a4..469adf293 100644 --- a/src/SMESH_I/SMESH_Group_i.hxx +++ b/src/SMESH_I/SMESH_Group_i.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2015 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2022 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -48,7 +48,8 @@ class SMESH_PreMeshInfo; // =========== class SMESH_I_EXPORT SMESH_GroupBase_i: public virtual POA_SMESH::SMESH_GroupBase, - public virtual SALOME::GenericObj_i + public virtual SALOME::GenericObj_i, + public SMESH::NotifyerAndWaiter // defined in SMESH_Filter_i.hxx { public: SMESH_GroupBase_i(PortableServer::POA_ptr thePOA, @@ -60,13 +61,13 @@ class SMESH_I_EXPORT SMESH_GroupBase_i: void SetName(const char* name); char* GetName(); SMESH::ElementType GetType(); - CORBA::Long Size(); + SMESH::smIdType Size(); CORBA::Boolean IsEmpty(); - CORBA::Boolean Contains(CORBA::Long elem_id); - CORBA::Long GetID(CORBA::Long elem_index); - SMESH::long_array* GetListOfID(); - SMESH::long_array* GetNodeIDs(); - CORBA::Long GetNumberOfNodes(); + CORBA::Boolean Contains(SMESH::smIdType elem_id); + SMESH::smIdType GetID(SMESH::smIdType elem_index); + SMESH::smIdType_array* GetListOfID(); + SMESH::smIdType_array* GetNodeIDs(); + SMESH::smIdType GetNumberOfNodes(); CORBA::Boolean IsNodeInfoAvailable(); // for gui virtual SMESH::SMESH_Mesh_ptr GetMesh(); @@ -76,15 +77,15 @@ class SMESH_I_EXPORT SMESH_GroupBase_i: * Result array of number of elements per \a EntityType * Inherited from SMESH_IDSource */ - virtual SMESH::long_array* GetMeshInfo(); + virtual SMESH::smIdType_array* GetMeshInfo(); /*! * Returns number of mesh elements of each \a ElementType */ - virtual SMESH::long_array* GetNbElementsByType(); + virtual SMESH::smIdType_array* GetNbElementsByType(); /*! * Returns a sequence of all element IDs */ - virtual SMESH::long_array* GetIDs(); + virtual SMESH::smIdType_array* GetIDs(); /*! * Returns types of elements it contains * Inherited from SMESH_IDSource interface @@ -100,8 +101,15 @@ class SMESH_I_EXPORT SMESH_GroupBase_i: */ virtual SALOMEDS::TMPFile* GetVtkUgStream(); + /*! + * Returns \c true if \c this group depends on the \a other via + * FT_BelongToMeshGroup predicate or vice versa + */ + virtual CORBA::Boolean IsInDependency( SMESH::SMESH_GroupBase_ptr other ); + + // Internal C++ interface - int GetLocalID() const { return myLocalID; } + int GetLocalID() const { return myLocalID; } // return group persistent ID SMESH_Mesh_i* GetMeshServant() const { return myMeshServant; } SMESH_Group* GetSmeshGroup() const; SMESHDS_GroupBase* GetGroupDS() const; @@ -142,13 +150,13 @@ class SMESH_I_EXPORT SMESH_Group_i: const int theLocalID ); // CORBA interface implementation void Clear(); - CORBA::Long Add( const SMESH::long_array& theIDs ); - CORBA::Long Remove( const SMESH::long_array& theIDs ); + SMESH::smIdType Add( const SMESH::smIdType_array& theIDs ); + SMESH::smIdType Remove( const SMESH::smIdType_array& theIDs ); - CORBA::Long AddByPredicate( SMESH::Predicate_ptr thePredicate ); - CORBA::Long RemoveByPredicate( SMESH::Predicate_ptr thePredicate ); + SMESH::smIdType AddByPredicate( SMESH::Predicate_ptr thePredicate ); + SMESH::smIdType RemoveByPredicate( SMESH::Predicate_ptr thePredicate ); - CORBA::Long AddFrom( SMESH::SMESH_IDSource_ptr theSource ); + SMESH::smIdType AddFrom( SMESH::SMESH_IDSource_ptr theSource ); }; // ========================= @@ -168,13 +176,12 @@ class SMESH_I_EXPORT SMESH_GroupOnGeom_i: }; // ========================= -// Group deined by filter +// Group denied by filter // ========================= class SMESH_I_EXPORT SMESH_GroupOnFilter_i: public virtual POA_SMESH::SMESH_GroupOnFilter, - public SMESH_GroupBase_i, - public SMESH::Filter_i::TPredicateChangeWaiter + public SMESH_GroupBase_i { public: SMESH_GroupOnFilter_i( PortableServer::POA_ptr thePOA, @@ -191,11 +198,15 @@ class SMESH_I_EXPORT SMESH_GroupOnFilter_i: // CORBA interface implementation void SetFilter(SMESH::Filter_ptr theFilter); SMESH::Filter_ptr GetFilter(); - virtual SMESH::long_array* GetListOfID(); - virtual SMESH::long_array* GetMeshInfo(); + virtual CORBA::Boolean IsUpToDate(); + virtual SMESH::smIdType_array* GetListOfID(); + virtual SMESH::smIdType_array* GetMeshInfo(); + //! @return false in two cases: 1) if mesh not loaded and GetMeshInfo() returns + //! incorrect information 2) mesh loaded but group contents is not computed. + virtual bool IsMeshInfoCorrect(); - // method of SMESH::Filter_i::TPredicateChangeWaiter - virtual void PredicateChanged(); + // method of SMESH::NotifyerAndWaiter to update self when myFilter changes + virtual void OnBaseObjModified(NotifyerAndWaiter* filter, bool); private: SMESH::Filter_var myFilter;