#include <stdint.h>
-#ifndef _ZONEDETECT_H_
-#define _ZONEDETECT_H_
+#ifndef INCL_ZONEDETECT_H_
+#define INCL_ZONEDETECT_H_
-typedef enum {
+#if !defined(ZD_EXPORT)
+#if defined(_MSC_VER)
+#define ZD_EXPORT __declspec(dllimport)
+#else
+#define ZD_EXPORT
+#endif
+#endif
+
+enum ZDLookupResult {
ZD_LOOKUP_IGNORE = -3,
ZD_LOOKUP_END = -2,
ZD_LOOKUP_PARSE_ERROR = -1,
ZD_LOOKUP_IN_EXCLUDED_ZONE = 2,
ZD_LOOKUP_ON_BORDER_VERTEX = 3,
ZD_LOOKUP_ON_BORDER_SEGMENT = 4
-} ZDLookupResult;
+};
-typedef struct {
+struct ZoneDetectResult {
ZDLookupResult lookupResult;
+ uint32_t polygonId;
uint32_t metaId;
uint8_t numFields;
- char** fieldNames;
- char** data;
-} ZoneDetectResult;
+ char **fieldNames;
+ char **data;
+};
-struct ZoneDetectOpaque;
-typedef struct ZoneDetectOpaque ZoneDetect;
+struct ZoneDetect;
#ifdef __cplusplus
extern "C" {
#endif
-ZoneDetect* ZDOpenDatabase(const char* path);
-void ZDCloseDatabase(ZoneDetect* library);
+ZD_EXPORT ZoneDetect *ZDOpenDatabase(const char *path);
+ZD_EXPORT ZoneDetect *ZDOpenDatabaseFromMemory(void* buffer, size_t length);
+ZD_EXPORT void ZDCloseDatabase(ZoneDetect *library);
+
+ZD_EXPORT ZoneDetectResult *ZDLookup(const ZoneDetect *library, float lat, float lon, float *safezone);
+ZD_EXPORT void ZDFreeResults(ZoneDetectResult *results);
-ZoneDetectResult* ZDLookup(ZoneDetect* library, float lat, float lon, float* safezone);
-void ZDFreeResults(ZoneDetectResult* results);
+ZD_EXPORT const char *ZDGetNotice(const ZoneDetect *library);
+ZD_EXPORT uint8_t ZDGetTableType(const ZoneDetect *library);
+ZD_EXPORT const char *ZDLookupResultToString(ZDLookupResult result);
-const char* ZDGetNotice(ZoneDetect* library);
-uint8_t ZDGetTableType(ZoneDetect* library);
-const char* ZDLookupResultToString(ZDLookupResult result);
+ZD_EXPORT int ZDSetErrorHandler(void (*handler)(int, int));
+ZD_EXPORT const char *ZDGetErrorString(int errZD);
+
+ZD_EXPORT float* ZDPolygonToList(const ZoneDetect *library, uint32_t polygonId, size_t* length);
+
+ZD_EXPORT char* ZDHelperSimpleLookupString(const ZoneDetect* library, float lat, float lon);
#ifdef __cplusplus
}
#endif
-#endif
+#endif // INCL_ZONEDETECT_H_