36 #include "../postgis_config.h"
58 #define LW_MSG_MAXLEN 256
104 void *ret = realloc(mem, size);
122 fprintf(stderr,
"%s\n", msg);
129 if ( POSTGIS_DEBUG_LEVEL >= level )
133 for ( i = 0; i < level; i++ )
137 fprintf(stderr,
"%s\n", msg);
147 fprintf(stderr,
"%s\n", msg);
184 (*lwnotice_var)(
fmt, ap);
197 (*lwerror_var)(
fmt, ap);
210 (*lwdebug_var)(level,
fmt, ap);
221 return "Invalid type";
237 memset(mem, 0, size);
256 size_t l = strlen(a)+1;
280 output =
lwalloc(maxlength + 4);
284 if (truncdirection == 0)
287 if (endpos - startpos < maxlength)
289 outstart =
str + startpos;
290 strncat(output, outstart, endpos - startpos + 1);
297 outstart =
str + endpos + 1 - maxlength + 3;
298 strncat(output,
"...", 4);
299 strncat(output, outstart, maxlength - 3);
304 strncat(output,
"...", 4);
310 if (truncdirection == 1)
313 if (endpos - startpos < maxlength)
315 outstart =
str + startpos;
316 strncat(output, outstart, endpos - startpos + 1);
323 outstart =
str + startpos;
324 strncat(output, outstart, maxlength - 3);
325 strncat(output,
"...", 4);
330 strncat(output,
"...", 4);
343 if ( newsrid <= 0 ) {
346 lwnotice(
"SRID value %d converted to the officially unknown SRID value %d", srid, newsrid);
353 lwnotice(
"SRID value %d > SRID_MAXIMUM converted to %d", srid, newsrid);
383 {
"GEOMETRYZM", 0, 1, 1 },
384 {
"GEOMETRYZ", 0, 1, 0 },
385 {
"GEOMETRYM", 0, 0, 1 },
386 {
"GEOMETRY", 0, 0, 0 },
459 #define GEOMTYPE_STRUCT_ARRAY_LEN (sizeof geomtype_struct_array/sizeof(struct geomtype_struct))
468 const char dumb_upper_map[128] =
"................................................0123456789.......ABCDEFGHIJKLMNOPQRSTUVWXYZ......ABCDEFGHIJKLMNOPQRSTUVWXYZ.....";
472 if ( in < 0 || in > 127 )
498 size_t tmpstartpos, tmpendpos;
513 for (i = 0; i < strlen(
str); i++)
522 tmpendpos = strlen(
str) - 1;
523 for (i = strlen(
str) - 1; i != 0; i--)
533 tmpstr =
lwalloc(tmpendpos - tmpstartpos + 2);
534 for (i = tmpstartpos; i <= tmpendpos; i++)
538 tmpstr[i - tmpstartpos] =
'\0';
void(*) typedef void(* lwdebuglogger)(int level, const char *fmt, va_list ap) __attribute__((format(printf
void(* lwfreeor)(void *mem)
#define SRID_USER_MAXIMUM
Maximum valid SRID value for the user We reserve 1000 values for internal use.
#define POINTTYPE
LWTYPE numbers, used internally by PostGIS.
#define SRID_MAXIMUM
Maximum allowed SRID value in serialized geometry.
void(* lwreporter)(const char *fmt, va_list ap) __attribute__((format(printf
#define POLYHEDRALSURFACETYPE
void *(* lwreallocator)(void *mem, size_t size)
void *(* lwallocator)(size_t size)
Global functions for memory/logging handlers.
#define FLAGS_SET_GEODETIC(flags, value)
#define FLAGS_SET_M(flags, value)
#define SRID_UNKNOWN
Unknown SRID value.
#define FLAGS_SET_Z(flags, value)
char * lwstrdup(const char *a)
static void static void lwreporter lwnotice_var
static char dumb_toupper(int in)
void * lwalloc0(size_t size)
static char * lwgeomTypeName[]
void lwgeom_set_debuglogger(lwdebuglogger debuglogger)
void lwerror(const char *fmt,...)
void lwnotice(const char *fmt,...)
char * lwmessage_truncate(char *str, int startpos, int endpos, int maxlength, int truncdirection)
static void * default_allocator(size_t size)
static void lwdebuglogger lwdebug_var
int geometry_type_from_string(const char *str, uint8_t *type, int *z, int *m)
Calculate type integer and dimensional flags from string input.
const char dumb_upper_map[128]
static void * default_reallocator(void *mem, size_t size)
void * lwrealloc(void *mem, size_t size)
static void default_debuglogger(int level, const char *fmt, va_list ap) __attribute__((format(printf
const char * lwtype_name(uint8_t type)
Return the type name string associated with a type number (e.g.
void lwgeom_set_handlers(lwallocator allocator, lwreallocator reallocator, lwfreeor freeor, lwreporter errorreporter, lwreporter noticereporter)
This function is called by programs which want to set up custom handling for memory management and er...
#define GEOMTYPE_STRUCT_ARRAY_LEN
void * lwalloc(size_t size)
static void static void default_errorreporter(const char *fmt, va_list ap) __attribute__((format(printf
lwflags_t lwflags(int hasz, int hasm, int geodetic)
Construct a new flags bitmask.
void lwdebug(int level, const char *fmt,...)
static void default_freeor(void *mem)
lwreallocator lwrealloc_var
struct geomtype_struct geomtype_struct_array[]
int32_t clamp_srid(int32_t srid)
Return a valid SRID from an arbitrary integer Raises a notice if what comes out is different from wha...
static void default_noticereporter(const char *fmt, va_list ap) __attribute__((format(printf