// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
-// See http://www.salome-platform.org or email : webmaster.salome@opencascade.org
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
//
//
// Module : SMESH
// $Header$
+
#ifndef SMESH_Group_i_HeaderFile
#define SMESH_Group_i_HeaderFile
+#include "SMESH.hxx"
+
#include <SALOMEconfig.h>
#include CORBA_SERVER_HEADER(SMESH_Group)
#include CORBA_SERVER_HEADER(SMESH_Mesh)
+#include CORBA_CLIENT_HEADER(GEOM_Gen)
#include "SALOME_GenericObj_i.hh"
class SMESH_Mesh_i;
-
-class SMESH_Group_i:
- public virtual POA_SMESH::SMESH_Group,
+class SMESH_Group;
+class SMESHDS_GroupBase;
+
+// ===========
+// Group Base
+// ===========
+class SMESH_I_EXPORT SMESH_GroupBase_i:
+ public virtual POA_SMESH::SMESH_GroupBase,
public virtual SALOME::GenericObj_i
{
-public:
- SMESH_Group_i( PortableServer::POA_ptr thePOA, SMESH_Mesh_i* theMeshServant, const int theLocalID );
- virtual ~SMESH_Group_i();
+ public:
+ SMESH_GroupBase_i(PortableServer::POA_ptr thePOA,
+ SMESH_Mesh_i* theMeshServant,
+ const int theLocalID );
+ virtual ~SMESH_GroupBase_i();
// CORBA interface implementation
- void SetName( const char* theName );
-
+ void SetName(const char* name);
char* GetName();
-
SMESH::ElementType GetType();
-
CORBA::Long Size();
-
CORBA::Boolean IsEmpty();
+ CORBA::Boolean Contains(CORBA::Long elem_id);
+ CORBA::Long GetID(CORBA::Long elem_index);
+ SMESH::long_array* GetListOfID();
+ SMESH::SMESH_Mesh_ptr GetMesh();
- void Clear();
+ // Inherited from SMESH_IDSource interface
+ virtual SMESH::long_array* GetIDs();
- CORBA::Boolean Contains( CORBA::Long theID );
+ // Internal C++ interface
+ int GetLocalID() const { return myLocalID; }
+ SMESH_Mesh_i* GetMeshServant() const { return myMeshServant; }
+ SMESH_Group* GetSmeshGroup() const;
+ SMESHDS_GroupBase* GetGroupDS() const;
- CORBA::Long Add( const SMESH::long_array& theIDs );
+ void SetColor(const SALOMEDS::Color& color);
+ SALOMEDS::Color GetColor();
- CORBA::Long GetID( CORBA::Long theIndex );
+private:
+ SMESH_Mesh_i* myMeshServant;
+ int myLocalID;
+};
- SMESH::long_array* GetListOfID();
+// ======
+// 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 );
- SMESH::SMESH_Mesh_ptr GetMesh();
+ CORBA::Long AddByPredicate( SMESH::Predicate_ptr thePredicate );
+ CORBA::Long RemoveByPredicate( SMESH::Predicate_ptr thePredicate );
+};
- // Internal C++ interface
- int GetLocalID();
+// =========================
+// Group linked to geometry
+// =========================
- SMESH_Mesh_i* GetMeshServant() { return myMeshServant; }
+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 );
-private:
- SMESH_Mesh_i* myMeshServant;
- int myLocalID;
+ // CORBA interface implementation
+ GEOM::GEOM_Object_ptr GetShape();
};
-
#endif