Visualization Library 2.0.0

A lightweight C++ OpenGL middleware for 2D/3D graphics

VL     Star     Watch     Fork     Issue

[Download] [Tutorials] [All Classes] [Grouped Classes]
VirtualDirectory.hpp
Go to the documentation of this file.
1 /**************************************************************************************/
2 /* */
3 /* Visualization Library */
4 /* http://visualizationlibrary.org */
5 /* */
6 /* Copyright (c) 2005-2020, Michele Bosi */
7 /* All rights reserved. */
8 /* */
9 /* Redistribution and use in source and binary forms, with or without modification, */
10 /* are permitted provided that the following conditions are met: */
11 /* */
12 /* - Redistributions of source code must retain the above copyright notice, this */
13 /* list of conditions and the following disclaimer. */
14 /* */
15 /* - Redistributions in binary form must reproduce the above copyright notice, this */
16 /* list of conditions and the following disclaimer in the documentation and/or */
17 /* other materials provided with the distribution. */
18 /* */
19 /* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND */
20 /* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED */
21 /* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */
22 /* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR */
23 /* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES */
24 /* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */
25 /* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON */
26 /* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT */
27 /* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS */
28 /* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
29 /* */
30 /**************************************************************************************/
31 
32 #ifndef VirtualDirectory_INCUDE_ONCE
33 #define VirtualDirectory_INCUDE_ONCE
34 
35 #include <vlCore/Object.hpp>
36 #include <vlCore/String.hpp>
37 #include <vlCore/Log.hpp>
38 #include <vlCore/Say.hpp>
39 #include <vlCore/VirtualFile.hpp>
40 
41 namespace vl
42 {
43 //---------------------------------------------------------------------------
44 // VirtualDirectory
45 //---------------------------------------------------------------------------
58  {
60 
61  public:
63  VirtualDirectory(): mPath("/") {}
64 
67  VirtualDirectory( const String& path ): mPath(path) {}
68 
70  virtual bool setPath(const String& path);
71 
72  virtual const String& path() const { return mPath; }
73 
75  bool fileExists(const String& name) const { return file(name).get() != NULL; }
76 
78  virtual ref<VirtualFile> file(const String& name) const = 0;
79 
82  virtual void listFilesRecursive(std::vector<String>& file_list) const = 0;
83 
86  virtual void listFilesRecursive(std::vector<String>& file_list, const String& match) const
87  {
88  listFilesRecursive(file_list);
89  if (match != "*")
90  String::filterStrings(file_list, match);
91  }
92 
93  virtual void listFiles(std::vector<String>& file_list, bool append=false) const = 0;
94 
95  virtual void listSubDirs(std::vector<String>& dirs, bool append=false) const = 0;
96 
97  virtual ref<VirtualDirectory> subDir(const String& subdir_name) const = 0;
98 
99  protected:
100  String translatePath(const String& p) const;
101 
102  protected:
104  };
105 }
106 
107 #endif
The String class implements an advanced UTF16 (Unicode BMP) string manipulation engine.
Definition: String.hpp:62
Visualization Library main namespace.
virtual const String & path() const
The base class for all the reference counted objects.
Definition: Object.hpp:158
Abstact class representing a directory of files.
#define NULL
Definition: OpenGLDefs.hpp:81
static void filterStrings(std::vector< String > &strings, const String &filter)
Filters the specified Strings using the given filter. The filter must be of the type "*abc"...
Definition: String.cpp:1377
#define VL_INSTRUMENT_ABSTRACT_CLASS(ClassName, BaseClass)
Definition: TypeInfo.hpp:145
VirtualDirectory(const String &path)
Constructor.
virtual void listFilesRecursive(std::vector< String > &file_list, const String &match) const
Returns the list of files contained in the VirtualDirectory that match the expression &#39;match&#39;...
The ref<> class is used to reference-count an Object.
Definition: Object.hpp:55
bool fileExists(const String &name) const
Checks the existence of a file in the directory.
VirtualDirectory()
Constructor.