108 lines
2.6 KiB
Text
108 lines
2.6 KiB
Text
/**
|
|
* PANDA 3D SOFTWARE
|
|
* Copyright (c) Carnegie Mellon University. All rights reserved.
|
|
*
|
|
* All use of this software is subject to the terms of the revised BSD
|
|
* license. You should have received a copy of this license along
|
|
* with this source code in a file named "LICENSE."
|
|
*
|
|
* @file configVariableList.I
|
|
* @author drose
|
|
* @date 2004-10-20
|
|
*/
|
|
|
|
/**
|
|
*
|
|
*/
|
|
INLINE ConfigVariableList::
|
|
~ConfigVariableList() {
|
|
}
|
|
|
|
/**
|
|
*
|
|
*/
|
|
INLINE ConfigVariableList::
|
|
ConfigVariableList(const std::string &name,
|
|
const std::string &description, int flags) :
|
|
#ifdef PRC_SAVE_DESCRIPTIONS
|
|
ConfigVariableBase(name, VT_list, description, flags)
|
|
#else
|
|
ConfigVariableBase(name, VT_list, std::string(), flags)
|
|
#endif
|
|
{
|
|
// A list variable implicitly defines a default value of the empty string.
|
|
// This is just to prevent the core variable from complaining should anyone
|
|
// ask for its solitary value.
|
|
if (_core->get_default_value() == nullptr) {
|
|
_core->set_default_value("");
|
|
}
|
|
_core->set_used();
|
|
}
|
|
|
|
/**
|
|
* Returns the number of values in the variable.
|
|
*/
|
|
INLINE size_t ConfigVariableList::
|
|
get_num_values() const {
|
|
nassertr(_core != nullptr, 0);
|
|
return _core->get_num_trusted_references();
|
|
}
|
|
|
|
/**
|
|
* Returns the nth value of the variable.
|
|
*/
|
|
INLINE std::string ConfigVariableList::
|
|
get_string_value(size_t n) const {
|
|
nassertr(_core != nullptr, std::string());
|
|
const ConfigDeclaration *decl = _core->get_trusted_reference(n);
|
|
if (decl != nullptr) {
|
|
return decl->get_string_value();
|
|
}
|
|
return std::string();
|
|
}
|
|
|
|
/**
|
|
* Returns the number of unique values in the variable.
|
|
*/
|
|
INLINE size_t ConfigVariableList::
|
|
get_num_unique_values() const {
|
|
nassertr(_core != nullptr, 0);
|
|
return _core->get_num_unique_references();
|
|
}
|
|
|
|
/**
|
|
* Returns the nth unique value of the variable.
|
|
*/
|
|
INLINE std::string ConfigVariableList::
|
|
get_unique_value(size_t n) const {
|
|
nassertr(_core != nullptr, std::string());
|
|
const ConfigDeclaration *decl = _core->get_unique_reference(n);
|
|
if (decl != nullptr) {
|
|
return decl->get_string_value();
|
|
}
|
|
return std::string();
|
|
}
|
|
|
|
/**
|
|
* Returns the number of unique values of the variable.
|
|
*/
|
|
INLINE size_t ConfigVariableList::
|
|
size() const {
|
|
return get_num_unique_values();
|
|
}
|
|
|
|
/**
|
|
* Returns the nth unique value of the variable. Note that the indexing
|
|
* operator returns the list of unique values, and so the maximum range is
|
|
* get_num_unique_values().
|
|
*/
|
|
INLINE std::string ConfigVariableList::
|
|
operator [] (size_t n) const {
|
|
return get_unique_value(n);
|
|
}
|
|
|
|
INLINE std::ostream &
|
|
operator << (std::ostream &out, const ConfigVariableList &variable) {
|
|
variable.output(out);
|
|
return out;
|
|
}
|