Commit 65930b33 authored by ussrhero's avatar ussrhero

added TypeInfo::getMethodName

parent c1cd0e4f
......@@ -93,6 +93,7 @@ public:
virtual TypeInfoPtr getMethod( const std::wstring &name, const std::wstring& prototype = L"") = 0;
virtual TypeInfoPtr getMethod( const std::wstring &name, TypeInfoPtr prototype) = 0;
virtual TypeInfoPtr getMethod( size_t index ) = 0;
virtual std::wstring getMethodName(size_t index) = 0;
virtual size_t getMethodsCount() = 0;
virtual TypeInfoPtr getBaseClass( const std::wstring& className) = 0;
......
......@@ -183,6 +183,10 @@ protected:
NOT_IMPLEMENTED();
}
virtual std::wstring getMethodName(size_t index) {
NOT_IMPLEMENTED();
}
virtual size_t getMethodsCount() {
NOT_IMPLEMENTED();
}
......
......@@ -1167,6 +1167,21 @@ TypeInfoPtr TypeInfoUdt::getMethod(size_t index)
///////////////////////////////////////////////////////////////////////////////
std::wstring TypeInfoUdt::getMethodName(size_t index)
{
SymbolPtrList methods = m_symbol->findChildren(SymTagFunction);
if (index >= methods.size())
throw IndexException(index);
SymbolPtrList::iterator it = methods.begin();
std::advance(it, index);
return (*it)->getName();
}
///////////////////////////////////////////////////////////////////////////////
size_t TypeInfoUdt::getMethodsCount()
{
SymbolPtrList methods = m_symbol->findChildren(SymTagFunction);
......
......@@ -190,6 +190,10 @@ protected:
throw TypeException( getName(), L"type has no methods" );
}
virtual std::wstring getMethodName(size_t index) {
throw TypeException(getName(), L"type has no methods");
}
virtual size_t getMethodsCount() {
throw TypeException( getName(), L"type has no methods" );
}
......@@ -424,6 +428,7 @@ protected:
virtual TypeInfoPtr getMethod( const std::wstring &name, const std::wstring& prototype=L"");
virtual TypeInfoPtr getMethod( size_t index );
virtual size_t getMethodsCount();
virtual std::wstring getMethodName(size_t index);
virtual TypeInfoPtr getBaseClass( const std::wstring& className);
virtual TypeInfoPtr getBaseClass( size_t index );
......
......@@ -548,6 +548,18 @@ TEST_F(TypeInfoTest, GetMethod)
EXPECT_THROW( g_classChild->getElement(L"NotExistMethod"), TypeException );
}
TEST_F(TypeInfoTest, GetMethodName)
{
TypeInfoPtr typeClassChild;
ASSERT_NO_THROW(typeClassChild = loadType(L"g_classChild"));
EXPECT_EQ(L"virtMethod3", typeClassChild->getMethodName(3));
EXPECT_EQ(L"classChild", typeClassChild->getMethodName(10));
EXPECT_THROW(typeClassChild->getMethodName(333), IndexException);
}
TEST_F(TypeInfoTest, GetOverloadedMethod)
{
TypeInfoPtr g_classChild;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment