@@ -102,6 +102,7 @@ private static void GenerateClassCode( IndentedTextWriter writer, Class c )
102102 var method = c . Methods [ i ] ;
103103 var returnType = Utils . GetManagedType ( method . ReturnType ) ;
104104 var name = method . Name ;
105+ var hash = method . Hash ;
105106
106107 var returnsPointer = Utils . IsPointer ( method . ReturnType ) && ! method . IsConstructor && ! method . IsDestructor ;
107108
@@ -129,7 +130,7 @@ private static void GenerateClassCode( IndentedTextWriter writer, Class c )
129130 // any parameters. The return type is the last type argument passed to
130131 // the delegate.
131132 //
132- decls [ i ] = $ "private static { delegateSignature } _{ name } = ({ delegateSignature } )Mocha.Common.Global.UnmanagedArgs.__{ c . Name } _{ name } MethodPtr ;";
133+ decls [ i ] = $ "private static { delegateSignature } _{ hash } = ({ delegateSignature } )Mocha.Common.Global.UnmanagedArgs.__{ c . Name } _{ hash } ;";
133134 }
134135
135136 //
@@ -148,17 +149,16 @@ private static void GenerateClassCode( IndentedTextWriter writer, Class c )
148149 writer . WriteLine ( ) ;
149150
150151 // Ctor
151- if ( c . Methods . Any ( x => x . IsConstructor ) )
152+ foreach ( var ctor in c . Methods . Where ( x => x . IsConstructor ) )
152153 {
153- var ctor = c . Methods . First ( x => x . IsConstructor ) ;
154154 var managedCtorArgs = string . Join ( ", " , ctor . Parameters . Select ( x => $ "{ Utils . GetManagedType ( x . Type ) } { x . Name } " ) ) ;
155155
156156 writer . WriteLine ( $ "public { c . Name } ( { managedCtorArgs } )" ) ;
157157 writer . WriteLine ( "{" ) ;
158158 writer . Indent ++ ;
159159
160160 var ctorCallArgs = string . Join ( ", " , ctor . Parameters . Select ( x => x . Name ) ) ;
161- writer . WriteLine ( $ "this.NativePtr = this.Ctor ( { ctorCallArgs } );" ) ;
161+ writer . WriteLine ( $ "this.NativePtr = this.{ ctor . Name } ( { ctorCallArgs } );" ) ;
162162
163163 writer . Indent -- ;
164164 writer . WriteLine ( "}" ) ;
@@ -175,6 +175,7 @@ private static void GenerateClassCode( IndentedTextWriter writer, Class c )
175175 // Call parameters as comma-separated string
176176 var managedCallParams = string . Join ( ", " , method . Parameters . Select ( x => $ "{ Utils . GetManagedType ( x . Type ) } { x . Name } " ) ) ;
177177 var name = method . Name ;
178+ var hash = method . Hash ;
178179
179180 // We return a pointer to the created object if it's a ctor/dtor, but otherwise we'll do auto-conversions to our managed types
180181 var returnType = ( method . IsConstructor || method . IsDestructor ) ? "IntPtr" : Utils . GetManagedType ( method . ReturnType ) ;
@@ -188,12 +189,12 @@ private static void GenerateClassCode( IndentedTextWriter writer, Class c )
188189 accessLevel += " static" ;
189190
190191 // Write function signature
191- writer . WriteLine ( $ "{ accessLevel } { returnType } { name } ( { managedCallParams } ) " ) ;
192+ writer . WriteLine ( $ "{ accessLevel } { returnType } { method . Name } ( { managedCallParams } ) " ) ;
192193 writer . WriteLine ( "{" ) ;
193194 writer . Indent ++ ;
194195
195196 // Spin up a MemoryContext instance
196- writer . WriteLine ( $ "using var ctx = new MemoryContext( \" { c . Name } .{ name } \" );" ) ;
197+ writer . WriteLine ( $ "using var ctx = new MemoryContext( \" { c . Name } .{ method . Name } \" );" ) ;
197198
198199 //
199200 // Gather function body
@@ -213,7 +214,7 @@ private static void GenerateClassCode( IndentedTextWriter writer, Class c )
213214 if ( returnsPointer )
214215 {
215216 // If we want to return a pointer:
216- writer . WriteLine ( $ "var ptr = _{ name } ( { functionCallArgs } );" ) ;
217+ writer . WriteLine ( $ "var ptr = _{ hash } ( { functionCallArgs } );" ) ;
217218 writer . WriteLine ( $ "var obj = FormatterServices.GetUninitializedObject( typeof( { returnType } ) ) as { returnType } ;" ) ;
218219 writer . WriteLine ( $ "obj.NativePtr = ptr;" ) ;
219220 writer . WriteLine ( $ "return obj;" ) ;
@@ -229,7 +230,7 @@ private static void GenerateClassCode( IndentedTextWriter writer, Class c )
229230 writer . Write ( "ctx.GetString( " ) ;
230231
231232 // Call the function..
232- writer . Write ( $ "_{ name } ( { functionCallArgs } )" ) ;
233+ writer . Write ( $ "_{ hash } ( { functionCallArgs } )" ) ;
233234
234235 // Finish string
235236 if ( returnType == "string" )
@@ -300,7 +301,7 @@ private static void GenerateNamespaceCode( IndentedTextWriter writer, Namespace
300301 // any parameters. The return type is the last type argument passed to
301302 // the delegate.
302303 //
303- decls [ i ] = $ "private static { delegateSignature } _{ name } = ({ delegateSignature } )Mocha.Common.Global.UnmanagedArgs.__{ ns . Name } _{ name } MethodPtr ;";
304+ decls [ i ] = $ "private static { delegateSignature } _{ name } = ({ delegateSignature } )Mocha.Common.Global.UnmanagedArgs.__{ ns . Name } _{ method . Hash } ;";
304305 }
305306
306307 //
0 commit comments