00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef _LUXRAYS_PROPERTIES_H
00023 #define _LUXRAYS_PROPERTIES_H
00024
00025 #include <map>
00026 #include <vector>
00027 #include <string>
00028
00029 namespace luxrays {
00030
00031 class Properties {
00032 public:
00033 Properties() { }
00034 Properties(const std::string &fileName);
00035 ~Properties() { }
00036
00037 void Load(const Properties &prop);
00038 void LoadFile(const std::string &fileName);
00039
00040 std::vector<std::string> GetAllKeys() const;
00041 std::vector<std::string> GetAllKeys(const std::string prefix) const;
00042
00043 bool IsDefined(const std::string propName) const;
00044 std::string GetString(const std::string propName, const std::string defaultValue) const;
00045 int GetInt(const std::string propName, const int defaultValue) const;
00046 float GetFloat(const std::string propName, const float defaultValue) const;
00047
00048 std::vector<std::string> GetStringVector(const std::string propName, const std::string &defaultValue) const;
00049 std::vector<int> GetIntVector(const std::string propName, const std::string &defaultValue) const;
00050 std::vector<float> GetFloatVector(const std::string propName, const std::string &defaultValue) const;
00051
00052 void SetString(const std::string &propName, const std::string &value);
00053 std::string SetString(const std::string &property);
00054
00055 static std::string ExtractField(const std::string &value, const size_t index);
00056 static std::vector<std::string> ConvertToStringVector(const std::string &values);
00057 static std::vector<int> ConvertToIntVector(const std::string &values);
00058 static std::vector<float> ConvertToFloatVector(const std::string &values);
00059
00060 private:
00061 std::map<std::string, std::string> props;
00062 };
00063
00064 }
00065
00066 #endif