uffi/src strings.lisp,1.8,1.9

"Kevin M. Rosenberg" <[email protected]> Thu, 12 Jun 2003 12:32:33 -0600
Newsgroups gmane.lisp.uffi.cvs
Message-ID <[email protected]>
Update of /pubcvs/uffi/src
In directory boa.b9.com:/tmp/cvs-serv20987/debian/src/uffi/src

Modified Files:
	strings.lisp 
Log Message:


Index: strings.lisp
===================================================================
RCS file: /pubcvs/uffi/src/strings.lisp,v
retrieving revision 1.8
retrieving revision 1.9
diff -C2 -d -r1.8 -r1.9
*** strings.lisp	6 Jun 2003 21:59:18 -0000	1.8
--- strings.lisp	12 Jun 2003 18:32:30 -0000	1.9
***************
*** 309,313 ****
    :returning :unsigned-int)
  
! #+(or lispworks (and allegro ics))
  (defun fast-native-to-string (s)
    (declare (optimize (speed 3) (space 0) (safety 0) (compilation-speed 0))
--- 309,316 ----
    :returning :unsigned-int)
  
! (def-type char-ptr-def (* :unsigned-char))
! 
! ;;#+(or lispworks (and allegro ics))
! #+(or lispworks allegro)
  (defun fast-native-to-string (s)
    (declare (optimize (speed 3) (space 0) (safety 0) (compilation-speed 0))
***************
*** 316,348 ****
  	 (str (make-string len)))
      (declare (fixnum len)
! 	     (simple-string str))
!     (do ((i 0))
! 	((= i len))
!       (declare (fixnum i))
!       (setf (schar str i)
! 	(code-char (uffi:deref-array s '(:array :unsigned-char) i)))
!       (incf i))
!     str))
  
! #+(and allegro (not ics))
  (defun fast-native-to-string (s)
!   (declare (optimize (speed 3) (space 0) (safety 0) (compilation-speed 0))
  	   (type char-ptr-def s))
    (let* ((len (strlen s))
! 	 (len4 (floor len 4))
! 	 (str (make-string len)))
!     (declare (fixnum len)
! 	     (type (simple-array (signed-byte 32) (*)) str))
!     (do ((i 0))
! 	((= i len4))
        (declare (fixnum i))
!       (setf (aref (the (simple-array (signed-byte 32) (*)) str) i)
! 	(uffi:deref-array s '(:array :int) i))
! 	(incf i))
!     (do ((i (* 4 len4)))
! 	((= i len))
        (declare (fixnum i))
!       (setf (aref (the (simple-array (signed-byte 8) (*)) str) i)
! 	(uffi:deref-array s '(:array :unsigned-char) i))
!       (incf i))
      str))
--- 319,346 ----
  	 (str (make-string len)))
      (declare (fixnum len)
! 	     (type (simple-array (signed-byte 8) (*)) str))
!     (dotimes (i len str)
!       (setf (aref str i) (uffi:deref-array s '(:array :char) i)))))
  
! ;;#+(and allegro (not ics))
! #+ignore
  (defun fast-native-to-string (s)
!   (declare (optimize (speed 3) (space 0) (safety 0) (compilation-speed 0) (debug 0))
  	   (type char-ptr-def s))
    (let* ((len (strlen s))
! 	 (len4 (the fixnum (ash (the fixnum len) -2)))
! 	 (end4 (the fixnum (ash (the fixnum len4) 2)))
! 	 (remainder (the fixnum (- len end4)))
! 	 (str (make-string len))
! 	 (str4 str))
!     (declare (type fixnum len len4 end4 remainder)
! 	     (type (simple-array (signed-byte 32) (*)) str4)
! 	     (type (simple-array (signed-byte 8) (*)) str))
!     (dotimes (i len4)
        (declare (fixnum i))
!       (setf (aref str4 i) (uffi:deref-array s '(:array :int) i)))
!     (dotimes (i remainder)
        (declare (fixnum i))
!       (setf (aref str end4) (uffi:deref-array s '(:array :char) end4))
!       (incf end4))
      str))