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