diff options
author | Cleverking2003 <30466983+Cleverking2003@users.noreply.github.com> | 2020-06-19 00:02:47 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-06-19 00:02:47 +0300 |
commit | 41317a2b7625919ebba39c06b5aaf9e3b0800b1d (patch) | |
tree | 1780ce6f8ee57a163b95beaa99e45e6aed776346 /tools/jsonproc | |
parent | e3077928198b2f51854812bcd04e1ebe1e6112f5 (diff) | |
parent | a455bac566535ec559aac9164e05781093653057 (diff) |
Merge branch 'master' into master
Diffstat (limited to 'tools/jsonproc')
-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>(); |