Advertisement
Guest User

Untitled

a guest
Oct 16th, 2020
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.92 KB | None | 0 0
  1. (defmethod pack ((element cqm-base-element))
  2. (let ((number-of-slots 7) (segment-size 16) (number-of-segments 0))
  3. (setf number-of-segments
  4. (+ number-of-slots 1 5
  5. (multiple-value-bind (q r) (floor (length (sym element)) segment-size) (+ q (if (> r 0) 1 0)))
  6. (multiple-value-bind (q r) (floor (length (long-name element)) segment-size) (+ q (if (> r 0) 1 0)))))
  7. (let ((buffer (foreign-alloc :char :count (* number-of-segments segment-size))))
  8. (setf (mem-ref buffer :int 0) number-of-slots)
  9. (setf (mem-ref buffer :int (* 1 segment-size)) (length (sym element))
  10. (mem-ref buffer :int (* 2 segment-size)) (length (long-name element))
  11. (mem-ref buffer :int (* 3 segment-size)) 1
  12. (mem-ref buffer :int (* 4 segment-size)) 1
  13. (mem-ref buffer :int (* 5 segment-size)) 1
  14. (mem-ref buffer :int (* 6 segment-size)) 1
  15. (mem-ref buffer :int (* 7 segment-size)) 1)
  16. buffer)))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement