1#ifndef BOOST_CONFIG_HELPER_MACROS_HPP_INCLUDED
2#define BOOST_CONFIG_HELPER_MACROS_HPP_INCLUDED
3
4// Copyright 2001 John Maddock.
5// Copyright 2017 Peter Dimov.
6//
7// Distributed under the Boost Software License, Version 1.0.
8//
9// See accompanying file LICENSE_1_0.txt or copy at
10// http://www.boost.org/LICENSE_1_0.txt
11//
12// BOOST_STRINGIZE(X)
13// BOOST_JOIN(X, Y)
14//
15// Note that this header is C compatible.
16
17//
18// Helper macro BOOST_STRINGIZE:
19// Converts the parameter X to a string after macro replacement
20// on X has been performed.
21//
22#define BOOST_STRINGIZE(X) BOOST_DO_STRINGIZE(X)
23#define BOOST_DO_STRINGIZE(X) #X
24
25//
26// Helper macro BOOST_JOIN:
27// The following piece of macro magic joins the two
28// arguments together, even when one of the arguments is
29// itself a macro (see 16.3.1 in C++ standard). The key
30// is that macro expansion of macro arguments does not
31// occur in BOOST_DO_JOIN2 but does in BOOST_DO_JOIN.
32//
33#define BOOST_JOIN(X, Y) BOOST_DO_JOIN(X, Y)
34#define BOOST_DO_JOIN(X, Y) BOOST_DO_JOIN2(X,Y)
35#define BOOST_DO_JOIN2(X, Y) X##Y
36
37#endif // BOOST_CONFIG_HELPER_MACROS_HPP_INCLUDED
38