diff options
author | Egor Ananyin <ananinegor@gmail.com> | 2020-06-20 09:18:43 +0300 |
---|---|---|
committer | Egor Ananyin <ananinegor@gmail.com> | 2020-06-20 09:18:43 +0300 |
commit | abd2d1e16494867989e710e5235c6425fa4e8c34 (patch) | |
tree | 7eff3e1db566801104a8fc2672bbe57e06f7009e /tools/jsonproc/jsonproc.cpp | |
parent | 70556fc300ba85dad248d20b3c79c415e2ef88e5 (diff) | |
parent | 12c17948602bf14535c91c530f214b99863e038e (diff) |
conflicts
Diffstat (limited to 'tools/jsonproc/jsonproc.cpp')
-rw-r--r-- | tools/jsonproc/jsonproc.cpp | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/tools/jsonproc/jsonproc.cpp b/tools/jsonproc/jsonproc.cpp index f70c9131..bcbe53e4 100644 --- a/tools/jsonproc/jsonproc.cpp +++ b/tools/jsonproc/jsonproc.cpp @@ -5,6 +5,7 @@ #include <map> #include <string> +#include <sstream> using std::string; using std::to_string; #include <inja.hpp> @@ -53,6 +54,21 @@ int main(int argc, char *argv[]) return minuend - subtrahend; }); + env.add_callback("add", 2, [](Arguments& args) { + int x = args.at(0)->get<int>(); + int y = args.at(1)->get<int>(); + + return x + y; + }); + + env.add_callback("setBit", 2, [=](Arguments& args) { + string key = args.at(0)->get<string>(); + unsigned long value = std::stoul(get_custom_var(key)); + value |= (1 << (args.at(1)->get<int>())); + set_custom_var(key, to_string(value)); + return ""; + }); + env.add_callback("setVar", 2, [=](Arguments& args) { string key = args.at(0)->get<string>(); string value = args.at(1)->get<string>(); @@ -72,6 +88,15 @@ int main(int argc, char *argv[]) return get_custom_var(key); }); + env.add_callback("getVarHex", 1, [=](Arguments& args) { + string key = args.at(0)->get<string>(); + unsigned long value = std::stoul(get_custom_var(key)); + std::stringstream ss; + ss << "0x" << std::hex << (value & 0xFFFFFFFFul); + string s = ss.str(); + return s; + }); + env.add_callback("concat", 2, [](Arguments& args) { string first = args.at(0)->get<string>(); string second = args.at(1)->get<string>(); |