aboutsummaryrefslogtreecommitdiff
path: root/dep/acelite/ace/Global_Macros.h
diff options
context:
space:
mode:
Diffstat (limited to 'dep/acelite/ace/Global_Macros.h')
-rw-r--r--dep/acelite/ace/Global_Macros.h221
1 files changed, 60 insertions, 161 deletions
diff --git a/dep/acelite/ace/Global_Macros.h b/dep/acelite/ace/Global_Macros.h
index d1bf6420b05..bce0544e1a6 100644
--- a/dep/acelite/ace/Global_Macros.h
+++ b/dep/acelite/ace/Global_Macros.h
@@ -4,7 +4,7 @@
/**
* @file Global_Macros.h
*
- * $Id: Global_Macros.h 82442 2008-07-28 13:11:29Z johnnyw $
+ * $Id: Global_Macros.h 91685 2010-09-09 09:35:14Z johnnyw $
*
* @author Douglas C. Schmidt <schmidt@cs.wustl.edu>
* @author Jesper S. M|ller<stophph@diku.dk>
@@ -104,90 +104,92 @@ ACE_END_VERSIONED_NAMESPACE_DECL
# define ACE_UNIMPLEMENTED_FUNC(f) f;
# endif /* ACE_NEEDS_FUNC_DEFINITIONS */
-#if !defined (ACE_LACKS_DEPRECATED_MACROS)
- // Easy way to designate that a class is used as a pseudo-namespace.
- // Insures that g++ "friendship" anamolies are properly handled.
- # define ACE_CLASS_IS_NAMESPACE(CLASSNAME) \
- private: \
- CLASSNAME (void); \
- CLASSNAME (const CLASSNAME&); \
- friend class ace_dewarn_gplusplus
-#endif /* ACE_LACKS_DEPRECATED_MACROS */
-
-// ----------------------------------------------------------------
-
-//FUZZ: disable check_for_exception_sepc
-#if !defined (ACE_LACKS_DEPRECATED_MACROS)
- #if defined (ACE_HAS_NO_THROW_SPEC)
- # define ACE_THROW_SPEC(X)
- #else
- # if defined (ACE_HAS_EXCEPTIONS)
- # if defined (ACE_WIN32) && defined (_MSC_VER) && \
- (_MSC_VER >= 1400) && (_MSC_VER <= 1500)
- # define ACE_THROW_SPEC(X) throw(...)
- # else
- # define ACE_THROW_SPEC(X) throw X
- # endif /* ACE_WIN32 && VC8 */
- # else /* ! ACE_HAS_EXCEPTIONS */
- # define ACE_THROW_SPEC(X)
- # endif /* ! ACE_HAS_EXCEPTIONS */
- #endif /*ACE_HAS_NO_THROW_SPEC*/
-#endif /* ACE_LACKS_DEPRECATED_MACROS */
-//FUZZ: enable check_for_exception_sepc
-
// ----------------------------------------------------------------
-#if !defined (ACE_LACKS_DEPRECATED_MACROS)
- /**
- * This macro is deprecated
- */
- #define ACE_NESTED_CLASS(TYPE, NAME) TYPE::NAME
-#endif /* ACE_LACKS_DEPRECATED_MACROS */
-
-#if !defined (ACE_LACKS_DEPRECATED_MACROS)
- /**
- * @name CORBA namespace macros.
- *
- * CORBA namespace macros.
- *
- * @deprecated These macros were formerly used by TAO but are now
- * deprecated, and only remain to retain some backward
- * compatibility. They will be removed in a future ACE
- * release.
- */
- //@{
- #define ACE_CORBA_1(NAME) CORBA::NAME
- #define ACE_CORBA_2(TYPE, NAME) CORBA::TYPE::NAME
- #define ACE_CORBA_3(TYPE, NAME) CORBA::TYPE::NAME
- //@}
-#endif /* ACE_LACKS_DEPRECATED_MACROS */
-
-// ----------------------------------------------------------------
+// FUZZ: disable check_for_ACE_Guard
// Convenient macro for testing for deadlock, as well as for detecting
// when mutexes fail.
+/* @warning
+ * Use of ACE_GUARD() is rarely correct. ACE_GUARD() causes the current
+ * function to return if the lock is not acquired. Since merely returning
+ * (no value) almost certainly fails to handle the acquisition failure
+ * and almost certainly fails to communicate the failure to the caller
+ * for the caller to handle, ACE_GUARD() is almost always the wrong
+ * thing to do. The same goes for ACE_WRITE_GUARD() and ACE_READ_GUARD() .
+ * ACE_GUARD_REACTION() is better because it lets you specify error
+ * handling code.
+ */
+#if !defined (ACE_GUARD_ACTION)
#define ACE_GUARD_ACTION(MUTEX, OBJ, LOCK, ACTION, REACTION) \
ACE_Guard< MUTEX > OBJ (LOCK); \
if (OBJ.locked () != 0) { ACTION; } \
else { REACTION; }
+#endif /* !ACE_GUARD_ACTION */
+#if !defined (ACE_GUARD_REACTION)
#define ACE_GUARD_REACTION(MUTEX, OBJ, LOCK, REACTION) \
ACE_GUARD_ACTION(MUTEX, OBJ, LOCK, ;, REACTION)
+#endif /* !ACE_GUARD_REACTION */
+#if !defined (ACE_GUARD)
#define ACE_GUARD(MUTEX, OBJ, LOCK) \
ACE_GUARD_REACTION(MUTEX, OBJ, LOCK, return)
+#endif /* !ACE_GUARD */
+#if !defined (ACE_GUARD_RETURN)
#define ACE_GUARD_RETURN(MUTEX, OBJ, LOCK, RETURN) \
ACE_GUARD_REACTION(MUTEX, OBJ, LOCK, return RETURN)
+#endif /* !ACE_GUARD_RETURN */
+#if !defined (ACE_WRITE_GUARD)
# define ACE_WRITE_GUARD(MUTEX,OBJ,LOCK) \
ACE_Write_Guard< MUTEX > OBJ (LOCK); \
if (OBJ.locked () == 0) return;
+#endif /* !ACE_WRITE_GUARD */
+#if !defined (ACE_WRITE_GUARD_RETURN)
# define ACE_WRITE_GUARD_RETURN(MUTEX,OBJ,LOCK,RETURN) \
ACE_Write_Guard< MUTEX > OBJ (LOCK); \
if (OBJ.locked () == 0) return RETURN;
+#endif /* ACE_WRITE_GUARD_RETURN */
+#if !defined (ACE_READ_GUARD)
# define ACE_READ_GUARD(MUTEX,OBJ,LOCK) \
ACE_Read_Guard< MUTEX > OBJ (LOCK); \
if (OBJ.locked () == 0) return;
+#endif /* !ACE_READ_GUARD */
+#if !defined (ACE_READ_GUARD_RETURN)
# define ACE_READ_GUARD_RETURN(MUTEX,OBJ,LOCK,RETURN) \
ACE_Read_Guard< MUTEX > OBJ (LOCK); \
if (OBJ.locked () == 0) return RETURN;
+#endif /* !ACE_READ_GUARD_RETURN */
+// FUZZ: enable check_for_ACE_Guard
+
+// ----------------------------------------------------------------
+
+#if defined(ACE_UNEXPECTED_RETURNS)
+
+/* Using ACE_UNEXPECTED_RETURNS is ill-advised because, in many cases,
+ * it fails to inform callers of the error condition.
+ * It exists mainly to provide back-compatibility with old, dangerous,
+ * incorrect behavior.
+ * Code that previously used ACE_GUARD() or ACE_GUARD_RETURN() to return
+ * upon failure to acquire a lock can now use:
+ * ACE_GUARD_REACTION(..., ACE_UNEXPECTED(...))
+ * The behavior of this depends on whether or not ACE_UNEXPECTED_RETURNS
+ * is defined. If so, it just returns upon failure (as in the original),
+ * which is usually dangerous because it usually fails to handle the
+ * error. If not, it calls std::unexpected(), which does whatever the
+ * std::unexpected handler does (which is to abort, by default).
+ */
+# define ACE_UNEXPECTED(RETVAL) \
+ do { \
+ return RETVAL; \
+ } while (0)
+
+#else
+
+# define ACE_UNEXPECTED(RETVAL) \
+ do { \
+ std::unexpected(); \
+ } while (0)
+
+#endif
// ----------------------------------------------------------------
@@ -925,15 +927,6 @@ ACE_MAKE_SVC_CONFIG_FACTORY_NAME(ACE_VERSIONED_NAMESPACE_NAME,SERVICE_CLASS) (AC
# define ACE_SEH_FINALLY if (1)
#endif /* ACE_WIN32 */
-// These should probably be put into a seperate header.
-
-// The following is necessary since many C++ compilers don't support
-// typedef'd types inside of classes used as formal template
-// arguments... ;-(. Luckily, using the C++ preprocessor I can hide
-// most of this nastiness!
-
-# if defined (ACE_HAS_TEMPLATE_TYPEDEFS)
-
// Handle ACE_Message_Queue.
# define ACE_SYNCH_DECL class _ACE_SYNCH
# define ACE_SYNCH_USE _ACE_SYNCH
@@ -1004,10 +997,6 @@ ACE_MAKE_SVC_CONFIG_FACTORY_NAME(ACE_VERSIONED_NAMESPACE_NAME,SERVICE_CLASS) (AC
# define ACE_UPIPE_CONNECTOR ACE_UPIPE_Connector
# define ACE_UPIPE_STREAM ACE_UPIPE_Stream
-// Handle ACE_FILE_*
-# define ACE_FILE_CONNECTOR ACE_FILE_Connector
-# define ACE_FILE_STREAM ACE_FILE_IO
-
// Handle ACE_*_Memory_Pool.
# define ACE_MMAP_MEMORY_POOL ACE_MMAP_Memory_Pool
# define ACE_LITE_MMAP_MEMORY_POOL ACE_Lite_MMAP_Memory_Pool
@@ -1016,96 +1005,6 @@ ACE_MAKE_SVC_CONFIG_FACTORY_NAME(ACE_VERSIONED_NAMESPACE_NAME,SERVICE_CLASS) (AC
# define ACE_LOCAL_MEMORY_POOL ACE_Local_Memory_Pool
# define ACE_PAGEFILE_MEMORY_POOL ACE_Pagefile_Memory_Pool
-# else /* TEMPLATES are broken in some form or another (i.e., most C++ compilers) */
-
-// Handle ACE_Message_Queue.
-# if defined (ACE_HAS_OPTIMIZED_MESSAGE_QUEUE)
-# define ACE_SYNCH_DECL class _ACE_SYNCH_MUTEX_T, class _ACE_SYNCH_CONDITION_T, class _ACE_SYNCH_SEMAPHORE_T
-# define ACE_SYNCH_USE _ACE_SYNCH_MUTEX_T, _ACE_SYNCH_CONDITION_T, _ACE_SYNCH_SEMAPHORE_T
-# else
-# define ACE_SYNCH_DECL class _ACE_SYNCH_MUTEX_T, class _ACE_SYNCH_CONDITION_T
-# define ACE_SYNCH_USE _ACE_SYNCH_MUTEX_T, _ACE_SYNCH_CONDITION_T
-# endif /* ACE_HAS_OPTIMIZED_MESSAGE_QUEUE */
-# define ACE_SYNCH_MUTEX_T _ACE_SYNCH_MUTEX_T
-# define ACE_SYNCH_CONDITION_T _ACE_SYNCH_CONDITION_T
-# define ACE_SYNCH_SEMAPHORE_T _ACE_SYNCH_SEMAPHORE_T
-
-// Handle ACE_Malloc*
-# define ACE_MEM_POOL_1 class _ACE_MEM_POOL, class _ACE_MEM_POOL_OPTIONS
-# define ACE_MEM_POOL_2 _ACE_MEM_POOL, _ACE_MEM_POOL_OPTIONS
-# define ACE_MEM_POOL _ACE_MEM_POOL
-# define ACE_MEM_POOL_OPTIONS _ACE_MEM_POOL_OPTIONS
-
-// Handle ACE_Svc_Handler
-# define ACE_PEER_STREAM_1 class _ACE_PEER_STREAM, class _ACE_PEER_ADDR
-# define ACE_PEER_STREAM_2 _ACE_PEER_STREAM, _ACE_PEER_ADDR
-# define ACE_PEER_STREAM _ACE_PEER_STREAM
-# define ACE_PEER_STREAM_ADDR _ACE_PEER_ADDR
-
-// Handle ACE_Acceptor
-# define ACE_PEER_ACCEPTOR_1 class _ACE_PEER_ACCEPTOR, class _ACE_PEER_ADDR
-# define ACE_PEER_ACCEPTOR_2 _ACE_PEER_ACCEPTOR, _ACE_PEER_ADDR
-# define ACE_PEER_ACCEPTOR _ACE_PEER_ACCEPTOR
-# define ACE_PEER_ACCEPTOR_ADDR _ACE_PEER_ADDR
-
-// Handle ACE_Connector
-# define ACE_PEER_CONNECTOR_1 class _ACE_PEER_CONNECTOR, class _ACE_PEER_ADDR
-# define ACE_PEER_CONNECTOR_2 _ACE_PEER_CONNECTOR, _ACE_PEER_ADDR
-# define ACE_PEER_CONNECTOR _ACE_PEER_CONNECTOR
-# define ACE_PEER_CONNECTOR_ADDR _ACE_PEER_ADDR
-# define ACE_PEER_CONNECTOR_ADDR_ANY ACE_PEER_CONNECTOR_ADDR::sap_any
-
-// Handle ACE_SOCK_*
-# define ACE_SOCK_ACCEPTOR ACE_SOCK_Acceptor, ACE_INET_Addr
-# define ACE_SOCK_CONNECTOR ACE_SOCK_Connector, ACE_INET_Addr
-# define ACE_SOCK_STREAM ACE_SOCK_Stream, ACE_INET_Addr
-# define ACE_SOCK_DGRAM ACE_SOCK_Dgram, ACE_INET_Addr
-# define ACE_SOCK_DGRAM_BCAST ACE_SOCK_Dgram_Bcast, ACE_INET_Addr
-# define ACE_SOCK_DGRAM_MCAST ACE_SOCK_Dgram_Mcast, ACE_INET_Addr
-
-// Handle ACE_SOCK_SEQPACK_*
-# define ACE_SOCK_SEQPACK_ACCEPTOR ACE_SOCK_SEQPACK_Acceptor, ACE_Multihomed_INET_Addr
-# define ACE_SOCK_SEQPACK_CONNECTOR ACE_SOCK_SEQPACK_Connector, ACE_Multihomed_INET_Addr
-# define ACE_SOCK_SEQPACK_ASSOCIATION ACE_SOCK_SEQPACK_Association, ACE_Multihomed_INET_Addr
-
-// Handle ACE_MEM_*
-# define ACE_MEM_ACCEPTOR ACE_MEM_Acceptor, ACE_MEM_Addr
-# define ACE_MEM_CONNECTOR ACE_MEM_Connector, ACE_INET_Addr
-# define ACE_MEM_STREAM ACE_MEM_Stream, ACE_INET_Addr
-
-// Handle ACE_LSOCK_*
-# define ACE_LSOCK_ACCEPTOR ACE_LSOCK_Acceptor, ACE_UNIX_Addr
-# define ACE_LSOCK_CONNECTOR ACE_LSOCK_Connector, ACE_UNIX_Addr
-# define ACE_LSOCK_STREAM ACE_LSOCK_Stream, ACE_UNIX_Addr
-
-// Handle ACE_TLI_*
-# define ACE_TLI_ACCEPTOR ACE_TLI_Acceptor, ACE_INET_Addr
-# define ACE_TLI_CONNECTOR ACE_TLI_Connector, ACE_INET_Addr
-# define ACE_TLI_STREAM ACE_TLI_Stream, ACE_INET_Addr
-
-// Handle ACE_SPIPE_*
-# define ACE_SPIPE_ACCEPTOR ACE_SPIPE_Acceptor, ACE_SPIPE_Addr
-# define ACE_SPIPE_CONNECTOR ACE_SPIPE_Connector, ACE_SPIPE_Addr
-# define ACE_SPIPE_STREAM ACE_SPIPE_Stream, ACE_SPIPE_Addr
-
-// Handle ACE_UPIPE_*
-# define ACE_UPIPE_ACCEPTOR ACE_UPIPE_Acceptor, ACE_SPIPE_Addr
-# define ACE_UPIPE_CONNECTOR ACE_UPIPE_Connector, ACE_SPIPE_Addr
-# define ACE_UPIPE_STREAM ACE_UPIPE_Stream, ACE_SPIPE_Addr
-
-// Handle ACE_FILE_*
-# define ACE_FILE_CONNECTOR ACE_FILE_Connector, ACE_FILE_Addr
-# define ACE_FILE_STREAM ACE_FILE_IO, ACE_FILE_Addr
-
-// Handle ACE_*_Memory_Pool.
-# define ACE_MMAP_MEMORY_POOL ACE_MMAP_Memory_Pool, ACE_MMAP_Memory_Pool_Options
-# define ACE_LITE_MMAP_MEMORY_POOL ACE_Lite_MMAP_Memory_Pool, ACE_MMAP_Memory_Pool_Options
-# define ACE_SBRK_MEMORY_POOL ACE_Sbrk_Memory_Pool, ACE_Sbrk_Memory_Pool_Options
-# define ACE_SHARED_MEMORY_POOL ACE_Shared_Memory_Pool, ACE_Shared_Memory_Pool_Options
-# define ACE_LOCAL_MEMORY_POOL ACE_Local_Memory_Pool, ACE_Local_Memory_Pool_Options
-# define ACE_PAGEFILE_MEMORY_POOL ACE_Pagefile_Memory_Pool, ACE_Pagefile_Memory_Pool_Options
-# endif /* ACE_HAS_TEMPLATE_TYPEDEFS */
-
// Work around compilers that don't like in-class static integral
// constants. Constants in this case are meant to be compile-time
// constants so that they may be used as template arguments, for