@@ -57,14 +57,15 @@ bool TryEmit (TabbedWriter<StringWriter> classBlock, in Binding binding)
5757 return true ;
5858 }
5959
60- void EmitExtensionMethods ( TabbedWriter < StringWriter > classBlock , in Binding binding )
60+ void EmitExtensionMethods ( TabbedWriter < StringWriter > classBlock , string symbolName , in Binding binding )
6161 {
6262 if ( binding . EnumMembers . Length == 0 )
6363 return ;
6464
6565 // smart enum require 4 diff methods to be able to retrieve the values
6666
6767 // Get constant
68+ classBlock . WriteDocumentation ( Documentation . SmartEnum . GetConstant ( ) ) ;
6869 using ( var getConstantBlock = classBlock . CreateBlock ( $ "public static NSString? GetConstant (this { binding . Name } self)", true ) ) {
6970 getConstantBlock . WriteLine ( "IntPtr ptr = IntPtr.Zero;" ) ;
7071 using ( var switchBlock = getConstantBlock . CreateBlock ( "switch ((int) self)" , true ) ) {
@@ -84,6 +85,7 @@ void EmitExtensionMethods (TabbedWriter<StringWriter> classBlock, in Binding bin
8485
8586 classBlock . WriteLine ( ) ;
8687 // Get value
88+ classBlock . WriteDocumentation ( Documentation . SmartEnum . GetValueNSString ( symbolName ) ) ;
8789 using ( var getValueBlock = classBlock . CreateBlock ( $ "public static { binding . Name } GetValue (NSString constant)", true ) ) {
8890 getValueBlock . WriteLine ( "if (constant is null)" ) ;
8991 getValueBlock . WriteLine ( "\t throw new ArgumentNullException (nameof (constant));" ) ;
@@ -101,6 +103,7 @@ void EmitExtensionMethods (TabbedWriter<StringWriter> classBlock, in Binding bin
101103 classBlock . WriteLine ( ) ;
102104
103105 // get value from a handle, this is a helper method used in the BindAs bindings.
106+ classBlock . WriteDocumentation ( Documentation . SmartEnum . GetValueHandle ( symbolName ) ) ;
104107 using ( var getValueFromHandle =
105108 classBlock . CreateBlock ( $ "public static { binding . Name } GetValue (NativeHandle handle)",
106109 true ) ) {
@@ -112,6 +115,7 @@ void EmitExtensionMethods (TabbedWriter<StringWriter> classBlock, in Binding bin
112115
113116 classBlock . WriteLine ( ) ;
114117 // To ConstantArray
118+ classBlock . WriteDocumentation ( Documentation . SmartEnum . ToConstantArray ( symbolName ) ) ;
115119 classBlock . WriteRaw (
116120@$ "internal static NSString?[]? ToConstantArray (this { binding . Name } []? values)
117121{{
@@ -127,6 +131,7 @@ void EmitExtensionMethods (TabbedWriter<StringWriter> classBlock, in Binding bin
127131 classBlock . WriteLine ( ) ;
128132 classBlock . WriteLine ( ) ;
129133 // ToEnumArray
134+ classBlock . WriteDocumentation ( Documentation . SmartEnum . ToEnumArray ( symbolName ) ) ;
130135 classBlock . WriteRaw (
131136@$ "internal static { binding . Name } []? ToEnumArray (this NSString[]? values)
132137{{
@@ -165,10 +170,13 @@ bool TryEmitSmartEnum (in BindingTypeData<SmartEnum> _, in BindingContext bindin
165170 bindingContext . Builder . WriteLine ( $ "namespace { string . Join ( "." , bindingContext . Changes . Namespace ) } ;") ;
166171 bindingContext . Builder . WriteLine ( ) ;
167172
173+ var symbolName = GetSymbolName ( bindingContext . Changes ) ;
174+ var extensionClassDeclaration =
175+ bindingContext . Changes . ToSmartEnumExtensionDeclaration ( symbolName ) ;
176+
177+ bindingContext . Builder . WriteDocumentation ( Documentation . SmartEnum . ClassDocumentation ( symbolName ) ) ;
168178 bindingContext . Builder . AppendMemberAvailability ( bindingContext . Changes . SymbolAvailability ) ;
169179 bindingContext . Builder . AppendGeneratedCodeAttribute ( ) ;
170- var extensionClassDeclaration =
171- bindingContext . Changes . ToSmartEnumExtensionDeclaration ( GetSymbolName ( bindingContext . Changes ) ) ;
172180 using ( var classBlock = bindingContext . Builder . CreateBlock ( extensionClassDeclaration . ToString ( ) , true ) ) {
173181 classBlock . WriteLine ( ) ;
174182 classBlock . WriteLine ( $ "static IntPtr[] values = new IntPtr [{ bindingContext . Changes . EnumMembers . Length } ];") ;
@@ -181,7 +189,7 @@ bool TryEmitSmartEnum (in BindingTypeData<SmartEnum> _, in BindingContext bindin
181189 classBlock . WriteLine ( ) ;
182190
183191 // emit the extension methods that will be used to get the values from the enum
184- EmitExtensionMethods ( classBlock , bindingContext . Changes ) ;
192+ EmitExtensionMethods ( classBlock , symbolName , bindingContext . Changes ) ;
185193 classBlock . WriteLine ( ) ;
186194 }
187195
0 commit comments