示例#1
0
        public string GetDeserializeUpdateIntoUpdateString(string updateFieldInstance, string schemaObject,
                                                           uint fieldNumber, int indents)
        {
            var codeWriter = new CodeWriter();

            codeWriter.WriteLine($"var mapSize = {schemaObject}.GetObjectCount({fieldNumber});");

            CommonCodeWriterBlocks.WriteCheckIsCleared(codeWriter, fieldNumber);

            codeWriter.WriteLine("if (mapSize > 0 || isCleared)");
            using (codeWriter.Scope())
            {
                codeWriter.WriteLine($"{updateFieldInstance} = new global::Improbable.Gdk.Core.Option<{Type}>(new {Type}());");
            }

            codeWriter.WriteLine("for (var i = 0; i < mapSize; i++)");
            using (codeWriter.Scope())
            {
                codeWriter.WriteLine($"var mapObj = {schemaObject}.IndexObject({fieldNumber}, (uint) i);");
                codeWriter.WriteLine($"var key = {keyType.GetDeserializationExpression("mapObj", 1)};");
                codeWriter.WriteLine($"var value = {valueType.GetDeserializationExpression("mapObj", 2)};");
                codeWriter.WriteLine($"{updateFieldInstance}.Value.Add(key, value);");
            }

            return(CommonGeneratorUtils.IndentEveryNewline(codeWriter.Build(), indents));
        }
示例#2
0
        public string GetDeserializeUpdateString(string fieldInstance, string schemaObject, uint fieldNumber, int indents)
        {
            var codeWriter = new CodeWriter();

            CommonCodeWriterBlocks.WriteCheckIsCleared(codeWriter, fieldNumber);

            codeWriter.WriteLine("if (isCleared)");
            using (codeWriter.Scope())
            {
                codeWriter.WriteLine($"{fieldInstance} = new {Type}();");
            }

            codeWriter.WriteLine($"else if ({containedType.GetCountExpression(schemaObject, fieldNumber)} == 1)");
            using (codeWriter.Scope())
            {
                codeWriter.WriteLine($"var value = {containedType.GetDeserializationExpression(schemaObject, fieldNumber)};");
                codeWriter.WriteLine($"{fieldInstance} = new {Type}(value);");
            }

            return(CommonGeneratorUtils.IndentEveryNewline(codeWriter.Build(), indents));
        }
示例#3
0
        public string GetDeserializeUpdateIntoUpdateString(string updateFieldInstance, string schemaObject,
                                                           uint fieldNumber, int indents)
        {
            var codeWriter = new CodeWriter();

            codeWriter.WriteLine($"var listSize = {containedType.GetCountExpression(schemaObject, fieldNumber)};");

            CommonCodeWriterBlocks.WriteCheckIsCleared(codeWriter, fieldNumber);

            codeWriter.WriteLine("if (listSize > 0 || isCleared)");
            using (codeWriter.Scope())
            {
                codeWriter.WriteLine($"{updateFieldInstance} = new global::Improbable.Gdk.Core.Option<{Type}>(new {Type}());");
            }

            codeWriter.WriteLine("for (var i = 0; i < listSize; i++)");
            using (codeWriter.Scope())
            {
                codeWriter.WriteLine($"var value = {containedType.GetFieldIndexExpression(schemaObject, fieldNumber, "i")};");
                codeWriter.WriteLine($"{updateFieldInstance}.Value.Add(value);");
            }

            return(CommonGeneratorUtils.IndentEveryNewline(codeWriter.Build(), indents));
        }