]> git.llucax.com Git - z.facultad/75.68/celdas.git/commitdiff
Primera version del plugin. Faltan cosas pero es todo lo que puedo hacer por ahora...
authorLeandro Lucarella <llucax@gmail.com>
Thu, 30 Nov 2006 22:15:47 +0000 (22:15 +0000)
committerLeandro Lucarella <llucax@gmail.com>
Thu, 30 Nov 2006 22:15:47 +0000 (22:15 +0000)
trunk/src/Makefile
trunk/src/plugin.cpp [new file with mode: 0644]

index e1eb39df255b2ab5ee7bf05f5e430e44249bbfb9..cb15e5409a6e35760e8a551ab9aa9f44a96afd24 100644 (file)
@@ -1,10 +1,14 @@
 
-CXXFLAGS=-Wall -g
+BREVEDIR=../../breve_2.4/plugins
+CXXFLAGS=-Wall -g -I$(BREVEDIR)
 
-targets=test
+targets=test plugin.so
 
 all: $(targets)
 
+plugin.so: plugin.o $(BREVEDIR)/brevePlugin.a
+       $(CXX) $(CPPFLAGS) -shared -o $@ plugin.o $(BREVEDIR)/brevePlugin.a
+
 test: main.o sistemaautonomo.o
        $(CXX) $(LDFLAGS) -o test *.o
 
diff --git a/trunk/src/plugin.cpp b/trunk/src/plugin.cpp
new file mode 100644 (file)
index 0000000..383cffc
--- /dev/null
@@ -0,0 +1,87 @@
+#include "sistemaautonomo.h"\r
+#include "slBrevePluginAPI.h"\r
+#include <iostream>\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, int, 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
+               BRINT(args+2),\r
+               BRINT(args+3)));\r
+       return EC_OK;\r
+}\r
+\r
+// void TeoriaAddDatoInicial(pointer{Teoria}, string, double)\r
+int SAbrTeoriaAddDatoInicial(brEval args[], brEval* result, void* data)\r
+{\r
+       CTeoria* t = (CTeoria*) BRPOINTER(args);\r
+       t->datos_iniciales.add(BRSTRING(args+1), BRINT(args+2));\r
+       return EC_OK;\r
+}\r
+\r
+// void TeoriaAddDatoFinal(pointer{Teoria}, string, double)\r
+int SAbrTeoriaAddDatoFinal(brEval args[], brEval* result, void* data)\r
+{\r
+       CTeoria* t = (CTeoria*) BRPOINTER(args);\r
+       t->datos_finales.add(BRSTRING(args+1), BRINT(args+2));\r
+       return EC_OK;\r
+}\r
+\r
+// void TeoriaDelete(pointer{Teoria})\r
+int SAbrTeoriaDelete(brEval args[], brEval* result, void* data)\r
+{\r
+       delete (CTeoria*) BRPOINTER(args);\r
+       return EC_OK;\r
+}\r
+\r
+\r
+/////////////////////////// CSistemaAutonomo /////////////////////////\r
+\r
+// pointer{SistemaAutonomo} SistemaAutonomoNew()\r
+int SAbrSistemaAutonomoNew(brEval args[], brEval* result, void* data)\r
+{\r
+       result->set(new CSistemaAutonomo());\r
+       return EC_OK;\r
+}\r
+\r
+// void SistemaAutonomoAddTeoria(pointer{SistemaAutonomo}, pointer{Teoria})\r
+int SAbrSistemaAutonomoAddTeoria(brEval args[], brEval* result, void* data)\r
+{\r
+       CSistemaAutonomo* sa = (CSistemaAutonomo*) BRPOINTER(args);\r
+       CTeoria* t = (CTeoria*) BRPOINTER(args+1);\r
+       sa->teorias.add(t->nombre.c_str(), *t);\r
+       return EC_OK;\r
+}\r
+\r
+// void SistemaAutonomoDelete(pointer{SistemaAutonomo})\r
+int SAbrSistemaAutonomoDelete(brEval args[], brEval* result, void* data)\r
+{\r
+       delete (CSistemaAutonomo*) BRPOINTER(args);\r
+       return EC_OK;\r
+}\r
+\r
+\r
+DLLEXPORT void SAbrFunctions(void *data)\r
+{\r
+       brNewBreveCall(data, "TeoriaNew", SAbrTeoriaNew,\r
+                      AT_POINTER, AT_STRING, AT_INT, AT_INT, AT_INT, 0);\r
+       brNewBreveCall(data, "TeoriaAddDatoInicial", SAbrTeoriaAddDatoInicial,\r
+                      AT_NULL, AT_POINTER, AT_STRING, AT_DOUBLE, 0);\r
+       brNewBreveCall(data, "TeoriaAddDatoFinal", SAbrTeoriaAddDatoFinal,\r
+                      AT_NULL, AT_POINTER, AT_STRING, AT_DOUBLE, 0);\r
+       brNewBreveCall(data, "TeoriaDelete", SAbrTeoriaDelete,\r
+                      AT_NULL, AT_POINTER, 0);\r
+       brNewBreveCall(data, "SistemaAutonomoNew", SAbrSistemaAutonomoNew,\r
+                      AT_POINTER, 0);\r
+       brNewBreveCall(data, "SistemaAutonomoAddTeoria", SAbrSistemaAutonomoAddTeoria,\r
+                      AT_NULL, AT_POINTER, AT_POINTER, 0);\r
+       brNewBreveCall(data, "SistemaAutonomoDelete", SAbrSistemaAutonomoDelete,\r
+                      AT_NULL, AT_POINTER, 0);\r
+}\r
+\r