Project

General

Profile

Definition of the links between Scol language and DLL functions » History » Version 1

ModularMix, 10/14/2011 03:53 PM

1 1 ModularMix
h1. Definition of the links between Scol language and DLL functions
2 1 ModularMix
3 1 ModularMix
This example shows the possibility to add new functions to Scol language using the integration of plugins written in C/C++ language.
4 1 ModularMix
5 1 ModularMix
h2. Création d'une fonction "HelloWorld"
6 1 ModularMix
Nous allons créer notre première fonction C qui pourra être appelée à partir du langage Scol.
7 1 ModularMix
Cette fonction, permettra d'afficher un petit message d'accueil "Hello World" qui apparaitra dans la console Scol.
8 1 ModularMix
Commencez par écrire la fonction C. Notez la signature de la fonction, elle doit prendre comme paramètre un objet '''mmachine''', et retourner un entier.
9 1 ModularMix
10 1 ModularMix
Notez également la fonction de l'API Scol '''MMechostr'''. Cette fonction prend deux paramètre, le niveau de log ('''MSKFOO''', '''MSKRUNTIME''', '''MSKWARNING''', '''MSKTRACE''' ou '''MSKDEBUG'''), et le message à loguer en second argument.
11 1 ModularMix
12 1 ModularMix
Enfin, notez la fonction '''MMSet''', qui permet comme nous l'avons déjà vu d'assigner une valeur au premier élément de la pile Scol (en l'occurrence un entier de valeur 0), celle-ci correspondant '''à la valeur de retour de la fonction Scol''', conformément au prototype Scol attendu ('''fun [ ] I''', soit une fonction sans aucun paramètre, et retournant un entier).
13 1 ModularMix
<code>
14 1 ModularMix
 /*! @ingroup group1
15 1 ModularMix
  * \brief _HelloWorld : Log a "Hello World" message in the console
16 1 ModularMix
  *
17 1 ModularMix
  * <b>Prototype:</b> fun [] I
18 1 ModularMix
  *
19 1 ModularMix
  * \return I : 0 in all cases.
20 1 ModularMix
  **/
21 1 ModularMix
 int _HelloWorld(mmachine m)
22 1 ModularMix
 {
23 1 ModularMix
     // Show the message
24 1 ModularMix
     MMechostr(MSKRUNTIME, "Hello World!");
25 1 ModularMix
 
26 1 ModularMix
     // Scol return value.
27 1 ModularMix
     MMset(m,0,0);
28 1 ModularMix
 
29 1 ModularMix
     return 0;
30 1 ModularMix
 }
31 1 ModularMix
</code>