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)); }
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)); }
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}}}"); }
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)); }
/// <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)); }
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}"); }
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)); }
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)); }
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)); }
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)); }
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}}};"); }
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)); }
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)); }
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)); }
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)); }
/// <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)); }
public string GetTrySetClearedFieldString(string fieldInstance, string componentUpdateSchemaObj, int indents) { var trySetClearedFieldString = fieldType.GetTrySetClearedFieldString(fieldInstance, componentUpdateSchemaObj, FieldNumber); return(CommonGeneratorUtils.IndentEveryNewline(trySetClearedFieldString, indents)); }