content.txt
2.46 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
!1 Création d'une nouvelle fonction mathématique
!2 Objectif
L'objectif de cette page est de créer une nouvelle fonction mathématique.
Cela permettra de créer un fichier xml décrivant un paramètre contenant une balise process du type '''!-<process>newFunction($dst)</process>-!'''
!2 Procédure
Il faut créer au moins un fichier .hh d'interface.
De plus un fichier .so (librairie dynamique) contenant le code compilé de la fonction pourra être créé ''cas classique''.
Ces 2 fichiers doivent être positionnés dans le répertoire {app.plugin}/newFunction
!2 Example:
!3 Création la fonction '''newFunction'''
Cette fonction prendra un tableau 1 D en paramètre et retournera un flottant.
!4 1 Créer le fichier .hh
Le fichier devra se nommer '''newFunction.hh'''
son contenue sera du type:
{{{
#ifndef NEWFUNCTION_HH_ //is required
#define NEWFUNCTION_HH_
#include <vector> //for the AMDA type tab 1 D
std::vector<float>newFunction(const float& el); //is the prototype at the new function
#endif /* NEWFUNCTION_HH_ */
}}}
!4 2 Creer un fichier .cc
Ce fichier devra implémenter l'interface ''newFunction.hh''.
Par example '''newFunction.cc''', sont contenu sera du type:
{{{
#include "newFunction.hh"
//add all necessary include
#include <math.h>
std::vector<float>newFunction(const float& el)
{
std::vector<float> r;
r.push_back(el);
r.push_back(el);
r.push_back(el);
return r;
}
}}}
!4 3 Compiler le fichier .cc en un fichier .so
{{{
c++ -DMagnitude_EXPORTS -g -std=c++0x -fPIC -Wall -ggdb -DLINUX -Dlinux -D_REENTRANT -malign-double -pthread -fPIC -o newFunction.o -c newFunction.cc
c++ -fPIC -g -std=c++0x -fPIC -Wall -ggdb -DLINUX -Dlinux -D_REENTRANT -malign-double -pthread -shared -Wl,-soname,libnewFunction.so -o libnewFunction.so newFunction.o
}}}
!4 4 Créer le plugin
Soit {app.plugin} le répertoire de plugin indiqué dans le fichier de properties ''app.properties'' d'AMDA. Ce répertoire est indiqué par la propriété app.plugin
Créer dans le répertoire ''{app.plugin}'' un répertoire du nom de la nouvelle fonction. i.e. ''newFunction''.
Puis dans ce nouveau répertoire: '''{app.plugin}/newFunction''' copier le fichier '''newFunction.hh''' et le fichier '''newFunction.so'''
Si votre plugin dépend de librairie dynamique supplémentaire, vous pouvez copier (ou créer des liens symboliques) ces librairies dans le répertoire ''{app.plugin}/newFunction''. Ces librairies seront prises en compte.
!contents -R2 -g -p -f -h