Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit01f473f

Browse files
committed
Modernise syntax in ClassDerived
1 parentcf6e064 commit01f473f

File tree

1 file changed

+115
-121
lines changed

1 file changed

+115
-121
lines changed

‎src/runtime/Types/ClassDerived.cs

Lines changed: 115 additions & 121 deletions
Original file line numberDiff line numberDiff line change
@@ -472,100 +472,100 @@ private static void AddPythonMethod(string methodName, PyObject func, TypeBuilde
472472
methodName=pyMethodName.As<string>()??thrownewArgumentNullException(methodNameAttribute);
473473
}
474474

475-
using(PyObjectpyReturnType=func.GetAttr("_clr_return_type_"))
476-
using(varpyArgTypes=PyIter.GetIter(func.GetAttr("_clr_arg_types_")))
475+
usingvarpyReturnType=func.GetAttr("_clr_return_type_");
476+
usingvarpyArgTypes=func.GetAttr("_clr_arg_types_");
477+
usingvarpyArgTypesIter=PyIter.GetIter(pyArgTypes);
478+
varreturnType=pyReturnType.AsManagedObject(typeof(Type))asType;
479+
if(returnType==null)
477480
{
478-
varreturnType=pyReturnType.AsManagedObject(typeof(Type))asType;
479-
if(returnType==null)
480-
{
481-
returnType=typeof(void);
482-
}
481+
returnType=typeof(void);
482+
}
483483

484-
varargTypes=newList<Type>();
485-
foreach(PyObjectpyArgTypeinpyArgTypes)
484+
varargTypes=newList<Type>();
485+
foreach(PyObjectpyArgTypeinpyArgTypesIter)
486+
{
487+
varargType=pyArgType.AsManagedObject(typeof(Type))asType;
488+
if(argType==null)
486489
{
487-
varargType=pyArgType.AsManagedObject(typeof(Type))asType;
488-
if(argType==null)
489-
{
490-
thrownewArgumentException("_clr_arg_types_ must be a list or tuple of CLR types");
491-
}
492-
argTypes.Add(argType);
490+
thrownewArgumentException("_clr_arg_types_ must be a list or tuple of CLR types");
493491
}
492+
argTypes.Add(argType);
493+
pyArgType.Dispose();
494+
}
494495

495-
// add the method to call back into python
496-
MethodAttributesmethodAttribs=MethodAttributes.Public|
497-
MethodAttributes.Virtual|
498-
MethodAttributes.ReuseSlot|
499-
MethodAttributes.HideBySig;
496+
// add the method to call back into python
497+
MethodAttributesmethodAttribs=MethodAttributes.Public|
498+
MethodAttributes.Virtual|
499+
MethodAttributes.ReuseSlot|
500+
MethodAttributes.HideBySig;
500501

501-
MethodBuildermethodBuilder=typeBuilder.DefineMethod(methodName,
502-
methodAttribs,
503-
returnType,
504-
argTypes.ToArray());
502+
MethodBuildermethodBuilder=typeBuilder.DefineMethod(methodName,
503+
methodAttribs,
504+
returnType,
505+
argTypes.ToArray());
505506

506-
ILGeneratoril=methodBuilder.GetILGenerator();
507+
ILGeneratoril=methodBuilder.GetILGenerator();
507508

508-
il.DeclareLocal(typeof(object[]));
509-
il.DeclareLocal(typeof(RuntimeMethodHandle));
509+
il.DeclareLocal(typeof(object[]));
510+
il.DeclareLocal(typeof(RuntimeMethodHandle));
510511

511-
// this
512-
il.Emit(OpCodes.Ldarg_0);
512+
// this
513+
il.Emit(OpCodes.Ldarg_0);
513514

514-
// Python method to call
515-
il.Emit(OpCodes.Ldstr,methodName);
515+
// Python method to call
516+
il.Emit(OpCodes.Ldstr,methodName);
516517

517-
// original method name
518-
il.Emit(OpCodes.Ldnull);// don't fall back to the base type's method
518+
// original method name
519+
il.Emit(OpCodes.Ldnull);// don't fall back to the base type's method
519520

520-
// create args array
521-
il.Emit(OpCodes.Ldc_I4,argTypes.Count);
522-
il.Emit(OpCodes.Newarr,typeof(object));
523-
il.Emit(OpCodes.Stloc_0);
521+
// create args array
522+
il.Emit(OpCodes.Ldc_I4,argTypes.Count);
523+
il.Emit(OpCodes.Newarr,typeof(object));
524+
il.Emit(OpCodes.Stloc_0);
524525

525-
// fill args array
526-
for(vari=0;i<argTypes.Count;++i)
526+
// fill args array
527+
for(vari=0;i<argTypes.Count;++i)
528+
{
529+
il.Emit(OpCodes.Ldloc_0);
530+
il.Emit(OpCodes.Ldc_I4,i);
531+
il.Emit(OpCodes.Ldarg,i+1);
532+
vartype=argTypes[i];
533+
if(type.IsByRef)
527534
{
528-
il.Emit(OpCodes.Ldloc_0);
529-
il.Emit(OpCodes.Ldc_I4,i);
530-
il.Emit(OpCodes.Ldarg,i+1);
531-
vartype=argTypes[i];
532-
if(type.IsByRef)
533-
{
534-
type=type.GetElementType();
535-
il.Emit(OpCodes.Ldobj,type);
536-
}
537-
if(type.IsValueType)
538-
{
539-
il.Emit(OpCodes.Box,type);
540-
}
541-
il.Emit(OpCodes.Stelem,typeof(object));
535+
type=type.GetElementType();
536+
il.Emit(OpCodes.Ldobj,type);
537+
}
538+
if(type.IsValueType)
539+
{
540+
il.Emit(OpCodes.Box,type);
542541
}
542+
il.Emit(OpCodes.Stelem,typeof(object));
543+
}
543544

544-
// args array
545-
il.Emit(OpCodes.Ldloc_0);
545+
// args array
546+
il.Emit(OpCodes.Ldloc_0);
546547

547-
// method handle for the base method is null
548-
il.Emit(OpCodes.Ldloca_S,1);
549-
il.Emit(OpCodes.Initobj,typeof(RuntimeMethodHandle));
550-
il.Emit(OpCodes.Ldloc_1);
548+
// method handle for the base method is null
549+
il.Emit(OpCodes.Ldloca_S,1);
550+
il.Emit(OpCodes.Initobj,typeof(RuntimeMethodHandle));
551+
il.Emit(OpCodes.Ldloc_1);
551552
#pragma warning disableCS0618// PythonDerivedType is for internal use only
552553

553-
// invoke the method
554-
if(returnType==typeof(void))
555-
{
556-
il.Emit(OpCodes.Call,typeof(PythonDerivedType).GetMethod(nameof(InvokeMethodVoid)));
557-
}
558-
else
559-
{
560-
il.Emit(OpCodes.Call,
561-
typeof(PythonDerivedType).GetMethod(nameof(InvokeMethod)).MakeGenericMethod(returnType));
562-
}
554+
// invoke the method
555+
if(returnType==typeof(void))
556+
{
557+
il.Emit(OpCodes.Call,typeof(PythonDerivedType).GetMethod(nameof(InvokeMethodVoid)));
558+
}
559+
else
560+
{
561+
il.Emit(OpCodes.Call,
562+
typeof(PythonDerivedType).GetMethod(nameof(InvokeMethod)).MakeGenericMethod(returnType));
563+
}
563564

564-
CodeGenerator.GenerateMarshalByRefsBack(il,argTypes);
565+
CodeGenerator.GenerateMarshalByRefsBack(il,argTypes);
565566

566567
#pragma warning restoreCS0618// PythonDerivedType is for internal use only
567-
il.Emit(OpCodes.Ret);
568-
}
568+
il.Emit(OpCodes.Ret);
569569
}
570570

571571
/// <summary>
@@ -584,68 +584,62 @@ private static void AddPythonProperty(string propertyName, PyObject func, TypeBu
584584
MethodAttributes.HideBySig|
585585
MethodAttributes.SpecialName;
586586

587-
using(PyObjectpyPropertyType=func.GetAttr("_clr_property_type_"))
587+
usingvarpyPropertyType=func.GetAttr("_clr_property_type_");
588+
varpropertyType=pyPropertyType.AsManagedObject(typeof(Type))asType;
589+
if(propertyType==null)
588590
{
589-
varpropertyType=pyPropertyType.AsManagedObject(typeof(Type))asType;
590-
if(propertyType==null)
591-
{
592-
thrownewArgumentException("_clr_property_type must be a CLR type");
593-
}
591+
thrownewArgumentException("_clr_property_type must be a CLR type");
592+
}
594593

595-
PropertyBuilderpropertyBuilder=typeBuilder.DefineProperty(propertyName,
596-
PropertyAttributes.None,
597-
propertyType,
598-
null);
594+
PropertyBuilderpropertyBuilder=typeBuilder.DefineProperty(propertyName,
595+
PropertyAttributes.None,
596+
propertyType,
597+
null);
599598

600-
if(func.HasAttr("fget"))
599+
if(func.HasAttr("fget"))
600+
{
601+
usingvarpyfget=func.GetAttr("fget");
602+
if(pyfget.IsTrue())
601603
{
602-
using(PyObjectpyfget=func.GetAttr("fget"))
603-
{
604-
if(pyfget.IsTrue())
605-
{
606-
MethodBuildermethodBuilder=typeBuilder.DefineMethod("get_"+propertyName,
607-
methodAttribs,
608-
propertyType,
609-
null);
610-
611-
ILGeneratoril=methodBuilder.GetILGenerator();
612-
il.Emit(OpCodes.Ldarg_0);
613-
il.Emit(OpCodes.Ldstr,propertyName);
604+
MethodBuildermethodBuilder=typeBuilder.DefineMethod("get_"+propertyName,
605+
methodAttribs,
606+
propertyType,
607+
null);
608+
609+
ILGeneratoril=methodBuilder.GetILGenerator();
610+
il.Emit(OpCodes.Ldarg_0);
611+
il.Emit(OpCodes.Ldstr,propertyName);
614612
#pragma warning disableCS0618// PythonDerivedType is for internal use only
615-
il.Emit(OpCodes.Call,
616-
typeof(PythonDerivedType).GetMethod("InvokeGetProperty").MakeGenericMethod(propertyType));
613+
il.Emit(OpCodes.Call,
614+
typeof(PythonDerivedType).GetMethod("InvokeGetProperty").MakeGenericMethod(propertyType));
617615
#pragma warning restoreCS0618// PythonDerivedType is for internal use only
618-
il.Emit(OpCodes.Ret);
616+
il.Emit(OpCodes.Ret);
619617

620-
propertyBuilder.SetGetMethod(methodBuilder);
621-
}
622-
}
618+
propertyBuilder.SetGetMethod(methodBuilder);
623619
}
620+
}
624621

625-
if(func.HasAttr("fset"))
622+
if(func.HasAttr("fset"))
623+
{
624+
usingvarpyset=func.GetAttr("fset");
625+
if(pyset.IsTrue())
626626
{
627-
using(PyObjectpyset=func.GetAttr("fset"))
628-
{
629-
if(pyset.IsTrue())
630-
{
631-
MethodBuildermethodBuilder=typeBuilder.DefineMethod("set_"+propertyName,
632-
methodAttribs,
633-
null,
634-
new[]{propertyType});
635-
636-
ILGeneratoril=methodBuilder.GetILGenerator();
637-
il.Emit(OpCodes.Ldarg_0);
638-
il.Emit(OpCodes.Ldstr,propertyName);
639-
il.Emit(OpCodes.Ldarg_1);
627+
MethodBuildermethodBuilder=typeBuilder.DefineMethod("set_"+propertyName,
628+
methodAttribs,
629+
null,
630+
new[]{propertyType});
631+
632+
ILGeneratoril=methodBuilder.GetILGenerator();
633+
il.Emit(OpCodes.Ldarg_0);
634+
il.Emit(OpCodes.Ldstr,propertyName);
635+
il.Emit(OpCodes.Ldarg_1);
640636
#pragma warning disableCS0618// PythonDerivedType is for internal use only
641-
il.Emit(OpCodes.Call,
642-
typeof(PythonDerivedType).GetMethod("InvokeSetProperty").MakeGenericMethod(propertyType));
637+
il.Emit(OpCodes.Call,
638+
typeof(PythonDerivedType).GetMethod("InvokeSetProperty").MakeGenericMethod(propertyType));
643639
#pragma warning restoreCS0618// PythonDerivedType is for internal use only
644-
il.Emit(OpCodes.Ret);
640+
il.Emit(OpCodes.Ret);
645641

646-
propertyBuilder.SetSetMethod(methodBuilder);
647-
}
648-
}
642+
propertyBuilder.SetSetMethod(methodBuilder);
649643
}
650644
}
651645
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp