Constness of a pointer, in c and c++ means absolutely nothing. It is just a way for programmer to self policy, same as private/public in c++/java, they are only for compilers to throw errors and programmers to avoid those errors. In memory, it is just data, and as data, in c you can force compiler to represent them in any way, ie cast. Anyways, glad to be help.


2013/7/7 Dietrich Bollmann <dietrich@formgames.org>
On Sun, Jul 7, 2013 at 9:48 PM, ... <...> wrote:

Why cant you just cast it in the inline part? (void*) comes to mind...

Because I thought that it is not possible to "cast away" a const qualification...

...But you are completely right:  even if this might not be a good thing to do under normal circumstances, it actually is possible and solves the problem :)

Thanks for the advice!

Dietrich



On Sun, Jul 7, 2013 at 8:52 PM, Dietrich Bollmann <dietrich@formgames.org> wrote:
Hi,

How can I wrap and return the constant pointer 

  const CRhinoCommandContext *context;

with c-inline?

Using something like

  (ffi:c-inline () () :pointer-void "context" :one-liner t)

results in the error

  error C2664: 'ecl_make_foreign_data' : cannot convert parameter 3 from 'const CRhinoCommandContext *' to 'void *'
        Conversion loses qualifiers

But I couldn't find something like :const-pointer-void...

How can I solve this problem?

Thanks,

Dietrich





--
Bc. Peter Vaņu¹anik