Changeset: 8577f0ed7228 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=8577f0ed7228
Modified Files:
        clients/Tests/exports.stable.out
        monetdb5/modules/atoms/batxml.c
        monetdb5/modules/atoms/xml.c
        monetdb5/modules/atoms/xml.h
Branch: default
Log Message:

Cleanup of xml/batxml.
Added lots of const type qualifiers.
Do a lot more error checking.
Cleanup after errors.


diffs (truncated from 1447 to 300 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
@@ -894,26 +894,26 @@ str BATPCREnotilike(int *ret, int *b, st
 str BATPCREnotilike2(int *ret, int *b, str *pat);
 str BATPCREnotlike(int *ret, int *b, str *pat, str *esc);
 str BATPCREnotlike2(int *ret, int *b, str *pat);
-str BATXMLagg(int *ret, int *bid, int *grp);
-str BATXMLagg3(int *ret, int *bid, int *grp, int *e);
-str BATXMLattribute(int *ret, str *name, int *bid);
-str BATXMLcomment(int *x, int *s);
-str BATXMLconcat(int *ret, int *bid, int *rid);
-str BATXMLcontent(int *x, int *s);
-str BATXMLdocument(int *x, int *s);
-str BATXMLelement(int *ret, str *name, xml *ns, xml *attr, int *bid);
-str BATXMLelementSmall(int *x, str *name, int *s);
+str BATXMLagg(bat *ret, const bat *bid, const bat *grp);
+str BATXMLagg3(bat *ret, const bat *bid, const bat *grp, const bat *e);
+str BATXMLattribute(bat *ret, const char *const *name, const bat *bid);
+str BATXMLcomment(bat *ret, const bat *bid);
+str BATXMLconcat(bat *ret, const bat *bid, const bat *rid);
+str BATXMLcontent(bat *ret, const bat *bid);
+str BATXMLdocument(bat *ret, const bat *bid);
+str BATXMLelement(bat *ret, const char *const *name, xml *ns, xml *attr, const 
bat *bid);
+str BATXMLelementSmall(bat *ret, const char *const *name, const bat *bid);
 str BATXMLforest(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p);
-str BATXMLgroup(xml *ret, int *bid);
-str BATXMLisdocument(int *x, int *s);
-str BATXMLoptions(int *x, str *name, str *options, int *s);
-str BATXMLparse(int *x, str *doccont, int *s, str *option);
-str BATXMLpi(int *x, str *tgt, int *s);
-str BATXMLroot(int *ret, int *bid, str *version, str *standalone);
-str BATXMLstr2xml(int *x, int *s);
-str BATXMLxml2str(int *ret, int *bid);
-str BATXMLxmltext(int *ret, int *bid);
-str BATXMLxquery(int *x, int *s, str *expr);
+str BATXMLgroup(xml *ret, const bat *bid);
+str BATXMLisdocument(bat *ret, const bat *bid);
+str BATXMLoptions(bat *ret, const char *const *name, const char *const 
*options, const bat *bid);
+str BATXMLparse(bat *ret, const char *const *doccont, const bat *bid, const 
char *const *option);
+str BATXMLpi(bat *ret, const char *const *tgt, const bat *bid);
+str BATXMLroot(bat *ret, const bat *bid, const char *const *version, const 
char *const *standalone);
+str BATXMLstr2xml(bat *ret, const bat *bid);
+str BATXMLxml2str(bat *ret, const bat *bid);
+str BATXMLxmltext(bat *ret, const bat *bid);
+str BATXMLxquery(bat *ret, const bat *bid, const char *const *expr);
 str BKCaccbuild(int *ret, int *bid, str *acc, ptr *param);
 str BKCaccbuild_std(int *ret, int *bid, int *acc);
 str BKCappend_force_wrap(int *r, int *bid, int *uid, bit *force);
@@ -2343,7 +2343,7 @@ size_t XMLquotestring(const char *s, cha
 str XMLroot(str *x, str *v, str *version, str *standalone);
 str XMLstr2xml(xml *x, str *s);
 int XMLtoString(str *s, int *len, xml src);
-size_t XMLunquotestring(char **p, char q, char *buf);
+size_t XMLunquotestring(const char **p, char q, char *buf);
 str XMLxml2str(str *s, xml *x);
 str XMLxml2xml(xml *x, xml *s);
 str XMLxmltext(str *s, xml *x);
diff --git a/monetdb5/modules/atoms/batxml.c b/monetdb5/modules/atoms/batxml.c
--- a/monetdb5/modules/atoms/batxml.c
+++ b/monetdb5/modules/atoms/batxml.c
@@ -3,14 +3,14 @@
  * Version 1.1 (the "License"); you may not use this file except in
  * compliance with the License. You may obtain a copy of the License at
  * http://www.monetdb.org/Legal/MonetDBLicense
- * 
+ *
  * Software distributed under the License is distributed on an "AS IS"
  * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
  * License for the specific language governing rights and limitations
  * under the License.
- * 
+ *
  * The Original Code is the MonetDB Database System.
- * 
+ *
  * The Initial Developer of the Original Code is CWI.
  * Portions created by CWI are Copyright (C) 1997-July 2008 CWI.
  * Copyright August 2008-2013 MonetDB B.V.
@@ -33,12 +33,6 @@
  */
 
 
-#define getBATdescriptor(X1,X2,X3,X4) \
-       if ((X2 = BATdescriptor(*X1)) == NULL) {\
-               X4;\
-               throw(MAL, X3, RUNTIME_OBJECT_MISSING);\
-       }
-
 #include "monetdb_config.h"
 #include <gdk.h>
 #include "ctype.h"
@@ -58,34 +52,30 @@
 #define batxml_export extern
 #endif
 
-batxml_export str BATXMLxml2str(int *ret, int *bid);
-batxml_export str BATXMLxmltext(int *ret, int *bid);
-batxml_export str BATXMLstr2xml(int *x, int *s);
-batxml_export str BATXMLdocument(int *x, int *s);
-batxml_export str BATXMLcontent(int *x, int *s);
-batxml_export str BATXMLisdocument(int *x, int *s);
-batxml_export str BATXMLelementSmall(int *x, str *name, int *s);
-batxml_export str BATXMLoptions(int *x, str *name, str *options, int *s);
-batxml_export str BATXMLcomment(int *x, int *s);
-batxml_export str BATXMLparse(int *x, str *doccont, int *s, str *option);
-batxml_export str BATXMLxquery(int *x, int *s, str *expr);
-batxml_export str BATXMLpi(int *x, str *tgt, int *s);
-batxml_export str BATXMLroot(int *ret, int *bid, str *version, str 
*standalone);
-batxml_export str BATXMLattribute(int *ret, str *name, int *bid);
-batxml_export str BATXMLelement(int *ret, str *name, xml *ns, xml *attr, int 
*bid);
-batxml_export str BATXMLconcat(int *ret, int *bid, int *rid);
+batxml_export str BATXMLxml2str(bat *ret, const bat *bid);
+batxml_export str BATXMLxmltext(bat *ret, const bat *bid);
+batxml_export str BATXMLstr2xml(bat *ret, const bat *bid);
+batxml_export str BATXMLdocument(bat *ret, const bat *bid);
+batxml_export str BATXMLcontent(bat *ret, const bat *bid);
+batxml_export str BATXMLisdocument(bat *ret, const bat *bid);
+batxml_export str BATXMLelementSmall(bat *ret, const char * const *name, const 
bat *bid);
+batxml_export str BATXMLoptions(bat *ret, const char * const *name, const char 
* const *options, const bat *bid);
+batxml_export str BATXMLcomment(bat *ret, const bat *bid);
+batxml_export str BATXMLparse(bat *ret, const char * const *doccont, const bat 
*bid, const char * const *option);
+batxml_export str BATXMLxquery(bat *ret, const bat *bid, const char * const 
*expr);
+batxml_export str BATXMLpi(bat *ret, const char * const *tgt, const bat *bid);
+batxml_export str BATXMLroot(bat *ret, const bat *bid, const char * const 
*version, const char * const *standalone);
+batxml_export str BATXMLattribute(bat *ret, const char * const *name, const 
bat *bid);
+batxml_export str BATXMLelement(bat *ret, const char * const *name, xml *ns, 
xml *attr, const bat *bid);
+batxml_export str BATXMLconcat(bat *ret, const bat *bid, const bat *rid);
 batxml_export str BATXMLforest(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr p);
-batxml_export str BATXMLagg(int *ret, int *bid, int *grp);
-batxml_export str BATXMLagg3(int *ret, int *bid, int *grp, int *e);
-batxml_export str BATXMLgroup(xml *ret, int *bid);
+batxml_export str BATXMLagg(bat *ret, const bat *bid, const bat *grp);
+batxml_export str BATXMLagg3(bat *ret, const bat *bid, const bat *grp, const 
bat *e);
+batxml_export str BATXMLgroup(xml *ret, const bat *bid);
 batxml_export str AGGRsubxmlcand(bat *retval, bat *bid, bat *gid, bat *eid, 
bat *sid, bit *skip_nils);
 batxml_export str AGGRsubxml(bat *retval, bat *bid, bat *gid, bat *eid, bit 
*skip_nils);
 
 
-#define prepareOperand(X,Y,Z)                                                  
        \
-    if (((X) = BATdescriptor(*(Y))) == NULL )                          \
-        throw(MAL, "xml." Z, INTERNAL_BAT_ACCESS);
-
 #define prepareResult(X,Y,tpe,Z)                                       \
     (X) = BATnew((Y)->htype, (tpe), BATcount(Y));      \
     if ((X) == NULL) {                                                         
\
@@ -109,18 +99,19 @@ batxml_export str AGGRsubxml(bat *retval
     BBPreleaseref((Z)->batCacheid);
 
 str
-BATXMLxml2str(int *ret, int *bid)
+BATXMLxml2str(bat *ret, const bat *bid)
 {
        BAT *b, *bn;
        BUN p, q;
        BATiter bi;
 
-       prepareOperand(b, bid, "str");
+       if ((b = BATdescriptor(*bid)) == NULL)
+               throw(MAL, "xml.str", INTERNAL_BAT_ACCESS);
        prepareResult(bn, b, TYPE_str, "str");
        bi = bat_iterator(b);
        BATloop(b, p, q) {
-               ptr h = BUNhead(bi, p);
-               str t = (str) BUNtail(bi, p);
+               const void *h = (const void *) BUNhead(bi, p);
+               const char *t = (const char *) BUNtail(bi, p);
 
                if (strNil(t)) {
                        bunfastins(bn, h, t);
@@ -139,7 +130,7 @@ BATXMLxml2str(int *ret, int *bid)
 }
 
 str
-BATXMLxmltext(int *ret, int *bid)
+BATXMLxmltext(bat *ret, const bat *bid)
 {
        BAT *b, *bn;
        BUN p, q;
@@ -148,14 +139,16 @@ BATXMLxmltext(int *ret, int *bid)
        str buf = NULL;
        xmlDocPtr doc = NULL;
        xmlNodePtr elem;
-       str content = NULL, err = OPERATION_FAILED;
+       str content = NULL;
+       const char *err = OPERATION_FAILED;
 
-       prepareOperand(b, bid, "text");
+       if ((b = BATdescriptor(*bid)) == NULL)
+               throw(MAL, "xml.text", INTERNAL_BAT_ACCESS);
        prepareResult(bn, b, TYPE_str, "text");
        bi = bat_iterator(b);
        BATloop(b, p, q) {
-               ptr h = BUNhead(bi, p);
-               str t = (str) BUNtail(bi, p);
+               const void *h = (const void *) BUNhead(bi, p);
+               const char *t = (const char *) BUNtail(bi, p);
                size_t len;
 
                if (strNil(t)) {
@@ -192,8 +185,8 @@ BATXMLxmltext(int *ret, int *bid)
                                if (buf != NULL)
                                        GDKfree(buf);
                                buf = GDKmalloc(size);
-                               if ( buf == 0) {
-                                       err= MAL_MALLOC_FAIL;
+                               if (buf == 0) {
+                                       err = MAL_MALLOC_FAIL;
                                        goto bunins_failed;
                                }
                        }
@@ -230,7 +223,7 @@ BATXMLxmltext(int *ret, int *bid)
                xmlFreeDoc(doc);
        if (content != NULL)
                GDKfree(content);
-       throw(MAL, "xml.text", "%s", err );
+       throw(MAL, "xml.text", "%s", err);
 }
 
 /*
@@ -245,23 +238,27 @@ BATXMLxmltext(int *ret, int *bid)
  * XML values are represented by strings already.
  */
 str
-BATXMLstr2xml(int *ret, int *bid)
+BATXMLstr2xml(bat *ret, const bat *bid)
 {
        BAT *b, *bn;
        BUN p, q;
        size_t size = BUFSIZ;
-       str buf, err= OPERATION_FAILED;
+       str buf;
+       const char *err= OPERATION_FAILED;
        BATiter bi;
 
        buf = GDKmalloc(size);
-       if ( buf == NULL)
+       if (buf == NULL)
                throw(MAL,"xml.str2xml",MAL_MALLOC_FAIL);
-       prepareOperand(b, bid, "xml");
+       if ((b = BATdescriptor(*bid)) == NULL) {
+               GDKfree(buf);
+               throw(MAL, "xml.xml", INTERNAL_BAT_ACCESS);
+       }
        prepareResult(bn, b, TYPE_xml, "xml");
        bi = bat_iterator(b);
        BATloop(b, p, q) {
-               ptr h = BUNhead(bi, p);
-               str t = (str) BUNtail(bi, p);
+               const void *h = (const void *) BUNhead(bi, p);
+               const char *t = (const char *) BUNtail(bi, p);
                size_t len;
 
                if (strNil(t)) {
@@ -275,7 +272,7 @@ BATXMLstr2xml(int *ret, int *bid)
                        size = len + 128;
                        GDKfree(buf);
                        buf = GDKmalloc(size);
-                       if ( buf == NULL){
+                       if (buf == NULL) {
                                err= MAL_MALLOC_FAIL;
                                goto bunins_failed;
                        }
@@ -290,29 +287,32 @@ BATXMLstr2xml(int *ret, int *bid)
   bunins_failed:
        BBPreleaseref(b->batCacheid);
        BBPunfix(bn->batCacheid);
-       if ( buf != NULL )
+       if (buf != NULL)
                GDKfree(buf);
        throw(MAL, "xml.xml", "%s", err);
 }
 
 str
-BATXMLdocument(int *ret, int *bid)
+BATXMLdocument(bat *ret, const bat *bid)
 {
        BAT *b, *bn;
        BUN p, q;
        BATiter bi;
        size_t size = BUFSIZ;
        str buf = GDKmalloc(size);
-       str err = OPERATION_FAILED;
+       const char *err = OPERATION_FAILED;
 
-       if ( buf == NULL)
+       if (buf == NULL)
                throw(MAL,"xml.document",MAL_MALLOC_FAIL);
-       prepareOperand(b, bid, "document");
+       if ((b = BATdescriptor(*bid)) == NULL) {
+               GDKfree(buf);
+               throw(MAL, "xml.document", INTERNAL_BAT_ACCESS);
+       }
        prepareResult(bn, b, TYPE_xml, "document");
        bi = bat_iterator(b);
        BATloop(b, p, q) {
-               ptr h = BUNhead(bi, p);
-               str t = (str) BUNtail(bi, p);
+               const void *h = (const void *) BUNhead(bi, p);
+               const char *t = (const char *) BUNtail(bi, p);
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to