diff options
author | Steve Huston <shuston@riverace.com> | 2022-03-16 20:02:16 -0400 |
---|---|---|
committer | Steve Huston <shuston@riverace.com> | 2022-03-16 20:02:16 -0400 |
commit | 6397aab352c1f7758c28131edec921ece3f6819b (patch) | |
tree | 9259714ac343a6b59b39d5009d05b22b2686af16 | |
parent | 26f1f548344a84cddff4e8f8a967a8704cfd2c10 (diff) | |
download | ATCD-6397aab352c1f7758c28131edec921ece3f6819b.tar.gz |
Add ACE_FALLTHROUGH macro that adjusts to c++17 or earlier
-rw-r--r-- | ACE/ace/ACE.cpp | 6 | ||||
-rw-r--r-- | ACE/ace/CDR_Base.cpp | 8 | ||||
-rw-r--r-- | ACE/ace/Name_Proxy.cpp | 4 | ||||
-rw-r--r-- | ACE/ace/OS_NS_unistd.cpp | 2 | ||||
-rw-r--r-- | ACE/ace/config-g++-common.h | 9 | ||||
-rw-r--r-- | ACE/ace/config-macros.h | 11 |
6 files changed, 30 insertions, 10 deletions
diff --git a/ACE/ace/ACE.cpp b/ACE/ace/ACE.cpp index fc820891251..7d48c80ee69 100644 --- a/ACE/ace/ACE.cpp +++ b/ACE/ace/ACE.cpp @@ -2197,11 +2197,11 @@ ACE::handle_ready (ACE_HANDLE handle, { case 0: // Timer expired. errno = ETIME; - /* FALLTHRU */ + ACE_FALLTHROUGH; case -1: // we got here directly - select() returned -1. return -1; case 1: // Handle has data. - /* FALLTHRU */ + ACE_FALLTHROUGH; default: // default is case result > 0; return a // ACE_ASSERT (result == 1); return result; @@ -2767,7 +2767,7 @@ ACE::fork (const ACE_TCHAR *program_name, return 0; case -1: // assumes all errnos are < 256 ACE_OS::_exit (errno); - [[fallthrough]]; // gcc sees this as a fallthrough + ACE_FALLTHROUGH; // gcc sees this as a fallthrough default: // child terminates, orphaning grandchild ACE_OS::_exit (0); } diff --git a/ACE/ace/CDR_Base.cpp b/ACE/ace/CDR_Base.cpp index 0dda825809e..204bcc7ea30 100644 --- a/ACE/ace/CDR_Base.cpp +++ b/ACE/ace/CDR_Base.cpp @@ -239,12 +239,12 @@ ACE_CDR::swap_2_array (char const * orig, char* target, size_t n) ACE_CDR::swap_2 (orig, target); orig += 2; target += 2; - [[fallthrough]]; + ACE_FALLTHROUGH; case 2: ACE_CDR::swap_2 (orig, target); orig += 2; target += 2; - [[fallthrough]]; + ACE_FALLTHROUGH; case 1: ACE_CDR::swap_2 (orig, target); } @@ -445,12 +445,12 @@ ACE_CDR::swap_4_array (char const * orig, char* target, size_t n) ACE_CDR::swap_4 (orig, target); orig += 4; target += 4; - [[fallthrough]]; + ACE_FALLTHROUGH; case 2: ACE_CDR::swap_4 (orig, target); orig += 4; target += 4; - [[fallthrough]]; + ACE_FALLTHROUGH; case 1: ACE_CDR::swap_4 (orig, target); } diff --git a/ACE/ace/Name_Proxy.cpp b/ACE/ace/Name_Proxy.cpp index 94cd1c9b584..3e4a676e4b0 100644 --- a/ACE/ace/Name_Proxy.cpp +++ b/ACE/ace/Name_Proxy.cpp @@ -151,14 +151,14 @@ ACE_Name_Proxy::recv_reply (ACE_Name_Request &reply) case -1: ACELIB_DEBUG ((LM_DEBUG, ACE_TEXT ("****************** recv_reply returned -1\n"))); - [[fallthrough]]; + ACE_FALLTHROUGH; default: ACELIB_ERROR ((LM_ERROR, ACE_TEXT ("%p got %d bytes, expected %d bytes\n"), ACE_TEXT ("recv failed"), n, sizeof (ACE_UINT32))); - [[fallthrough]]; + ACE_FALLTHROUGH; case 0: // We've shutdown unexpectedly return -1; diff --git a/ACE/ace/OS_NS_unistd.cpp b/ACE/ace/OS_NS_unistd.cpp index 4dc8ea1663d..b2ff267171a 100644 --- a/ACE/ace/OS_NS_unistd.cpp +++ b/ACE/ace/OS_NS_unistd.cpp @@ -350,7 +350,7 @@ ACE_OS::fork_exec (ACE_TCHAR *argv[]) // If the execv fails, this child needs to exit. ACE_OS::exit (errno); } - [[ fallthrough ]]; + ACE_FALLTHROUGH; # endif /* ACE_HAS_WCHAR */ default: diff --git a/ACE/ace/config-g++-common.h b/ACE/ace/config-g++-common.h index c01b73f70c6..be8714daf15 100644 --- a/ACE/ace/config-g++-common.h +++ b/ACE/ace/config-g++-common.h @@ -38,6 +38,15 @@ # if __cplusplus > 199711L # define ACE_HAS_CPP11 # endif +# if __cplusplus >= 201402L +# define ACE_HAS_CPP14 +# endif +# if __cplusplus >= 201703L +# define ACE_HAS_CPP17 +# endif +# if __cplusplus >= 202002L +# define ACE_HAS_CPP20 +# endif #endif #if (defined (i386) || defined (__i386__)) && !defined (ACE_SIZEOF_LONG_DOUBLE) diff --git a/ACE/ace/config-macros.h b/ACE/ace/config-macros.h index 22b544286ca..5f948b679ed 100644 --- a/ACE/ace/config-macros.h +++ b/ACE/ace/config-macros.h @@ -246,6 +246,17 @@ # define ACE_NOTREACHED(a) a #endif /* ghs || ..... */ + +// Compiler-specific configs can define ACE_FALLTHROUGH but if not, +// and it's a C++17 or hgher compiler, use the defined mechanism. +#if !defined ACE_FALLTHROUGH +# if defined ACE_HAS_CPP17 +# define ACE_FALLTHROUGH [[fallthrough]] +# else +# define ACE_FALLTHROUGH +# endif /* ACE_HAS_CPP17 */ +#endif /* ACE_FALLTHROUGH */ + // ============================================================================ // ACE_ALLOC_HOOK* macros // |