Salome HOME
projects
/
modules
/
smesh.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Regression of BelongToGeom on Debian-6
[modules/smesh.git]
/
src
/
SMESH
/
SMESH_subMesh.hxx
diff --git
a/src/SMESH/SMESH_subMesh.hxx
b/src/SMESH/SMESH_subMesh.hxx
index effe550983f892477ae80e8cb51a34ac5079bcef..05890e8cef1ac776e7bab1caee33890127abb1ef 100644
(file)
--- a/
src/SMESH/SMESH_subMesh.hxx
+++ b/
src/SMESH/SMESH_subMesh.hxx
@@
-1,4
+1,4
@@
-// Copyright (C) 2007-201
3
CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-201
6
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
//
// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@
-6,7
+6,7
@@
// 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
// 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
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
@@
-29,9
+29,7
@@
#include "SMESH_SMESH.hxx"
#include "SMESH_SMESH.hxx"
-#include "SMESHDS_Mesh.hxx"
-#include "SMESHDS_SubMesh.hxx"
-#include "SMESH_Hypothesis.hxx"
+#include "SMDS_Iterator.hxx"
#include "SMESH_ComputeError.hxx"
#include "SMESH_Algo.hxx"
#include "SMESH_ComputeError.hxx"
#include "SMESH_Algo.hxx"
@@
-42,13
+40,15
@@
#include <list>
#include <map>
#include <list>
#include <map>
-class SMESH_Mesh;
-class SMESH
_Hypothesis
;
+class SMESH
DS
_Mesh;
+class SMESH
DS_SubMesh
;
class SMESH_Algo;
class SMESH_Gen;
class SMESH_Algo;
class SMESH_Gen;
+class SMESH_Hypothesis;
+class SMESH_Mesh;
+class SMESH_subMesh;
class SMESH_subMeshEventListener;
class SMESH_subMeshEventListenerData;
class SMESH_subMeshEventListener;
class SMESH_subMeshEventListenerData;
-class SMESH_subMesh;
typedef SMESH_subMeshEventListener EventListener;
typedef SMESH_subMeshEventListenerData EventListenerData;
typedef SMESH_subMeshEventListener EventListener;
typedef SMESH_subMeshEventListenerData EventListenerData;
@@
-80,6
+80,8
@@
class SMESH_EXPORT SMESH_subMesh
SMESH_Algo* GetAlgo() const;
const std::map < int, SMESH_subMesh * >& DependsOn();
SMESH_Algo* GetAlgo() const;
const std::map < int, SMESH_subMesh * >& DependsOn();
+ bool DependsOn( const SMESH_subMesh* other ) const;
+ bool DependsOn( const int shapeID ) const;
/*!
* \brief Return iterator on the sub-meshes this one depends on. By default
* most simple sub-meshes go first.
/*!
* \brief Return iterator on the sub-meshes this one depends on. By default
* most simple sub-meshes go first.
@@
-87,12
+89,14
@@
class SMESH_EXPORT SMESH_subMesh
SMESH_subMeshIteratorPtr getDependsOnIterator(const bool includeSelf,
const bool complexShapeFirst=false) const;
SMESH_subMeshIteratorPtr getDependsOnIterator(const bool includeSelf,
const bool complexShapeFirst=false) const;
+ const std::vector< SMESH_subMesh * > & GetAncestors() const;
+ void ClearAncestors();
+
const TopoDS_Shape & GetSubShape() const;
enum compute_state
{
const TopoDS_Shape & GetSubShape() const;
enum compute_state
{
- NOT_READY, READY_TO_COMPUTE,
- COMPUTE_OK, FAILED_TO_COMPUTE
+ NOT_READY, READY_TO_COMPUTE, COMPUTE_OK, FAILED_TO_COMPUTE
};
enum algo_state
{
};
enum algo_state
{
@@
-118,7
+122,7
@@
class SMESH_EXPORT SMESH_subMesh
};
// ==================================================================
};
// ==================================================================
- // Members to track non hierarchical dependencies between submeshes
+ // Members to track non hierarchical dependencies between sub
-
meshes
// ==================================================================
/*!
// ==================================================================
/*!
@@
-138,16
+142,22
@@
class SMESH_EXPORT SMESH_subMesh
/*!
* \brief Return an event listener data
* \param listener - the listener whose data is
/*!
* \brief Return an event listener data
* \param listener - the listener whose data is
+ * \param myOwn - if \c true, returns a listener set by this sub-mesh,
+ * else returns a listener listening to events of this sub-mesh
* \retval EventListenerData* - found data, maybe NULL
*/
* \retval EventListenerData* - found data, maybe NULL
*/
- EventListenerData* GetEventListenerData(EventListener* listener) const;
+ EventListenerData* GetEventListenerData(EventListener* listener,
+ const bool myOwn=false) const;
/*!
* \brief Return an event listener data
* \param listenerName - the listener name
/*!
* \brief Return an event listener data
* \param listenerName - the listener name
+ * \param myOwn - if \c true, returns a listener set by this sub-mesh,
+ * else returns a listener listening to events of this sub-mesh
* \retval EventListenerData* - found data, maybe NULL
*/
* \retval EventListenerData* - found data, maybe NULL
*/
- EventListenerData* GetEventListenerData(const std::string& listenerName) const;
+ EventListenerData* GetEventListenerData(const std::string& listenerName,
+ const bool myOwn=false) const;
/*!
* \brief Unregister the listener and delete it and it's data
/*!
* \brief Unregister the listener and delete it and it's data
@@
-205,19
+215,19
@@
protected:
public:
SMESH_Hypothesis::Hypothesis_Status
public:
SMESH_Hypothesis::Hypothesis_Status
- AlgoStateEngine(
i
nt event, SMESH_Hypothesis * anHyp);
+ AlgoStateEngine(
algo_eve
nt event, SMESH_Hypothesis * anHyp);
SMESH_Hypothesis::Hypothesis_Status
SMESH_Hypothesis::Hypothesis_Status
- SubMeshesAlgoStateEngine(
int event, SMESH_Hypothesis * anHyp
);
+ SubMeshesAlgoStateEngine(
algo_event event, SMESH_Hypothesis * anHyp, bool exitOnFatal=false
);
algo_state GetAlgoState() const { return _algoState; }
algo_state GetAlgoState() const { return _algoState; }
- compute_state GetComputeState() const { return _computeState; }
;
+ compute_state GetComputeState() const { return _computeState; }
SMESH_ComputeErrorPtr& GetComputeError() { return _computeError; }
void DumpAlgoState(bool isMain);
SMESH_ComputeErrorPtr& GetComputeError() { return _computeError; }
void DumpAlgoState(bool isMain);
- bool ComputeStateEngine(
i
nt event);
- void ComputeSubMeshStateEngine(
i
nt event, const bool includeSelf=false);
+ bool ComputeStateEngine(
compute_eve
nt event);
+ void ComputeSubMeshStateEngine(
compute_eve
nt event, const bool includeSelf=false);
bool Evaluate(MapShapeNbElems& aResMap);
bool Evaluate(MapShapeNbElems& aResMap);
@@
-270,7
+280,9
@@
public:
protected:
// ==================================================================
protected:
// ==================================================================
- void insertDependence(const TopoDS_Shape aSubShape);
+ void insertDependence(const TopoDS_Shape aShape,
+ TopAbs_ShapeEnum aSubType,
+ TopAbs_ShapeEnum avoidType=TopAbs_SHAPE);
void removeSubMeshElementsAndNodes();
void updateDependantsState(const compute_event theEvent);
void removeSubMeshElementsAndNodes();
void updateDependantsState(const compute_event theEvent);
@@
-287,7
+299,7
@@
protected:
SMESH_Algo* theAlgo,
bool & theSubComputed,
bool & theSubFailed,
SMESH_Algo* theAlgo,
bool & theSubComputed,
bool & theSubFailed,
-
int & theComputeCost
);
+
std::vector<SMESH_subMesh*>& theSubs
);
/*!
* \brief Update compute_state by _computeError
* \retval bool - false if there are errors
/*!
* \brief Update compute_state by _computeError
* \retval bool - false if there are errors
@@
-307,6
+319,7
@@
protected:
const SMESH_Hypothesis * theHyp,
const int theHypType = 0);
//
const SMESH_Hypothesis * theHyp,
const int theHypType = 0);
//
+ int computeCost() const;
protected:
protected:
@@
-316,13
+329,15
@@
protected:
int _Id;
std::map < int, SMESH_subMesh * >_mapDepend;
int _Id;
std::map < int, SMESH_subMesh * >_mapDepend;
- bool _dependenceAnalysed;
+ bool _dependenceAnalysed;
+ std::vector< SMESH_subMesh * > _ancestors;
SMESH_Algo * _algo; // the algorithm found by last *StateEngine() call
algo_state _algoState;
compute_state _computeState;
SMESH_ComputeErrorPtr _computeError;
SMESH_Algo * _algo; // the algorithm found by last *StateEngine() call
algo_state _algoState;
compute_state _computeState;
SMESH_ComputeErrorPtr _computeError;
- int _computeCost; // how costly is to compute this sub-mesh
+ int _computeCost; // how costly is to compute this sub-mesh
+ int _realComputeCost; // _computeCost depending on presence of needed hypotheses
// allow algo->Compute() if a sub-shape of lower dim is meshed but
// none mesh entity is bound to it. Eg StdMeshers_CompositeSegment_1D can
// allow algo->Compute() if a sub-shape of lower dim is meshed but
// none mesh entity is bound to it. Eg StdMeshers_CompositeSegment_1D can