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
00038 #ifndef NVWA_CONT_PTR_UTILS_H
00039 #define NVWA_CONT_PTR_UTILS_H
00040
00041 #include "_nvwa.h"
00042
00043 NVWA_NAMESPACE_BEGIN
00044
00057 struct dereference
00058 {
00059 template <typename _Tp>
00060 const _Tp& operator()(const _Tp* ptr) const
00061 {
00062 return *ptr;
00063 }
00064 };
00065
00079 struct dereference_less
00080 {
00081 template <typename _Pointer>
00082 bool operator()(const _Pointer& ptr1, const _Pointer& ptr2) const
00083 {
00084 return *ptr1 < *ptr2;
00085 }
00086 };
00087
00098 struct delete_object
00099 {
00100 template <typename _Tp>
00101 void operator()(_Tp* ptr) const
00102 {
00103 delete ptr;
00104 }
00105 };
00106
00117 template <typename _OutputStrm, typename _StringType = const char*>
00118 struct output_object
00119 {
00120 output_object(_OutputStrm& outs, const _StringType& sep)
00121 : _M_outs(outs), _M_sep(sep)
00122 {}
00123
00124 template <typename _Pointer>
00125 void operator()(const _Pointer& ptr) const
00126 {
00127 _M_outs << *ptr << _M_sep;
00128 }
00129
00130 private:
00131 _OutputStrm& _M_outs;
00132 _StringType _M_sep;
00133 };
00134
00135 NVWA_NAMESPACE_END
00136
00137 #endif // NVWA_CONT_PTR_UTILS_H