File indexing completed on 2025-12-16 09:19:55
0001 #include "GlobalVertexMapv1.h"
0002
0003 #include "GlobalVertex.h"
0004 #include "GlobalVertexMap.h"
0005
0006 #include <utility> // for pair, make_pair
0007
0008 GlobalVertexMapv1::~GlobalVertexMapv1()
0009 {
0010 clear();
0011 }
0012
0013 void GlobalVertexMapv1::identify(std::ostream& os) const
0014 {
0015 os << "GlobalVertexMapv1: size = " << _map.size() << std::endl;
0016 for (const auto& m : _map)
0017 {
0018 m.second->identify(os);
0019 }
0020 return;
0021 }
0022
0023 void GlobalVertexMapv1::clear()
0024 {
0025 for (const auto& iter : _map)
0026 {
0027 delete iter.second;
0028 }
0029 _map.clear();
0030 return;
0031 }
0032
0033 const GlobalVertex* GlobalVertexMapv1::get(unsigned int id) const
0034 {
0035 ConstIter iter = _map.find(id);
0036 if (iter == _map.end())
0037 {
0038 return nullptr;
0039 }
0040 return iter->second;
0041 }
0042
0043 GlobalVertex* GlobalVertexMapv1::get(unsigned int id)
0044 {
0045 Iter iter = _map.find(id);
0046 if (iter == _map.end())
0047 {
0048 return nullptr;
0049 }
0050 return iter->second;
0051 }
0052
0053 std::vector<GlobalVertex*> GlobalVertexMapv1::get_gvtxs_with_type(std::vector<GlobalVertex::VTXTYPE> types)
0054 {
0055 std::vector<GlobalVertex*> vertices;
0056 Iter iter = _map.begin();
0057
0058 for(GlobalVertex::VTXTYPE type : types)
0059 {
0060 while(iter != _map.end())
0061 {
0062 GlobalVertex::VertexIter it = iter->second->find_vertexes(type);
0063 if(it != iter->second->end_vertexes())
0064 {
0065 vertices.push_back(iter->second);
0066 }
0067 ++iter;
0068 }
0069 if(!vertices.empty()) { break; }
0070 }
0071
0072 return vertices;
0073 }
0074
0075 GlobalVertex* GlobalVertexMapv1::insert(GlobalVertex* vertex)
0076 {
0077 unsigned int index = vertex->get_id();
0078 _map[index] = vertex;
0079 return _map[index];
0080 }
0081
0082 void GlobalVertexMapv1::CopyTo(GlobalVertexMap* to_global)
0083 {
0084 for (auto const& it : _map)
0085 {
0086 GlobalVertex* glvtx = dynamic_cast<GlobalVertex*>(it.second->CloneMe());
0087 glvtx->clear_vtxs();
0088 glvtx->set_id(to_global->size());
0089 for (GlobalVertex::ConstVertexIter iter = it.second->begin_vertexes(); iter != it.second->end_vertexes(); ++iter)
0090 {
0091 for (const auto& vertex : iter->second)
0092 {
0093 glvtx->clone_insert_vtx(iter->first, vertex);
0094 to_global->insert(glvtx);
0095 }
0096 }
0097 }
0098 }