Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Unified Diff: src/shared/Registry.h

Issue 5171515343503360: Issue #41 - Bring method of determining IE version up to date (Closed)
Patch Set: reformatted Created July 26, 2014, 3:52 p.m.
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/shared/IE_version.cpp ('k') | src/shared/Registry.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/shared/Registry.h
===================================================================
new file mode 100644
--- /dev/null
+++ b/src/shared/Registry.h
@@ -0,0 +1,65 @@
+#include <string>
+#include <Windows.h>
+
+namespace AdblockPlus
+{
+ /**
+ * An open key in the system registry.
+ */
+ class Registry_Key
+ {
+ /**
+ * Handle to an open registry key.
+ */
+ HKEY key;
+
+ /**
+ * Flag whether the registry key is predefined or not.
+ *
+ * Predefined key values are considered "always open" and should not be closed in the destructor.
+ */
+ bool is_predefined;
+
+ public:
+ /**
+ * Enumeration for predefined root keys.
+ */
+ enum class Predefined
+ : unsigned int
+ {
+ HKCR = 0, // HKEY_CLASSES_ROOT
+ HKCC, // HKEY_CURRENT_CONFIG
+ HKCU, // HKEY_CURRENT_USER
+ HKLM, // HKEY_LOCAL_MACHINE
+ HKU // HKEY_USERS
+ };
+
+ /**
+ * Constructor to open a key under one of the predefined roots.
+ * Opens the key with read-only access.
+ *
+ * Because the invariant of this class is that the underlying registry key is open,
+ * this constructor throws if 'key_name' is not found.
+ */
+ Registry_Key(Predefined root, std::wstring key_name);
+
+ /**
+ * Constructor for one of the predefined roots.
+ */
+ Registry_Key(Predefined root);
+
+ /**
+ * Destructor closes the key if it's not a predefined one.
+ */
+ ~Registry_Key();
+
+ /**
+ * Retrieve a value from a name-value pair within the present key.
+ *
+ * Throws if the name is not found within the dictionary.
+ * Throws if the name is found but is not a string.
+ */
+ std::wstring value_wstring(std::wstring name) const;
+ };
+}
+
« no previous file with comments | « src/shared/IE_version.cpp ('k') | src/shared/Registry.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld