[Scummvm-cvs-logs] CVS: scummvm/backends/fs/windows windows-fs.cpp,1.18,1.19

Max Horn fingolfin at users.sourceforge.net
Sat Nov 20 13:36:17 CET 2004


Update of /cvsroot/scummvm/scummvm/backends/fs/windows
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv32450/backends/fs/windows

Modified Files:
	windows-fs.cpp 
Log Message:
Changed the FilesystemNode implementation to make it easier to use (client code doesn't have to worry about the memory managment anymore, it's all 'automatic' now). May have introduced a mem leak or two, please check :-)

Index: windows-fs.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/backends/fs/windows/windows-fs.cpp,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -d -r1.18 -r1.19
--- windows-fs.cpp	1 Feb 2004 01:31:50 -0000	1.18
+++ windows-fs.cpp	20 Nov 2004 21:35:49 -0000	1.19
@@ -31,7 +31,7 @@
  * Implementation of the ScummVM file system API based on Windows API.
  */
 
-class WindowsFilesystemNode : public FilesystemNode {
+class WindowsFilesystemNode : public AbstractFilesystemNode {
 protected:
 	String _displayName;
 	bool _isDirectory;
@@ -49,14 +49,13 @@
 	virtual bool isDirectory() const { return _isDirectory; }
 	virtual String path() const { return _path; }
 
-	virtual FSList *listDir(ListMode) const;
-	virtual FilesystemNode *parent() const;
-	virtual FilesystemNode *clone() const { return new WindowsFilesystemNode(this); }
+	virtual FSList listDir(ListMode) const;
+	virtual AbstractFilesystemNode *parent() const;
 
 private:
 	static char *toAscii(TCHAR *x);
 	static TCHAR* toUnicode(char *x);
-	static void addFile (FSList* list, ListMode mode, const char *base, WIN32_FIND_DATA* find_data);
+	static void addFile (FSList &list, ListMode mode, const char *base, WIN32_FIND_DATA* find_data);
 };
 
 
@@ -82,7 +81,7 @@
 #endif
 }
 
-void WindowsFilesystemNode::addFile(FSList* list, ListMode mode, const char *base, WIN32_FIND_DATA* find_data) {
+void WindowsFilesystemNode::addFile(FSList &list, ListMode mode, const char *base, WIN32_FIND_DATA* find_data) {
 	WindowsFilesystemNode entry;
 	char *asciiName = toAscii(find_data->cFileName);
 	bool isDirectory;
@@ -106,10 +105,10 @@
 	entry._isValid = true;	
 	entry._isPseudoRoot = false;
 
-	list->push_back(entry);
+	list.push_back(wrap(new WindowsFilesystemNode(&entry)));
 }
 
-FilesystemNode *FilesystemNode::getRoot() {
+AbstractFilesystemNode *FilesystemNode::getRoot() {
 	return new WindowsFilesystemNode();
 }
 
@@ -137,10 +136,10 @@
 	_path = node->_path;
 }
 
-FSList *WindowsFilesystemNode::listDir(ListMode mode) const {
+FSList WindowsFilesystemNode::listDir(ListMode mode) const {
 	assert(_isDirectory);
 
-	FSList *myList = new FSList();
+	FSList myList;
 
 	if (_isPseudoRoot) {
 #ifndef _WIN32_WCE
@@ -160,7 +159,7 @@
 				entry._isValid = true;
 				entry._isPseudoRoot = false;
 				entry._path = toAscii(current_drive);
-				myList->push_back(entry);
+				myList.push_back(wrap(new WindowsFilesystemNode(&entry)));
 		}
 #endif
 	}
@@ -196,7 +195,7 @@
 	return cur + 1;
 }
 
-FilesystemNode *WindowsFilesystemNode::parent() const {
+AbstractFilesystemNode *WindowsFilesystemNode::parent() const {
 	assert(_isValid || _isPseudoRoot);
 	WindowsFilesystemNode *p = new WindowsFilesystemNode();
 	if (!_isPseudoRoot && _path.size() > 3) {





More information about the Scummvm-git-logs mailing list