path_help.h
1/*
2** ClanLib SDK
3** Copyright (c) 1997-2020 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
33namespace clan
34{
37
40 {
41 public:
44 {
47
50 };
51
98 static std::string make_absolute(
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
165 static std::string add_trailing_slash(
166 const std::string &path,
167 PathType path_type = path_type_file);
168
175 static std::string remove_trailing_slash(
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}
Path helper functions.
Definition path_help.h:40
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_filename(const std::string &fullname, PathType path_type=path_type_file)
Returns the filename part of a fullname.
static bool is_absolute(const std::string &path, PathType path_type=path_type_file)
Check if a path is absolute.
static std::string get_fullname(const std::string &location, const std::string &basepath, const std::string &filename, const std::string &extension, PathType path_type=path_type_file)
Create a fullname from parts.
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 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 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.
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.
PathType
Path types.
Definition path_help.h:44
@ path_type_virtual
Path using slashes ('/').
Definition path_help.h:49
@ path_type_file
Native file system path. (On windows, '/' are turned into '\'. On linux, '\' are turned into '/')
Definition path_help.h:46
static std::string normalize(const std::string &path, PathType path_type=path_type_file)
Normalize a 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_basename(const std::string &fullname, PathType path_type=path_type_file)
Returns the basename part of a fullname.
static std::string get_location(const std::string &fullname, PathType path_type=path_type_file)
Returns the drive (C:) or share name ( \ \ computer \ share)
static std::string get_fullname(const std::string &fullpath, const std::string &filename, const std::string &extension, PathType path_type=path_type_file)
Create a fullname from parts.
static std::string remove_trailing_slash(const std::string &path)
Remove trailing slash or backslash from path.
static bool is_relative(const std::string &path, PathType path_type=path_type_file)
Check if a path is relative.
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 get_basepath(const std::string &fullname, PathType path_type=path_type_file)
Returns the path excluding the location and filename.
Definition clanapp.h:36