Changeset: bb6456500919 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=bb6456500919 Modified Files: clients/Tests/exports.stable.out geom/lib/libgeom.c geom/lib/libgeom.h geom/monetdb5/geom.c geom/monetdb5/geom.h monetdb5/mal/mal_atom.c monetdb5/modules/atoms/blob.c monetdb5/modules/atoms/blob.h monetdb5/modules/atoms/identifier.c monetdb5/modules/atoms/inet.c monetdb5/modules/atoms/json.c monetdb5/modules/atoms/json.h monetdb5/modules/atoms/url.c monetdb5/modules/atoms/url.h monetdb5/modules/atoms/uuid.c monetdb5/modules/atoms/xml.c monetdb5/modules/atoms/xml.h testing/malcheck.py Branch: default Log Message:
Added const to the atom function implementations. I.e., null(), fromstr(), tostr(), cmp(), length(), hash(), write(). diffs (truncated from 1108 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 @@ -819,25 +819,25 @@ str BKCsetTransient(void *r, const bat * str BKCsetkey(bat *res, const bat *bid, const bit *param); str BKCshrinkBAT(bat *ret, const bat *bid, const bat *did); str BLOBblob_blob(blob **d, blob **s); -str BLOBblob_fromstr(blob **b, str *d); -int BLOBcmp(blob *l, blob *r); +str BLOBblob_fromstr(blob **b, const char **d); +int BLOBcmp(const blob *l, const blob *r); void BLOBdel(Heap *h, var_t *index); str BLOBfromblob(str *retval, blob **b); str BLOBfromidx(str *retval, blob **binp, int *index); -int BLOBfromstr(char *instr, int *l, blob **val); +int BLOBfromstr(const char *instr, int *l, blob **val); int BLOBget(Heap *h, int *bun, int *l, blob **val); -BUN BLOBhash(blob *b); +BUN BLOBhash(const blob *b); void BLOBheap(Heap *heap, size_t capacity); -int BLOBlength(blob *p); +int BLOBlength(const blob *p); str BLOBnitems(int *ret, blob *b); -blob *BLOBnull(void); +const blob *BLOBnull(void); str BLOBprelude(void *ret); -var_t BLOBput(Heap *h, var_t *bun, blob *val); +var_t BLOBput(Heap *h, var_t *bun, const blob *val); blob *BLOBread(blob *a, stream *s, size_t cnt); -str BLOBsqlblob_fromstr(sqlblob **b, str *d); +str BLOBsqlblob_fromstr(sqlblob **b, const char **d); str BLOBtoblob(blob **retval, str *s); -int BLOBtostr(str *tostr, int *l, blob *pin); -gdk_return BLOBwrite(blob *a, stream *s, size_t cnt); +int BLOBtostr(str *tostr, int *l, const blob *pin); +gdk_return BLOBwrite(const blob *a, stream *s, size_t cnt); str CALCmax(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p); str CALCmax_no_nil(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p); str CALCmin(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p); @@ -1142,9 +1142,9 @@ str GRPsubgroup7(bat *ngid, bat *next, c str GRPsubgroup8(bat *ngid, bat *next, const bat *bid, const bat *gid, const bat *eid, const bat *hid); str GRPsubgroup9(bat *ngid, bat *next, const bat *bid, const bat *sid, const bat *gid, const bat *eid, const bat *hid); str IDentifier(identifier *retval, str *in); -int IDfromString(str src, int *len, identifier *retval); +int IDfromString(const char *src, int *len, identifier *retval); str IDprelude(void *ret); -int IDtoString(str *retval, int *len, identifier handle); +int IDtoString(str *retval, int *len, const char *handle); str ILIKEjoin(bat *r1, bat *r2, const bat *lid, const bat *rid, const str *esc, const bat *slid, const bat *srid, const bit *nil_matches, const lng *estimate); str ILIKEjoin1(bat *r1, bat *r2, const bat *lid, const bat *rid, const bat *slid, const bat *srid, const bit *nil_matches, const lng *estimate); str INET_comp_CS(bit *retval, const inet *val1, const inet *val2); @@ -1170,7 +1170,7 @@ str INETmasklen(int *retval, const inet str INETnetmask(inet *retval, const inet *val); str INETnetwork(inet *retval, const inet *val); str INETnew(inet *retval, str *in); -inet *INETnull(void); +const inet *INETnull(void); str INETsetmasklen(inet *retval, const inet *val, const int *msk); str INETtext(str *retval, const inet *val); int INETtoString(str *retval, int *len, const inet *handle); @@ -1226,7 +1226,7 @@ str JSONfilterArray_int(json *ret, json str JSONfilterArray_lng(json *ret, json *j, lng *index); str JSONfilterArray_sht(json *ret, json *j, sht *index); str JSONfold(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); -int JSONfromString(str src, int *len, json *x); +int JSONfromString(const char *src, int *len, json *x); str JSONgroupStr(str *ret, const bat *bid); str JSONisarray(bit *ret, json *j); str JSONisobject(bit *ret, json *j); @@ -1248,7 +1248,7 @@ str JSONsubjson(bat *retval, bat *bid, b str JSONsubjsoncand(bat *retval, bat *bid, bat *gid, bat *eid, bat *id, bit *skip_nils); str JSONtextGrouped(bat *ret, bat *bid, bat *gid, bat *ext, bit *flg); str JSONtextString(str *ret, bat *bid); -int JSONtoString(str *s, int *len, json src); +int JSONtoString(str *s, int *len, const char *src); str JSONunfold(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); str JSONvalueArray(json *ret, json *arg); str JSONvalueTable(bat *ret, json *j); @@ -1713,7 +1713,7 @@ str SERVERsetAlias(void *ret, int *mid, str SERVERstop(void *ret); str SERVERsuspend(void *ret); str SERVERtrace(void *ret, int *mid, int *flag); -int SQLBLOBfromstr(char *instr, int *l, blob **val); +int SQLBLOBfromstr(const char *instr, int *l, blob **val); int SQLBLOBtostr(str *tostr, int *l, const blob *pin); BUN SQLload_file(Client cntxt, Tablet *as, bstream *b, stream *out, const char *csep, const char *rsep, char quote, lng skip, lng maxrow, int best); str STRBytes(int *res, const str *arg1); @@ -1845,7 +1845,7 @@ int TYPE_sqlblob; int TYPE_timestamp; int TYPE_tzone; int TYPE_xml; -int URLfromString(str src, int *len, str *u); +int URLfromString(const char *src, int *len, str *u); str URLgetAnchor(str *retval, url *val); str URLgetBasename(str *retval, url *t); str URLgetContent(str *retval, url *Str1); @@ -1864,14 +1864,14 @@ str URLnew(url *u, str *val); str URLnew3(url *u, str *protocol, str *server, str *file); str URLnew4(url *u, str *protocol, str *server, int *port, str *file); str URLnoop(url *u, url *val); -int URLtoString(str *s, int *len, str src); +int URLtoString(str *s, int *len, const char *src); int UUIDcompare(const uuid *l, const uuid *r); str UUIDequal(bit *retval, uuid **l, uuid **r); int UUIDfromString(const char *svalue, int *len, uuid **retval); str UUIDgenerateUuid(uuid **retval); BUN UUIDhash(const void *u); str UUIDisaUUID(bit *retval, str *u); -uuid *UUIDnull(void); +const uuid *UUIDnull(void); str UUIDprelude(void *ret); uuid *UUIDread(uuid *u, stream *s, size_t cnt); str UUIDstr2uuid(uuid **retval, str *s); @@ -1912,15 +1912,15 @@ str XMLdocument(xml *x, str *s); str XMLelement(xml *ret, str *name, xml *nspace, xml *attr, xml *val); str XMLelementSmall(xml *ret, str *name, xml *val); str XMLforest(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p); -int XMLfromString(str src, int *len, xml *x); +int XMLfromString(const char *src, int *len, xml *x); str XMLisdocument(bit *x, str *s); str XMLparse(xml *x, str *doccont, str *s, str *option); str XMLpi(xml *x, str *target, str *s); str XMLprelude(void *ret); size_t XMLquotestring(const char *s, char *buf, size_t len); str XMLroot(xml *x, xml *v, str *version, str *standalone); -str XMLstr2xml(xml *x, str *s); -int XMLtoString(str *s, int *len, xml src); +str XMLstr2xml(xml *x, const char **s); +int XMLtoString(str *s, int *len, const char *src); size_t XMLunquotestring(const char **p, char q, char *buf); str XMLxml2str(str *s, xml *x); str XMLxml2xml(xml *x, xml *s); diff --git a/geom/lib/libgeom.c b/geom/lib/libgeom.c --- a/geom/lib/libgeom.c +++ b/geom/lib/libgeom.c @@ -34,7 +34,7 @@ libgeom_exit(void) } int -wkb_isnil(wkb *w) +wkb_isnil(const wkb *w) { if (!w || w->len == ~0) return 1; @@ -106,7 +106,7 @@ getMbrGeos(mbr *res, const GEOSGeom geos */ GEOSGeom -wkb2geos(wkb *geomWKB) +wkb2geos(const wkb *geomWKB) { GEOSGeom geosGeometry; diff --git a/geom/lib/libgeom.h b/geom/lib/libgeom.h --- a/geom/lib/libgeom.h +++ b/geom/lib/libgeom.h @@ -136,10 +136,10 @@ libgeom_export void libgeom_exit(void); //#define wkb2geos( geom ) wkb_isnil((geom))? NULL: GEOSGeomFromWKB_buf((unsigned char *)((geom)->data), (geom)->len) #define mbr_nil mbrFromGeos(NULL); -libgeom_export int wkb_isnil(wkb *wkbp); +libgeom_export int wkb_isnil(const wkb *wkbp); libgeom_export int getMbrGeos(mbr *mbr, const GEOSGeom geosGeometry); libgeom_export int getMbrGeom(mbr *res, wkb *geom); -libgeom_export GEOSGeom wkb2geos(wkb* geomWKB); +libgeom_export GEOSGeom wkb2geos(const wkb *geomWKB); //libgeom_export str geomerty_2_geometry(wkb *res, wkb **geom, int* columnType, int* columnSRID, int* valueSRID); diff --git a/geom/monetdb5/geom.c b/geom/monetdb5/geom.c --- a/geom/monetdb5/geom.c +++ b/geom/monetdb5/geom.c @@ -2081,7 +2081,7 @@ geom_epilogue(void *ret) /* Check if fixed-sized atom mbr is null */ static int -mbr_isnil(mbr *m) +mbr_isnil(const mbr *m) { if (m == NULL || m->xmin == flt_nil || m->ymin == flt_nil || m->xmax == flt_nil || m->ymax == flt_nil) return 1; @@ -2136,13 +2136,13 @@ strncasecmp(const char *s1, const char * /* Creates WKB representation (including srid) from WKT representation */ /* return number of parsed characters. */ static str -wkbFROMSTR_withSRID(char *geomWKT, int *len, wkb **geomWKB, int srid, size_t *nread) +wkbFROMSTR_withSRID(const char *geomWKT, int *len, wkb **geomWKB, int srid, size_t *nread) { GEOSGeom geosGeometry = NULL; /* The geometry object that is parsed from the src string. */ GEOSWKTReader *WKT_reader; const char *polyhedralSurface = "POLYHEDRALSURFACE"; const char *multiPolygon = "MULTIPOLYGON"; - char *geomWKT_original = NULL; + char *geomWKT_new = NULL; size_t parsedCharacters = 0; *nread = 0; @@ -2176,34 +2176,32 @@ wkbFROMSTR_withSRID(char *geomWKT, int * //not work correctly. if (strncasecmp(geomWKT, polyhedralSurface, strlen(polyhedralSurface)) == 0) { size_t sizeOfInfo = strlen(geomWKT) - strlen(polyhedralSurface); - geomWKT_original = geomWKT; - geomWKT = GDKmalloc(sizeOfInfo + strlen(multiPolygon) + 1); - if (geomWKT == NULL) + geomWKT_new = GDKmalloc(sizeOfInfo + strlen(multiPolygon) + 1); + if (geomWKT_new == NULL) throw(MAL, "wkb.FromText", SQLSTATE(HY001) MAL_MALLOC_FAIL); - strcpy(geomWKT, multiPolygon); - memcpy(geomWKT + strlen(multiPolygon), &geomWKT_original[strlen(polyhedralSurface)], sizeOfInfo); - geomWKT[sizeOfInfo + strlen(multiPolygon)] = '\0'; + sprintf(geomWKT_new, "%s%s", multiPolygon, geomWKT + strlen(polyhedralSurface)); + geomWKT = geomWKT_new; } ////////////////////////// UP TO HERE /////////////////////////// WKT_reader = GEOSWKTReader_create(); if (WKT_reader == NULL) { - if (geomWKT_original) - GDKfree(geomWKT); + if (geomWKT_new) + GDKfree(geomWKT_new); throw(MAL, "wkb.FromText", SQLSTATE(38000) "Geos operation GEOSWKTReader_create failed"); } geosGeometry = GEOSWKTReader_read(WKT_reader, geomWKT); GEOSWKTReader_destroy(WKT_reader); if (geosGeometry == NULL) { - if (geomWKT_original) - GDKfree(geomWKT); + if (geomWKT_new) + GDKfree(geomWKT_new); throw(MAL, "wkb.FromText", SQLSTATE(38000) "Geos operation GEOSWKTReader_read failed"); } if (GEOSGeomTypeId(geosGeometry) == -1) { - if (geomWKT_original) - GDKfree(geomWKT); + if (geomWKT_new) + GDKfree(geomWKT_new); GEOSGeom_destroy(geosGeometry); throw(MAL, "wkb.FromText", SQLSTATE(38000) "Geos operation GEOSGeomTypeId failed"); } @@ -2217,26 +2215,23 @@ wkbFROMSTR_withSRID(char *geomWKT, int * *geomWKB = geos2wkb(geosGeometry); GEOSGeom_destroy(geosGeometry); if (*geomWKB == NULL) { - if (geomWKT_original) - GDKfree(geomWKT); + if (geomWKT_new) + GDKfree(geomWKT_new); throw(MAL, "wkb.FromText", SQLSTATE(38000) "Geos operation geos2wkb failed"); } *len = (int) wkb_size((*geomWKB)->len); - - if (geomWKT_original) { - GDKfree(geomWKT); - geomWKT = geomWKT_original; - } - parsedCharacters = strlen(geomWKT); assert(parsedCharacters <= GDK_int_max); + + GDKfree(geomWKT_new); + *nread = parsedCharacters; return MAL_SUCCEED; } static int -wkbaFROMSTR_withSRID(char *fromStr, int *len, wkba **toArray, int srid) +wkbaFROMSTR_withSRID(const char *fromStr, int *len, wkba **toArray, int srid) { int items, i; size_t skipBytes = 0; @@ -2442,7 +2437,7 @@ decit(char hex) } str -wkbFromBinary(wkb **geomWKB, char **inStr) +wkbFromBinary(wkb **geomWKB, const char **inStr) { size_t strLength, wkbLength, i; wkb *w; @@ -5002,7 +4997,7 @@ wkbCoordinateFromWKB(dbl *coordinateValu } str -mbrFromString(mbr **w, str *src) +mbrFromString(mbr **w, const char **src) { int len = *w ? (int) sizeof(mbr) : 0; char *errbuf; @@ -5059,7 +5054,7 @@ ordinatesMBR(mbr **res, flt *minX, flt * /* Creates the string representation (WKT) of a WKB */ /* return length of resulting string. */ int -wkbTOSTR(char **geomWKT, int *len, wkb *geomWKB) +wkbTOSTR(char **geomWKT, int *len, const wkb *geomWKB) { _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list