You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					48 lines
				
				1.2 KiB
			
		
		
			
		
	
	
					48 lines
				
				1.2 KiB
			| 
								 
											5 years ago
										 
									 | 
							
								#pragma once
							 | 
						||
| 
								 
											5 years ago
										 
									 | 
							
								
							 | 
						||
| 
								 
											6 years ago
										 
									 | 
							
								#include <map>
							 | 
						||
| 
								 
											5 years ago
										 
									 | 
							
								#include <string>
							 | 
						||
| 
								 
											5 years ago
										 
									 | 
							
								
							 | 
						||
| 
								 
											5 years ago
										 
									 | 
							
								enum ParamKeyType {
							 | 
						||
| 
								 | 
							
								  PERSISTENT = 0x02,
							 | 
						||
| 
								 | 
							
								  CLEAR_ON_MANAGER_START = 0x04,
							 | 
						||
| 
								 
											4 years ago
										 
									 | 
							
								  CLEAR_ON_IGNITION_ON = 0x08,
							 | 
						||
| 
								 | 
							
								  CLEAR_ON_IGNITION_OFF = 0x10,
							 | 
						||
| 
								 | 
							
								  DONT_LOG = 0x20,
							 | 
						||
| 
								 
											4 years ago
										 
									 | 
							
								  ALL = 0xFFFFFFFF
							 | 
						||
| 
								 
											5 years ago
										 
									 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 
											5 years ago
										 
									 | 
							
								class Params {
							 | 
						||
| 
								 
											5 years ago
										 
									 | 
							
								public:
							 | 
						||
| 
								 
											4 years ago
										 
									 | 
							
								  Params(const std::string &path = {});
							 | 
						||
| 
								 
											5 years ago
										 
									 | 
							
								  bool checkKey(const std::string &key);
							 | 
						||
| 
								 
											4 years ago
										 
									 | 
							
								  ParamKeyType getKeyType(const std::string &key);
							 | 
						||
| 
								 
											4 years ago
										 
									 | 
							
								  inline std::string getParamPath(const std::string &key = {}) {
							 | 
						||
| 
								 
											4 years ago
										 
									 | 
							
								    return params_path + prefix + (key.empty() ? "" : "/" + key);
							 | 
						||
| 
								 
											4 years ago
										 
									 | 
							
								  }
							 | 
						||
| 
								 
											5 years ago
										 
									 | 
							
								
							 | 
						||
| 
								 
											5 years ago
										 
									 | 
							
								  // Delete a value
							 | 
						||
| 
								 
											4 years ago
										 
									 | 
							
								  int remove(const std::string &key);
							 | 
						||
| 
								 
											5 years ago
										 
									 | 
							
								  void clearAll(ParamKeyType type);
							 | 
						||
| 
								 
											5 years ago
										 
									 | 
							
								
							 | 
						||
| 
								 
											5 years ago
										 
									 | 
							
								  // helpers for reading values
							 | 
						||
| 
								 
											4 years ago
										 
									 | 
							
								  std::string get(const std::string &key, bool block = false);
							 | 
						||
| 
								 
											5 years ago
										 
									 | 
							
								  inline bool getBool(const std::string &key) {
							 | 
						||
| 
								 
											5 years ago
										 
									 | 
							
								    return get(key) == "1";
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 
											4 years ago
										 
									 | 
							
								  std::map<std::string, std::string> readAll();
							 | 
						||
| 
								 
											5 years ago
										 
									 | 
							
								
							 | 
						||
| 
								 
											5 years ago
										 
									 | 
							
								  // helpers for writing values
							 | 
						||
| 
								 
											4 years ago
										 
									 | 
							
								  int put(const char *key, const char *val, size_t value_size);
							 | 
						||
| 
								 
											5 years ago
										 
									 | 
							
								  inline int put(const std::string &key, const std::string &val) {
							 | 
						||
| 
								 | 
							
								    return put(key.c_str(), val.data(), val.size());
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 
											5 years ago
										 
									 | 
							
								  inline int putBool(const std::string &key, bool val) {
							 | 
						||
| 
								 
											4 years ago
										 
									 | 
							
								    return put(key.c_str(), val ? "1" : "0", 1);
							 | 
						||
| 
								 
											5 years ago
										 
									 | 
							
								  }
							 | 
						||
| 
								 
											4 years ago
										 
									 | 
							
								
							 | 
						||
| 
								 | 
							
								private:
							 | 
						||
| 
								 
											4 years ago
										 
									 | 
							
								  std::string params_path;
							 | 
						||
| 
								 
											4 years ago
										 
									 | 
							
								  std::string prefix;
							 | 
						||
| 
								 
											5 years ago
										 
									 | 
							
								};
							 |