[pygccxml-commit] SF.net SVN: pygccxml:[1586] pyplusplus_dev/unittests
Brought to you by:
mbaas,
roman_yakovenko
From: <rom...@us...> - 2009-01-18 07:15:29
|
Revision: 1586 http://pygccxml.svn.sourceforge.net/pygccxml/?rev=1586&view=rev Author: roman_yakovenko Date: 2009-01-18 07:15:23 +0000 (Sun, 18 Jan 2009) Log Message: ----------- adding ability to expose function with variable number of arguments Modified Paths: -------------- pygccxml_dev/pygccxml/declarations/type_visitor.py pyplusplus_dev/pyplusplus/code_creators/ctypes_formatter.py pyplusplus_dev/pyplusplus/code_creators/function_definition.py pyplusplus_dev/unittests/ctypes_pof_tester.py pyplusplus_dev/unittests/sconstruct Added Paths: ----------- pyplusplus_dev/unittests/data/ctypes/varargs/ pyplusplus_dev/unittests/data/ctypes/varargs/sconscript pyplusplus_dev/unittests/data/ctypes/varargs/varargs.cpp pyplusplus_dev/unittests/data/ctypes/varargs/varargs.h Modified: pygccxml_dev/pygccxml/declarations/type_visitor.py =================================================================== --- pygccxml_dev/pygccxml/declarations/type_visitor.py 2009-01-18 06:14:01 UTC (rev 1585) +++ pygccxml_dev/pygccxml/declarations/type_visitor.py 2009-01-18 07:15:23 UTC (rev 1586) @@ -10,7 +10,7 @@ class type_visitor_t(object): """ types visitor interface - + All functions within this class should be redefined in derived classes. """ def __init__(self): @@ -18,55 +18,55 @@ def visit_void( self ): raise NotImplementedError() - + def visit_char( self ): raise NotImplementedError() - + def visit_unsigned_char( self ): raise NotImplementedError() def visit_signed_char( self ): raise NotImplementedError() - + def visit_wchar( self ): raise NotImplementedError() - + def visit_short_int( self ): raise NotImplementedError() - + def visit_short_unsigned_int( self ): raise NotImplementedError() - + def visit_bool( self ): raise NotImplementedError() - + def visit_int( self ): raise NotImplementedError() - + def visit_unsigned_int( self ): raise NotImplementedError() - + def visit_long_int( self ): raise NotImplementedError() - + def visit_long_unsigned_int( self ): raise NotImplementedError() - + def visit_long_long_int( self ): raise NotImplementedError() - + def visit_long_long_unsigned_int( self ): raise NotImplementedError() - + def visit_float( self ): raise NotImplementedError() - + def visit_double( self ): raise NotImplementedError() - + def visit_long_double( self ): raise NotImplementedError() - + def visit_complex_long_double(self): raise NotImplementedError() @@ -75,58 +75,60 @@ def visit_complex_float(self): raise NotImplementedError() - + def visit_jbyte(self): raise NotImplementedError() - + def visit_jshort(self): raise NotImplementedError() - + def visit_jint(self): raise NotImplementedError() - + def visit_jlong(self): raise NotImplementedError() - + def visit_jfloat(self): raise NotImplementedError() - + def visit_jdouble(self): raise NotImplementedError() - + def visit_jchar(self): raise NotImplementedError() - + def visit_jboolean(self): raise NotImplementedError() - + def visit_volatile( self ): raise NotImplementedError() - + def visit_const( self ): raise NotImplementedError() - + def visit_pointer( self ): raise NotImplementedError() - + def visit_reference( self ): raise NotImplementedError() - + def visit_array( self ): raise NotImplementedError() - + def visit_free_function_type( self ): raise NotImplementedError() - + def visit_member_function_type( self ): raise NotImplementedError() - + def visit_member_variable_type( self ): raise NotImplementedError() - + def visit_declarated( self ): raise NotImplementedError() def visit_restrict( self ): raise NotImplementedError() - \ No newline at end of file + + def visit_ellipsis( self ): + raise NotImplementedError() Modified: pyplusplus_dev/pyplusplus/code_creators/ctypes_formatter.py =================================================================== --- pyplusplus_dev/pyplusplus/code_creators/ctypes_formatter.py 2009-01-18 06:14:01 UTC (rev 1585) +++ pyplusplus_dev/pyplusplus/code_creators/ctypes_formatter.py 2009-01-18 07:15:23 UTC (rev 1586) @@ -144,6 +144,9 @@ base_visitor = type_converter_t( self.user_type.base, self.decl_formatter ) return declarations.apply_visitor( base_visitor, base_visitor.user_type ) + def visit_ellipsis( self ): + return '' + def as_ctype( type_, decl_formatter=algorithm.complete_py_name ): v = type_converter_t( type_, decl_formatter ) return declarations.apply_visitor( v, type_ ) Modified: pyplusplus_dev/pyplusplus/code_creators/function_definition.py =================================================================== --- pyplusplus_dev/pyplusplus/code_creators/function_definition.py 2009-01-18 06:14:01 UTC (rev 1585) +++ pyplusplus_dev/pyplusplus/code_creators/function_definition.py 2009-01-18 07:15:23 UTC (rev 1586) @@ -61,6 +61,8 @@ args_str = ' ' + args[0] + ' ' else: args_str = ' ' + arg_separator.join( args ) + ' ' + if args_str.endswith( ' ' ): + args_str = args_str[:-1] if group_in_list: return '[%s]' % args_str else: Modified: pyplusplus_dev/unittests/ctypes_pof_tester.py =================================================================== --- pyplusplus_dev/unittests/ctypes_pof_tester.py 2009-01-18 06:14:01 UTC (rev 1585) +++ pyplusplus_dev/unittests/ctypes_pof_tester.py 2009-01-18 07:15:23 UTC (rev 1586) @@ -184,23 +184,35 @@ self.module_ref.j.value = 78 self.failUnless( self.module_ref.get_value_j() == 78 ) - + self.module_ref.data.i = 987 self.failUnless( self.module_ref.get_value_data() == 987 ) - + self.module_ref.data_ptr.contents.i = 34 self.failUnless( self.module_ref.get_value_data_p() == 34 ) + +class varargs_tester_t( ctypes_base_tester_t ): + def __init__( self, *args, **keywd ): + ctypes_base_tester_t.__init__( self, 'varargs', *args, **keywd ) + + def customize( self, mb ): + pass + + def test(self): + self.failUnless( 21 == self.module_ref.sum_ints( 3, 5,7,9) ) + def create_suite(): suite = unittest.TestSuite() - if 'win' in sys.platform: - suite.addTest( unittest.makeSuite(pof_tester_t)) - suite.addTest( unittest.makeSuite(issues_tester_t)) + #~ if 'win' in sys.platform: + #~ suite.addTest( unittest.makeSuite(pof_tester_t)) + #~ suite.addTest( unittest.makeSuite(issues_tester_t)) suite.addTest( unittest.makeSuite(enums_tester_t)) suite.addTest( unittest.makeSuite(opaque_tester_t)) suite.addTest( unittest.makeSuite(include_algorithm_tester_t)) suite.addTest( unittest.makeSuite(anonymous_tester_t)) suite.addTest( unittest.makeSuite(variables_tester_t)) + suite.addTest( unittest.makeSuite(varargs_tester_t)) return suite def run_suite(): Added: pyplusplus_dev/unittests/data/ctypes/varargs/sconscript =================================================================== --- pyplusplus_dev/unittests/data/ctypes/varargs/sconscript (rev 0) +++ pyplusplus_dev/unittests/data/ctypes/varargs/sconscript 2009-01-18 07:15:23 UTC (rev 1586) @@ -0,0 +1,7 @@ +Import('*') + +target_name = 'varargs' +shlib = env.SharedLibrary( target=target_name + , source=[ target_name + '.cpp' ] + , CPPPATH=['#data'] ) +env.Alias( target_name, shlib ) Added: pyplusplus_dev/unittests/data/ctypes/varargs/varargs.cpp =================================================================== --- pyplusplus_dev/unittests/data/ctypes/varargs/varargs.cpp (rev 0) +++ pyplusplus_dev/unittests/data/ctypes/varargs/varargs.cpp 2009-01-18 07:15:23 UTC (rev 1586) @@ -0,0 +1,15 @@ +#include "varargs.h" +#include <stdio.h> +#include <stdarg.h> + +EXPORT_SYMBOL unsigned long sum_ints( int count, ... ){ + va_list vl; + unsigned long result = 0; + va_start( vl, count ); + // Step through the list. + for( int i = 0; i < count; ++i ){ + result += va_arg( vl, int ); + } + va_end( vl ); + return result; +} Added: pyplusplus_dev/unittests/data/ctypes/varargs/varargs.h =================================================================== --- pyplusplus_dev/unittests/data/ctypes/varargs/varargs.h (rev 0) +++ pyplusplus_dev/unittests/data/ctypes/varargs/varargs.h 2009-01-18 07:15:23 UTC (rev 1586) @@ -0,0 +1,3 @@ +#include "libconfig.h" + +EXPORT_SYMBOL unsigned long sum_ints( int count, ... ); Modified: pyplusplus_dev/unittests/sconstruct =================================================================== --- pyplusplus_dev/unittests/sconstruct 2009-01-18 06:14:01 UTC (rev 1585) +++ pyplusplus_dev/unittests/sconstruct 2009-01-18 07:15:23 UTC (rev 1586) @@ -31,7 +31,8 @@ , 'opaque' , 'include_algorithm' , 'anonymous' - , 'variables' ] + , 'variables' + , 'varargs'] for s in scripts: SConscript( 'data/ctypes/%s/sconscript' % s This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |