summaryrefslogtreecommitdiff
path: root/hscript/keymanager.hh
diff options
context:
space:
mode:
Diffstat (limited to 'hscript/keymanager.hh')
-rw-r--r--hscript/keymanager.hh42
1 files changed, 42 insertions, 0 deletions
diff --git a/hscript/keymanager.hh b/hscript/keymanager.hh
new file mode 100644
index 0000000..b3cd109
--- /dev/null
+++ b/hscript/keymanager.hh
@@ -0,0 +1,42 @@
+/*
+ * keymanager.hh - Definition of the key manager
+ * libhscript, the HorizonScript library for
+ * Project Horizon
+ *
+ * Copyright (c) 2019 Adélie Linux and contributors. All rights reserved.
+ * This code is licensed under the AGPL 3.0 license, as noted in the
+ * LICENSE-code file in the root directory of this repository.
+ *
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+#include <vector>
+#include <string>
+#include "key.hh"
+
+namespace Horizon {
+namespace Keys {
+
+/*! Manages the Key classes. */
+class KeyManager {
+private:
+ /*! Create the key manager */
+ KeyManager();
+public:
+ /*! Retrieve the global KeyManager instance. */
+ static const KeyManager *getKeyManager();
+
+ /*! Add a new Key to the key manager. */
+ void addKey(std::string name, bool required, int max, Key*(*key_create_fn)(void));
+
+ /*! Determines if a Key is recognised. */
+ void hasKey(std::string name);
+
+ /*! Create a new Key with the specified name.
+ * Returns nullptr if no Key exists.
+ */
+ Key *createKey(std::string name);
+};
+
+}
+}