Ejemplo n.º 1
0
 public override CodeGeneratedMethod CreateCloneMethodBody(CloneCodeGenContext context)
 {
     return(new CodeGeneratedMethod($"return {context.ItemVariableName};")
     {
         IsMethodInline = true,
     });
 }
Ejemplo n.º 2
0
        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,
        };
    }
Ejemplo n.º 4
0
    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,
        });
    }
Ejemplo n.º 5
0
            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,
                });
            }
Ejemplo n.º 6
0
        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,
            });
        }
Ejemplo n.º 7
0
    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));
    }
Ejemplo n.º 8
0
 public abstract CodeGeneratedMethod CreateCloneMethodBody(CloneCodeGenContext context);