Panda3D
Public Types | Public Member Functions | Protected Types | Protected Member Functions | Static Protected Member Functions | Protected Attributes | Static Protected Attributes

ConfigVariableSearchPath Class Reference

This is similar to a ConfigVariableList, but it returns its list as a DSearchPath, as a list of directories. More...

#include "configVariableSearchPath.h"

Inheritance diagram for ConfigVariableSearchPath:
ConfigVariableBase ConfigFlags

List of all members.

Public Types

enum  ValueType {
  VT_undefined, VT_list, VT_string, VT_filename,
  VT_bool, VT_int, VT_double, VT_enum,
  VT_search_path, VT_int64
}
enum  VariableFlags {
  F_trust_level_mask = 0x00000fff, F_open = 0x00001000, F_closed = 0x00002000, F_dynamic = 0x00004000,
  F_dconfig = 0x00008000
}

Public Member Functions

 ConfigVariableSearchPath (const string &name, const string &description=string(), int flags=0)
 ConfigVariableSearchPath (const string &name, const DSearchPath &default_value, const string &description, int flags=0)
 ConfigVariableSearchPath (const string &name, const string &default_value, const string &description, int flags=0)
void append_directory (const Filename &directory)
 Adds a new directory to the end of the search list.
void append_path (const string &path, const string &separator=string())
 Adds all of the directories listed in the search path to the end of the search list.
void append_path (const DSearchPath &path)
 Adds all of the directories listed in the search path to the end of the search list.
void clear ()
 Removes all the directories locally added to the search list, and restores it to its original form.
bool clear_local_value ()
 Removes all the directories locally added to the search list, and restores it to its original form.
int find_all_files (const Filename &filename, DSearchPath::Results &results) const
 Searches all the directories in the search list for the indicated file, in order.
DSearchPath::Results find_all_files (const Filename &filename) const
 This variant of find_all_files() returns the new Results object, instead of filling on in on the parameter list.
Filename find_file (const Filename &filename) const
 Searches all the directories in the search list for the indicated file, in order.
const DSearchPathget_default_value () const
const string & get_description () const
 Returns the brief description of this variable, if it has been defined.
const Filenameget_directory (int n) const
 Returns the nth directory on the search list.
int get_flags () const
 Returns the flags value as set by set_flags().
const string & get_name () const
 Returns the name of the variable.
int get_num_directories () const
 Returns the number of directories on the search list.
int get_trust_level () const
 Returns the minimum trust_level a prc file must demonstrate in order to redefine the value for this variable.
const DSearchPathget_value () const
ValueType get_value_type () const
 Returns the stated type of this variable.
bool has_local_value () const
 Returns true if this variable's value has been shadowed by a local assignment (as created via make_local_value()), or false otherwise.
bool has_value () const
 Returns true if this variable has an explicit value, either from a prc file or locally set, or false if variable has its default value.
bool is_closed () const
 Returns true if the variable is not trusted by any prc file (and hence cannot be modified from its compiled-in default value), or false for the normal case, in which the variable can be modified by any prc file at or above its trust level (see get_trust_level()).
bool is_dynamic () const
 Returns true if the variable was indicated as "dynamic" by its constructor, indicating that its name was dynamically generated, possibly from a large pool, and it should not be listed along with the other variables.
bool is_empty () const
 Returns true if the search list is empty, false otherwise.
 MAKE_SEQ (get_directories, get_num_directories, get_directory)
 operator const DSearchPath & () const
 Returns the variable's value.
void output (ostream &out) const
void prepend_directory (const Filename &directory)
 Adds a new directory to the front of the search list.
void prepend_path (const DSearchPath &path)
 Adds all of the directories listed in the search path to the beginning of the search list.
void write (ostream &out) const

Protected Types

typedef pset< const
ConfigVariableBase * > 
Unconstructed

Protected Member Functions

void record_unconstructed () const
 Records that this config variable was referenced before it was constructed (presumably a static-init ordering issue).
bool was_unconstructed () const
 Returns true if record_unconstructed() was ever called on this pointer, false otherwise.

Static Protected Member Functions

static AtomicAdjust::Integer initial_invalid_cache ()
 Returns a value that will be appropriate for initializing a local_modified value.
static void invalidate_cache ()
 Invalidates all of the global ConfigVariable caches in the world at once, by incrementing the global_modified counter.
static bool is_cache_valid (AtomicAdjust::Integer local_modified)
 Returns true if the local object's cache is still valid (based on a comparison of the supplied local_modified value with the global_modified value).
static void mark_cache_valid (AtomicAdjust::Integer &local_modified)
 Updates the indicated local_modified value so that the cache will appear to be valid, until someone next calls invalidate_cache().

Protected Attributes

ConfigVariableCore_core

Static Protected Attributes

static Unconstructed * _unconstructed

Detailed Description

This is similar to a ConfigVariableList, but it returns its list as a DSearchPath, as a list of directories.

You may locally append directories to the end of the search path with the methods here, or prepend them to the beginning. Use these methods to make adjustments to the path; do not attempt to directly modify the const DSearchPath object returned by get_value().

Unlike other ConfigVariable types, local changes (made by calling append_directory() and prepend_directory()) are specific to this particular instance of the ConfigVariableSearchPath. A separate instance of the same variable, created by using the same name to the constructor, will not reflect the local changes.

Definition at line 42 of file configVariableSearchPath.h.


Member Function Documentation

void ConfigVariableSearchPath::append_directory ( const Filename directory) [inline]

Adds a new directory to the end of the search list.

Definition at line 175 of file configVariableSearchPath.I.

References DSearchPath::append_directory(), and ConfigFlags::initial_invalid_cache().

void ConfigVariableSearchPath::append_path ( const string &  path,
const string &  separator = string() 
) [inline]

Adds all of the directories listed in the search path to the end of the search list.

Definition at line 198 of file configVariableSearchPath.I.

References DSearchPath::append_path(), and ConfigFlags::initial_invalid_cache().

void ConfigVariableSearchPath::append_path ( const DSearchPath path) [inline]

Adds all of the directories listed in the search path to the end of the search list.

Definition at line 210 of file configVariableSearchPath.I.

References DSearchPath::append_path(), and ConfigFlags::initial_invalid_cache().

void ConfigVariableSearchPath::clear ( ) [inline]

Removes all the directories locally added to the search list, and restores it to its original form.

Definition at line 165 of file configVariableSearchPath.I.

References clear_local_value().

bool ConfigVariableSearchPath::clear_local_value ( ) [inline]

Removes all the directories locally added to the search list, and restores it to its original form.

Reimplemented from ConfigVariableBase.

Definition at line 143 of file configVariableSearchPath.I.

References DSearchPath::clear(), ConfigVariableCore::clear_local_value(), ConfigFlags::initial_invalid_cache(), and DSearchPath::is_empty().

Referenced by clear().

int ConfigVariableSearchPath::find_all_files ( const Filename filename,
DSearchPath::Results results 
) const [inline]

Searches all the directories in the search list for the indicated file, in order.

Fills up the results list with *all* of the matching filenames found, if any. Returns the number of matches found.

It is the responsibility of the the caller to clear the results list first; otherwise, the newly-found files will be appended to the list.

Definition at line 284 of file configVariableSearchPath.I.

References DSearchPath::find_all_files().

DSearchPath::Results ConfigVariableSearchPath::find_all_files ( const Filename filename) const [inline]

This variant of find_all_files() returns the new Results object, instead of filling on in on the parameter list.

This is a little more convenient to call from Python.

Definition at line 298 of file configVariableSearchPath.I.

References DSearchPath::find_all_files().

Filename ConfigVariableSearchPath::find_file ( const Filename filename) const [inline]

Searches all the directories in the search list for the indicated file, in order.

Returns the full matching pathname of the first match if found, or the empty string if not found.

Definition at line 267 of file configVariableSearchPath.I.

References DSearchPath::find_file().

const string & ConfigVariableBase::get_description ( ) const [inline, inherited]

Returns the brief description of this variable, if it has been defined.

Definition at line 72 of file configVariableBase.I.

References ConfigVariableCore::get_description().

const Filename & ConfigVariableSearchPath::get_directory ( int  n) const [inline]

Returns the nth directory on the search list.

Definition at line 254 of file configVariableSearchPath.I.

References DSearchPath::get_directory().

int ConfigVariableBase::get_flags ( ) const [inline, inherited]

Returns the flags value as set by set_flags().

This includes the trust level and some other settings. See the individual methods is_closed(), get_trust_level(), etc. to pull out the semantic meaning of these flags individually.

Definition at line 87 of file configVariableBase.I.

References ConfigVariableCore::get_flags().

const string & ConfigVariableBase::get_name ( ) const [inline, inherited]

Returns the name of the variable.

Definition at line 47 of file configVariableBase.I.

References ConfigVariableCore::get_name().

int ConfigVariableSearchPath::get_num_directories ( ) const [inline]

Returns the number of directories on the search list.

Definition at line 244 of file configVariableSearchPath.I.

References DSearchPath::get_num_directories().

int ConfigVariableBase::get_trust_level ( ) const [inline, inherited]

Returns the minimum trust_level a prc file must demonstrate in order to redefine the value for this variable.

Arguably, this should be called the "mistrust level", since the larger the value, the more suspicious we are of prc files. This value is not used if is_closed() returns true, which indicates no file may be trusted.

This value only has effect in a release build (specifically, when PRC_RESPECT_TRUST_LEVEL is defined true in Config.pp).

Definition at line 128 of file configVariableBase.I.

References ConfigVariableCore::get_trust_level().

ConfigVariableBase::ValueType ConfigVariableBase::get_value_type ( ) const [inline, inherited]

Returns the stated type of this variable.

This should be VT_list, unless a later variable declaration has changed it.

Definition at line 60 of file configVariableBase.I.

References ConfigVariableCore::get_value_type().

bool ConfigVariableBase::has_local_value ( ) const [inline, inherited]

Returns true if this variable's value has been shadowed by a local assignment (as created via make_local_value()), or false otherwise.

Definition at line 172 of file configVariableBase.I.

References ConfigVariableCore::has_local_value().

bool ConfigVariableBase::has_value ( ) const [inline, inherited]

Returns true if this variable has an explicit value, either from a prc file or locally set, or false if variable has its default value.

Definition at line 185 of file configVariableBase.I.

References ConfigVariableCore::has_value().

Referenced by wglGraphicsStateGuardian::choose_pixel_format(), Lens::clear(), and GraphicsStateGuardian::get_copy_texture_inverted().

AtomicAdjust::Integer ConfigFlags::initial_invalid_cache ( ) [inline, static, protected, inherited]

Returns a value that will be appropriate for initializing a local_modified value.

This value will indicate an invalid cache in the next call to is_cache_valid().

Definition at line 49 of file configFlags.I.

Referenced by append_directory(), append_path(), clear_local_value(), prepend_directory(), and prepend_path().

void ConfigFlags::invalidate_cache ( ) [inline, static, protected, inherited]
bool ConfigFlags::is_cache_valid ( AtomicAdjust::Integer  local_modified) [inline, static, protected, inherited]

Returns true if the local object's cache is still valid (based on a comparison of the supplied local_modified value with the global_modified value).

Definition at line 24 of file configFlags.I.

Referenced by ConfigVariableString::get_value(), ConfigVariableInt64::get_value(), ConfigVariableInt::get_value(), ConfigVariableFilename::get_value(), ConfigVariableDouble::get_value(), and ConfigVariableBool::get_value().

bool ConfigVariableBase::is_closed ( ) const [inline, inherited]

Returns true if the variable is not trusted by any prc file (and hence cannot be modified from its compiled-in default value), or false for the normal case, in which the variable can be modified by any prc file at or above its trust level (see get_trust_level()).

This value only has effect in a release build (specifically, when PRC_RESPECT_TRUST_LEVEL is defined true in Config.pp).

Definition at line 107 of file configVariableBase.I.

References ConfigVariableCore::is_closed().

bool ConfigVariableBase::is_dynamic ( ) const [inline, inherited]

Returns true if the variable was indicated as "dynamic" by its constructor, indicating that its name was dynamically generated, possibly from a large pool, and it should not be listed along with the other variables.

Definition at line 143 of file configVariableBase.I.

References ConfigVariableCore::is_dynamic().

bool ConfigVariableSearchPath::is_empty ( ) const [inline]

Returns true if the search list is empty, false otherwise.

Definition at line 234 of file configVariableSearchPath.I.

References DSearchPath::is_empty().

void ConfigFlags::mark_cache_valid ( AtomicAdjust::Integer &  local_modified) [inline, static, protected, inherited]

Updates the indicated local_modified value so that the cache will appear to be valid, until someone next calls invalidate_cache().

Definition at line 36 of file configFlags.I.

Referenced by ConfigVariableString::get_value(), ConfigVariableInt64::get_value(), ConfigVariableInt::get_value(), ConfigVariableDouble::get_value(), and ConfigVariableBool::get_value().

ConfigVariableSearchPath::operator const DSearchPath & ( ) const [inline]

Returns the variable's value.

Definition at line 108 of file configVariableSearchPath.I.

void ConfigVariableSearchPath::prepend_directory ( const Filename directory) [inline]

Adds a new directory to the front of the search list.

Definition at line 186 of file configVariableSearchPath.I.

References ConfigFlags::initial_invalid_cache(), and DSearchPath::prepend_directory().

Referenced by SomethingToEgg::post_command_line().

void ConfigVariableSearchPath::prepend_path ( const DSearchPath path) [inline]

Adds all of the directories listed in the search path to the beginning of the search list.

Definition at line 222 of file configVariableSearchPath.I.

References ConfigFlags::initial_invalid_cache(), and DSearchPath::prepend_path().

void ConfigVariableBase::record_unconstructed ( ) const [protected, inherited]

Records that this config variable was referenced before it was constructed (presumably a static-init ordering issue).

This is used to print a useful error message later, when the constructor is actually called (and we then know what the name of the variable is).

Definition at line 62 of file configVariableBase.cxx.

Referenced by ConfigVariable::report_unconstructed().

bool ConfigVariableBase::was_unconstructed ( ) const [protected, inherited]

Returns true if record_unconstructed() was ever called on this pointer, false otherwise.

Definition at line 78 of file configVariableBase.cxx.

Referenced by ConfigVariableBase::ConfigVariableBase().


The documentation for this class was generated from the following files:
 All Classes Functions Variables Enumerations