- (define-array-copy! COPY! ...)syntax
Defines a destructive array copier, and generates a type declaration for the procedure.
Usage:
(define-array-copy! COPY! (ARMOR-NAME "STRUCT_NAME" PRED UNWRAP LENGTH))
COPY! is the procedure name to define.
ARMOR-NAME is the record type name for the array, such as the record name passed to define-armor-type.
"STRUCT_NAME" is a string containing the name of the C struct/union, exactly as it appears in C.
PRED is an existing type predicate for the array record type, such as a procedure defined with define-armor-type.
UNWRAP is an existing armor unwrapper procedure, such as a procedure defined with define-armor-type.
LENGTH is an existing procedure that returns the array length, such as an extra slot getter defined with define-armor-type.
Example:
(define-array-copy! event-array-copy! (event-array "FOO_Event" event-array? unwrap-event-array event-array-length)) ;; Define a non-destructive version which creates a new array. (define (event-array-copy from #!optional (start 0) (end (event-array-length from))) (let ((new-array (make-event-array (- end start)))) (event-array-copy! new-array 0 from start end) new-array))