示例#1
0
            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);
                }
            }
示例#2
0
        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);
            }
        }