summaryrefslogtreecommitdiff
path: root/hscript/meta.hh
diff options
context:
space:
mode:
authorA. Wilcox <AWilcox@Wilcox-Tech.com>2020-02-26 04:33:29 -0600
committerA. Wilcox <AWilcox@Wilcox-Tech.com>2020-02-26 04:33:29 -0600
commit75f10ffe70935187bb900501866a8d555b83a855 (patch)
tree22e60be53af48fcec8465fef2681e9cd5f8cb36e /hscript/meta.hh
parentca78cc8d66498cccf54ed26d5318f09362859ba7 (diff)
downloadhorizon-75f10ffe70935187bb900501866a8d555b83a855.tar.gz
horizon-75f10ffe70935187bb900501866a8d555b83a855.tar.bz2
horizon-75f10ffe70935187bb900501866a8d555b83a855.tar.xz
horizon-75f10ffe70935187bb900501866a8d555b83a855.zip
hscript: Refactor Keys to be owned by a Script*
This means that a Key can introspect its Script.
Diffstat (limited to 'hscript/meta.hh')
-rw-r--r--hscript/meta.hh91
1 files changed, 51 insertions, 40 deletions
diff --git a/hscript/meta.hh b/hscript/meta.hh
index 8740f96..060054b 100644
--- a/hscript/meta.hh
+++ b/hscript/meta.hh
@@ -3,7 +3,7 @@
* libhscript, the HorizonScript library for
* Project Horizon
*
- * Copyright (c) 2019 Adélie Linux and contributors. All rights reserved.
+ * Copyright (c) 2019-2020 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.
*
@@ -22,89 +22,100 @@ namespace Keys {
class Hostname : public StringKey {
private:
- Hostname(int _line, const std::string my_name) :
- StringKey(_line, my_name) {}
+ Hostname(const Script *_s, int _line, const std::string my_name) :
+ StringKey(_s, _line, my_name) {}
public:
- static Key *parseFromData(const std::string &, int, int *, int *);
- bool validate(ScriptOptions) const override;
- bool execute(ScriptOptions) const override;
+ static Key *parseFromData(const std::string &, int, int *, int *,
+ const Script *);
+ bool validate() const override;
+ bool execute() const override;
};
class Arch : public StringKey {
private:
- Arch(int _line, const std::string &arch) :
- StringKey(_line, arch) {}
+ Arch(const Script *_s, int _line, const std::string &arch) :
+ StringKey(_s, _line, arch) {}
public:
- static Key *parseFromData(const std::string &, int, int *, int *);
- bool execute(ScriptOptions) const override;
+ static Key *parseFromData(const std::string &, int, int *, int *,
+ const Script *);
+ bool execute() const override;
};
class PkgInstall : public Key {
private:
const std::set<std::string> _pkgs;
- PkgInstall(int _line, const std::set<std::string> my_pkgs) : Key(_line),
+ PkgInstall(const Script *_s, int _line,
+ const std::set<std::string> my_pkgs) : Key(_s, _line),
_pkgs(my_pkgs) {}
public:
- static Key *parseFromData(const std::string &, int, int *, int *);
+ static Key *parseFromData(const std::string &, int, int *, int *,
+ const Script *);
const std::set<std::string> packages() const { return _pkgs; }
- bool validate(ScriptOptions) const override;
- bool execute(ScriptOptions) const override;
+ bool validate() const override;
+ bool execute() const override;
};
class Language : public StringKey {
private:
- Language(int _line, const std::string &my_lang) :
- StringKey(_line, my_lang) {}
+ Language(const Script *_s, int _line, const std::string &my_lang) :
+ StringKey(_s, _line, my_lang) {}
public:
- static Key *parseFromData(const std::string &, int, int *, int *);
- bool execute(ScriptOptions) const override;
+ static Key *parseFromData(const std::string &, int, int *, int *,
+ const Script *);
+ bool execute() const override;
};
class Keymap : public StringKey {
private:
- Keymap(int _line, const std::string &keymap) :
- StringKey(_line, keymap) {}
+ Keymap(const Script *_s, int _line, const std::string &keymap) :
+ StringKey(_s, _line, keymap) {}
public:
- static Key *parseFromData(const std::string &, int, int *, int *);
- bool validate(ScriptOptions) const override;
- bool execute(ScriptOptions) const override;
+ static Key *parseFromData(const std::string &, int, int *, int *,
+ const Script *);
+ bool validate() const override;
+ bool execute() const override;
};
class Firmware : public BooleanKey {
private:
- Firmware(int _line, bool _value) : BooleanKey(_line, _value) {}
+ Firmware(const Script *_s, int _line, bool _value) :
+ BooleanKey(_s, _line, _value) {}
public:
- static Key *parseFromData(const std::string &, int, int *, int *);
- bool execute(ScriptOptions) const override;
+ static Key *parseFromData(const std::string &, int, int *, int *,
+ const Script *);
+ bool execute() const override;
};
class Timezone : public StringKey {
private:
- Timezone(int _line, const std::string &my_zone) :
- StringKey(_line, my_zone) {}
+ Timezone(const Script *_s, int _line, const std::string &my_zone) :
+ StringKey(_s, _line, my_zone) {}
public:
- static Key *parseFromData(const std::string &, int, int *, int *);
- bool execute(ScriptOptions) const override;
+ static Key *parseFromData(const std::string &, int, int *, int *,
+ const Script *);
+ bool execute() const override;
};
class Repository : public StringKey {
private:
- Repository(int _line, const std::string &my_url) :
- StringKey(_line, my_url) {}
+ Repository(const Script *_s, int _line, const std::string &my_url) :
+ StringKey(_s, _line, my_url) {}
public:
- static Key *parseFromData(const std::string &, int, int *, int *);
- bool validate(ScriptOptions) const override;
- bool execute(ScriptOptions) const override;
+ static Key *parseFromData(const std::string &, int, int *, int *,
+ const Script *);
+ bool validate() const override;
+ bool execute() const override;
};
class SigningKey : public StringKey {
private:
- SigningKey(int _line, const std::string &_path) :
- StringKey(_line, _path) {}
+ SigningKey(const Script *_s, int _line, const std::string &_path) :
+ StringKey(_s, _line, _path) {}
public:
- static Key *parseFromData(const std::string &, int, int *, int *);
- bool validate(ScriptOptions) const override;
- bool execute(ScriptOptions) const override;
+ static Key *parseFromData(const std::string &, int, int *, int *,
+ const Script *);
+ bool validate() const override;
+ bool execute() const override;
};
}