libfilezilla
registry.hpp
Go to the documentation of this file.
1 #ifndef LIBFILEZILLA_GLUE_REGISTRY_HEADER
2 #define LIBFILEZILLA_GLUE_REGISTRY_HEADER
3 
8 #include "../libfilezilla.hpp"
9 
10 #ifdef FZ_WINDOWS
11 
12 #include "windows.hpp"
13 
14 #include <optional>
15 #include <string>
16 
17 namespace fz {
18 
25 class FZ_PUBLIC_SYMBOL regkey final
26 {
27 public:
28  regkey() = default;
29  ~regkey();
30 
31  enum regview {
32  regview_native,
33  regview_32,
34  regview_64
35  };
36 
37 
39  explicit regkey(HKEY const root, std::wstring const& subkey, bool readonly, regview v = regview_native);
40 
41  regkey(regkey const&) = delete;
42  regkey& operator=(regkey const&) = delete;
43 
44  void close();
45 
51  bool open(HKEY const root, std::wstring const& subkey, bool readonly, regview v = regview_native);
52 
53  bool has_value(std::wstring const& name) const;
54 
56  std::wstring value(std::wstring const& name) const;
57 
59  uint64_t int_value(std::wstring const& name) const;
60 
61  bool set_value(std::wstring const& name, std::wstring const& value);
62  bool set_value(std::wstring const& name, uint64_t value);
63 
64  explicit operator bool() const {
65  return key_.has_value();
66  }
67 
68  bool delete_value(std::wstring const& name);
69 
70 private:
71  mutable std::optional<HKEY> key_;
72 };
73 }
74 
75 #else
76 #error This file is for Windows only
77 #endif
78 
79 #endif
Prepresents a key in the Windows registry.
Definition: registry.hpp:25
The namespace used by libfilezilla.
Definition: apply.hpp:17