Version française
Home     About     Download     Resources     Contact us    
Browse thread
Re: [Caml-list] void/unit in C calls
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: Jed Davis <jdev@p...>
Subject: [Caml-list] Re: void/unit in C calls
"Lars Nilsson" <lazarus13@hotmail.com> writes:

> Does this indicate an error in the O'Caml manual, section 18.5.1, where
>
>   void foo(value v1, value v2, value v3)
>   {
>     CAMLparam3(v1, v2, v3);
>
>     CAMLreturn0;
>   }
>
> is used, in addition to a paragraph preceeding it in the same section
> saying "If your C function is a procedure you must insert CAMLreturn0
> at the end"? In fact, CAMLreturn0 existing at all seems to imply the
> fact that unit-returning functions (from O'Caml's point of view) can
> be void in the C implementation.

It doesn't say that foo() is meant to be the implementation of an
external in and of itself; in fact, the absence of a CAMLprim
indicates that it's not meant to be one.  It's just that any function
that might set off a GC needs to declare its "value"s so they can be
updated if the referenced blocks are moved, and thus needs a matching
CAMLreturn.


-- 
[Jed Davis]              A098 903E 9B9A DEF4 168F  AA09 BF07 807E F336 59F9
 <jdev@panix.com>                                               0xF33659F9
  "But life wasn't yes-no, on-off.  Life was shades of gray, and rainbows
   not in the order of the spectrum." -- L. E. Modesitt, Jr., _Adiamante_