- TopoDS_Shape _subShape;
- Handle (SMESHDS_Mesh) _meshDS;
- Handle (SMESHDS_SubMesh) _subMeshDS;
- int _Id;
- SMESH_Mesh* _father;
- map<int, SMESH_subMesh*> _mapDepend;
- map<int, SMESH_subMesh*> _mapDependants;
- bool _dependenceAnalysed;
- bool _dependantsFound;
-
- int _algoState;
- int _oldAlgoState;
- int _computeState;
+ /*!
+ * \brief Return a shape containing all sub-shapes of the MainShape that can be
+ * meshed at once along with _subShape
+ */
+ TopoDS_Shape GetCollection(SMESH_Gen * theGen,
+ SMESH_Algo* theAlgo,
+ bool & theSubComputed);
+
+ /*!
+ * \brief Apply theAlgo to all subshapes in theCollection
+ */
+ bool ApplyToCollection (SMESH_Algo* theAlgo,
+ const TopoDS_Shape& theCollection);
+
+ /*!
+ * \brief Update compute_state by _computeError
+ * \retval bool - false if there are errors
+ */
+ bool CheckComputeError(SMESH_Algo* theAlgo, const TopoDS_Shape& theShape=TopoDS_Shape());
+
+ /*!
+ * \brief Return a hypothesis attached to theShape.
+ *
+ * If theHyp is provided, similar but not same hypotheses
+ * is returned; else an applicable ones having theHypType
+ * is returned
+ */
+ const SMESH_Hypothesis* GetSimilarAttached(const TopoDS_Shape& theShape,
+ const SMESH_Hypothesis * theHyp,
+ const int theHypType = 0);
+ //
+
+protected:
+
+ TopoDS_Shape _subShape;
+ SMESHDS_SubMesh * _subMeshDS;
+ SMESH_Mesh * _father;
+ int _Id;
+
+ std::map < int, SMESH_subMesh * >_mapDepend;
+ bool _dependenceAnalysed;
+
+ int _algoState;
+ int _computeState;
+ SMESH_ComputeErrorPtr _computeError;
+
+ // allow algo->Compute() if a subshape of lower dim is meshed but
+ // none mesh entity is bound to it. Eg StdMeshers_CompositeSegment_1D can
+ // mesh several edges as a whole and leave some of them without mesh entities
+ bool _alwaysComputed;