57 INLINE
Filename(
const char *filename);
58 INLINE
Filename(
const std::string &filename);
59 INLINE
Filename(
const std::wstring &filename);
61 INLINE
Filename(std::string &&filename) noexcept;
71 EXTENSION(PyObject *__reduce__(PyObject *
self)
const);
78 INLINE
static Filename text_filename(
const std::string &filename);
80 INLINE
static Filename binary_filename(
const std::string &filename);
81 INLINE
static Filename dso_filename(
const std::string &filename);
82 INLINE
static Filename executable_filename(
const std::string &filename);
84 INLINE
static Filename pattern_filename(
const std::string &filename);
86 static Filename from_os_specific(
const std::string &os_specific,
87 Type type = T_general);
88 static Filename from_os_specific_w(
const std::wstring &os_specific,
89 Type type = T_general);
90 static Filename expand_from(
const std::string &user_string,
91 Type type = T_general);
92 static Filename temporary(
const std::string &dirname,
const std::string &prefix,
93 const std::string &suffix = std::string(),
94 Type type = T_general);
96 static const Filename &get_home_directory();
97 static const Filename &get_temp_directory();
98 static const Filename &get_user_appdata_directory();
99 static const Filename &get_common_appdata_directory();
102 INLINE
Filename &operator = (
const std::string &filename);
103 INLINE
Filename &operator = (
const std::wstring &filename);
104 INLINE
Filename &operator = (
const char *filename);
106 INLINE
Filename &operator = (std::string &&filename) noexcept;
110 INLINE
operator const std::string & ()
const;
111 INLINE
const char *c_str()
const;
112 INLINE
bool empty()
const;
113 INLINE
size_t length()
const;
114 INLINE
char operator [] (
size_t n)
const;
116 EXTENSION(PyObject *__repr__()
const);
117 EXTENSION(PyObject *__fspath__()
const);
119 INLINE std::string substr(
size_t begin)
const;
120 INLINE std::string substr(
size_t begin,
size_t end)
const;
121 INLINE
void operator += (
const std::string &other);
122 INLINE
Filename operator + (
const std::string &other)
const;
128 INLINE std::string get_fullpath()
const;
129 INLINE std::wstring get_fullpath_w()
const;
130 INLINE std::string get_dirname()
const;
131 INLINE std::string get_basename()
const;
132 INLINE std::string get_fullpath_wo_extension()
const;
133 INLINE std::string get_basename_wo_extension()
const;
134 INLINE std::string get_extension()
const;
137 void set_fullpath(
const std::string &s);
138 void set_dirname(
const std::string &s);
139 void set_basename(
const std::string &s);
140 void set_fullpath_wo_extension(
const std::string &s);
141 void set_basename_wo_extension(
const std::string &s);
142 void set_extension(
const std::string &s);
148 INLINE
void set_binary();
149 INLINE
void set_text();
150 INLINE
bool is_binary()
const;
151 INLINE
bool is_text()
const;
152 INLINE
bool is_binary_or_text()
const;
154 INLINE
void set_type(Type type);
155 INLINE Type get_type()
const;
157 INLINE
void set_pattern(
bool pattern);
158 INLINE
bool get_pattern()
const;
160 INLINE
bool has_hash()
const;
161 Filename get_filename_index(
int index)
const;
163 INLINE std::string get_hash_to_end()
const;
164 void set_hash_to_end(
const std::string &s);
166 void extract_components(vector_string &components)
const;
171 INLINE
bool is_local()
const;
172 INLINE
bool is_fully_qualified()
const;
173 void make_absolute();
174 void make_absolute(
const Filename &start_directory);
176 bool make_canonical();
177 bool make_true_case();
179 std::string to_os_specific()
const;
180 std::wstring to_os_specific_w()
const;
181 std::string to_os_generic()
const;
182 std::string to_os_short_name()
const;
183 std::string to_os_long_name()
const;
186 bool is_regular_file()
const;
187 bool is_writable()
const;
188 bool is_directory()
const;
189 bool is_executable()
const;
190 int compare_timestamps(
const Filename &other,
191 bool this_missing_is_old =
true,
192 bool other_missing_is_old =
true)
const;
193 time_t get_timestamp()
const;
194 time_t get_access_timestamp()
const;
195 std::streamsize get_file_size()
const;
197 bool resolve_filename(
const DSearchPath &searchpath,
198 const std::string &default_extension = std::string());
199 bool make_relative_to(
Filename directory,
bool allow_backups =
true);
200 int find_on_searchpath(
const DSearchPath &searchpath);
202 bool scan_directory(vector_string &contents)
const;
204 EXTENSION(PyObject *scan_directory()
const);
207 bool open_read(std::ifstream &stream)
const;
208 bool open_write(std::ofstream &stream,
bool truncate =
true)
const;
209 bool open_append(std::ofstream &stream)
const;
210 bool open_read_write(std::fstream &stream,
bool truncate =
false)
const;
211 bool open_read_append(std::fstream &stream)
const;
213 #ifdef USE_PANDAFILESTREAM
214 bool open_read(pifstream &stream)
const;
215 bool open_write(pofstream &stream,
bool truncate =
true)
const;
216 bool open_append(pofstream &stream)
const;
217 bool open_read_write(pfstream &stream,
bool truncate =
false)
const;
218 bool open_read_append(pfstream &stream)
const;
224 BLOCKING
bool rename_to(
const Filename &other)
const;
225 BLOCKING
bool copy_to(
const Filename &other)
const;
227 bool make_dir()
const;
232 INLINE
bool operator == (
const std::string &other)
const;
233 INLINE
bool operator != (
const std::string &other)
const;
234 INLINE
bool operator < (
const std::string &other)
const;
236 INLINE
bool __nonzero__()
const;
237 int get_hash()
const;
239 INLINE
void output(std::ostream &out)
const;
241 INLINE
static void set_filesystem_encoding(TextEncoder::Encoding encoding);
242 INLINE
static TextEncoder::Encoding get_filesystem_encoding();
245 bool atomic_compare_and_exchange_contents(std::string &orig_contents,
const std::string &old_contents,
const std::string &new_contents)
const;
246 bool atomic_read_contents(std::string &contents)
const;
249 void locate_basename();
250 void locate_extension();
252 size_t get_common_prefix(
const std::string &other)
const;
253 static int count_slashes(
const std::string &str);
254 bool r_make_canonical(
const Filename &cwd);
256 std::string _filename;
260 size_t _basename_start;
261 size_t _basename_end;
262 size_t _extension_start;
268 static TextEncoder::Encoding _filesystem_encoding;
269 static TVOLATILE AtomicAdjust::Pointer _home_directory;
270 static TVOLATILE AtomicAdjust::Pointer _temp_directory;
271 static TVOLATILE AtomicAdjust::Pointer _user_appdata_directory;
272 static TVOLATILE AtomicAdjust::Pointer _common_appdata_directory;
276 static std::string _internal_data_dir;
283 static void init_type() {
291 INLINE std::ostream &operator << (std::ostream &out,
const Filename &n) {
This class stores a list of directories that can be searched, in order, to locate a particular file.
The name of a file, such as a texture file or an Egg file.
TypeHandle is the identifier used to differentiate C++ class types.
An STL function object class, this is intended to be used on any ordered collection of class objects ...
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
void register_type(TypeHandle &type_handle, const std::string &name)
This inline function is just a convenient way to call TypeRegistry::register_type(),...
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.