diff options
Diffstat (limited to 'util/include/axutil_utils_defines.h')
-rw-r--r-- | util/include/axutil_utils_defines.h | 226 |
1 files changed, 226 insertions, 0 deletions
diff --git a/util/include/axutil_utils_defines.h b/util/include/axutil_utils_defines.h new file mode 100644 index 0000000..c12c842 --- /dev/null +++ b/util/include/axutil_utils_defines.h @@ -0,0 +1,226 @@ + +/* + * 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. + */ + +#ifndef AXUTIL_UTILS_DEFINES_H +#define AXUTIL_UTILS_DEFINES_H + +#include <stddef.h> + +#if !defined(_WIN32) +#include <stdint.h> +#endif + +#ifdef __cplusplus +extern "C" +{ +#endif + +#if defined(_WIN32) && !defined(AXIS2_SKIP_INT_TYPEDEFS) + /** + * ANSI Type definitions for Windows + */ + typedef unsigned __int8 uint8_t; + typedef __int8 int8_t; + typedef unsigned __int16 uint16_t; + typedef __int16 int16_t; + typedef unsigned __int32 uint32_t; + typedef __int32 int32_t; + typedef unsigned __int64 uint64_t; + typedef __int64 int64_t; +#endif + +/** + * Definition of format specifiers + * for printf family of functions + */ + +#if defined(_WIN32) +#define AXIS2_PRINTF_INT64_FORMAT_SPECIFIER "%I64d" +#define AXIS2_PRINTF_UINT64_FORMAT_SPECIFIER "%I64u" +#define AXIS2_PRINTF_INT32_FORMAT_SPECIFIER "%I32d" +#define AXIS2_PRINTF_UINT32_FORMAT_SPECIFIER "%I32u" +#else +#if __WORDSIZE == 64 +#define AXIS2_PRINTF_INT64_FORMAT_SPECIFIER "%ld" +#define AXIS2_PRINTF_UINT64_FORMAT_SPECIFIER "%lu" +#else +#define AXIS2_PRINTF_INT64_FORMAT_SPECIFIER "%lld" +#define AXIS2_PRINTF_UINT64_FORMAT_SPECIFIER "%llu" +#endif +#define AXIS2_PRINTF_INT32_FORMAT_SPECIFIER "%d" +#define AXIS2_PRINTF_UINT32_FORMAT_SPECIFIER "%u" +#endif + + /** + * Type definitions + */ + typedef char axis2_char_t; + typedef int axis2_bool_t; + typedef int axis2_status_t; + typedef int axis2_scope_t; + typedef unsigned int axis2_ssize_t; + typedef char axis2_byte_t; + typedef unsigned char axis2_unsigned_byte_t; + +#define AXIS2_STRING(s) s + +#define AXIS2_CHAR(c) c + +#define AXIS2_CRLF_LENGTH 2 + +#define AXIS2_CRLF "\r\n" + + /* These constant definitions should later be moved to platform dependant + * files + */ + +#define AXIS2_EOLN '\0' + + /** + * Boolean values + */ +#define AXIS2_TRUE 1 +#define AXIS2_FALSE 0 + + /** + * Exporting + */ +#if defined(_WIN32) && !defined(AXIS2_DECLARE_STATIC) +#define AXIS2_EXPORT __declspec(dllexport) +#else +#define AXIS2_EXPORT +#endif + + /** + * Importing + */ +#if defined(_WIN32) +#define AXIS2_IMPORT __declspec(dllimport) +#else +#define AXIS2_IMPORT +#endif + + /** + * Calling Conventions + */ +#if defined(__GNUC__) +#if defined(__i386) +#define AXIS2_CALL __attribute__((cdecl)) +#define AXIS2_WUR __attribute__((warn_unused_result)) +#else +#define AXIS2_CALL +#define AXIS2_WUR + + +#endif +#else +#if defined(__unix) +#define AXIS2_CALL +#define AXIS2_WUR + + +#else /* WIN32 */ +#define AXIS2_CALL __stdcall +#define AXIS2_WUR +#endif +#endif +#define AXIS2_THREAD_FUNC AXIS2_CALL + + +#ifdef DOXYGEN + + /* define these just so doxygen documents them */ + + /** + * AXIS2_DECLARE_STATIC is defined when including Axis2's Core headers, + * to provide static linkage when the dynamic library may be unavailable. + * + * @see AXIS2_DECLARE_EXPORT + * + * AXIS2_DECLARE_STATIC and AXIS2_DECLARE_EXPORT are left undefined when + * including Axis2's Core headers, to import and link the symbols from the + * dynamic Axis2 Core library and assure appropriate indirection and calling + * conventions at compile time. + */ +# define AXIS2_DECLARE_STATIC + + /** + * AXIS2_DECLARE_EXPORT is defined when building the Axis2 Core dynamic + * library, so that all public symbols are exported. + * + * @see AXIS2_DECLARE_STATIC + */ +# define AXIS2_DECLARE_EXPORT + +#endif /* def DOXYGEN */ + +#if !defined(_WIN32) + + /** + * Axis2 Core functions are declared with AXIS2_EXTERN AXIS2_CALL + + , so they may + * use the most appropriate calling convention. Other + * Core functions with variable arguments must use AXIS2_DECLARE_NONSTD(). + * @code + * AXIS2_EXTERN rettype) axis2_func(args AXIS2_CALL + + + * @endcode + */ +#define AXIS2_EXTERN + + /** + * Axis2 Core variable argument and hook functions are declared with + * AXIS2_DECLARE_NONSTD(), as they must use the C language calling convention. + * @see AXIS2_DECLARE + * @code + * AXIS2_DECLARE_NONSTD(rettype) axis2_func(args [...]) + * @endcode + */ +#define AXIS2_DECLARE_NONSTD(type) type + + /** + * Axis2 Core variables are declared with AXIS2_DECLARE_DATA. + * This assures the appropriate indirection is invoked at compile time. + * + * @code + * AXIS2_DECLARE_DATA type axis2_variable + * @endcode + */ +#define AXIS2_DECLARE_DATA + +#elif defined(AXIS2_DECLARE_STATIC) +#define AXIS2_EXTERN +#define AXIS2_EXTERN_NONSTD +#define AXIS2_DECLARE_DATA +#elif defined(AXIS2_DECLARE_EXPORT) +#define AXIS2_EXTERN AXIS2_EXPORT +#define AXIS2_EXTERN_NONSTD AXIS2_EXPORT +#define AXIS2_DECLARE_DATA +#else +#define AXIS2_EXTERN AXIS2_IMPORT +#define AXIS2_EXTERN_NONSTD AXIS2_IMPORT +#define AXIS2_DECLARE_DATA +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* AXIS2_UTILS_DEFINES_H */ |