public static List <T> Decode_List <T>(this string data, out List <T> l, ref ListMetaData ld, TaggedTypesCfg tps) where T : IGotClassTag { l = new List <T>(); if (ld == null) { ld = new ListMetaData(); } var overCody = new CfgDecoder(data); foreach (var tag in overCody) { switch (tag) { case CfgEncoder.ListMetaTag: ld.Decode(overCody.GetData()); break; case CfgEncoder.ListTag: var cody = new CfgDecoder(overCody.GetData()); foreach (var t in cody) { l.Add(cody.DecodeData <T>(tps, ld)); } break; default: l.Add(overCody.DecodeData <T>(tps, ld)); break; } } return(l); }
public static List <T> Decode_List <T>(this string data, out List <T> l) where T : ICfg, new() { var cody = new CfgDecoder(data); l = new List <T>(); var tps = typeof(T).TryGetDerivedClasses(); if (tps != null) { foreach (var tag in cody) { l.Add(cody.DecodeData <T>(tps)); } } else { foreach (var tag in cody) { l.Add(cody.GetData().DecodeInto <T>()); } } return(l); }
public static List <T> Decode_List_Abstract <T>(this string data, out List <T> l, TaggedTypesCfg taggedTypes) where T : IGotClassTag { l = new List <T>(); #if UNITY_EDITOR var ct = taggedTypes.CoreType; var lt = typeof(T); if (ct != lt && !lt.IsSubclassOf(ct)) { Debug.LogError("Type of {0} is not a subclass of {1}".F(lt.ToPegiStringType(), ct.ToPegiStringType())); return(l); } #endif var cody = new CfgDecoder(data); foreach (var tag in cody) { var tmp = cody.DecodeData <T>(taggedTypes); if (tmp != null) { l.Add(tmp); } } return(l); }
public static List <T> Decode_List_Derived <T>(this string data, out List <T> l, ref ListMetaData ld) where T : ICfg { if (ld == null) { ld = new ListMetaData(); } l = new List <T>(); var tps = typeof(T).TryGetDerivedClasses(); var overCody = new CfgDecoder(data); foreach (var tag in overCody) { switch (tag) { case CfgEncoder.ListMetaTag: ld.Decode(overCody.GetData()); break; case CfgEncoder.ListTag: var cody = new CfgDecoder(overCody.GetData()); if (tps != null) { foreach (var t in cody) { l.Add(cody.DecodeData <T>(tps, ld)); } } break; default: l.Add(overCody.DecodeData <T>(tps, ld)); break; } } return(l); }
public static List <T> Decode_List <T>(this string data, out List <T> l, TaggedTypesCfg tps) where T : IGotClassTag { var cody = new CfgDecoder(data); l = new List <T>(); foreach (var tag in cody) { l.Add(cody.DecodeData <T>(tps)); } return(l); }