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))),