[ctypes-users] member function descriptor
Brought to you by:
theller
From: Roman Y. <rom...@gm...> - 2009-01-25 13:49:28
|
Hello Thomas. I am working on new "XYZDll" class and found next definition of member function type: class CppMethodType(_CFuncPtr): _argtypes_ = argtypes _restype_ = restype _flags_ = _FUNCFLAG_THISCALL The definition is not complete and should be extended. The following things are used to define C++ member function type: * class type * return type * argument types * "constness" For example: struct X{ int do_smth( bool ) const; int do_smth_else( bool ); }; The type of do_smth is the following: int (X::*)( bool ) const; int (X::*)( bool ); or using typedef typedef int (X::*do_smth_type)( bool ) const; typedef int (X::*do_smth_else_type)( bool ); If function is static, than its type is "same" as free function type: For: int do_smth( bool ); the type is: typedef int (*do_smth_free_fun_type)( bool ); A real (none static) member function, allowed to have "virtual" keyword. Other attribute, which may be [not] important is exception specification. "Covariant returns"( http://msdn.microsoft.com/en-us/magazine/cc301742.aspx ) - is another issue, related to virtual table construction. I know, we don't discuss inheritance right now, but I guess you need to see the C++ complexity and future development directions. -- Roman Yakovenko C++ Python language binding http://www.language-binding.net/ |