cannam@226: /* cannam@226: Copyright 2012 David Robillard cannam@226: cannam@226: Permission to use, copy, modify, and/or distribute this software for any cannam@226: purpose with or without fee is hereby granted, provided that the above cannam@226: copyright notice and this permission notice appear in all copies. cannam@226: cannam@226: THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES cannam@226: WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF cannam@226: MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR cannam@226: ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES cannam@226: WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN cannam@226: ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF cannam@226: OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. cannam@226: */ cannam@226: cannam@226: #ifndef ZIX_COMMON_H cannam@226: #define ZIX_COMMON_H cannam@226: cannam@226: /** cannam@226: @addtogroup zix cannam@226: @{ cannam@226: */ cannam@226: cannam@226: /** @cond */ cannam@226: #ifdef ZIX_SHARED cannam@226: # ifdef _WIN32 cannam@226: # define ZIX_LIB_IMPORT __declspec(dllimport) cannam@226: # define ZIX_LIB_EXPORT __declspec(dllexport) cannam@226: # else cannam@226: # define ZIX_LIB_IMPORT __attribute__((visibility("default"))) cannam@226: # define ZIX_LIB_EXPORT __attribute__((visibility("default"))) cannam@226: # endif cannam@226: # ifdef ZIX_INTERNAL cannam@226: # define ZIX_API ZIX_LIB_EXPORT cannam@226: # else cannam@226: # define ZIX_API ZIX_LIB_IMPORT cannam@226: # endif cannam@226: # define ZIX_PRIVATE static cannam@226: #elif defined(ZIX_INLINE) cannam@226: # define ZIX_API static inline cannam@226: # define ZIX_PRIVATE static inline cannam@226: #else cannam@226: # define ZIX_API cannam@226: # define ZIX_PRIVATE static cannam@226: #endif cannam@226: /** @endcond */ cannam@226: cannam@226: #ifdef __cplusplus cannam@226: extern "C" { cannam@226: #else cannam@226: # include cannam@226: #endif cannam@226: cannam@226: typedef enum { cannam@226: ZIX_STATUS_SUCCESS, cannam@226: ZIX_STATUS_ERROR, cannam@226: ZIX_STATUS_NO_MEM, cannam@226: ZIX_STATUS_NOT_FOUND, cannam@226: ZIX_STATUS_EXISTS, cannam@226: ZIX_STATUS_BAD_ARG, cannam@226: ZIX_STATUS_BAD_PERMS, cannam@226: } ZixStatus; cannam@226: cannam@226: /** cannam@226: Function for comparing two elements. cannam@226: */ cannam@226: typedef int (*ZixComparator)(const void* a, const void* b, void* user_data); cannam@226: cannam@226: /** cannam@226: Function for testing equality of two elements. cannam@226: */ cannam@226: typedef bool (*ZixEqualFunc)(const void* a, const void* b); cannam@226: cannam@226: /** cannam@226: Function to destroy an element. cannam@226: */ cannam@226: typedef void (*ZixDestroyFunc)(void* ptr); cannam@226: cannam@226: /** cannam@226: @} cannam@226: */ cannam@226: cannam@226: #ifdef __cplusplus cannam@226: } /* extern "C" */ cannam@226: #endif cannam@226: cannam@226: #endif /* ZIX_COMMON_H */