]> git.llucax.com Git - z.facultad/75.68/celdas.git/blob - trunk/src/plugin.cpp
Últimos cambios y documentación.
[z.facultad/75.68/celdas.git] / trunk / src / plugin.cpp
1 #include "sistemaautonomo.h"\r
2 #include "slBrevePluginAPI.h"\r
3 \r
4 #ifdef DEBUG\r
5 #include <iostream>\r
6 #endif // DEBUG\r
7 \r
8 /////////////////////////// CTeoria /////////////////////////\r
9 \r
10 // pointer{Teoria} TeoriaNew(string, string, int, int)\r
11 int SAbrTeoriaNew(brEval args[], brEval* result, void* data)\r
12 {\r
13         result->set(new CTeoria(\r
14                 BRSTRING(args),\r
15                 BRSTRING(args+1),\r
16                 BRINT(args+2),\r
17                 BRINT(args+3)));\r
18         return EC_OK;\r
19 }\r
20 \r
21 // void TeoriaSetDatoInicial(pointer{Teoria}, string, float)\r
22 int SAbrTeoriaSetDatoInicial(brEval args[], brEval* result, void* data)\r
23 {\r
24         CTeoria* t = (CTeoria*) BRPOINTER(args);\r
25         t->datos_iniciales.set_val(BRSTRING(args+1), BRDOUBLE(args+2));\r
26         return EC_OK;\r
27 }\r
28 \r
29 // void TeoriaSetDatoFinal(pointer{Teoria}, string, float)\r
30 int SAbrTeoriaSetDatoFinal(brEval args[], brEval* result, void* data)\r
31 {\r
32         CTeoria* t = (CTeoria*) BRPOINTER(args);\r
33         t->datos_finales.set_val(BRSTRING(args+1), BRDOUBLE(args+2));\r
34         return EC_OK;\r
35 }\r
36 \r
37 // string TeoriaGetNombre(pointer{Teoria})\r
38 int SAbrTeoriaGetNombre(brEval args[], brEval* result, void* data)\r
39 {\r
40         CTeoria* t = (CTeoria*) BRPOINTER(args);\r
41         result->set(t->nombre.c_str());\r
42         return EC_OK;\r
43 }\r
44 \r
45 // string TeoriaGetAccion(pointer{Teoria})\r
46 int SAbrTeoriaGetAccion(brEval args[], brEval* result, void* data)\r
47 {\r
48         CTeoria* t = (CTeoria*) BRPOINTER(args);\r
49         result->set(t->funcion.c_str());\r
50         return EC_OK;\r
51 }\r
52 \r
53 \r
54 /////////////////////////// CSistemaAutonomo /////////////////////////\r
55 \r
56 // pointer{SistemaAutonomo} SistemaAutonomoNew(int, int)\r
57 int SAbrSistemaAutonomoNew(brEval args[], brEval* result, void* data)\r
58 {\r
59         result->set(new CSistemaAutonomo(BRINT(args), BRINT(args+1)));\r
60         return EC_OK;\r
61 }\r
62 \r
63 // void SistemaAutonomoAddTeoria(pointer{SistemaAutonomo}, pointer{Teoria})\r
64 int SAbrSistemaAutonomoAddTeoria(brEval args[], brEval* result, void* data)\r
65 {\r
66         CSistemaAutonomo* sa = (CSistemaAutonomo*) BRPOINTER(args);\r
67         CTeoria* t = (CTeoria*) BRPOINTER(args+1);\r
68         sa->teorias.add(t->nombre, t);\r
69 #ifdef DEBUG\r
70         std::cout << "Agrega teoria " << *t << ":\n";\r
71         std::cout << "\tdatos_iniciales:\n" << t->datos_iniciales << "\n";\r
72         std::cout << "\tdatos_finales:\n" << t->datos_finales << "\n";\r
73 #endif // DEBUG\r
74 #ifdef LOG\r
75         std::cout << "Agrega teoria: " << *t << "," << t->datos_iniciales << "," << t->datos_finales << "\n";\r
76 #endif // LOG\r
77         return EC_OK;\r
78 }\r
79 \r
80 // void SistemaAutonomoSetValue(pointer{SistemaAutonomo}, string, float)\r
81 int SAbrSistemaAutonomoSetValue(brEval args[], brEval* result, void* data)\r
82 {\r
83         CSistemaAutonomo* sa = (CSistemaAutonomo*) BRPOINTER(args);\r
84         sa->p_entorno->datos.set_val(BRSTRING(args+1), BRDOUBLE(args+2));\r
85         return EC_OK;\r
86 }\r
87 \r
88 // void SistemaAutonomoSetDatoFinal(pointer{SistemaAutonomo}, string, float)\r
89 int SAbrSistemaAutonomoSetDatoFinal(brEval args[], brEval* result, void* data)\r
90 {\r
91         CSistemaAutonomo* sa = (CSistemaAutonomo*) BRPOINTER(args);\r
92         sa->m_datos_finales.set_val(BRSTRING(args+1), BRDOUBLE(args+2));\r
93         return EC_OK;\r
94 }\r
95 \r
96 // void SistemaAutonomoPlan(pointer{SistemaAutonomo})\r
97 int SAbrSistemaAutonomoPlan(brEval args[], brEval* result, void* data)\r
98 {\r
99         CSistemaAutonomo* sa = (CSistemaAutonomo*) BRPOINTER(args);\r
100         sa->plan();\r
101         return EC_OK;\r
102 }\r
103 \r
104 // bool SistemaAutonomoHasNextTheory(pointer{SistemaAutonomo})\r
105 int SAbrSistemaAutonomoHasNextTheory(brEval args[], brEval* result, void* data)\r
106 {\r
107         CSistemaAutonomo* sa = (CSistemaAutonomo*) BRPOINTER(args);\r
108         result->set(sa->has_next_theory());\r
109         return EC_OK;\r
110 }\r
111 \r
112 // pointer{Teoria} SistemaAutonomoGetNextTheory(pointer{SistemaAutonomo})\r
113 int SAbrSistemaAutonomoGetNextTheory(brEval args[], brEval* result, void* data)\r
114 {\r
115         CSistemaAutonomo* sa = (CSistemaAutonomo*) BRPOINTER(args);\r
116         result->set(sa->get_next_theory());\r
117         return EC_OK;\r
118 }\r
119 \r
120 // bool SistemaAutonomoValidateTheory(pointer{SistemaAutonomo}, pointer{Teoria})\r
121 int SAbrSistemaAutonomoValidateTheory(brEval args[], brEval* result, void* data)\r
122 {\r
123         CSistemaAutonomo* sa = (CSistemaAutonomo*) BRPOINTER(args);\r
124         result->set(sa->validate_theory((CTeoria*) BRPOINTER(args+1)));\r
125         return EC_OK;\r
126 }\r
127 \r
128 // void SistemaAutonomoDelete(pointer{SistemaAutonomo})\r
129 int SAbrSistemaAutonomoDelete(brEval args[], brEval* result, void* data)\r
130 {\r
131         delete (CSistemaAutonomo*) BRPOINTER(args);\r
132         return EC_OK;\r
133 }\r
134 \r
135 \r
136 DLLEXPORT void SAbrFunctions(void *data)\r
137 {\r
138         brNewBreveCall(data, "TeoriaNew", SAbrTeoriaNew,\r
139                        AT_POINTER, AT_STRING, AT_STRING, AT_INT, AT_INT, 0);\r
140         brNewBreveCall(data, "TeoriaSetDatoInicial", SAbrTeoriaSetDatoInicial,\r
141                        AT_NULL, AT_POINTER, AT_STRING, AT_DOUBLE, 0);\r
142         brNewBreveCall(data, "TeoriaSetDatoFinal", SAbrTeoriaSetDatoFinal,\r
143                        AT_NULL, AT_POINTER, AT_STRING, AT_DOUBLE, 0);\r
144         brNewBreveCall(data, "TeoriaGetNombre", SAbrTeoriaGetNombre,\r
145                        AT_STRING, AT_POINTER, 0);\r
146         brNewBreveCall(data, "TeoriaGetAccion", SAbrTeoriaGetAccion,\r
147                        AT_STRING, AT_POINTER, 0);\r
148         brNewBreveCall(data, "SistemaAutonomoNew", SAbrSistemaAutonomoNew,\r
149                        AT_POINTER, AT_INT, AT_INT, 0);\r
150         brNewBreveCall(data, "SistemaAutonomoAddTeoria", SAbrSistemaAutonomoAddTeoria,\r
151                        AT_NULL, AT_POINTER, AT_POINTER, 0);\r
152         brNewBreveCall(data, "SistemaAutonomoSetValue", SAbrSistemaAutonomoSetValue,\r
153                        AT_NULL, AT_POINTER, AT_STRING, AT_DOUBLE, 0);\r
154         brNewBreveCall(data, "SistemaAutonomoSetDatoFinal", SAbrSistemaAutonomoSetDatoFinal,\r
155                        AT_NULL, AT_POINTER, AT_STRING, AT_DOUBLE, 0);\r
156         brNewBreveCall(data, "SistemaAutonomoPlan", SAbrSistemaAutonomoPlan,\r
157                        AT_NULL, AT_POINTER, 0);\r
158         brNewBreveCall(data, "SistemaAutonomoHasNextTheory", SAbrSistemaAutonomoHasNextTheory,\r
159                        AT_INT, AT_POINTER, 0);\r
160         brNewBreveCall(data, "SistemaAutonomoGetNextTheory", SAbrSistemaAutonomoGetNextTheory,\r
161                        AT_POINTER, AT_POINTER, 0);\r
162         brNewBreveCall(data, "SistemaAutonomoValidateTheory", SAbrSistemaAutonomoValidateTheory,\r
163                        AT_INT, AT_POINTER, AT_POINTER, 0);\r
164         brNewBreveCall(data, "SistemaAutonomoDelete", SAbrSistemaAutonomoDelete,\r
165                        AT_NULL, AT_POINTER, 0);\r
166 }\r
167 \r