caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
* [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;
as well as URLs for NNTP newsgroup(s).