Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (defmethod pack ((element cqm-base-element))
- (let ((number-of-slots 7) (segment-size 16) (number-of-segments 0))
- (setf number-of-segments
- (+ number-of-slots 1 5
- (multiple-value-bind (q r) (floor (length (sym element)) segment-size) (+ q (if (> r 0) 1 0)))
- (multiple-value-bind (q r) (floor (length (long-name element)) segment-size) (+ q (if (> r 0) 1 0)))))
- (let ((buffer (foreign-alloc :char :count (* number-of-segments segment-size))))
- (setf (mem-ref buffer :int 0) number-of-slots)
- (setf (mem-ref buffer :int (* 1 segment-size)) (length (sym element))
- (mem-ref buffer :int (* 2 segment-size)) (length (long-name element))
- (mem-ref buffer :int (* 3 segment-size)) 1
- (mem-ref buffer :int (* 4 segment-size)) 1
- (mem-ref buffer :int (* 5 segment-size)) 1
- (mem-ref buffer :int (* 6 segment-size)) 1
- (mem-ref buffer :int (* 7 segment-size)) 1)
- buffer)))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement