From 7573bd9698d7ed6fef01a166e9f188e0ed0eb75f Mon Sep 17 00:00:00 2001 From: Markus Mittendrein Date: Tue, 30 Jul 2019 03:50:52 +0200 Subject: DTUtility: Add Extend, InitMap and Serialize-implementation for maps --- DTUtility.c | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 59 insertions(+), 1 deletion(-) (limited to 'DTUtility.c') diff --git a/DTUtility.c b/DTUtility.c index 19561ec..7312ee9 100644 --- a/DTUtility.c +++ b/DTUtility.c @@ -19,7 +19,46 @@ global func GetIndexOf2(val, array arr) // Because GetIndexOf doesn't find Forma global func Serialize(value) { - if(GetType(value) == C4V_Array) + if(GetType(value) == C4V_Map) + { + var nonIdentifierKeyInits = []; + var ret = "{"; + + var first = true; + for(var k, v in value) + { + if(GetType(k) == C4V_String) + { + if(first) + { + first = false; + } + else + { + ret ..= ","; + } + ret ..= Serialize(k) .. "=" .. Serialize(v); + } + else + { + nonIdentifierKeyInits[] = k; + nonIdentifierKeyInits[] = v; + } + } + + ret ..= "}"; + + if(GetLength(nonIdentifierKeyInits) > 0) + { + if(first) + { + return "InitMap(" .. Serialize(nonIdentifierKeyInits) .. ")"; + } + return "Extend(" .. ret .. ",InitMap(" .. Serialize(nonIdentifierKeyInits) .. "))"; + } + return ret; + } + else if(GetType(value) == C4V_Array) { var first = true; var ret = "["; @@ -810,3 +849,22 @@ global func GetPlayerByID(int id) return NO_OWNER; } + +global func Extend(map base, map extension) +{ + for(var key, value in extension) + { + base[key] = value; + } + return base; +} + +global func InitMap(array init) +{ + var ret = {}; + for(var i = 0; i < GetLength(init); i += 2) + { + ret[init[i]] = init[i + 1]; + } + return ret; +} \ No newline at end of file -- cgit v1.2.3-54-g00ecf