Mercurial > hg > MonetDB-extend
diff regexp/regexp.c @ 40:e70b12c15507
Updated for Oct2020 version.
author | Sjoerd Mullender <sjoerd@acm.org> |
---|---|
date | Tue, 08 Jun 2021 14:55:38 +0200 (2021-06-08) |
parents | 4633ab41de55 |
children | da896864dbbd |
line wrap: on
line diff
--- a/regexp/regexp.c Tue Jun 08 11:58:34 2021 +0200 +++ b/regexp/regexp.c Tue Jun 08 14:55:38 2021 +0200 @@ -20,25 +20,6 @@ /* we use the PCRE library to do regular expression matching */ #include <pcre.h> -/* __declspec() must be used on Windows, but not on other systems */ -#ifndef _MSC_VER -/* not Windows */ -#define __declspec(x) /* nothing */ -#endif - -/* these eight functions are the only externally visible functions - * since they are the only ones that are called from the MAL layer; on - * Windows they must be exported, on other systems, declaring them as - * extern is enough */ -extern __declspec(dllexport) char *regexpmatch(bit *ret, const char **val, const char **pat); -extern __declspec(dllexport) char *regexpmatchf(bit *ret, const char **val, const char **pat, const char **flags); -extern __declspec(dllexport) char *regexpmatchselect(bat *ret, const bat *bid, const bat *sid, const char **pat, const bit *anti); -extern __declspec(dllexport) char *regexpmatchfselect(bat *ret, const bat *bid, const bat *sid, const char **pat, const char **flags, const bit *anti); -extern __declspec(dllexport) char *regexpmatchjoin(bat *lres, bat *rres, const bat *lid, const bat *rid, const bat *sl, const bat *sr, const bit *nil_matches, const lng *estimate); -extern __declspec(dllexport) char *regexpmatchfjoin(bat *lres, bat *rres, const bat *lid, const bat *rid, const char **flags, const bat *sl, const bat *sr, const bit *nil_matches, const lng *estimate); -extern __declspec(dllexport) char *regexpmatchbulk(bat *ret, const bat *bid, const char **pat); -extern __declspec(dllexport) char *regexpmatchfbulk(bat *ret, const bat *bid, const char **pat, const char **flags); - static int parseflags(const char *flags) { @@ -101,13 +82,13 @@ return MAL_SUCCEED; } -char * +static char * regexpmatch(bit *ret, const char **val, const char **pat) { return do_match(ret, *val, *pat, ""); } -char * +static char * regexpmatchf(bit *ret, const char **val, const char **pat, const char **flags) { return do_match(ret, *val, *pat, *flags); @@ -257,14 +238,14 @@ return MAL_SUCCEED; } -char * +static char * regexpmatchbulk(bat *ret, const bat *bid, const char **pat) { return do_matchbulk(ret, *bid, *pat, ""); } -char * +static char * regexpmatchfbulk(bat *ret, const bat *bid, const char **pat, const char **flags) { return do_matchbulk(ret, *bid, *pat, *flags); @@ -457,14 +438,14 @@ return MAL_SUCCEED; } -char * +static char * regexpmatchselect(bat *ret, const bat *bid, const bat *sid, const char **pat, const bit *anti) { return do_select(ret, *bid, sid ? *sid : 0, *pat, "", *anti); } -char * +static char * regexpmatchfselect(bat *ret, const bat *bid, const bat *sid, const char **pat, const char **flags, const bit *anti) { return do_select(ret, *bid, sid ? *sid : 0, *pat, *flags, *anti); @@ -661,7 +642,7 @@ throw(MAL, "pcre.rematchjoin", GDK_EXCEPTION); } -char * +static char * regexpmatchjoin(bat *lres, bat *rres, const bat *lid, const bat *rid, const bat *sl, const bat *sr, const bit *nil_matches, const lng *estimate) @@ -670,7 +651,7 @@ *nil_matches, *estimate); } -char * +static char * regexpmatchfjoin(bat *lres, bat *rres, const bat *lid, const bat *rid, const char **flags, const bat *sl, const bat *sr, const bit *nil_matches, const lng *estimate) @@ -681,7 +662,10 @@ #include "mel.h" -static char regexp_sql[] = "CREATE FILTER FUNCTION rematch(val STRING, pat STRING) EXTERNAL NAME regexp.rematch; CREATE FILTER FUNCTION rematch(val STRING, pat STRING, flags STRING) EXTERNAL NAME regexp.rematch;"; +static char regexp_sql[] = "CREATE FILTER FUNCTION rematch(val STRING, pat STRING)" + " EXTERNAL NAME regexp.rematch; " + "CREATE FILTER FUNCTION rematch(val STRING, pat STRING, flags STRING)" + " EXTERNAL NAME regexp.rematch;"; static mel_func regexp_init_funcs[] = { command("regexp", "rematch", regexpmatch, false, @@ -689,10 +673,13 @@ args(1,3, arg("",bit),arg("val",str),arg("pat",str))), command("regexp", "rematchselect", regexpmatchselect, false, "Return the list of matches in 'val' that match the regular expression 'pat'", - args(1,5, batarg("",oid),batarg("val",str),batarg("cand",oid),arg("pat",str),arg("anti",bit))), + args(1,5, batarg("",oid),batarg("val",str),batarg("s",oid),arg("pat",str),arg("anti",bit))), command("regexp", "rematchjoin", regexpmatchjoin, false, "Return the matching pairs from the 'val' and 'pat' columns", args(2,8, batarg("lr",oid),batarg("rr",oid),batarg("val",str),batarg("pat",str),batarg("sl",oid),batarg("sr",oid),arg("nil_matches",bit),arg("estimate",lng))), + command("batregexp", "rematch", regexpmatchbulk, false, + "Return a BAT with true for match and false for no match", + args(1,3, batarg("",bit),batarg("val",str),arg("pat",str))), command("regexp", "rematch", regexpmatchf, false, "Return true when the value 'val' matches the regular expression 'pat'", args(1,4, arg("",bit),arg("val",str),arg("pat",str),arg("flags",str))), @@ -702,9 +689,6 @@ command("regexp", "rematchjoin", regexpmatchfjoin, false, "Return the matching pairs from the 'val' and 'pat'\ncolumns", args(2,9, batarg("lr",oid),batarg("rr",oid),batarg("val",str),batarg("pat",str),arg("flags",str),batarg("sl",oid),batarg("sr",oid),arg("nil_matches",bit),arg("estimate",lng))), - command("batregexp", "rematch", regexpmatchbulk, false, - "Return a BAT with true for match and false for no match", - args(1,3, batarg("",bit),batarg("val",str),arg("pat",str))), command("batregexp", "rematch", regexpmatchfbulk, false, "Return a BAT with true for match and false for no match", args(1,4, batarg("",bit),batarg("val",str),arg("pat",str),arg("flags",str))),