00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef HxPointZList_h
00013 #define HxPointZList_h
00014
00015 #include "HxPointZ.h"
00016 #include <list>
00017
00018
00022 class HxPointZList : public std::list<HxPointZ>
00023 {
00024 public:
00026
00028 HxPointZList& operator<<(const HxPointZ&);
00029
00031 void eraseAll();
00032 };
00033
00035 typedef HxPointZList::iterator HxPointZListIter;
00037 typedef HxPointZList::const_iterator HxPointZListConstIter;
00039
00040 class HxPointZListBackInserter {
00041 public:
00042 typedef HxPointZList container_type;
00043 typedef HxPointZList::value_type value_type;
00044
00045 explicit HxPointZListBackInserter(container_type& x);
00046 HxPointZListBackInserter(
00047 const HxPointZListBackInserter& rhs);
00048
00049 HxPointZListBackInserter& operator=(const value_type& val);
00050 HxPointZListBackInserter& operator*();
00051 HxPointZListBackInserter& operator++();
00052 HxPointZListBackInserter operator++(int);
00053
00054 protected:
00055 container_type& container;
00056 };
00057
00058 HxPointZListBackInserter::HxPointZListBackInserter(container_type& x)
00059 : container(x)
00060 {
00061 }
00062
00063 HxPointZListBackInserter::HxPointZListBackInserter(
00064 const HxPointZListBackInserter& rhs)
00065 : container(rhs.container)
00066 {
00067 }
00068
00069 HxPointZListBackInserter&
00070 HxPointZListBackInserter::operator=(const value_type& val)
00071 {
00072 container.push_back(val);
00073 return this;
00074 }
00075
00076 HxPointZListBackInserter&
00077 HxPointZListBackInserter::operator*()
00078 {
00079 return this;
00080 }
00081
00082 HxPointZListBackInserter&
00083 HxPointZListBackInserter::operator++()
00084 {
00085 return this;
00086 }
00087
00088 HxPointZListBackInserter
00089 HxPointZListBackInserter::operator++(int)
00090 {
00091 return this;
00092 }
00093
00094
00095 inline HxPointZList&
00096 HxPointZList:: operator<<(const HxPointZ& s)
00097 {
00098 push_back(s);
00099 return *this;
00100 }
00101
00102 inline void
00103 HxPointZList::eraseAll()
00104 {
00105 erase(begin(), end());
00106 }
00107
00108 #endif