[C++-sig] Py++ Error for function operator *()
Haridev, Meghana
mharidev at qualcomm.com
Thu Jun 7 04:11:51 CEST 2007
Hi Roman,
We've been using Py++ 0.8.5 for a while now and it has been working
great. I'm in the process of upgrading to Py++ 0.9.0.
I currently have the following installed:
1. Gccxml (cvs-snapshot June 5, 2007): There is some problem with the
extraction of the tarball at
https://sourceforge.net/project/showfiles.php?group_id=118209&package_id
=146545, so I'm just using the latest from cvs. And I am positive that
this is not the source of the problem I'm running into.
2. Pygccxml (0.9.0)
3. Py++ (0.9.0)
-----------------------------------------------------------------------
When I moved from Py++ 0.8.5 to Py++ 0.9.0, Py++ fails for the following
function declaration during the module_builder's build_code_creator()
phase:
operator * (const ACE_Time_Value &tv, double d)
{
//.....
}
Here's the Error message:
self.moduleBuilder.build_code_creator(self.moduleName,
create_casting_constructor=flag_casting_constr)
File
"/opt/data/BTBLD_rhine_1080/thirdParty/lib/python2.4/site-packages/pyplu
splus/module_builder/builder.py", line 247, in build_code_creator
self.__code_creator = creator.create()
File
"/opt/or-tree/mharidev/thirdParty/lib/python2.4/site-packages/pyplusplus
/module_creator/creator.py", line 315, in create
self._adopt_free_operator( operator )
File
"/opt/or-tree/mharidev/thirdParty/lib/python2.4/site-packages/pyplusplus
/module_creator/creator.py", line 185, in _adopt_free_operator
assert isinstance( arg_type, declarations.declarated_t )
AssertionError
-----------------------------------------------------------------------
I narrowed down the Error to this part of the code (Py++ 0.9.0) in
function _adopt_free_operator() of
pyplusplus/module_creator/creator.py(line 178):
arg_type = declarations.base_type( operator.arguments[0].type )
if isinstance( arg_type, declarations.fundamental_t ):
arg_type = declarations.base_type( operator.arguments[1].type )
elif isinstance( arg_type, declarations.declarated_t ) and
arg_type.declaration.ignore:
arg_type = declarations.base_type( operator.arguments[1].type )
else:
pass
assert isinstance( arg_type, declarations.declarated_t )
-----------------------------------------------------------------------
Note that I don't have this problem with the earlier version (Py++
0.8.5) when the code looked like this and didn't have the extra check:
arg_type = declarations.base_type( operator.arguments[0].type )
if isinstance( arg_type, declarations.fundamental_t ):
arg_type = declarations.base_type( operator.arguments[1].type )
assert isinstance( arg_type, declarations.declarated_t )
-----------------------------------------------------------------------
Any ideas to how this can be fixed?
Thanks for your help,
-Meghana.
More information about the Cplusplus-sig
mailing list