<html><body><div style="color:#000; background-color:#fff; font-family:HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif;font-size:10pt"><div style="" class="" itemprop="description">

        <div style="" class="">I have these C bindings for the C++ vector which I have wrapped in CFFI.  I know how to create vectors with <code style="" class="">std_carrayTovector</code> and convert the data back to a int pointer with <code style="" class="">std_vectorToCArray</code>
 so that  I can retrieve data from it in Lisp using the CFFI function 
MEM-AREF. I have correct defcfuns written for the below .  My question 
is how to I convert the output of my defcfun for <code style="" class="">std_vectorToCArray</code>  at the bottom of the page, into a Lisp vector eg <code style="" class="">#(1 2 3)</code> and make it a 0(1) operation/all data copied at the same time.</div>

<pre style="" class=""><code style="" class=""><span style="" class="">vector_int</span><span style="" class="">*</span><span style="" class=""> std_carrayTovector</span><span style="" class="">(</span><span style="" class="">int</span><span style="" class="">*</span><span style="" class=""> a</span><span style="" class="">,</span><span style="" class=""> </span><span style="" class="">size_t</span><span style="" class=""> len</span><span style="" class="">)</span><span style="" class=""> </span><span style="" class="">{</span><span style="" class="">
    vector</span><span style="" class=""><int></span><span style="" class="">*</span><span style="" class=""> v </span><span style="" class="">=</span><span style="" class=""> </span><span style="" class="">new</span><span style="" class=""> vector</span><span style="" class=""><int></span><span style="" class="">;</span><span style="" class="">
    </span><span style="" class="">for</span><span style="" class="">(</span><span style="" class="">size_t</span><span style="" class=""> i </span><span style="" class="">=</span><span style="" class=""> </span><span style="" class="">0</span><span style="" class="">;</span><span style="" class=""> i </span><span style="" class=""><</span><span style="" class=""> len</span><span style="" class="">;</span><span style="" class=""> i</span><span style="" class="">++)</span><span style="" class=""> 
        v</span><span style="" class="">-></span><span style="" class="">push_back</span><span style="" class="">(</span><span style="" class="">a</span><span style="" class="">[</span><span style="" class="">i</span><span style="" class="">]);</span><span style="" class="">
    </span><span style="" class="">return</span><span style="" class=""> v</span><span style="" class="">;</span><span style="" class="">
</span><span style="" class="">}</span><span style="" class="">

</span><span style="" class="">int</span><span style="" class="">*</span><span style="" class=""> std_vectorToCArray</span><span style="" class="">(</span><span style="" class="">vector_int</span><span style="" class="">*</span><span style="" class=""> s</span><span style="" class="">)</span><span style="" class=""> </span><span style="" class="">{</span><span style="" class="">
    </span><span style="" class="">return</span><span style="" class=""> s</span><span style="" class="">-></span><span style="" class="">data</span><span style="" class="">();</span><span style="" class="">
</span><span style="" class="">}</span><span style="" class="">


</span><span style="" class="">(</span><span style="" class="">defcfun </span><span style="" class="">(</span><span style="" class="">"std_vectori_to_carray"</span><span style="" class=""> </span><span style="" class="">%</span><span style="" class="">vector</span><span style="" class="">-</span><span style="" class="">int</span><span style="" class="">-</span><span style="" class="">to</span><span style="" class="">-</span><span style="" class="">c</span><span style="" class="">-</span><span style="" class="">array</span><span style="" class="">)</span><span style="" class=""> </span><span style="" class="">:</span><span style="" class="">pointer 
  </span><span style="" class="">(</span><span style="" class="">s </span><span style="" class="">(:</span><span style="" class="">pointer vector</span><span style="" class="">-</span><span style="" class="">int</span><span style="" class="">)))</span></code></pre>

    </div><div style="" class=""><br style="" class=""></div></div></body></html>