@@ -460,12 +460,144 @@ void AddUnmanagedCallersOnlyAttribute (MethodDefinitionHandle handle)
460460
461461sealed class ExportMethodDispatchEmitterContext
462462{
463- public required TypeReferenceHandle JniObjectReferenceRef { get ; init ; }
464- public required TypeReferenceHandle IJavaObjectRef { get ; init ; }
465- public required TypeReferenceHandle JniTypeRef { get ; init ; }
466- public required TypeReferenceHandle JniNativeMethodRef { get ; init ; }
467- public required TypeReferenceHandle ReadOnlySpanOpenRef { get ; init ; }
463+ public static ExportMethodDispatchEmitterContext Create (
464+ PEAssemblyBuilder pe ,
465+ TypeReferenceHandle iJavaPeerableRef ,
466+ TypeReferenceHandle jniHandleOwnershipRef ,
467+ TypeReferenceHandle jniEnvRef ,
468+ TypeReferenceHandle systemTypeRef ,
469+ MemberReferenceHandle getTypeFromHandleRef ,
470+ MemberReferenceHandle ucoAttrCtorRef ,
471+ BlobHandle ucoAttrBlobHandle )
472+ {
473+ var metadata = pe . Metadata ;
474+ var iJavaObjectRef = metadata . AddTypeReference ( pe . MonoAndroidRef ,
475+ metadata . GetOrAddString ( "Android.Runtime" ) , metadata . GetOrAddString ( "IJavaObject" ) ) ;
476+ var javaLangObjectRef = metadata . AddTypeReference ( pe . MonoAndroidRef ,
477+ metadata . GetOrAddString ( "Java.Lang" ) , metadata . GetOrAddString ( "Object" ) ) ;
478+ var systemArrayRef = metadata . AddTypeReference ( pe . SystemRuntimeRef ,
479+ metadata . GetOrAddString ( "System" ) , metadata . GetOrAddString ( "Array" ) ) ;
480+ var systemStreamRef = metadata . AddTypeReference ( pe . SystemRuntimeRef ,
481+ metadata . GetOrAddString ( "System.IO" ) , metadata . GetOrAddString ( "Stream" ) ) ;
482+ var systemXmlRef = pe . FindOrAddAssemblyRef ( "System.Xml.ReaderWriter" ) ;
483+ var systemXmlReaderRef = metadata . AddTypeReference ( systemXmlRef ,
484+ metadata . GetOrAddString ( "System.Xml" ) , metadata . GetOrAddString ( "XmlReader" ) ) ;
485+ var inputStreamInvokerRef = metadata . AddTypeReference ( pe . MonoAndroidRef ,
486+ metadata . GetOrAddString ( "Android.Runtime" ) , metadata . GetOrAddString ( "InputStreamInvoker" ) ) ;
487+ var outputStreamInvokerRef = metadata . AddTypeReference ( pe . MonoAndroidRef ,
488+ metadata . GetOrAddString ( "Android.Runtime" ) , metadata . GetOrAddString ( "OutputStreamInvoker" ) ) ;
489+ var inputStreamAdapterRef = metadata . AddTypeReference ( pe . MonoAndroidRef ,
490+ metadata . GetOrAddString ( "Android.Runtime" ) , metadata . GetOrAddString ( "InputStreamAdapter" ) ) ;
491+ var outputStreamAdapterRef = metadata . AddTypeReference ( pe . MonoAndroidRef ,
492+ metadata . GetOrAddString ( "Android.Runtime" ) , metadata . GetOrAddString ( "OutputStreamAdapter" ) ) ;
493+ var xmlPullParserReaderRef = metadata . AddTypeReference ( pe . MonoAndroidRef ,
494+ metadata . GetOrAddString ( "Android.Runtime" ) , metadata . GetOrAddString ( "XmlPullParserReader" ) ) ;
495+ var xmlResourceParserReaderRef = metadata . AddTypeReference ( pe . MonoAndroidRef ,
496+ metadata . GetOrAddString ( "Android.Runtime" ) , metadata . GetOrAddString ( "XmlResourceParserReader" ) ) ;
497+ var xmlReaderPullParserRef = metadata . AddTypeReference ( pe . MonoAndroidRef ,
498+ metadata . GetOrAddString ( "Android.Runtime" ) , metadata . GetOrAddString ( "XmlReaderPullParser" ) ) ;
499+ var xmlReaderResourceParserRef = metadata . AddTypeReference ( pe . MonoAndroidRef ,
500+ metadata . GetOrAddString ( "Android.Runtime" ) , metadata . GetOrAddString ( "XmlReaderResourceParser" ) ) ;
501+
502+ return new ExportMethodDispatchEmitterContext {
503+ IJavaObjectRef = iJavaObjectRef ,
504+ GetTypeFromHandleRef = getTypeFromHandleRef ,
505+ JniEnvGetStringRef = pe . AddMemberRef ( jniEnvRef , "GetString" ,
506+ sig => sig . MethodSignature ( ) . Parameters ( 2 ,
507+ rt => rt . Type ( ) . String ( ) ,
508+ p => {
509+ p . AddParameter ( ) . Type ( ) . IntPtr ( ) ;
510+ p . AddParameter ( ) . Type ( ) . Type ( jniHandleOwnershipRef , true ) ;
511+ } ) ) ,
512+ JniEnvGetArrayRef = pe . AddMemberRef ( jniEnvRef , "GetArray" ,
513+ sig => sig . MethodSignature ( ) . Parameters ( 3 ,
514+ rt => rt . Type ( ) . Type ( systemArrayRef , false ) ,
515+ p => {
516+ p . AddParameter ( ) . Type ( ) . IntPtr ( ) ;
517+ p . AddParameter ( ) . Type ( ) . Type ( jniHandleOwnershipRef , true ) ;
518+ p . AddParameter ( ) . Type ( ) . Type ( systemTypeRef , false ) ;
519+ } ) ) ,
520+ JniEnvCopyArrayRef = pe . AddMemberRef ( jniEnvRef , "CopyArray" ,
521+ sig => sig . MethodSignature ( ) . Parameters ( 3 ,
522+ rt => rt . Void ( ) ,
523+ p => {
524+ p . AddParameter ( ) . Type ( ) . Type ( systemArrayRef , false ) ;
525+ p . AddParameter ( ) . Type ( ) . Type ( systemTypeRef , false ) ;
526+ p . AddParameter ( ) . Type ( ) . IntPtr ( ) ;
527+ } ) ) ,
528+ JniEnvNewArrayRef = pe . AddMemberRef ( jniEnvRef , "NewArray" ,
529+ sig => sig . MethodSignature ( ) . Parameters ( 2 ,
530+ rt => rt . Type ( ) . IntPtr ( ) ,
531+ p => {
532+ p . AddParameter ( ) . Type ( ) . Type ( systemArrayRef , false ) ;
533+ p . AddParameter ( ) . Type ( ) . Type ( systemTypeRef , false ) ;
534+ } ) ) ,
535+ JniEnvNewStringRef = pe . AddMemberRef ( jniEnvRef , "NewString" ,
536+ sig => sig . MethodSignature ( ) . Parameters ( 1 ,
537+ rt => rt . Type ( ) . IntPtr ( ) ,
538+ p => p . AddParameter ( ) . Type ( ) . String ( ) ) ) ,
539+ JniEnvToLocalJniHandleRef = pe . AddMemberRef ( jniEnvRef , "ToLocalJniHandle" ,
540+ sig => sig . MethodSignature ( ) . Parameters ( 1 ,
541+ rt => rt . Type ( ) . IntPtr ( ) ,
542+ p => p . AddParameter ( ) . Type ( ) . Type ( iJavaObjectRef , false ) ) ) ,
543+ JavaLangObjectGetObjectRef = pe . AddMemberRef ( javaLangObjectRef , "GetObject" ,
544+ sig => sig . MethodSignature ( ) . Parameters ( 3 ,
545+ rt => rt . Type ( ) . Type ( iJavaPeerableRef , false ) ,
546+ p => {
547+ p . AddParameter ( ) . Type ( ) . IntPtr ( ) ;
548+ p . AddParameter ( ) . Type ( ) . Type ( jniHandleOwnershipRef , true ) ;
549+ p . AddParameter ( ) . Type ( ) . Type ( systemTypeRef , false ) ;
550+ } ) ) ,
551+ InputStreamInvokerFromJniHandleRef = pe . AddMemberRef ( inputStreamInvokerRef , "FromJniHandle" ,
552+ sig => sig . MethodSignature ( ) . Parameters ( 2 ,
553+ rt => rt . Type ( ) . Type ( systemStreamRef , false ) ,
554+ p => {
555+ p . AddParameter ( ) . Type ( ) . IntPtr ( ) ;
556+ p . AddParameter ( ) . Type ( ) . Type ( jniHandleOwnershipRef , true ) ;
557+ } ) ) ,
558+ OutputStreamInvokerFromJniHandleRef = pe . AddMemberRef ( outputStreamInvokerRef , "FromJniHandle" ,
559+ sig => sig . MethodSignature ( ) . Parameters ( 2 ,
560+ rt => rt . Type ( ) . Type ( systemStreamRef , false ) ,
561+ p => {
562+ p . AddParameter ( ) . Type ( ) . IntPtr ( ) ;
563+ p . AddParameter ( ) . Type ( ) . Type ( jniHandleOwnershipRef , true ) ;
564+ } ) ) ,
565+ InputStreamAdapterToLocalJniHandleRef = pe . AddMemberRef ( inputStreamAdapterRef , "ToLocalJniHandle" ,
566+ sig => sig . MethodSignature ( ) . Parameters ( 1 ,
567+ rt => rt . Type ( ) . IntPtr ( ) ,
568+ p => p . AddParameter ( ) . Type ( ) . Type ( systemStreamRef , false ) ) ) ,
569+ OutputStreamAdapterToLocalJniHandleRef = pe . AddMemberRef ( outputStreamAdapterRef , "ToLocalJniHandle" ,
570+ sig => sig . MethodSignature ( ) . Parameters ( 1 ,
571+ rt => rt . Type ( ) . IntPtr ( ) ,
572+ p => p . AddParameter ( ) . Type ( ) . Type ( systemStreamRef , false ) ) ) ,
573+ XmlPullParserReaderFromJniHandleRef = pe . AddMemberRef ( xmlPullParserReaderRef , "FromJniHandle" ,
574+ sig => sig . MethodSignature ( ) . Parameters ( 2 ,
575+ rt => rt . Type ( ) . Type ( systemXmlReaderRef , false ) ,
576+ p => {
577+ p . AddParameter ( ) . Type ( ) . IntPtr ( ) ;
578+ p . AddParameter ( ) . Type ( ) . Type ( jniHandleOwnershipRef , true ) ;
579+ } ) ) ,
580+ XmlResourceParserReaderFromJniHandleRef = pe . AddMemberRef ( xmlResourceParserReaderRef , "FromJniHandle" ,
581+ sig => sig . MethodSignature ( ) . Parameters ( 2 ,
582+ rt => rt . Type ( ) . Type ( systemXmlReaderRef , false ) ,
583+ p => {
584+ p . AddParameter ( ) . Type ( ) . IntPtr ( ) ;
585+ p . AddParameter ( ) . Type ( ) . Type ( jniHandleOwnershipRef , true ) ;
586+ } ) ) ,
587+ XmlReaderPullParserToLocalJniHandleRef = pe . AddMemberRef ( xmlReaderPullParserRef , "ToLocalJniHandle" ,
588+ sig => sig . MethodSignature ( ) . Parameters ( 1 ,
589+ rt => rt . Type ( ) . IntPtr ( ) ,
590+ p => p . AddParameter ( ) . Type ( ) . Type ( systemXmlReaderRef , false ) ) ) ,
591+ XmlReaderResourceParserToLocalJniHandleRef = pe . AddMemberRef ( xmlReaderResourceParserRef , "ToLocalJniHandle" ,
592+ sig => sig . MethodSignature ( ) . Parameters ( 1 ,
593+ rt => rt . Type ( ) . IntPtr ( ) ,
594+ p => p . AddParameter ( ) . Type ( ) . Type ( systemXmlReaderRef , false ) ) ) ,
595+ UcoAttrCtorRef = ucoAttrCtorRef ,
596+ UcoAttrBlobHandle = ucoAttrBlobHandle ,
597+ } ;
598+ }
468599
600+ public required TypeReferenceHandle IJavaObjectRef { get ; init ; }
469601 public required MemberReferenceHandle GetTypeFromHandleRef { get ; init ; }
470602 public required MemberReferenceHandle JniEnvGetStringRef { get ; init ; }
471603 public required MemberReferenceHandle JniEnvGetArrayRef { get ; init ; }
@@ -482,11 +614,6 @@ sealed class ExportMethodDispatchEmitterContext
482614 public required MemberReferenceHandle XmlResourceParserReaderFromJniHandleRef { get ; init ; }
483615 public required MemberReferenceHandle XmlReaderPullParserToLocalJniHandleRef { get ; init ; }
484616 public required MemberReferenceHandle XmlReaderResourceParserToLocalJniHandleRef { get ; init ; }
485- public required MemberReferenceHandle ActivateInstanceRef { get ; init ; }
486- public required MemberReferenceHandle JniNativeMethodCtorRef { get ; init ; }
487- public required MemberReferenceHandle JniTypePeerReferenceRef { get ; init ; }
488- public required MemberReferenceHandle JniEnvTypesRegisterNativesRef { get ; init ; }
489- public required MemberReferenceHandle ReadOnlySpanOfJniNativeMethodCtorRef { get ; init ; }
490617 public required MemberReferenceHandle UcoAttrCtorRef { get ; init ; }
491618
492619 public required BlobHandle UcoAttrBlobHandle { get ; init ; }
0 commit comments