@@ -29,6 +29,7 @@ public static void Save (this JavaApi api, XmlWriter writer)
2929 continue ;
3030 writer . WriteStartElement ( "package" ) ;
3131 writer . WriteAttributeString ( "name" , pkg . Name ) ;
32+ writer . WriteAttributeString ( "jni-name" , pkg . JniName ) ;
3233 foreach ( var type in pkg . Types ) {
3334 if ( type . IsReferenceOnly )
3435 continue ; // skip reference only types
@@ -44,15 +45,15 @@ public static void Save (this JavaApi api, XmlWriter writer)
4445
4546 static void Save ( this JavaClass cls , XmlWriter writer )
4647 {
47- SaveTypeCommon ( cls , writer , "class" , XmlConvert . ToString ( cls . Abstract ) , cls . Extends , cls . ExtendsGeneric ) ;
48+ SaveTypeCommon ( cls , writer , "class" , XmlConvert . ToString ( cls . Abstract ) , cls . Extends , cls . ExtendsGeneric , cls . ExtendedJniExtends ) ;
4849 }
4950
5051 static void Save ( this JavaInterface iface , XmlWriter writer )
5152 {
52- SaveTypeCommon ( iface , writer , "interface" , "true" , null , null ) ;
53+ SaveTypeCommon ( iface , writer , "interface" , "true" , null , null , null ) ;
5354 }
5455
55- static void SaveTypeCommon ( this JavaType cls , XmlWriter writer , string elementName , string abs , string ext , string extgen )
56+ static void SaveTypeCommon ( this JavaType cls , XmlWriter writer , string elementName , string abs , string ext , string extgen , string jniExt )
5657 {
5758 writer . WriteStartElement ( elementName ) ;
5859 if ( abs != null )
@@ -62,15 +63,19 @@ static void SaveTypeCommon (this JavaType cls, XmlWriter writer, string elementN
6263 writer . WriteAttributeString ( "extends" , ext ) ;
6364 if ( ext != null )
6465 writer . WriteAttributeString ( "extends-generic-aware" , extgen ) ;
66+ if ( jniExt != null )
67+ writer . WriteAttributeString ( "jni-extends" , jniExt ) ;
6568 writer . WriteAttributeString ( "final" , XmlConvert . ToString ( cls . Final ) ) ;
6669 writer . WriteAttributeString ( "name" , cls . Name ) ;
6770 writer . WriteAttributeString ( "static" , XmlConvert . ToString ( cls . Static ) ) ;
6871 writer . WriteAttributeString ( "visibility" , cls . Visibility ) ;
72+ writer . WriteAttributeString ( "jni-signature" , cls . ExtendedJniSignature ) ;
6973
7074 foreach ( var imp in cls . Implements . OrderBy ( i => i . Name , StringComparer . Ordinal ) ) {
7175 writer . WriteStartElement ( "implements" ) ;
7276 writer . WriteAttributeString ( "name" , imp . Name ) ;
7377 writer . WriteAttributeString ( "name-generic-aware" , imp . NameGeneric ) ;
78+ writer . WriteAttributeString ( "jni-type" , imp . ExtendedJniType ) ;
7479 writer . WriteString ( "\n " ) ;
7580 writer . WriteFullEndElement ( ) ;
7681 }
@@ -94,6 +99,11 @@ static void Save (this JavaTypeParameters typeParameters, XmlWriter writer, stri
9499 foreach ( var tp in typeParameters . TypeParameters ) {
95100 writer . WriteStartElement ( "typeParameter" ) ;
96101 writer . WriteAttributeString ( "name" , tp . Name ) ;
102+ writer . WriteAttributeString ( "classBound" , tp . ExtendedClassBound ) ;
103+ writer . WriteAttributeString ( "jni-classBound" , tp . ExtendedJniClassBound ) ;
104+ writer . WriteAttributeString ( "interfaceBounds" , tp . ExtendedInterfaceBounds ) ;
105+ writer . WriteAttributeString ( "jni-interfaceBounds" , tp . ExtendedJniInterfaceBounds ) ;
106+
97107 if ( tp . GenericConstraints != null ) {
98108 // If there is only one generic constraint that specifies java.lang.Object,
99109 // that is not really a constraint, so skip that.
@@ -133,12 +143,15 @@ static void Save (this JavaField field, XmlWriter writer)
133143 XmlConvert . ToString ( field . Volatile ) ,
134144 null ,
135145 null ,
146+ null ,
147+ null ,
148+ null ,
136149 null ) ;
137150 }
138151
139152 static void Save ( this JavaConstructor ctor , XmlWriter writer )
140153 {
141- SaveCommon ( ctor , writer , "constructor" , null , null , null , null , null , ctor . Type ?? ctor . Parent . FullName , null , null , null , ctor . TypeParameters , ctor . Parameters , ctor . Exceptions ) ;
154+ SaveCommon ( ctor , writer , "constructor" , null , null , null , null , null , ctor . Type ?? ctor . Parent . FullName , null , null , null , ctor . TypeParameters , ctor . Parameters , ctor . Exceptions , ctor . ExtendedBridge , ctor . ExtendedJniReturn , ctor . ExtendedSynthetic ) ;
142155 }
143156
144157 static void Save ( this JavaMethod method , XmlWriter writer )
@@ -187,7 +200,10 @@ static void Save (this JavaMethod method, XmlWriter writer)
187200 null ,
188201 method . TypeParameters ,
189202 method . Parameters ,
190- method . Exceptions ) ;
203+ method . Exceptions ,
204+ method . ExtendedBridge ,
205+ method . ExtendedJniReturn ,
206+ method . ExtendedSynthetic ) ;
191207 }
192208
193209 static void SaveCommon ( this JavaMember m , XmlWriter writer , string elementName ,
@@ -196,7 +212,8 @@ static void SaveCommon (this JavaMember m, XmlWriter writer, string elementName,
196212 string value , string volat ,
197213 JavaTypeParameters typeParameters ,
198214 IEnumerable < JavaParameter > parameters ,
199- IEnumerable < JavaException > exceptions )
215+ IEnumerable < JavaException > exceptions ,
216+ bool ? extBridge , string jniReturn , bool ? extSynthetic )
200217 {
201218 // If any of the parameters contain reference to non-public type, it cannot be generated.
202219 if ( parameters != null && parameters . Any ( p => p . ResolvedType . ReferencedType != null && string . IsNullOrEmpty ( p . ResolvedType . ReferencedType . Visibility ) ) )
@@ -208,10 +225,15 @@ static void SaveCommon (this JavaMember m, XmlWriter writer, string elementName,
208225 writer . WriteAttributeString ( "deprecated" , m . Deprecated ) ;
209226 writer . WriteAttributeString ( "final" , XmlConvert . ToString ( m . Final ) ) ;
210227 writer . WriteAttributeString ( "name" , m . Name ) ;
228+ writer . WriteAttributeString ( "jni-signature" , m . ExtendedJniSignature ) ;
229+ if ( extBridge . HasValue )
230+ writer . WriteAttributeString ( "bridge" , extBridge . Value ? "true" : "false" ) ;
211231 if ( native != null )
212232 writer . WriteAttributeString ( "native" , native ) ;
213233 if ( ret != null )
214234 writer . WriteAttributeString ( "return" , ret ) ;
235+ if ( jniReturn != null )
236+ writer . WriteAttributeString ( "jni-return" , jniReturn ) ;
215237 writer . WriteAttributeString ( "static" , XmlConvert . ToString ( m . Static ) ) ;
216238 if ( sync != null )
217239 writer . WriteAttributeString ( "synchronized" , sync ) ;
@@ -223,6 +245,8 @@ static void SaveCommon (this JavaMember m, XmlWriter writer, string elementName,
223245 writer . WriteAttributeString ( "type-generic-aware" , typeGeneric ) ;
224246 if ( value != null )
225247 writer . WriteAttributeString ( "value" , value ) ;
248+ if ( extSynthetic . HasValue )
249+ writer . WriteAttributeString ( "synthetic" , extSynthetic . Value ? "true" : "false" ) ;
226250 writer . WriteAttributeString ( "visibility" , m . Visibility ) ;
227251 if ( volat != null )
228252 writer . WriteAttributeString ( "volatile" , volat ) ;
@@ -235,6 +259,7 @@ static void SaveCommon (this JavaMember m, XmlWriter writer, string elementName,
235259 writer . WriteStartElement ( "parameter" ) ;
236260 writer . WriteAttributeString ( "name" , p . Name ) ;
237261 writer . WriteAttributeString ( "type" , p . GetVisibleTypeName ( ) ) ;
262+ writer . WriteAttributeString ( "jni-type" , p . JniType ) ;
238263 writer . WriteString ( "\n " ) ;
239264 writer . WriteFullEndElement ( ) ;
240265 }
@@ -245,6 +270,7 @@ static void SaveCommon (this JavaMember m, XmlWriter writer, string elementName,
245270 writer . WriteStartElement ( "exception" ) ;
246271 writer . WriteAttributeString ( "name" , e . Name . Substring ( e . Name . LastIndexOf ( '/' ) + 1 ) . Replace ( '$' , '.' ) ) ;
247272 writer . WriteAttributeString ( "type" , e . Type ) ;
273+ writer . WriteAttributeString ( "type-generic-aware" , e . TypeGenericAware ) ;
248274 writer . WriteString ( "\n " ) ;
249275 writer . WriteFullEndElement ( ) ;
250276 }
0 commit comments