-// Copyright (C) 2007-2013 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
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
-// version 2.1 of the License.
+// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// ===========
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,
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();
/*!
- * Returns statistic of mesh elements
- * Result array of number enityties
+ * Returns number of mesh elements of each \a EntityType
+ * Result array of number of elements per \a EntityType
* Inherited from SMESH_IDSource
*/
- virtual SMESH::long_array* GetMeshInfo();
-
- // Inherited from SMESH_IDSource interface
- virtual SMESH::long_array* GetIDs();
-
+ virtual SMESH::smIdType_array* GetMeshInfo();
+ /*!
+ * Returns number of mesh elements of each \a ElementType
+ */
+ virtual SMESH::smIdType_array* GetNbElementsByType();
+ /*!
+ * Returns a sequence of all element IDs
+ */
+ virtual SMESH::smIdType_array* GetIDs();
/*!
* Returns types of elements it contains
* Inherited from SMESH_IDSource interface
* happen if mesh data is not yet fully loaded from the file of study.
*/
virtual bool IsMeshInfoCorrect();
+ /*!
+ * Returns mesh unstructed grid information.
+ */
+ 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;
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 );
};
// =========================
};
// =========================
-// 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,
// 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;