]> git.llucax.com Git - z.facultad/75.68/celdas.git/blobdiff - trunk/src/plugin.cpp
Bugfix, cambia modo de rotación para que rote en el lugar y varios cambios de parámet...
[z.facultad/75.68/celdas.git] / trunk / src / plugin.cpp
index ed52b4b3c0f78351cf69294663e293c6a961592f..9571aa29a1aa05cc907335bee410a48a16112b95 100644 (file)
@@ -1,53 +1,62 @@
 #include "sistemaautonomo.h"\r
 #include "slBrevePluginAPI.h"\r
 #include "sistemaautonomo.h"\r
 #include "slBrevePluginAPI.h"\r
+\r
+#ifdef DEBUG\r
 #include <iostream>\r
 #include <iostream>\r
+#endif // DEBUG\r
 \r
 /////////////////////////// CTeoria /////////////////////////\r
 \r
 \r
 /////////////////////////// CTeoria /////////////////////////\r
 \r
-double NoOp(CEntorno&) { return 0.0; } // FIXME (hack horrible porque no puedo usar ptr a fun)\r
-\r
 // pointer{Teoria} TeoriaNew(string, string, int, int)\r
 int SAbrTeoriaNew(brEval args[], brEval* result, void* data)\r
 {\r
        result->set(new CTeoria(\r
                BRSTRING(args),\r
 // pointer{Teoria} TeoriaNew(string, string, int, int)\r
 int SAbrTeoriaNew(brEval args[], brEval* result, void* data)\r
 {\r
        result->set(new CTeoria(\r
                BRSTRING(args),\r
-               NoOp, // FIXME (no hay puntero a funcion, poner BRINT(args+1))\r
-               //BRSTRING(args+1),\r
+               BRSTRING(args+1),\r
                BRINT(args+2),\r
                BRINT(args+3)));\r
        return EC_OK;\r
 }\r
 \r
                BRINT(args+2),\r
                BRINT(args+3)));\r
        return EC_OK;\r
 }\r
 \r
-// void TeoriaAddDatoInicial(pointer{Teoria}, string, float)\r
-int SAbrTeoriaAddDatoInicial(brEval args[], brEval* result, void* data)\r
+// void TeoriaSetDatoInicial(pointer{Teoria}, string, float)\r
+int SAbrTeoriaSetDatoInicial(brEval args[], brEval* result, void* data)\r
 {\r
        CTeoria* t = (CTeoria*) BRPOINTER(args);\r
 {\r
        CTeoria* t = (CTeoria*) BRPOINTER(args);\r
-       t->datos_iniciales.add(BRSTRING(args+1), BRINT(args+2));\r
+       t->datos_iniciales.set_val(BRSTRING(args+1), BRDOUBLE(args+2));\r
        return EC_OK;\r
 }\r
 \r
        return EC_OK;\r
 }\r
 \r
-// void TeoriaAddDatoFinal(pointer{Teoria}, string, float)\r
-int SAbrTeoriaAddDatoFinal(brEval args[], brEval* result, void* data)\r
+// void TeoriaSetDatoFinal(pointer{Teoria}, string, float)\r
+int SAbrTeoriaSetDatoFinal(brEval args[], brEval* result, void* data)\r
 {\r
        CTeoria* t = (CTeoria*) BRPOINTER(args);\r
 {\r
        CTeoria* t = (CTeoria*) BRPOINTER(args);\r
-       t->datos_finales.add(BRSTRING(args+1), BRINT(args+2));\r
+       t->datos_finales.set_val(BRSTRING(args+1), BRDOUBLE(args+2));\r
        return EC_OK;\r
 }\r
 \r
        return EC_OK;\r
 }\r
 \r
-// void TeoriaDelete(pointer{Teoria})\r
-int SAbrTeoriaDelete(brEval args[], brEval* result, void* data)\r
+// string TeoriaGetNombre(pointer{Teoria})\r
+int SAbrTeoriaGetNombre(brEval args[], brEval* result, void* data)\r
 {\r
 {\r
-       delete (CTeoria*) BRPOINTER(args);\r
+       CTeoria* t = (CTeoria*) BRPOINTER(args);\r
+       result->set(t->nombre.c_str());\r
+       return EC_OK;\r
+}\r
+\r
+// string TeoriaGetAccion(pointer{Teoria})\r
+int SAbrTeoriaGetAccion(brEval args[], brEval* result, void* data)\r
+{\r
+       CTeoria* t = (CTeoria*) BRPOINTER(args);\r
+       result->set(t->funcion.c_str());\r
        return EC_OK;\r
 }\r
 \r
 \r
 /////////////////////////// CSistemaAutonomo /////////////////////////\r
 \r
        return EC_OK;\r
 }\r
 \r
 \r
 /////////////////////////// CSistemaAutonomo /////////////////////////\r
 \r
-// pointer{SistemaAutonomo} SistemaAutonomoNew()\r
+// pointer{SistemaAutonomo} SistemaAutonomoNew(int, int)\r
 int SAbrSistemaAutonomoNew(brEval args[], brEval* result, void* data)\r
 {\r
 int SAbrSistemaAutonomoNew(brEval args[], brEval* result, void* data)\r
 {\r
-       result->set(new CSistemaAutonomo());\r
+       result->set(new CSistemaAutonomo(BRINT(args), BRINT(args+1)));\r
        return EC_OK;\r
 }\r
 \r
        return EC_OK;\r
 }\r
 \r
@@ -56,7 +65,12 @@ int SAbrSistemaAutonomoAddTeoria(brEval args[], brEval* result, void* data)
 {\r
        CSistemaAutonomo* sa = (CSistemaAutonomo*) BRPOINTER(args);\r
        CTeoria* t = (CTeoria*) BRPOINTER(args+1);\r
 {\r
        CSistemaAutonomo* sa = (CSistemaAutonomo*) BRPOINTER(args);\r
        CTeoria* t = (CTeoria*) BRPOINTER(args+1);\r
-       sa->teorias.add(t->nombre.c_str(), *t);\r
+       sa->teorias.add(t->nombre, t);\r
+#ifdef DEBUG\r
+       std::cout << "Agrega teoria " << t->nombre << ":\n";\r
+       std::cout << "  .datos_iniciales:\n" << t->datos_iniciales << "\n";\r
+       std::cout << "  .datos_finales:\n" << t->datos_finales << "\n";\r
+#endif // DEBUG\r
        return EC_OK;\r
 }\r
 \r
        return EC_OK;\r
 }\r
 \r
@@ -64,33 +78,47 @@ int SAbrSistemaAutonomoAddTeoria(brEval args[], brEval* result, void* data)
 int SAbrSistemaAutonomoSetValue(brEval args[], brEval* result, void* data)\r
 {\r
        CSistemaAutonomo* sa = (CSistemaAutonomo*) BRPOINTER(args);\r
 int SAbrSistemaAutonomoSetValue(brEval args[], brEval* result, void* data)\r
 {\r
        CSistemaAutonomo* sa = (CSistemaAutonomo*) BRPOINTER(args);\r
-       sa->p_entorno->datos.set_val(BRSTRING(args), BRDOUBLE(args+1));\r
+       sa->p_entorno->datos.set_val(BRSTRING(args+1), BRDOUBLE(args+2));\r
+       return EC_OK;\r
+}\r
+\r
+// void SistemaAutonomoSetDatoFinal(pointer{SistemaAutonomo}, string, float)\r
+int SAbrSistemaAutonomoSetDatoFinal(brEval args[], brEval* result, void* data)\r
+{\r
+       CSistemaAutonomo* sa = (CSistemaAutonomo*) BRPOINTER(args);\r
+       sa->m_datos_finales.set_val(BRSTRING(args+1), BRDOUBLE(args+2));\r
        return EC_OK;\r
 }\r
 \r
 // void SistemaAutonomoPlan(pointer{SistemaAutonomo})\r
 int SAbrSistemaAutonomoPlan(brEval args[], brEval* result, void* data)\r
 {\r
        return EC_OK;\r
 }\r
 \r
 // void SistemaAutonomoPlan(pointer{SistemaAutonomo})\r
 int SAbrSistemaAutonomoPlan(brEval args[], brEval* result, void* data)\r
 {\r
-       // TODO CSistemaAutonomo* sa = (CSistemaAutonomo*) BRPOINTER(args);\r
-       // TODO sa->plan();\r
+       CSistemaAutonomo* sa = (CSistemaAutonomo*) BRPOINTER(args);\r
+       sa->plan();\r
        return EC_OK;\r
 }\r
 \r
        return EC_OK;\r
 }\r
 \r
-// string SistemaAutonomoGetNextAction(pointer{SistemaAutonomo})\r
-int SAbrSistemaAutonomoGetNextAction(brEval args[], brEval* result, void* data)\r
+// bool SistemaAutonomoHasNextTheory(pointer{SistemaAutonomo})\r
+int SAbrSistemaAutonomoHasNextTheory(brEval args[], brEval* result, void* data)\r
 {\r
 {\r
-       // TODO CSistemaAutonomo* sa = (CSistemaAutonomo*) BRPOINTER(args);\r
-       // TODO sa->get_next_action();\r
-       result->set("avanzar"); // FIXME\r
+       CSistemaAutonomo* sa = (CSistemaAutonomo*) BRPOINTER(args);\r
+       result->set(sa->has_next_theory());\r
        return EC_OK;\r
 }\r
 \r
        return EC_OK;\r
 }\r
 \r
-// bool SistemaAutonomoValidateCurrentTheory(pointer{SistemaAutonomo})\r
-int SAbrSistemaAutonomoValidateCurrentTheory(brEval args[], brEval* result, void* data)\r
+// pointer{Teoria} SistemaAutonomoGetNextTheory(pointer{SistemaAutonomo})\r
+int SAbrSistemaAutonomoGetNextTheory(brEval args[], brEval* result, void* data)\r
 {\r
 {\r
-       // TODO CSistemaAutonomo* sa = (CSistemaAutonomo*) BRPOINTER(args);\r
-       // TODO sa->validate_current_theory();\r
-       result->set(true); // FIXME\r
+       CSistemaAutonomo* sa = (CSistemaAutonomo*) BRPOINTER(args);\r
+       result->set(sa->get_next_theory());\r
+       return EC_OK;\r
+}\r
+\r
+// bool SistemaAutonomoValidateTheory(pointer{SistemaAutonomo}, pointer{Teoria})\r
+int SAbrSistemaAutonomoValidateTheory(brEval args[], brEval* result, void* data)\r
+{\r
+       CSistemaAutonomo* sa = (CSistemaAutonomo*) BRPOINTER(args);\r
+       result->set(sa->validate_theory((CTeoria*) BRPOINTER(args+1)));\r
        return EC_OK;\r
 }\r
 \r
        return EC_OK;\r
 }\r
 \r
@@ -106,24 +134,30 @@ DLLEXPORT void SAbrFunctions(void *data)
 {\r
        brNewBreveCall(data, "TeoriaNew", SAbrTeoriaNew,\r
                       AT_POINTER, AT_STRING, AT_STRING, AT_INT, AT_INT, 0);\r
 {\r
        brNewBreveCall(data, "TeoriaNew", SAbrTeoriaNew,\r
                       AT_POINTER, AT_STRING, AT_STRING, AT_INT, AT_INT, 0);\r
-       brNewBreveCall(data, "TeoriaAddDatoInicial", SAbrTeoriaAddDatoInicial,\r
+       brNewBreveCall(data, "TeoriaSetDatoInicial", SAbrTeoriaSetDatoInicial,\r
                       AT_NULL, AT_POINTER, AT_STRING, AT_DOUBLE, 0);\r
                       AT_NULL, AT_POINTER, AT_STRING, AT_DOUBLE, 0);\r
-       brNewBreveCall(data, "TeoriaAddDatoFinal", SAbrTeoriaAddDatoFinal,\r
+       brNewBreveCall(data, "TeoriaSetDatoFinal", SAbrTeoriaSetDatoFinal,\r
                       AT_NULL, AT_POINTER, AT_STRING, AT_DOUBLE, 0);\r
                       AT_NULL, AT_POINTER, AT_STRING, AT_DOUBLE, 0);\r
-       brNewBreveCall(data, "TeoriaDelete", SAbrTeoriaDelete,\r
-                      AT_NULL, AT_POINTER, 0);\r
+       brNewBreveCall(data, "TeoriaGetNombre", SAbrTeoriaGetNombre,\r
+                      AT_STRING, AT_POINTER, 0);\r
+       brNewBreveCall(data, "TeoriaGetAccion", SAbrTeoriaGetAccion,\r
+                      AT_STRING, AT_POINTER, 0);\r
        brNewBreveCall(data, "SistemaAutonomoNew", SAbrSistemaAutonomoNew,\r
        brNewBreveCall(data, "SistemaAutonomoNew", SAbrSistemaAutonomoNew,\r
-                      AT_POINTER, 0);\r
+                      AT_POINTER, AT_INT, AT_INT, 0);\r
        brNewBreveCall(data, "SistemaAutonomoAddTeoria", SAbrSistemaAutonomoAddTeoria,\r
                       AT_NULL, AT_POINTER, AT_POINTER, 0);\r
        brNewBreveCall(data, "SistemaAutonomoSetValue", SAbrSistemaAutonomoSetValue,\r
                       AT_NULL, AT_POINTER, AT_STRING, AT_DOUBLE, 0);\r
        brNewBreveCall(data, "SistemaAutonomoAddTeoria", SAbrSistemaAutonomoAddTeoria,\r
                       AT_NULL, AT_POINTER, AT_POINTER, 0);\r
        brNewBreveCall(data, "SistemaAutonomoSetValue", SAbrSistemaAutonomoSetValue,\r
                       AT_NULL, AT_POINTER, AT_STRING, AT_DOUBLE, 0);\r
+       brNewBreveCall(data, "SistemaAutonomoSetDatoFinal", SAbrSistemaAutonomoSetDatoFinal,\r
+                      AT_NULL, AT_POINTER, AT_STRING, AT_DOUBLE, 0);\r
        brNewBreveCall(data, "SistemaAutonomoPlan", SAbrSistemaAutonomoPlan,\r
                       AT_NULL, AT_POINTER, 0);\r
        brNewBreveCall(data, "SistemaAutonomoPlan", SAbrSistemaAutonomoPlan,\r
                       AT_NULL, AT_POINTER, 0);\r
-       brNewBreveCall(data, "SistemaAutonomoGetNextAction", SAbrSistemaAutonomoGetNextAction,\r
-                      AT_STRING, AT_POINTER, 0);\r
-       brNewBreveCall(data, "SistemaAutonomoValidateCurrentTheory", SAbrSistemaAutonomoValidateCurrentTheory,\r
+       brNewBreveCall(data, "SistemaAutonomoHasNextTheory", SAbrSistemaAutonomoHasNextTheory,\r
                       AT_INT, AT_POINTER, 0);\r
                       AT_INT, AT_POINTER, 0);\r
+       brNewBreveCall(data, "SistemaAutonomoGetNextTheory", SAbrSistemaAutonomoGetNextTheory,\r
+                      AT_POINTER, AT_POINTER, 0);\r
+       brNewBreveCall(data, "SistemaAutonomoValidateTheory", SAbrSistemaAutonomoValidateTheory,\r
+                      AT_INT, AT_POINTER, AT_POINTER, 0);\r
        brNewBreveCall(data, "SistemaAutonomoDelete", SAbrSistemaAutonomoDelete,\r
                       AT_NULL, AT_POINTER, 0);\r
 }\r
        brNewBreveCall(data, "SistemaAutonomoDelete", SAbrSistemaAutonomoDelete,\r
                       AT_NULL, AT_POINTER, 0);\r
 }\r