diff --git a/modules/modpython/codegen.pl b/modules/modpython/codegen.pl index 59c93207..f4f19de6 100644 --- a/modules/modpython/codegen.pl +++ b/modules/modpython/codegen.pl @@ -261,7 +261,7 @@ while (<$in>) { when (/vector\s*<\s*.*\*\s*>/) { say $out "PyList_New(0);"; } - when (/CString/) { + when (/(?:^|\s)CString/) { # not SCString if ($a->{base} eq 'CString' && $a->{mod} eq '&') { say $out "CPyRetString::wrap($a->{var});"; } else { diff --git a/modules/modpython/functions.in b/modules/modpython/functions.in index 2621ee67..43a5e131 100644 --- a/modules/modpython/functions.in +++ b/modules/modpython/functions.in @@ -72,3 +72,4 @@ EModRet OnModuleLoading(const CString& sModName, const CString& sArgs, CModInfo: EModRet OnModuleUnloading(CModule* pModule, bool& bSuccess, CString& sRetMsg) EModRet OnGetModInfo(CModInfo& ModInfo, const CString& sModule, bool& bSuccess, CString& sRetMsg) void OnGetAvailableMods(std::set& ssMods, CModInfo::EModuleType eType) +void OnClientCapLs(CClient* pClient, SCString& ssCaps) diff --git a/modules/modpython/modpython.i b/modules/modpython/modpython.i index 93975343..73e83996 100644 --- a/modules/modpython/modpython.i +++ b/modules/modpython/modpython.i @@ -65,6 +65,8 @@ using std::allocator; %template(VChannels) std::vector; %template(MNicks) std::map; %template(SModInfo) std::set; +%template(SCString) std::set; +typedef std::set SCString; %typemap(in) CString& { String* p; diff --git a/modules/modpython/module.h b/modules/modpython/module.h index bec48528..2afc3633 100644 --- a/modules/modpython/module.h +++ b/modules/modpython/module.h @@ -123,6 +123,7 @@ public: virtual EModRet OnGetModInfo(CModInfo& ModInfo, const CString& sModule, bool& bSuccess, CString& sRetMsg); virtual void OnGetAvailableMods(std::set& ssMods, CModInfo::EModuleType eType); + virtual void OnClientCapLs(CClient* pClient, SCString& ssCaps); }; static inline CPyModule* AsPyModule(CModule* p) {