Manta Interactive Ray Tracer Development Mailing List

Text archives Help


[Manta] r2302 - trunk/Model/Groups


Chronological Thread 
  • From:
  • To:
  • Subject: [Manta] r2302 - trunk/Model/Groups
  • Date: Tue, 8 Jul 2008 16:35:41 -0600 (MDT)

Author: abe
Date: Tue Jul  8 16:35:41 2008
New Revision: 2302

Modified:
   trunk/Model/Groups/Group.cc
   trunk/Model/Groups/Group.h
   trunk/Model/Groups/Mesh.cc
   trunk/Model/Groups/Mesh.h
Log:

Added a delete_ptr argument to Group::remove. If this argument is
true, the pointer will be deleted after it is removed from the array.

M    Model/Groups/Group.cc
M    Model/Groups/Mesh.cc
M    Model/Groups/Mesh.h
M    Model/Groups/Group.h


Modified: trunk/Model/Groups/Group.cc
==============================================================================
--- trunk/Model/Groups/Group.cc (original)
+++ trunk/Model/Groups/Group.cc Tue Jul  8 16:35:41 2008
@@ -123,10 +123,13 @@
   dirtybbox = true;
 }
 
-void Group::remove(Object* obj) {
+void Group::remove(Object* obj, bool delete_ptr) {
   vector<Object*>::iterator iter = find(objs.begin(), objs.end(), obj);
   if (iter != objs.end()) {
     objs.erase(iter);
+    if (delete_ptr) {
+      delete obj;
+    }
     dirtybbox = true;
   }
 }

Modified: trunk/Model/Groups/Group.h
==============================================================================
--- trunk/Model/Groups/Group.h  (original)
+++ trunk/Model/Groups/Group.h  Tue Jul  8 16:35:41 2008
@@ -60,7 +60,10 @@
     virtual bool isParallel() const { return true; }
 
     virtual void add(Object* obj);
-    virtual void remove(Object* obj);    
+    
+    // Remove the specified pointer from the Group. The pointer will
+    // be deleted if delete_ptr == true.
+    virtual void remove(Object* obj, bool delete_ptr );    
     virtual void set( size_t i, Object* obj );
 
     inline Object* get( size_t i ) {

Modified: trunk/Model/Groups/Mesh.cc
==============================================================================
--- trunk/Model/Groups/Mesh.cc  (original)
+++ trunk/Model/Groups/Mesh.cc  Tue Jul  8 16:35:41 2008
@@ -166,17 +166,17 @@
 }
 
 
-void Mesh::add(Object* obj)
+void Mesh::add(Object*)
 {
   throw InternalError(string("Illegal call to ") + MANTA_FUNC);
 }
 
-void Mesh::remove(Object* obj)
+void Mesh::remove(Object*, bool)
 {
   throw InternalError(string("Illegal call to ") + MANTA_FUNC);
 }
 
-void Mesh::set( int i, Object *obj )
+void Mesh::set( int, Object *)
 {
   throw InternalError(string("Illegal call to ") + MANTA_FUNC);
 }

Modified: trunk/Model/Groups/Mesh.h
==============================================================================
--- trunk/Model/Groups/Mesh.h   (original)
+++ trunk/Model/Groups/Mesh.h   Tue Jul  8 16:35:41 2008
@@ -70,10 +70,10 @@
     }
     void interpolateNormals();
 
-    //should not be allowed to use Group's add and set.
-    virtual void add(Object* obj);
-    virtual void set( int i, Object *obj );
-    virtual void remove(Object* obj);
+    // These methods should not be used, instead use addTriangle.
+    virtual void add(Object*);
+    virtual void set( int, Object *);
+    virtual void remove(Object*, bool);
 
     inline MeshTriangle* get( size_t i ) {
       ASSERT( i < objs.size() );


  • [Manta] r2302 - trunk/Model/Groups, abe, 07/08/2008

Archive powered by MHonArc 2.6.16.

Top of page