Panda3D
configVariableSearchPath.h
Go to the documentation of this file.
1 /**
2  * PANDA 3D SOFTWARE
3  * Copyright (c) Carnegie Mellon University. All rights reserved.
4  *
5  * All use of this software is subject to the terms of the revised BSD
6  * license. You should have received a copy of this license along
7  * with this source code in a file named "LICENSE."
8  *
9  * @file configVariableSearchPath.h
10  * @author drose
11  * @date 2004-10-21
12  */
13 
14 #ifndef CONFIGVARIABLESEARCHPATH_H
15 #define CONFIGVARIABLESEARCHPATH_H
16 
17 #include "dtoolbase.h"
18 #include "configVariableBase.h"
19 #include "dSearchPath.h"
20 
21 /**
22  * This is similar to a ConfigVariableList, but it returns its list as a
23  * DSearchPath, as a list of directories.
24  *
25  * You may locally append directories to the end of the search path with the
26  * methods here, or prepend them to the beginning. Use these methods to make
27  * adjustments to the path; do not attempt to directly modify the const
28  * DSearchPath object returned by get_value().
29  *
30  * Unlike other ConfigVariable types, local changes (made by calling
31  * append_directory() and prepend_directory()) are specific to this particular
32  * instance of the ConfigVariableSearchPath. A separate instance of the same
33  * variable, created by using the same name to the constructor, will not
34  * reflect the local changes.
35  */
36 class EXPCL_DTOOL_PRC ConfigVariableSearchPath : public ConfigVariableBase {
37 PUBLISHED:
38  INLINE ConfigVariableSearchPath(const std::string &name,
39  const std::string &description = std::string(),
40  int flags = 0);
41  INLINE ConfigVariableSearchPath(const std::string &name,
42  const DSearchPath &default_value,
43  const std::string &description,
44  int flags = 0);
45  INLINE ConfigVariableSearchPath(const std::string &name,
46  const std::string &default_value,
47  const std::string &description,
48  int flags = 0);
49  INLINE ~ConfigVariableSearchPath();
50 
51  INLINE operator DSearchPath () const;
52  INLINE DSearchPath get_value() const;
53  INLINE const DSearchPath &get_default_value() const;
54  MAKE_PROPERTY(value, get_value);
55  MAKE_PROPERTY(default_value, get_default_value);
56 
57  INLINE bool clear_local_value();
58 
59  INLINE void clear();
60  INLINE void append_directory(const Filename &directory);
61  INLINE void prepend_directory(const Filename &directory);
62  INLINE void append_path(const std::string &path,
63  const std::string &separator = std::string());
64  INLINE void append_path(const DSearchPath &path);
65  INLINE void prepend_path(const DSearchPath &path);
66 
67  INLINE bool is_empty() const;
68  INLINE size_t get_num_directories() const;
69  INLINE Filename get_directory(size_t n) const;
70  MAKE_SEQ(get_directories, get_num_directories, get_directory);
71  MAKE_SEQ_PROPERTY(directories, get_num_directories, get_directory);
72 
73  INLINE Filename find_file(const Filename &filename) const;
74  INLINE size_t find_all_files(const Filename &filename,
75  DSearchPath::Results &results) const;
76  INLINE DSearchPath::Results find_all_files(const Filename &filename) const;
77 
78  INLINE void output(std::ostream &out) const;
79  INLINE void write(std::ostream &out) const;
80 
81 private:
82  void reload_search_path();
83 
84  mutable MutexImpl _lock;
85  DSearchPath _default_value;
86  DSearchPath _prefix, _postfix;
87 
88  AtomicAdjust::Integer _local_modified;
89  DSearchPath _cache;
90 };
91 
92 INLINE std::ostream &operator << (std::ostream &out, const ConfigVariableSearchPath &variable);
93 
95 
96 #endif
This is similar to a ConfigVariableList, but it returns its list as a DSearchPath,...
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
The name of a file, such as a texture file or an Egg file.
Definition: filename.h:39
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
bool clear_local_value()
Removes the local value defined for this variable, and allows its value to be once again retrieved fr...
This class stores a list of directories that can be searched, in order, to locate a particular file.
Definition: dSearchPath.h:28
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
A fake mutex implementation for single-threaded applications that don't need any synchronization cont...
This class is the base class for both ConfigVariableList and ConfigVariable (and hence for all of the...
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.