version 0.3.29
[fms.git] / include / option.h
1 #ifndef _option_\r
2 #define _option_\r
3 \r
4 #include "idatabase.h"\r
5 \r
6 #include <sstream>\r
7 \r
8 //just a wrapper around the database for the options table\r
9 class Option:public IDatabase\r
10 {\r
11 public:\r
12         Option(SQLite3DB::DB *db):IDatabase(db)                 {}\r
13 \r
14         const bool Get(const std::string &option, std::string &value);\r
15         const bool GetInt(const std::string &option, int &value);\r
16         template<class T>\r
17         void Set(const std::string &option, const T &value);\r
18 private:\r
19 };\r
20 \r
21 template<class T>\r
22 void Option::Set(const std::string &option, const T &value)\r
23 {\r
24         std::ostringstream valuestr;\r
25         valuestr << value;\r
26 \r
27         std::string tempval;\r
28         if(Get(option,tempval)==true)\r
29         {\r
30                 SQLite3DB::Statement st=m_db->Prepare("UPDATE tblOption SET OptionValue=? WHERE Option=?;");\r
31                 st.Bind(0,valuestr.str());\r
32                 st.Bind(1,option);\r
33                 st.Step();\r
34         }\r
35         else\r
36         {\r
37                 SQLite3DB::Statement st=m_db->Prepare("INSERT INTO tblOption(Option,OptionValue) VALUES(?,?);");\r
38                 st.Bind(0,option);\r
39                 st.Bind(1,valuestr.str());\r
40                 st.Step();\r
41         }\r
42 }\r
43 \r
44 #endif  // _option_\r