]> git.llucax.com Git - z.facultad/75.68/celdas.git/commitdiff
Evitamos memory leaks.
authorLeandro Lucarella <llucax@gmail.com>
Sat, 16 Dec 2006 17:54:45 +0000 (17:54 +0000)
committerLeandro Lucarella <llucax@gmail.com>
Sat, 16 Dec 2006 17:54:45 +0000 (17:54 +0000)
trunk/src/SistemaAutonomo.tz
trunk/src/main.cpp
trunk/src/plugin.cpp
trunk/src/sistemaautonomo.h

index e301d6d1330f13c5c35d815acffecadd5943768a..b47452a9a5feaa924a0bdbf58750e4deb031a110 100644 (file)
@@ -30,8 +30,6 @@ Object : Teoria (aka Teorias) {
        - to set-ptr ptr p (pointer):\r
                ptr = p.\r
 \r
-       + to destroy:\r
-               TeoriaDelete(ptr).\r
 }\r
 \r
 Object : SistemaAutonomo {\r
index 1489768f0a93d84583445a57595905baaacd7d75..10da19fc15d1de7784489b8a055a7a243216c38e 100644 (file)
@@ -41,7 +41,8 @@ int main(int argc, char* argv[])
        e->inicializar() ;
 
        // Inicializo las teorias
-       CTeoria t1("Avanzar", "avanzar", 1, 1) ;
+       CTeoria* pt1 = new CTeoria("Avanzar", "avanzar", 1, 1) ;
+       CTeoria& t1 = *pt1;
        t1.datos_iniciales.add ("robot.sensor_adelante",        0) ;
        t1.datos_iniciales.add ("robot.sensor_atras",           ANY) ;
        t1.datos_iniciales.add ("robot.sensor_derecha",         ANY) ;
@@ -59,8 +60,8 @@ int main(int argc, char* argv[])
        t1.datos_finales.add ("robot.avanzo_derecha",           0) ;
        t1.datos_finales.add ("robot.avanzo_izquierda",         0) ;
 
-
-       CTeoria t2("Retroceder", "retroceder", 1, 1) ;
+       CTeoria* pt2 = new CTeoria("Retroceder", "retroceder", 1, 1) ;
+       CTeoria& t2 = *pt2;
        t2.datos_iniciales.add ("robot.sensor_adelante",        ANY) ;
        t2.datos_iniciales.add ("robot.sensor_atras",           0) ;
        t2.datos_iniciales.add ("robot.sensor_derecha",         ANY) ;
@@ -79,7 +80,8 @@ int main(int argc, char* argv[])
        t2.datos_finales.add ("robot.avanzo_izquierda",         0) ;
 
 
-       CTeoria t3("Derecha", "derecha", 1, 1) ;
+       CTeoria* pt3 = new CTeoria("Derecha", "derecha", 1, 1) ;
+       CTeoria& t3 = *pt3;
        t3.datos_iniciales.add ("robot.sensor_adelante",        ANY) ;
        t3.datos_iniciales.add ("robot.sensor_atras",           ANY) ;
        t3.datos_iniciales.add ("robot.sensor_derecha",         0) ;
@@ -98,7 +100,8 @@ int main(int argc, char* argv[])
        t3.datos_finales.add ("robot.avanzo_izquierda",         0) ;
 
 
-       CTeoria t4("Eludir.1", "derecha", 1, 1) ;
+       CTeoria* pt4 = new CTeoria("Eludir.1", "derecha", 1, 1) ;
+       CTeoria& t4 = *pt4;
        t4.datos_iniciales.add ("robot.sensor_adelante",        1) ;
        t4.datos_iniciales.add ("robot.sensor_atras",           ANY) ;
        t4.datos_iniciales.add ("robot.sensor_derecha",         0) ;
@@ -117,10 +120,10 @@ int main(int argc, char* argv[])
        t4.datos_finales.add ("robot.avanzo_izquierda",         ANY) ;
 
 
-       a.teorias.add(t1.nombre, &t1) ;
-       a.teorias.add(t2.nombre, &t2) ;
-       a.teorias.add(t3.nombre, &t3) ;
-       a.teorias.add(t4.nombre, &t4) ;
+       a.teorias.add(t1.nombre, pt1) ;
+       a.teorias.add(t2.nombre, pt2) ;
+       a.teorias.add(t3.nombre, pt3) ;
+       a.teorias.add(t4.nombre, pt4) ;
 #ifdef DEBUG
        std::cout << "Agrega teoria: " << t1 << "\n";
        std::cout << "\tdatos_iniciales:\n" << t1.datos_iniciales << "\n";
index 20096f3a1fdc0522e1ed8f6519aecd290c370255..52e1404a4c17231fa4fbba8dc04300b03d366849 100644 (file)
@@ -50,13 +50,6 @@ int SAbrTeoriaGetAccion(brEval args[], brEval* result, void* data)
        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
@@ -149,8 +142,6 @@ DLLEXPORT void SAbrFunctions(void *data)
                       AT_STRING, AT_POINTER, 0);\r
        brNewBreveCall(data, "TeoriaGetAccion", SAbrTeoriaGetAccion,\r
                       AT_STRING, AT_POINTER, 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
index a7debcda606e70ada033f97fe116b5c815c48359..4aafef50b086b59f9153ebdf47bc1ebe28d8ada2 100644 (file)
@@ -212,7 +212,12 @@ public:
        CSistemaAutonomo(): p_entorno(new CEntorno) {}
 
        // Destructor
-       ~CSistemaAutonomo() { delete p_entorno; }
+       ~CSistemaAutonomo()
+       {
+               delete p_entorno;
+               for (unsigned i = 0; i < teorias.count(); ++i)
+                       delete teorias[i];
+       }
 
        // Genera un nuevo plan
        void plan();