1 # ifndef BOOST_PREPROCESSOR_ARRAY_HPP
2 # define BOOST_PREPROCESSOR_ARRAY_HPP
4 # /* **************************************************************************
6 # * (C) Copyright Paul Mensonides 2002. Permission to copy, use, *
7 # * modify, sell, and distribute this software is granted provided *
8 # * this copyright notice appears in all copies. This software is *
9 # * provided "as is" without express or implied warranty, and with *
10 # * no claim at to its suitability for any purpose. *
12 # ************************************************************************** */
14 # include <boost/preprocessor/tuple/elem.hpp>
16 # define BOOST_PP_ARRAY(size, data) (size, data)
18 # if !defined(__MWERKS__) || defined(BOOST_NO_COMPILER_CONFIG) || __MWERKS__ > 0x3002
19 # define BOOST_PP_ARRAY_SIZE(arr) BOOST_PP_ARRAY_SIZE_I arr
21 # define BOOST_PP_ARRAY_SIZE(arr) BOOST_PP_ARRAY_SIZE_D(arr)
22 # define BOOST_PP_ARRAY_SIZE_D(arr) BOOST_PP_ARRAY_SIZE_I ## arr
25 # define BOOST_PP_ARRAY_SIZE_I(size, data) size
27 # if !defined(__MWERKS__) || defined(BOOST_NO_COMPILER_CONFIG) || __MWERKS__ > 0x3002
28 # define BOOST_PP_ARRAY_DATA(arr) BOOST_PP_ARRAY_DATA_I arr
30 # define BOOST_PP_ARRAY_DATA(arr) BOOST_PP_ARRAY_DATA_D(arr)
31 # define BOOST_PP_ARRAY_DATA_D(arr) BOOST_PP_ARRAY_DATA_I ## arr
34 # define BOOST_PP_ARRAY_DATA_I(size, data) data
36 # if !defined(__MWERKS__) || defined(BOOST_NO_COMPILER_CONFIG) || __MWERKS__ > 0x3002
37 # define BOOST_PP_ARRAY_ELEM(i, arr) BOOST_PP_TUPLE_ELEM(BOOST_PP_ARRAY_SIZE_I arr, i, BOOST_PP_ARRAY_DATA_I arr)
39 # define BOOST_PP_ARRAY_ELEM(i, arr) BOOST_PP_ARRAY_ELEM_D(i, arr)
40 # define BOOST_PP_ARRAY_ELEM_D(i, arr) BOOST_PP_TUPLE_ELEM(BOOST_PP_ARRAY_SIZE(arr), i, BOOST_PP_ARRAY_DATA(arr))