diff --git a/src/vasingletonmethods.hpp b/src/vasingletonmethods.hpp index 7726a09c742f68a0310d669b700778643901e2aa..ea8a406c908890d63e56bea134b585b065998ee0 100644 --- a/src/vasingletonmethods.hpp +++ b/src/vasingletonmethods.hpp @@ -96,7 +96,21 @@ static PyObject* va_reset(PyObject*, PyObject*) static PyObject* va_enumerate_modules(PyObject* pSelf, PyObject** ppArgs, Py_ssize_t nArgs, PyObject* pKeywordNames) { VAPY_REQUIRE_CONN_TRY; - VA_EXCEPT_NOT_IMPLEMENTED; + + std::vector< CVAModuleInfo > voModuleInfos; + g_pVANetClient->GetCoreInstance()->EnumerateModules(voModuleInfos); + + PyObject *pModuleList = PyList_New(voModuleInfos.size()); + + for (size_t i = 0; i < voModuleInfos.size(); i++) + { + CVAModuleInfo& oModule(voModuleInfos[i]); + PyObject* pModuleInfo = Py_BuildValue("{s:i,s:s,s:s}", "index", i, "name", oModule.sName, "description", oModule.sDesc); + PyList_SetItem(pModuleList, i, pModuleInfo); // steals reference + } + + return pModuleList; + VAPY_CATCH_RETURN; };