void object::test<5>()
    {
        const char* mat = "012TF012F";

        char ret = GEOSRelatePatternMatch(mat, "TTTTFTTTF");
	ensure_equals(ret, char(1));

        ret = GEOSRelatePatternMatch(mat, "TT1TFTTTF");
	ensure_equals(ret, char(0));
    }
Datum ST_RelateMatch(PG_FUNCTION_ARGS)
{
#if POSTGIS_GEOS_VERSION < 33
    lwerror("The GEOS version this postgis binary "
            "was compiled against (%d) doesn't support "
            "'ST_RelateMatch' function (3.3.0+ required)",
            POSTGIS_GEOS_VERSION);
    PG_RETURN_NULL();
#else /* POSTGIS_GEOS_VERSION >= 33 */

    char *mat, *pat;
    text *mat_text, *pat_text;
    int result;

    /* Read the arguments */
    mat_text = (PG_GETARG_TEXT_P(0));
    pat_text = (PG_GETARG_TEXT_P(1));

    /* Convert from text to cstring */
    mat = text2cstring(mat_text);
    pat = text2cstring(pat_text);

    initGEOS(lwnotice, lwgeom_geos_error);

    result = GEOSRelatePatternMatch(mat, pat);
    if (result == 2)
    {
        lwfree(mat);
        lwfree(pat);
        lwerror("GEOSRelatePatternMatch: %s", lwgeom_geos_errmsg);
        PG_RETURN_NULL();
    }

    lwfree(mat);
    lwfree(pat);
    PG_RETURN_BOOL(result);

#endif /* POSTGIS_GEOS_VERSION >= 33 */

}
    void object::test<4>()
    {
        char ret = GEOSRelatePatternMatch("000000000", "FFFFFFFFF");
	ensure_equals(ret, char(0));
    }
    void object::test<2>()
    {
        char ret = GEOSRelatePatternMatch("000000000", "TTTTTTTTT");
	ensure_equals(ret, char(1));
    }