Beispiel #1
0
 private CodegenMethod GetCodegen(
     CodegenMethodScope codegenMethodScope,
     CodegenClassScope codegenClassScope)
 {
     return codegenMethodScope.MakeChild(typeof(object), GetType(), codegenClassScope)
         .AddParam(typeof(GenericRecord), "record")
         .Block
         .DeclareVar<GenericRecord>(
             "inner",
             CodegenExpressionBuilder.Cast(
                 typeof(GenericRecord),
                 CodegenExpressionBuilder.StaticMethod(
                     typeof(GenericRecordExtensions),
                     "Get",
                     CodegenExpressionBuilder.Ref("record"),
                     CodegenExpressionBuilder.Constant(_fieldTop))))
         .MethodReturn(
             CodegenExpressionBuilder.Conditional(
                 CodegenExpressionBuilder.EqualsNull(CodegenExpressionBuilder.Ref("inner")),
                 CodegenExpressionBuilder.ConstantNull(),
                 _getter.UnderlyingGetCodegen(
                     CodegenExpressionBuilder.Ref("inner"),
                     codegenMethodScope,
                     codegenClassScope)));
 }
Beispiel #2
0
 private CodegenMethod GetCodegen(
     CodegenMethodScope codegenMethodScope,
     CodegenClassScope codegenClassScope)
 {
     return codegenMethodScope.MakeChild(typeof(object), GetType(), codegenClassScope)
         .AddParam(typeof(GenericRecord), "record")
         .Block
         .DeclareVar<GenericRecord>(
             "inner",
             StaticMethod(
                 GetType(),
                 "GetAtIndex",
                 Ref("record"),
                 Constant(_posTop.Name),
                 Constant(_index)))
         .IfRefNullReturnNull("inner")
         .MethodReturn(
             _nested.UnderlyingGetCodegen(
                 Ref("inner"),
                 codegenMethodScope,
                 codegenClassScope));
 }