00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef ACE_OS_NS_STDLIB_H
00018 # define ACE_OS_NS_STDLIB_H
00019
00020 # include "ace/pre.h"
00021
00022 # include "ace/config-all.h"
00023
00024 # if !defined (ACE_LACKS_PRAGMA_ONCE)
00025 # pragma once
00026 # endif
00027
00028 #include "ace/os_include/os_stdlib.h"
00029 #include "ace/ACE_export.h"
00030
00031 #include "ace/Basic_Types.h"
00032
00033 #if defined (ACE_EXPORT_MACRO)
00034 # undef ACE_EXPORT_MACRO
00035 #endif
00036 #define ACE_EXPORT_MACRO ACE_Export
00037
00038
00039
00040
00041 #if defined (ACE_WIN32) && defined (_MSC_VER)
00042 extern "C" {
00043 typedef int (__cdecl *ACE_COMPARE_FUNC)(const void *, const void *);
00044 }
00045 #else
00046 extern "C" {
00047 typedef int (*ACE_COMPARE_FUNC)(const void *, const void *);
00048 }
00049 #endif
00050
00051
00052 #if defined (atop)
00053 # undef atop
00054 #endif
00055
00056
00057
00058
00059
00060
00061
00062
00063 #if !defined (ACE_LACKS_STRTOLL) && !defined (ACE_STRTOLL_EQUIVALENT)
00064 inline ACE_INT64 ace_strtoll_helper (const char *s, char **ptr, int base)
00065 {
00066 # if defined (strtoll)
00067 return strtoll (s, ptr, base);
00068 # undef strtoll
00069 # else
00070 return ACE_STD_NAMESPACE::strtoll (s, ptr, base);
00071 # endif
00072 }
00073 #endif
00074
00075 #if !defined (ACE_LACKS_STRTOULL) && !defined (ACE_STRTOULL_EQUIVALENT)
00076 inline ACE_INT64 ace_strtoull_helper (const char *s, char **ptr, int base)
00077 {
00078 # if defined (strtoull)
00079 return strtoull (s, ptr, base);
00080 # undef strtoull
00081 # else
00082 return ACE_STD_NAMESPACE::strtoull (s, ptr, base);
00083 # endif
00084 }
00085 #endif
00086
00087 ACE_BEGIN_VERSIONED_NAMESPACE_DECL
00088
00089 namespace ACE_OS {
00090
00091
00092
00093
00094
00095
00096
00097 ACE_NAMESPACE_INLINE_FUNCTION
00098 void _exit (int status = 0);
00099
00100 ACE_NAMESPACE_INLINE_FUNCTION
00101 void abort (void);
00102
00103
00104
00105
00106
00107 ACE_NAMESPACE_INLINE_FUNCTION
00108 int atexit (ACE_EXIT_HOOK func, const char* name = 0);
00109
00110
00111
00112
00113 ACE_NAMESPACE_INLINE_FUNCTION
00114 int atoi (const char *s);
00115
00116 # if defined (ACE_HAS_WCHAR)
00117
00118
00119
00120 ACE_NAMESPACE_INLINE_FUNCTION
00121 int atoi (const wchar_t *s);
00122 # endif
00123
00124
00125
00126
00127 ACE_NAMESPACE_INLINE_FUNCTION
00128 long atol (const char *s);
00129
00130
00131
00132
00133 # if defined (ACE_HAS_WCHAR)
00134 ACE_NAMESPACE_INLINE_FUNCTION
00135 long atol (const wchar_t *s);
00136 # endif
00137
00138
00139
00140
00141 ACE_NAMESPACE_INLINE_FUNCTION
00142 double atof (const char *s);
00143
00144
00145
00146
00147 # if defined (ACE_HAS_WCHAR)
00148 ACE_NAMESPACE_INLINE_FUNCTION
00149 double atof (const wchar_t *s);
00150 # endif
00151
00152
00153
00154
00155
00156 ACE_NAMESPACE_INLINE_FUNCTION
00157 void *atop (const char *s);
00158
00159 # if defined (ACE_HAS_WCHAR)
00160
00161
00162
00163 ACE_NAMESPACE_INLINE_FUNCTION
00164 void *atop (const wchar_t *s);
00165 # endif
00166
00167 ACE_NAMESPACE_INLINE_FUNCTION
00168 void *bsearch (const void *key,
00169 const void *base,
00170 size_t nel,
00171 size_t size,
00172 ACE_COMPARE_FUNC);
00173
00174 extern ACE_Export
00175 void *calloc (size_t elements, size_t sizeof_elements);
00176
00177 extern ACE_Export
00178 void exit (int status = 0);
00179
00180 extern ACE_Export
00181 void free (void *);
00182
00183 ACE_NAMESPACE_INLINE_FUNCTION
00184 char *getenv (const char *symbol);
00185
00186 # if defined (ACE_HAS_WCHAR) && defined (ACE_WIN32)
00187 ACE_NAMESPACE_INLINE_FUNCTION
00188 wchar_t *getenv (const wchar_t *symbol);
00189 # endif
00190
00191
00192 extern ACE_Export
00193 ACE_TCHAR *getenvstrings (void);
00194
00195
00196
00197 ACE_NAMESPACE_INLINE_FUNCTION
00198 char *itoa (int value, char *string, int radix);
00199
00200 #if defined (ACE_HAS_WCHAR)
00201
00202 ACE_NAMESPACE_INLINE_FUNCTION
00203 wchar_t *itoa (int value, wchar_t *string, int radix);
00204 #endif
00205
00206 #if !defined (ACE_HAS_ITOA)
00207
00208 extern ACE_Export
00209 char *itoa_emulation (int value, char *string, int radix);
00210 #endif
00211
00212 #if defined (ACE_HAS_WCHAR) && defined (ACE_LACKS_ITOW)
00213
00214 extern ACE_Export
00215 wchar_t *itow_emulation (int value, wchar_t *string, int radix);
00216 #endif
00217
00218 extern ACE_Export
00219 void *malloc (size_t);
00220
00221 ACE_NAMESPACE_INLINE_FUNCTION
00222 ACE_HANDLE mkstemp (char *s);
00223
00224 # if defined (ACE_HAS_WCHAR)
00225 ACE_NAMESPACE_INLINE_FUNCTION
00226 ACE_HANDLE mkstemp (wchar_t *s);
00227 # endif
00228
00229 #if defined (ACE_LACKS_MKSTEMP)
00230 extern ACE_Export
00231 ACE_HANDLE mkstemp_emulation (ACE_TCHAR * s);
00232 #endif
00233
00234 #if !defined (ACE_LACKS_MKTEMP)
00235 ACE_NAMESPACE_INLINE_FUNCTION
00236 char *mktemp (char *s);
00237
00238 # if defined (ACE_HAS_WCHAR)
00239 ACE_NAMESPACE_INLINE_FUNCTION
00240 wchar_t *mktemp (wchar_t *s);
00241 # endif
00242 #else
00243 extern ACE_Export
00244 ACE_TCHAR *mktemp (ACE_TCHAR *s);
00245 #endif
00246
00247 ACE_NAMESPACE_INLINE_FUNCTION
00248 int putenv (const char *string);
00249
00250 #if defined (ACE_HAS_WCHAR) && defined (ACE_WIN32)
00251
00252
00253
00254
00255 ACE_NAMESPACE_INLINE_FUNCTION
00256 int putenv (const wchar_t *string);
00257 #endif
00258
00259 ACE_NAMESPACE_INLINE_FUNCTION
00260 void qsort (void *base,
00261 size_t nel,
00262 size_t width,
00263 ACE_COMPARE_FUNC);
00264
00265 ACE_NAMESPACE_INLINE_FUNCTION
00266 int setenv(const char *envname, const char *envval, int overwrite);
00267
00268 ACE_NAMESPACE_INLINE_FUNCTION
00269 int unsetenv(const char *name);
00270
00271 ACE_NAMESPACE_INLINE_FUNCTION
00272 int rand (void);
00273
00274 ACE_NAMESPACE_INLINE_FUNCTION
00275 int rand_r (ACE_RANDR_TYPE &seed);
00276
00277 extern ACE_Export
00278 void *realloc (void *, size_t);
00279
00280 # if !defined (ACE_LACKS_REALPATH)
00281 ACE_NAMESPACE_INLINE_FUNCTION
00282 # else
00283 extern ACE_Export
00284 # endif
00285 char *realpath (const char *file_name, char *resolved_name);
00286
00287 # if defined (ACE_HAS_WCHAR)
00288 ACE_NAMESPACE_INLINE_FUNCTION
00289 wchar_t *realpath (const wchar_t *file_name, wchar_t *resolved_name);
00290 # endif
00291
00292
00293
00294 extern ACE_Export ACE_EXIT_HOOK exit_hook_;
00295
00296
00297 ACE_NAMESPACE_INLINE_FUNCTION
00298 ACE_EXIT_HOOK set_exit_hook (ACE_EXIT_HOOK hook);
00299
00300 ACE_NAMESPACE_INLINE_FUNCTION
00301 void srand (u_int seed);
00302
00303
00304 extern ACE_Export
00305 ACE_TCHAR *strenvdup (const ACE_TCHAR *str);
00306
00307 #if !defined (ACE_LACKS_STRTOD)
00308
00309 ACE_NAMESPACE_INLINE_FUNCTION
00310 double strtod (const char *s, char **endptr);
00311 #endif
00312
00313 #if defined (ACE_HAS_WCHAR) && !defined (ACE_LACKS_WCSTOD)
00314
00315 ACE_NAMESPACE_INLINE_FUNCTION
00316 double strtod (const wchar_t *s, wchar_t **endptr);
00317 #endif
00318
00319
00320 ACE_NAMESPACE_INLINE_FUNCTION
00321 long strtol (const char *s, char **ptr, int base);
00322
00323 #if defined (ACE_LACKS_STRTOL)
00324 extern ACE_Export
00325 long strtol_emulation (const char *nptr, char **endptr, int base);
00326 #endif
00327
00328 #if defined (ACE_HAS_WCHAR)
00329
00330 ACE_NAMESPACE_INLINE_FUNCTION
00331 long strtol (const wchar_t *s, wchar_t **ptr, int base);
00332
00333 #if defined (ACE_LACKS_WCSTOL)
00334 extern ACE_Export
00335 long wcstol_emulation (const wchar_t *nptr, wchar_t **endptr, int base);
00336 #endif
00337
00338 #endif
00339
00340
00341 ACE_NAMESPACE_INLINE_FUNCTION
00342 unsigned long strtoul (const char *s, char **ptr, int base);
00343
00344 #if defined (ACE_LACKS_STRTOUL)
00345 extern ACE_Export
00346 unsigned long strtoul_emulation (const char *nptr,
00347 char **endptr,
00348 int base);
00349 #endif
00350
00351 #if defined (ACE_HAS_WCHAR)
00352
00353 ACE_NAMESPACE_INLINE_FUNCTION
00354 unsigned long strtoul (const wchar_t *s, wchar_t **ptr, int base);
00355
00356 #if defined (ACE_LACKS_WCSTOUL)
00357 extern ACE_Export
00358 unsigned long wcstoul_emulation (const wchar_t *nptr,
00359 wchar_t **endptr,
00360 int base);
00361 #endif
00362
00363 #endif
00364
00365
00366 ACE_NAMESPACE_INLINE_FUNCTION
00367 ACE_INT64 strtoll (const char *s, char **ptr, int base);
00368
00369 #if defined (ACE_LACKS_STRTOLL)
00370 extern ACE_Export
00371 ACE_INT64 strtoll_emulation (const char *nptr,
00372 char **endptr,
00373 int base);
00374 #endif
00375
00376 #if defined (ACE_HAS_WCHAR)
00377
00378 ACE_NAMESPACE_INLINE_FUNCTION
00379 ACE_INT64 strtoll (const wchar_t *s, wchar_t **ptr, int base);
00380
00381 #if defined (ACE_LACKS_WCSTOLL)
00382 extern ACE_Export
00383 ACE_INT64 wcstoll_emulation (const wchar_t *nptr,
00384 wchar_t **endptr,
00385 int base);
00386 #endif
00387
00388 #endif
00389
00390
00391 ACE_NAMESPACE_INLINE_FUNCTION
00392 ACE_UINT64 strtoull (const char *s, char **ptr, int base);
00393
00394 #if defined (ACE_LACKS_STRTOULL)
00395 extern ACE_Export
00396 ACE_UINT64 strtoull_emulation (const char *nptr,
00397 char **endptr,
00398 int base);
00399 #endif
00400
00401 #if defined (ACE_HAS_WCHAR)
00402
00403 ACE_NAMESPACE_INLINE_FUNCTION
00404 ACE_UINT64 strtoull (const wchar_t *s, wchar_t **ptr, int base);
00405
00406 #if defined (ACE_LACKS_WCSTOULL)
00407 extern ACE_Export
00408 ACE_UINT64 wcstoull_emulation (const wchar_t *nptr,
00409 wchar_t **endptr,
00410 int base);
00411 #endif
00412
00413 #endif
00414
00415 ACE_NAMESPACE_INLINE_FUNCTION
00416 int system (const ACE_TCHAR *s);
00417
00418
00419
00420
00421 ACE_NAMESPACE_INLINE_FUNCTION
00422 const char *getprogname ();
00423
00424 #if !defined (ACE_HAS_GETPROGNAME)
00425 extern ACE_Export
00426 const char *getprogname_emulation ();
00427 #endif
00428
00429
00430
00431
00432 ACE_NAMESPACE_INLINE_FUNCTION
00433 void setprogname (const char* name);
00434
00435 #if !defined (ACE_HAS_SETPROGNAME)
00436 extern ACE_Export
00437 void setprogname_emulation (const char* name);
00438 #endif
00439
00440 }
00441
00442 ACE_END_VERSIONED_NAMESPACE_DECL
00443
00444 # if defined (ACE_HAS_INLINED_OSCALLS)
00445 # if defined (ACE_INLINE)
00446 # undef ACE_INLINE
00447 # endif
00448 # define ACE_INLINE inline
00449 # include "ace/OS_NS_stdlib.inl"
00450 # endif
00451
00452 # include "ace/post.h"
00453 #endif