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

            using (codeWriter.Scope())
            {
                CommonCodeWriterBlocks.WriteCheckIsCleared(codeWriter, fieldNumber);

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

                using (codeWriter.Scope($"else if ({containedType.GetCountExpression(schemaObject, fieldNumber)} == 1)")
                       )
                {
                    codeWriter.WriteLine(
                        $"{updateFieldInstance} = new global::Improbable.Gdk.Core.Option<{Type}>({containedType.GetDeserializationExpression(schemaObject, fieldNumber)});");
                }
            }

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

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

                CommonCodeWriterBlocks.WriteCheckIsCleared(codeWriter, fieldNumber);

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

                using (codeWriter.Scope("for (var i = 0; i < mapSize; i++)"))
                {
                    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));
        }
コード例 #3
0
        protected string Format(int indentLevel, string contentSeparator)
        {
            var indent = CommonGeneratorUtils.GetIndentSpaces(indentLevel);

            var scopeAnnotation = string.Empty;

            if (!string.IsNullOrEmpty(Annotation))
            {
                scopeAnnotation = $"{indent}[{Annotation}]{Environment.NewLine}";
            }

            var scopeDeclaration = string.Empty;

            if (declaration.HasValue())
            {
                scopeDeclaration = $"{declaration.Format(indentLevel)}{Environment.NewLine}";
            }

            var scopeOutput = string.Empty;

            if (content.Any())
            {
                var indentedContents = content.Select(scopeContent => scopeContent.Format(indentLevel + 1));
                scopeOutput = $"{string.Join(contentSeparator, indentedContents)}{Environment.NewLine}";
            }

            return($"{scopeAnnotation}{scopeDeclaration}{indent}{{{Environment.NewLine}{scopeOutput}{indent}}}");
        }
コード例 #4
0
        public string GetDeserializeUpdateIntoUpdateString(string updateFieldInstance, string schemaObject,
                                                           uint fieldNumber, int indents)
        {
            var codeWriter = new CodeWriter();

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

                CommonCodeWriterBlocks.WriteCheckIsCleared(codeWriter, fieldNumber);

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

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

            return(CommonGeneratorUtils.IndentEveryNewline(codeWriter.Build(), indents));
        }
コード例 #5
0
        /// <summary>
        ///     Helper function that returns a (multi-line) string that represents the C# code required to deserialize
        ///     this field on a ComponentData object into an update.
        /// </summary>
        /// <param name="updateFieldInstance">
        ///     The name of the instance of this field on the update object that is being
        ///     deserialized into.
        /// </param>
        /// <param name="schemaObject">The name of the SchemaObject is to be used in deserialization.</param>
        /// <param name="indents">The indent level that the block of code should be at.</param>
        /// <returns></returns>
        public string GetDeserializeDataIntoUpdateString(string updateFieldInstance, string schemaObject, int indents)
        {
            var deserializationString =
                fieldType.GetDeserializeDataIntoUpdateString(updateFieldInstance, schemaObject, FieldNumber);

            return(CommonGeneratorUtils.IndentEveryNewline(deserializationString, indents));
        }
コード例 #6
0
ファイル: Text.cs プロジェクト: yilu1021/gdk-for-unity
        public string Format(int indentLevel)
        {
            var spaces       = CommonGeneratorUtils.GetIndentSpaces(indentLevel);
            var indentedCode = snippet
                               .Replace($"{Environment.NewLine}", $"{Environment.NewLine}{spaces}")
                               .Replace($"{Environment.NewLine}{spaces}{Environment.NewLine}", $"{Environment.NewLine}{Environment.NewLine}");

            return($"{spaces}{indentedCode}");
        }
コード例 #7
0
        public string GetDeserializeDataIntoUpdateString(string updateFieldInstance, string schemaObject,
                                                         uint fieldNumber, int indents)
        {
            var codeWriter = new CodeWriter();

            codeWriter.WriteLine($"{updateFieldInstance} = {containedType.GetDeserializationExpression(schemaObject, fieldNumber)};");

            return(CommonGeneratorUtils.IndentEveryNewline(codeWriter.Build(), indents));
        }
コード例 #8
0
        public string GetDeserializationString(string fieldInstance, string schemaObject, uint fieldNumber, int indents)
        {
            var codeWriter = new CodeWriter();

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

            return(CommonGeneratorUtils.IndentEveryNewline(codeWriter.Build(), indents));
        }
コード例 #9
0
        public string GetSerializationString(string fieldInstance, string schemaObject, uint fieldNumber, int indents)
        {
            var codeWriter = new CodeWriter();

            using (codeWriter.Scope($"foreach (var value in {fieldInstance})"))
            {
                codeWriter.WriteLine(containedType.GetSerializationStatement("value", schemaObject, fieldNumber));
            }

            return(CommonGeneratorUtils.IndentEveryNewline(codeWriter.Build(), indents));
        }
コード例 #10
0
        public string GetTrySetClearedFieldString(string fieldInstance, string componentUpdateSchemaObject, uint fieldNumber,
                                                  int indents)
        {
            var codeWriter = new CodeWriter();

            using (codeWriter.Scope($"if ({fieldInstance}.Count == 0)"))
            {
                codeWriter.WriteLine($"{componentUpdateSchemaObject}.AddClearedField({fieldNumber});");
            }

            return(CommonGeneratorUtils.IndentEveryNewline(codeWriter.Build(), indents));
        }
コード例 #11
0
        public string Format(int indentLevel = 0)
        {
            var indent = CommonGeneratorUtils.GetIndentSpaces(indentLevel);

            var values = string.Empty;

            if (initialValues.Count > 0)
            {
                values = $"{initialValues.Format(indentLevel + 1)}{Environment.NewLine}";
            }

            return($"{indent}{declaration}{Environment.NewLine}{indent}{{{Environment.NewLine}{values}{indent}}};");
        }
コード例 #12
0
        public string GetSerializationString(string fieldInstance, string schemaObject, uint fieldNumber, int indents)
        {
            var codeWriter = new CodeWriter();

            using (codeWriter.Scope($"foreach (var keyValuePair in {fieldInstance})"))
            {
                codeWriter.WriteLine($"var mapObj = {schemaObject}.AddObject({fieldNumber});");
                codeWriter.WriteLine(keyType.GetSerializationStatement("keyValuePair.Key", "mapObj", 1));
                codeWriter.WriteLine(valueType.GetSerializationStatement("keyValuePair.Value", "mapObj", 2));
            }

            return(CommonGeneratorUtils.IndentEveryNewline(codeWriter.Build(), indents));
        }
コード例 #13
0
        public string GetDeserializationString(string fieldInstance, string schemaObject, uint fieldNumber, int indents)
        {
            var codeWriter = new CodeWriter();

            using (codeWriter.Scope())
            {
                codeWriter.WriteLine($"var map = new {Type}();");
                codeWriter.WriteLine($"var mapSize = {schemaObject}.GetObjectCount({fieldNumber});");
                codeWriter.WriteLine($"{fieldInstance} = map;");
                using (codeWriter.Scope("for (var i = 0; i < mapSize; i++)"))
                {
                    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("map.Add(key, value);");
                }
            }

            return(CommonGeneratorUtils.IndentEveryNewline(codeWriter.Build(), indents));
        }
コード例 #14
0
        public string GetDeserializationString(string fieldInstance, string schemaObject, uint fieldNumber, int indents)
        {
            var codeWriter = new CodeWriter();

            using (codeWriter.Scope())
            {
                codeWriter.WriteLine($"{fieldInstance} = new {Type}();");
                codeWriter.WriteLine($"var list = {fieldInstance};");
                codeWriter.WriteLine(
                    $"var listLength = {containedType.GetCountExpression(schemaObject, fieldNumber)};");

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

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

            using (codeWriter.Scope())
            {
                CommonCodeWriterBlocks.WriteCheckIsCleared(codeWriter, fieldNumber);

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

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

            return(CommonGeneratorUtils.IndentEveryNewline(codeWriter.Build(), indents));
        }
コード例 #16
0
        /// <summary>
        ///     Helper function that returns a (multi-line) string that represents the C# code required to serialize
        ///     this field.
        /// </summary>
        /// <param name="fieldInstance">The name of the instance of this field that is to be serialized.</param>
        /// <param name="schemaObject">The name of the SchemaObject is to be used in serialization.</param>
        /// <param name="indents">The indent level that the block of code should be at.</param>
        public string GetSerializationString(string fieldInstance, string schemaObject, int indents)
        {
            var serializationString = fieldType.GetSerializationString(fieldInstance, schemaObject, FieldNumber);

            return(CommonGeneratorUtils.IndentEveryNewline(serializationString, indents));
        }
コード例 #17
0
        public string GetTrySetClearedFieldString(string fieldInstance, string componentUpdateSchemaObj, int indents)
        {
            var trySetClearedFieldString = fieldType.GetTrySetClearedFieldString(fieldInstance, componentUpdateSchemaObj, FieldNumber);

            return(CommonGeneratorUtils.IndentEveryNewline(trySetClearedFieldString, indents));
        }