From 3001c4cd556f9e272dbae32fabd3230534e67f3c Mon Sep 17 00:00:00 2001 From: Kernell Date: Tue, 1 Dec 2015 00:04:40 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=20=D0=BF=D0=BE=D0=B8=D1=81=D0=BA=20=D0=B8=20=D0=BF=D0=BE?= =?UTF-8?q?=D0=BB=D1=83=D1=87=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BC=D0=B5=D1=82?= =?UTF-8?q?=D0=BE=D0=B4=D0=B0=20=D0=BF=D0=BE=20=D0=B8=D0=BC=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=20=D0=B8=D0=B7=20=D0=BA=D1=8D=D1=88=D0=B0=20=D0=BA=D0=BB?= =?UTF-8?q?=D0=B0=D1=81=D1=81=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mta-mono/src/CMonoClass.cpp | 34 ++++++++++++++++++++++++++-------- mta-mono/src/CMonoClass.h | 17 +++++++++-------- 2 files changed, 35 insertions(+), 16 deletions(-) diff --git a/mta-mono/src/CMonoClass.cpp b/mta-mono/src/CMonoClass.cpp index 59115b8..2968013 100644 --- a/mta-mono/src/CMonoClass.cpp +++ b/mta-mono/src/CMonoClass.cpp @@ -153,14 +153,14 @@ const char* CMonoClass::GetNameSpace( void ) return mono_class_get_namespace( this->m_pClass ); } -MonoMethod* CMonoClass::GetMethod( const char* szMethodName, int iParamCount ) +MonoMethod* CMonoClass::GetMethodFromName( string strMethodName, int iParamCount ) { - return mono_class_get_method_from_name( this->m_pClass, szMethodName, iParamCount ); + return mono_class_get_method_from_name( this->m_pClass, strMethodName.c_str(), iParamCount ); } -MonoMethod* CMonoClass::GetMethod( const char* szMethodName ) +MonoMethod* CMonoClass::GetMethod( string strMethodName ) { - MonoMethodDesc* pMonoMethodDesc = mono_method_desc_new( szMethodName, false ); + MonoMethodDesc* pMonoMethodDesc = mono_method_desc_new( strMethodName.c_str(), false ); if( pMonoMethodDesc ) { @@ -174,12 +174,30 @@ MonoMethod* CMonoClass::GetMethod( const char* szMethodName ) return nullptr; } -MonoEvent* CMonoClass::GetEvent( const char* szEventName ) +MonoMethod* CMonoClass::GetMethod( string strMethodName, uint uiIndex ) { - return this->m_Events.count( szEventName ) > 0 ? this->m_Events[ szEventName ] : nullptr; + if( this->m_Methods[ strMethodName ].size() > 0 ) + { + uint i = 0; + + for( auto ptr : this->m_Methods[ strMethodName ] ) + { + if( i++ == uiIndex ) + { + return ptr; + } + } + } + + return nullptr; } -MonoClassField* CMonoClass::GetField( const char* szFieldName ) +MonoEvent* CMonoClass::GetEvent( string strEventName ) { - return this->m_Fields.count( szFieldName ) > 0 ? this->m_Fields[ szFieldName ] : nullptr; + return this->m_Events[ strEventName ]; +} + +MonoClassField* CMonoClass::GetField( string strFieldName ) +{ + return this->m_Fields[ strFieldName ]; } \ No newline at end of file diff --git a/mta-mono/src/CMonoClass.h b/mta-mono/src/CMonoClass.h index 6b89fda..8cea3b2 100644 --- a/mta-mono/src/CMonoClass.h +++ b/mta-mono/src/CMonoClass.h @@ -17,10 +17,10 @@ class CMonoClass; #include "CMonoDomain.h" -typedef map< const char*, list< MonoMethod* > > MonoMethodMap; -typedef map< const char*, list< MonoProperty* > > MonoPropertyMap; -typedef map< const char*, MonoEvent* > MonoEventMap; -typedef map< const char*, MonoClassField* > MonoClassFieldMap; +typedef map< string, list< MonoMethod* > > MonoMethodMap; +typedef map< string, list< MonoProperty* > > MonoPropertyMap; +typedef map< string, MonoEvent* > MonoEventMap; +typedef map< string, MonoClassField* > MonoClassFieldMap; class CMonoClass { @@ -47,11 +47,12 @@ public: const char* GetName ( void ); const char* GetNameSpace ( void ); - MonoMethod* GetMethod ( const char* szMethodName, int iParamCount ); - MonoMethod* GetMethod ( const char* szMethodName ); + MonoMethod* GetMethodFromName ( string strMethodName, int iParamCount ); + MonoMethod* GetMethod ( string strMethodName ); + MonoMethod* GetMethod ( string strMethodName, uint uiIndex ); - MonoEvent* GetEvent ( const char* szEventName ); - MonoClassField* GetField ( const char* szFieldName ); + MonoEvent* GetEvent ( string strEventName ); + MonoClassField* GetField ( string strFieldName ); MonoClass* GetMonoPtr ( void ) { return this->m_pClass; } CMonoDomain* GetDomain ( void ) { return this->m_pDomain; }