public override CodeGeneratedMethod CreateCloneMethodBody(CloneCodeGenContext context) { return(new CodeGeneratedMethod($"return {context.ItemVariableName};") { IsMethodInline = true, }); }
public override CodeGeneratedMethod CreateCloneMethodBody(CloneCodeGenContext context) { string body = $"return {context.ItemVariableName}.ToArray().AsMemory();"; return(new CodeGeneratedMethod(body) { IsMethodInline = true, }); }
public override CodeGeneratedMethod CreateCloneMethodBody(CloneCodeGenContext context) { string parameters = parameters = $"{context.ItemVariableName}, {context.MethodNameMap[this.ItemTypeModel.ClrType]}"; string body = $"return {nameof(VectorCloneHelpers)}.{nameof(VectorCloneHelpers.CloneVectorOfUnion)}<{this.ItemTypeModel.GetCompilableTypeName()}>({parameters});"; return new CodeGeneratedMethod(body) { IsMethodInline = true, }; }
public override CodeGeneratedMethod CreateCloneMethodBody(CloneCodeGenContext context) { var typeName = this.GetCompilableTypeName(); string body = $"return {context.ItemVariableName} is null ? null : new {typeName}({context.ItemVariableName});"; return(new CodeGeneratedMethod(body) { IsMethodInline = true, }); }
public CodeGeneratedMethod CreateCloneMethodBody(CloneCodeGenContext context) { string toUnderlying = GetConvertToUnderlyingInvocation(context.ItemVariableName); string clone = context.MethodNameMap[this.underlyingModel.ClrType]; string fromUnderlying = GetConvertFromUnderlyingInvocation($"{clone}({toUnderlying})"); return(new CodeGeneratedMethod($"return {fromUnderlying};") { IsMethodInline = true, }); }
public override CodeGeneratedMethod CreateCloneMethodBody(CloneCodeGenContext context) { string body = $@" if ({context.ItemVariableName}.HasValue) {{ return {context.MethodNameMap[this.underlyingType]}({context.ItemVariableName}.Value); }} return null; "; return(new CodeGeneratedMethod(body) { IsMethodInline = true, }); }
public override CodeGeneratedMethod CreateCloneMethodBody(CloneCodeGenContext context) { List <string> switchCases = new List <string>(); for (int i = 0; i < this.memberTypeModels.Length; ++i) { int discriminator = i + 1; string cloneMethod = context.MethodNameMap[this.memberTypeModels[i].ClrType]; switchCases.Add($"{discriminator} => new {this.GetGlobalCompilableTypeName()}({cloneMethod}({context.ItemVariableName}.Item{discriminator})),"); } switchCases.Add("_ => throw new InvalidOperationException(\"Unexpected union discriminator\")"); string body = $@" return {context.ItemVariableName}.{nameof(IFlatBufferUnion.Discriminator)} switch {{ {string.Join("\r\n", switchCases)} }};"; return(new CodeGeneratedMethod(body)); }
public abstract CodeGeneratedMethod CreateCloneMethodBody(CloneCodeGenContext context);