mirror of
https://git.osgeo.org/gitea/postgis/postgis
synced 2024-10-24 09:02:37 +00:00
8fea23dce8
git-svn-id: http://svn.osgeo.org/postgis/trunk@5821 b70326c6-7e19-0410-871a-916f4a2858ee
143 lines
3.4 KiB
C
143 lines
3.4 KiB
C
/*
|
|
* Written by Ralph Mason ralph.mason<at>telogis.com
|
|
*
|
|
* Copyright Telogis 2004
|
|
* www.telogis.com
|
|
*
|
|
*/
|
|
|
|
#ifndef _WKTPARSE_H
|
|
#define _WKTPARSE_H
|
|
|
|
#include <stdlib.h>
|
|
|
|
|
|
#ifndef _LIBLWGEOM_H
|
|
typedef unsigned char uchar;
|
|
|
|
typedef struct serialized_lwgeom
|
|
{
|
|
uchar *lwgeom;
|
|
int size;
|
|
}
|
|
SERIALIZED_LWGEOM;
|
|
|
|
typedef struct struct_lwgeom_parser_result
|
|
{
|
|
const char *wkinput;
|
|
SERIALIZED_LWGEOM *serialized_lwgeom;
|
|
int size;
|
|
const char *message;
|
|
int errlocation;
|
|
}
|
|
LWGEOM_PARSER_RESULT;
|
|
|
|
typedef struct struct_lwgeom_unparser_result
|
|
{
|
|
uchar *serialized_lwgeom;
|
|
char *wkoutput;
|
|
int size;
|
|
const char *message;
|
|
int errlocation;
|
|
}
|
|
LWGEOM_UNPARSER_RESULT;
|
|
#endif
|
|
|
|
typedef void* (*allocator)(size_t size);
|
|
typedef void (*freeor)(void* mem);
|
|
typedef void (*report_error)(const char* string, ...);
|
|
|
|
/*typedef unsigned long int4;*/
|
|
|
|
/* How much memory is allocated at a time(bytes) for tuples */
|
|
#define ALLOC_CHUNKS 8192
|
|
|
|
/* to shrink ints less than 0x7f to 1 byte */
|
|
/* #define SHRINK_INTS */
|
|
|
|
#define POINTTYPE 1
|
|
#define LINETYPE 2
|
|
#define POLYGONTYPE 3
|
|
#define MULTIPOINTTYPE 4
|
|
#define MULTILINETYPE 5
|
|
#define MULTIPOLYGONTYPE 6
|
|
#define COLLECTIONTYPE 7
|
|
#define CIRCSTRINGTYPE 8
|
|
#define COMPOUNDTYPE 9
|
|
#define CURVEPOLYTYPE 10
|
|
#define MULTICURVETYPE 11
|
|
#define MULTISURFACETYPE 12
|
|
#define POLYHEDRALSURFACETYPE 13
|
|
#define TRIANGLETYPE 14
|
|
#define TINTYPE 15
|
|
|
|
extern int srid;
|
|
|
|
/*
|
|
|
|
These functions are used by the
|
|
generated parser and are not meant
|
|
for public use
|
|
|
|
*/
|
|
|
|
void set_srid(double srid);
|
|
void alloc_lwgeom(int srid);
|
|
|
|
void alloc_point_2d(double x,double y);
|
|
void alloc_point_3d(double x,double y,double z);
|
|
void alloc_point_4d(double x,double y,double z,double m);
|
|
|
|
void alloc_point(void);
|
|
void alloc_linestring(void);
|
|
void alloc_linestring_closed(void);
|
|
void alloc_circularstring(void);
|
|
void alloc_circularstring_closed(void);
|
|
void alloc_polygon(void);
|
|
void alloc_polyring_counter(void);
|
|
void alloc_triangle(void);
|
|
void alloc_compoundcurve(void);
|
|
void alloc_compoundcurve_closed(void);
|
|
void alloc_curvepolygon(void);
|
|
void alloc_multipoint(void);
|
|
void alloc_multilinestring(void);
|
|
void alloc_multicurve(void);
|
|
void alloc_multipolygon(void);
|
|
void alloc_multisurface(void);
|
|
void alloc_polyhedralsurface(void);
|
|
void alloc_tin(void);
|
|
void alloc_geomertycollection(void);
|
|
void alloc_empty();
|
|
void alloc_counter(void);
|
|
|
|
void check_compoundcurve(void);
|
|
void check_linestring(void);
|
|
void check_polygon(void);
|
|
void check_triangle(void);
|
|
void check_curvepolygon(void);
|
|
void check_circularstring(void);
|
|
void check_closed_compoundcurve(void);
|
|
void check_closed_linestring(void);
|
|
void check_closed_circularstring(void);
|
|
void check_polyhedralsurface_patch(void);
|
|
|
|
void pop(void);
|
|
void popc(void);
|
|
|
|
void alloc_wkb(const char* parser);
|
|
|
|
/**
|
|
@file Use these functions to parse and unparse lwgeoms
|
|
You are responsible for freeing the returned memory.
|
|
*/
|
|
|
|
int parse_lwg(LWGEOM_PARSER_RESULT *lwg_parser_result, const char* wkt, int flags, allocator allocfunc,report_error errfunc);
|
|
int unparse_WKT(LWGEOM_UNPARSER_RESULT *lwg_unparser_result, uchar* serialized, allocator alloc, freeor free, int flags);
|
|
int unparse_WKB(LWGEOM_UNPARSER_RESULT *lwg_unparser_result, uchar* serialized, allocator alloc, freeor free, int flags, char endian, uchar hexform);
|
|
int lwg_parse_yyparse(void);
|
|
int lwg_parse_yyerror(char* s);
|
|
void lwg_parse_yynotice(char* s);
|
|
|
|
|
|
#endif /* _WKTPARSE_H */
|