I tried this but it did not work cause the type is prefixed with a column and when interning<div>it returns a symbol prefixed by a backslash</div><div><br></div><div><div>> Error: Unknown foreign type: :\'<XE>XPOSE<E>VENT</div>
<div>> While executing: CCL::%PARSE-FOREIGN-TYPE, in process listener(1).</div><div>> Type :GO to continue, :POP to abort, :R for a list of available restarts.</div><div>> If continued: Skip loading init file.</div>
<div><br></div><div>Taoufik</div><br><div class="gmail_quote">On Mon, Jan 25, 2010 at 10:30 AM, Ron Garret <span dir="ltr"><<a href="mailto:ron@flownet.com">ron@flownet.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Try something like:<br>
<br>
(defmacro xpref (thing type slotname)<br>
  `(pref ,thing ,(intern (format nil "~A.~A" type slotname))))<br>
<br>
rg<br>
<div><div></div><div class="h5"><br>
On Jan 25, 2010, at 12:25 AM, Taoufik Dachraoui wrote:<br>
<br>
> Hi<br>
><br>
> I have the following code:<br>
><br>
> (defmacro defonevent (onevent eventtype xstruct)<br>
>   `(defmacro ,onevent (&rest body)<br>
>      `(progn<br>
>       (if (null (gethash (window *context*) %event-handlers%))<br>
>           (setf (gethash (window *context*) %event-handlers%) (make-hash-table)))<br>
>       (setf (gethash ,',eventtype (gethash (window *context*) %event-handlers%))<br>
>             #'(lambda (event)<br>
>                 (macrolet ((this (var) `(xpref event ',',',xstruct ,var)))<br>
>                   (this window) ; to avoid the warning if the event is not used in the body<br>
>                   ,@body))))))<br>
><br>
> (defonevent on-expose #$Expose :<XE>xpose<E>vent)<br>
> (defonevent on-buttonpress #$ButtonPress :<XB>utton<E>vent)<br>
> (defonevent on-buttonrelease #$ButtonRelease :<XB>utton<E>vent)<br>
> (defonevent on-keypress #$KeyPress :<XK>ey<E>vent)<br>
> (defonevent on-keyrelease #$KeyRelease :<XK>ey<E>vent)<br>
> (defonevent on-clientmessage #$ClientMessage :<XC>lient<M>essage<E>vent)<br>
> (defonevent on-mapnotify #$MappingNotify :<XM>ap<E>vent)<br>
><br>
><br>
> ; usage<br>
> (cell ....<br>
>   (on-expose<br>
>      (drawline 0 0 (this width) (this height)))<br>
>   ...<br>
>  )<br>
><br>
><br>
> The issue is that I do not know how to implement xpref. The pref macro takes an accessor of the form<br>
> type.field but I need a macro that takes the type of the structure and the field name separately.<br>
><br>
> Thank you for your help<br>
><br>
> Taoufik<br>
</div></div>> _______________________________________________<br>
> Openmcl-devel mailing list<br>
> <a href="mailto:Openmcl-devel@clozure.com">Openmcl-devel@clozure.com</a><br>
> <a href="http://clozure.com/mailman/listinfo/openmcl-devel" target="_blank">http://clozure.com/mailman/listinfo/openmcl-devel</a><br>
<br>
</blockquote></div><br></div>