+
+ /**
+ * Returns flag indicating that object is updateble or not.
+ */
+ HYDRODATA_EXPORT virtual bool CanBeUpdated() const;
+
+
+ /**
+ * Removes object and it child sub-objects from the data structure.
+ * Reimplemented to update names of regions in father calculation.
+ */
+ HYDRODATA_EXPORT virtual void Remove();
+
+ /**
+ * Returns flag indicating that object can be removed or not.
+ */
+ HYDRODATA_EXPORT virtual bool CanRemove();
+
+ /**
+ * Returns the list of all reference objects of this object.
+ */
+ HYDRODATA_EXPORT virtual HYDROData_SequenceOfObjects GetAllReferenceObjects() const;
+
+
+ /**
+ * Add new one reference zone for region.
+ * The label of theZone is changed in case if old parent is not this region.
+ */
+ HYDRODATA_EXPORT virtual bool AddZone( const Handle(HYDROData_Zone)& theZone );
+
+ /**
+ * Returns all reference zone of region.
+ */
+ HYDRODATA_EXPORT virtual HYDROData_SequenceOfObjects GetZones() const;
+
+ /**
+ * Removes reference zone from region.
+ */
+ HYDRODATA_EXPORT virtual void RemoveZone( const Handle(HYDROData_Zone)& theZone );
+
+ /**
+ * Removes all reference zones from region.
+ */
+ HYDRODATA_EXPORT virtual void RemoveZones();
+
+ /**
+ * \brief Returns the shape of the region.
+ * Shape of the region could be:
+ * - a face which is the union of the region zones faces
+ * - a shell if the zones faces can't be united into one face
+ * \return shape as TopoDS_Shape
+ */
+ HYDRODATA_EXPORT virtual TopoDS_Shape GetShape( HYDROData_ShapesGroup::SeqOfGroupsDefs* theSeqOfGroups = 0 ) const;
+
+protected:
+
+ /**
+ * Create new one reference zone for region on child label.
+ * The new zone is added into the list of reference zones.
+ */
+ HYDRODATA_EXPORT virtual Handle(HYDROData_Zone) addNewZone();
+