Move string-length to non-primitive
[jscl.git] / src / string.lisp
index 6f88024..1bb322b 100644 (file)
 ;; You should have received a copy of the GNU General Public License
 ;; along with JSCL.  If not, see <http://www.gnu.org/licenses/>.
 
-;; (defun stringp (x)
-;;   (and (vectorp x) (eq (array-element-type x) 'character)))
+(defun stringp (s)
+  (stringp s))
+
+(defun string-length (string)
+  (storage-vector-size string))
+
+(defun make-string (n &key initial-element)
+  (make-array n :element-type 'character :initial-element initial-element))
 
 (defun string (x)
   (cond ((stringp x) x)
         ((symbolp x) (symbol-name x))
-        (t (char-to-string x))))
+        (t (make-string 1 :initial-element x))))
 
 (defun string= (s1 s2)
   (let* ((s1 (string s1))
@@ -41,9 +47,6 @@
                (when (and (= i (1- len-1)) (> len-2 len-1))
                  (return-from string< (1+ i))))))))
 
-(defun stringp (s)
-  (stringp s))
-
 (define-setf-expander char (string index)
   (let ((g!string (gensym))
         (g!index (gensym))