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