<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Keith -- I'm glad to hear that your port is going well.  I'm taking the liberty of forwarding your message to the OpenMCL-Devel e-mail list, where it has more of a chance of being answered.<div><br></div><div>Andrew<br><div><br><div>Begin forwarded message:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Helvetica" size="3" color="#000000" style="font: 12.0px Helvetica; color: #000000"><b>From: </b></font><font face="Helvetica" size="3" style="font: 12.0px Helvetica">"Keith L. Downing" <<a href="mailto:Keith.Downing@idi.ntnu.no">Keith.Downing@idi.ntnu.no</a>></font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Helvetica" size="3" color="#000000" style="font: 12.0px Helvetica; color: #000000"><b>Date: </b></font><font face="Helvetica" size="3" style="font: 12.0px Helvetica">April 20, 2008 4:58:21 PM EDT</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Helvetica" size="3" color="#000000" style="font: 12.0px Helvetica; color: #000000"><b>To: </b></font><font face="Helvetica" size="3" style="font: 12.0px Helvetica">Discussion list for MCL users <<a href="mailto:info-mcl@clozure.com">info-mcl@clozure.com</a>></font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Helvetica" size="3" color="#000000" style="font: 12.0px Helvetica; color: #000000"><b>Subject: </b></font><font face="Helvetica" size="3" style="font: 12.0px Helvetica"><b>[info-mcl] Making C arrays in OpenMCL</b></font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Helvetica" size="3" color="#000000" style="font: 12.0px Helvetica; color: #000000"><b>Reply-To: </b></font><font face="Helvetica" size="3" style="font: 12.0px Helvetica">Discussion list for MCL users <<a href="mailto:info-mcl@clozure.com">info-mcl@clozure.com</a>></font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><br></div> </div><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="font-family: Times; font-size: 16px; "><pre class="example">As part of my graphics conversion from MCL to OpenMCL (which is actually going quite well), I'm trying to</pre><pre class="example">use a variety of line types: solid, dash, dash-dot, etc.  I declare each type as a CL global variable, which</pre><pre class="example">then points to an object that houses, among other things, a pointer to a small C array that codes the</pre><pre class="example">specification for the line type (as described in the "COCOA Drawing Guide" (pg. 75)).  It's the pointer to</pre><pre class="example">this array that then gets passed to Objective C for drawing the line (as part of a Bezier curve).</pre><pre class="example"><br class="webkit-block-placeholder"></pre><pre class="example">However, I'm having trouble creating these arrays in Objective C via the foreign-function interface.  My impression</pre><pre class="example">is that make-heap-ivector will do this for me, and it does seem to work when the element-type argument</pre><pre class="example">is '(unsigned-byte 64), for example.  But it doesn't seem to work when I use '(double-float 64).  And it</pre><pre class="example">appears that the Obj-C drawing routines need a float array for the line-type specification.  </pre><pre class="example"><br class="webkit-block-placeholder"></pre><pre class="example">Does anyone know if make-heap-ivector really works for all element types, or if there's a different list of</pre><pre class="example">foreign type keywords than those listed in the OpenMCL online documentation?  Or maybe there's just a better way to</pre><pre class="example">create C arrays in OpenMCL?  make-heap-ivector makes it LOOK so easy, but maybe it's not very general?  So far, I</pre><pre class="example">can't get it to work with any of the float types (single-float or double-float).</pre><pre class="example"><br class="webkit-block-placeholder"></pre><pre class="example">(defun make-heap-ivector (element-count element-type)
       (let* ((subtag (ccl::element-type-subtype element-type)))
         (unless (= (logand subtag target::fulltagmask)
                    target::fulltag-immheader)
           (error "~s is not an ivector subtype." element-type))
         (let* ((size-in-bytes (ccl::subtag-bytes subtag element-count)))
           (ccl::%make-heap-ivector subtag size-in-bytes element-count))))
     MAKE-HEAP-IVECTOR</pre><pre class="example"><br class="webkit-block-placeholder"></pre><pre class="example">Cheers...</pre><pre class="example"><br class="webkit-block-placeholder"></pre><pre class="example">  Keith Downing (who hopes to quietly recede into the shadows of this mailing list once this graphics conversion is complete)</pre><pre class="example">  Trondheim, Norway</pre></span></div>_______________________________________________<br>info-mcl mailing list<br><a href="mailto:info-mcl@clozure.com">info-mcl@clozure.com</a><br>http://clozure.com/mailman/listinfo/info-mcl<br></blockquote></div><br></div></body></html>