python: Allow iterating over CModules

Closes #137
This commit is contained in:
Kyle Fuller
2012-02-28 18:05:49 +00:00
parent f4c2f911ae
commit 9d7c0d050b
2 changed files with 37 additions and 0 deletions

View File

@@ -234,6 +234,29 @@ public:
}
};
class CModulesIter {
public:
CModulesIter(CModules *pModules) {
m_pModules = pModules;
m_it = pModules->begin();
}
void plusplus() {
++m_it;
}
const CModule* get() const {
return *m_it;
}
bool is_end() const {
return m_pModules->end() == m_it;
}
CModules *m_pModules;
CModules::const_iterator m_it;
};
#if HAVE_VISIBILITY
#pragma GCC visibility pop
#endif

View File

@@ -647,3 +647,17 @@ def CreateWebSubPage(name, title='', params=dict(), admin=False):
CUser.GetNetworks = CUser.GetNetworks_
CIRCNetwork.GetChans = CIRCNetwork.GetChans_
CChan.GetNicks = CChan.GetNicks_
class ModulesIter(collections.Iterator):
def __init__(self, cmod):
self._cmod = cmod
def __next__(self):
if self._cmod.is_end():
raise StopIteration
module = self._cmod.get()
self._cmod.plusplus()
return module
CModules.__iter__ = lambda cmod: ModulesIter(CModulesIter(cmod))