[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))))