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 private:
69  mutable std::optional<HKEY> key_;
70 };
71 }
72 
73 #else
74 #error This file is for Windows only
75 #endif
76 
77 #endif
Prepresents a key in the Windows registry.
Definition: registry.hpp:26
regkey(HKEY const root, std::wstring const &subkey, bool readonly, regview v=regview_native)
See.
uint64_t int_value(std::wstring const &name) const
Gets the value with the given name as integer, converting if necessary.
bool open(HKEY const root, std::wstring const &subkey, bool readonly, regview v=regview_native)
Opens the specified registry key.
std::wstring value(std::wstring const &name) const
Gets the value with the given name as wstring, converting if necessary.
The namespace used by libfilezilla.
Definition: apply.hpp:17