NodeMap.cpp
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
00026
00027
00028
00029
00030 #include "NodeMap.hpp"
00031 #include "Exception.hpp"
00032
00033
00035
00037
00038
00039 NodeMap::NodeMap(unsigned size)
00040 {
00041
00042
00043
00044 mMap.resize(size);
00045 }
00046
00047 void NodeMap::Resize(unsigned size)
00048 {
00049 mMap.resize(size);
00050 }
00051
00052 void NodeMap::ResetToIdentity()
00053 {
00054 for (unsigned oldIndex=0; oldIndex<mMap.size(); oldIndex++)
00055 {
00056 mMap[oldIndex] = oldIndex;
00057 }
00058 }
00059
00060 void NodeMap::SetNewIndex(unsigned oldIndex, unsigned newIndex)
00061 {
00062 mMap[oldIndex] = newIndex;
00063 }
00064
00065 void NodeMap::SetDeleted(unsigned index)
00066 {
00067 mMap[index] = UINT_MAX;
00068 }
00069
00070 bool NodeMap::IsDeleted(unsigned index)
00071 {
00072 return (mMap[index] == UINT_MAX);
00073 }
00074
00075 unsigned NodeMap::GetNewIndex(unsigned oldIndex) const
00076 {
00077 if (mMap[oldIndex] == UINT_MAX)
00078 {
00079 EXCEPTION("Node has been deleted");
00080 }
00081 return (unsigned) mMap[oldIndex];
00082 }
00083
00084 bool NodeMap::IsIdentityMap()
00085 {
00086 for (unsigned i=0; i<mMap.size(); i++)
00087 {
00088 if (mMap[i] != i)
00089 {
00090 return false;
00091 }
00092 }
00093 return true;
00094 }
00095
00096 unsigned NodeMap::Size()
00097 {
00098 return mMap.size();
00099 }