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
00041
00051 #ifndef STLSOFT_INCL_STLSOFT_UTIL_STD_HPP_STDIO_OVERLOAD_DETECTORS
00052 #define STLSOFT_INCL_STLSOFT_UTIL_STD_HPP_STDIO_OVERLOAD_DETECTORS
00053
00054 #ifndef STLSOFT_DOCUMENTATION_SKIP_SECTION
00055 # define STLSOFT_VER_STLSOFT_UTIL_STD_HPP_STDIO_OVERLOAD_DETECTORS_MAJOR 1
00056 # define STLSOFT_VER_STLSOFT_UTIL_STD_HPP_STDIO_OVERLOAD_DETECTORS_MINOR 0
00057 # define STLSOFT_VER_STLSOFT_UTIL_STD_HPP_STDIO_OVERLOAD_DETECTORS_REVISION 4
00058 # define STLSOFT_VER_STLSOFT_UTIL_STD_HPP_STDIO_OVERLOAD_DETECTORS_EDIT 14
00059 #endif
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073 #ifndef STLSOFT_INCL_STLSOFT_H_STLSOFT
00074 # include <stlsoft/stlsoft.h>
00075 #endif
00076 #ifndef STLSOFT_INCL_STLSOFT_META_HPP_N_TYPES
00077 # include <stlsoft/meta/n_types.hpp>
00078 #endif
00079
00080 #ifndef STLSOFT_INCL_H_STDARG
00081 # define STLSOFT_INCL_H_STDARG
00082 # include <stdarg.h>
00083 #endif
00084 #ifndef STLSOFT_INCL_H_STDIO
00085 # define STLSOFT_INCL_H_STDIO
00086 # include <stdio.h>
00087 #endif
00088 #ifndef STLSOFT_INCL_H_WCHAR
00089 # define STLSOFT_INCL_H_WCHAR
00090 # include <wchar.h>
00091 #endif
00092
00093
00094
00095
00096
00097 #ifndef _STLSOFT_NO_NAMESPACE
00098 namespace stlsoft
00099 {
00100 #endif
00101
00102
00103
00104
00105
00106
00107
00108
00109 #ifndef STLSOFT_DOCUMENTATION_SKIP_SECTION
00110
00111
00112 struct vswprintf_detector_base
00113 {
00114 protected:
00115 typedef int (*vswprintf_3_t)(wchar_t *, wchar_t const*, va_list);
00116 typedef int (*vswprintf_4_t)(wchar_t *, ss_size_t, wchar_t const*, va_list);
00117
00118
00119
00120 static one_t has_3_param_vswprintf(vswprintf_3_t);
00121 static two_t has_3_param_vswprintf(...);
00122
00123 static three_t has_4_param_vswprintf(vswprintf_4_t);
00124 static four_t has_4_param_vswprintf(...);
00125 };
00126
00127 #endif
00128
00132 struct vswprintf_detector
00133 : public vswprintf_detector_base
00134 {
00135 public:
00136 enum
00137 {
00139 has_3_param = (sizeof(one_t) == sizeof(vswprintf_detector_base::has_3_param_vswprintf(::vswprintf)))
00140 };
00141 enum
00142 {
00144 has_4_param = (sizeof(three_t) == sizeof(vswprintf_detector_base::has_4_param_vswprintf(::vswprintf)))
00145 };
00146 };
00147
00148 #ifndef STLSOFT_DOCUMENTATION_SKIP_SECTION
00149
00150 struct swprintf_detector_base
00151 {
00152 protected:
00153 typedef int (*swprintf_3_t)(wchar_t *, wchar_t const*, ...);
00154 typedef int (*swprintf_4_t)(wchar_t *, ss_size_t, wchar_t const*, ...);
00155
00156
00157
00158 static one_t has_3_param_swprintf(swprintf_3_t);
00159 static two_t has_3_param_swprintf(...);
00160
00161 static three_t has_4_param_swprintf(swprintf_4_t);
00162 static four_t has_4_param_swprintf(...);
00163 };
00164
00165 #endif
00166
00170 struct swprintf_detector
00171 : public swprintf_detector_base
00172 {
00173 public:
00174 enum
00175 {
00177 has_3_param = (sizeof(one_t) == sizeof(swprintf_detector_base::has_3_param_swprintf(::swprintf)))
00178 };
00179 enum
00180 {
00182 has_4_param = (sizeof(three_t) == sizeof(swprintf_detector_base::has_4_param_swprintf(::swprintf)))
00183 };
00184 };
00185
00186
00187
00188 #ifndef _STLSOFT_NO_NAMESPACE
00189 }
00190 #endif
00191
00192
00193
00194 #endif
00195
00196