public static string GetName(Types.Type type) { TypeTagName v = new TypeTagName(); type.Accept(v); return(v.Name); }
private void EncodeCollection(TypeCollection type) { Types.Type vt = type.ValueType; sw.WriteLine(prefix + "{"); sw.WriteLine(prefix + " _os_.BeginWriteSegment(out var _state_);"); sw.WriteLine(prefix + " _os_.WriteInt(" + TypeTagName.GetName(vt) + ");"); sw.WriteLine(prefix + " _os_.WriteInt(" + varname + ".Count);"); sw.WriteLine(prefix + " foreach (var _v_ in " + varname + ")"); sw.WriteLine(prefix + " {"); vt.Accept(new Encode("_v_", -1, "_os_", sw, prefix + " ")); sw.WriteLine(prefix + " }"); sw.WriteLine(prefix + " _os_.EndWriteSegment(_state_); "); sw.WriteLine(prefix + "}"); }
public void Visit(TypeMap type) { if (id < 0) { throw new Exception("invalie Variable.Id"); } Types.Type keytype = type.KeyType; Types.Type valuetype = type.ValueType; sw.WriteLine(prefix + bufname + ".WriteInt(ByteBuffer.MAP | " + id + " << ByteBuffer.TAG_SHIFT);"); sw.WriteLine(prefix + "{"); sw.WriteLine(prefix + " _os_.BeginWriteSegment(out var _state_);"); sw.WriteLine(prefix + " _os_.WriteInt(" + TypeTagName.GetName(keytype) + ");"); sw.WriteLine(prefix + " _os_.WriteInt(" + TypeTagName.GetName(valuetype) + ");"); sw.WriteLine(prefix + " _os_.WriteInt(" + varname + ".Count);"); sw.WriteLine(prefix + " foreach (var _e_ in " + varname + ")"); sw.WriteLine(prefix + " {"); keytype.Accept(new Encode("_e_.Key", -1, "_os_", sw, prefix + " ")); valuetype.Accept(new Encode("_e_.Value", -1, "_os_", sw, prefix + " ")); sw.WriteLine(prefix + " }"); sw.WriteLine(prefix + " _os_.EndWriteSegment(_state_); "); sw.WriteLine(prefix + "}"); }