MIRA
Path.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2012 by
3  * MetraLabs GmbH (MLAB), GERMANY
4  * and
5  * Neuroinformatics and Cognitive Robotics Labs (NICR) at TU Ilmenau, GERMANY
6  * All rights reserved.
7  *
8  * Contact: info@mira-project.org
9  *
10  * Commercial Usage:
11  * Licensees holding valid commercial licenses may use this file in
12  * accordance with the commercial license agreement provided with the
13  * software or, alternatively, in accordance with the terms contained in
14  * a written agreement between you and MLAB or NICR.
15  *
16  * GNU General Public License Usage:
17  * Alternatively, this file may be used under the terms of the GNU
18  * General Public License version 3.0 as published by the Free Software
19  * Foundation and appearing in the file LICENSE.GPL3 included in the
20  * packaging of this file. Please review the following information to
21  * ensure the GNU General Public License version 3.0 requirements will be
22  * met: http://www.gnu.org/copyleft/gpl.html.
23  * Alternatively you may (at your option) use any later version of the GNU
24  * General Public License if such license has been publicly approved by
25  * MLAB and NICR (or its successors, if any).
26  *
27  * IN NO EVENT SHALL "MLAB" OR "NICR" BE LIABLE TO ANY PARTY FOR DIRECT,
28  * INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF
29  * THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF "MLAB" OR
30  * "NICR" HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  *
32  * "MLAB" AND "NICR" SPECIFICALLY DISCLAIM ANY WARRANTIES, INCLUDING,
33  * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
34  * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
35  * ON AN "AS IS" BASIS, AND "MLAB" AND "NICR" HAVE NO OBLIGATION TO
36  * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS OR MODIFICATIONS.
37  */
38 
47 #ifndef _MIRA_PATH_H_
48 #define _MIRA_PATH_H_
49 
50 #ifndef Q_MOC_RUN
51 #include <boost/filesystem/operations.hpp>
52 #include <boost/filesystem/path.hpp>
53 #endif
54 
55 #include <platform/Types.h>
56 
60 
61 namespace mira {
62 
64 
69 typedef boost::filesystem::path Path;
70 
75 typedef std::vector<Path> PathVector;
76 
85 MIRA_BASE_EXPORT PathVector extractPaths(const std::string& env);
86 
103 
115 MIRA_BASE_EXPORT Path resolvePath(const Path& path, bool makeAbsolute=true);
116 
124 MIRA_BASE_EXPORT bool isRootOfPath(const Path& root, const Path& path);
125 
132 
151 
167 MIRA_BASE_EXPORT Path getAppDataDirectory(const std::string& appName = "mira");
168 
190 
200 MIRA_BASE_EXPORT Path relativizePath(const Path& path, const Path& base);
201 
203 
207 template <typename Reflector>
208 void reflectRead(Reflector& r, Path& path)
209 {
210  std::string s = path.string();
211  r.delegate(s);
212 }
213 
217 template <typename Reflector>
218 void reflectWrite(Reflector& r, Path& path)
219 {
220  std::string s;
221  r.delegate(s);
222  path = s;
223 }
224 
226 
227 template<typename SerializerTag>
228 class IsTransparentSerializable<Path,SerializerTag> : public std::true_type {};
229 
231 
232 namespace PropertyHints {
233 
247 inline PropertyHint file(const std::string& filters = std::string(),
248  bool save = false) {
249  return PropertyHint("file", filters) | PropertyHint("save", toString(save));
250 }
251 
252 }
253 
255 
256 }
257 
258 #endif
MIRA_BASE_EXPORT Path getAppDataDirectory(const std::string &appName="mira")
Returns the absolute path for application-specific data.
void reflectWrite(Reflector &r, Buffer< T, Allocator > &c)
Specialization of the non-intrusive reflect for Buffer.
Definition: Buffer.h:581
Typedefs for OS independent basic data types.
Type trait that indicates whether a type should be serialized "transparently", i.e.
Definition: IsTransparentSerializable.h:81
#define MIRA_SPLIT_REFLECT(Type)
Macro that inserts a reflect() method consisting of just a call to splitReflect() (splitting to refle...
Definition: SplitReflect.h:150
std::vector< Path > PathVector
Typedef for vector of Paths.
Definition: Path.h:75
PropertyHint file(const std::string &filters=std::string(), bool save=false)
Tells the property editor that the path is for a file, and that it should show a "File Open"/"File Sa...
Definition: Path.h:247
specialize cv::DataType for our ImgPixel and inherit from cv::DataType<Vec>
Definition: IOService.h:67
boost::filesystem::path Path
Typedef of a Path (shorter version for boost::filesystem::path)
Definition: Path.h:69
Provides property hints and attributes.
Provides type trait that indicates whether a type should be serialized "transparently".
Provides MIRA_SPLIT_REFLECT macros.
A property hint gives optional instructions to the property editor, i.e.
Definition: PropertyHint.h:82
MIRA_BASE_EXPORT Path getExecutableDirectory()
Get the path of the current running application binary.
std::string toString(const T &value, int precision=-1)
Converts any data type to string (the data type must support the stream << operator).
Definition: ToString.h:256
MIRA_BASE_EXPORT bool isRootOfPath(const Path &root, const Path &path)
The function takes two absolute paths and returns true if the given root path is part of the path giv...
void reflectRead(Reflector &r, Buffer< T, Allocator > &c)
Specialization of the non-intrusive reflect for Buffer.
Definition: Buffer.h:565
MIRA_BASE_EXPORT Path relativizePath(const Path &path, const Path &base)
Returns relative path from base to path.
MIRA_BASE_EXPORT Path resolvePath(const Path &path, bool makeAbsolute=true)
Resolves a path.
MIRA_BASE_EXPORT Path getHomeDirectory()
Get the absolute path of the current user&#39;s home directory.
#define MIRA_BASE_EXPORT
This is required because on windows there is a macro defined called ERROR.
Definition: Platform.h:153
MIRA_BASE_EXPORT Path getTempDirectory()
Get the absolute path of the temporary directory.
MIRA_BASE_EXPORT PathVector extractPaths(const std::string &env)
Extracts and resolves all paths contained in an environment variable.
MIRA_BASE_EXPORT Path normalizePath(const Path &path)
Normalizes a path: it resolves all ".." in a path.