Panda3D
configVariableDouble.I
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 configVariableDouble.I
10  * @author drose
11  * @date 2004-10-20
12  */
13 
14 /**
15  *
16  */
17 INLINE ConfigVariableDouble::
18 ConfigVariableDouble(const std::string &name) :
19  ConfigVariable(name, VT_double),
20  _local_modified(initial_invalid_cache())
21 {
22  _core->set_used();
23 }
24 
25 /**
26  *
27  */
28 INLINE ConfigVariableDouble::
29 ConfigVariableDouble(const std::string &name, double default_value,
30  const std::string &description, int flags) :
31 #ifdef PRC_SAVE_DESCRIPTIONS
32  ConfigVariable(name, ConfigVariableCore::VT_double, description, flags),
33 #else
34  ConfigVariable(name, ConfigVariableCore::VT_double, std::string(), flags),
35 #endif
36  _local_modified(initial_invalid_cache())
37 {
38  set_default_value(default_value);
39  _core->set_used();
40 }
41 
42 /**
43  *
44  */
45 INLINE ConfigVariableDouble::
46 ConfigVariableDouble(const std::string &name, const std::string &default_value,
47  const std::string &description, int flags) :
48 #ifdef PRC_SAVE_DESCRIPTIONS
49  ConfigVariable(name, ConfigVariableCore::VT_double, description, flags),
50 #else
51  ConfigVariable(name, ConfigVariableCore::VT_double, std::string(), flags),
52 #endif
53  _local_modified(initial_invalid_cache())
54 {
55  _core->set_default_value(default_value);
56  _core->set_used();
57 }
58 
59 /**
60  * Reassigns the variable's local value.
61  */
62 INLINE void ConfigVariableDouble::
63 operator = (double value) {
64  set_value(value);
65 }
66 
67 /**
68  * Returns the variable's value.
69  */
70 INLINE ConfigVariableDouble::
71 operator double () const {
72  return get_value();
73 }
74 
75 /**
76  * Returns the number of unique words in the variable.
77  */
78 INLINE size_t ConfigVariableDouble::
79 size() const {
80  return get_num_words();
81 }
82 
83 /**
84  * Returns the value of the variable's nth word.
85  */
86 INLINE double ConfigVariableDouble::
87 operator [] (size_t n) const {
88  return get_word(n);
89 }
90 
91 /**
92  * Reassigns the variable's local value.
93  */
94 INLINE void ConfigVariableDouble::
95 set_value(double value) {
96  set_string_value("");
97  set_double_word(0, value);
98 }
99 
100 /**
101  * Returns the variable's value.
102  */
103 INLINE double ConfigVariableDouble::
104 get_value() const {
105  TAU_PROFILE("double ConfigVariableDouble::get_value() const", " ", TAU_USER);
106  if (!is_cache_valid(_local_modified)) {
107  mark_cache_valid(((ConfigVariableDouble *)this)->_local_modified);
108  ((ConfigVariableDouble *)this)->_cache = get_double_word(0);
109  }
110  return _cache;
111 }
112 
113 /**
114  * Returns the variable's default value.
115  */
116 INLINE double ConfigVariableDouble::
117 get_default_value() const {
118  const ConfigDeclaration *decl = ConfigVariable::get_default_value();
119  if (decl != nullptr) {
120  return decl->get_double_word(0);
121  }
122  return 0.0;
123 }
124 
125 /**
126  * Returns the variable's nth value.
127  */
128 INLINE double ConfigVariableDouble::
129 get_word(size_t n) const {
130  return get_double_word(n);
131 }
132 
133 /**
134  * Reassigns the variable's nth value. This makes a local copy of the
135  * variable's overall value.
136  */
137 INLINE void ConfigVariableDouble::
138 set_word(size_t n, double value) {
139  set_double_word(n, value);
140 }
double get_double_word(size_t n) const
Returns the integer value of the nth word of the declaration's value, or 0 if there is no nth value.
The internal definition of a ConfigVariable.
void operator=(double value)
Reassigns the variable's local value.
void set_string_value(const std::string &value)
Changes the value assigned to this variable.
size_t get_num_words() const
Returns the number of words in the variable's value.
This is a convenience class to specialize ConfigVariable as a floating- point type.
size_t size() const
Returns the number of unique words in the variable.
This is a generic, untyped ConfigVariable.
void set_word(size_t n, double value)
Reassigns the variable's nth value.
double get_word(size_t n) const
Returns the variable's nth value.
double operator [](size_t n) const
Returns the value of the variable's nth word.
set_value
Reassigns the variable's local value.
A single declaration of a config variable, typically defined as one line in a .prc file,...