
// (C) Copyright Tobias Schwinger
//
// Use modification and distribution are subject to the boost Software License,
// Version 1.0. (See http://www.boost.org/LICENSE_1_0.txt).

//------------------------------------------------------------------------------

// no include guards, this file is intended for multiple inclusions

// this file has been generated from the master.hpp file in the same directory
# define NDNBOOST_FT_cc_id 1
# define NDNBOOST_FT_cc_name implicit_cc
# define NDNBOOST_FT_cc NDNBOOST_PP_EMPTY
# define NDNBOOST_FT_cond NDNBOOST_FT_CC_IMPLICIT
# if NDNBOOST_FT_cond
# define NDNBOOST_FT_config_valid 1
# include NDNBOOST_FT_cc_file
# endif
# undef NDNBOOST_FT_cond
# undef NDNBOOST_FT_cc_name
# undef NDNBOOST_FT_cc
# undef NDNBOOST_FT_cc_id
# define NDNBOOST_FT_cc_id 2
# define NDNBOOST_FT_cc_name cdecl_cc
# define NDNBOOST_FT_cc NDNBOOST_PP_IDENTITY(__cdecl )
# define NDNBOOST_FT_cond NDNBOOST_FT_CC_CDECL
# if NDNBOOST_FT_cond
# define NDNBOOST_FT_config_valid 1
# include NDNBOOST_FT_cc_file
# endif
# undef NDNBOOST_FT_cond
# undef NDNBOOST_FT_cc_name
# undef NDNBOOST_FT_cc
# undef NDNBOOST_FT_cc_id
# define NDNBOOST_FT_cc_id 3
# define NDNBOOST_FT_cc_name stdcall_cc
# define NDNBOOST_FT_cc NDNBOOST_PP_IDENTITY(__stdcall )
# define NDNBOOST_FT_cond NDNBOOST_FT_CC_STDCALL
# if NDNBOOST_FT_cond
# define NDNBOOST_FT_config_valid 1
# include NDNBOOST_FT_cc_file
# endif
# undef NDNBOOST_FT_cond
# undef NDNBOOST_FT_cc_name
# undef NDNBOOST_FT_cc
# undef NDNBOOST_FT_cc_id
# define NDNBOOST_FT_cc_id 4
# define NDNBOOST_FT_cc_name pascal_cc
# define NDNBOOST_FT_cc NDNBOOST_PP_IDENTITY(pascal )
# define NDNBOOST_FT_cond NDNBOOST_FT_CC_PASCAL
# if NDNBOOST_FT_cond
# define NDNBOOST_FT_config_valid 1
# include NDNBOOST_FT_cc_file
# endif
# undef NDNBOOST_FT_cond
# undef NDNBOOST_FT_cc_name
# undef NDNBOOST_FT_cc
# undef NDNBOOST_FT_cc_id
# define NDNBOOST_FT_cc_id 5
# define NDNBOOST_FT_cc_name fastcall_cc
# define NDNBOOST_FT_cc NDNBOOST_PP_IDENTITY(__fastcall)
# define NDNBOOST_FT_cond NDNBOOST_FT_CC_FASTCALL
# if NDNBOOST_FT_cond
# define NDNBOOST_FT_config_valid 1
# include NDNBOOST_FT_cc_file
# endif
# undef NDNBOOST_FT_cond
# undef NDNBOOST_FT_cc_name
# undef NDNBOOST_FT_cc
# undef NDNBOOST_FT_cc_id
# define NDNBOOST_FT_cc_id 6
# define NDNBOOST_FT_cc_name clrcall_cc
# define NDNBOOST_FT_cc NDNBOOST_PP_IDENTITY(__clrcall )
# define NDNBOOST_FT_cond NDNBOOST_FT_CC_CLRCALL
# if NDNBOOST_FT_cond
# define NDNBOOST_FT_config_valid 1
# include NDNBOOST_FT_cc_file
# endif
# undef NDNBOOST_FT_cond
# undef NDNBOOST_FT_cc_name
# undef NDNBOOST_FT_cc
# undef NDNBOOST_FT_cc_id
# define NDNBOOST_FT_cc_id 7
# define NDNBOOST_FT_cc_name thiscall_cc
# define NDNBOOST_FT_cc NDNBOOST_PP_IDENTITY(__thiscall)
# define NDNBOOST_FT_cond NDNBOOST_FT_CC_THISCALL
# if NDNBOOST_FT_cond
# define NDNBOOST_FT_config_valid 1
# include NDNBOOST_FT_cc_file
# endif
# undef NDNBOOST_FT_cond
# undef NDNBOOST_FT_cc_name
# undef NDNBOOST_FT_cc
# undef NDNBOOST_FT_cc_id
# define NDNBOOST_FT_cc_id 8
# define NDNBOOST_FT_cc_name thiscall_cc
# define NDNBOOST_FT_cc NDNBOOST_PP_EMPTY
# define NDNBOOST_FT_cond NDNBOOST_FT_CC_IMPLICIT_THISCALL
# if NDNBOOST_FT_cond
# define NDNBOOST_FT_config_valid 1
# include NDNBOOST_FT_cc_file
# endif
# undef NDNBOOST_FT_cond
# undef NDNBOOST_FT_cc_name
# undef NDNBOOST_FT_cc
# undef NDNBOOST_FT_cc_id
# ifndef NDNBOOST_FT_config_valid
# define NDNBOOST_FT_cc_id 1
# define NDNBOOST_FT_cc_name implicit_cc
# define NDNBOOST_FT_cc NDNBOOST_PP_EMPTY
# define NDNBOOST_FT_cond 0x00000001
# include NDNBOOST_FT_cc_file
# undef NDNBOOST_FT_cond
# undef NDNBOOST_FT_cc_name
# undef NDNBOOST_FT_cc
# undef NDNBOOST_FT_cc_id
# else
# undef NDNBOOST_FT_config_valid
# endif
