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 }