Code: Select all
(defmacro ? (ptr type &optional (index 0))
`(cond ((pointerp ,ptr)
(return-from ? (mem-aref ,ptr ,type ,index)))
((not (pointerp ,ptr))
(return-from ? mem-aref (c-pointer ,ptr) ,type ,index)))
(t 0)))
Code: Select all
(defmacro ? (ptr type &optional (index 0))
`(cond ((pointerp ,ptr)
(return-from ? (mem-aref ,ptr ,type ,index)))
((not (pointerp ,ptr))
(return-from ? mem-aref (c-pointer ,ptr) ,type ,index)))
(t 0)))
Code: Select all
(defun resolve-pointer (ptr)
(if (pointerp ptr) ptr (c-pointer ptr)))
(defmacro ? (ptr type &optional (index 0))
`(mem-aref (resolve-pointer ,ptr) ,type ,index))
Code: Select all
(setf (? *ptr* *type* *index*) ...) ; => (setf (mem-aref (resolve-pointer *ptr*) *type* *index*) ...)
Code: Select all
(defun resolve-pointer (ptr) ptr)