GitHub Actions: Try MSVC builds with /std:c++17 and 20
[ACE_TAO.git] / ACE / ace / config-lite.h
blob55d11f9a46acee441d9c19166701faa87ad92d98
1 // -*- C++ -*-
3 //==========================================================================
4 /**
5 * @file config-lite.h
7 * @author (Originally in OS.h)Doug Schmidt <d.schmidt@vanderbilt.edu>
8 * @author Jesper S. M|ller<stophph@diku.dk>
9 * @author and a cast of thousands...
11 * This file contains the contents of the old config-all.h in order to
12 * avoid a circular dependency problem caused by some of the new
13 * includes added to config-all.h, e.g., OS_main.h.
15 //==========================================================================
17 #ifndef ACE_CONFIG_LITE_H
18 #define ACE_CONFIG_LITE_H
20 #include /**/ "ace/pre.h"
22 #include "ace/config-macros.h"
24 #if !defined (ACE_LACKS_PRAGMA_ONCE)
25 # pragma once
26 #endif /* ACE_LACKS_PRAGMA_ONCE */
28 // ============================================================================
29 // UNICODE macros (to be added later)
30 // ============================================================================
32 // Get the unicode (i.e. ACE_TCHAR) defines
33 # include "ace/ace_wchar.h"
35 // ============================================================================
36 // at_exit declarations
37 // ============================================================================
39 ACE_BEGIN_VERSIONED_NAMESPACE_DECL
41 // Marker for cleanup, used by ACE_Exit_Info.
42 extern int ace_exit_hook_marker;
44 ACE_END_VERSIONED_NAMESPACE_DECL
46 // For use by <ACE_OS::exit>.
47 extern "C"
49 typedef void (*ACE_EXIT_HOOK) (void);
52 // Signature for registering a cleanup function that is used by the
53 // ACE_Object_Manager and the ACE_Thread_Manager.
54 # if defined (ACE_HAS_SIG_C_FUNC)
55 extern "C" {
56 # endif /* ACE_HAS_SIG_C_FUNC */
57 typedef void (*ACE_CLEANUP_FUNC)(void *object, void *param) /* throw () */;
58 # if defined (ACE_HAS_SIG_C_FUNC)
60 # endif /* ACE_HAS_SIG_C_FUNC */
62 // ============================================================================
63 // log_msg declarations
64 // ============================================================================
66 ACE_BEGIN_VERSIONED_NAMESPACE_DECL
68 # if defined (ACE_HAS_WIN32_STRUCTURAL_EXCEPTIONS)
69 typedef int (*ACE_SEH_EXCEPT_HANDLER)(void *);
70 // Prototype of win32 structured exception handler functions.
71 // They are used to get the exception handling expression or
72 // as exception handlers.
73 # endif /* ACE_HAS_WIN32_STRUCTURAL_EXCEPTIONS */
75 class ACE_OS_Thread_Descriptor;
76 class ACE_OS_Log_Msg_Attributes;
77 typedef void (*ACE_INIT_LOG_MSG_HOOK) (ACE_OS_Log_Msg_Attributes &attr
78 # if defined (ACE_HAS_WIN32_STRUCTURAL_EXCEPTIONS)
79 , ACE_SEH_EXCEPT_HANDLER selector
80 , ACE_SEH_EXCEPT_HANDLER handler
81 # endif /* ACE_HAS_WIN32_STRUCTURAL_EXCEPTIONS */
83 typedef void (*ACE_INHERIT_LOG_MSG_HOOK) (ACE_OS_Thread_Descriptor*,
84 ACE_OS_Log_Msg_Attributes &);
86 typedef void (*ACE_CLOSE_LOG_MSG_HOOK) (void);
88 typedef void (*ACE_SYNC_LOG_MSG_HOOK) (const ACE_TCHAR *prog_name);
90 typedef ACE_OS_Thread_Descriptor *(*ACE_THR_DESC_LOG_MSG_HOOK) (void);
92 ACE_END_VERSIONED_NAMESPACE_DECL
94 /**
95 * @deprecated ACE_DECLARE_STL_REVERSE_ITERATORS is a crutch to be
96 * used until all C++ compiler supported by ACE support
97 * the standard reverse_iterator adapters.
98 * @internal ACE_DECLARE_STL_REVERSE_ITERATORS is not meant for use
99 * outside of ACE.
101 // STL reverse_iterator declaration generator
102 // Make sure you include <iterator> in the file you're using this
103 // generator, and that the following traits are available:
105 // iterator
106 // const_iterator
107 // value_type
108 // reference
109 // pointer
110 // const_reference
111 // const_pointer
112 // difference_type
114 // Once all C++ compilers support the standard reverse_iterator
115 // adapters, we can drop this generator macro or at least drop the
116 // MSVC++ or Sun Studio preprocessor conditional blocks.
117 #if defined (__SUNPRO_CC) && __SUNPRO_CC <= 0x5140 \
118 && !defined (_STLPORT_VERSION)
119 // If we're not using the stlport4 C++ library (which has standard
120 // iterators), we need to ensure this is included in order to test
121 // the _RWSTD_NO_CLASS_PARTIAL_SPEC feature test macro below.
122 # include <Cstd/stdcomp.h>
123 #endif /* __SUNPRO_CC <= 0x5110 */
124 #if (defined (_MSC_VER) && (_MSC_VER <= 1310) && defined (_WIN64)) \
125 || defined (ACE_HAS_BROKEN_STD_REVERSE_ITERATOR)
126 // VC 7.1 and the latest 64-bit platform SDK still don't define a standard
127 // compliant reverse_iterator adapter.
128 # define ACE_DECLARE_STL_REVERSE_ITERATORS \
129 typedef std::reverse_iterator<iterator, value_type> reverse_iterator; \
130 typedef std::reverse_iterator<const_iterator, \
131 value_type const> const_reverse_iterator;
132 #elif defined (__SUNPRO_CC) && __SUNPRO_CC <= 0x5140 \
133 && defined (_RWSTD_NO_CLASS_PARTIAL_SPEC)
134 # define ACE_DECLARE_STL_REVERSE_ITERATORS \
135 typedef std::reverse_iterator<iterator, \
136 std::input_iterator_tag, \
137 value_type, \
138 reference, \
139 pointer, \
140 difference_type> reverse_iterator; \
141 typedef std::reverse_iterator<const_iterator, \
142 std::input_iterator_tag, \
143 value_type const, \
144 const_reference, \
145 const_pointer, \
146 difference_type> const_reverse_iterator;
147 #else
148 # define ACE_DECLARE_STL_REVERSE_ITERATORS \
149 typedef std::reverse_iterator<iterator> reverse_iterator; \
150 typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
151 #endif /* _MSC_VER && _WIN64 */
154 #include /**/ "ace/post.h"
156 #endif /* ACE_CONFIG_LITE_H */