From 7aa51baa06dce0ae006afb70fa745a1467fece09 Mon Sep 17 00:00:00 2001 From: Avril Date: Mon, 11 May 2020 17:48:59 +0100 Subject: [PATCH] fucking weird bug where it overwrites cffi functions????? --- cl-sipc.lisp | 1 + package.lisp | 3 +++ pointer.lisp | 45 +++++++++++++++++++++++---------------------- 3 files changed, 27 insertions(+), 22 deletions(-) diff --git a/cl-sipc.lisp b/cl-sipc.lisp index c8e0ef6..30c2698 100644 --- a/cl-sipc.lisp +++ b/cl-sipc.lisp @@ -1,6 +1,7 @@ ;; cl-sipc (in-package :cl-sipc) +(use-package :cl-sipc-mem) (defparameter *on-error* #'(lambda (err) nil)) (defparameter *on-message* #'(lambda (msg) diff --git a/package.lisp b/package.lisp index 9327906..7332d47 100644 --- a/package.lisp +++ b/package.lisp @@ -4,3 +4,6 @@ (:use #:cl #:cffi) (:nicknames :sipc)) + +(defpackage #:cl-sipc-mem + (:use #:cl)) diff --git a/pointer.lisp b/pointer.lisp index c97673d..3f3bf8c 100644 --- a/pointer.lisp +++ b/pointer.lisp @@ -1,6 +1,6 @@ ;; pointer -(in-package :cl-sipc) +(in-package :cl-sipc-mem) (defstruct pointer memory @@ -44,18 +44,18 @@ (type (or (caddr desc) :unsigned-char)) (pointer-from-type-infer (gensym))) (let ((makeptr - (cond ((eql type0 :string) `(pointer-from-string ,from)) - ((eql type0 :sequence) `(pointer-from-seq ,from ,type)) - ((eql type0 :single) `(pointer-from ,from ,type)) - (t `(,pointer-from-type-infer ,from ,type))))) + (cond ((eql type0 :string) `(pointer-from-string ,from)) + ((eql type0 :sequence) `(pointer-from-seq ,from ,type)) + ((eql type0 :single) `(pointer-from ,from ,type)) + (t `(,pointer-from-type-infer ,from ,type))))) `(flet ((,pointer-from-type-infer (fr ty) - (cond ((stringp fr) (pointer-from-string fr)) - ((or (vectorp fr) - (listp fr)) (pointer-from-seq fr ty)) - (t (pointer-from fr ty))))) + (cond ((stringp fr) (pointer-from-string fr)) + ((or (vectorp fr) + (listp fr)) (pointer-from-seq fr ty)) + (t (pointer-from fr ty))))) (let* ((,name ,makeptr) (result - (progn ,@body))) + (progn ,@body))) (pointer-free ,name) result))))) @@ -67,18 +67,19 @@ "pointer to Lisp vector" (let ((vec (make-array (pointer-size ptr) :initial-element 0))) (loop for x from 0 below (pointer-size ptr) - do (setf (aref vec x) (mem-aref (pointer-memory ptr) type x))) + do (setf (aref vec x) (mem-aref (pointer-memory ptr) type x))) vec)) -(mapc #'export '( make-pointer - pointer - pointer-memory - pointer-p - pointer-size +(mapc #'export '( + + pointer + pointer-memory + pointer-p + pointer-size - pointer-from-string - pointer-from-seq - pointer-from - with-pointer - pointer-to-array - pointer-free)) + pointer-from-string + pointer-from-seq + pointer-from + with-pointer + pointer-to-array + pointer-free))