Mailing list for all users of the OCaml language and system.
 help / color / mirror / Atom feed
From: Patrick Goldbronn - SYSCO <patrick.goldbronn@cea.fr>
To: caml Inria <caml-list@inria.fr>
Subject: information sur camlidl (passage des tableaux)
Date: Tue, 03 Aug 1999 09:41:52 +0000	[thread overview]
Message-ID: <37A6B960.3AFB0560@cea.fr> (raw)

Bonjour,

J'essaie d'utiliser camlidl pour intégrer une librairie C permettant
d'accéder à des fichiers sous le format HDF.

La particularité de cette librairie est qu'elle ne fait pas d'allocation
mémoire. Lorsqu'on lit un tableau, il faut l'avoir alloué avant et le
passer en argument pour le remplir !

Le problème avec camlidl, c'est qu'il transforme le tableau caml en
tableau C et qu'il alloue un nouveau tableau caml qu'il remplit avec le
tableau C retourné.
Peut-on spécifier à camlidl qu'il s'agit en fait du meme tableau et
qu'il n'a pas besoin d'en creer un nouveau.

Autres remarques : 
Pourquoi ne pas se servir du fait que les tableaux de double caml sont
les "memes" que les tableaux C et ne passer que le pointeur au lieu de
dupliquer (comme cela est fait pour les strings !).

Peut-on paramétrer camlidl pour qu'il fasse des actions spécifiques
selon le type de l'argument ? 
Par exemple, j'utilise un type caml représentant un tableau de
dimensions quelconques contenant un tableau d'entier (les dimensions du
tableau) et un bloc avec le tag alloc_final contenant un pointeur vers
un tableau C.

type float_array  = {   
    fvect    : float_array_adr    ;
    fdims    : int array          ;
 } ;;

Je définis une struct C le représentant.

struct float_array {
   double *fvect ;
   int *fdims ;
}

Comment dire à camlidl que "int* fdims" et "fdims : int array" doivent
etre recopié lorsqu'on passe de caml au C et réciproquement
(fonctionnement normal) et que "double *fvect" et "fvect :
float_array_adr" ne doivent pas être recopié mais simplement extraire
les pointeurs (en tenant compte de l'alloc_final) ?
( si j'ai bien compris la doc et le source générer, cela à voir avec les
fonctions ...c2ml... et ...ml2c...)
Merci d'avance.


PS : Peut-on trouver quelque part des exemples ou des informations
supplémentaires sur l'utilisation de camlidl ?

-- 
#####################################
# Patrick GOLDBRONN                 #
# CEA - DRN/DMT/SYSCO               #
# CE-Saclay, Bâtiment 460           #
# 91191 GIF/YVETTE CEDEX (FRANCE)   #
#                                   #
# Tél : 01 69 08 40 66              #
# Fax : 01 69 08 96 96              #
#####################################




             reply	other threads:[~1999-08-12 10:10 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1999-08-03  9:41 Patrick Goldbronn - SYSCO [this message]
1999-08-15 13:25 ` Xavier Leroy

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=37A6B960.3AFB0560@cea.fr \
    --to=patrick.goldbronn@cea.fr \
    --cc=caml-list@inria.fr \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox