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 #ifndef _ORSA_CONFIG_H_
00026 #define _ORSA_CONFIG_H_
00027
00028 #include <string>
00029 #include <map>
00030
00031 namespace orsa {
00032
00033 class OrsaConfigFile;
00034
00035 template <class T> class ConfigItem {
00036 public:
00037 ConfigItem(const std::string t) : tag(t) { };
00038 ConfigItem(const T v, const std::string t) : value(v), tag(t) { };
00039
00040 public:
00041 T GetValue() const { return value; }
00042 void SetValue(const T v) { value = v; }
00043
00044 private:
00045 T value;
00046
00047 public:
00048 const std::string tag;
00049 };
00050
00051 enum ConfigEnum {
00052 JPL_EPHEM_FILE,
00053 JPL_DASTCOM_NUM,
00054 JPL_DASTCOM_UNNUM,
00055 JPL_DASTCOM_COMET,
00056 LOWELL_ASTORB,
00057 MPC_MPCORB,
00058 MPC_COMET,
00059 MPC_NEA,
00060 MPC_DAILY,
00061 MPC_DISTANT,
00062 MPC_PHA,
00063 MPC_UNUSUALS,
00064 ASTDYS_ALLNUM_CAT,
00065 ASTDYS_ALLNUM_CTC,
00066 ASTDYS_ALLNUM_CTM,
00067 ASTDYS_UFITOBS_CAT,
00068 ASTDYS_UFITOBS_CTC,
00069 ASTDYS_UFITOBS_CTM,
00070 NEODYS_CAT,
00071 NEODYS_CTC,
00072 OBSCODE,
00073
00074 TLE_NASA,
00075 TLE_GEO,
00076 TLE_GPS,
00077 TLE_ISS,
00078 TLE_KEPELE,
00079 TLE_VISUAL,
00080 TLE_WEATHER,
00081
00082 TEXTURE_SUN,
00083 TEXTURE_MERCURY,
00084 TEXTURE_VENUS,
00085 TEXTURE_EARTH,
00086 TEXTURE_MOON,
00087 TEXTURE_MARS,
00088 TEXTURE_JUPITER,
00089 TEXTURE_SATURN,
00090 TEXTURE_URANUS,
00091 TEXTURE_NEPTUNE,
00092 TEXTURE_PLUTO,
00093
00094 NO_CONFIG_ENUM
00095 };
00096
00097 std::string Label(const ConfigEnum);
00098
00099 class Config {
00100 public:
00101 Config();
00102
00103 public:
00104 std::map < ConfigEnum, ConfigItem<std::string>* > paths;
00105
00106 public:
00107 static void read_from_file();
00108 static void write_to_file();
00109 };
00110
00111
00112 extern Config * config;
00113
00114 }
00115
00116 #endif // _ORSA_CONFIG_H_