private static void parseJson(fastCSharp.emit.jsonParser parser, ref deSerializePool value) { fastCSharp.emit.jsonParser.config config = typePool <fastCSharp.emit.jsonParser.config> .Pop() ?? new fastCSharp.emit.jsonParser.config(), oldConfig = parser.Config; fastCSharp.emit.memberCopyer <fastCSharp.emit.jsonParser.config> .Copy(config, oldConfig); if (value.MemberMap == null) { value.MemberMap = fastCSharp.code.memberMap <memberMapType> .New(); } (parser.Config = config).MemberMap = value.MemberMap; try { if (value.Value == null) { valueType poolValue = value.Value = typePool <valueType> .Pop(); try { fastCSharp.emit.jsonParser.typeParser <valueType> .Parse(parser, ref value.Value); } finally { if (poolValue != value.Value) { typePool <valueType> .PushOnly(poolValue); } } } else { memberMapType parseValue = value.Value; fastCSharp.emit.jsonParser.typeParser <memberMapType> .Parse(parser, ref parseValue); } } finally { parser.Config = oldConfig; config.Null(); typePool <fastCSharp.emit.jsonParser.config> .PushNotNull(config); } }
private static void parseJson(fastCSharp.emit.jsonParser parser, ref memberMapValue <valueType> value) { fastCSharp.emit.jsonParser.config config = typePool <fastCSharp.emit.jsonParser.config> .Pop() ?? new fastCSharp.emit.jsonParser.config(), oldConfig = parser.Config; fastCSharp.emit.memberCopyer <fastCSharp.emit.jsonParser.config> .Copy(config, oldConfig); if (value.MemberMap == null) { value.MemberMap = fastCSharp.code.memberMap <valueType> .New(); } (parser.Config = config).MemberMap = value.MemberMap; try { fastCSharp.emit.jsonParser.typeParser <valueType> .Parse(parser, ref value.Value); } finally { parser.Config = oldConfig; config.Null(); typePool <fastCSharp.emit.jsonParser.config> .PushNotNull(config); } }