EdgeSetTopologyChange.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef SOFA_COMPONENT_TOPOLOGY_EDGESETTOPOLOGYCHANGE_H
00026 #define SOFA_COMPONENT_TOPOLOGY_EDGESETTOPOLOGYCHANGE_H
00027
00028 #include <sofa/core/componentmodel/topology/Topology.h>
00029 #include <sofa/helper/vector.h>
00030
00031 namespace sofa
00032 {
00033
00034 namespace component
00035 {
00036
00037 namespace topology
00038 {
00039 using core::componentmodel::topology::BaseMeshTopology;
00040 typedef BaseMeshTopology::Edge Edge;
00041
00043 class EdgesAdded : public core::componentmodel::topology::TopologyChange
00044 {
00045 public:
00046 EdgesAdded(const unsigned int nE)
00047 : core::componentmodel::topology::TopologyChange(core::componentmodel::topology::EDGESADDED),
00048 nEdges(nE)
00049 { }
00050
00051 EdgesAdded(const unsigned int nE,
00052 const sofa::helper::vector< Edge >& edgesList,
00053 const sofa::helper::vector< unsigned int >& edgesIndex)
00054 : core::componentmodel::topology::TopologyChange(core::componentmodel::topology::EDGESADDED),
00055 nEdges(nE),
00056 edgeArray(edgesList),
00057 edgeIndexArray(edgesIndex)
00058 { }
00059
00060 EdgesAdded(const unsigned int nE,
00061 const sofa::helper::vector< Edge >& edgesList,
00062 const sofa::helper::vector< unsigned int >& edgesIndex,
00063 const sofa::helper::vector< sofa::helper::vector< unsigned int > >& ancestors)
00064 : core::componentmodel::topology::TopologyChange(core::componentmodel::topology::EDGESADDED),
00065 nEdges(nE),
00066 edgeArray(edgesList),
00067 edgeIndexArray(edgesIndex),
00068 ancestorsList(ancestors)
00069 { }
00070
00071 EdgesAdded(const unsigned int nE,
00072 const sofa::helper::vector< Edge >& edgesList,
00073 const sofa::helper::vector< unsigned int >& edgesIndex,
00074 const sofa::helper::vector< sofa::helper::vector< unsigned int > >& ancestors,
00075 const sofa::helper::vector< sofa::helper::vector< double > >& baryCoefs)
00076 : core::componentmodel::topology::TopologyChange(core::componentmodel::topology::EDGESADDED),
00077 nEdges(nE),
00078 edgeArray(edgesList),
00079 edgeIndexArray(edgesIndex),
00080 ancestorsList(ancestors),
00081 coefs(baryCoefs)
00082 { }
00083
00084 virtual ~EdgesAdded() {}
00085
00086 unsigned int getNbAddedEdges() const { return nEdges;}
00087
00088 public:
00089 unsigned int nEdges;
00090 sofa::helper::vector< Edge > edgeArray;
00091 sofa::helper::vector< unsigned int > edgeIndexArray;
00092 sofa::helper::vector< sofa::helper::vector< unsigned int > > ancestorsList;
00093 sofa::helper::vector< sofa::helper::vector< double > > coefs;
00094 };
00095
00096
00098 class EdgesRemoved : public core::componentmodel::topology::TopologyChange
00099 {
00100 public:
00101 EdgesRemoved(const sofa::helper::vector<unsigned int> _eArray)
00102 : core::componentmodel::topology::TopologyChange(core::componentmodel::topology::EDGESREMOVED),
00103 removedEdgesArray(_eArray)
00104 {}
00105
00106 ~EdgesRemoved() {}
00107
00108 virtual const sofa::helper::vector<unsigned int> &getArray() const
00109 {
00110 return removedEdgesArray;
00111 }
00112
00113 virtual unsigned int getNbRemovedEdges() const
00114 {
00115 return removedEdgesArray.size();
00116 }
00117
00118 public:
00119 sofa::helper::vector<unsigned int> removedEdgesArray;
00120 };
00121
00122 }
00123
00124 }
00125
00126 }
00127
00128 #endif