@@ -561,7 +561,9 @@ public void Generate (TextWriter writer)
561
561
continue ;
562
562
}
563
563
needCtor = true ;
564
- writer . WriteLine ( "\t static final String __md_{0}_methods;" , i + 1 ) ;
564
+ writer . Write ( "\t static final String __md_" ) ;
565
+ writer . Write ( i + 1 ) ;
566
+ writer . WriteLine ( "_methods;" ) ;
565
567
}
566
568
}
567
569
@@ -574,8 +576,7 @@ public void Generate (TextWriter writer)
574
576
575
577
if ( children != null ) {
576
578
for ( int i = 0 ; i < children . Count ; ++ i ) {
577
- string methods = string . Format ( "__md_{0}_methods" , i + 1 ) ;
578
- GenerateRegisterType ( writer , children [ i ] , methods ) ;
579
+ GenerateRegisterType ( writer , children [ i ] , $ "__md_{ i + 1 } _methods") ;
579
580
}
580
581
}
581
582
writer . WriteLine ( "\t }" ) ;
@@ -613,7 +614,9 @@ static void WriteAnnotations (string indent, TextWriter sw, IEnumerable<CustomAt
613
614
var catype = ca . AttributeType . Resolve ( ) ;
614
615
var tca = catype . CustomAttributes . FirstOrDefault ( a => a . AttributeType . FullName == "Android.Runtime.AnnotationAttribute" ) ;
615
616
if ( tca != null ) {
616
- sw . Write ( "{0}@{1}" , indent , tca . ConstructorArguments [ 0 ] . Value ) ;
617
+ sw . Write ( indent ) ;
618
+ sw . Write ( '@' ) ;
619
+ sw . Write ( tca . ConstructorArguments [ 0 ] . Value ) ;
617
620
if ( ca . Properties . Count > 0 ) {
618
621
sw . WriteLine ( "(" ) ;
619
622
bool wrote = false ;
@@ -622,7 +625,9 @@ static void WriteAnnotations (string indent, TextWriter sw, IEnumerable<CustomAt
622
625
sw . WriteLine ( ',' ) ;
623
626
var pd = catype . Properties . FirstOrDefault ( pp => pp . Name == p . Name ) ;
624
627
var reg = pd != null ? pd . CustomAttributes . FirstOrDefault ( pdca => pdca . AttributeType . FullName == "Android.Runtime.RegisterAttribute" ) : null ;
625
- sw . Write ( "{0} = {1}" , reg != null ? reg . ConstructorArguments [ 0 ] . Value : p . Name , ManagedValueToJavaSource ( p . Argument . Value ) ) ;
628
+ sw . Write ( reg != null ? reg . ConstructorArguments [ 0 ] . Value : p . Name ) ;
629
+ sw . Write ( " = " ) ;
630
+ sw . Write ( ManagedValueToJavaSource ( p . Argument . Value ) ) ;
626
631
wrote = true ;
627
632
}
628
633
sw . Write ( ")" ) ;
@@ -674,7 +679,8 @@ void GenerateHeader (TextWriter sw)
674
679
if ( ifaces . Any ( ) ) {
675
680
foreach ( TypeDefinition iface in ifaces ) {
676
681
sw . WriteLine ( "," ) ;
677
- sw . Write ( "\t \t {0}" , GetJavaTypeName ( iface , cache ) ) ;
682
+ sw . Write ( "\t \t " ) ;
683
+ sw . Write ( GetJavaTypeName ( iface , cache ) ) ;
678
684
}
679
685
}
680
686
sw . WriteLine ( ) ;
@@ -699,12 +705,20 @@ void GenerateBody (TextWriter sw)
699
705
700
706
if ( GenerateOnCreateOverrides && JavaNativeTypeManager . IsApplication ( type , cache ) && ! methods . Any ( m => m . Name == "onCreate" ) )
701
707
WriteApplicationOnCreate ( sw , w => {
702
- w . WriteLine ( "\t \t mono.android.Runtime.register (\" {0}\" , {1}.class, __md_methods);" , type . GetPartialAssemblyQualifiedName ( cache ) , name ) ;
708
+ w . Write ( "\t \t mono.android.Runtime.register (\" " ) ;
709
+ w . Write ( type . GetPartialAssemblyQualifiedName ( cache ) ) ;
710
+ w . Write ( "\" , " ) ;
711
+ w . Write ( name ) ;
712
+ w . WriteLine ( ".class, __md_methods);" ) ;
703
713
w . WriteLine ( "\t \t super.onCreate ();" ) ;
704
714
} ) ;
705
715
if ( GenerateOnCreateOverrides && JavaNativeTypeManager . IsInstrumentation ( type , cache ) && ! methods . Any ( m => m . Name == "onCreate" ) )
706
716
WriteInstrumentationOnCreate ( sw , w => {
707
- w . WriteLine ( "\t \t mono.android.Runtime.register (\" {0}\" , {1}.class, __md_methods);" , type . GetPartialAssemblyQualifiedName ( cache ) , name ) ;
717
+ w . Write ( "\t \t mono.android.Runtime.register (\" " ) ;
718
+ w . Write ( type . GetPartialAssemblyQualifiedName ( cache ) ) ;
719
+ w . Write ( "\" , " ) ;
720
+ w . Write ( name ) ;
721
+ w . WriteLine ( ".class, __md_methods);" ) ;
708
722
w . WriteLine ( "\t \t super.onCreate (arguments);" ) ;
709
723
} ) ;
710
724
@@ -737,29 +751,43 @@ void GenerateRegisterType (TextWriter sw, JavaCallableWrapperGenerator self, str
737
751
return ;
738
752
}
739
753
740
- sw . WriteLine ( "\t \t {0} = " , field ) ;
754
+ sw . Write ( "\t \t " ) ;
755
+ sw . Write ( field ) ;
756
+ sw . WriteLine ( " = " ) ;
741
757
string managedTypeName = self . type . GetPartialAssemblyQualifiedName ( cache ) ;
742
758
string javaTypeName = $ "{ package } .{ name } ";
743
759
744
760
foreach ( Signature method in self . methods ) {
745
761
if ( method . IsDynamicallyRegistered ) {
746
- sw . WriteLine ( "\t \t \t \" {0}\\ n\" +" , method . Method ) ;
762
+ sw . Write ( "\t \t \t \" " , method . Method ) ;
763
+ sw . Write ( method . Method ) ;
764
+ sw . WriteLine ( "\\ n\" +" ) ;
747
765
}
748
766
}
749
767
sw . WriteLine ( "\t \t \t \" \" ;" ) ;
750
768
if ( CannotRegisterInStaticConstructor ( self . type ) )
751
769
return ;
752
- string ? format = null ;
770
+ sw . Write ( " \t \t " ) ;
753
771
switch ( CodeGenerationTarget ) {
754
772
case JavaPeerStyle . JavaInterop1 :
755
- format = "com.xamarin.java_interop.ManagedPeer.registerNativeMembers ({1}.class, \" {0}\" , {2});" ;
773
+ sw . Write ( "com.xamarin.java_interop.ManagedPeer.registerNativeMembers (" ) ;
774
+ sw . Write ( self . name ) ;
775
+ sw . Write ( ".class, \" " ) ;
776
+ sw . Write ( managedTypeName ) ;
777
+ sw . Write ( "\" , " ) ;
778
+ sw . Write ( field ) ;
779
+ sw . WriteLine ( ");" ) ;
756
780
break ;
757
781
default :
758
- format = "mono.android.Runtime.register (\" {0}\" , {1}.class, {2});" ;
782
+ sw . Write ( "mono.android.Runtime.register (\" " ) ;
783
+ sw . Write ( managedTypeName ) ;
784
+ sw . Write ( "\" , " ) ;
785
+ sw . Write ( self . name ) ;
786
+ sw . Write ( ".class, " ) ;
787
+ sw . Write ( field ) ;
788
+ sw . WriteLine ( ");" ) ;
759
789
break ;
760
790
}
761
- sw . Write ( "\t \t " ) ;
762
- sw . WriteLine ( format , managedTypeName , self . name , field ) ;
763
791
}
764
792
765
793
void GenerateFooter ( TextWriter sw )
@@ -922,25 +950,44 @@ void GenerateConstructor (Signature ctor, TextWriter sw)
922
950
sw . WriteLine ( ) ;
923
951
if ( ctor . Annotations != null )
924
952
sw . WriteLine ( ctor . Annotations ) ;
925
- sw . WriteLine ( "\t public {0} ({1}){2}" , name , ctor . Params , ctor . ThrowsDeclaration ) ;
953
+ sw . Write ( "\t public " ) ;
954
+ sw . Write ( name ) ;
955
+ sw . Write ( " (" ) ;
956
+ sw . Write ( ctor . Params ) ;
957
+ sw . Write ( ')' ) ;
958
+ sw . WriteLine ( ctor . ThrowsDeclaration ) ;
926
959
sw . WriteLine ( "\t {" ) ;
927
- sw . WriteLine ( "\t \t super ({0});" , ctor . SuperCall ) ;
960
+ sw . Write ( "\t \t super (" ) ;
961
+ sw . Write ( ctor . SuperCall ) ;
962
+ sw . WriteLine ( ");" ) ;
928
963
#if MONODROID_TIMING
929
964
sw . WriteLine ( "\t \t android.util.Log.i(\" MonoDroid-Timing\" , \" {0}..ctor({1}): time: \" +java.lang.System.currentTimeMillis());" , name , ctor . Params ) ;
930
965
#endif
931
966
if ( ! CannotRegisterInStaticConstructor ( type ) ) {
932
- string ? format = null ;
967
+ sw . Write ( "\t \t if (getClass () == " ) ;
968
+ sw . Write ( name ) ;
969
+ sw . WriteLine ( ".class) {" ) ;
970
+ sw . Write ( "\t \t \t " ) ;
933
971
switch ( CodeGenerationTarget ) {
934
972
case JavaPeerStyle . JavaInterop1 :
935
- format = "com.xamarin.java_interop.ManagedPeer.construct (this, \" {0}\" , \" {1}\" , new java.lang.Object[] {{ {2} }});" ;
973
+ sw . Write ( "com.xamarin.java_interop.ManagedPeer.construct (this, \" " ) ;
974
+ sw . Write ( type . GetPartialAssemblyQualifiedName ( cache ) ) ;
975
+ sw . Write ( "\" , \" " ) ;
976
+ sw . Write ( ctor . ManagedParameters ) ;
977
+ sw . Write ( "\" , new java.lang.Object[] { " ) ;
978
+ sw . Write ( ctor . ActivateCall ) ;
979
+ sw . WriteLine ( " });" ) ;
936
980
break ;
937
981
default :
938
- format = "mono.android.TypeManager.Activate (\" {0}\" , \" {1}\" , this, new java.lang.Object[] {{ {2} }});" ;
982
+ sw . Write ( "mono.android.TypeManager.Activate (\" " ) ;
983
+ sw . Write ( type . GetPartialAssemblyQualifiedName ( cache ) ) ;
984
+ sw . Write ( "\" , \" " ) ;
985
+ sw . Write ( ctor . ManagedParameters ) ;
986
+ sw . Write ( "\" , this, new java.lang.Object[] { " ) ;
987
+ sw . Write ( ctor . ActivateCall ) ;
988
+ sw . WriteLine ( " });" ) ;
939
989
break ;
940
990
}
941
- sw . WriteLine ( "\t \t if (getClass () == {0}.class) {{" , name ) ;
942
- sw . Write ( "\t \t \t " ) ;
943
- sw . WriteLine ( format , type . GetPartialAssemblyQualifiedName ( cache ) , ctor . ManagedParameters , ctor . ActivateCall ) ;
944
991
sw . WriteLine ( "\t \t }" ) ;
945
992
}
946
993
sw . WriteLine ( "\t }" ) ;
@@ -953,7 +1000,9 @@ void GenerateApplicationConstructor (TextWriter sw)
953
1000
}
954
1001
955
1002
sw . WriteLine ( ) ;
956
- sw . WriteLine ( "\t public {0} ()" , name ) ;
1003
+ sw . Write ( "\t public " ) ;
1004
+ sw . Write ( name ) ;
1005
+ sw . WriteLine ( " ()" ) ;
957
1006
sw . WriteLine ( "\t {" ) ;
958
1007
sw . WriteLine ( "\t \t mono.MonoPackageManager.setContext (this);" ) ;
959
1008
sw . WriteLine ( "\t }" ) ;
@@ -964,24 +1013,60 @@ void GenerateExportedField (JavaFieldInfo field, TextWriter sw)
964
1013
sw . WriteLine ( ) ;
965
1014
if ( field . Annotations != null )
966
1015
sw . WriteLine ( field . Annotations ) ;
967
- sw . WriteLine ( "\t {0} {1}{2} {3} = {4} ();" , field . GetJavaAccess ( ) , field . IsStatic ? "static " : null , field . TypeName , field . FieldName , field . InitializerName ) ;
1016
+ sw . Write ( "\t " ) ;
1017
+ sw . Write ( field . GetJavaAccess ( ) ) ;
1018
+ sw . Write ( ' ' ) ;
1019
+ if ( field . IsStatic )
1020
+ sw . Write ( "static " ) ;
1021
+ sw . Write ( field . TypeName ) ;
1022
+ sw . Write ( ' ' ) ;
1023
+ sw . Write ( field . FieldName ) ;
1024
+ sw . Write ( " = " ) ;
1025
+ sw . Write ( field . InitializerName ) ;
1026
+ sw . WriteLine ( " ();" ) ;
968
1027
}
969
1028
970
1029
void GenerateMethod ( Signature method , TextWriter sw )
971
1030
{
972
1031
sw . WriteLine ( ) ;
973
1032
if ( method . Annotations != null )
974
1033
sw . WriteLine ( method . Annotations ) ;
975
- sw . WriteLine ( "\t {0} {1}{2} {3} ({4}){5}" , method . IsExport ? method . JavaAccess : "public" , method . IsStatic ? "static " : null , method . Retval , method . JavaName , method . Params , method . ThrowsDeclaration ) ;
1034
+ sw . Write ( "\t " ) ;
1035
+ sw . Write ( method . IsExport ? method . JavaAccess : "public" ) ;
1036
+ sw . Write ( ' ' ) ;
1037
+ if ( method . IsStatic )
1038
+ sw . Write ( "static " ) ;
1039
+ sw . Write ( method . Retval ) ;
1040
+ sw . Write ( ' ' ) ;
1041
+ sw . Write ( method . JavaName ) ;
1042
+ sw . Write ( " (" ) ;
1043
+ sw . Write ( method . Params ) ;
1044
+ sw . Write ( ')' ) ;
1045
+ sw . WriteLine ( method . ThrowsDeclaration ) ;
976
1046
sw . WriteLine ( "\t {" ) ;
977
1047
#if MONODROID_TIMING
978
1048
sw . WriteLine ( "\t \t android.util.Log.i(\" MonoDroid-Timing\" , \" {0}.{1}: time: \" +java.lang.System.currentTimeMillis());" , name , method . Name ) ;
979
1049
#endif
980
- sw . WriteLine ( "\t \t {0}n_{1} ({2});" , method . Retval == "void" ? String . Empty : "return " , method . Name , method . ActivateCall ) ;
1050
+ sw . Write ( "\t \t " ) ;
1051
+ sw . Write ( method . Retval == "void" ? String . Empty : "return " ) ;
1052
+ sw . Write ( "n_" ) ;
1053
+ sw . Write ( method . Name ) ;
1054
+ sw . Write ( " (" ) ;
1055
+ sw . Write ( method . ActivateCall ) ;
1056
+ sw . WriteLine ( ");" ) ;
981
1057
982
1058
sw . WriteLine ( "\t }" ) ;
983
1059
sw . WriteLine ( ) ;
984
- sw . WriteLine ( "\t private {0}native {1} n_{2} ({3});" , method . IsStatic ? "static " : null , method . Retval , method . Name , method . Params ) ;
1060
+ sw . Write ( "\t private " ) ;
1061
+ if ( method . IsStatic )
1062
+ sw . Write ( "static " ) ;
1063
+ sw . Write ( "native " ) ;
1064
+ sw . Write ( method . Retval ) ;
1065
+ sw . Write ( " n_" ) ;
1066
+ sw . Write ( method . Name ) ;
1067
+ sw . Write ( " (" ) ;
1068
+ sw . Write ( method . Params ) ;
1069
+ sw . WriteLine ( ");" ) ;
985
1070
}
986
1071
987
1072
void WriteApplicationOnCreate ( TextWriter sw , Action < TextWriter > extra )
0 commit comments