GEOS 3.2.1
|
00001 /************************************************************************ 00002 * 00003 * $Id: geos_c.h.in 2830 2009-12-14 19:21:40Z pramsey $ 00004 * 00005 * C-Wrapper for GEOS library 00006 * 00007 * Copyright (C) 2005 Refractions Research Inc. 00008 * 00009 * This is free software; you can redistribute and/or modify it under 00010 * the terms of the GNU Lesser General Public Licence as published 00011 * by the Free Software Foundation. 00012 * See the COPYING file for more information. 00013 * 00014 * Author: Sandro Santilli <strk@refractions.net> 00015 * 00016 *********************************************************************** 00017 * 00018 * GENERAL NOTES: 00019 * 00020 * - Remember to call initGEOS() before any use of this library's 00021 * functions, and call finishGEOS() when done. 00022 * 00023 * - Currently you have to explicitly GEOSGeom_destroy() all 00024 * GEOSGeom objects to avoid memory leaks, and to GEOSFree() 00025 * all returned char * (unless const). 00026 * 00027 ***********************************************************************/ 00028 00029 #ifndef GEOS_C_H_INCLUDED 00030 #define GEOS_C_H_INCLUDED 00031 00032 #ifndef __cplusplus 00033 # include <stddef.h> /* for size_t definition */ 00034 #else 00035 # include <cstddef> 00036 using std::size_t; 00037 #endif 00038 00039 #ifdef __cplusplus 00040 extern "C" { 00041 #endif 00042 00043 /************************************************************************ 00044 * 00045 * Version 00046 * 00047 ***********************************************************************/ 00048 00049 /* 00050 * Following 'ifdef' hack fixes problem with generating geos_c.h on Windows, 00051 * when building with Visual C++ compiler. 00052 * 00053 */ 00054 #if defined(_MSC_VER) 00055 #include <geos/version.h> 00056 #define GEOS_CAPI_VERSION_MAJOR 1 00057 #define GEOS_CAPI_VERSION_MINOR 6 00058 #define GEOS_CAPI_VERSION_PATCH 1 00059 #define GEOS_CAPI_VERSION "3.2.1-CAPI-1.6.1" 00060 #else 00061 #ifndef GEOS_VERSION_MAJOR 00062 #define GEOS_VERSION_MAJOR 3 00063 #endif 00064 #ifndef GEOS_VERSION_MINOR 00065 #define GEOS_VERSION_MINOR 2 00066 #endif 00067 #ifndef GEOS_VERSION_PATCH 00068 #define GEOS_VERSION_PATCH 1 00069 #endif 00070 #ifndef GEOS_VERSION 00071 #define GEOS_VERSION "3.2.1" 00072 #endif 00073 #ifndef GEOS_JTS_PORT 00074 #define GEOS_JTS_PORT "1.10.0" 00075 #endif 00076 00077 #define GEOS_CAPI_VERSION_MAJOR 1 00078 #define GEOS_CAPI_VERSION_MINOR 6 00079 #define GEOS_CAPI_VERSION_PATCH 1 00080 #define GEOS_CAPI_VERSION "3.2.1-CAPI-1.6.1" 00081 #endif 00082 00083 #define GEOS_CAPI_FIRST_INTERFACE GEOS_CAPI_VERSION_MAJOR 00084 #define GEOS_CAPI_LAST_INTERFACE (GEOS_CAPI_VERSION_MAJOR+GEOS_CAPI_VERSION_MINOR) 00085 00086 /************************************************************************ 00087 * 00088 * (Abstract) type definitions 00089 * 00090 ************************************************************************/ 00091 00092 typedef void (*GEOSMessageHandler)(const char *fmt, ...); 00093 00094 /* When we're included by geos_c.cpp, those are #defined to the original 00095 * JTS definitions via preprocessor. We don't touch them to allow the 00096 * compiler to cross-check the declarations. However, for all "normal" 00097 * C-API users, we need to define them as "opaque" struct pointers, as 00098 * those clients don't have access to the original C++ headers, by design. 00099 */ 00100 #ifndef GEOSGeometry 00101 typedef struct GEOSGeom_t GEOSGeometry; 00102 typedef struct GEOSPrepGeom_t GEOSPreparedGeometry; 00103 typedef struct GEOSCoordSeq_t GEOSCoordSequence; 00104 typedef struct GEOSSTRtree_t GEOSSTRtree; 00105 #endif 00106 00107 /* Those are compatibility definitions for source compatibility 00108 * with GEOS 2.X clients relying on that type. 00109 */ 00110 typedef GEOSGeometry* GEOSGeom; 00111 typedef GEOSCoordSequence* GEOSCoordSeq; 00112 00113 /* Supported geometry types 00114 * This was renamed from GEOSGeomTypeId in GEOS 2.2.X, which might 00115 * break compatibility, this issue is still under investigation. 00116 */ 00117 00118 enum GEOSGeomTypes { 00119 GEOS_POINT, 00120 GEOS_LINESTRING, 00121 GEOS_LINEARRING, 00122 GEOS_POLYGON, 00123 GEOS_MULTIPOINT, 00124 GEOS_MULTILINESTRING, 00125 GEOS_MULTIPOLYGON, 00126 GEOS_GEOMETRYCOLLECTION 00127 }; 00128 00129 /* Byte oders exposed via the c api */ 00130 enum GEOSByteOrders { 00131 GEOS_WKB_XDR = 0, /* Big Endian */ 00132 GEOS_WKB_NDR = 1 /* Little Endian */ 00133 }; 00134 00135 typedef struct GEOSContextHandle_HS *GEOSContextHandle_t; 00136 00137 typedef void (*GEOSQueryCallback)(void *item, void *userdata); 00138 00139 /************************************************************************ 00140 * 00141 * Initialization, cleanup, version 00142 * 00143 ***********************************************************************/ 00144 00145 #include <geos/export.h> 00146 00147 extern void GEOS_DLL initGEOS(GEOSMessageHandler notice_function, 00148 GEOSMessageHandler error_function); 00149 extern void GEOS_DLL finishGEOS(void); 00150 00151 extern GEOSContextHandle_t GEOS_DLL initGEOS_r( 00152 GEOSMessageHandler notice_function, 00153 GEOSMessageHandler error_function); 00154 extern void GEOS_DLL finishGEOS_r(GEOSContextHandle_t handle); 00155 00156 extern const char GEOS_DLL *GEOSversion(); 00157 00158 00159 /************************************************************************ 00160 * 00161 * NOTE - These functions are DEPRECATED. Please use the new Reader and 00162 * writer APIS! 00163 * 00164 ***********************************************************************/ 00165 00166 extern GEOSGeometry GEOS_DLL *GEOSGeomFromWKT(const char *wkt); 00167 extern char GEOS_DLL *GEOSGeomToWKT(const GEOSGeometry* g); 00168 00169 extern GEOSGeometry GEOS_DLL *GEOSGeomFromWKT_r(GEOSContextHandle_t handle, 00170 const char *wkt); 00171 extern char GEOS_DLL *GEOSGeomToWKT_r(GEOSContextHandle_t handle, 00172 const GEOSGeometry* g); 00173 00174 /* 00175 * Specify whether output WKB should be 2d or 3d. 00176 * Return previously set number of dimensions. 00177 */ 00178 extern int GEOS_DLL GEOS_getWKBOutputDims(); 00179 extern int GEOS_DLL GEOS_setWKBOutputDims(int newDims); 00180 00181 extern int GEOS_DLL GEOS_getWKBOutputDims_r(GEOSContextHandle_t handle); 00182 extern int GEOS_DLL GEOS_setWKBOutputDims_r(GEOSContextHandle_t handle, 00183 int newDims); 00184 00185 /* 00186 * Specify whether the WKB byte order is big or little endian. 00187 * The return value is the previous byte order. 00188 */ 00189 extern int GEOS_DLL GEOS_getWKBByteOrder(); 00190 extern int GEOS_DLL GEOS_setWKBByteOrder(int byteOrder); 00191 00192 extern GEOSGeometry GEOS_DLL *GEOSGeomFromWKB_buf(const unsigned char *wkb, size_t size); 00193 extern unsigned char GEOS_DLL *GEOSGeomToWKB_buf(const GEOSGeometry* g, size_t *size); 00194 00195 extern GEOSGeometry GEOS_DLL *GEOSGeomFromHEX_buf(const unsigned char *hex, size_t size); 00196 extern unsigned char GEOS_DLL *GEOSGeomToHEX_buf(const GEOSGeometry* g, size_t *size); 00197 00198 extern int GEOS_DLL GEOS_getWKBByteOrder_r(GEOSContextHandle_t handle); 00199 extern int GEOS_DLL GEOS_setWKBByteOrder_r(GEOSContextHandle_t handle, 00200 int byteOrder); 00201 00202 extern GEOSGeometry GEOS_DLL *GEOSGeomFromWKB_buf_r(GEOSContextHandle_t handle, 00203 const unsigned char *wkb, 00204 size_t size); 00205 extern unsigned char GEOS_DLL *GEOSGeomToWKB_buf_r(GEOSContextHandle_t handle, 00206 const GEOSGeometry* g, 00207 size_t *size); 00208 00209 extern GEOSGeometry GEOS_DLL *GEOSGeomFromHEX_buf_r(GEOSContextHandle_t handle, 00210 const unsigned char *hex, 00211 size_t size); 00212 extern unsigned char GEOS_DLL *GEOSGeomToHEX_buf_r(GEOSContextHandle_t handle, 00213 const GEOSGeometry* g, 00214 size_t *size); 00215 00216 /************************************************************************ 00217 * 00218 * Coordinate Sequence functions 00219 * 00220 ***********************************************************************/ 00221 00222 /* 00223 * Create a Coordinate sequence with ``size'' coordinates 00224 * of ``dims'' dimensions. 00225 * Return NULL on exception. 00226 */ 00227 extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_create(unsigned int size, unsigned int dims); 00228 00229 extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_create_r( 00230 GEOSContextHandle_t handle, 00231 unsigned int size, 00232 unsigned int dims); 00233 00234 /* 00235 * Clone a Coordinate Sequence. 00236 * Return NULL on exception. 00237 */ 00238 extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_clone(const GEOSCoordSequence* s); 00239 00240 extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_clone_r( 00241 GEOSContextHandle_t handle, 00242 const GEOSCoordSequence* s); 00243 00244 /* 00245 * Destroy a Coordinate Sequence. 00246 */ 00247 extern void GEOS_DLL GEOSCoordSeq_destroy(GEOSCoordSequence* s); 00248 00249 extern void GEOS_DLL GEOSCoordSeq_destroy_r(GEOSContextHandle_t handle, 00250 GEOSCoordSequence* s); 00251 00252 /* 00253 * Set ordinate values in a Coordinate Sequence. 00254 * Return 0 on exception. 00255 */ 00256 extern int GEOS_DLL GEOSCoordSeq_setX(GEOSCoordSequence* s, 00257 unsigned int idx, double val); 00258 extern int GEOS_DLL GEOSCoordSeq_setY(GEOSCoordSequence* s, 00259 unsigned int idx, double val); 00260 extern int GEOS_DLL GEOSCoordSeq_setZ(GEOSCoordSequence* s, 00261 unsigned int idx, double val); 00262 extern int GEOS_DLL GEOSCoordSeq_setOrdinate(GEOSCoordSequence* s, 00263 unsigned int idx, unsigned int dim, double val); 00264 00265 extern int GEOS_DLL GEOSCoordSeq_setX_r(GEOSContextHandle_t handle, 00266 GEOSCoordSequence* s, unsigned int idx, 00267 double val); 00268 extern int GEOS_DLL GEOSCoordSeq_setY_r(GEOSContextHandle_t handle, 00269 GEOSCoordSequence* s, unsigned int idx, 00270 double val); 00271 extern int GEOS_DLL GEOSCoordSeq_setZ_r(GEOSContextHandle_t handle, 00272 GEOSCoordSequence* s, unsigned int idx, 00273 double val); 00274 extern int GEOS_DLL GEOSCoordSeq_setOrdinate_r(GEOSContextHandle_t handle, 00275 GEOSCoordSequence* s, 00276 unsigned int idx, 00277 unsigned int dim, double val); 00278 00279 /* 00280 * Get ordinate values from a Coordinate Sequence. 00281 * Return 0 on exception. 00282 */ 00283 extern int GEOS_DLL GEOSCoordSeq_getX(const GEOSCoordSequence* s, 00284 unsigned int idx, double *val); 00285 extern int GEOS_DLL GEOSCoordSeq_getY(const GEOSCoordSequence* s, 00286 unsigned int idx, double *val); 00287 extern int GEOS_DLL GEOSCoordSeq_getZ(const GEOSCoordSequence* s, 00288 unsigned int idx, double *val); 00289 extern int GEOS_DLL GEOSCoordSeq_getOrdinate(const GEOSCoordSequence* s, 00290 unsigned int idx, unsigned int dim, double *val); 00291 00292 extern int GEOS_DLL GEOSCoordSeq_getX_r(GEOSContextHandle_t handle, 00293 const GEOSCoordSequence* s, 00294 unsigned int idx, double *val); 00295 extern int GEOS_DLL GEOSCoordSeq_getY_r(GEOSContextHandle_t handle, 00296 const GEOSCoordSequence* s, 00297 unsigned int idx, double *val); 00298 extern int GEOS_DLL GEOSCoordSeq_getZ_r(GEOSContextHandle_t handle, 00299 const GEOSCoordSequence* s, 00300 unsigned int idx, double *val); 00301 extern int GEOS_DLL GEOSCoordSeq_getOrdinate_r(GEOSContextHandle_t handle, 00302 const GEOSCoordSequence* s, 00303 unsigned int idx, 00304 unsigned int dim, double *val); 00305 /* 00306 * Get size and dimensions info from a Coordinate Sequence. 00307 * Return 0 on exception. 00308 */ 00309 extern int GEOS_DLL GEOSCoordSeq_getSize(const GEOSCoordSequence* s, 00310 unsigned int *size); 00311 extern int GEOS_DLL GEOSCoordSeq_getDimensions(const GEOSCoordSequence* s, 00312 unsigned int *dims); 00313 00314 extern int GEOS_DLL GEOSCoordSeq_getSize_r(GEOSContextHandle_t handle, 00315 const GEOSCoordSequence* s, 00316 unsigned int *size); 00317 extern int GEOS_DLL GEOSCoordSeq_getDimensions_r(GEOSContextHandle_t handle, 00318 const GEOSCoordSequence* s, 00319 unsigned int *dims); 00320 00321 /************************************************************************ 00322 * 00323 * Linearref functions -- there are more, but these two are probably 00324 * sufficient for most purposes 00325 * 00326 ***********************************************************************/ 00327 00328 /* 00329 * GEOSGeometry ownership is retained by caller 00330 */ 00331 00332 00333 extern double GEOS_DLL GEOSProject(const GEOSGeometry *g, 00334 const GEOSGeometry* p); 00335 extern double GEOS_DLL GEOSProject_r(GEOSContextHandle_t handle, 00336 const GEOSGeometry *g, 00337 const GEOSGeometry *p); 00338 00339 extern GEOSGeometry GEOS_DLL *GEOSInterpolate(const GEOSGeometry *g, 00340 double d); 00341 extern GEOSGeometry GEOS_DLL *GEOSInterpolate_r(GEOSContextHandle_t handle, 00342 const GEOSGeometry *g, 00343 double d); 00344 00345 extern double GEOS_DLL GEOSProjectNormalized(const GEOSGeometry *g, 00346 const GEOSGeometry* p); 00347 extern double GEOS_DLL GEOSProjectNormalized_r(GEOSContextHandle_t handle, 00348 const GEOSGeometry *g, 00349 const GEOSGeometry *p); 00350 00351 extern GEOSGeometry GEOS_DLL *GEOSInterpolateNormalized(const GEOSGeometry *g, 00352 double d); 00353 extern GEOSGeometry GEOS_DLL *GEOSInterpolateNormalized_r( 00354 GEOSContextHandle_t handle, 00355 const GEOSGeometry *g, 00356 double d); 00357 00358 /************************************************************************ 00359 * 00360 * Buffer related functions 00361 * 00362 ***********************************************************************/ 00363 00364 enum GEOSBufCapStyles { 00365 GEOSBUF_CAP_ROUND=1, 00366 GEOSBUF_CAP_FLAT=2, 00367 GEOSBUF_CAP_SQUARE=3 00368 }; 00369 00370 enum GEOSBufJoinStyles { 00371 GEOSBUF_JOIN_ROUND=1, 00372 GEOSBUF_JOIN_MITRE=2, 00373 GEOSBUF_JOIN_BEVEL=3 00374 }; 00375 00376 /* These functions return NULL on exception. */ 00377 extern GEOSGeometry GEOS_DLL *GEOSBuffer(const GEOSGeometry* g1, 00378 double width, int quadsegs); 00379 extern GEOSGeometry GEOS_DLL *GEOSBuffer_r(GEOSContextHandle_t handle, 00380 const GEOSGeometry* g1, 00381 double width, int quadsegs); 00382 00383 /* These functions return NULL on exception. */ 00384 extern GEOSGeometry GEOS_DLL *GEOSBufferWithStyle(const GEOSGeometry* g1, 00385 double width, int quadsegs, int endCapStyle, int joinStyle, 00386 double mitreLimit); 00387 extern GEOSGeometry GEOS_DLL *GEOSBufferWithStyle_r(GEOSContextHandle_t handle, 00388 const GEOSGeometry* g1, double width, int quadsegs, int endCapStyle, 00389 int joinStyle, double mitreLimit); 00390 00391 /* These functions return NULL on exception. Only LINESTRINGs are accepted. */ 00392 extern GEOSGeometry GEOS_DLL *GEOSSingleSidedBuffer(const GEOSGeometry* g1, 00393 double width, int quadsegs, int joinStyle, double mitreLimit, 00394 int leftSide); 00395 extern GEOSGeometry GEOS_DLL *GEOSSingleSidedBuffer_r( 00396 GEOSContextHandle_t handle, 00397 const GEOSGeometry* g1, double width, int quadsegs, 00398 int joinStyle, double mitreLimit, int leftSide); 00399 00400 00401 /************************************************************************ 00402 * 00403 * Geometry Constructors. 00404 * GEOSCoordSequence* arguments will become ownership of the returned object. 00405 * All functions return NULL on exception. 00406 * 00407 ***********************************************************************/ 00408 00409 extern GEOSGeometry GEOS_DLL *GEOSGeom_createPoint(GEOSCoordSequence* s); 00410 extern GEOSGeometry GEOS_DLL *GEOSGeom_createLinearRing(GEOSCoordSequence* s); 00411 extern GEOSGeometry GEOS_DLL *GEOSGeom_createLineString(GEOSCoordSequence* s); 00412 00413 extern GEOSGeometry GEOS_DLL *GEOSGeom_createPoint_r( 00414 GEOSContextHandle_t handle, 00415 GEOSCoordSequence* s); 00416 extern GEOSGeometry GEOS_DLL *GEOSGeom_createLinearRing_r( 00417 GEOSContextHandle_t handle, 00418 GEOSCoordSequence* s); 00419 extern GEOSGeometry GEOS_DLL *GEOSGeom_createLineString_r( 00420 GEOSContextHandle_t handle, 00421 GEOSCoordSequence* s); 00422 00423 /* 00424 * Second argument is an array of GEOSGeometry* objects. 00425 * The caller remains owner of the array, but pointed-to 00426 * objects become ownership of the returned GEOSGeometry. 00427 */ 00428 extern GEOSGeometry GEOS_DLL *GEOSGeom_createPolygon(GEOSGeometry* shell, 00429 GEOSGeometry** holes, unsigned int nholes); 00430 extern GEOSGeometry GEOS_DLL *GEOSGeom_createCollection(int type, 00431 GEOSGeometry* *geoms, unsigned int ngeoms); 00432 00433 extern GEOSGeometry GEOS_DLL *GEOSGeom_createPolygon_r( 00434 GEOSContextHandle_t handle, 00435 GEOSGeometry* shell, 00436 GEOSGeometry** holes, 00437 unsigned int nholes); 00438 extern GEOSGeometry GEOS_DLL *GEOSGeom_createCollection_r( 00439 GEOSContextHandle_t handle, int type, 00440 GEOSGeometry* *geoms, 00441 unsigned int ngeoms); 00442 00443 extern GEOSGeometry GEOS_DLL *GEOSGeom_clone(const GEOSGeometry* g); 00444 00445 extern GEOSGeometry GEOS_DLL *GEOSGeom_clone_r(GEOSContextHandle_t handle, 00446 const GEOSGeometry* g); 00447 00448 /************************************************************************ 00449 * 00450 * Memory management 00451 * 00452 ***********************************************************************/ 00453 00454 extern void GEOS_DLL GEOSGeom_destroy(GEOSGeometry* g); 00455 00456 extern void GEOS_DLL GEOSGeom_destroy_r(GEOSContextHandle_t handle, 00457 GEOSGeometry* g); 00458 00459 /************************************************************************ 00460 * 00461 * Topology operations - return NULL on exception. 00462 * 00463 ***********************************************************************/ 00464 00465 extern GEOSGeometry GEOS_DLL *GEOSEnvelope(const GEOSGeometry* g1); 00466 extern GEOSGeometry GEOS_DLL *GEOSIntersection(const GEOSGeometry* g1, const GEOSGeometry* g2); 00467 extern GEOSGeometry GEOS_DLL *GEOSConvexHull(const GEOSGeometry* g1); 00468 extern GEOSGeometry GEOS_DLL *GEOSDifference(const GEOSGeometry* g1, const GEOSGeometry* g2); 00469 extern GEOSGeometry GEOS_DLL *GEOSSymDifference(const GEOSGeometry* g1, 00470 const GEOSGeometry* g2); 00471 extern GEOSGeometry GEOS_DLL *GEOSBoundary(const GEOSGeometry* g1); 00472 extern GEOSGeometry GEOS_DLL *GEOSUnion(const GEOSGeometry* g1, const GEOSGeometry* g2); 00473 extern GEOSGeometry GEOS_DLL *GEOSUnionCascaded(const GEOSGeometry* g1); 00474 00475 extern GEOSGeometry GEOS_DLL *GEOSPointOnSurface(const GEOSGeometry* g1); 00476 extern GEOSGeometry GEOS_DLL *GEOSGetCentroid(const GEOSGeometry* g); 00477 extern char GEOS_DLL *GEOSRelate(const GEOSGeometry* g1, const GEOSGeometry* g2); 00478 00479 extern GEOSGeometry GEOS_DLL *GEOSEnvelope_r(GEOSContextHandle_t handle, 00480 const GEOSGeometry* g1); 00481 extern GEOSGeometry GEOS_DLL *GEOSIntersection_r(GEOSContextHandle_t handle, 00482 const GEOSGeometry* g1, 00483 const GEOSGeometry* g2); 00484 extern GEOSGeometry GEOS_DLL *GEOSConvexHull_r(GEOSContextHandle_t handle, 00485 const GEOSGeometry* g1); 00486 extern GEOSGeometry GEOS_DLL *GEOSDifference_r(GEOSContextHandle_t handle, 00487 const GEOSGeometry* g1, 00488 const GEOSGeometry* g2); 00489 extern GEOSGeometry GEOS_DLL *GEOSSymDifference_r(GEOSContextHandle_t handle, 00490 const GEOSGeometry* g1, 00491 const GEOSGeometry* g2); 00492 extern GEOSGeometry GEOS_DLL *GEOSBoundary_r(GEOSContextHandle_t handle, 00493 const GEOSGeometry* g1); 00494 extern GEOSGeometry GEOS_DLL *GEOSUnion_r(GEOSContextHandle_t handle, 00495 const GEOSGeometry* g1, 00496 const GEOSGeometry* g2); 00497 extern GEOSGeometry GEOS_DLL *GEOSUnionCascaded_r(GEOSContextHandle_t handle, const GEOSGeometry* g1); 00498 extern GEOSGeometry GEOS_DLL *GEOSPointOnSurface_r(GEOSContextHandle_t handle, 00499 const GEOSGeometry* g1); 00500 extern GEOSGeometry GEOS_DLL *GEOSGetCentroid_r(GEOSContextHandle_t handle, 00501 const GEOSGeometry* g); 00502 extern char GEOS_DLL *GEOSRelate_r(GEOSContextHandle_t handle, 00503 const GEOSGeometry* g1, 00504 const GEOSGeometry* g2); 00505 00506 /* 00507 * all arguments remain ownership of the caller 00508 * (both Geometries and pointers) 00509 */ 00510 extern GEOSGeometry GEOS_DLL *GEOSPolygonize(const GEOSGeometry * const geoms[], unsigned int ngeoms); 00511 extern GEOSGeometry GEOS_DLL *GEOSPolygonizer_getCutEdges(const GEOSGeometry * const geoms[], unsigned int ngeoms); 00512 00513 extern GEOSGeometry GEOS_DLL *GEOSLineMerge(const GEOSGeometry* g); 00514 extern GEOSGeometry GEOS_DLL *GEOSSimplify(const GEOSGeometry* g1, double tolerance); 00515 extern GEOSGeometry GEOS_DLL *GEOSTopologyPreserveSimplify(const GEOSGeometry* g1, 00516 double tolerance); 00517 00518 extern GEOSGeometry GEOS_DLL *GEOSPolygonize_r(GEOSContextHandle_t handle, 00519 const GEOSGeometry *const geoms[], 00520 unsigned int ngeoms); 00521 extern GEOSGeometry GEOS_DLL *GEOSPolygonizer_getCutEdges_r( 00522 GEOSContextHandle_t handle, 00523 const GEOSGeometry * const geoms[], 00524 unsigned int ngeoms); 00525 00526 extern GEOSGeometry GEOS_DLL *GEOSLineMerge_r(GEOSContextHandle_t handle, 00527 const GEOSGeometry* g); 00528 extern GEOSGeometry GEOS_DLL *GEOSSimplify_r(GEOSContextHandle_t handle, 00529 const GEOSGeometry* g1, 00530 double tolerance); 00531 extern GEOSGeometry GEOS_DLL *GEOSTopologyPreserveSimplify_r( 00532 GEOSContextHandle_t handle, 00533 const GEOSGeometry* g1, double tolerance); 00534 00535 /************************************************************************ 00536 * 00537 * Binary predicates - return 2 on exception, 1 on true, 0 on false 00538 * 00539 ***********************************************************************/ 00540 00541 extern char GEOS_DLL GEOSRelatePattern(const GEOSGeometry* g1, const GEOSGeometry* g2, 00542 const char *pat); 00543 extern char GEOS_DLL GEOSDisjoint(const GEOSGeometry* g1, const GEOSGeometry* g2); 00544 extern char GEOS_DLL GEOSTouches(const GEOSGeometry* g1, const GEOSGeometry* g2); 00545 extern char GEOS_DLL GEOSIntersects(const GEOSGeometry* g1, const GEOSGeometry* g2); 00546 extern char GEOS_DLL GEOSCrosses(const GEOSGeometry* g1, const GEOSGeometry* g2); 00547 extern char GEOS_DLL GEOSWithin(const GEOSGeometry* g1, const GEOSGeometry* g2); 00548 extern char GEOS_DLL GEOSContains(const GEOSGeometry* g1, const GEOSGeometry* g2); 00549 extern char GEOS_DLL GEOSOverlaps(const GEOSGeometry* g1, const GEOSGeometry* g2); 00550 extern char GEOS_DLL GEOSEquals(const GEOSGeometry* g1, const GEOSGeometry* g2); 00551 extern char GEOS_DLL GEOSEqualsExact(const GEOSGeometry* g1, const GEOSGeometry* g2, double tolerance); 00552 00553 extern char GEOS_DLL GEOSRelatePattern_r(GEOSContextHandle_t handle, 00554 const GEOSGeometry* g1, 00555 const GEOSGeometry* g2, 00556 const char *pat); 00557 extern char GEOS_DLL GEOSDisjoint_r(GEOSContextHandle_t handle, 00558 const GEOSGeometry* g1, 00559 const GEOSGeometry* g2); 00560 extern char GEOS_DLL GEOSTouches_r(GEOSContextHandle_t handle, 00561 const GEOSGeometry* g1, 00562 const GEOSGeometry* g2); 00563 extern char GEOS_DLL GEOSIntersects_r(GEOSContextHandle_t handle, 00564 const GEOSGeometry* g1, 00565 const GEOSGeometry* g2); 00566 extern char GEOS_DLL GEOSCrosses_r(GEOSContextHandle_t handle, 00567 const GEOSGeometry* g1, 00568 const GEOSGeometry* g2); 00569 extern char GEOS_DLL GEOSWithin_r(GEOSContextHandle_t handle, 00570 const GEOSGeometry* g1, 00571 const GEOSGeometry* g2); 00572 extern char GEOS_DLL GEOSContains_r(GEOSContextHandle_t handle, 00573 const GEOSGeometry* g1, 00574 const GEOSGeometry* g2); 00575 extern char GEOS_DLL GEOSOverlaps_r(GEOSContextHandle_t handle, 00576 const GEOSGeometry* g1, 00577 const GEOSGeometry* g2); 00578 extern char GEOS_DLL GEOSEquals_r(GEOSContextHandle_t handle, 00579 const GEOSGeometry* g1, 00580 const GEOSGeometry* g2); 00581 extern char GEOS_DLL GEOSEqualsExact_r(GEOSContextHandle_t handle, 00582 const GEOSGeometry* g1, 00583 const GEOSGeometry* g2, 00584 double tolerance); 00585 00586 /************************************************************************ 00587 * 00588 * Prepared Geometry Binary predicates - return 2 on exception, 1 on true, 0 on false 00589 * 00590 ***********************************************************************/ 00591 00592 /* 00593 * GEOSGeometry ownership is retained by caller 00594 */ 00595 extern const GEOSPreparedGeometry GEOS_DLL *GEOSPrepare(const GEOSGeometry* g); 00596 00597 extern void GEOS_DLL GEOSPreparedGeom_destroy(const GEOSPreparedGeometry* g); 00598 00599 extern char GEOS_DLL GEOSPreparedContains(const GEOSPreparedGeometry* pg1, const GEOSGeometry* g2); 00600 extern char GEOS_DLL GEOSPreparedContainsProperly(const GEOSPreparedGeometry* pg1, const GEOSGeometry* g2); 00601 extern char GEOS_DLL GEOSPreparedCovers(const GEOSPreparedGeometry* pg1, const GEOSGeometry* g2); 00602 extern char GEOS_DLL GEOSPreparedIntersects(const GEOSPreparedGeometry* pg1, const GEOSGeometry* g2); 00603 00604 /* 00605 * GEOSGeometry ownership is retained by caller 00606 */ 00607 extern const GEOSPreparedGeometry GEOS_DLL *GEOSPrepare_r( 00608 GEOSContextHandle_t handle, 00609 const GEOSGeometry* g); 00610 00611 extern void GEOS_DLL GEOSPreparedGeom_destroy_r(GEOSContextHandle_t handle, 00612 const GEOSPreparedGeometry* g); 00613 00614 extern char GEOS_DLL GEOSPreparedContains_r(GEOSContextHandle_t handle, 00615 const GEOSPreparedGeometry* pg1, 00616 const GEOSGeometry* g2); 00617 extern char GEOS_DLL GEOSPreparedContainsProperly_r(GEOSContextHandle_t handle, 00618 const GEOSPreparedGeometry* pg1, 00619 const GEOSGeometry* g2); 00620 extern char GEOS_DLL GEOSPreparedCovers_r(GEOSContextHandle_t handle, 00621 const GEOSPreparedGeometry* pg1, 00622 const GEOSGeometry* g2); 00623 extern char GEOS_DLL GEOSPreparedIntersects_r(GEOSContextHandle_t handle, 00624 const GEOSPreparedGeometry* pg1, 00625 const GEOSGeometry* g2); 00626 00627 /************************************************************************ 00628 * 00629 * STRtree functions 00630 * 00631 ***********************************************************************/ 00632 00633 /* 00634 * GEOSGeometry ownership is retained by caller 00635 */ 00636 00637 extern GEOSSTRtree GEOS_DLL *GEOSSTRtree_create(size_t nodeCapacity); 00638 extern void GEOS_DLL GEOSSTRtree_insert(GEOSSTRtree *tree, 00639 const GEOSGeometry *g, 00640 void *item); 00641 extern void GEOS_DLL GEOSSTRtree_query(GEOSSTRtree *tree, 00642 const GEOSGeometry *g, 00643 GEOSQueryCallback callback, 00644 void *userdata); 00645 extern void GEOS_DLL GEOSSTRtree_iterate(GEOSSTRtree *tree, 00646 GEOSQueryCallback callback, 00647 void *userdata); 00648 extern char GEOS_DLL GEOSSTRtree_remove(GEOSSTRtree *tree, 00649 const GEOSGeometry *g, 00650 void *item); 00651 extern void GEOS_DLL GEOSSTRtree_destroy(GEOSSTRtree *tree); 00652 00653 00654 extern GEOSSTRtree GEOS_DLL *GEOSSTRtree_create_r( 00655 GEOSContextHandle_t handle, 00656 size_t nodeCapacity); 00657 extern void GEOS_DLL GEOSSTRtree_insert_r(GEOSContextHandle_t handle, 00658 GEOSSTRtree *tree, 00659 const GEOSGeometry *g, 00660 void *item); 00661 extern void GEOS_DLL GEOSSTRtree_query_r(GEOSContextHandle_t handle, 00662 GEOSSTRtree *tree, 00663 const GEOSGeometry *g, 00664 GEOSQueryCallback callback, 00665 void *userdata); 00666 extern void GEOS_DLL GEOSSTRtree_iterate_r(GEOSContextHandle_t handle, 00667 GEOSSTRtree *tree, 00668 GEOSQueryCallback callback, 00669 void *userdata); 00670 extern char GEOS_DLL GEOSSTRtree_remove_r(GEOSContextHandle_t handle, 00671 GEOSSTRtree *tree, 00672 const GEOSGeometry *g, 00673 void *item); 00674 extern void GEOS_DLL GEOSSTRtree_destroy_r(GEOSContextHandle_t handle, 00675 GEOSSTRtree *tree); 00676 00677 00678 /************************************************************************ 00679 * 00680 * Unary predicate - return 2 on exception, 1 on true, 0 on false 00681 * 00682 ***********************************************************************/ 00683 00684 extern char GEOS_DLL GEOSisEmpty(const GEOSGeometry* g1); 00685 extern char GEOS_DLL GEOSisValid(const GEOSGeometry* g1); 00686 extern char GEOS_DLL *GEOSisValidReason(const GEOSGeometry *g1); 00687 extern char GEOS_DLL GEOSisSimple(const GEOSGeometry* g1); 00688 extern char GEOS_DLL GEOSisRing(const GEOSGeometry* g1); 00689 extern char GEOS_DLL GEOSHasZ(const GEOSGeometry* g1); 00690 00691 extern char GEOS_DLL GEOSisEmpty_r(GEOSContextHandle_t handle, 00692 const GEOSGeometry* g1); 00693 extern char GEOS_DLL GEOSisValid_r(GEOSContextHandle_t handle, 00694 const GEOSGeometry* g1); 00695 extern char GEOS_DLL *GEOSisValidReason_r(GEOSContextHandle_t handle, 00696 const GEOSGeometry* g1); 00697 extern char GEOS_DLL GEOSisSimple_r(GEOSContextHandle_t handle, 00698 const GEOSGeometry* g1); 00699 extern char GEOS_DLL GEOSisRing_r(GEOSContextHandle_t handle, 00700 const GEOSGeometry* g1); 00701 extern char GEOS_DLL GEOSHasZ_r(GEOSContextHandle_t handle, 00702 const GEOSGeometry* g1); 00703 00704 /************************************************************************ 00705 * 00706 * Geometry info 00707 * 00708 ***********************************************************************/ 00709 00710 /* Return NULL on exception, result must be freed by caller. */ 00711 extern char GEOS_DLL *GEOSGeomType(const GEOSGeometry* g1); 00712 00713 extern char GEOS_DLL *GEOSGeomType_r(GEOSContextHandle_t handle, 00714 const GEOSGeometry* g1); 00715 00716 /* Return -1 on exception */ 00717 extern int GEOS_DLL GEOSGeomTypeId(const GEOSGeometry* g1); 00718 00719 extern int GEOS_DLL GEOSGeomTypeId_r(GEOSContextHandle_t handle, 00720 const GEOSGeometry* g1); 00721 00722 /* Return 0 on exception */ 00723 extern int GEOS_DLL GEOSGetSRID(const GEOSGeometry* g); 00724 extern int GEOS_DLL GEOSGetSRID_r(GEOSContextHandle_t handle, 00725 const GEOSGeometry* g); 00726 00727 extern void GEOS_DLL GEOSSetSRID(GEOSGeometry* g, int SRID); 00728 extern void GEOS_DLL GEOSSetSRID_r(GEOSContextHandle_t handle, 00729 GEOSGeometry* g, int SRID); 00730 00731 /* May be called on all geometries in GEOS 3.x, returns -1 on error and 1 00732 * for non-multi geometries. Older GEOS versions only accept 00733 * GeometryCollections or Multi* geometries here, and are likely to crash 00734 * when feeded simple geometries, so beware if you need compatibility with 00735 * old GEOS versions. 00736 */ 00737 extern int GEOS_DLL GEOSGetNumGeometries(const GEOSGeometry* g); 00738 00739 extern int GEOS_DLL GEOSGetNumGeometries_r(GEOSContextHandle_t handle, 00740 const GEOSGeometry* g); 00741 00742 /* 00743 * Return NULL on exception, Geometry must be a Collection. 00744 * Returned object is a pointer to internal storage: 00745 * it must NOT be destroyed directly. 00746 */ 00747 extern const GEOSGeometry GEOS_DLL *GEOSGetGeometryN(const GEOSGeometry* g, int n); 00748 00749 extern const GEOSGeometry GEOS_DLL *GEOSGetGeometryN_r( 00750 GEOSContextHandle_t handle, 00751 const GEOSGeometry* g, int n); 00752 00753 /* Return -1 on exception */ 00754 extern int GEOS_DLL GEOSNormalize(GEOSGeometry* g1); 00755 00756 extern int GEOS_DLL GEOSNormalize_r(GEOSContextHandle_t handle, 00757 GEOSGeometry* g1); 00758 00759 /* Return -1 on exception */ 00760 extern int GEOS_DLL GEOSGetNumInteriorRings(const GEOSGeometry* g1); 00761 00762 extern int GEOS_DLL GEOSGetNumInteriorRings_r(GEOSContextHandle_t handle, 00763 const GEOSGeometry* g1); 00764 00765 /* 00766 * Return NULL on exception, Geometry must be a Polygon. 00767 * Returned object is a pointer to internal storage: 00768 * it must NOT be destroyed directly. 00769 */ 00770 extern const GEOSGeometry GEOS_DLL *GEOSGetInteriorRingN(const GEOSGeometry* g, int n); 00771 00772 extern const GEOSGeometry GEOS_DLL *GEOSGetInteriorRingN_r( 00773 GEOSContextHandle_t handle, 00774 const GEOSGeometry* g, int n); 00775 00776 /* 00777 * Return NULL on exception, Geometry must be a Polygon. 00778 * Returned object is a pointer to internal storage: 00779 * it must NOT be destroyed directly. 00780 */ 00781 extern const GEOSGeometry GEOS_DLL *GEOSGetExteriorRing(const GEOSGeometry* g); 00782 00783 extern const GEOSGeometry GEOS_DLL *GEOSGetExteriorRing_r( 00784 GEOSContextHandle_t handle, 00785 const GEOSGeometry* g); 00786 00787 /* Return -1 on exception */ 00788 extern int GEOS_DLL GEOSGetNumCoordinates(const GEOSGeometry* g1); 00789 00790 extern int GEOS_DLL GEOSGetNumCoordinates_r(GEOSContextHandle_t handle, 00791 const GEOSGeometry* g1); 00792 00793 /* 00794 * Return NULL on exception. 00795 * Geometry must be a LineString, LinearRing or Point. 00796 */ 00797 extern const GEOSCoordSequence GEOS_DLL *GEOSGeom_getCoordSeq(const GEOSGeometry* g); 00798 00799 extern const GEOSCoordSequence GEOS_DLL *GEOSGeom_getCoordSeq_r( 00800 GEOSContextHandle_t handle, 00801 const GEOSGeometry* g); 00802 00803 /* 00804 * Return 0 on exception (or empty geometry) 00805 * See also GEOSCoordSeq_getDimensions 00806 */ 00807 extern int GEOS_DLL GEOSGeom_getDimensions(const GEOSGeometry* g); 00808 00809 extern int GEOS_DLL GEOSGeom_getDimensions_r(GEOSContextHandle_t handle, 00810 const GEOSGeometry* g); 00811 00812 /************************************************************************ 00813 * 00814 * Misc functions 00815 * 00816 ***********************************************************************/ 00817 00818 /* Return 0 on exception, 1 otherwise */ 00819 extern int GEOS_DLL GEOSArea(const GEOSGeometry* g1, double *area); 00820 extern int GEOS_DLL GEOSLength(const GEOSGeometry* g1, double *length); 00821 extern int GEOS_DLL GEOSDistance(const GEOSGeometry* g1, const GEOSGeometry* g2, 00822 double *dist); 00823 extern int GEOS_DLL GEOSHausdorffDistance(const GEOSGeometry *g1, 00824 const GEOSGeometry *g2, double *dist); 00825 extern int GEOS_DLL GEOSHausdorffDistanceDensify(const GEOSGeometry *g1, 00826 const GEOSGeometry *g2, double densifyFrac, double *dist); 00827 extern int GEOS_DLL GEOSArea_r(GEOSContextHandle_t handle, 00828 const GEOSGeometry* g1, double *area); 00829 extern int GEOS_DLL GEOSLength_r(GEOSContextHandle_t handle, 00830 const GEOSGeometry* g1, double *length); 00831 extern int GEOS_DLL GEOSDistance_r(GEOSContextHandle_t handle, 00832 const GEOSGeometry* g1, 00833 const GEOSGeometry* g2, double *dist); 00834 extern int GEOS_DLL GEOSHausdorffDistance_r(GEOSContextHandle_t handle, 00835 const GEOSGeometry *g1, 00836 const GEOSGeometry *g2, 00837 double *dist); 00838 extern int GEOS_DLL GEOSHausdorffDistanceDensify_r(GEOSContextHandle_t handle, 00839 const GEOSGeometry *g1, 00840 const GEOSGeometry *g2, 00841 double densifyFrac, double *dist); 00842 00843 00844 /************************************************************************ 00845 * 00846 * Reader and Writer APIs 00847 * 00848 ***********************************************************************/ 00849 00850 typedef struct GEOSWKTReader_t GEOSWKTReader; 00851 typedef struct GEOSWKTWriter_t GEOSWKTWriter; 00852 typedef struct GEOSWKBReader_t GEOSWKBReader; 00853 typedef struct GEOSWKBWriter_t GEOSWKBWriter; 00854 00855 00856 /* WKT Reader */ 00857 extern GEOSWKTReader GEOS_DLL *GEOSWKTReader_create(); 00858 extern void GEOS_DLL GEOSWKTReader_destroy(GEOSWKTReader* reader); 00859 extern GEOSGeometry GEOS_DLL *GEOSWKTReader_read(GEOSWKTReader* reader, const char *wkt); 00860 00861 extern GEOSWKTReader GEOS_DLL *GEOSWKTReader_create_r( 00862 GEOSContextHandle_t handle); 00863 extern void GEOS_DLL GEOSWKTReader_destroy_r(GEOSContextHandle_t handle, 00864 GEOSWKTReader* reader); 00865 extern GEOSGeometry GEOS_DLL *GEOSWKTReader_read_r(GEOSContextHandle_t handle, 00866 GEOSWKTReader* reader, 00867 const char *wkt); 00868 00869 /* WKT Writer */ 00870 extern GEOSWKTWriter GEOS_DLL *GEOSWKTWriter_create(); 00871 extern void GEOS_DLL GEOSWKTWriter_destroy(GEOSWKTWriter* writer); 00872 extern char GEOS_DLL *GEOSWKTWriter_write(GEOSWKTWriter* reader, const GEOSGeometry* g); 00873 00874 extern GEOSWKTWriter GEOS_DLL *GEOSWKTWriter_create_r( 00875 GEOSContextHandle_t handle); 00876 extern void GEOS_DLL GEOSWKTWriter_destroy_r(GEOSContextHandle_t handle, 00877 GEOSWKTWriter* writer); 00878 extern char GEOS_DLL *GEOSWKTWriter_write_r(GEOSContextHandle_t handle, 00879 GEOSWKTWriter* reader, 00880 const GEOSGeometry* g); 00881 00882 /* WKB Reader */ 00883 extern GEOSWKBReader GEOS_DLL *GEOSWKBReader_create(); 00884 extern void GEOS_DLL GEOSWKBReader_destroy(GEOSWKBReader* reader); 00885 extern GEOSGeometry GEOS_DLL *GEOSWKBReader_read(GEOSWKBReader* reader, const unsigned char *wkb, size_t size); 00886 extern GEOSGeometry GEOS_DLL *GEOSWKBReader_readHEX(GEOSWKBReader* reader, const unsigned char *hex, size_t size); 00887 00888 extern GEOSWKBReader GEOS_DLL *GEOSWKBReader_create_r( 00889 GEOSContextHandle_t handle); 00890 extern void GEOS_DLL GEOSWKBReader_destroy_r(GEOSContextHandle_t handle, 00891 GEOSWKBReader* reader); 00892 extern GEOSGeometry GEOS_DLL *GEOSWKBReader_read_r(GEOSContextHandle_t handle, 00893 GEOSWKBReader* reader, 00894 const unsigned char *wkb, 00895 size_t size); 00896 extern GEOSGeometry GEOS_DLL *GEOSWKBReader_readHEX_r( 00897 GEOSContextHandle_t handle, 00898 GEOSWKBReader* reader, 00899 const unsigned char *hex, 00900 size_t size); 00901 00902 /* WKB Writer */ 00903 extern GEOSWKBWriter GEOS_DLL *GEOSWKBWriter_create(); 00904 extern void GEOS_DLL GEOSWKBWriter_destroy(GEOSWKBWriter* writer); 00905 00906 extern GEOSWKBWriter GEOS_DLL *GEOSWKBWriter_create_r( 00907 GEOSContextHandle_t handle); 00908 extern void GEOS_DLL GEOSWKBWriter_destroy_r(GEOSContextHandle_t handle, 00909 GEOSWKBWriter* writer); 00910 00911 /* The caller owns the results for these two methods! */ 00912 extern unsigned char GEOS_DLL *GEOSWKBWriter_write(GEOSWKBWriter* writer, const GEOSGeometry* g, size_t *size); 00913 extern unsigned char GEOS_DLL *GEOSWKBWriter_writeHEX(GEOSWKBWriter* writer, const GEOSGeometry* g, size_t *size); 00914 00915 extern unsigned char GEOS_DLL *GEOSWKBWriter_write_r( 00916 GEOSContextHandle_t handle, 00917 GEOSWKBWriter* writer, 00918 const GEOSGeometry* g, 00919 size_t *size); 00920 extern unsigned char GEOS_DLL *GEOSWKBWriter_writeHEX_r( 00921 GEOSContextHandle_t handle, 00922 GEOSWKBWriter* writer, 00923 const GEOSGeometry* g, 00924 size_t *size); 00925 00926 /* 00927 * Specify whether output WKB should be 2d or 3d. 00928 * Return previously set number of dimensions. 00929 */ 00930 extern int GEOS_DLL GEOSWKBWriter_getOutputDimension(const GEOSWKBWriter* writer); 00931 extern void GEOS_DLL GEOSWKBWriter_setOutputDimension(GEOSWKBWriter* writer, int newDimension); 00932 00933 extern int GEOS_DLL GEOSWKBWriter_getOutputDimension_r( 00934 GEOSContextHandle_t handle, 00935 const GEOSWKBWriter* writer); 00936 extern void GEOS_DLL GEOSWKBWriter_setOutputDimension_r( 00937 GEOSContextHandle_t handle, 00938 GEOSWKBWriter* writer, int newDimension); 00939 00940 /* 00941 * Specify whether the WKB byte order is big or little endian. 00942 * The return value is the previous byte order. 00943 */ 00944 extern int GEOS_DLL GEOSWKBWriter_getByteOrder(const GEOSWKBWriter* writer); 00945 extern void GEOS_DLL GEOSWKBWriter_setByteOrder(GEOSWKBWriter* writer, int byteOrder); 00946 00947 extern int GEOS_DLL GEOSWKBWriter_getByteOrder_r(GEOSContextHandle_t handle, 00948 const GEOSWKBWriter* writer); 00949 extern void GEOS_DLL GEOSWKBWriter_setByteOrder_r(GEOSContextHandle_t handle, 00950 GEOSWKBWriter* writer, 00951 int byteOrder); 00952 00953 /* 00954 * Specify whether SRID values should be output. 00955 */ 00956 extern char GEOS_DLL GEOSWKBWriter_getIncludeSRID(const GEOSWKBWriter* writer); 00957 extern void GEOS_DLL GEOSWKBWriter_setIncludeSRID(GEOSWKBWriter* writer, const char writeSRID); 00958 00959 extern char GEOS_DLL GEOSWKBWriter_getIncludeSRID_r(GEOSContextHandle_t handle, 00960 const GEOSWKBWriter* writer); 00961 extern void GEOS_DLL GEOSWKBWriter_setIncludeSRID_r(GEOSContextHandle_t handle, 00962 GEOSWKBWriter* writer, const char writeSRID); 00963 00964 00965 /* 00966 * Free buffers returned by stuff like GEOSWKBWriter_write(), 00967 * GEOSWKBWriter_writeHEX() and GEOSWKTWriter_write(). 00968 */ 00969 extern void GEOS_DLL GEOSFree( void *buffer ); 00970 extern void GEOS_DLL GEOSFree_r( GEOSContextHandle_t handle, void *buffer ); 00971 00972 #ifdef __cplusplus 00973 } // extern "C" 00974 #endif 00975 00976 #endif /* #ifndef GEOS_C_H_INCLUDED */