14a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/*---------------------------------------------------------------------------* 24a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * PortExport.h * 34a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * * 44a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Copyright 2007, 2008 Nuance Communciations, Inc. * 54a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * * 64a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the 'License'); * 74a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * you may not use this file except in compliance with the License. * 84a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * * 94a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * You may obtain a copy of the License at * 104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 * 114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * * 124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Unless required by applicable law or agreed to in writing, software * 134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * distributed under the License is distributed on an 'AS IS' BASIS, * 144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * 154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * See the License for the specific language governing permissions and * 164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * limitations under the License. * 174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * * 184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *---------------------------------------------------------------------------*/ 194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#ifndef __PORT_EXPORT_H 214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define __PORT_EXPORT_H 224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/* (1) Platform specific macro which handles symbol exports & imports.*/ 264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/* These macros are used if defining DLL import/export in the source file 284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * rather than through a .def file. */ 294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @addtogroup ESR_PortableModule ESR_Portable API functions 324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * 334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @{ 344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#ifndef DOXYGEN_SHOULD_SKIP_THIS 374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#ifdef _WIN32 394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#ifndef HAS_INLINE 414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define HAS_INLINE 424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#endif 434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#ifdef __cplusplus 454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define PORT_EXPORT_DECL extern "C" __declspec(dllexport) 474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define PORT_IMPORT_DECL extern "C" __declspec(dllimport) 484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#else /* not __cplusplus */ 504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define PORT_EXPORT_DECL __declspec(dllexport) 524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define PORT_IMPORT_DECL __declspec(dllimport) 534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#endif /* __cplusplus */ 544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#else /* not _WIN32 */ 564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#ifdef __cplusplus 584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define PORT_EXPORT_DECL extern "C" 594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define PORT_IMPORT_DECL extern "C" 604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#else 614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define PORT_EXPORT_DECL extern 624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define PORT_IMPORT_DECL extern 634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#endif /* __cplusplus */ 644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#endif /* _WIN32 */ 664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#if !defined(PORT_EXPORT_DECL) || !defined(PORT_IMPORT_DECL) 684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#error Symbol import/export pair not defined. 694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#endif 704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#endif /* DOXYGEN_SHOULD_SKIP_THIS */ 724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/* If using a .def file on win32, use these macros. */ 744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#ifdef __cplusplus 754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Exports C-style symbols; avoids name-mangling. 784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define EXTERN extern "C" 804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#else 814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project* Exports C-style symbols; avoids name-mangling. 844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project*/ 854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define EXTERN extern 864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#endif 874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#ifdef __cplusplus 894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Portable 'inline' keyword 924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define PINLINE inline 944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#elif defined(_WIN32) 954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project* Portable 'inline' keyword 984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project*/ 994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define PINLINE _inline 1004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#elif defined(__GNUC__) 1014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 1034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project* Portable 'inline' keyword 1044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project*/ 1054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#ifdef __vxworks 1064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define PINLINE __inline__ 1074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#else 1084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define PINLINE __inline__ 1094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#endif 1104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#elif !defined(PINLINE) 1124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 1144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project* Portable 'inline' keyword 1154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project*/ 1164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define PINLINE 1174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#endif 1184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 120f09d1b6f7933065cd6102d968f108048c002a3aaAl Sutton * inlining causes problems for the Xcode 4.3 and 4.4 command line tools, 121f09d1b6f7933065cd6102d968f108048c002a3aaAl Sutton * so this is needed to ensure the methods aren't inlined on those compilers 122f09d1b6f7933065cd6102d968f108048c002a3aaAl Sutton */ 123f09d1b6f7933065cd6102d968f108048c002a3aaAl Sutton 124f09d1b6f7933065cd6102d968f108048c002a3aaAl Sutton#if defined(__APPLE_CC__) 125f09d1b6f7933065cd6102d968f108048c002a3aaAl Sutton#if __APPLE_CC__ >= 5621 126f09d1b6f7933065cd6102d968f108048c002a3aaAl Sutton#undef PINLINE 127f09d1b6f7933065cd6102d968f108048c002a3aaAl Sutton#define PINLINE 128f09d1b6f7933065cd6102d968f108048c002a3aaAl Sutton#endif 129f09d1b6f7933065cd6102d968f108048c002a3aaAl Sutton#endif 130f09d1b6f7933065cd6102d968f108048c002a3aaAl Sutton 131f09d1b6f7933065cd6102d968f108048c002a3aaAl Sutton/** 1324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @} 1334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 1344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#endif 136