Version 1.8.5: Fix long-long detection
[uffi.git] / src / i18n.lisp
index 1d6a485145458426532d4d568d079cd9bcf5d5cd..ca2c1b439f392b176012041e730bbc7dce339689 100644 (file)
@@ -58,8 +58,7 @@ encoding.")
 (defun lookup-foreign-encoding (normalized)
   (cdr (assoc normalized *foreign-encoding-mapping* :test 'eql)))
 
-(defmacro string-to-octets (str &key (encoding *default-foreign-encoding*))
-  "Converts a Lisp string to a vector of octets."
+(defmacro string-to-octets (str &key encoding)
   (declare (ignorable encoding))
   #-(or allegro lispworks openmcl sbcl)
   (map-into (make-array (length str) :element-type '(unsigned-byte 8))
@@ -69,7 +68,7 @@ encoding.")
   (let ((fe (gensym "FE-"))
         (ife (gensym "IFE-"))
         (s (gensym "STR-")))
-    `(let* ((,fe ,encoding)
+    `(let* ((,fe (or ,encoding *default-foreign-encoding*))
             (,ife (when ,fe (lookup-foreign-encoding ,fe)))
             (,s ,str))
        (values
@@ -87,7 +86,7 @@ encoding.")
   (let ((fe (gensym "FE-"))
         (ife (gensym "IFE-"))
         (s (gensym "STR-")))
-    `(let* ((,fe ,encoding)
+    `(let* ((,fe (or ,encoding *default-foreign-encoding*))
             (,ife (when ,fe (lookup-foreign-encoding ,fe)))
             (,s ,str))
        (if ,ife
@@ -96,7 +95,7 @@ encoding.")
 
 )
 
-(defmacro octets-to-string (octets &key (encoding *default-foreign-encoding*))
+(defmacro octets-to-string (octets &key encoding)
   "Converts a vector of octets to a Lisp string."
   (declare (ignorable encoding))
   #-(or allegro lispworks openmcl sbcl)
@@ -110,7 +109,7 @@ encoding.")
   (let ((fe (gensym "FE-"))
         (ife (gensym "IFE-"))
         (oct (gensym "OCTETS-")))
-    `(let* ((,fe ,encoding)
+    `(let* ((,fe (or ,encoding *default-foreign-encoding*))
             (,ife (when ,fe (lookup-foreign-encoding ,fe)))
             (,oct ,octets))
        (values
@@ -130,7 +129,7 @@ encoding.")
   (let ((fe (gensym "FE-"))
         (ife (gensym "IFE-"))
         (oct (gensym "OCTETS-")))
-    `(let* ((,fe ,encoding)
+    `(let* ((,fe (or ,encoding *default-foreign-encoding*))
             (,ife (when ,fe (lookup-foreign-encoding ,fe)))
             (,oct ,octets))
        (if ,ife
@@ -139,7 +138,7 @@ encoding.")
 
 )
 
-(defun foreign-encoded-octet-count (str &key (encoding *default-foreign-encoding*))
+(defun foreign-encoded-octet-count (str &key encoding)
   "Returns the octets required to represent the string when passed to a ~
 foreign function."
   (declare (ignorable encoding))
@@ -148,7 +147,8 @@ foreign function."
   ;; with external-format
 
   #+(or (and allegro ics) (and sbcl sb-unicode) (and clisp i18n))
-  (length (string-to-octets str :encoding encoding))
+  (length (string-to-octets str :encoding
+                            (or encoding *default-foreign-encoding*)))
 
   #-(or (and allegro ics) (and sbcl sb-unicode) (and clisp i18n))
   (length str)