replaced "string FileStorage::release()" with 2 methods to preserve backward compatib...
authorVadim Pisarevsky <no@email>
Wed, 30 May 2012 11:29:22 +0000 (11:29 +0000)
committerVadim Pisarevsky <no@email>
Wed, 30 May 2012 11:29:22 +0000 (11:29 +0000)
modules/core/include/opencv2/core/core.hpp
modules/core/src/persistence.cpp
modules/core/test/test_io.cpp

index ebb66a3..41e6b72 100644 (file)
@@ -3976,7 +3976,9 @@ public:
     //! returns true if the object is associated with currently opened file.
     CV_WRAP virtual bool isOpened() const;
     //! closes the file and releases all the memory buffers
-    CV_WRAP virtual string release();
+    CV_WRAP virtual void release();
+    //! closes the file, releases all the memory buffers and returns the text string    
+    CV_WRAP_AS(releaseAndGetString) virtual void release(CV_OUT string& buf);
 
     //! returns the first element of the top-level mapping
     CV_WRAP FileNode getFirstTopLevelNode() const;
index a02c186..7d1d586 100644 (file)
@@ -5154,19 +5154,25 @@ bool FileStorage::isOpened() const
     return !fs.empty() && fs.obj->is_opened;
 }
 
-string FileStorage::release()
+void FileStorage::release()
 {
-    string buf;
-    
-    if( fs.obj && fs.obj->outbuf )
-        icvClose(fs.obj, &buf); 
-        
     fs.release();
     structs.clear();
     state = UNDEFINED;
-    return buf;
 }
 
+void FileStorage::release(string& buf)
+{
+    if( fs.obj && fs.obj->outbuf )
+        icvClose(fs.obj, &buf);
+    else
+        buf.clear();
+    
+    fs.release();
+    structs.clear();
+    state = UNDEFINED;
+}    
+    
 FileNode FileStorage::root(int streamidx) const
 {
     return isOpened() ? FileNode(fs, cvGetRootFileNode(fs, streamidx)) : FileNode();
index a74a7fb..150bdd1 100644 (file)
@@ -180,7 +180,8 @@ protected:
             fs.writeObj("test_graph",graph);
             CvGraph* graph2 = (CvGraph*)cvClone(graph);
             
-            string content = fs.release();
+            string content;
+            fs.release(content);
             
             if(!fs.open(mem ? content : filename, FileStorage::READ + (mem ? FileStorage::MEMORY : 0)))
             {