From: Leandro Lucarella Date: Sun, 10 Dec 2006 23:35:50 +0000 (+0000) Subject: Construyo wrappers con la nueva interfaz que habíamos hablado para el sistema autónom... X-Git-Tag: entrega-20061218~38 X-Git-Url: https://git.llucax.com/z.facultad/75.68/celdas.git/commitdiff_plain/4564a91af300e428600a997b3da82bf4abf50011?ds=inline Construyo wrappers con la nueva interfaz que habíamos hablado para el sistema autónomo (con algunos cambios). Tampoco está probado pero compilar, compila. --- diff --git a/trunk/src/SistemaAutonomo.tz b/trunk/src/SistemaAutonomo.tz index d3246c8..b5e01ac 100644 --- a/trunk/src/SistemaAutonomo.tz +++ b/trunk/src/SistemaAutonomo.tz @@ -7,7 +7,7 @@ Object : Teoria (aka Teorias) { + variables: ptr (pointer). - + to init named name (string) with-action action (int) + + to init named name (string) with-action action (string) executed k = 1 (int) succeeded p = 1 (int): ptr = TeoriaNew(name, action, k, p). @@ -35,6 +35,23 @@ Object : SistemaAutonomo { + to add teoria theTeoria (object): SistemaAutonomoAddTeoria(ptr, (theTeoria get-ptr)). + + to set value theValue (float) with-name theName (string): + SistemaAutonomoSetValue(ptr, theName, theValue). + + + to update entorno theEntorno (hash): + foreach nombre in keys(theEntorno): { + self set value theEntorno{nombre} with-name nombre. + } + + + to plan: + SistemaAutonomoPlan(ptr). + + + to get-next-action: + return SistemaAutonomoGetNextAction(ptr). + + + to validate-current-theory: + return SistemaAutonomoValidateCurrentTheory(ptr). + + to destroy: SistemaAutonomoDelete(ptr). } diff --git a/trunk/src/plugin.cpp b/trunk/src/plugin.cpp index 31d2ce1..ed52b4b 100644 --- a/trunk/src/plugin.cpp +++ b/trunk/src/plugin.cpp @@ -6,12 +6,13 @@ double NoOp(CEntorno&) { return 0.0; } // FIXME (hack horrible porque no puedo usar ptr a fun) -// pointer{Teoria} TeoriaNew(string, int, int, int) +// 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), BRINT(args+2), BRINT(args+3))); return EC_OK; @@ -59,6 +60,40 @@ int SAbrSistemaAutonomoAddTeoria(brEval args[], brEval* result, void* data) return EC_OK; } +// void SistemaAutonomoSetValue(pointer{SistemaAutonomo}, string, float) +int SAbrSistemaAutonomoSetValue(brEval args[], brEval* result, void* data) +{ + CSistemaAutonomo* sa = (CSistemaAutonomo*) BRPOINTER(args); + sa->p_entorno->datos.set_val(BRSTRING(args), BRDOUBLE(args+1)); + return EC_OK; +} + +// void SistemaAutonomoPlan(pointer{SistemaAutonomo}) +int SAbrSistemaAutonomoPlan(brEval args[], brEval* result, void* data) +{ + // TODO CSistemaAutonomo* sa = (CSistemaAutonomo*) BRPOINTER(args); + // TODO sa->plan(); + return EC_OK; +} + +// string SistemaAutonomoGetNextAction(pointer{SistemaAutonomo}) +int SAbrSistemaAutonomoGetNextAction(brEval args[], brEval* result, void* data) +{ + // TODO CSistemaAutonomo* sa = (CSistemaAutonomo*) BRPOINTER(args); + // TODO sa->get_next_action(); + result->set("avanzar"); // FIXME + return EC_OK; +} + +// bool SistemaAutonomoValidateCurrentTheory(pointer{SistemaAutonomo}) +int SAbrSistemaAutonomoValidateCurrentTheory(brEval args[], brEval* result, void* data) +{ + // TODO CSistemaAutonomo* sa = (CSistemaAutonomo*) BRPOINTER(args); + // TODO sa->validate_current_theory(); + result->set(true); // FIXME + return EC_OK; +} + // void SistemaAutonomoDelete(pointer{SistemaAutonomo}) int SAbrSistemaAutonomoDelete(brEval args[], brEval* result, void* data) { @@ -70,7 +105,7 @@ int SAbrSistemaAutonomoDelete(brEval args[], brEval* result, void* data) DLLEXPORT void SAbrFunctions(void *data) { brNewBreveCall(data, "TeoriaNew", SAbrTeoriaNew, - AT_POINTER, AT_STRING, AT_INT, AT_INT, AT_INT, 0); + AT_POINTER, AT_STRING, AT_STRING, AT_INT, AT_INT, 0); brNewBreveCall(data, "TeoriaAddDatoInicial", SAbrTeoriaAddDatoInicial, AT_NULL, AT_POINTER, AT_STRING, AT_DOUBLE, 0); brNewBreveCall(data, "TeoriaAddDatoFinal", SAbrTeoriaAddDatoFinal, @@ -81,6 +116,14 @@ DLLEXPORT void SAbrFunctions(void *data) AT_POINTER, 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, "SistemaAutonomoPlan", SAbrSistemaAutonomoPlan, + AT_NULL, AT_POINTER, 0); + brNewBreveCall(data, "SistemaAutonomoGetNextAction", SAbrSistemaAutonomoGetNextAction, + AT_STRING, AT_POINTER, 0); + brNewBreveCall(data, "SistemaAutonomoValidateCurrentTheory", SAbrSistemaAutonomoValidateCurrentTheory, + AT_INT, AT_POINTER, 0); brNewBreveCall(data, "SistemaAutonomoDelete", SAbrSistemaAutonomoDelete, AT_NULL, AT_POINTER, 0); } diff --git a/trunk/src/sistemaautonomo.cpp b/trunk/src/sistemaautonomo.cpp index 73394ea..2b988f0 100644 --- a/trunk/src/sistemaautonomo.cpp +++ b/trunk/src/sistemaautonomo.cpp @@ -73,10 +73,9 @@ void CSistemaAutonomo::heurisitca_generalizacion(CTeoria& t) CTeoria nt ; //Nueva Teoria unsigned i ; int count = 0; - int k = 0; - int j = 0; + unsigned k = 0; + unsigned j = 0; int posicionCambio = -1; - bool seguir = true; unsigned cantidadTeorias = 0; std::string nombreTeoria;