#ifndef PROTON_TYPE_COMPAT_H #define PROTON_TYPE_COMPAT_H 1 /* * * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * */ // Get Boolean #if !defined(__cplusplus) && !defined(__bool_true_false_are_defined) # if __STDC_VERSION__ >= 199901L || __GNUC__ >= 3 || _MSC_VER >=1800 # include # else // Need to get bool/true/false manually # if _MSC_VER # define bool char # define false 0 # define true 1 # define __bool_true_false_are_defined # else # error "No definitions for bool/true/false" # endif # endif #endif /* * Handle special cases for stdint.h and the definition for ssize_t. * Third party libraries (e.g. Boost) may provide competing solutions. * * The effects of this include file may be controlled by overrides: * PN_DEFINE_STDINT/PN_NODEFINE_STDINT : turn on/off definition of int64_t etc. * PN_DEFINE_SSIZE_T/PN_NODEFINE_SSIZE_T : turn on/off definition of ssize_t * PN_INCLUDE_STDINT/PN_NOINCLUDE_STDINT : include (or not) stdint.h */ // Honor positive overrides #if defined(PN_DEFINE_STDINT) # define PNI_DEFINE_STDINT #endif #if defined(PN_INCLUDE_STDINT) # define PNI_INCLUDE_STDINT) #endif #if defined(PN_DEFINE_SSIZE_T) # define PNI_DEFINE_SSIZE_T #endif // Determinine default action #ifndef _MSC_VER // Not Windows and not using Visual Studio # ifndef PNI_INCLUDE_STDINT # define PNI_INCLUDE_STDINT # endif #else // all versions of Visual Studio # ifndef PNI_DEFINE_SSIZE_T // ssize_t def is needed, unless third party definition interferes, e.g. python/swig # if !defined(Py_CONFIG_H) && !defined(INCLUDE_RUBY_CONFIG_H) # define PNI_DEFINE_SSIZE_T # endif # endif # if (_MSC_VER < 1600) // VS 2008 and earlier # ifndef PNI_DEFINE_STDINT # define PNI_DEFINE_STDINT # endif # else // VS 2010 and newer # ifndef PNI_INCLUDE_STDINT # define PNI_INCLUDE_STDINT # endif # endif // (_MSC_VER < 1600) #endif //_MSC_VER // Honor negative overrides #ifdef PN_NODEFINE_SSIZE_T # undef PNI_DEFINE_SSIZE_T #endif #ifdef PN_NODEFINE_STDINT # undef PNI_DEFINE_STDINT #endif #ifdef PN_NOINCLUDE_STDINT # undef PNI_INCLUDE_STDINT #endif #ifdef PNI_INCLUDE_STDINT # include #endif #ifdef PNI_DEFINE_SSIZE_T # ifdef _MSC_VER # include typedef SSIZE_T ssize_t; # else # error ssize_t definition not kown # endif #endif // PNI_DEFINE_SSIZE_T #ifdef PNI_DEFINE_STDINT # ifdef _MSC_VER typedef signed __int8 int8_t; typedef signed __int16 int16_t; typedef signed __int32 int32_t; typedef signed __int64 int64_t; typedef unsigned __int8 uint8_t; typedef unsigned __int16 uint16_t; typedef unsigned __int32 uint32_t; typedef unsigned __int64 uint64_t; # else // _MSC_VER # error stdint.h definitions not kown # endif #endif // PNI_DEFINE_SSIZE_T #endif /* type_compat.h */