00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 #ifndef __PI_SettingList_h__
00032 #define __PI_SettingList_h__
00033
00034 #include "PI_API.h"
00035 #include <iostream.h>
00036 #include <UT/UT_PtrArray.h>
00037 class UT_String;
00038 class UT_Vector2;
00039 class UT_Vector3;
00040 class UT_Vector4;
00041 class pi_Setting;
00042
00043
00044
00045
00046
00047
00048 enum pi_SettingType
00049 {
00050 PI_SETTING_FLOAT,
00051 PI_SETTING_STRING,
00052 PI_SETTING_VECTOR2,
00053 PI_SETTING_VECTOR3,
00054 PI_SETTING_VECTOR4
00055 };
00056
00057 class PI_API PI_SettingList
00058 {
00059 public:
00060 explicit PI_SettingList();
00061 ~PI_SettingList();
00062
00063
00064 void getSetting(const char *setting_name,
00065 int &setting,
00066 int default_value) const;
00067 void getSetting(const char *setting_name,
00068 bool &setting,
00069 bool default_value) const;
00070 void getSetting(const char *setting_name,
00071 float &setting,
00072 float default_value) const;
00073 void getSetting(const char *setting_name,
00074 UT_String &setting,
00075 const char *default_value) const;
00076 void getSetting(const char *setting_name,
00077 UT_Vector2 &setting,
00078 const UT_Vector2 &default_value) const;
00079 void getSetting(const char *setting_name,
00080 UT_Vector3 &setting,
00081 const UT_Vector3 &default_value) const;
00082 void getSetting(const char *setting_name,
00083 UT_Vector4 &setting,
00084 const UT_Vector4 &default_value) const;
00085
00086
00087 void appendSetting(const char *setting_name,
00088 int setting);
00089 void appendSetting(const char *setting_name,
00090 bool setting);
00091 void appendSetting(const char *setting_name,
00092 float setting);
00093 void appendSetting(const char *setting_name,
00094 const char *setting);
00095 void appendSetting(const char *setting_name,
00096 const UT_Vector2 &setting);
00097 void appendSetting(const char *setting_name,
00098 const UT_Vector3 &setting);
00099 void appendSetting(const char *setting_name,
00100 const UT_Vector4 &setting);
00101
00102
00103 void removeSetting(const char *setting_name);
00104
00105
00106
00107 bool findUnreadSettings(UT_String &unread_settings) const;
00108
00109
00110
00111
00112 int operator==(PI_SettingList &setting_list);
00113 void sort();
00114
00115 PI_SettingList &operator=(const PI_SettingList &setting_list);
00116
00117
00118 void clear();
00119 bool isEmpty() const { return !mySettings.entries(); }
00120
00121
00122 void loadFromSettingString(const char *setting_string);
00123 void generateSettingString(ostream &os) const;
00124 void generateSettingString(UT_String &str) const;
00125
00126 friend ostream &operator<<(ostream &os,
00127 const PI_SettingList &setting_list)
00128 {
00129 setting_list.generateSettingString(os);
00130 return os;
00131 }
00132
00133 private:
00134
00135 pi_Setting *findSetting(const char *setting_name,
00136 pi_SettingType setting_type) const;
00137
00138
00139
00140 friend class pi_SettingParser;
00141
00142
00143
00144 UT_PtrArray<pi_Setting *> mySettings;
00145 bool mySortedFlag;
00146 };
00147
00148 #endif