[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: duplicate-resource
- To: wilcox@cmns.think.com
- Subject: Re: duplicate-resource
- From: "Mark A. Tapia" <markt@dgp.toronto.edu>
- Date: Tue, 11 Aug 1992 11:29:26 -0400
- Cc: info-mcl@cambridge.apple.com
wilcox@cmns.think.com writes:
The file resources.lisp is a great improvement over the resource tools
provided in MACL 1.3 (i.e. none). However, it does not do one thing I
need (which I think is fairly basic): duplicate a resource from one file
to another. According to Inside Macintosh I-124, this involves the traps
_AddResource, _DetachResource and _HandToHand. (Unfortunately, they do not
include a LISP example!) My attempt at writing a function for this resulted
merely in the Mac Bomb Box. Any suggestions or code would be appreciated.
The library:resources.lisp contains high level interfaces to add-resource
detach-resource that make the traps calls much easier. You'll still need
to copy the resource handle and presumably create a new resource id
unless you want to use the same resource id.
If you want to copy a handle, you'll need to include the following
code for copying handles (courtesy of Bill St. Clair):
(in-package ccl)
(export '(copy-handle))
;; wrapper for handToHand trap call
(defun copy-handle (handle)
"returns a handle whose contents is a copy of the input handle's contents"
(rlet ((var :ptr))
(ccl::%set-ptr var handle)
(let ((errcode (#_HandToHand var)))
(unless (eql 0 errcode)
(ccl::%err-disp errcode))
(%get-ptr var))))