]> git.llucax.com Git - z.facultad/75.68/celdas.git/blob - trunk/src/plugin.cpp
Nueva versión del robot usando el sistema autónomo.
[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 // pointer{Teoria} TeoriaNew(string, string, int, int)\r
8 int SAbrTeoriaNew(brEval args[], brEval* result, void* data)\r
9 {\r
10         result->set(new CTeoria(\r
11                 BRSTRING(args),\r
12                 BRSTRING(args+1),\r
13                 BRINT(args+2),\r
14                 BRINT(args+3)));\r
15         return EC_OK;\r
16 }\r
17 \r
18 // void TeoriaSetDatoInicial(pointer{Teoria}, string, float)\r
19 int SAbrTeoriaSetDatoInicial(brEval args[], brEval* result, void* data)\r
20 {\r
21         CTeoria* t = (CTeoria*) BRPOINTER(args);\r
22         t->datos_iniciales.set_val(BRSTRING(args+1), BRINT(args+2));\r
23         return EC_OK;\r
24 }\r
25 \r
26 // void TeoriaSetDatoFinal(pointer{Teoria}, string, float)\r
27 int SAbrTeoriaSetDatoFinal(brEval args[], brEval* result, void* data)\r
28 {\r
29         CTeoria* t = (CTeoria*) BRPOINTER(args);\r
30         t->datos_finales.set_val(BRSTRING(args+1), BRINT(args+2));\r
31         return EC_OK;\r
32 }\r
33 \r
34 // string TeoriaGetNombre(pointer{Teoria})\r
35 int SAbrTeoriaGetNombre(brEval args[], brEval* result, void* data)\r
36 {\r
37         CTeoria* t = (CTeoria*) BRPOINTER(args);\r
38         result->set(t->nombre.c_str());\r
39         return EC_OK;\r
40 }\r
41 \r
42 // string TeoriaGetAccion(pointer{Teoria})\r
43 int SAbrTeoriaGetAccion(brEval args[], brEval* result, void* data)\r
44 {\r
45         // TODO CTeoria* t = (CTeoria*) BRPOINTER(args);\r
46         // TODO result->set(t->accion.c_str());\r
47         result->set("avanzar"); // FIXME\r
48         return EC_OK;\r
49 }\r
50 \r
51 // void TeoriaDelete(pointer{Teoria})\r
52 int SAbrTeoriaDelete(brEval args[], brEval* result, void* data)\r
53 {\r
54         delete (CTeoria*) BRPOINTER(args);\r
55         return EC_OK;\r
56 }\r
57 \r
58 \r
59 /////////////////////////// CSistemaAutonomo /////////////////////////\r
60 \r
61 // pointer{SistemaAutonomo} SistemaAutonomoNew()\r
62 int SAbrSistemaAutonomoNew(brEval args[], brEval* result, void* data)\r
63 {\r
64         result->set(new CSistemaAutonomo());\r
65         return EC_OK;\r
66 }\r
67 \r
68 // void SistemaAutonomoAddTeoria(pointer{SistemaAutonomo}, pointer{Teoria})\r
69 int SAbrSistemaAutonomoAddTeoria(brEval args[], brEval* result, void* data)\r
70 {\r
71         CSistemaAutonomo* sa = (CSistemaAutonomo*) BRPOINTER(args);\r
72         CTeoria* t = (CTeoria*) BRPOINTER(args+1);\r
73         sa->teorias.add(t->nombre.c_str(), *t);\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, "TeoriaDelete", SAbrTeoriaDelete,\r
146                        AT_NULL, AT_POINTER, 0);\r
147         brNewBreveCall(data, "SistemaAutonomoNew", SAbrSistemaAutonomoNew,\r
148                        AT_POINTER, 0);\r
149         brNewBreveCall(data, "SistemaAutonomoAddTeoria", SAbrSistemaAutonomoAddTeoria,\r
150                        AT_NULL, AT_POINTER, AT_POINTER, 0);\r
151         brNewBreveCall(data, "SistemaAutonomoSetValue", SAbrSistemaAutonomoSetValue,\r
152                        AT_NULL, AT_POINTER, AT_STRING, AT_DOUBLE, 0);\r
153         brNewBreveCall(data, "SistemaAutonomoSetDatoFinal", SAbrSistemaAutonomoSetDatoFinal,\r
154                        AT_NULL, AT_POINTER, AT_STRING, AT_DOUBLE, 0);\r
155         brNewBreveCall(data, "SistemaAutonomoPlan", SAbrSistemaAutonomoPlan,\r
156                        AT_NULL, AT_POINTER, 0);\r
157         brNewBreveCall(data, "SistemaAutonomoHasNextTheory", SAbrSistemaAutonomoHasNextTheory,\r
158                        AT_INT, AT_POINTER, 0);\r
159         brNewBreveCall(data, "SistemaAutonomoGetNextTheory", SAbrSistemaAutonomoGetNextTheory,\r
160                        AT_POINTER, AT_POINTER, 0);\r
161         brNewBreveCall(data, "SistemaAutonomoValidateTheory", SAbrSistemaAutonomoValidateTheory,\r
162                        AT_INT, AT_POINTER, AT_POINTER, 0);\r
163         brNewBreveCall(data, "SistemaAutonomoDelete", SAbrSistemaAutonomoDelete,\r
164                        AT_NULL, AT_POINTER, 0);\r
165 }\r
166 \r