mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-02 01:44:06 -04:00
make ConfigVariableFilename be more Filename-like
This commit is contained in:
parent
448e2b73e8
commit
f7c34a095a
@ -24,7 +24,9 @@
|
|||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
INLINE ConfigVariableFilename::
|
INLINE ConfigVariableFilename::
|
||||||
ConfigVariableFilename(const string &name) :
|
ConfigVariableFilename(const string &name) :
|
||||||
ConfigVariable(name, VT_filename)
|
ConfigVariable(name, VT_filename),
|
||||||
|
_value_seq(-1),
|
||||||
|
_value_stale(true)
|
||||||
{
|
{
|
||||||
_core->set_used();
|
_core->set_used();
|
||||||
}
|
}
|
||||||
@ -59,20 +61,125 @@ operator = (const Filename &value) {
|
|||||||
// Description: Returns the variable's value as a Filename.
|
// Description: Returns the variable's value as a Filename.
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
INLINE ConfigVariableFilename::
|
INLINE ConfigVariableFilename::
|
||||||
operator Filename () const {
|
operator const Filename & () const {
|
||||||
return get_value();
|
return get_value();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////
|
||||||
|
// Function: ConfigVariableFilename::c_str
|
||||||
|
// Access: Public
|
||||||
|
// Description:
|
||||||
|
////////////////////////////////////////////////////////////////////
|
||||||
|
INLINE const char *ConfigVariableFilename::
|
||||||
|
c_str() const {
|
||||||
|
return get_value().c_str();
|
||||||
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
// Function: ConfigVariableFilename::empty
|
// Function: ConfigVariableFilename::empty
|
||||||
// Access: Published
|
// Access: Public
|
||||||
// Description: Returns true if the filename is empty, false otherwise.
|
// Description:
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
INLINE bool ConfigVariableFilename::
|
INLINE bool ConfigVariableFilename::
|
||||||
empty() const {
|
empty() const {
|
||||||
return get_value().empty();
|
return get_value().empty();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////
|
||||||
|
// Function: ConfigVariableFilename::length
|
||||||
|
// Access: Public
|
||||||
|
// Description:
|
||||||
|
////////////////////////////////////////////////////////////////////
|
||||||
|
INLINE size_t ConfigVariableFilename::
|
||||||
|
length() const {
|
||||||
|
return get_value().length();
|
||||||
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////
|
||||||
|
// Function: ConfigVariableFilename::Indexing operator
|
||||||
|
// Access: Public
|
||||||
|
// Description:
|
||||||
|
////////////////////////////////////////////////////////////////////
|
||||||
|
INLINE char ConfigVariableFilename::
|
||||||
|
operator [] (int n) const {
|
||||||
|
return get_value()[n];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////
|
||||||
|
// Function: ConfigVariableFilename::get_fullpath
|
||||||
|
// Access: Public
|
||||||
|
// Description: Returns the entire filename: directory, basename,
|
||||||
|
// extension. This is the same thing returned by the
|
||||||
|
// string typecast operator, so this function is a
|
||||||
|
// little redundant.
|
||||||
|
////////////////////////////////////////////////////////////////////
|
||||||
|
INLINE string ConfigVariableFilename::
|
||||||
|
get_fullpath() const {
|
||||||
|
return get_value().get_fullpath();
|
||||||
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////
|
||||||
|
// Function: ConfigVariableFilename::get_dirname
|
||||||
|
// Access: Public
|
||||||
|
// Description: Returns the directory part of the filename. This is
|
||||||
|
// everything in the filename up to, but not including
|
||||||
|
// the rightmost slash.
|
||||||
|
////////////////////////////////////////////////////////////////////
|
||||||
|
INLINE string ConfigVariableFilename::
|
||||||
|
get_dirname() const {
|
||||||
|
return get_value().get_dirname();
|
||||||
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////
|
||||||
|
// Function: ConfigVariableFilename::get_basename
|
||||||
|
// Access: Public
|
||||||
|
// Description: Returns the basename part of the filename. This is
|
||||||
|
// everything in the filename after the rightmost slash,
|
||||||
|
// including any extensions.
|
||||||
|
////////////////////////////////////////////////////////////////////
|
||||||
|
INLINE string ConfigVariableFilename::
|
||||||
|
get_basename() const {
|
||||||
|
return get_value().get_basename();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////
|
||||||
|
// Function: ConfigVariableFilename::get_fullpath_wo_extension
|
||||||
|
// Access: Public
|
||||||
|
// Description: Returns the full filename--directory and basename
|
||||||
|
// parts--except for the extension.
|
||||||
|
////////////////////////////////////////////////////////////////////
|
||||||
|
INLINE string ConfigVariableFilename::
|
||||||
|
get_fullpath_wo_extension() const {
|
||||||
|
return get_value().get_fullpath_wo_extension();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////
|
||||||
|
// Function: ConfigVariableFilename::get_basename_wo_extension
|
||||||
|
// Access: Public
|
||||||
|
// Description: Returns the basename part of the filename, without
|
||||||
|
// the file extension.
|
||||||
|
////////////////////////////////////////////////////////////////////
|
||||||
|
INLINE string ConfigVariableFilename::
|
||||||
|
get_basename_wo_extension() const {
|
||||||
|
return get_value().get_basename_wo_extension();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////
|
||||||
|
// Function: ConfigVariableFilename::get_extension
|
||||||
|
// Access: Public
|
||||||
|
// Description: Returns the file extension. This is everything after
|
||||||
|
// the rightmost dot, if there is one, or the empty
|
||||||
|
// string if there is not.
|
||||||
|
////////////////////////////////////////////////////////////////////
|
||||||
|
INLINE string ConfigVariableFilename::
|
||||||
|
get_extension() const {
|
||||||
|
return get_value().get_extension();
|
||||||
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
// Function: ConfigVariableFilename::Equality operator
|
// Function: ConfigVariableFilename::Equality operator
|
||||||
// Access: Public
|
// Access: Public
|
||||||
@ -118,9 +225,12 @@ set_value(const Filename &value) {
|
|||||||
// Access: Published
|
// Access: Published
|
||||||
// Description: Returns the variable's value.
|
// Description: Returns the variable's value.
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
INLINE Filename ConfigVariableFilename::
|
INLINE const Filename &ConfigVariableFilename::
|
||||||
get_value() const {
|
get_value() const {
|
||||||
return Filename::expand_from(get_string_value());
|
if (_value_stale || _value_seq != _core->get_value_seq()) {
|
||||||
|
((ConfigVariableFilename *)this)->reload_value();
|
||||||
|
}
|
||||||
|
return _value;
|
||||||
}
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
@ -132,9 +242,9 @@ INLINE Filename ConfigVariableFilename::
|
|||||||
get_default_value() const {
|
get_default_value() const {
|
||||||
const ConfigDeclaration *decl = ConfigVariable::get_default_value();
|
const ConfigDeclaration *decl = ConfigVariable::get_default_value();
|
||||||
if (decl != (ConfigDeclaration *)NULL) {
|
if (decl != (ConfigDeclaration *)NULL) {
|
||||||
return decl->get_string_word(0);
|
return Filename::expand_from(decl->get_string_value());
|
||||||
}
|
}
|
||||||
return string();
|
return Filename();
|
||||||
}
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
|
@ -17,3 +17,17 @@
|
|||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
#include "configVariableFilename.h"
|
#include "configVariableFilename.h"
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////
|
||||||
|
// Function: ConfigVariableFilename::reload_value
|
||||||
|
// Access: Private
|
||||||
|
// Description: Recopies the config variable into the Filename for
|
||||||
|
// returning its value.
|
||||||
|
////////////////////////////////////////////////////////////////////
|
||||||
|
void ConfigVariableFilename::
|
||||||
|
reload_value() {
|
||||||
|
_value = Filename::expand_from(get_string_value());
|
||||||
|
|
||||||
|
_value_seq = _core->get_value_seq();
|
||||||
|
_value_stale = false;
|
||||||
|
}
|
||||||
|
@ -39,8 +39,21 @@ PUBLISHED:
|
|||||||
const string &description = string(), int flags = 0);
|
const string &description = string(), int flags = 0);
|
||||||
|
|
||||||
INLINE void operator = (const Filename &value);
|
INLINE void operator = (const Filename &value);
|
||||||
INLINE operator Filename () const;
|
INLINE operator const Filename &() const;
|
||||||
|
|
||||||
|
// These methods help the ConfigVariableFilename act like a Filename
|
||||||
|
// object.
|
||||||
|
INLINE const char *c_str() const;
|
||||||
INLINE bool empty() const;
|
INLINE bool empty() const;
|
||||||
|
INLINE size_t length() const;
|
||||||
|
INLINE char operator [] (int n) const;
|
||||||
|
|
||||||
|
INLINE string get_fullpath() const;
|
||||||
|
INLINE string get_dirname() const;
|
||||||
|
INLINE string get_basename() const;
|
||||||
|
INLINE string get_fullpath_wo_extension() const;
|
||||||
|
INLINE string get_basename_wo_extension() const;
|
||||||
|
INLINE string get_extension() const;
|
||||||
|
|
||||||
// Comparison operators are handy.
|
// Comparison operators are handy.
|
||||||
INLINE bool operator == (const Filename &other) const;
|
INLINE bool operator == (const Filename &other) const;
|
||||||
@ -48,11 +61,19 @@ PUBLISHED:
|
|||||||
INLINE bool operator < (const Filename &other) const;
|
INLINE bool operator < (const Filename &other) const;
|
||||||
|
|
||||||
INLINE void set_value(const Filename &value);
|
INLINE void set_value(const Filename &value);
|
||||||
INLINE Filename get_value() const;
|
INLINE const Filename &get_value() const;
|
||||||
INLINE Filename get_default_value() const;
|
INLINE Filename get_default_value() const;
|
||||||
|
|
||||||
INLINE Filename get_word(int n) const;
|
INLINE Filename get_word(int n) const;
|
||||||
INLINE void set_word(int n, const Filename &value);
|
INLINE void set_word(int n, const Filename &value);
|
||||||
|
|
||||||
|
private:
|
||||||
|
void reload_value();
|
||||||
|
|
||||||
|
int _value_seq;
|
||||||
|
bool _value_stale;
|
||||||
|
|
||||||
|
Filename _value;
|
||||||
};
|
};
|
||||||
|
|
||||||
#include "configVariableFilename.I"
|
#include "configVariableFilename.I"
|
||||||
|
@ -163,7 +163,7 @@ INLINE string ConfigVariableString::
|
|||||||
get_default_value() const {
|
get_default_value() const {
|
||||||
const ConfigDeclaration *decl = ConfigVariable::get_default_value();
|
const ConfigDeclaration *decl = ConfigVariable::get_default_value();
|
||||||
if (decl != (ConfigDeclaration *)NULL) {
|
if (decl != (ConfigDeclaration *)NULL) {
|
||||||
return decl->get_string_word(0);
|
return decl->get_string_value();
|
||||||
}
|
}
|
||||||
return string();
|
return string();
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user