xtd 0.2.0
path.h
Go to the documentation of this file.
1 #pragma once
5 #include "file.h"
6 #include "../core_export.h"
7 #include "../static.h"
8 #include "../ustring.h"
9 #include <algorithm>
10 #include <cstdlib>
11 #include <random>
12 #include <regex>
13 #include <sstream>
14 
15 //#include <iostream>
16 
18 namespace xtd {
20  namespace io {
34  class core_export_ path static_ {
35  public:
37 
46  template<typename char_t>
47  static char_t alt_directory_separator_char() noexcept {return static_cast<char_t>(alt_directory_separator_char());}
48 
56  static char alt_directory_separator_char() noexcept;
57 
64  template<typename char_t>
65  static char_t directory_separator_char() noexcept {
66  return static_cast<char_t>(directory_separator_char());
67  }
68 
75  static char directory_separator_char() noexcept;
76 
81  template<typename char_t>
82  static char_t path_separator() noexcept {return static_cast<char_t>(path_separator());}
83 
88  static char path_separator() noexcept;
89 
94  template<typename char_t>
95  static char_t volume_separator_char() noexcept {return static_cast<char_t>(volume_separator_char());}
96 
101  static char volume_separator_char() noexcept;
103 
105 
118  static xtd::ustring change_extension(const xtd::ustring& path, const xtd::ustring& extension);
119 
125  static xtd::ustring combine(const xtd::ustring& path1, const xtd::ustring& path2);
126 
133  template<typename type1_t, typename type2_t, typename type3_t>
134  static auto combine(type1_t path1, type2_t path2, type3_t path3) noexcept {
135  return combine(combine(path1, path2), path3);
136  }
137 
145  template<typename type1_t, typename type2_t, typename type3_t, typename type4_t>
146  static auto combine(type1_t path1, type2_t path2, type3_t path3, type4_t path4) noexcept {
147  return combine(combine(combine(path1, path2), path3), path4);
148  }
149 
154  template<typename path_t>
155  static xtd::ustring combine(path_t paths) noexcept {
156  xtd::ustring result;
157  std::for_each(paths.begin(), paths.end(), [&](auto path) {result = combine(result, path);});
158  return result;
159  }
160 
165  static xtd::ustring combine(const std::initializer_list<xtd::ustring>& paths) noexcept;
166 
171  static xtd::ustring get_directory_name(const xtd::ustring& path);
172 
177  static xtd::ustring get_extension(const xtd::ustring& path);
178 
183  static xtd::ustring get_file_name(const xtd::ustring& path);
184 
185  static xtd::ustring get_file_name_without_extension(const xtd::ustring& path);
186 
190  static xtd::ustring get_full_path(const xtd::ustring& path);
191 
195  template<typename char_t>
196  static std::vector<char_t> get_invalid_path_chars() noexcept {return {34, 60, 62, 124, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 0};}
197 
201  static std::vector<char> get_invalid_path_chars() noexcept;
202 
208  static xtd::ustring get_path_root(const xtd::ustring& path);
209 
214  static xtd::ustring get_random_file_name();
220  static xtd::ustring get_random_file_name(size_t name_length);
226  static xtd::ustring get_random_file_name(size_t name_size, size_t extension_size);
227 
233  static xtd::ustring get_temp_file_name();
234 
242  static xtd::ustring get_temp_path() noexcept;
243 
249  static bool has_extension(const xtd::ustring& path);
250 
256  static bool is_path_rooted(const xtd::ustring& path);
257 
258  private:
259  static int32 __get_index_path_rooted(const xtd::ustring& path);
260  static bool __is_drive(const xtd::ustring& path) noexcept;
261  };
262  }
263 }
#define static_
This keyword is use to represent a static object. A static object can&#39;t be instantiated (constructors...
Definition: static.h:37
The xtd namespace contains all fundamental classes to access Hardware, Os, System, and more.
Definition: system_report.h:17
static std::vector< char_t > get_invalid_path_chars() noexcept
Gets an array containing the characters that are not allowed in path names.
Definition: path.h:196
Contains xtd::io::file class.
Represents text as a sequence of UTF-8 code units.
Definition: ustring.h:46
static auto combine(type1_t path1, type2_t path2, type3_t path3, type4_t path4) noexcept
Combines four path strings.
Definition: path.h:146
static char_t directory_separator_char() noexcept
Provides a platform-specific character used to separate directory levels in a path string that reflec...
Definition: path.h:65
static char_t path_separator() noexcept
A platform-specific separator character used to separate path strings in environment variables...
Definition: path.h:82
Performs operations on std::basic_string instances that contain file or directory path information...
Definition: path.h:34
int_least32_t int32
Represents a 32-bit signed integer.
Definition: types.h:129
static char_t volume_separator_char() noexcept
Provides a platform-specific volume separator character.
Definition: path.h:95
static char_t alt_directory_separator_char() noexcept
Provides a platform-specific alternate character used to separate directory levels in a path string t...
Definition: path.h:47
static auto combine(type1_t path1, type2_t path2, type3_t path3) noexcept
Combines three path strings.
Definition: path.h:134
static xtd::ustring combine(path_t paths) noexcept
Combines path strings array.
Definition: path.h:155