cbaggers / cepl

Code Evaluate Play Loop
BSD 2-Clause "Simplified" License
860 stars 52 forks source link

defstruct-g: accessor nil gives (setf nil) error #183

Open cbaggers opened 7 years ago

cbaggers commented 7 years ago
(defstruct-g (erosion-uvs :accesors nil)
  (left :vec2)
  (right :vec2)
  (top :vec2)
  (bottom :vec2)
  (top-left :vec2)
  (top-right :vec2)
  (bottom-left :vec2)
  (bottom-right :vec2))

; caught WARNING: ; The function NIL is undefined, and its name is reserved by ANSI CL so that even ; if it were defined later, the code doing so would not be portable.

dumb mistake.

cbaggers commented 6 years ago

GET-TYPED-TO-FOREIGN & POPULATE-* are the causes of this.

(defstruct-g (erosion-uvs :accesors nil)
  (left :vec2)
  (right :vec2)
  (top :vec2)
  (bottom :vec2)
  (top-left :vec2)
  (top-right :vec2)
  (bottom-left :vec2)
  (bottom-right :vec2))

becomes

(PROGN
 (EVAL-WHEN (:COMPILE-TOPLEVEL :LOAD-TOPLEVEL :EXECUTE)
   (V-DEFSTRUCT (EROSION-UVS :SHADOWING V_EROSION-UVS)
       NIL
     (LEFT :VEC2)
     (RIGHT :VEC2)
     (TOP :VEC2)
     (BOTTOM :VEC2)
     (TOP-LEFT :VEC2)
     (TOP-RIGHT :VEC2)
     (BOTTOM-LEFT :VEC2)
     (BOTTOM-RIGHT :VEC2)))
 (EVAL-WHEN (:COMPILE-TOPLEVEL :LOAD-TOPLEVEL :EXECUTE)
   (CFFI:DEFCSTRUCT CEPL.HIDDEN::MOO.EROSION-UVS.FOREIGN
     (LEFT :VEC2)
     (RIGHT :VEC2)
     (TOP :VEC2)
     (BOTTOM :VEC2)
     (TOP-LEFT :VEC2)
     (TOP-RIGHT :VEC2)
     (BOTTOM-LEFT :VEC2)
     (BOTTOM-RIGHT :VEC2))
   (CFFI:DEFINE-FOREIGN-TYPE CEPL.HIDDEN::MOO.EROSION-UVS.CFFI-CT-TYPE NIL NIL
                             (:ACTUAL-TYPE :STRUCT
                              CEPL.HIDDEN::MOO.EROSION-UVS.FOREIGN)
                             (:SIMPLE-PARSER EROSION-UVS))
   (DEFMETHOD CFFI:TRANSLATE-FROM-FOREIGN
              (CEPL.TYPES::PTR
               (TYPE CEPL.HIDDEN::MOO.EROSION-UVS.CFFI-CT-TYPE))
     (CEPL.HIDDEN::MOO.EROSION-UVS.MAKE CEPL.TYPES::PTR))
   (DEFMETHOD CFFI:EXPAND-FROM-FOREIGN
              (CEPL.TYPES::PTR
               (TYPE CEPL.HIDDEN::MOO.EROSION-UVS.CFFI-CT-TYPE))
     (LIST 'CEPL.HIDDEN::MOO.EROSION-UVS.MAKE CEPL.TYPES::PTR)))
 (DEFSTRUCT
     (EROSION-UVS (:CONC-NAME NIL)
      (:CONSTRUCTOR CEPL.HIDDEN::MOO.EROSION-UVS.MAKE
       (CEPL.HIDDEN::MOO.EROSION-UVS.PTR))
      (:COPIER NIL))
   (CEPL.HIDDEN::MOO.EROSION-UVS.PTR (CFFI-SYS:NULL-POINTER) :TYPE
                                     CFFI-SYS:FOREIGN-POINTER :READ-ONLY T))
 (%RTG-MATH:DEFN-INLINE CEPL.HIDDEN::MOO.EROSION-UVS.FROM-FOREIGN
     ((CEPL.TYPES::PTR CFFI-SYS:FOREIGN-POINTER))
     EROSION-UVS
   (DECLARE (OPTIMIZE (SPEED 3) (SAFETY 0) (DEBUG 0)))
   (CEPL.HIDDEN::MOO.EROSION-UVS.MAKE CEPL.TYPES::PTR))
 (%RTG-MATH:DEFN-INLINE CEPL.HIDDEN::MOO.EROSION-UVS.TO-FOREIGN
     ((CEPL.TYPES::PTR CFFI-SYS:FOREIGN-POINTER) (CEPL.TYPES::VALUE T))
     T
   (DECLARE (OPTIMIZE (SPEED 3) (SAFETY 0) (DEBUG 0)))
   (POPULATE-EROSION-UVS (CEPL.HIDDEN::MOO.EROSION-UVS.MAKE CEPL.TYPES::PTR)
                         CEPL.TYPES::VALUE))
 (DEFMETHOD GET-TYPED-FROM-FOREIGN ((CEPL.TYPES::TYPE-NAME (EQL 'EROSION-UVS)))
   #'CEPL.HIDDEN::MOO.EROSION-UVS.FROM-FOREIGN)
 (DEFMETHOD GET-TYPED-TO-FOREIGN ((CEPL.TYPES::TYPE-NAME (EQL 'EROSION-UVS)))
   #'CEPL.HIDDEN::MOO.EROSION-UVS.TO-FOREIGN)
 (CEPL-UTILS:DEFUN+ MAKE-EROSION-UVS
     (&KEY LEFT RIGHT TOP BOTTOM TOP-LEFT TOP-RIGHT BOTTOM-LEFT BOTTOM-RIGHT)
   (LET ((CEPL.TYPES::RESULT (CFFI:FOREIGN-ALLOC 'EROSION-UVS)))
     (WHEN LEFT (SETF (NIL CEPL.TYPES::RESULT) LEFT))
     (WHEN RIGHT (SETF (NIL CEPL.TYPES::RESULT) RIGHT))
     (WHEN TOP (SETF (NIL CEPL.TYPES::RESULT) TOP))
     (WHEN BOTTOM (SETF (NIL CEPL.TYPES::RESULT) BOTTOM))
     (WHEN TOP-LEFT (SETF (NIL CEPL.TYPES::RESULT) TOP-LEFT))
     (WHEN TOP-RIGHT (SETF (NIL CEPL.TYPES::RESULT) TOP-RIGHT))
     (WHEN BOTTOM-LEFT (SETF (NIL CEPL.TYPES::RESULT) BOTTOM-LEFT))
     (WHEN BOTTOM-RIGHT (SETF (NIL CEPL.TYPES::RESULT) BOTTOM-RIGHT))
     CEPL.TYPES::RESULT))
 (PROGN
  (DEFMETHOD CEPL.INTERNALS:GL-ASSIGN-ATTRIB-POINTERS
             ((CEPL.TYPES::ARRAY-TYPE (EQL 'EROSION-UVS))
              &OPTIONAL (CEPL.TYPES::ATTRIB-OFFSET 0)
              (CEPL.TYPES::POINTER-OFFSET 0) CEPL.TYPES::STRIDE-OVERRIDE
              CEPL.TYPES::NORMALIZED CEPL.TYPES::INSTANCE-DIVISOR)
    (DECLARE (IGNORE CEPL.TYPES::ARRAY-TYPE CEPL.TYPES::NORMALIZED))
    (LET ((#:|stride793|
           (OR CEPL.TYPES::STRIDE-OVERRIDE
               (CEPL.INTERNALS:GL-TYPE-SIZE 'EROSION-UVS))))
      (CL-OPENGL-BINDINGS:ENABLE-VERTEX-ATTRIB-ARRAY
       (+ CEPL.TYPES::ATTRIB-OFFSET 0))
      (WHEN CEPL.TYPES::INSTANCE-DIVISOR
        (CL-OPENGL-BINDINGS:VERTEX-ATTRIB-DIVISOR
         (+ CEPL.TYPES::ATTRIB-OFFSET 0) CEPL.TYPES::INSTANCE-DIVISOR))
      (CL-OPENGL-BINDINGS:VERTEX-ATTRIB-POINTER (+ CEPL.TYPES::ATTRIB-OFFSET 0)
                                                2 :FLOAT NIL #:|stride793|
                                                (CFFI-SYS:MAKE-POINTER
                                                 (+ 0
                                                    CEPL.TYPES::POINTER-OFFSET)))
      (CL-OPENGL-BINDINGS:ENABLE-VERTEX-ATTRIB-ARRAY
       (+ CEPL.TYPES::ATTRIB-OFFSET 1))
      (WHEN CEPL.TYPES::INSTANCE-DIVISOR
        (CL-OPENGL-BINDINGS:VERTEX-ATTRIB-DIVISOR
         (+ CEPL.TYPES::ATTRIB-OFFSET 1) CEPL.TYPES::INSTANCE-DIVISOR))
      (CL-OPENGL-BINDINGS:VERTEX-ATTRIB-POINTER (+ CEPL.TYPES::ATTRIB-OFFSET 1)
                                                2 :FLOAT NIL #:|stride793|
                                                (CFFI-SYS:MAKE-POINTER
                                                 (+ 8
                                                    CEPL.TYPES::POINTER-OFFSET)))
      (CL-OPENGL-BINDINGS:ENABLE-VERTEX-ATTRIB-ARRAY
       (+ CEPL.TYPES::ATTRIB-OFFSET 2))
      (WHEN CEPL.TYPES::INSTANCE-DIVISOR
        (CL-OPENGL-BINDINGS:VERTEX-ATTRIB-DIVISOR
         (+ CEPL.TYPES::ATTRIB-OFFSET 2) CEPL.TYPES::INSTANCE-DIVISOR))
      (CL-OPENGL-BINDINGS:VERTEX-ATTRIB-POINTER (+ CEPL.TYPES::ATTRIB-OFFSET 2)
                                                2 :FLOAT NIL #:|stride793|
                                                (CFFI-SYS:MAKE-POINTER
                                                 (+ 16
                                                    CEPL.TYPES::POINTER-OFFSET)))
      (CL-OPENGL-BINDINGS:ENABLE-VERTEX-ATTRIB-ARRAY
       (+ CEPL.TYPES::ATTRIB-OFFSET 3))
      (WHEN CEPL.TYPES::INSTANCE-DIVISOR
        (CL-OPENGL-BINDINGS:VERTEX-ATTRIB-DIVISOR
         (+ CEPL.TYPES::ATTRIB-OFFSET 3) CEPL.TYPES::INSTANCE-DIVISOR))
      (CL-OPENGL-BINDINGS:VERTEX-ATTRIB-POINTER (+ CEPL.TYPES::ATTRIB-OFFSET 3)
                                                2 :FLOAT NIL #:|stride793|
                                                (CFFI-SYS:MAKE-POINTER
                                                 (+ 24
                                                    CEPL.TYPES::POINTER-OFFSET)))
      (CL-OPENGL-BINDINGS:ENABLE-VERTEX-ATTRIB-ARRAY
       (+ CEPL.TYPES::ATTRIB-OFFSET 4))
      (WHEN CEPL.TYPES::INSTANCE-DIVISOR
        (CL-OPENGL-BINDINGS:VERTEX-ATTRIB-DIVISOR
         (+ CEPL.TYPES::ATTRIB-OFFSET 4) CEPL.TYPES::INSTANCE-DIVISOR))
      (CL-OPENGL-BINDINGS:VERTEX-ATTRIB-POINTER (+ CEPL.TYPES::ATTRIB-OFFSET 4)
                                                2 :FLOAT NIL #:|stride793|
                                                (CFFI-SYS:MAKE-POINTER
                                                 (+ 32
                                                    CEPL.TYPES::POINTER-OFFSET)))
      (CL-OPENGL-BINDINGS:ENABLE-VERTEX-ATTRIB-ARRAY
       (+ CEPL.TYPES::ATTRIB-OFFSET 5))
      (WHEN CEPL.TYPES::INSTANCE-DIVISOR
        (CL-OPENGL-BINDINGS:VERTEX-ATTRIB-DIVISOR
         (+ CEPL.TYPES::ATTRIB-OFFSET 5) CEPL.TYPES::INSTANCE-DIVISOR))
      (CL-OPENGL-BINDINGS:VERTEX-ATTRIB-POINTER (+ CEPL.TYPES::ATTRIB-OFFSET 5)
                                                2 :FLOAT NIL #:|stride793|
                                                (CFFI-SYS:MAKE-POINTER
                                                 (+ 40
                                                    CEPL.TYPES::POINTER-OFFSET)))
      (CL-OPENGL-BINDINGS:ENABLE-VERTEX-ATTRIB-ARRAY
       (+ CEPL.TYPES::ATTRIB-OFFSET 6))
      (WHEN CEPL.TYPES::INSTANCE-DIVISOR
        (CL-OPENGL-BINDINGS:VERTEX-ATTRIB-DIVISOR
         (+ CEPL.TYPES::ATTRIB-OFFSET 6) CEPL.TYPES::INSTANCE-DIVISOR))
      (CL-OPENGL-BINDINGS:VERTEX-ATTRIB-POINTER (+ CEPL.TYPES::ATTRIB-OFFSET 6)
                                                2 :FLOAT NIL #:|stride793|
                                                (CFFI-SYS:MAKE-POINTER
                                                 (+ 48
                                                    CEPL.TYPES::POINTER-OFFSET)))
      (CL-OPENGL-BINDINGS:ENABLE-VERTEX-ATTRIB-ARRAY
       (+ CEPL.TYPES::ATTRIB-OFFSET 7))
      (WHEN CEPL.TYPES::INSTANCE-DIVISOR
        (CL-OPENGL-BINDINGS:VERTEX-ATTRIB-DIVISOR
         (+ CEPL.TYPES::ATTRIB-OFFSET 7) CEPL.TYPES::INSTANCE-DIVISOR))
      (CL-OPENGL-BINDINGS:VERTEX-ATTRIB-POINTER (+ CEPL.TYPES::ATTRIB-OFFSET 7)
                                                2 :FLOAT NIL #:|stride793|
                                                (CFFI-SYS:MAKE-POINTER
                                                 (+ 56
                                                    CEPL.TYPES::POINTER-OFFSET)))
      8)))
 (CEPL-UTILS:DEFUN+ POPULATE-EROSION-UVS
     (CEPL.TYPES::OBJECT CEPL.TYPES::DATA)
   (DECLARE (TYPE EROSION-UVS CEPL.TYPES::OBJECT))
   (UNLESS (OR (VECTORP CEPL.TYPES::DATA) (LISTP CEPL.TYPES::DATA))
     (ERROR "can only populate a struct of type ~a with a list or an array"
            'EROSION-UVS))
   (SETF (NIL CEPL.TYPES::OBJECT) (ELT CEPL.TYPES::DATA 0))
   (SETF (NIL CEPL.TYPES::OBJECT) (ELT CEPL.TYPES::DATA 1))
   (SETF (NIL CEPL.TYPES::OBJECT) (ELT CEPL.TYPES::DATA 2))
   (SETF (NIL CEPL.TYPES::OBJECT) (ELT CEPL.TYPES::DATA 3))
   (SETF (NIL CEPL.TYPES::OBJECT) (ELT CEPL.TYPES::DATA 4))
   (SETF (NIL CEPL.TYPES::OBJECT) (ELT CEPL.TYPES::DATA 5))
   (SETF (NIL CEPL.TYPES::OBJECT) (ELT CEPL.TYPES::DATA 6))
   (SETF (NIL CEPL.TYPES::OBJECT) (ELT CEPL.TYPES::DATA 7))
   CEPL.TYPES::OBJECT)
 (DEFMETHOD CEPL.INTERNALS:POPULATE
            ((CEPL.TYPES::OBJECT EROSION-UVS) CEPL.TYPES::DATA)
   (POPULATE-EROSION-UVS CEPL.TYPES::OBJECT CEPL.TYPES::DATA))
 NIL
 (DEFMETHOD PULL-G ((CEPL.TYPES::OBJECT EROSION-UVS))
   (LIST (NIL CEPL.TYPES::OBJECT) (NIL CEPL.TYPES::OBJECT)
         (NIL CEPL.TYPES::OBJECT) (NIL CEPL.TYPES::OBJECT)
         (NIL CEPL.TYPES::OBJECT) (NIL CEPL.TYPES::OBJECT)
         (NIL CEPL.TYPES::OBJECT) (NIL CEPL.TYPES::OBJECT)))
 (DEFMETHOD PULL1-G ((CEPL.TYPES::OBJECT EROSION-UVS))
   (LIST (NIL CEPL.TYPES::OBJECT) (NIL CEPL.TYPES::OBJECT)
         (NIL CEPL.TYPES::OBJECT) (NIL CEPL.TYPES::OBJECT)
         (NIL CEPL.TYPES::OBJECT) (NIL CEPL.TYPES::OBJECT)
         (NIL CEPL.TYPES::OBJECT) (NIL CEPL.TYPES::OBJECT)))
 (DEFMETHOD PUSH-G
            ((CEPL.TYPES::OBJECT LIST) (CEPL.TYPES::DESTINATION EROSION-UVS))
   (CEPL.INTERNALS:POPULATE CEPL.TYPES::DESTINATION CEPL.TYPES::OBJECT))
 (DEFMETHOD CEPL.INTERNALS:SYMBOL-NAMES-CEPL-STRUCTP
            ((CEPL.TYPES::SYM (EQL 'EROSION-UVS)))
   T)
 'EROSION-UVS)