PostGIS 3.7.0dev-r@@SVN_REVISION@@
Loading...
Searching...
No Matches
lwgeom_geos_relatematch.c
Go to the documentation of this file.
1/**********************************************************************
2 *
3 * PostGIS - Spatial Types for PostgreSQL
4 * http://postgis.net
5 *
6 * PostGIS is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * PostGIS is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with PostGIS. If not, see <http://www.gnu.org/licenses/>.
18 *
19 **********************************************************************
20 *
21 * Copyright (C) 2010 Sandro Santilli <strk@kbt.io>
22 *
23 **********************************************************************/
24
25
26#include "postgres.h"
27#include "fmgr.h"
28#include "funcapi.h"
29#include "utils/builtins.h"
30
31#include "../postgis_config.h"
32#include "lwgeom_geos.h"
33#include "lwgeom_pg.h"
34
35#include <string.h>
36#include <assert.h>
37
38/* #define POSTGIS_DEBUG_LEVEL 4 */
39
40Datum ST_RelateMatch(PG_FUNCTION_ARGS);
42Datum ST_RelateMatch(PG_FUNCTION_ARGS)
43{
44 char *mat, *pat;
45 text *mat_text, *pat_text;
46 int result;
47
48 /* Read the arguments */
49 mat_text = (PG_GETARG_TEXT_P(0));
50 pat_text = (PG_GETARG_TEXT_P(1));
51
52 /* Convert from text to cstring */
53 mat = text_to_cstring(mat_text);
54 pat = text_to_cstring(pat_text);
55
56 initGEOS(lwpgnotice, lwgeom_geos_error);
57
58 result = GEOSRelatePatternMatch(mat, pat);
59 if (result == 2)
60 {
61 lwfree(mat); lwfree(pat);
62 lwpgerror("GEOSRelatePatternMatch: %s", lwgeom_geos_errmsg);
63 PG_RETURN_NULL();
64 }
65
66 lwfree(mat); lwfree(pat);
67 PG_RETURN_BOOL(result);
68}
69
char result[OUT_DOUBLE_BUFFER_SIZE]
Definition cu_print.c:267
char lwgeom_geos_errmsg[LWGEOM_GEOS_ERRMSG_MAXSIZE]
void lwgeom_geos_error(const char *fmt,...)
void lwfree(void *mem)
Definition lwutil.c:248
Datum ST_RelateMatch(PG_FUNCTION_ARGS)
PG_FUNCTION_INFO_V1(ST_RelateMatch)