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
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00048 #ifndef STLSOFT_INCL_STLSOFT_FUNCTIONAL_HPP_INDIRECT_FUNCTION_POINTER_ADAPTORS
00049 #define STLSOFT_INCL_STLSOFT_FUNCTIONAL_HPP_INDIRECT_FUNCTION_POINTER_ADAPTORS
00050
00051 #ifndef STLSOFT_DOCUMENTATION_SKIP_SECTION
00052 # define STLSOFT_VER_STLSOFT_FUNCTIONAL_HPP_INDIRECT_FUNCTION_POINTER_ADAPTORS_MAJOR 2
00053 # define STLSOFT_VER_STLSOFT_FUNCTIONAL_HPP_INDIRECT_FUNCTION_POINTER_ADAPTORS_MINOR 1
00054 # define STLSOFT_VER_STLSOFT_FUNCTIONAL_HPP_INDIRECT_FUNCTION_POINTER_ADAPTORS_REVISION 2
00055 # define STLSOFT_VER_STLSOFT_FUNCTIONAL_HPP_INDIRECT_FUNCTION_POINTER_ADAPTORS_EDIT 10
00056 #endif
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066 #ifndef STLSOFT_INCL_STLSOFT_H_STLSOFT
00067 # include <stlsoft/stlsoft.h>
00068 #endif
00069
00070 #ifndef STLSOFT_INCL_FUNCTIONAL
00071 # define STLSOFT_INCL_FUNCTIONAL
00072 # include <functional>
00073 #endif
00074
00075
00076
00077
00078
00079 #ifndef _STLSOFT_NO_NAMESPACE
00080 namespace stlsoft
00081 {
00082 #endif
00083
00084
00085
00086
00087
00088 #ifdef __SYNSOFT_DBS_COMPILER_SUPPORTS_PRAGMA_MESSAGE
00089 # pragma message(_sscomp_fileline_message("Refactor the names of the function class templates"))
00090 #endif
00091
00092
00093 #ifndef STLSOFT_CF_COMPILER_SUPPORTS_RETURN_VOID
00094
00095 # ifdef STLSOFT_CF_CDECL_SUPPORTED
00096 template <typename T>
00097 struct ref2ptr_1_CDECL_void_t
00098 : stlsoft_ns_qual_std(unary_function)<T*, void>
00099 {
00100 public:
00101 ref2ptr_1_CDECL_void_t(void (STLSOFT_CDECL *p)(T*))
00102 : m_p(p)
00103 {}
00104
00105 public:
00106 void operator ()(T &t) const
00107 {
00108 (*m_p)(&t);
00109 }
00110
00111 private:
00112 void (STLSOFT_CDECL *m_p)(T*);
00113 };
00114 # endif
00115 # ifdef STLSOFT_CF_FASTCALL_SUPPORTED
00116 template <typename T>
00117 struct ref2ptr_1_FASTCALL_void_t
00118 : stlsoft_ns_qual_std(unary_function)<T*, void>
00119 {
00120 public:
00121 ref2ptr_1_FASTCALL_void_t(void (STLSOFT_FASTCALL *p)(T*))
00122 : m_p(p)
00123 {}
00124
00125 public:
00126 void operator ()(T &t) const
00127 {
00128 (*m_p)(&t);
00129 }
00130
00131 private:
00132 void (STLSOFT_FASTCALL *m_p)(T*);
00133 };
00134 # endif
00135 # ifdef STLSOFT_CF_STDCALL_SUPPORTED
00136 template <typename T>
00137 struct ref2ptr_1_STDCALL_void_t
00138 : stlsoft_ns_qual_std(unary_function)<T*, void>
00139 {
00140 public:
00141 ref2ptr_1_STDCALL_void_t(void (STLSOFT_STDCALL *p)(T*))
00142 : m_p(p)
00143 {}
00144
00145 public:
00146 void operator ()(T &t) const
00147 {
00148 (*m_p)(&t);
00149 }
00150
00151 private:
00152 void (STLSOFT_STDCALL *m_p)(T*);
00153 };
00154 # endif
00155 #endif
00156
00157
00158 # ifdef STLSOFT_CF_CDECL_SUPPORTED
00159 template <typename T, typename R>
00160 struct ref2ptr_1_CDECL_t
00161 : stlsoft_ns_qual_std(unary_function)<T*, R>
00162 {
00163 public:
00164 ref2ptr_1_CDECL_t(R (STLSOFT_CDECL *p)(T*))
00165 : m_p(p)
00166 {}
00167
00168 public:
00169 R operator ()(T &t) const
00170 {
00171 return (*m_p)(&t);
00172 }
00173
00174 private:
00175 R (STLSOFT_CDECL *m_p)(T*);
00176 };
00177 # endif
00178 # ifdef STLSOFT_CF_FASTCALL_SUPPORTED
00179 template <typename T, typename R>
00180 struct ref2ptr_1_FASTCALL_t
00181 : stlsoft_ns_qual_std(unary_function)<T*, R>
00182 {
00183 public:
00184 ref2ptr_1_FASTCALL_t(R (STLSOFT_FASTCALL *p)(T*))
00185 : m_p(p)
00186 {}
00187
00188 public:
00189 R operator ()(T &t) const
00190 {
00191 return (*m_p)(&t);
00192 }
00193
00194 private:
00195 R (STLSOFT_FASTCALL *m_p)(T*);
00196 };
00197 # endif
00198 # ifdef STLSOFT_CF_STDCALL_SUPPORTED
00199 template <typename T, typename R>
00200 struct ref2ptr_1_STDCALL_t
00201 : stlsoft_ns_qual_std(unary_function)<T*, R>
00202 {
00203 public:
00204 ref2ptr_1_STDCALL_t(R (STLSOFT_STDCALL *p)(T*))
00205 : m_p(p)
00206 {}
00207
00208 public:
00209 R operator ()(T &t) const
00210 {
00211 return (*m_p)(&t);
00212 }
00213
00214 private:
00215 R (STLSOFT_STDCALL *m_p)(T*);
00216 };
00217 # endif
00218
00219
00220
00221
00222
00223 # ifdef STLSOFT_CF_CDECL_SUPPORTED
00224 template <typename T, typename R>
00225 inline ref2ptr_1_CDECL_t<T, R> ptr_ifun(R (STLSOFT_CDECL *p)(T*))
00226 {
00227 return ref2ptr_1_CDECL_t<T, R>(p);
00228 }
00229 # endif
00230 # ifdef STLSOFT_CF_FASTCALL_SUPPORTED
00231 template <typename T, typename R>
00232 inline ref2ptr_1_FASTCALL_t<T, R> ptr_ifun(R (STLSOFT_FASTCALL *p)(T*))
00233 {
00234 return ref2ptr_1_FASTCALL_t<T, R>(p);
00235 }
00236 # endif
00237 # ifdef STLSOFT_CF_STDCALL_SUPPORTED
00238 template <typename T, typename R>
00239 inline ref2ptr_1_STDCALL_t<T, R> ptr_ifun(R (STLSOFT_STDCALL *p)(T*))
00240 {
00241 return ref2ptr_1_STDCALL_t<T, R>(p);
00242 }
00243 # endif
00244
00245 #ifdef STLSOFT_CF_COMPILER_SUPPORTS_RETURN_VOID
00246 # ifdef STLSOFT_CF_CDECL_SUPPORTED
00247 template <typename T>
00248 inline ref2ptr_1_CDECL_t<T, void> ptr_ifun_void(void (STLSOFT_CDECL *p)(T*))
00249 {
00250 return ref2ptr_1_CDECL_t<T, void>(p);
00251 }
00252 # endif
00253 # ifdef STLSOFT_CF_FASTCALL_SUPPORTED
00254 template <typename T>
00255 inline ref2ptr_1_FASTCALL_t<T, void> ptr_ifun_void(void (STLSOFT_FASTCALL *p)(T*))
00256 {
00257 return ref2ptr_1_FASTCALL_t<T, void>(p);
00258 }
00259 # endif
00260 # ifdef STLSOFT_CF_STDCALL_SUPPORTED
00261 template <typename T>
00262 inline ref2ptr_1_STDCALL_t<T, void> ptr_ifun_void(void (STLSOFT_STDCALL *p)(T*))
00263 {
00264 return ref2ptr_1_STDCALL_t<T, void>(p);
00265 }
00266 # endif
00267 #else
00268 # ifdef STLSOFT_CF_CDECL_SUPPORTED
00269 template <typename T>
00270 inline ref2ptr_1_CDECL_void_t<T> ptr_ifun_void(void (STLSOFT_CDECL *p)(T*))
00271 {
00272 return ref2ptr_1_CDECL_void_t<T>(p);
00273 }
00274 # endif
00275 # ifdef STLSOFT_CF_FASTCALL_SUPPORTED
00276 template <typename T>
00277 inline ref2ptr_1_FASTCALL_void_t<T> ptr_ifun_void(void (STLSOFT_FASTCALL *p)(T*))
00278 {
00279 return ref2ptr_1_FASTCALL_void_t<T>(p);
00280 }
00281 # endif
00282 # ifdef STLSOFT_CF_STDCALL_SUPPORTED
00283 template <typename T>
00284 inline ref2ptr_1_STDCALL_void_t<T> ptr_ifun_void(void (STLSOFT_STDCALL *p)(T*))
00285 {
00286 return ref2ptr_1_STDCALL_void_t<T>(p);
00287 }
00288 # endif
00289 #endif
00290
00291 # ifdef STLSOFT_CF_CDECL_SUPPORTED
00292 template <typename T, typename R>
00293 inline ref2ptr_1_CDECL_t<T, R> ref2ptr(R (STLSOFT_CDECL *p)(T*))
00294 {
00295 return ref2ptr_1_CDECL_t<T, R>(p);
00296 }
00297 # endif
00298 # ifdef STLSOFT_CF_FASTCALL_SUPPORTED
00299 template <typename T, typename R>
00300 inline ref2ptr_1_FASTCALL_t<T, R> ref2ptr(R (STLSOFT_FASTCALL *p)(T*))
00301 {
00302 return ref2ptr_1_FASTCALL_t<T, R>(p);
00303 }
00304 # endif
00305 # ifdef STLSOFT_CF_STDCALL_SUPPORTED
00306 template <typename T, typename R>
00307 inline ref2ptr_1_STDCALL_t<T, R> ref2ptr(R (STLSOFT_STDCALL *p)(T*))
00308 {
00309 return ref2ptr_1_STDCALL_t<T, R>(p);
00310 }
00311 # endif
00312
00313 #ifdef STLSOFT_CF_COMPILER_SUPPORTS_RETURN_VOID
00314 # ifdef STLSOFT_CF_CDECL_SUPPORTED
00315 template <typename T>
00316 inline ref2ptr_1_CDECL_t<T, void> ref2ptr_void(void (STLSOFT_CDECL *p)(T*))
00317 {
00318 return ref2ptr_1_CDECL_t<T, void>(p);
00319 }
00320 # endif
00321 # ifdef STLSOFT_CF_FASTCALL_SUPPORTED
00322 template <typename T>
00323 inline ref2ptr_1_FASTCALL_t<T, void> ref2ptr_void(void (STLSOFT_FASTCALL *p)(T*))
00324 {
00325 return ref2ptr_1_FASTCALL_t<T, void>(p);
00326 }
00327 # endif
00328 # ifdef STLSOFT_CF_STDCALL_SUPPORTED
00329 template <typename T>
00330 inline ref2ptr_1_STDCALL_t<T, void> ref2ptr_void(void (STLSOFT_STDCALL *p)(T*))
00331 {
00332 return ref2ptr_1_STDCALL_t<T, void>(p);
00333 }
00334 # endif
00335 #else
00336 # ifdef STLSOFT_CF_CDECL_SUPPORTED
00337 template <typename T>
00338 inline ref2ptr_1_CDECL_void_t<T> ref2ptr_void(void (STLSOFT_CDECL *p)(T*))
00339 {
00340 return ref2ptr_1_CDECL_void_t<T>(p);
00341 }
00342 # endif
00343 # ifdef STLSOFT_CF_FASTCALL_SUPPORTED
00344 template <typename T>
00345 inline ref2ptr_1_FASTCALL_void_t<T> ref2ptr_void(void (STLSOFT_FASTCALL *p)(T*))
00346 {
00347 return ref2ptr_1_FASTCALL_void_t<T>(p);
00348 }
00349 # endif
00350 # ifdef STLSOFT_CF_STDCALL_SUPPORTED
00351 template <typename T>
00352 inline ref2ptr_1_STDCALL_void_t<T> ref2ptr_void(void (STLSOFT_STDCALL *p)(T*))
00353 {
00354 return ref2ptr_1_STDCALL_void_t<T>(p);
00355 }
00356 # endif
00357 #endif
00358
00359
00360
00361 #ifndef _STLSOFT_NO_NAMESPACE
00362 }
00363 #endif
00364
00365
00366
00367 #endif
00368
00369