]> git.llucax.com Git - z.facultad/75.68/celdas.git/blob - trunk/src/plugin.cpp
383cffce07af78d65fed5af9904a9e47e0f71a61
[z.facultad/75.68/celdas.git] / trunk / src / plugin.cpp
1 #include "sistemaautonomo.h"\r
2 #include "slBrevePluginAPI.h"\r
3 #include <iostream>\r
4 \r
5 /////////////////////////// CTeoria /////////////////////////\r
6 \r
7 double NoOp(CEntorno&) { return 0.0; } // FIXME (hack horrible porque no puedo usar ptr a fun)\r
8 \r
9 // pointer{Teoria} TeoriaNew(string, int, int, int)\r
10 int SAbrTeoriaNew(brEval args[], brEval* result, void* data)\r
11 {\r
12         result->set(new CTeoria(\r
13                 BRSTRING(args),\r
14                 NoOp, // FIXME (no hay puntero a funcion, poner BRINT(args+1))\r
15                 BRINT(args+2),\r
16                 BRINT(args+3)));\r
17         return EC_OK;\r
18 }\r
19 \r
20 // void TeoriaAddDatoInicial(pointer{Teoria}, string, double)\r
21 int SAbrTeoriaAddDatoInicial(brEval args[], brEval* result, void* data)\r
22 {\r
23         CTeoria* t = (CTeoria*) BRPOINTER(args);\r
24         t->datos_iniciales.add(BRSTRING(args+1), BRINT(args+2));\r
25         return EC_OK;\r
26 }\r
27 \r
28 // void TeoriaAddDatoFinal(pointer{Teoria}, string, double)\r
29 int SAbrTeoriaAddDatoFinal(brEval args[], brEval* result, void* data)\r
30 {\r
31         CTeoria* t = (CTeoria*) BRPOINTER(args);\r
32         t->datos_finales.add(BRSTRING(args+1), BRINT(args+2));\r
33         return EC_OK;\r
34 }\r
35 \r
36 // void TeoriaDelete(pointer{Teoria})\r
37 int SAbrTeoriaDelete(brEval args[], brEval* result, void* data)\r
38 {\r
39         delete (CTeoria*) BRPOINTER(args);\r
40         return EC_OK;\r
41 }\r
42 \r
43 \r
44 /////////////////////////// CSistemaAutonomo /////////////////////////\r
45 \r
46 // pointer{SistemaAutonomo} SistemaAutonomoNew()\r
47 int SAbrSistemaAutonomoNew(brEval args[], brEval* result, void* data)\r
48 {\r
49         result->set(new CSistemaAutonomo());\r
50         return EC_OK;\r
51 }\r
52 \r
53 // void SistemaAutonomoAddTeoria(pointer{SistemaAutonomo}, pointer{Teoria})\r
54 int SAbrSistemaAutonomoAddTeoria(brEval args[], brEval* result, void* data)\r
55 {\r
56         CSistemaAutonomo* sa = (CSistemaAutonomo*) BRPOINTER(args);\r
57         CTeoria* t = (CTeoria*) BRPOINTER(args+1);\r
58         sa->teorias.add(t->nombre.c_str(), *t);\r
59         return EC_OK;\r
60 }\r
61 \r
62 // void SistemaAutonomoDelete(pointer{SistemaAutonomo})\r
63 int SAbrSistemaAutonomoDelete(brEval args[], brEval* result, void* data)\r
64 {\r
65         delete (CSistemaAutonomo*) BRPOINTER(args);\r
66         return EC_OK;\r
67 }\r
68 \r
69 \r
70 DLLEXPORT void SAbrFunctions(void *data)\r
71 {\r
72         brNewBreveCall(data, "TeoriaNew", SAbrTeoriaNew,\r
73                        AT_POINTER, AT_STRING, AT_INT, AT_INT, AT_INT, 0);\r
74         brNewBreveCall(data, "TeoriaAddDatoInicial", SAbrTeoriaAddDatoInicial,\r
75                        AT_NULL, AT_POINTER, AT_STRING, AT_DOUBLE, 0);\r
76         brNewBreveCall(data, "TeoriaAddDatoFinal", SAbrTeoriaAddDatoFinal,\r
77                        AT_NULL, AT_POINTER, AT_STRING, AT_DOUBLE, 0);\r
78         brNewBreveCall(data, "TeoriaDelete", SAbrTeoriaDelete,\r
79                        AT_NULL, AT_POINTER, 0);\r
80         brNewBreveCall(data, "SistemaAutonomoNew", SAbrSistemaAutonomoNew,\r
81                        AT_POINTER, 0);\r
82         brNewBreveCall(data, "SistemaAutonomoAddTeoria", SAbrSistemaAutonomoAddTeoria,\r
83                        AT_NULL, AT_POINTER, AT_POINTER, 0);\r
84         brNewBreveCall(data, "SistemaAutonomoDelete", SAbrSistemaAutonomoDelete,\r
85                        AT_NULL, AT_POINTER, 0);\r
86 }\r
87 \r