diff options
-rw-r--r-- | acconfig.h | 12 | ||||
-rw-r--r-- | configure.in | 64 |
2 files changed, 76 insertions, 0 deletions
diff --git a/acconfig.h b/acconfig.h index 1b80a300928..a5c92ba7a51 100644 --- a/acconfig.h +++ b/acconfig.h @@ -815,6 +815,9 @@ /* Platform/compiler lacks strdup() (e.g., VxWorks, Chorus, WinCE) */ #undef ACE_HAS_STRDUP_EMULATION +/* Compile ACE_OS::strptime() wrapper into ACE. */ +#undef ACE_HAS_STRPTIME + /* Platform supports STREAMS */ #undef ACE_HAS_STREAMS @@ -1128,6 +1131,9 @@ /* Platform lacks named POSIX semaphores (e.g., Chorus) */ #undef ACE_LACKS_NAMED_POSIX_SEM +/* Platform lacks native strptime() implementation. */ +#undef ACE_LACKS_NATIVE_STRPTIME + /* Platform/compiler lacks {get,set}rlimit() function (e.g., VxWorks, Chorus, and SCO UNIX) */ #undef ACE_LACKS_RLIMIT @@ -1143,6 +1149,12 @@ memory and message queues. */ #undef ACE_LACKS_SOME_POSIX_PROTOTYPES +/* Compiler doesn't support placement operator new(size_t, void *). */ +#undef ACE_LACKS_PLACEMENT_OPERATOR_NEW + +/* Compiler doesn't support placement operator delete(void *, void *). */ +#undef ACE_LACKS_PLACEMENT_OPERATOR_DELETE + /* Compiler complains about use of obsolete "#pragma once" */ #undef ACE_LACKS_PRAGMA_ONCE diff --git a/configure.in b/configure.in index 6eecb9ac4de..e8b0080e57b 100644 --- a/configure.in +++ b/configure.in @@ -2912,6 +2912,66 @@ ACE_CACHE_CHECK(for C++ typename keyword, ]) ], AC_DEFINE(ACE_HAS_TYPENAME_KEYWORD),) +dnl Check if platform supports placement new operator +ACE_CACHE_CHECK(for C++ placement new operator, + ace_cv_feature_placement_new,[ + AC_TRY_COMPILE([ +#if defined (ACE_HAS_NEW_NO_H) +# include <new> +#elif defined (ACE_HAS_NEW_H) +# include <new.h> +#endif + +class foo +{ +public: + void *operator new (size_t, void *p) { return p; } +}; + ], + [ +int *x = 0; +foo *f = new (x) foo; + ], + [ + ace_cv_feature_placement_new=yes + ], + [ + ace_cv_feature_placement_new=no + ]) + ], , AC_DEFINE(ACE_LACKS_PLACEMENT_OPERATOR_NEW)) + +dnl Check if platform supports placement delete operator +ACE_CACHE_CHECK(for C++ placement delete operator, + ace_cv_feature_placement_delete,[ + AC_TRY_COMPILE([ +#if defined (ACE_HAS_NEW_NO_H) +# include <new> +#elif defined (ACE_HAS_NEW_H) +# include <new.h> +#endif + +class foo +{ +public: + void *operator new (size_t, void *p) { return p; } + void operator delete (void *p, void *) {} +}; + ], + [ +int *x = 0; +foo *f = new (x) foo; + +// delete f; // Don't call delete for this test! + ], + [ + ace_cv_feature_placement_delete=yes + ], + [ + ace_cv_feature_placement_delete=no + ]) + ], , AC_DEFINE(ACE_LACKS_PLACEMENT_OPERATOR_DELETE)) + + dnl Check if const char * can be rvalue in conditional operator ACE_CACHE_CHECK(if const char * can be rvalue in conditional operator, ace_cv_feature_conditional_str_cast, @@ -3686,6 +3746,10 @@ AC_CHECK_FUNC(strrchr, dnl , AC_DEFINE(ACE_LACKS_STRRCHR)) +AC_CHECK_FUNC(strptime, dnl + AC_DEFINE(ACE_HAS_STRPTIME), + AC_DEFINE(ACE_LACKS_NATIVE_STRPTIME)) + AC_CHECK_FUNC(memchr, dnl AC_DEFINE(ACE_HAS_MEMCHR),) |