00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #ifndef CONFIGVARIABLECORE_H
00016 #define CONFIGVARIABLECORE_H
00017
00018 #include "dtoolbase.h"
00019 #include "configFlags.h"
00020 #include "configPageManager.h"
00021 #include "pnotify.h"
00022
00023 #include <vector>
00024
00025 class ConfigDeclaration;
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038 class EXPCL_DTOOLCONFIG ConfigVariableCore : public ConfigFlags {
00039 private:
00040 ConfigVariableCore(const string &name);
00041 ConfigVariableCore(const ConfigVariableCore &templ, const string &name);
00042 ~ConfigVariableCore();
00043
00044 PUBLISHED:
00045 INLINE const string &get_name() const;
00046 INLINE bool is_used() const;
00047
00048 INLINE ValueType get_value_type() const;
00049 INLINE const string &get_description() const;
00050 INLINE int get_flags() const;
00051 INLINE bool is_closed() const;
00052 INLINE int get_trust_level() const;
00053 INLINE bool is_dynamic() const;
00054 INLINE const ConfigDeclaration *get_default_value() const;
00055
00056 void set_value_type(ValueType value_type);
00057 void set_flags(int flags);
00058 void set_description(const string &description);
00059 void set_default_value(const string &default_value);
00060 INLINE void set_used();
00061
00062 ConfigDeclaration *make_local_value();
00063 bool clear_local_value();
00064 INLINE bool has_local_value() const;
00065
00066 bool has_value() const;
00067 int get_num_declarations() const;
00068 const ConfigDeclaration *get_declaration(int n) const;
00069
00070 INLINE int get_num_references() const;
00071 INLINE const ConfigDeclaration *get_reference(int n) const;
00072
00073 INLINE int get_num_trusted_references() const;
00074 INLINE const ConfigDeclaration *get_trusted_reference(int n) const;
00075
00076 INLINE int get_num_unique_references() const;
00077 INLINE const ConfigDeclaration *get_unique_reference(int n) const;
00078
00079 void output(ostream &out) const;
00080 void write(ostream &out) const;
00081
00082 private:
00083 void add_declaration(ConfigDeclaration *decl);
00084 void remove_declaration(ConfigDeclaration *decl);
00085
00086 INLINE void check_sort_declarations() const;
00087 void sort_declarations();
00088
00089 private:
00090 string _name;
00091 bool _is_used;
00092 ValueType _value_type;
00093 string _description;
00094 int _flags;
00095 ConfigDeclaration *_default_value;
00096 ConfigDeclaration *_local_value;
00097
00098 typedef vector<const ConfigDeclaration *> Declarations;
00099 Declarations _declarations;
00100 Declarations _trusted_declarations;
00101 Declarations _untrusted_declarations;
00102 Declarations _unique_declarations;
00103 bool _declarations_sorted;
00104 bool _value_queried;
00105
00106 friend class ConfigDeclaration;
00107 friend class ConfigVariableManager;
00108 };
00109
00110 INLINE ostream &operator << (ostream &out, const ConfigVariableCore &variable);
00111
00112 #include "configVariableCore.I"
00113
00114 #endif