Changeset: b8caf66f8efd for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=b8caf66f8efd
Modified Files:
        clients/Tests/exports.stable.out
        gdk/gdk.h
        testing/listexports.py.in
Branch: Oct2014
Log Message:

By doing C preprocessor-like trickery, extract more exported functions.
Also removed declaration of exported BATcount since it doesn't exist
and also breaks the trickery.


diffs (194 lines):

diff --git a/clients/Tests/exports.stable.out b/clients/Tests/exports.stable.out
--- a/clients/Tests/exports.stable.out
+++ b/clients/Tests/exports.stable.out
@@ -103,7 +103,6 @@ BAT *BATconst(BAT *l, int tt, const void
 BAT *BATconstant(int tt, const void *val, BUN cnt, int role);
 BAT *BATconvert(BAT *b, BAT *s, int tp, int abort_on_error);
 BAT *BATcopy(BAT *b, int ht, int tt, int writeable, int role);
-BUN BATcount(BAT *b);
 BUN BATcount_no_nil(BAT *b);
 BAT *BATcross(BAT *l, BAT *r);
 gdk_return BATcross1(BAT **r1p, BAT **r2p, BAT *l, BAT *r);
@@ -1210,6 +1209,42 @@ str CMDscience_bat_cst_atan2_dbl(int *re
 str CMDscience_bat_cst_atan2_flt(int *ret, int *bid, flt *d);
 str CMDscience_bat_cst_pow_dbl(int *ret, int *bid, dbl *d);
 str CMDscience_bat_cst_pow_flt(int *ret, int *bid, flt *d);
+str CMDscience_bat_dbl_acos(int *ret, int *bid);
+str CMDscience_bat_dbl_asin(int *ret, int *bid);
+str CMDscience_bat_dbl_atan(int *ret, int *bid);
+str CMDscience_bat_dbl_ceil(int *ret, int *bid);
+str CMDscience_bat_dbl_cos(int *ret, int *bid);
+str CMDscience_bat_dbl_cosh(int *ret, int *bid);
+str CMDscience_bat_dbl_degrees(int *ret, int *bid);
+str CMDscience_bat_dbl_exp(int *ret, int *bid);
+str CMDscience_bat_dbl_fabs(int *ret, int *bid);
+str CMDscience_bat_dbl_floor(int *ret, int *bid);
+str CMDscience_bat_dbl_log(int *ret, int *bid);
+str CMDscience_bat_dbl_log10(int *ret, int *bid);
+str CMDscience_bat_dbl_radians(int *ret, int *bid);
+str CMDscience_bat_dbl_sin(int *ret, int *bid);
+str CMDscience_bat_dbl_sinh(int *ret, int *bid);
+str CMDscience_bat_dbl_sqrt(int *ret, int *bid);
+str CMDscience_bat_dbl_tan(int *ret, int *bid);
+str CMDscience_bat_dbl_tanh(int *ret, int *bid);
+str CMDscience_bat_flt_acos(int *ret, int *bid);
+str CMDscience_bat_flt_asin(int *ret, int *bid);
+str CMDscience_bat_flt_atan(int *ret, int *bid);
+str CMDscience_bat_flt_ceil(int *ret, int *bid);
+str CMDscience_bat_flt_cos(int *ret, int *bid);
+str CMDscience_bat_flt_cosh(int *ret, int *bid);
+str CMDscience_bat_flt_degrees(int *ret, int *bid);
+str CMDscience_bat_flt_exp(int *ret, int *bid);
+str CMDscience_bat_flt_fabs(int *ret, int *bid);
+str CMDscience_bat_flt_floor(int *ret, int *bid);
+str CMDscience_bat_flt_log(int *ret, int *bid);
+str CMDscience_bat_flt_log10(int *ret, int *bid);
+str CMDscience_bat_flt_radians(int *ret, int *bid);
+str CMDscience_bat_flt_sin(int *ret, int *bid);
+str CMDscience_bat_flt_sinh(int *ret, int *bid);
+str CMDscience_bat_flt_sqrt(int *ret, int *bid);
+str CMDscience_bat_flt_tan(int *ret, int *bid);
+str CMDscience_bat_flt_tanh(int *ret, int *bid);
 str CMDsetAllProfiler(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pc);
 str CMDsetFilterProfiler(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr 
pci);
 str CMDsetFilterVariable(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr 
pc);
@@ -1440,13 +1475,56 @@ str MANUALcreateSection(Client cntxt, Ma
 str MANUALcreateSummary(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr 
pci);
 str MANUALhelp(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
 str MANUALsearch(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
+str MATHbinary_ATAN2dbl(dbl *res, dbl *a, dbl *b);
+str MATHbinary_ATAN2flt(flt *res, flt *a, flt *b);
+str MATHbinary_POWdbl(dbl *res, dbl *a, dbl *b);
+str MATHbinary_POWflt(flt *res, flt *a, flt *b);
+str MATHbinary_ROUNDdbl(dbl *res, dbl *a, int *b);
+str MATHbinary_ROUNDflt(flt *res, flt *a, int *b);
 str MATHpi(dbl *pi);
 str MATHrandint(int *res);
 str MATHsqlrandint(int *res, int *seed);
 str MATHsrandint(int *seed);
+str MATHunary_ACOSdbl(dbl *res, dbl *a);
+str MATHunary_ACOSflt(flt *res, flt *a);
+str MATHunary_ASINdbl(dbl *res, dbl *a);
+str MATHunary_ASINflt(flt *res, flt *a);
+str MATHunary_ATANdbl(dbl *res, dbl *a);
+str MATHunary_ATANflt(flt *res, flt *a);
+str MATHunary_CEILdbl(dbl *res, dbl *a);
+str MATHunary_CEILflt(flt *res, flt *a);
+str MATHunary_COSHdbl(dbl *res, dbl *a);
+str MATHunary_COSHflt(flt *res, flt *a);
+str MATHunary_COSdbl(dbl *res, dbl *a);
+str MATHunary_COSflt(flt *res, flt *a);
+str MATHunary_COTdbl(dbl *res, dbl *a);
+str MATHunary_COTflt(flt *res, flt *a);
+str MATHunary_DEGREESdbl(dbl *res, dbl *a);
+str MATHunary_DEGREESflt(flt *res, flt *a);
+str MATHunary_EXPdbl(dbl *res, dbl *a);
+str MATHunary_EXPflt(flt *res, flt *a);
+str MATHunary_FABSdbl(dbl *res, dbl *a);
 str MATHunary_FINITE(bit *res, dbl *a);
+str MATHunary_FLOORdbl(dbl *res, dbl *a);
+str MATHunary_FLOORflt(flt *res, flt *a);
 str MATHunary_ISINF(int *res, dbl *a);
 str MATHunary_ISNAN(bit *res, dbl *a);
+str MATHunary_LOG10dbl(dbl *res, dbl *a);
+str MATHunary_LOG10flt(flt *res, flt *a);
+str MATHunary_LOGdbl(dbl *res, dbl *a);
+str MATHunary_LOGflt(flt *res, flt *a);
+str MATHunary_RADIANSdbl(dbl *res, dbl *a);
+str MATHunary_RADIANSflt(flt *res, flt *a);
+str MATHunary_SINHdbl(dbl *res, dbl *a);
+str MATHunary_SINHflt(flt *res, flt *a);
+str MATHunary_SINdbl(dbl *res, dbl *a);
+str MATHunary_SINflt(flt *res, flt *a);
+str MATHunary_SQRTdbl(dbl *res, dbl *a);
+str MATHunary_SQRTflt(flt *res, flt *a);
+str MATHunary_TANHdbl(dbl *res, dbl *a);
+str MATHunary_TANHflt(flt *res, flt *a);
+str MATHunary_TANdbl(dbl *res, dbl *a);
+str MATHunary_TANflt(flt *res, flt *a);
 str MATdummy(int *ret, str *grp);
 str MAThasMoreElements(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p);
 str MATinfo(int *ret, str *grp, str *elm);
diff --git a/gdk/gdk.h b/gdk/gdk.h
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -1550,9 +1550,6 @@ bat_iterator(BAT *b)
  * to insert BUNs at the end of the BAT, but not to modify anything
  * that already was in there.
  */
-#ifndef BATcount
-gdk_export BUN BATcount(BAT *b);
-#endif
 gdk_export BUN BATcount_no_nil(BAT *b);
 gdk_export void BATsetcapacity(BAT *b, BUN cnt);
 gdk_export void BATsetcount(BAT *b, BUN cnt);
diff --git a/testing/listexports.py.in b/testing/listexports.py.in
--- a/testing/listexports.py.in
+++ b/testing/listexports.py.in
@@ -32,11 +32,13 @@ srcdir = r'@SOURCE@'
 blddir = r'@BUILD@'
 
 cmtre = re.compile(r'/\*.*?\*/|//[^\n]*', re.DOTALL)
-expre = re.compile(r'^[ \t]*(?:__declspec\(noreturn\)[ 
\t]+)?[a-zA-Z_0-9]*export\s+(?P<decl>[^;]*;)', re.MULTILINE)
+expre = re.compile(r'\b[a-zA-Z_0-9]+export\s+(?P<decl>[^;]*;)', re.MULTILINE)
 spcre = re.compile(r'\s+')
 nmere = re.compile(r'\b(?P<name>[a-zA-Z_][a-zA-Z_0-9]*)\s*[[(;]')
 strre = re.compile(r'([^ *])\*')
 comre = re.compile(r',\s*')
+defre = re.compile(r'^[ \t]*#[ \t]*define[ 
\t]+(?P<name>[a-zA-Z_][a-zA-Z0-9_]*)\((?P<args>[a-zA-Z0-9_, \t]*)\)[ 
\t]*(?P<def>.*)$', re.MULTILINE)
+cldef = re.compile(r'^[ \t]*#', re.MULTILINE)
 
 def extract(f):
     decls = []
@@ -48,6 +50,51 @@ def extract(f):
         res = cmtre.search(data, res.start(0))
     # remove \ <newline> combo's
     data = data.replace('\\\n', '')
+
+    defines = {}
+    ndata = []
+    for line in data.split('\n'):
+        # print >> sys.stderr, 'processing',line
+        res = defre.match(line)
+        if res is not None:
+            name, args, body = res.groups()
+            args = tuple(map(lambda x: x.strip(), args.split(',')))
+            defines[name] = (args, body)
+        else:
+            for name, (args, body) in defines.items():
+                pat = r'\b%s\b' % name
+                sep = r'\('
+                for arg in args:
+                    pat = pat + sep + r'([^,(]*(?:\([^,(]*\)[^,(]*)*)'
+                    sep = ','
+                pat += r'\)'
+                repl = {}
+                r = re.compile(pat)
+                res = r.search(line)
+                while res is not None:
+                    pars = map(lambda x: x.strip(), res.groups())
+                    pat = r'\b(?:'
+                    sep = ''
+                    for a, p in zip(args, pars):
+                        repl[a] = p
+                        pat += sep + a
+                        sep = '|'
+                    pat += r')\b'
+                    bd = body
+                    if pat != r'\b(?:)\b':
+                        r2 = re.compile(pat)
+                        res2 = r2.search(bd)
+                        while res2 is not None:
+                            a = res2.group(0)
+                            bd = bd[:res2.start(0)] + repl[a] + 
bd[res2.end(0):]
+                            res2 = r2.search(bd, res2.start(0) + len(repl[a]))
+                    bd = bd.replace('##', '')
+                    line = line[:res.start(0)] + bd + line[res.end(0):]
+                    res = r.search(line, res.start(0) + len(bd))
+            if not cldef.match(line):
+                ndata.append(line)
+    data = '\n'.join(ndata)
+
     res = expre.search(data)
     while res is not None:
         pos = res.end(0)
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to