]> git.llucax.com Git - z.facultad/75.68/celdas.git/blob - trunk/src/plugin.cpp
20096f3a1fdc0522e1ed8f6519aecd290c370255
[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 // void TeoriaDelete(pointer{Teoria})\r
54 int SAbrTeoriaDelete(brEval args[], brEval* result, void* data)\r
55 {\r
56         delete (CTeoria*) BRPOINTER(args);\r
57         return EC_OK;\r
58 }\r
59 \r
60 \r
61 /////////////////////////// CSistemaAutonomo /////////////////////////\r
62 \r
63 // pointer{SistemaAutonomo} SistemaAutonomoNew()\r
64 int SAbrSistemaAutonomoNew(brEval args[], brEval* result, void* data)\r
65 {\r
66         result->set(new CSistemaAutonomo());\r
67         return EC_OK;\r
68 }\r
69 \r
70 // void SistemaAutonomoAddTeoria(pointer{SistemaAutonomo}, pointer{Teoria})\r
71 int SAbrSistemaAutonomoAddTeoria(brEval args[], brEval* result, void* data)\r
72 {\r
73         CSistemaAutonomo* sa = (CSistemaAutonomo*) BRPOINTER(args);\r
74         CTeoria* t = (CTeoria*) BRPOINTER(args+1);\r
75         sa->teorias.add(t->nombre, t);\r
76 #ifdef DEBUG\r
77         std::cout << "Agrega teoria " << t->nombre << ":\n";\r
78         std::cout << "  .datos_iniciales:\n" << t->datos_iniciales << "\n";\r
79         std::cout << "  .datos_finales:\n" << t->datos_finales << "\n";\r
80 #endif // DEBUG\r
81         return EC_OK;\r
82 }\r
83 \r
84 // void SistemaAutonomoSetValue(pointer{SistemaAutonomo}, string, float)\r
85 int SAbrSistemaAutonomoSetValue(brEval args[], brEval* result, void* data)\r
86 {\r
87         CSistemaAutonomo* sa = (CSistemaAutonomo*) BRPOINTER(args);\r
88         sa->p_entorno->datos.set_val(BRSTRING(args+1), BRDOUBLE(args+2));\r
89         return EC_OK;\r
90 }\r
91 \r
92 // void SistemaAutonomoSetDatoFinal(pointer{SistemaAutonomo}, string, float)\r
93 int SAbrSistemaAutonomoSetDatoFinal(brEval args[], brEval* result, void* data)\r
94 {\r
95         CSistemaAutonomo* sa = (CSistemaAutonomo*) BRPOINTER(args);\r
96         sa->m_datos_finales.set_val(BRSTRING(args+1), BRDOUBLE(args+2));\r
97         return EC_OK;\r
98 }\r
99 \r
100 // void SistemaAutonomoPlan(pointer{SistemaAutonomo})\r
101 int SAbrSistemaAutonomoPlan(brEval args[], brEval* result, void* data)\r
102 {\r
103         CSistemaAutonomo* sa = (CSistemaAutonomo*) BRPOINTER(args);\r
104         sa->plan();\r
105         return EC_OK;\r
106 }\r
107 \r
108 // bool SistemaAutonomoHasNextTheory(pointer{SistemaAutonomo})\r
109 int SAbrSistemaAutonomoHasNextTheory(brEval args[], brEval* result, void* data)\r
110 {\r
111         CSistemaAutonomo* sa = (CSistemaAutonomo*) BRPOINTER(args);\r
112         result->set(sa->has_next_theory());\r
113         return EC_OK;\r
114 }\r
115 \r
116 // pointer{Teoria} SistemaAutonomoGetNextTheory(pointer{SistemaAutonomo})\r
117 int SAbrSistemaAutonomoGetNextTheory(brEval args[], brEval* result, void* data)\r
118 {\r
119         CSistemaAutonomo* sa = (CSistemaAutonomo*) BRPOINTER(args);\r
120         result->set(sa->get_next_theory());\r
121         return EC_OK;\r
122 }\r
123 \r
124 // bool SistemaAutonomoValidateTheory(pointer{SistemaAutonomo}, pointer{Teoria})\r
125 int SAbrSistemaAutonomoValidateTheory(brEval args[], brEval* result, void* data)\r
126 {\r
127         CSistemaAutonomo* sa = (CSistemaAutonomo*) BRPOINTER(args);\r
128         result->set(sa->validate_theory((CTeoria*) BRPOINTER(args+1)));\r
129         return EC_OK;\r
130 }\r
131 \r
132 // void SistemaAutonomoDelete(pointer{SistemaAutonomo})\r
133 int SAbrSistemaAutonomoDelete(brEval args[], brEval* result, void* data)\r
134 {\r
135         delete (CSistemaAutonomo*) BRPOINTER(args);\r
136         return EC_OK;\r
137 }\r
138 \r
139 \r
140 DLLEXPORT void SAbrFunctions(void *data)\r
141 {\r
142         brNewBreveCall(data, "TeoriaNew", SAbrTeoriaNew,\r
143                        AT_POINTER, AT_STRING, AT_STRING, AT_INT, AT_INT, 0);\r
144         brNewBreveCall(data, "TeoriaSetDatoInicial", SAbrTeoriaSetDatoInicial,\r
145                        AT_NULL, AT_POINTER, AT_STRING, AT_DOUBLE, 0);\r
146         brNewBreveCall(data, "TeoriaSetDatoFinal", SAbrTeoriaSetDatoFinal,\r
147                        AT_NULL, AT_POINTER, AT_STRING, AT_DOUBLE, 0);\r
148         brNewBreveCall(data, "TeoriaGetNombre", SAbrTeoriaGetNombre,\r
149                        AT_STRING, AT_POINTER, 0);\r
150         brNewBreveCall(data, "TeoriaGetAccion", SAbrTeoriaGetAccion,\r
151                        AT_STRING, AT_POINTER, 0);\r
152         brNewBreveCall(data, "TeoriaDelete", SAbrTeoriaDelete,\r
153                        AT_NULL, AT_POINTER, 0);\r
154         brNewBreveCall(data, "SistemaAutonomoNew", SAbrSistemaAutonomoNew,\r
155                        AT_POINTER, 0);\r
156         brNewBreveCall(data, "SistemaAutonomoAddTeoria", SAbrSistemaAutonomoAddTeoria,\r
157                        AT_NULL, AT_POINTER, AT_POINTER, 0);\r
158         brNewBreveCall(data, "SistemaAutonomoSetValue", SAbrSistemaAutonomoSetValue,\r
159                        AT_NULL, AT_POINTER, AT_STRING, AT_DOUBLE, 0);\r
160         brNewBreveCall(data, "SistemaAutonomoSetDatoFinal", SAbrSistemaAutonomoSetDatoFinal,\r
161                        AT_NULL, AT_POINTER, AT_STRING, AT_DOUBLE, 0);\r
162         brNewBreveCall(data, "SistemaAutonomoPlan", SAbrSistemaAutonomoPlan,\r
163                        AT_NULL, AT_POINTER, 0);\r
164         brNewBreveCall(data, "SistemaAutonomoHasNextTheory", SAbrSistemaAutonomoHasNextTheory,\r
165                        AT_INT, AT_POINTER, 0);\r
166         brNewBreveCall(data, "SistemaAutonomoGetNextTheory", SAbrSistemaAutonomoGetNextTheory,\r
167                        AT_POINTER, AT_POINTER, 0);\r
168         brNewBreveCall(data, "SistemaAutonomoValidateTheory", SAbrSistemaAutonomoValidateTheory,\r
169                        AT_INT, AT_POINTER, AT_POINTER, 0);\r
170         brNewBreveCall(data, "SistemaAutonomoDelete", SAbrSistemaAutonomoDelete,\r
171                        AT_NULL, AT_POINTER, 0);\r
172 }\r
173 \r