OpenDDS  Snapshot(2023/04/28-20:55)
Versioned_Namespace.h
Go to the documentation of this file.
1 // -*- C++ -*-
2 
3 //=============================================================================
4 /**
5  * @file Versioned_Namespace.h
6  *
7  * Versioned namespace support.
8  *
9  * Useful for preventing conflicts when using a third party library.
10  *
11  * @author Ossama Othman <ossama@dre.vanderbilt.edu>
12  */
13 //=============================================================================
14 
15 #ifndef OPENDDS_VERSIONED_NAMESPACE_H
16 #define OPENDDS_VERSIONED_NAMESPACE_H
17 
18 #include "ace/config.h"
19 
20 #if !defined (OPENDDS_HAS_VERSIONED_NAMESPACE) \
21  && defined (ACE_HAS_VERSIONED_NAMESPACE) \
22  && ACE_HAS_VERSIONED_NAMESPACE == 1
23 # define OPENDDS_HAS_VERSIONED_NAMESPACE 1
24 #endif /* !OPENDDS_HAS_VERSIONED_NAMESPACE
25  && ACE_HAS_VERSIONED_NAMESPACE == 1*/
26 
27 #if defined (OPENDDS_HAS_VERSIONED_NAMESPACE) && OPENDDS_HAS_VERSIONED_NAMESPACE == 1
28 
29 # ifndef OPENDDS_VERSIONED_NAMESPACE_NAME
30 # include "Version.h"
31 
32 // Preprocessor symbols will not be expanded if they are
33 // concatenated. Force the preprocessor to expand them during the
34 // argument prescan by calling a macro that itself calls another that
35 // performs the actual concatenation.
36 # define OPENDDS_MAKE_VERSIONED_NAMESPACE_NAME_IMPL(MAJOR,MINOR,MICRO) OPENDDS_ ## MAJOR ## _ ## MINOR ## _ ## MICRO
37 # define OPENDDS_MAKE_VERSIONED_NAMESPACE_NAME(MAJOR,MINOR,MICRO) OPENDDS_MAKE_VERSIONED_NAMESPACE_NAME_IMPL(MAJOR,MINOR,MICRO)
38 # define OPENDDS_VERSIONED_NAMESPACE_NAME \
39  OPENDDS_MAKE_VERSIONED_NAMESPACE_NAME(OPENDDS_MAJOR_VERSION,OPENDDS_MINOR_VERSION,OPENDDS_MICRO_VERSION)
40 # endif /* !OPENDDS_VERSIONED_NAMESPACE_NAME */
41 
42 # define OPENDDS_BEGIN_VERSIONED_NAMESPACE_DECL namespace OPENDDS_VERSIONED_NAMESPACE_NAME {
43 # define OPENDDS_END_VERSIONED_NAMESPACE_DECL } \
44  using namespace OPENDDS_VERSIONED_NAMESPACE_NAME;
45 #else
46 # define OPENDDS_VERSIONED_NAMESPACE_NAME
47 # define OPENDDS_BEGIN_VERSIONED_NAMESPACE_DECL
48 # define OPENDDS_END_VERSIONED_NAMESPACE_DECL
49 
50 #endif /* OPENDDS_HAS_VERSIONED_NAMESPACE */
51 
52 #endif /* !OPENDDS_VERSIONED_NAMESPACE_H */