Changeset: e3ae9b7d347a for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=e3ae9b7d347a
Added Files:
        monetdb5/modules/kernel/batstr.c
        monetdb5/modules/kernel/batstr.h
        monetdb5/modules/kernel/batstr.mal
Removed Files:
        monetdb5/modules/kernel/batstr.mx
Modified Files:
        monetdb5/modules/kernel/Makefile.ag
Branch: default
Log Message:

De-mx batstr module


diffs (truncated from 1466 to 300 lines):

diff --git a/monetdb5/modules/kernel/Makefile.ag 
b/monetdb5/modules/kernel/Makefile.ag
--- a/monetdb5/modules/kernel/Makefile.ag
+++ b/monetdb5/modules/kernel/Makefile.ag
@@ -47,7 +47,7 @@ lib_kernel = {
                batifthen.mx \
                batmmath.c batmmath.h \
                batmtime.mx \
-               batstr.mx \
+               batstr.c batstr.h \
                calc.c \
                counters.c counters.h \
                group.mx \
@@ -64,7 +64,7 @@ headers_mal = {
        HEADERS = mal
        DIR = libdir/monetdb5
        SOURCES = calc.mal bat5.mal algebra.mx status.mal unix.mal \
-               mmath.mal lock.mal sema.mal alarm.mal batstr.mx batmtime.mx \
+               mmath.mal lock.mal sema.mal alarm.mal batstr.mal batmtime.mx \
                batcolor.mal batifthen.mx batcalc.mal batmmath.mal \
                group.mx aggr.mx array.mal \
                counters.mal logger.mal microbenchmark.mal
diff --git a/monetdb5/modules/kernel/batstr.mx 
b/monetdb5/modules/kernel/batstr.c
rename from monetdb5/modules/kernel/batstr.mx
rename to monetdb5/modules/kernel/batstr.c
--- a/monetdb5/modules/kernel/batstr.mx
+++ b/monetdb5/modules/kernel/batstr.c
@@ -1,28 +1,25 @@
-@/
-The contents of this file are subject to the MonetDB Public License
-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
+/*
+ * The contents of this file are subject to the MonetDB Public License
+ * 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-2012 MonetDB B.V.
+ * All Rights Reserved.
+*/
 
-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-2012 MonetDB B.V.
-All Rights Reserved.
-@
-
-@f batstr
-
-@c
 /*
- * @a M.L. Kersten
- * @+ String multiplexes
+ *  M.L. Kersten
+ * String multiplexes
  * [TODO: property propagations]
  * The collection of routines provided here are map operations
  * for the atom string primitives.
@@ -33,149 +30,6 @@ All Rights Reserved.
  * are limited to :void, which can be cheaply realized using
  * the GRPsplit operation.
  */
-@mal
-module batstr;
-
-command batstr.length( s:bat[:oid,:str] ) :bat[:oid,:int]
-address STRbatLength
-comment "Return the length of a string.";
-
-command batstr.stringlength( s:bat[:oid,:str] ) :bat[:oid,:int]
-address STRbatstringLength
-comment "Return the length of a right trimed string.";
-
-command batstr.nbytes( s:bat[:oid,:str] ) :bat[:oid,:int]
-address STRbatBytes
-comment "Return the string length in bytes.";
-
-command batstr.toLower( s:bat[:oid,:str] ) :bat[:oid,:str]
-address STRbatLower
-comment "Convert a string to lower case.";
-command batstr.toUpper( s:bat[:oid,:str] ) :bat[:oid,:str]
-address STRbatUpper
-comment "Convert a string to upper case.";
-
-command batstr.trim( s:bat[:oid,:str] ) :bat[:oid,:str]
-address STRbatStrip
-comment "Strip whitespaces around a string.";
-command batstr.ltrim( s:bat[:oid,:str] ) :bat[:oid,:str]
-address STRbatLtrim
-comment "Strip whitespaces from start of a string.";
-command batstr.rtrim( s:bat[:oid,:str] ) :bat[:oid,:str]
-address STRbatRtrim
-comment "Strip whitespaces from end of a string.";
-
-command 
batstr.startsWith(s:bat[:oid,:str],prefix:bat[:oid,:str]):bat[:oid,:bit]
-address STRbatPrefix
-comment "Prefix check.";
-command batstr.startsWith(s:bat[:oid,:str],prefix:str):bat[:oid,:bit]
-address STRbatPrefixcst
-comment "Prefix check.";
-
-command batstr.endsWith( s:bat[:oid,:str], suffix:bat[:oid,:str] ) 
:bat[:oid,:bit]
-address STRbatSuffix
-comment "Suffix check.";
-command batstr.endsWith( s:bat[:oid,:str], suffix:str ) :bat[:oid,:bit]
-address STRbatSuffixcst
-comment "Suffix check.";
-
-command batstr.search( s:bat[:oid,:str], c:bat[:oid,:str] ) :bat[:oid,:int]
-address STRbatstrSearch
-comment "Search for a substring. Returns position, -1 if not found.";
-command batstr.search( s:bat[:oid,:str], c:str ) :bat[:oid,:int]
-address STRbatstrSearchcst
-comment "Search for a substring. Returns position, -1 if not found.";
-
-command batstr.r_search( s:bat[:oid,:str], c:bat[:oid,:str] ) :bat[:oid,:int]
-address STRbatRstrSearch
-comment "Reverse search for a substring. Returns position, -1 if not found.";
-command batstr.r_search( s:bat[:oid,:str], c:str ) :bat[:oid,:int]
-address STRbatRstrSearchcst
-comment "Reverse search for a substring. Returns position, -1 if not found.";
-
-command batcalc.+( l:bat[:oid,:str], r:bat[:oid,:str]) :bat[:oid,:str]
-address STRbatConcat
-comment "Concatenate two strings.";
-command batcalc.+( l:bat[:oid,:str], r:str) :bat[:oid,:str]
-address STRbatConcatcst
-comment "Concatenate a string to a bat of strings.";
-command batcalc.+( l:str, r:bat[:oid,:str]) :bat[:oid,:str]
-address STRcstConcatbat
-comment "Concatenate two strings.";
-
-command batstr.string(b:bat[:oid,:str],offset:bat[:oid,:int]) :bat[:oid,:str]
-address STRbatTail
-comment "Return the tail s[offset..n] of a string s[0..n].";
-command batstr.string(b:bat[:oid,:str],offset:int) :bat[:oid,:str]
-address STRbatTailcst
-comment "Return the tail s[offset..n] of a string s[0..n].";
-
-command batstr.substring( s:bat[:oid,:str], start:bat[:oid,:int], 
-       index:bat[:oid,:int]) :bat[:oid,:str]
-address STRbatsubstring
-comment "Substring extraction using [start,start+length]";
-
-command batstr.substring( s:bat[:oid,:str], start:int, index:int)
-       :bat[:oid,:str]
-address STRbatsubstringcst
-comment "Substring extraction using [start,start+length]";
-
-command batstr.unicodeAt(s:bat[:oid,:str], index:bat[:oid,:int]) 
:bat[:oid,:int]
-address STRbatWChrAt
-comment "get a unicode character (as an int) from a string position.";
-command batstr.unicodeAt(s:bat[:oid,:str], index:int) :bat[:oid,:int]
-address STRbatWChrAtcst
-comment "get a unicode character (as an int) from a string position.";
-
-command 
batstr.substitute(s:bat[:oid,:str],src:str,dst:str,rep:bit):bat[:oid,:str]
-address STRbatSubstitutecst
-comment "Substitute first occurrence of 'src' by
-       'dst'.  Iff repeated = true this is
-       repeated while 'src' can be found in the
-       result string. In order to prevent
-       recursion and result strings of unlimited
-       size, repeating is only done iff src is
-       not a substring of dst.";
-
-command batstr.like_uselect(s:bat[:oid,:str],pat:str):bat[:oid,:void]
-address STRbatlike_uselect2
-comment "Perform SQL like operation against a string bat";
-
-command batstr.like_uselect(s:bat[:oid,:str],pat:str,esc:str):bat[:oid,:void]
-address STRbatlike_uselect
-comment "Perform SQL like operation against a string bat";
-
-command batstr.replace(s:bat[:oid,:str],pat:str,s2:str):bat[:oid,:str]
-address STRbatreplace
-comment "Insert a string into another";
-
-@c
-/*
- * @+ Implementation
- */
-#include "monetdb_config.h"
-#include <gdk.h>
-#include "ctype.h"
-#include <string.h>
-#include "mal_exception.h"
-#include "str.h"
-
-#ifdef HAVE_LANGINFO_H
-#include <langinfo.h>
-#endif
-#ifdef HAVE_ICONV_H
-#include <iconv.h>
-#endif
-
-#ifdef WIN32
-#if !defined(LIBMAL) && !defined(LIBATOMS) && !defined(LIBKERNEL) && 
!defined(LIBMAL) && !defined(LIBOPTIMIZER) && !defined(LIBSCHEDULER) && 
!defined(LIBMONETDB5)
-#define batstr_export extern __declspec(dllimport)
-#else
-#define batstr_export extern __declspec(dllexport)
-#endif
-#else
-#define batstr_export extern
-#endif
 
 #define prepareOperand(X,Y,Z) \
        if( (X= BATdescriptor(*Y)) == NULL ) \
@@ -218,26 +72,58 @@ comment "Insert a string into another";
        BBPkeepref(*(X));\
        BBPreleaseref(Z->batCacheid);
 
-@= BATint
-batstr_export str STRbat@1(int *ret, int *l);
-str STRbat@1(int *ret, int *l)
+str STRbatLength(int *ret, int *l)
 {   
        BATiter bi;
        BAT *bn, *b;
        BUN p,q;
-       @3 x;
+       str x;
        int y, *yp = &y;
 
-       prepareOperand(b,l,"@1");
-       prepareResult(bn,b,TYPE_int,"@1");
+       prepareOperand(b,l,"Length");
+       prepareResult(bn,b,TYPE_int,"Length");
 
        bi = bat_iterator(b);
 
        BATaccessBegin(b, USE_HEAD|USE_TAIL, MMAP_SEQUENTIAL);
        BATloop(b, p, q) {
                ptr h = BUNhead(bi,p);
-               x = (@3) BUNtail(bi,p);
-               if (x== 0 || strcmp(x,@3_nil)== 0) {
+               x = (str) BUNtail(bi,p);
+               if (x== 0 || strcmp(x,str_nil)== 0) {
+                       y= int_nil;
+                       bn->T->nonil = 0;
+               } else 
+                       strLength(yp,x);
+               bunfastins(bn, h, yp);
+       }
+       BATaccessEnd(b, USE_HEAD|USE_TAIL, MMAP_SEQUENTIAL);
+       finalizeResult(ret,bn,b);
+       return MAL_SUCCEED;
+bunins_failed:
+       BATaccessEnd(b, USE_HEAD|USE_TAIL, MMAP_SEQUENTIAL);
+       BBPreleaseref(b->batCacheid);
+       BBPunfix(bn->batCacheid);
+       throw(MAL, "batstr.Length", OPERATION_FAILED " During bulk operation");
+}
+
+str STRbatstringLength(int *ret, int *l)
+{   
+       BATiter bi;
+       BAT *bn, *b;
+       BUN p,q;
+       str x;
+       int y, *yp = &y;
+
+       prepareOperand(b,l,"stringLength");
+       prepareResult(bn,b,TYPE_int,"stringLength");
+
+       bi = bat_iterator(b);
+
+       BATaccessBegin(b, USE_HEAD|USE_TAIL, MMAP_SEQUENTIAL);
+       BATloop(b, p, q) {
+               ptr h = BUNhead(bi,p);
+               x = (str) BUNtail(bi,p);
+               if (x== 0 || strcmp(x,str_nil)== 0) {
                        y= int_nil;
                        bn->T->nonil = 0;
                } else 
@@ -251,26 +137,52 @@ bunins_failed:
        BATaccessEnd(b, USE_HEAD|USE_TAIL, MMAP_SEQUENTIAL);
        BBPreleaseref(b->batCacheid);
        BBPunfix(bn->batCacheid);
-       throw(MAL, "batstr.@1", OPERATION_FAILED " During bulk operation");
+       throw(MAL, "batstr.stringLength", OPERATION_FAILED " During bulk 
operation");
 }
 
_______________________________________________
Checkin-list mailing list
Checkin-list@monetdb.org
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to