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