Move string-length to non-primitive
[jscl.git] / src / compiler.lisp
index aca3a2b..5dd0084 100644 (file)
      "var x = " x ";" *newline*
      "return (typeof(" x ") == \"string\") && x.length == 1;")))
 
-(define-builtin char-to-string (x)
-  (js!selfcall
-    "var r = [" x "];" *newline*
-    "r.type = 'character';"
-    "return r"))
-
 (define-builtin char-upcase (x)
   (code x ".toUpperCase()"))
 
   (js!bool
    (js!selfcall
      "var x = " x ";" *newline*
-     "return typeof(x) == 'object' && 'length' in x && x.type == 'character';")))
+     "return typeof(x) == 'object' && 'length' in x && x.stringp == 1;")))
 
 (define-builtin string-upcase (x)
   (code "make_lisp_string(xstring(" x ").toUpperCase())"))
 
-(define-builtin string-length (x)
-  (code x ".length"))
-
 (define-raw-builtin slice (vector a &optional b)
   (js!selfcall
     "var vector = " (ls-compile vector) ";" *newline*
 (define-builtin concat-two (string1 string2)
   (js!selfcall
     "var r = " string1 ".concat(" string2 ");" *newline*
-    "r.type = 'character';"
+    "r.stringp = 1;"
     "return r;" *newline*))
 
 (define-raw-builtin funcall (func &rest args)
     "return x[i] = " value ";" *newline*))
 
 
-;;; FIXME: should take optional min-extension.
-;;; FIXME: should use fill-pointer instead of the absolute end of array
-(define-builtin vector-push-extend (new vector)
-  (js!selfcall
-    "var v = " vector ";" *newline*
-    "v.push(" new ");" *newline*
-    "return v;"))
-
-(define-builtin aref (array n)
-  (js!selfcall
-    "var x = " "(" array ")[" n "];" *newline*
-    "if (x === undefined) throw 'Out of range';" *newline*
-    "return x;" *newline*))
-
-(define-builtin aset (array n value)
-  (js!selfcall
-    "var x = " array ";" *newline*
-    "var i = " n ";" *newline*
-    "if (i < 0 || i >= x.length) throw 'Out of range';" *newline*
-    "return x[i] = " value ";" *newline*))
-
-(define-builtin afind (value array)
-  (js!selfcall
-    "var v = " value ";" *newline*
-    "var x = " array ";" *newline*
-    "return x.indexOf(v);" *newline*))
-
-(define-builtin aresize (array new-size)
-  (js!selfcall
-    "var x = " array ";" *newline*
-    "var n = " new-size ";" *newline*
-    "return x.length = n;" *newline*))
-
-
 
 (define-builtin get-internal-real-time ()
   "(new Date()).getTime()")