Bonjour,
je me suis mis récemment à m'intéresser à l'interface C/Ocaml. Or j'ai besoin d'appeler une fonction en C prenant en paramètre un tableau de flottant ; il n'y a cependant pas de macro DoubleField_val ou équivalent, qui permette de traduire canoniquement en C le contenu d'un tableau Ocaml de flottant.
Ou alors je ne l'ai pas trouvée, c'est également possible.
L'idée de contournement, c'est de créer un tableau C, et le remplir par des flottants au fur et à mesure. C'est possible, grace à double_field qui permet d'accéder à un élément précis d'un tableau de flottant Ocaml, en C.
Maintenant, j'aimerais savoir quelle est la meilleure méthode : la méthode C ou la méthode Ocaml ? En effet, on peut (LablGL le fait) créer le tableau de flottant C (sa taille etc) depuis Ocaml, et le remplir à l'aide d'une fonction Ocaml flottant par flottant. Ou bien on peut tout faire en C, avec une fonction du style :
int *convert (value v)
{int *tableau;
tableau=malloc (Wo_size(v));
(for i=0,i<Wo_size(v),i++)
{tab[i]=Double_field (v,i);}
return tableau;
}
Dans ce cas, tout se passe en C (je n'ai pas testé la fonction ci-dessus, elle est probablement fausse).
Bref, est ce que c'est mieux de faire que C travaille sur des values Ocaml, ou bien est ce mieux de faire manipuler à Ocaml des structures C qui lui sont abstraites ?
Partager