diff --git a/uppsrc/Core/JSON.cpp b/uppsrc/Core/JSON.cpp index f06f308f1..e18bdfd18 100644 --- a/uppsrc/Core/JSON.cpp +++ b/uppsrc/Core/JSON.cpp @@ -203,6 +203,18 @@ template<> void Jsonize(JsonIO& io, int& var) } } +template<> void Jsonize(JsonIO& io, byte& var) +{ + double v = var; + Jsonize(io, v); + if(io.IsLoading()) { + if(v >= 0 && v <= 255 && (int)v == v) + var = (byte)v; + else + throw JsonizeError("integer 0-255 expected"); + } +} + template<> void Jsonize(JsonIO& io, int16& var) { double v = var; diff --git a/uppsrc/Core/JSON.h b/uppsrc/Core/JSON.h index 767bfb283..de77de9e0 100644 --- a/uppsrc/Core/JSON.h +++ b/uppsrc/Core/JSON.h @@ -221,6 +221,7 @@ bool LoadFromJsonFile(T& var, const char *file = NULL) } template<> void Jsonize(JsonIO& io, int& var); +template<> void Jsonize(JsonIO& io, byte& var); template<> void Jsonize(JsonIO& io, int16& var); template<> void Jsonize(JsonIO& io, int64& var); template<> void Jsonize(JsonIO& io, double& var); diff --git a/uppsrc/Core/src.tpp/Jsonize_en-us.tpp b/uppsrc/Core/src.tpp/Jsonize_en-us.tpp index 81ce6fa1c..4017c5d0d 100644 --- a/uppsrc/Core/src.tpp/Jsonize_en-us.tpp +++ b/uppsrc/Core/src.tpp/Jsonize_en-us.tpp @@ -134,6 +134,9 @@ returns false in case of error. If [%-*@3 file] is NULL, ConfigFile(GetExeTitle( [s3; &] [s5;:Jsonize`(JsonIO`&`,int`&`): [@(0.0.255) template]_<>_[@(0.0.255) void]_[* Jsonize]([_^JsonIO^ J sonIO][@(0.0.255) `&]_[*@3 io], [@(0.0.255) int`&]_[*@3 var])&] +[s5;:Upp`:`:Jsonize`(Upp`:`:JsonIO`&`,Upp`:`:byte`&`): [@(0.0.255) template]_<>_[@(0.0.255) v +oid]_[* Jsonize]([_^Upp`:`:JsonIO^ JsonIO][@(0.0.255) `&]_[*@3 io], [_^Upp`:`:byte^ byte][@(0.0.255) `& +]_[*@3 var])&] [s5;:Jsonize`(JsonIO`&`,int16`&`): [@(0.0.255) template]_<>_[@(0.0.255) void]_[* Jsonize]([_^JsonIO^ J sonIO][@(0.0.255) `&]_[*@3 io], [_^int16^ int16][@(0.0.255) `&]_[*@3 var])&] [s5;:Jsonize`(JsonIO`&`,int64`&`): [@(0.0.255) template]_<>_[@(0.0.255) void]_[* Jsonize]([_^JsonIO^ J @@ -167,6 +170,7 @@ which leads to somewhat unnatural results when key [%-*@4 K] is String or WString. [%-* StringMap ]alternative variant encodes map as JSON object with keys equal to map keys.&] [s3;%% &] +[s3;%% &] [s4;%% &] [s5;:JsonizeBySerialize`(JsonIO`&`,T`&`): [@(0.0.255) template]_<[@(0.0.255) class]_[*@4 T]> _[@(0.0.255) void]_[* JsonizeBySerialize]([_^JsonIO^ JsonIO][@(0.0.255) `&]_[*@3 jio], diff --git a/uppsrc/CtrlLib/ArrayCtrl.h b/uppsrc/CtrlLib/ArrayCtrl.h index 4ed5148b9..e6a97e5b2 100644 --- a/uppsrc/CtrlLib/ArrayCtrl.h +++ b/uppsrc/CtrlLib/ArrayCtrl.h @@ -120,7 +120,7 @@ public: Column(); // deprecated (due to overloading issues) - Column& Ctrls(Callback1&> factory); // deprecated + Column& Ctrls(Callback1&> factory); Column& Ctrls(void (*factory)(One&)) { return Ctrls(Event&>([=](int, One& h) { factory(h); })); } Column& Ctrls(Event&> factory); Column& Ctrls(void (*factory)(int, One&)) { return Ctrls(Event&>([=](int a, One& b){ factory(a, b); })); }