path_help.h
1 /*
2 ** ClanLib SDK
3 ** Copyright (c) 1997-2016 The ClanLib Team
4 **
5 ** This software is provided 'as-is', without any express or implied
6 ** warranty. In no event will the authors be held liable for any damages
7 ** arising from the use of this software.
8 **
9 ** Permission is granted to anyone to use this software for any purpose,
10 ** including commercial applications, and to alter it and redistribute it
11 ** freely, subject to the following restrictions:
12 **
13 ** 1. The origin of this software must not be misrepresented; you must not
14 ** claim that you wrote the original software. If you use this software
15 ** in a product, an acknowledgment in the product documentation would be
16 ** appreciated but is not required.
17 ** 2. Altered source versions must be plainly marked as such, and must not be
18 ** misrepresented as being the original software.
19 ** 3. This notice may not be removed or altered from any source distribution.
20 **
21 ** Note: Some of the libraries ClanLib may link to may have additional
22 ** requirements or restrictions.
23 **
24 ** File Author(s):
25 **
26 ** Magnus Norddahl
27 */
28 
29 #pragma once
30 
31 #include <vector>
32 
33 namespace clan
34 {
37 
39  class PathHelp
40  {
41  public:
43  enum PathType
44  {
47 
50  };
51 
99  const std::string &base_path,
100  const std::string &relative_path,
101  PathType path_type = path_type_file);
102 
122  static std::string make_relative(
123  const std::string &base_path,
124  const std::string &absolute_path,
125  PathType path_type = path_type_file);
126 
132  static bool is_absolute(
133  const std::string &path,
134  PathType path_type = path_type_file);
135 
141  static bool is_relative(
142  const std::string &path,
143  PathType path_type = path_type_file);
144 
154  static std::string normalize(
155  const std::string &path,
156  PathType path_type = path_type_file);
157 
166  const std::string &path,
167  PathType path_type = path_type_file);
168 
176  const std::string &path);
177 
184  static std::string get_location(
185  const std::string &fullname,
186  PathType path_type = path_type_file);
187 
195  static std::string get_basepath(
196  const std::string &fullname,
197  PathType path_type = path_type_file);
198 
200 
203  static std::vector<std::string> split_basepath(
204  const std::string &fullname,
205  PathType path_type = path_type_file);
206 
208 
211  static std::string get_fullpath(
212  const std::string &fullname,
213  PathType path_type = path_type_file);
214 
216 
219  static std::string get_filename(
220  const std::string &fullname,
221  PathType path_type = path_type_file);
222 
224 
227  static std::string get_basename(
228  const std::string &fullname,
229  PathType path_type = path_type_file);
230 
232 
236  static std::string get_extension(
237  const std::string &fullname,
238  PathType path_type = path_type_file);
239 
241 
245  static std::string get_fullname(
246  const std::string &fullpath,
247  const std::string &filename,
248  PathType path_type = path_type_file);
249 
251 
256  static std::string get_fullname(
257  const std::string &fullpath,
258  const std::string &filename,
259  const std::string &extension,
260  PathType path_type = path_type_file);
261 
263 
269  static std::string get_fullname(
270  const std::string &location,
271  const std::string &basepath,
272  const std::string &filename,
273  const std::string &extension,
274  PathType path_type = path_type_file);
275 
280  static std::string combine(const std::string &part1, const std::string &part2, PathType path_type = path_type_file);
281  };
282 
284 }
Definition: clanapp.h:35
static std::string get_basepath(const std::string &fullname, PathType path_type=path_type_file)
Returns the path excluding the location and filename.
static bool is_relative(const std::string &path, PathType path_type=path_type_file)
Check if a path is relative.
static std::string get_fullname(const std::string &fullpath, const std::string &filename, PathType path_type=path_type_file)
Create a fullname from parts.
static std::string get_basename(const std::string &fullname, PathType path_type=path_type_file)
Returns the basename part of a fullname.
static std::string remove_trailing_slash(const std::string &path)
Remove trailing slash or backslash from path.
static std::string normalize(const std::string &path, PathType path_type=path_type_file)
Normalize a path.
static bool is_absolute(const std::string &path, PathType path_type=path_type_file)
Check if a path is absolute.
static std::string make_relative(const std::string &base_path, const std::string &absolute_path, PathType path_type=path_type_file)
Converts an absolute path into a path relative to a base path.
static std::string add_trailing_slash(const std::string &path, PathType path_type=path_type_file)
Add trailing slash or backslash to path.
static std::string combine(const std::string &part1, const std::string &part2, PathType path_type=path_type_file)
Concatenates two strings into one adding a trailing slash to first string if missing.
static std::string get_fullpath(const std::string &fullname, PathType path_type=path_type_file)
Returns the path including the location.
*static std::string get_location(const std::string &fullname, PathType path_type=path_type_file)
Returns the drive (C:) or share name ( \ \ computer \ share)
PathType
Path types.
Definition: path_help.h:43
static std::string get_filename(const std::string &fullname, PathType path_type=path_type_file)
Returns the filename part of a fullname.
Path using slashes ('/').
Definition: path_help.h:49
static std::string get_extension(const std::string &fullname, PathType path_type=path_type_file)
Returns the extension part of a fullname.
static std::string make_absolute(const std::string &base_path, const std::string &relative_path, PathType path_type=path_type_file)
Convert a relative path to an absolute path.
Native file system path. (On windows, '/' are turned into '\'. On linux, '\' are turned into '/') ...
Definition: path_help.h:46
Path helper functions.
Definition: path_help.h:39
static std::vector< std::string > split_basepath(const std::string &fullname, PathType path_type=path_type_file)
Splits the path, excluding the location, into parts.