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
00026
00027
00028
00029
00030
00039 #ifndef POSE_GRAPH_IDS_H
00040 #define POSE_GRAPH_IDS_H
00041
00042 #include <iostream>
00043
00044 namespace pose_graph
00045 {
00046
00047
00048 class Id
00049 {
00050 public:
00051
00052 explicit Id (unsigned long int id) : id_(id) {}
00053
00055 Id () : id_(-1) {}
00056
00057 friend std::ostream& operator<< (std::ostream& str, const Id& n)
00058 {
00059 str << n.id_;
00060 return str;
00061 }
00062
00063 bool operator== (const Id& other) const
00064 {
00065 return other.id_ == id_;
00066 }
00067
00068 bool operator!= (const Id& other) const
00069 {
00070 return other.id_ != id_;
00071 }
00072
00073 bool operator< (const Id& other) const
00074 {
00075 return id_ < other.id_;
00076 }
00077
00078 unsigned long int getId () const
00079 {
00080 return id_;
00081 }
00082
00083 void operator++ (int unused)
00084 {
00085 id_++;
00086 }
00087
00088 Id& operator= (const Id& other)
00089 {
00090 id_ = other.id_;
00091 return *this;
00092 }
00093
00094 private:
00095 unsigned long int id_;
00096
00097 };
00098
00099
00101 class NodeId : public Id
00102 {
00103 public:
00104
00105 explicit NodeId (unsigned long int id = -1) : Id(id) {}
00106 };
00107
00108
00110 class EdgeId : public Id
00111 {
00112 public:
00113
00114 explicit EdgeId (unsigned long int id = -1) : Id(id) {}
00115 };
00116
00117
00118 }
00119
00120 #endif // include guard