From 6f9e13dce93373f7d20686acea0e67bc275c2302 Mon Sep 17 00:00:00 2001 From: Fredrik Tolf Date: Wed, 10 Mar 2010 05:16:36 +0100 Subject: [PATCH] Introduced a default codec function. --- charcode.lisp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/charcode.lisp b/charcode.lisp index 68ef0de..db516eb 100644 --- a/charcode.lisp +++ b/charcode.lisp @@ -3,7 +3,7 @@ (defpackage :charcode (:use :cl #+sbcl :sb-gray #-sbcl :gray) - (:export "MAKE-ENCODER" "MAKE-DECODER" "ENCODE-STRING" "DECODE-STRING" + (:export "MAKE-ENCODER" "MAKE-DECODER" "ENCODE-STRING" "DECODE-STRING" "SYSTEM-CHARSET" "CODING-ERROR" "MAKE-CODEC-CHARACTER-STREAM" "LATIN-1" "LATIN1" "UTF-8" "UTF8")) @@ -51,7 +51,11 @@ (defun make-decoder (name) (the decoder-fun (values (funcall (get name 'make-decoder))))) -(defun encode-string (string coding) +(defun system-charset () + ;; XXX: Replace me with something perhaps more sensible. + 'utf-8) + +(defun encode-string (string &optional (coding (system-charset))) (declare (type string string)) (let ((encoder (make-encoder coding)) (buf (make-array (list (length string)) :element-type '(unsigned-byte 8) :adjustable t :fill-pointer 0))) @@ -59,7 +63,7 @@ (coding-error string (length string) buf "Encoding of string in ~A ended prematurely." coding)) buf)) -(defun decode-string (buffer coding) +(defun decode-string (buffer &optional (coding (system-charset))) (declare (type (array (unsigned-byte 8)) buffer)) (let ((decoder (make-decoder coding)) (buf (make-array (list (length buffer)) :element-type 'character :adjustable t :fill-pointer 0))) @@ -76,7 +80,7 @@ (read-pos :initform 0) (buffer :initform (make-array '(64) :element-type 'character :adjustable t :fill-pointer 0)))) -(defun make-codec-character-stream (real-stream charset) +(defun make-codec-character-stream (real-stream &optional (charset (system-charset))) (declare (type stream real-stream)) (make-instance 'codec-character-stream :decoder (make-decoder charset) :encoder (make-encoder charset) :back real-stream)) -- 2.11.0