* [Caml-list] Questions about the C interface
@ 2003-02-13 6:39 Falk Hueffner
2003-02-26 16:49 ` Damien Doligez
0 siblings, 1 reply; 2+ messages in thread
From: Falk Hueffner @ 2003-02-13 6:39 UTC (permalink / raw)
To: caml-list
Hi,
I would like to use C functions to manipulate small binary objects and
Ocaml to manage these objects in data structures. So far, I used
alloc_small(WORDS, Abstract_tag) to allocate them. However, that means
I cannot put them into a Hashtbl, and I cannot compare them. Do I need
"custom blocks" to achieve that? I don't really need any fancy
comparison or hash function, plain memcmp and hash would do. So I
would like to save the overhead of one pointer per object and the more
costly calling.
Also, I'm wondering when exactly I need CAMLparam/local. I would think
that if I don't allocate anything in the C function, I don't need to
protect locals. The manual doesn't mention that, though. Also, I would
think that values that are really ints don't need protection...
Finally, I wonder why the first parameter to alloc_custom (the ops
block) is not a const pointer?
--
Falk
-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [Caml-list] Questions about the C interface
2003-02-13 6:39 [Caml-list] Questions about the C interface Falk Hueffner
@ 2003-02-26 16:49 ` Damien Doligez
0 siblings, 0 replies; 2+ messages in thread
From: Damien Doligez @ 2003-02-26 16:49 UTC (permalink / raw)
To: caml-list
On Thursday, February 13, 2003, at 07:39 AM, Falk Hueffner wrote:
> I would like to use C functions to manipulate small binary objects and
> Ocaml to manage these objects in data structures. So far, I used
> alloc_small(WORDS, Abstract_tag) to allocate them. However, that means
> I cannot put them into a Hashtbl, and I cannot compare them. Do I need
> "custom blocks" to achieve that?
Yes.
> I don't really need any fancy
> comparison or hash function, plain memcmp and hash would do. So I
> would like to save the overhead of one pointer per object and the more
> costly calling.
Unfortunately, we don't have a tag for uninterpreted binary data.
The closest we have is strings, but you'd still lose one word,
because of the final NUL byte.
> Also, I'm wondering when exactly I need CAMLparam/local.
If you want to know *exactly*, then the answer is incredibly
complex.
> I would think
> that if I don't allocate anything in the C function, I don't need to
> protect locals.
That's true.
> Also, I would
> think that values that are really ints don't need protection...
Also true.
> The manual doesn't mention that, though.
Taking advantage of all these exceptions is very error-prone, and we
don't want to encourage it.
> Finally, I wonder why the first parameter to alloc_custom (the ops
> block) is not a const pointer?
Because we don't believe in the const keyword. It's more trouble
than it's worth.
-- Damien
-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2003-02-26 16:48 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-02-13 6:39 [Caml-list] Questions about the C interface Falk Hueffner
2003-02-26 16:49 ` Damien Doligez
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox