+// ======
+// Group
+// ======
+
+class SMESH_I_EXPORT SMESH_Group_i:
+ public virtual POA_SMESH::SMESH_Group,
+ public SMESH_GroupBase_i
+{
+ public:
+ SMESH_Group_i( PortableServer::POA_ptr thePOA,
+ SMESH_Mesh_i* theMeshServant,
+ const int theLocalID );
+ // CORBA interface implementation
+ void Clear();
+ CORBA::Long Add( const SMESH::long_array& theIDs );
+ CORBA::Long Remove( const SMESH::long_array& theIDs );
+
+ CORBA::Long AddByPredicate( SMESH::Predicate_ptr thePredicate );
+ CORBA::Long RemoveByPredicate( SMESH::Predicate_ptr thePredicate );
+
+ CORBA::Long AddFrom( SMESH::SMESH_IDSource_ptr theSource );
+};
+
+// =========================
+// Group linked to geometry
+// =========================
+
+class SMESH_I_EXPORT SMESH_GroupOnGeom_i:
+ public virtual POA_SMESH::SMESH_GroupOnGeom,
+ public SMESH_GroupBase_i
+{
+ public:
+ SMESH_GroupOnGeom_i( PortableServer::POA_ptr thePOA,
+ SMESH_Mesh_i* theMeshServant,
+ const int theLocalID );
+ // CORBA interface implementation
+ GEOM::GEOM_Object_ptr GetShape();
+};
+
+// =========================
+// Group deined by filter
+// =========================
+
+class SMESH_I_EXPORT SMESH_GroupOnFilter_i:
+ public virtual POA_SMESH::SMESH_GroupOnFilter,
+ public SMESH_GroupBase_i
+{
+ public:
+ SMESH_GroupOnFilter_i( PortableServer::POA_ptr thePOA,
+ SMESH_Mesh_i* theMeshServant,
+ const int theLocalID );
+ ~SMESH_GroupOnFilter_i();
+
+ // Persistence
+ static SMESH::Filter_ptr StringToFilter(const std::string& thePersistentString );
+ std::string FilterToString() const;
+
+ static SMESH_PredicatePtr GetPredicate( SMESH::Filter_ptr );
+
+ // CORBA interface implementation
+ void SetFilter(SMESH::Filter_ptr theFilter) throw (SALOME::SALOME_Exception);
+ SMESH::Filter_ptr GetFilter();
+ virtual SMESH::long_array* GetListOfID();
+ virtual SMESH::long_array* GetMeshInfo();
+
+ // method of SMESH::NotifyerAndWaiter to update self when myFilter changes
+ virtual void OnBaseObjModified(NotifyerAndWaiter* filter, bool);
+
+ private:
+ SMESH::Filter_var myFilter;
+};