Update of /cvsroot/boost/boost/boost/function_types/config
In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv28648/config

Added Files:
        cc_names.hpp compiler.hpp config.hpp 
Log Message:
adds function_types implementation


--- NEW FILE: cc_names.hpp ---

// (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).

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

#ifndef BOOST_FT_CONFIG_CC_NAMES_HPP_INCLUDED
#define BOOST_FT_CONFIG_CC_NAMES_HPP_INCLUDED

#define BOOST_FT_BUILTIN_CC_NAMES \
  (( IMPLICIT           , implicit_cc , BOOST_PP_EMPTY                ))\
  (( CDECL              , cdecl_cc    , BOOST_PP_IDENTITY(__cdecl   ) ))\
  (( STDCALL            , stdcall_cc  , BOOST_PP_IDENTITY(__stdcall ) ))\
  (( PASCAL             , pascal_cc   , BOOST_PP_IDENTITY(pascal    ) ))\
  (( FASTCALL           , fastcall_cc , BOOST_PP_IDENTITY(__fastcall) ))\
  (( CLRCALL            , clrcall_cc  , BOOST_PP_IDENTITY(__clrcall ) ))\
  (( THISCALL           , thiscall_cc , BOOST_PP_IDENTITY(__thiscall) ))\
  (( IMPLICIT_THISCALL  , thiscall_cc , BOOST_PP_EMPTY                )) 

// append user-defined cc names to builtin ones
#ifdef BOOST_FT_CC_NAMES 
#   define BOOST_FT_CC_NAMES_SEQ BOOST_FT_BUILTIN_CC_NAMES BOOST_FT_CC_NAMES
#   define BOOST_FT_CC_PREPROCESSING 1
#else
#   define BOOST_FT_CC_NAMES_SEQ BOOST_FT_BUILTIN_CC_NAMES
#endif

#endif


--- NEW FILE: compiler.hpp ---

// (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).

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

#ifndef BOOST_FT_CONFIG_COMPILER_HPP_INCLUDED
#define BOOST_FT_CONFIG_COMPILER_HPP_INCLUDED

#include <boost/config.hpp>
#include <boost/detail/workaround.hpp>

#if defined(BOOST_MSVC)

#   if BOOST_MSVC < 1310
#     error "unsupported compiler version"
#   endif

    // enable clrcall calling covention (call to .NET managed code) when
    // compiling with /clr 
#   if BOOST_MSVC >= 1400 && defined(__cplusplus_cli)
#     ifndef BOOST_FT_CC_CLRCALL
#     define BOOST_FT_CC_CLRCALL callable_builtin
#     endif
#   endif

    // Intel x86 architecture specific calling conventions
#   ifdef _M_IX86
#     define BOOST_FT_COMMON_X86_CCs callable_builtin
#     if BOOST_MSVC < 1400
        // version 7.1 is missing a keyword to specify the thiscall cc ...
#       ifndef BOOST_FT_CC_IMPLICIT_THISCALL
#       define BOOST_FT_CC_IMPLICIT_THISCALL 
non_variadic|member|callable_builtin
#       ifndef BOOST_FT_CONFIGURATION_OK
#         pragma message("ATTENTION: /Gd /Gr /Gz compiler options will not")
#         pragma message("ATTENTION: work with this configuration.")
          // TODO: add documentation reference
#       endif
#       endif
#     else 
        // ...introduced in version 8
#       ifndef BOOST_FT_CC_THISCALL
#       define BOOST_FT_CC_THISCALL non_variadic|member|callable_builtin
#       endif
#     endif
#   endif

#elif defined(__GNUC__) && !defined(BOOST_INTEL_LINUX)

#   if __GNUC__ < 3
#     error "unsupported compiler version"
#   endif

#   if defined(__i386__)
#     // see http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20439
#     // see http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29328
#     if BOOST_WORKAROUND(__GNUC__,BOOST_TESTED_AT(4))
#       ifndef BOOST_FT_CC_IMPLICIT 
#       define BOOST_FT_CC_IMPLICIT member|callable_builtin
#       endif
#       define BOOST_FT_COMMON_X86_CCs non_member|callable_builtin
#     else
#       define BOOST_FT_COMMON_X86_CCs callable_builtin
#     endif
#   else
#     ifndef BOOST_FT_CC_IMPLICIT
#     define BOOST_FT_CC_IMPLICIT callable_builtin
#     endif
#   endif

#   // TODO: straighten out this hack
#   ifndef __cdecl
#   define __cdecl __attribute__((__cdecl__))
#   endif
#   ifndef __stdcall
#   define __stdcall __attribute__((__stdcall__))
#   endif
#   ifndef __fastcall
#   define __fastcall __attribute__((__fastcall__))
#   endif

#elif defined(__BORLANDC__)

#   if __BORLANDC__ < 0x550
#     error "unsupported compiler version"
#   elif __BORLANDC__ > 0x565
#     pragma message("WARNING: library untested with this compiler version")
#   endif

#   define BOOST_FT_COMMON_X86_CCs callable_builtin

    // syntactic specialities of cc specifier
#   define BOOST_FT_SYNTAX(result,lparen,cc_spec,type_mod,name,rparen) \
                        result() cc_spec() lparen() type_mod() name() rparen()
#else
    // only enable default calling convention
#   define BOOST_FT_CC_IMPLICIT callable_builtin
#endif


#endif


--- NEW FILE: config.hpp ---

// (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).

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

#ifndef BOOST_FT_CONFIG_HPP_INCLUDED
#define BOOST_FT_CONFIG_HPP_INCLUDED

#include <boost/function_types/config/compiler.hpp>
#include <boost/function_types/config/cc_names.hpp>

// maximum allowed arity
#ifndef BOOST_FT_MAX_ARITY
#define BOOST_FT_MAX_ARITY 20
#endif

// the most common calling conventions for x86 architecture can be enabled at
// once in the compiler config
#ifdef BOOST_FT_COMMON_X86_CCs
#   ifndef BOOST_FT_CC_CDECL
#   define BOOST_FT_CC_CDECL BOOST_FT_COMMON_X86_CCs
#   endif
#   ifndef BOOST_FT_CC_STDCALL
#   define BOOST_FT_CC_STDCALL non_variadic|BOOST_FT_COMMON_X86_CCs
#   endif
#   ifndef BOOST_FT_CC_FASTCALL
#   define BOOST_FT_CC_FASTCALL non_variadic|BOOST_FT_COMMON_X86_CCs
#   endif
#endif

// where to place the cc specifier (the common way)
#ifndef BOOST_FT_SYNTAX
#   define BOOST_FT_SYNTAX(result,lparen,cc_spec,type_mod,name,rparen) \
                        result() lparen() cc_spec() type_mod() name() rparen()
#endif

// param for nullary functions
// set to "void" for compilers that require nullary functions to read 
// "R (void)" in template partial specialization
#ifndef BOOST_FT_NULLARY_PARAM
#define BOOST_FT_NULLARY_PARAM 
#endif

// there is a pending defect report on cv qualified function types, so support
// for these types is disabled, unless for compilers where it's known to work
#ifndef BOOST_FT_NO_CV_FUNC_SUPPORT
#define BOOST_FT_NO_CV_FUNC_SUPPORT 1
#endif

// full preprocessing implies preprocessing of the ccs
#if defined(BOOST_FT_PREPROCESSING_MODE) && !defined(BOOST_FT_CC_PREPROCESSING)
#   define BOOST_FT_CC_PREPROCESSING 1
#endif

#endif



-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Boost-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/boost-cvs

Reply via email to