pygccxml-commit Mailing List for C++ Python language bindings (Page 12)
Brought to you by:
mbaas,
roman_yakovenko
You can subscribe to this list here.
2006 |
Jan
|
Feb
|
Mar
(190) |
Apr
(166) |
May
(170) |
Jun
(75) |
Jul
(105) |
Aug
(131) |
Sep
(99) |
Oct
(84) |
Nov
(67) |
Dec
(54) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2007 |
Jan
(66) |
Feb
(49) |
Mar
(25) |
Apr
(62) |
May
(21) |
Jun
(34) |
Jul
(9) |
Aug
(21) |
Sep
(5) |
Oct
|
Nov
(63) |
Dec
(34) |
2008 |
Jan
(10) |
Feb
(42) |
Mar
(26) |
Apr
(25) |
May
(6) |
Jun
(40) |
Jul
(18) |
Aug
(29) |
Sep
(6) |
Oct
(32) |
Nov
(14) |
Dec
(56) |
2009 |
Jan
(127) |
Feb
(52) |
Mar
(2) |
Apr
(10) |
May
(29) |
Jun
(3) |
Jul
|
Aug
(16) |
Sep
(4) |
Oct
(11) |
Nov
(8) |
Dec
(14) |
2010 |
Jan
(31) |
Feb
(1) |
Mar
(7) |
Apr
(9) |
May
(1) |
Jun
|
Jul
(2) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2011 |
Jan
|
Feb
(8) |
Mar
(4) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2014 |
Jan
|
Feb
|
Mar
(1) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <rom...@us...> - 2009-01-17 09:29:40
|
Revision: 1582 http://pygccxml.svn.sourceforge.net/pygccxml/?rev=1582&view=rev Author: roman_yakovenko Date: 2009-01-17 09:29:36 +0000 (Sat, 17 Jan 2009) Log Message: ----------- fixing small compilation bug Modified Paths: -------------- pyplusplus_dev/unittests/data/ctypes/opaque/opaque.h Property Changed: ---------------- pyplusplus_dev/unittests/data/ctypes/anonymous/ pyplusplus_dev/unittests/data/ctypes/enums/ pyplusplus_dev/unittests/data/ctypes/include_algorithm/ pyplusplus_dev/unittests/data/ctypes/issues/ pyplusplus_dev/unittests/data/ctypes/opaque/ pyplusplus_dev/unittests/temp/ Property changes on: pyplusplus_dev/unittests/data/ctypes/anonymous ___________________________________________________________________ Added: svn:ignore + binaries Property changes on: pyplusplus_dev/unittests/data/ctypes/enums ___________________________________________________________________ Added: svn:ignore + binaries Property changes on: pyplusplus_dev/unittests/data/ctypes/include_algorithm ___________________________________________________________________ Added: svn:ignore + binaries Property changes on: pyplusplus_dev/unittests/data/ctypes/issues ___________________________________________________________________ Added: svn:ignore + binaries Property changes on: pyplusplus_dev/unittests/data/ctypes/opaque ___________________________________________________________________ Added: svn:ignore + binaries Modified: pyplusplus_dev/unittests/data/ctypes/opaque/opaque.h =================================================================== --- pyplusplus_dev/unittests/data/ctypes/opaque/opaque.h 2009-01-15 21:27:30 UTC (rev 1581) +++ pyplusplus_dev/unittests/data/ctypes/opaque/opaque.h 2009-01-17 09:29:36 UTC (rev 1582) @@ -7,6 +7,6 @@ }; -user_data_t* EXPORT_SYMBOL create(); +EXPORT_SYMBOL user_data_t* create(); int EXPORT_SYMBOL read_user_data(user_data_t*); void EXPORT_SYMBOL destroy(user_data_t*); Property changes on: pyplusplus_dev/unittests/temp ___________________________________________________________________ Modified: svn:ignore - internal_classes.dll member_functions.dll member_variables.dll module_body.dll namespaces.dll noncopyable.dll operators.dll operators_bug.dll optional.dll optional_bug.dll pointer_as_arg.dll pointer_to_function_as_argument.dll private_assign.dll recursive.dll regression1.dll regression2.dll regression3.dll smart_pointers.dll special_operators.dll statics.dll temprorary_variable.dll unnamed_enums.dll user_text.dll abstract.cpp~ call_policies.cpp~ casting.cpp~ class_order2.cpp~ class_order3.cpp~ class_order4.cpp~ class_order.cpp~ classes.cpp~ enums.cpp~ factory.cpp~ finalizables.cpp~ free_functions.cpp~ free_operators.cpp~ global_variables.cpp~ index_operator.cpp~ internal_classes.cpp~ member_functions.cpp~ member_variables.cpp~ noncopyable.cpp~ operators_bug.cpp~ optional.cpp~ optional_bug.cpp~ pointer_as_arg.cpp~ pointer_to_function_as_argument.cpp~ private_assign.cpp~ recursive.cpp~ regression1.cpp~ regression2.cpp~ regression3.cpp~ smart_pointers.cpp~ special_operators.cpp~ statics.cpp~ temprorary_variable.cpp~ unnamed_enums.cpp~ user_text.cpp~ abstract.exp call_policies.exp casting.exp class_order2.exp class_order3.exp class_order4.exp class_order.exp classes.exp enums.exp factory.exp finalizables.exp free_function_ignore_bug.exp free_functions.exp free_operators.exp global_variables.exp index_operator.exp internal_classes.exp member_functions.exp member_variables.exp module_body.exp namespaces.exp noncopyable.exp operators.exp operators_bug.exp optional.exp optional_bug.exp pointer_as_arg.exp pointer_to_function_as_argument.exp private_assign.exp recursive.exp regression1.exp regression2.exp regression3.exp smart_pointers.exp special_operators.exp statics.exp temprorary_variable.exp unnamed_enums.exp user_text.exp abstract.lib call_policies.lib casting.lib class_order2.lib class_order3.lib class_order4.lib class_order.lib classes.lib enums.lib factory.lib finalizables.lib free_function_ignore_bug.lib free_functions.lib free_operators.lib global_variables.lib index_operator.lib internal_classes.lib member_functions.lib member_variables.lib module_body.lib namespaces.lib noncopyable.lib operators.lib operators_bug.lib optional.lib optional_bug.lib pointer_as_arg.lib pointer_to_function_as_argument.lib private_assign.lib recursive.lib regression1.lib regression2.lib regression3.lib smart_pointers.lib special_operators.lib statics.lib temprorary_variable.lib unnamed_enums.lib user_text.lib abstract.obj call_policies.obj casting.obj class_order2.obj class_order3.obj class_order4.obj class_order.obj classes.obj enums.obj factory.obj finalizables.obj free_function_ignore_bug.obj free_functions.obj free_operators.obj global_variables.obj index_operator.obj internal_classes.obj member_functions.obj member_variables.obj module_body.obj namespaces.obj noncopyable.obj operators.obj operators_bug.obj optional.obj optional_bug.obj pointer_as_arg.obj pointer_to_function_as_argument.obj private_assign.obj recursive.obj regression1.obj regression2.obj regression3.obj smart_pointers.obj special_operators.obj statics.obj temprorary_variable.obj unnamed_enums.obj user_text.obj abstract.scons call_policies.scons casting.scons class_order2.scons class_order3.scons class_order4.scons class_order.scons classes.scons enums.scons factory.scons finalizables.scons free_function_ignore_bug.scons free_functions.scons free_operators.scons global_variables.scons index_operator.scons internal_classes.scons member_functions.scons member_variables.scons module_body.scons namespaces.scons noncopyable.scons operators.scons operators_bug.scons optional.scons optional_bug.scons pointer_as_arg.scons pointer_to_function_as_argument.scons private_assign.scons recursive.scons regression1.scons regression2.scons regression3.scons smart_pointers.scons special_operators.scons statics.scons temprorary_variable.scons unnamed_enums.scons user_text.scons abstract.dll call_policies.dll casting.dll class_order2.dll class_order3.dll class_order4.dll class_order.dll classes.dll enums.dll factory.dll finalizables.dll free_function_ignore_bug.dll free_functions.dll free_operators.dll global_variables.dll index_operator.dll .sconsign.dblite __array_1.pypp.hpp classes.cpp enums.cpp free_functions.cpp module_body.cpp namespaces.cpp unnamed_enums.cpp abstract.cpp call_policies.cpp casting.cpp class_order.cpp class_order2.cpp class_order3.cpp class_order4.cpp factory.cpp finalizables.cpp free_function_ignore_bug.cpp free_operators.cpp global_variables.cpp index_operator.cpp internal_classes.cpp member_functions.cpp member_variables.cpp noncopyable.cpp operators.cpp operators_bug.cpp optional.cpp optional_bug.cpp pointer_as_arg.cpp pointer_to_function_as_argument.cpp private_assign.cpp protected.cpp recursive.cpp regression1.cpp regression2.cpp regression3.cpp smart_pointers.cpp special_operators.cpp statics.cpp temprorary_variable.cpp user_text.cpp protected.dll protected.exp protected.lib protected.obj protected.scons indexing_suites.cpp indexing_suites.cpp~ indexing_suites.dll indexing_suites.exp indexing_suites.lib indexing_suites.obj indexing_suites.scons *.pyd *.exp *.lib *.obj *.scons + internal_classes.dll member_functions.dll member_variables.dll module_body.dll namespaces.dll noncopyable.dll operators.dll operators_bug.dll optional.dll optional_bug.dll pointer_as_arg.dll pointer_to_function_as_argument.dll private_assign.dll recursive.dll regression1.dll regression2.dll regression3.dll smart_pointers.dll special_operators.dll statics.dll temprorary_variable.dll unnamed_enums.dll user_text.dll abstract.cpp~ call_policies.cpp~ casting.cpp~ class_order2.cpp~ class_order3.cpp~ class_order4.cpp~ class_order.cpp~ classes.cpp~ enums.cpp~ factory.cpp~ finalizables.cpp~ free_functions.cpp~ free_operators.cpp~ global_variables.cpp~ index_operator.cpp~ internal_classes.cpp~ member_functions.cpp~ member_variables.cpp~ noncopyable.cpp~ operators_bug.cpp~ optional.cpp~ optional_bug.cpp~ pointer_as_arg.cpp~ pointer_to_function_as_argument.cpp~ private_assign.cpp~ recursive.cpp~ regression1.cpp~ regression2.cpp~ regression3.cpp~ smart_pointers.cpp~ special_operators.cpp~ statics.cpp~ temprorary_variable.cpp~ unnamed_enums.cpp~ user_text.cpp~ abstract.exp call_policies.exp casting.exp class_order2.exp class_order3.exp class_order4.exp class_order.exp classes.exp enums.exp factory.exp finalizables.exp free_function_ignore_bug.exp free_functions.exp free_operators.exp global_variables.exp index_operator.exp internal_classes.exp member_functions.exp member_variables.exp module_body.exp namespaces.exp noncopyable.exp operators.exp operators_bug.exp optional.exp optional_bug.exp pointer_as_arg.exp pointer_to_function_as_argument.exp private_assign.exp recursive.exp regression1.exp regression2.exp regression3.exp smart_pointers.exp special_operators.exp statics.exp temprorary_variable.exp unnamed_enums.exp user_text.exp abstract.lib call_policies.lib casting.lib class_order2.lib class_order3.lib class_order4.lib class_order.lib classes.lib enums.lib factory.lib finalizables.lib free_function_ignore_bug.lib free_functions.lib free_operators.lib global_variables.lib index_operator.lib internal_classes.lib member_functions.lib member_variables.lib module_body.lib namespaces.lib noncopyable.lib operators.lib operators_bug.lib optional.lib optional_bug.lib pointer_as_arg.lib pointer_to_function_as_argument.lib private_assign.lib recursive.lib regression1.lib regression2.lib regression3.lib smart_pointers.lib special_operators.lib statics.lib temprorary_variable.lib unnamed_enums.lib user_text.lib abstract.obj call_policies.obj casting.obj class_order2.obj class_order3.obj class_order4.obj class_order.obj classes.obj enums.obj factory.obj finalizables.obj free_function_ignore_bug.obj free_functions.obj free_operators.obj global_variables.obj index_operator.obj internal_classes.obj member_functions.obj member_variables.obj module_body.obj namespaces.obj noncopyable.obj operators.obj operators_bug.obj optional.obj optional_bug.obj pointer_as_arg.obj pointer_to_function_as_argument.obj private_assign.obj recursive.obj regression1.obj regression2.obj regression3.obj smart_pointers.obj special_operators.obj statics.obj temprorary_variable.obj unnamed_enums.obj user_text.obj abstract.scons call_policies.scons casting.scons class_order2.scons class_order3.scons class_order4.scons class_order.scons classes.scons enums.scons factory.scons finalizables.scons free_function_ignore_bug.scons free_functions.scons free_operators.scons global_variables.scons index_operator.scons internal_classes.scons member_functions.scons member_variables.scons module_body.scons namespaces.scons noncopyable.scons operators.scons operators_bug.scons optional.scons optional_bug.scons pointer_as_arg.scons pointer_to_function_as_argument.scons private_assign.scons recursive.scons regression1.scons regression2.scons regression3.scons smart_pointers.scons special_operators.scons statics.scons temprorary_variable.scons unnamed_enums.scons user_text.scons abstract.dll call_policies.dll casting.dll class_order2.dll class_order3.dll class_order4.dll class_order.dll classes.dll enums.dll factory.dll finalizables.dll free_function_ignore_bug.dll free_functions.dll free_operators.dll global_variables.dll index_operator.dll .sconsign.dblite __array_1.pypp.hpp classes.cpp enums.cpp free_functions.cpp module_body.cpp namespaces.cpp unnamed_enums.cpp abstract.cpp call_policies.cpp casting.cpp class_order.cpp class_order2.cpp class_order3.cpp class_order4.cpp factory.cpp finalizables.cpp free_function_ignore_bug.cpp free_operators.cpp global_variables.cpp index_operator.cpp internal_classes.cpp member_functions.cpp member_variables.cpp noncopyable.cpp operators.cpp operators_bug.cpp optional.cpp optional_bug.cpp pointer_as_arg.cpp pointer_to_function_as_argument.cpp private_assign.cpp protected.cpp recursive.cpp regression1.cpp regression2.cpp regression3.cpp smart_pointers.cpp special_operators.cpp statics.cpp temprorary_variable.cpp user_text.cpp protected.dll protected.exp protected.lib protected.obj protected.scons indexing_suites.cpp indexing_suites.cpp~ indexing_suites.dll indexing_suites.exp indexing_suites.lib indexing_suites.obj indexing_suites.scons *.pyd *.exp *.lib *.obj *.scons to_be_exposed already_exposed This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rom...@us...> - 2009-01-15 21:27:35
|
Revision: 1581 http://pygccxml.svn.sourceforge.net/pygccxml/?rev=1581&view=rev Author: roman_yakovenko Date: 2009-01-15 21:27:30 +0000 (Thu, 15 Jan 2009) Log Message: ----------- implmenting better algorithm for ctypes builder Modified Paths: -------------- pygccxml_dev/pygccxml/parser/config.py pyplusplus_dev/examples/gmplib_dev/dev/generate_code.py pyplusplus_dev/examples/gmplib_dev/pygmplib/__init__.py pyplusplus_dev/pyplusplus/code_creators/library_reference.py pyplusplus_dev/pyplusplus/module_builder/ctypes_builder.py ui/web/config.py Added Paths: ----------- pyplusplus_dev/pyplusplus/module_builder/ctypes_decls_dependencies.py Modified: pygccxml_dev/pygccxml/parser/config.py =================================================================== --- pygccxml_dev/pygccxml/parser/config.py 2009-01-15 13:37:55 UTC (rev 1580) +++ pygccxml_dev/pygccxml/parser/config.py 2009-01-15 21:27:30 UTC (rev 1581) @@ -226,21 +226,21 @@ if isinstance( configuration, types.StringTypes ): from ConfigParser import SafeConfigParser parser = SafeConfigParser() - parser.readfp( file( configuration, 'r' ) ) + parser.read( configuration ) gccxml_cfg = gccxml_configuration_t() - if not parser.has_section( 'gccxml' ): - return gccxml_cfg values = defaults if not values: values = {} + + if parser.has_section( 'gccxml' ): + for name, value in parser.items( 'gccxml' ): + if value.strip(): + values[ name ] = value - for name, value in parser.items( 'gccxml' ): - if value.strip(): - values[ name ] = value - for name, value in values.iteritems(): - value = value.strip() + if isinstance( value, types.StringTypes ): + value = value.strip() if name == 'gccxml_path': gccxml_cfg.gccxml_path = value elif name == 'working_directory': Modified: pyplusplus_dev/examples/gmplib_dev/dev/generate_code.py =================================================================== --- pyplusplus_dev/examples/gmplib_dev/dev/generate_code.py 2009-01-15 13:37:55 UTC (rev 1580) +++ pyplusplus_dev/examples/gmplib_dev/dev/generate_code.py 2009-01-15 21:27:30 UTC (rev 1581) @@ -18,17 +18,15 @@ and isinstance( f.arguments[-1].type, declarations.ellipsis_t ) mb.calldefs( has_varargs ).exclude() -mb.classes( '' ).exclude() #gmp uses strange convention: every function name starts with __gmp and than, it #introduces define, which aliass __gmpy to gmpy for f in mb.calldefs( lambda x: x.name.startswith('__gmp') ): f.alias = f.name[2:] -#there is a bug in "include" algorithm - I need to wrote BFS +#those structs are private implementation of FILE mb.class_( '_IO_FILE' ).opaque = True -#another dependency bug - internal union is not included -mb.class_( '__gmp_randstate_struct' ).include() +mb.class_( '_IO_marker' ).opaque = True mb.build_code_creator( project_env.gmp.shared_library_file ) Modified: pyplusplus_dev/examples/gmplib_dev/pygmplib/__init__.py =================================================================== --- pyplusplus_dev/examples/gmplib_dev/pygmplib/__init__.py 2009-01-15 13:37:55 UTC (rev 1580) +++ pyplusplus_dev/examples/gmplib_dev/pygmplib/__init__.py 2009-01-15 21:27:30 UTC (rev 1581) @@ -4,9 +4,9 @@ import ctypes_utils -libgmp_dot_so_dot_3_dot_4lib = ctypes.CDLL( r"/usr/lib/libgmp.so.3.4.2" ) +libgmp_lib = ctypes.CDLL( r"/usr/lib/libgmp.so.3.4.2" ) -libgmp_dot_so_dot_3_dot_4lib.undecorated_names = {#mapping between decorated and undecorated names +libgmp_lib.undecorated_names = {#mapping between decorated and undecorated names "extern double __gmpf_get_d(mpf_srcptr arg0) [free function]" : "__gmpf_get_d", "extern int __gmpf_cmp_ui(mpf_srcptr arg0, long unsigned int arg1) [free function]" : "__gmpf_cmp_ui", "extern void __gmpz_mul_ui(mpz_ptr arg0, mpz_srcptr arg1, long unsigned int arg2) [free function]" : "__gmpz_mul_ui", @@ -627,6 +627,12 @@ def __init__( self, *args, **keywd ): raise RuntimeError( "Unable to create instance of opaque type." ) +class _IO_marker(ctypes.Structure): + """class _IO_marker""" + + def __init__( self, *args, **keywd ): + raise RuntimeError( "Unable to create instance of opaque type." ) + class __gmp_randstate_struct(ctypes.Structure): """class __gmp_randstate_struct""" @@ -672,877 +678,877 @@ ] gmpq_add_type = ctypes.CFUNCTYPE( None, ctypes.POINTER( __mpq_struct ), ctypes.POINTER( __mpq_struct ), ctypes.POINTER( __mpq_struct ) ) -gmpq_add = gmpq_add_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern void __gmpq_add(mpq_ptr arg0, mpq_srcptr arg1, mpq_srcptr arg2) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpq_add = gmpq_add_type( ( libgmp_lib.undecorated_names["extern void __gmpq_add(mpq_ptr arg0, mpq_srcptr arg1, mpq_srcptr arg2) [free function]"], libgmp_lib ) ) gmpq_canonicalize_type = ctypes.CFUNCTYPE( None, ctypes.POINTER( __mpq_struct ) ) -gmpq_canonicalize = gmpq_canonicalize_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern void __gmpq_canonicalize(mpq_ptr arg0) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpq_canonicalize = gmpq_canonicalize_type( ( libgmp_lib.undecorated_names["extern void __gmpq_canonicalize(mpq_ptr arg0) [free function]"], libgmp_lib ) ) gmpq_sub_type = ctypes.CFUNCTYPE( None, ctypes.POINTER( __mpq_struct ), ctypes.POINTER( __mpq_struct ), ctypes.POINTER( __mpq_struct ) ) -gmpq_sub = gmpq_sub_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern void __gmpq_sub(mpq_ptr arg0, mpq_srcptr arg1, mpq_srcptr arg2) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpq_sub = gmpq_sub_type( ( libgmp_lib.undecorated_names["extern void __gmpq_sub(mpq_ptr arg0, mpq_srcptr arg1, mpq_srcptr arg2) [free function]"], libgmp_lib ) ) gmpz_tdiv_q_ui_type = ctypes.CFUNCTYPE( ctypes.c_ulong, ctypes.POINTER( __mpz_struct ), ctypes.POINTER( __mpz_struct ), ctypes.c_ulong ) -gmpz_tdiv_q_ui = gmpz_tdiv_q_ui_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern long unsigned int __gmpz_tdiv_q_ui(mpz_ptr arg0, mpz_srcptr arg1, long unsigned int arg2) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpz_tdiv_q_ui = gmpz_tdiv_q_ui_type( ( libgmp_lib.undecorated_names["extern long unsigned int __gmpz_tdiv_q_ui(mpz_ptr arg0, mpz_srcptr arg1, long unsigned int arg2) [free function]"], libgmp_lib ) ) gmpn_scan0_type = ctypes.CFUNCTYPE( ctypes.c_ulong, ctypes.POINTER( ctypes.c_ulong ), ctypes.c_ulong ) -gmpn_scan0 = gmpn_scan0_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern long unsigned int __gmpn_scan0(mp_srcptr arg0, long unsigned int arg1) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpn_scan0 = gmpn_scan0_type( ( libgmp_lib.undecorated_names["extern long unsigned int __gmpn_scan0(mp_srcptr arg0, long unsigned int arg1) [free function]"], libgmp_lib ) ) gmpf_fits_sshort_p_type = ctypes.CFUNCTYPE( ctypes.c_int, ctypes.POINTER( __mpf_struct ) ) -gmpf_fits_sshort_p = gmpf_fits_sshort_p_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern int __gmpf_fits_sshort_p(mpf_srcptr arg0) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpf_fits_sshort_p = gmpf_fits_sshort_p_type( ( libgmp_lib.undecorated_names["extern int __gmpf_fits_sshort_p(mpf_srcptr arg0) [free function]"], libgmp_lib ) ) gmpz_init_set_d_type = ctypes.CFUNCTYPE( None, ctypes.POINTER( __mpz_struct ), ctypes.c_double ) -gmpz_init_set_d = gmpz_init_set_d_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern void __gmpz_init_set_d(mpz_ptr arg0, double arg1) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpz_init_set_d = gmpz_init_set_d_type( ( libgmp_lib.undecorated_names["extern void __gmpz_init_set_d(mpz_ptr arg0, double arg1) [free function]"], libgmp_lib ) ) gmpz_get_d_2exp_type = ctypes.CFUNCTYPE( ctypes.c_double, ctypes.POINTER( ctypes.c_long ), ctypes.POINTER( __mpz_struct ) ) -gmpz_get_d_2exp = gmpz_get_d_2exp_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern double __gmpz_get_d_2exp(long int * arg0, mpz_srcptr arg1) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpz_get_d_2exp = gmpz_get_d_2exp_type( ( libgmp_lib.undecorated_names["extern double __gmpz_get_d_2exp(long int * arg0, mpz_srcptr arg1) [free function]"], libgmp_lib ) ) gmpz_powm_ui_type = ctypes.CFUNCTYPE( None, ctypes.POINTER( __mpz_struct ), ctypes.POINTER( __mpz_struct ), ctypes.c_ulong, ctypes.POINTER( __mpz_struct ) ) -gmpz_powm_ui = gmpz_powm_ui_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern void __gmpz_powm_ui(mpz_ptr arg0, mpz_srcptr arg1, long unsigned int arg2, mpz_srcptr arg3) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpz_powm_ui = gmpz_powm_ui_type( ( libgmp_lib.undecorated_names["extern void __gmpz_powm_ui(mpz_ptr arg0, mpz_srcptr arg1, long unsigned int arg2, mpz_srcptr arg3) [free function]"], libgmp_lib ) ) gmpn_add_type = ctypes.CFUNCTYPE( ctypes.c_ulong, ctypes.POINTER( ctypes.c_ulong ), ctypes.POINTER( ctypes.c_ulong ), ctypes.c_long, ctypes.POINTER( ctypes.c_ulong ), ctypes.c_long ) -gmpn_add = gmpn_add_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["mp_limb_t __gmpn_add(mp_ptr __gmp_wp, mp_srcptr __gmp_xp, mp_size_t __gmp_xsize, mp_srcptr __gmp_yp, mp_size_t __gmp_ysize) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpn_add = gmpn_add_type( ( libgmp_lib.undecorated_names["mp_limb_t __gmpn_add(mp_ptr __gmp_wp, mp_srcptr __gmp_xp, mp_size_t __gmp_xsize, mp_srcptr __gmp_yp, mp_size_t __gmp_ysize) [free function]"], libgmp_lib ) ) gmpn_scan1_type = ctypes.CFUNCTYPE( ctypes.c_ulong, ctypes.POINTER( ctypes.c_ulong ), ctypes.c_ulong ) -gmpn_scan1 = gmpn_scan1_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern long unsigned int __gmpn_scan1(mp_srcptr arg0, long unsigned int arg1) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpn_scan1 = gmpn_scan1_type( ( libgmp_lib.undecorated_names["extern long unsigned int __gmpn_scan1(mp_srcptr arg0, long unsigned int arg1) [free function]"], libgmp_lib ) ) gmpn_divexact_by3c_type = ctypes.CFUNCTYPE( ctypes.c_ulong, ctypes.POINTER( ctypes.c_ulong ), ctypes.POINTER( ctypes.c_ulong ), ctypes.c_long, ctypes.c_ulong ) -gmpn_divexact_by3c = gmpn_divexact_by3c_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern mp_limb_t __gmpn_divexact_by3c(mp_ptr arg0, mp_srcptr arg1, mp_size_t arg2, mp_limb_t arg3) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpn_divexact_by3c = gmpn_divexact_by3c_type( ( libgmp_lib.undecorated_names["extern mp_limb_t __gmpn_divexact_by3c(mp_ptr arg0, mp_srcptr arg1, mp_size_t arg2, mp_limb_t arg3) [free function]"], libgmp_lib ) ) gmpz_ui_pow_ui_type = ctypes.CFUNCTYPE( None, ctypes.POINTER( __mpz_struct ), ctypes.c_ulong, ctypes.c_ulong ) -gmpz_ui_pow_ui = gmpz_ui_pow_ui_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern void __gmpz_ui_pow_ui(mpz_ptr arg0, long unsigned int arg1, long unsigned int arg2) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpz_ui_pow_ui = gmpz_ui_pow_ui_type( ( libgmp_lib.undecorated_names["extern void __gmpz_ui_pow_ui(mpz_ptr arg0, long unsigned int arg1, long unsigned int arg2) [free function]"], libgmp_lib ) ) gmpz_nextprime_type = ctypes.CFUNCTYPE( None, ctypes.POINTER( __mpz_struct ), ctypes.POINTER( __mpz_struct ) ) -gmpz_nextprime = gmpz_nextprime_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern void __gmpz_nextprime(mpz_ptr arg0, mpz_srcptr arg1) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpz_nextprime = gmpz_nextprime_type( ( libgmp_lib.undecorated_names["extern void __gmpz_nextprime(mpz_ptr arg0, mpz_srcptr arg1) [free function]"], libgmp_lib ) ) gmpz_size_type = ctypes.CFUNCTYPE( ctypes.c_uint, ctypes.POINTER( __mpz_struct ) ) -gmpz_size = gmpz_size_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["size_t __gmpz_size(mpz_srcptr __gmp_z) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpz_size = gmpz_size_type( ( libgmp_lib.undecorated_names["size_t __gmpz_size(mpz_srcptr __gmp_z) [free function]"], libgmp_lib ) ) gmpf_sqrt_type = ctypes.CFUNCTYPE( None, ctypes.POINTER( __mpf_struct ), ctypes.POINTER( __mpf_struct ) ) -gmpf_sqrt = gmpf_sqrt_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern void __gmpf_sqrt(mpf_ptr arg0, mpf_srcptr arg1) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpf_sqrt = gmpf_sqrt_type( ( libgmp_lib.undecorated_names["extern void __gmpf_sqrt(mpf_ptr arg0, mpf_srcptr arg1) [free function]"], libgmp_lib ) ) gmpz_cdiv_q_ui_type = ctypes.CFUNCTYPE( ctypes.c_ulong, ctypes.POINTER( __mpz_struct ), ctypes.POINTER( __mpz_struct ), ctypes.c_ulong ) -gmpz_cdiv_q_ui = gmpz_cdiv_q_ui_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern long unsigned int __gmpz_cdiv_q_ui(mpz_ptr arg0, mpz_srcptr arg1, long unsigned int arg2) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpz_cdiv_q_ui = gmpz_cdiv_q_ui_type( ( libgmp_lib.undecorated_names["extern long unsigned int __gmpz_cdiv_q_ui(mpz_ptr arg0, mpz_srcptr arg1, long unsigned int arg2) [free function]"], libgmp_lib ) ) gmpz_tdiv_r_ui_type = ctypes.CFUNCTYPE( ctypes.c_ulong, ctypes.POINTER( __mpz_struct ), ctypes.POINTER( __mpz_struct ), ctypes.c_ulong ) -gmpz_tdiv_r_ui = gmpz_tdiv_r_ui_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern long unsigned int __gmpz_tdiv_r_ui(mpz_ptr arg0, mpz_srcptr arg1, long unsigned int arg2) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpz_tdiv_r_ui = gmpz_tdiv_r_ui_type( ( libgmp_lib.undecorated_names["extern long unsigned int __gmpz_tdiv_r_ui(mpz_ptr arg0, mpz_srcptr arg1, long unsigned int arg2) [free function]"], libgmp_lib ) ) gmpz_init_set_ui_type = ctypes.CFUNCTYPE( None, ctypes.POINTER( __mpz_struct ), ctypes.c_ulong ) -gmpz_init_set_ui = gmpz_init_set_ui_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern void __gmpz_init_set_ui(mpz_ptr arg0, long unsigned int arg1) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpz_init_set_ui = gmpz_init_set_ui_type( ( libgmp_lib.undecorated_names["extern void __gmpz_init_set_ui(mpz_ptr arg0, long unsigned int arg1) [free function]"], libgmp_lib ) ) gmpz_export_type = ctypes.CFUNCTYPE( ctypes.c_void_p, ctypes.c_void_p, ctypes.POINTER( ctypes.c_uint ), ctypes.c_int, ctypes.c_uint, ctypes.c_int, ctypes.c_uint, ctypes.POINTER( __mpz_struct ) ) -gmpz_export = gmpz_export_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern void * __gmpz_export(void * arg0, size_t * arg1, int arg2, size_t arg3, int arg4, size_t arg5, mpz_srcptr arg6) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpz_export = gmpz_export_type( ( libgmp_lib.undecorated_names["extern void * __gmpz_export(void * arg0, size_t * arg1, int arg2, size_t arg3, int arg4, size_t arg5, mpz_srcptr arg6) [free function]"], libgmp_lib ) ) gmpz_set_str_type = ctypes.CFUNCTYPE( ctypes.c_int, ctypes.POINTER( __mpz_struct ), ctypes.c_char_p, ctypes.c_int ) -gmpz_set_str = gmpz_set_str_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern int __gmpz_set_str(mpz_ptr arg0, char const * arg1, int arg2) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpz_set_str = gmpz_set_str_type( ( libgmp_lib.undecorated_names["extern int __gmpz_set_str(mpz_ptr arg0, char const * arg1, int arg2) [free function]"], libgmp_lib ) ) gmpz_set_type = ctypes.CFUNCTYPE( None, ctypes.POINTER( __mpz_struct ), ctypes.POINTER( __mpz_struct ) ) -gmpz_set = gmpz_set_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern void __gmpz_set(mpz_ptr arg0, mpz_srcptr arg1) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpz_set = gmpz_set_type( ( libgmp_lib.undecorated_names["extern void __gmpz_set(mpz_ptr arg0, mpz_srcptr arg1) [free function]"], libgmp_lib ) ) gmp_randseed_ui_type = ctypes.CFUNCTYPE( None, ctypes.POINTER( __gmp_randstate_struct ), ctypes.c_ulong ) -gmp_randseed_ui = gmp_randseed_ui_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern void __gmp_randseed_ui(__gmp_randstate_struct * arg0, long unsigned int arg1) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmp_randseed_ui = gmp_randseed_ui_type( ( libgmp_lib.undecorated_names["extern void __gmp_randseed_ui(__gmp_randstate_struct * arg0, long unsigned int arg1) [free function]"], libgmp_lib ) ) gmpz_random2_type = ctypes.CFUNCTYPE( None, ctypes.POINTER( __mpz_struct ), ctypes.c_long ) -gmpz_random2 = gmpz_random2_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern void __gmpz_random2(mpz_ptr arg0, mp_size_t arg1) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpz_random2 = gmpz_random2_type( ( libgmp_lib.undecorated_names["extern void __gmpz_random2(mpz_ptr arg0, mp_size_t arg1) [free function]"], libgmp_lib ) ) gmpf_mul_2exp_type = ctypes.CFUNCTYPE( None, ctypes.POINTER( __mpf_struct ), ctypes.POINTER( __mpf_struct ), ctypes.c_ulong ) -gmpf_mul_2exp = gmpf_mul_2exp_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern void __gmpf_mul_2exp(mpf_ptr arg0, mpf_srcptr arg1, long unsigned int arg2) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpf_mul_2exp = gmpf_mul_2exp_type( ( libgmp_lib.undecorated_names["extern void __gmpf_mul_2exp(mpf_ptr arg0, mpf_srcptr arg1, long unsigned int arg2) [free function]"], libgmp_lib ) ) gmpf_cmp_type = ctypes.CFUNCTYPE( ctypes.c_int, ctypes.POINTER( __mpf_struct ), ctypes.POINTER( __mpf_struct ) ) -gmpf_cmp = gmpf_cmp_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern int __gmpf_cmp(mpf_srcptr arg0, mpf_srcptr arg1) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpf_cmp = gmpf_cmp_type( ( libgmp_lib.undecorated_names["extern int __gmpf_cmp(mpf_srcptr arg0, mpf_srcptr arg1) [free function]"], libgmp_lib ) ) gmpn_sub_1_type = ctypes.CFUNCTYPE( ctypes.c_ulong, ctypes.POINTER( ctypes.c_ulong ), ctypes.POINTER( ctypes.c_ulong ), ctypes.c_long, ctypes.c_ulong ) -gmpn_sub_1 = gmpn_sub_1_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["mp_limb_t __gmpn_sub_1(mp_ptr __gmp_dst, mp_srcptr __gmp_src, mp_size_t __gmp_size, mp_limb_t __gmp_n) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpn_sub_1 = gmpn_sub_1_type( ( libgmp_lib.undecorated_names["mp_limb_t __gmpn_sub_1(mp_ptr __gmp_dst, mp_srcptr __gmp_src, mp_size_t __gmp_size, mp_limb_t __gmp_n) [free function]"], libgmp_lib ) ) gmpq_cmp_ui_type = ctypes.CFUNCTYPE( ctypes.c_int, ctypes.POINTER( __mpq_struct ), ctypes.c_ulong, ctypes.c_ulong ) -gmpq_cmp_ui = gmpq_cmp_ui_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern int __gmpq_cmp_ui(mpq_srcptr arg0, long unsigned int arg1, long unsigned int arg2) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpq_cmp_ui = gmpq_cmp_ui_type( ( libgmp_lib.undecorated_names["extern int __gmpq_cmp_ui(mpq_srcptr arg0, long unsigned int arg1, long unsigned int arg2) [free function]"], libgmp_lib ) ) gmpq_out_str_type = ctypes.CFUNCTYPE( ctypes.c_uint, ctypes.POINTER( _IO_FILE ), ctypes.c_int, ctypes.POINTER( __mpq_struct ) ) -gmpq_out_str = gmpq_out_str_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern size_t __gmpq_out_str(FILE * arg0, int arg1, mpq_srcptr arg2) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpq_out_str = gmpq_out_str_type( ( libgmp_lib.undecorated_names["extern size_t __gmpq_out_str(FILE * arg0, int arg1, mpq_srcptr arg2) [free function]"], libgmp_lib ) ) gmpz_mul_2exp_type = ctypes.CFUNCTYPE( None, ctypes.POINTER( __mpz_struct ), ctypes.POINTER( __mpz_struct ), ctypes.c_ulong ) -gmpz_mul_2exp = gmpz_mul_2exp_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern void __gmpz_mul_2exp(mpz_ptr arg0, mpz_srcptr arg1, long unsigned int arg2) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpz_mul_2exp = gmpz_mul_2exp_type( ( libgmp_lib.undecorated_names["extern void __gmpz_mul_2exp(mpz_ptr arg0, mpz_srcptr arg1, long unsigned int arg2) [free function]"], libgmp_lib ) ) gmpn_hamdist_type = ctypes.CFUNCTYPE( ctypes.c_ulong, ctypes.POINTER( ctypes.c_ulong ), ctypes.POINTER( ctypes.c_ulong ), ctypes.c_long ) -gmpn_hamdist = gmpn_hamdist_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern long unsigned int __gmpn_hamdist(mp_srcptr arg0, mp_srcptr arg1, mp_size_t arg2) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpn_hamdist = gmpn_hamdist_type( ( libgmp_lib.undecorated_names["extern long unsigned int __gmpn_hamdist(mp_srcptr arg0, mp_srcptr arg1, mp_size_t arg2) [free function]"], libgmp_lib ) ) gmpz_submul_type = ctypes.CFUNCTYPE( None, ctypes.POINTER( __mpz_struct ), ctypes.POINTER( __mpz_struct ), ctypes.POINTER( __mpz_struct ) ) -gmpz_submul = gmpz_submul_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern void __gmpz_submul(mpz_ptr arg0, mpz_srcptr arg1, mpz_srcptr arg2) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpz_submul = gmpz_submul_type( ( libgmp_lib.undecorated_names["extern void __gmpz_submul(mpz_ptr arg0, mpz_srcptr arg1, mpz_srcptr arg2) [free function]"], libgmp_lib ) ) gmp_randseed_type = ctypes.CFUNCTYPE( None, ctypes.POINTER( __gmp_randstate_struct ), ctypes.POINTER( __mpz_struct ) ) -gmp_randseed = gmp_randseed_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern void __gmp_randseed(__gmp_randstate_struct * arg0, mpz_srcptr arg1) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmp_randseed = gmp_randseed_type( ( libgmp_lib.undecorated_names["extern void __gmp_randseed(__gmp_randstate_struct * arg0, mpz_srcptr arg1) [free function]"], libgmp_lib ) ) gmpz_divisible_p_type = ctypes.CFUNCTYPE( ctypes.c_int, ctypes.POINTER( __mpz_struct ), ctypes.POINTER( __mpz_struct ) ) -gmpz_divisible_p = gmpz_divisible_p_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern int __gmpz_divisible_p(mpz_srcptr arg0, mpz_srcptr arg1) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpz_divisible_p = gmpz_divisible_p_type( ( libgmp_lib.undecorated_names["extern int __gmpz_divisible_p(mpz_srcptr arg0, mpz_srcptr arg1) [free function]"], libgmp_lib ) ) gmpz_getlimbn_type = ctypes.CFUNCTYPE( ctypes.c_ulong, ctypes.POINTER( __mpz_struct ), ctypes.c_long ) -gmpz_getlimbn = gmpz_getlimbn_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["mp_limb_t __gmpz_getlimbn(mpz_srcptr __gmp_z, mp_size_t __gmp_n) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpz_getlimbn = gmpz_getlimbn_type( ( libgmp_lib.undecorated_names["mp_limb_t __gmpz_getlimbn(mpz_srcptr __gmp_z, mp_size_t __gmp_n) [free function]"], libgmp_lib ) ) gmp_randinit_lc_2exp_size_type = ctypes.CFUNCTYPE( ctypes.c_int, ctypes.POINTER( __gmp_randstate_struct ), ctypes.c_ulong ) -gmp_randinit_lc_2exp_size = gmp_randinit_lc_2exp_size_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern int __gmp_randinit_lc_2exp_size(__gmp_randstate_struct * arg0, long unsigned int arg1) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmp_randinit_lc_2exp_size = gmp_randinit_lc_2exp_size_type( ( libgmp_lib.undecorated_names["extern int __gmp_randinit_lc_2exp_size(__gmp_randstate_struct * arg0, long unsigned int arg1) [free function]"], libgmp_lib ) ) gmpz_add_ui_type = ctypes.CFUNCTYPE( None, ctypes.POINTER( __mpz_struct ), ctypes.POINTER( __mpz_struct ), ctypes.c_ulong ) -gmpz_add_ui = gmpz_add_ui_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern void __gmpz_add_ui(mpz_ptr arg0, mpz_srcptr arg1, long unsigned int arg2) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpz_add_ui = gmpz_add_ui_type( ( libgmp_lib.undecorated_names["extern void __gmpz_add_ui(mpz_ptr arg0, mpz_srcptr arg1, long unsigned int arg2) [free function]"], libgmp_lib ) ) gmpz_inp_raw_type = ctypes.CFUNCTYPE( ctypes.c_uint, ctypes.POINTER( __mpz_struct ), ctypes.POINTER( _IO_FILE ) ) -gmpz_inp_raw = gmpz_inp_raw_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern size_t __gmpz_inp_raw(mpz_ptr arg0, FILE * arg1) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpz_inp_raw = gmpz_inp_raw_type( ( libgmp_lib.undecorated_names["extern size_t __gmpz_inp_raw(mpz_ptr arg0, FILE * arg1) [free function]"], libgmp_lib ) ) gmpz_tdiv_ui_type = ctypes.CFUNCTYPE( ctypes.c_ulong, ctypes.POINTER( __mpz_struct ), ctypes.c_ulong ) -gmpz_tdiv_ui = gmpz_tdiv_ui_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern long unsigned int __gmpz_tdiv_ui(mpz_srcptr arg0, long unsigned int arg1) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpz_tdiv_ui = gmpz_tdiv_ui_type( ( libgmp_lib.undecorated_names["extern long unsigned int __gmpz_tdiv_ui(mpz_srcptr arg0, long unsigned int arg1) [free function]"], libgmp_lib ) ) gmpz_tdiv_qr_ui_type = ctypes.CFUNCTYPE( ctypes.c_ulong, ctypes.POINTER( __mpz_struct ), ctypes.POINTER( __mpz_struct ), ctypes.POINTER( __mpz_struct ), ctypes.c_ulong ) -gmpz_tdiv_qr_ui = gmpz_tdiv_qr_ui_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern long unsigned int __gmpz_tdiv_qr_ui(mpz_ptr arg0, mpz_ptr arg1, mpz_srcptr arg2, long unsigned int arg3) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpz_tdiv_qr_ui = gmpz_tdiv_qr_ui_type( ( libgmp_lib.undecorated_names["extern long unsigned int __gmpz_tdiv_qr_ui(mpz_ptr arg0, mpz_ptr arg1, mpz_srcptr arg2, long unsigned int arg3) [free function]"], libgmp_lib ) ) gmpf_neg_type = ctypes.CFUNCTYPE( None, ctypes.POINTER( __mpf_struct ), ctypes.POINTER( __mpf_struct ) ) -gmpf_neg = gmpf_neg_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern void __gmpf_neg(mpf_ptr arg0, mpf_srcptr arg1) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpf_neg = gmpf_neg_type( ( libgmp_lib.undecorated_names["extern void __gmpf_neg(mpf_ptr arg0, mpf_srcptr arg1) [free function]"], libgmp_lib ) ) gmpq_set_num_type = ctypes.CFUNCTYPE( None, ctypes.POINTER( __mpq_struct ), ctypes.POINTER( __mpz_struct ) ) -gmpq_set_num = gmpq_set_num_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern void __gmpq_set_num(mpq_ptr arg0, mpz_srcptr arg1) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpq_set_num = gmpq_set_num_type( ( libgmp_lib.undecorated_names["extern void __gmpq_set_num(mpq_ptr arg0, mpz_srcptr arg1) [free function]"], libgmp_lib ) ) gmpf_mul_type = ctypes.CFUNCTYPE( None, ctypes.POINTER( __mpf_struct ), ctypes.POINTER( __mpf_struct ), ctypes.POINTER( __mpf_struct ) ) -gmpf_mul = gmpf_mul_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern void __gmpf_mul(mpf_ptr arg0, mpf_srcptr arg1, mpf_srcptr arg2) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpf_mul = gmpf_mul_type( ( libgmp_lib.undecorated_names["extern void __gmpf_mul(mpf_ptr arg0, mpf_srcptr arg1, mpf_srcptr arg2) [free function]"], libgmp_lib ) ) gmpz_submul_ui_type = ctypes.CFUNCTYPE( None, ctypes.POINTER( __mpz_struct ), ctypes.POINTER( __mpz_struct ), ctypes.c_ulong ) -gmpz_submul_ui = gmpz_submul_ui_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern void __gmpz_submul_ui(mpz_ptr arg0, mpz_srcptr arg1, long unsigned int arg2) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpz_submul_ui = gmpz_submul_ui_type( ( libgmp_lib.undecorated_names["extern void __gmpz_submul_ui(mpz_ptr arg0, mpz_srcptr arg1, long unsigned int arg2) [free function]"], libgmp_lib ) ) gmpf_div_ui_type = ctypes.CFUNCTYPE( None, ctypes.POINTER( __mpf_struct ), ctypes.POINTER( __mpf_struct ), ctypes.c_ulong ) -gmpf_div_ui = gmpf_div_ui_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern void __gmpf_div_ui(mpf_ptr arg0, mpf_srcptr arg1, long unsigned int arg2) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpf_div_ui = gmpf_div_ui_type( ( libgmp_lib.undecorated_names["extern void __gmpf_div_ui(mpf_ptr arg0, mpf_srcptr arg1, long unsigned int arg2) [free function]"], libgmp_lib ) ) gmpz_random_type = ctypes.CFUNCTYPE( None, ctypes.POINTER( __mpz_struct ), ctypes.c_long ) -gmpz_random = gmpz_random_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern void __gmpz_random(mpz_ptr arg0, mp_size_t arg1) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpz_random = gmpz_random_type( ( libgmp_lib.undecorated_names["extern void __gmpz_random(mpz_ptr arg0, mp_size_t arg1) [free function]"], libgmp_lib ) ) gmpn_pow_1_type = ctypes.CFUNCTYPE( ctypes.c_long, ctypes.POINTER( ctypes.c_ulong ), ctypes.POINTER( ctypes.c_ulong ), ctypes.c_long, ctypes.c_ulong, ctypes.POINTER( ctypes.c_ulong ) ) -gmpn_pow_1 = gmpn_pow_1_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern mp_size_t __gmpn_pow_1(mp_ptr arg0, mp_srcptr arg1, mp_size_t arg2, mp_limb_t arg3, mp_ptr arg4) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpn_pow_1 = gmpn_pow_1_type( ( libgmp_lib.undecorated_names["extern mp_size_t __gmpn_pow_1(mp_ptr arg0, mp_srcptr arg1, mp_size_t arg2, mp_limb_t arg3, mp_ptr arg4) [free function]"], libgmp_lib ) ) gmpz_addmul_type = ctypes.CFUNCTYPE( None, ctypes.POINTER( __mpz_struct ), ctypes.POINTER( __mpz_struct ), ctypes.POINTER( __mpz_struct ) ) -gmpz_addmul = gmpz_addmul_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern void __gmpz_addmul(mpz_ptr arg0, mpz_srcptr arg1, mpz_srcptr arg2) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpz_addmul = gmpz_addmul_type( ( libgmp_lib.undecorated_names["extern void __gmpz_addmul(mpz_ptr arg0, mpz_srcptr arg1, mpz_srcptr arg2) [free function]"], libgmp_lib ) ) gmpz_ui_sub_type = ctypes.CFUNCTYPE( None, ctypes.POINTER( __mpz_struct ), ctypes.c_ulong, ctypes.POINTER( __mpz_struct ) ) -gmpz_ui_sub = gmpz_ui_sub_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern void __gmpz_ui_sub(mpz_ptr arg0, long unsigned int arg1, mpz_srcptr arg2) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpz_ui_sub = gmpz_ui_sub_type( ( libgmp_lib.undecorated_names["extern void __gmpz_ui_sub(mpz_ptr arg0, long unsigned int arg1, mpz_srcptr arg2) [free function]"], libgmp_lib ) ) gmp_set_memory_functions_type = ctypes.CFUNCTYPE( None, ctypes.POINTER( ctypes.CFUNCTYPE( ctypes.c_void_p, ctypes.c_uint ) ), ctypes.POINTER( ctypes.CFUNCTYPE( ctypes.c_void_p, ctypes.c_void_p, ctypes.c_uint, ctypes.c_uint ) ), ctypes.POINTER( ctypes.CFUNCTYPE( None, ctypes.c_void_p, ctypes.c_uint ) ) ) -gmp_set_memory_functions = gmp_set_memory_functions_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern void __gmp_set_memory_functions(void * (*)( ::size_t ) * arg0, void * (*)( void *,::size_t,::size_t ) * arg1, void (*)( void *,::size_t ) * arg2) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmp_set_memory_functions = gmp_set_memory_functions_type( ( libgmp_lib.undecorated_names["extern void __gmp_set_memory_functions(void * (*)( ::size_t ) * arg0, void * (*)( void *,::size_t,::size_t ) * arg1, void (*)( void *,::size_t ) * arg2) [free function]"], libgmp_lib ) ) gmpz_tdiv_q_2exp_type = ctypes.CFUNCTYPE( None, ctypes.POINTER( __mpz_struct ), ctypes.POINTER( __mpz_struct ), ctypes.c_ulong ) -gmpz_tdiv_q_2exp = gmpz_tdiv_q_2exp_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern void __gmpz_tdiv_q_2exp(mpz_ptr arg0, mpz_srcptr arg1, long unsigned int arg2) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpz_tdiv_q_2exp = gmpz_tdiv_q_2exp_type( ( libgmp_lib.undecorated_names["extern void __gmpz_tdiv_q_2exp(mpz_ptr arg0, mpz_srcptr arg1, long unsigned int arg2) [free function]"], libgmp_lib ) ) gmpz_sqrt_type = ctypes.CFUNCTYPE( None, ctypes.POINTER( __mpz_struct ), ctypes.POINTER( __mpz_struct ) ) -gmpz_sqrt = gmpz_sqrt_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern void __gmpz_sqrt(mpz_ptr arg0, mpz_srcptr arg1) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpz_sqrt = gmpz_sqrt_type( ( libgmp_lib.undecorated_names["extern void __gmpz_sqrt(mpz_ptr arg0, mpz_srcptr arg1) [free function]"], libgmp_lib ) ) gmpn_divrem_type = ctypes.CFUNCTYPE( ctypes.c_ulong, ctypes.POINTER( ctypes.c_ulong ), ctypes.c_long, ctypes.POINTER( ctypes.c_ulong ), ctypes.c_long, ctypes.POINTER( ctypes.c_ulong ), ctypes.c_long ) -gmpn_divrem = gmpn_divrem_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern mp_limb_t __gmpn_divrem(mp_ptr arg0, mp_size_t arg1, mp_ptr arg2, mp_size_t arg3, mp_srcptr arg4, mp_size_t arg5) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpn_divrem = gmpn_divrem_type( ( libgmp_lib.undecorated_names["extern mp_limb_t __gmpn_divrem(mp_ptr arg0, mp_size_t arg1, mp_ptr arg2, mp_size_t arg3, mp_srcptr arg4, mp_size_t arg5) [free function]"], libgmp_lib ) ) gmpf_sqrt_ui_type = ctypes.CFUNCTYPE( None, ctypes.POINTER( __mpf_struct ), ctypes.c_ulong ) -gmpf_sqrt_ui = gmpf_sqrt_ui_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern void __gmpf_sqrt_ui(mpf_ptr arg0, long unsigned int arg1) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpf_sqrt_ui = gmpf_sqrt_ui_type( ( libgmp_lib.undecorated_names["extern void __gmpf_sqrt_ui(mpf_ptr arg0, long unsigned int arg1) [free function]"], libgmp_lib ) ) gmpn_sub_type = ctypes.CFUNCTYPE( ctypes.c_ulong, ctypes.POINTER( ctypes.c_ulong ), ctypes.POINTER( ctypes.c_ulong ), ctypes.c_long, ctypes.POINTER( ctypes.c_ulong ), ctypes.c_long ) -gmpn_sub = gmpn_sub_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["mp_limb_t __gmpn_sub(mp_ptr __gmp_wp, mp_srcptr __gmp_xp, mp_size_t __gmp_xsize, mp_srcptr __gmp_yp, mp_size_t __gmp_ysize) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpn_sub = gmpn_sub_type( ( libgmp_lib.undecorated_names["mp_limb_t __gmpn_sub(mp_ptr __gmp_wp, mp_srcptr __gmp_xp, mp_size_t __gmp_xsize, mp_srcptr __gmp_yp, mp_size_t __gmp_ysize) [free function]"], libgmp_lib ) ) gmpq_set_f_type = ctypes.CFUNCTYPE( None, ctypes.POINTER( __mpq_struct ), ctypes.POINTER( __mpf_struct ) ) -gmpq_set_f = gmpq_set_f_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern void __gmpq_set_f(mpq_ptr arg0, mpf_srcptr arg1) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpq_set_f = gmpq_set_f_type( ( libgmp_lib.undecorated_names["extern void __gmpq_set_f(mpq_ptr arg0, mpf_srcptr arg1) [free function]"], libgmp_lib ) ) gmpq_get_d_type = ctypes.CFUNCTYPE( ctypes.c_double, ctypes.POINTER( __mpq_struct ) ) -gmpq_get_d = gmpq_get_d_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern double __gmpq_get_d(mpq_srcptr arg0) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpq_get_d = gmpq_get_d_type( ( libgmp_lib.undecorated_names["extern double __gmpq_get_d(mpq_srcptr arg0) [free function]"], libgmp_lib ) ) gmpf_size_type = ctypes.CFUNCTYPE( ctypes.c_uint, ctypes.POINTER( __mpf_struct ) ) -gmpf_size = gmpf_size_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern size_t __gmpf_size(mpf_srcptr arg0) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpf_size = gmpf_size_type( ( libgmp_lib.undecorated_names["extern size_t __gmpf_size(mpf_srcptr arg0) [free function]"], libgmp_lib ) ) gmpz_add_type = ctypes.CFUNCTYPE( None, ctypes.POINTER( __mpz_struct ), ctypes.POINTER( __mpz_struct ), ctypes.POINTER( __mpz_struct ) ) -gmpz_add = gmpz_add_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern void __gmpz_add(mpz_ptr arg0, mpz_srcptr arg1, mpz_srcptr arg2) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpz_add = gmpz_add_type( ( libgmp_lib.undecorated_names["extern void __gmpz_add(mpz_ptr arg0, mpz_srcptr arg1, mpz_srcptr arg2) [free function]"], libgmp_lib ) ) gmpq_inv_type = ctypes.CFUNCTYPE( None, ctypes.POINTER( __mpq_struct ), ctypes.POINTER( __mpq_struct ) ) -gmpq_inv = gmpq_inv_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern void __gmpq_inv(mpq_ptr arg0, mpq_srcptr arg1) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpq_inv = gmpq_inv_type( ( libgmp_lib.undecorated_names["extern void __gmpq_inv(mpq_ptr arg0, mpq_srcptr arg1) [free function]"], libgmp_lib ) ) gmpz_rootrem_type = ctypes.CFUNCTYPE( None, ctypes.POINTER( __mpz_struct ), ctypes.POINTER( __mpz_struct ), ctypes.POINTER( __mpz_struct ), ctypes.c_ulong ) -gmpz_rootrem = gmpz_rootrem_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern void __gmpz_rootrem(mpz_ptr arg0, mpz_ptr arg1, mpz_srcptr arg2, long unsigned int arg3) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpz_rootrem = gmpz_rootrem_type( ( libgmp_lib.undecorated_names["extern void __gmpz_rootrem(mpz_ptr arg0, mpz_ptr arg1, mpz_srcptr arg2, long unsigned int arg3) [free function]"], libgmp_lib ) ) gmpf_ceil_type = ctypes.CFUNCTYPE( None, ctypes.POINTER( __mpf_struct ), ctypes.POINTER( __mpf_struct ) ) -gmpf_ceil = gmpf_ceil_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern void __gmpf_ceil(mpf_ptr arg0, mpf_srcptr arg1) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpf_ceil = gmpf_ceil_type( ( libgmp_lib.undecorated_names["extern void __gmpf_ceil(mpf_ptr arg0, mpf_srcptr arg1) [free function]"], libgmp_lib ) ) gmpz_fits_ushort_p_type = ctypes.CFUNCTYPE( ctypes.c_int, ctypes.POINTER( __mpz_struct ) ) -gmpz_fits_ushort_p = gmpz_fits_ushort_p_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["int __gmpz_fits_ushort_p(mpz_srcptr __gmp_z) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpz_fits_ushort_p = gmpz_fits_ushort_p_type( ( libgmp_lib.undecorated_names["int __gmpz_fits_ushort_p(mpz_srcptr __gmp_z) [free function]"], libgmp_lib ) ) gmpz_cdiv_r_2exp_type = ctypes.CFUNCTYPE( None, ctypes.POINTER( __mpz_struct ), ctypes.POINTER( __mpz_struct ), ctypes.c_ulong ) -gmpz_cdiv_r_2exp = gmpz_cdiv_r_2exp_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern void __gmpz_cdiv_r_2exp(mpz_ptr arg0, mpz_srcptr arg1, long unsigned int arg2) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpz_cdiv_r_2exp = gmpz_cdiv_r_2exp_type( ( libgmp_lib.undecorated_names["extern void __gmpz_cdiv_r_2exp(mpz_ptr arg0, mpz_srcptr arg1, long unsigned int arg2) [free function]"], libgmp_lib ) ) gmpz_fdiv_qr_type = ctypes.CFUNCTYPE( None, ctypes.POINTER( __mpz_struct ), ctypes.POINTER( __mpz_struct ), ctypes.POINTER( __mpz_struct ), ctypes.POINTER( __mpz_struct ) ) -gmpz_fdiv_qr = gmpz_fdiv_qr_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern void __gmpz_fdiv_qr(mpz_ptr arg0, mpz_ptr arg1, mpz_srcptr arg2, mpz_srcptr arg3) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpz_fdiv_qr = gmpz_fdiv_qr_type( ( libgmp_lib.undecorated_names["extern void __gmpz_fdiv_qr(mpz_ptr arg0, mpz_ptr arg1, mpz_srcptr arg2, mpz_srcptr arg3) [free function]"], libgmp_lib ) ) gmpz_get_si_type = ctypes.CFUNCTYPE( ctypes.c_long, ctypes.POINTER( __mpz_struct ) ) -gmpz_get_si = gmpz_get_si_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern long int __gmpz_get_si(mpz_srcptr arg0) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpz_get_si = gmpz_get_si_type( ( libgmp_lib.undecorated_names["extern long int __gmpz_get_si(mpz_srcptr arg0) [free function]"], libgmp_lib ) ) gmpf_integer_p_type = ctypes.CFUNCTYPE( ctypes.c_int, ctypes.POINTER( __mpf_struct ) ) -gmpf_integer_p = gmpf_integer_p_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern int __gmpf_integer_p(mpf_srcptr arg0) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpf_integer_p = gmpf_integer_p_type( ( libgmp_lib.undecorated_names["extern int __gmpf_integer_p(mpf_srcptr arg0) [free function]"], libgmp_lib ) ) gmpz_congruent_p_type = ctypes.CFUNCTYPE( ctypes.c_int, ctypes.POINTER( __mpz_struct ), ctypes.POINTER( __mpz_struct ), ctypes.POINTER( __mpz_struct ) ) -gmpz_congruent_p = gmpz_congruent_p_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern int __gmpz_congruent_p(mpz_srcptr arg0, mpz_srcptr arg1, mpz_srcptr arg2) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpz_congruent_p = gmpz_congruent_p_type( ( libgmp_lib.undecorated_names["extern int __gmpz_congruent_p(mpz_srcptr arg0, mpz_srcptr arg1, mpz_srcptr arg2) [free function]"], libgmp_lib ) ) gmpf_ui_div_type = ctypes.CFUNCTYPE( None, ctypes.POINTER( __mpf_struct ), ctypes.c_ulong, ctypes.POINTER( __mpf_struct ) ) -gmpf_ui_div = gmpf_ui_div_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern void __gmpf_ui_div(mpf_ptr arg0, long unsigned int arg1, mpf_srcptr arg2) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpf_ui_div = gmpf_ui_div_type( ( libgmp_lib.undecorated_names["extern void __gmpf_ui_div(mpf_ptr arg0, long unsigned int arg1, mpf_srcptr arg2) [free function]"], libgmp_lib ) ) gmpz_mul_si_type = ctypes.CFUNCTYPE( None, ctypes.POINTER( __mpz_struct ), ctypes.POINTER( __mpz_struct ), ctypes.c_long ) -gmpz_mul_si = gmpz_mul_si_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern void __gmpz_mul_si(mpz_ptr arg0, mpz_srcptr arg1, long int arg2) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpz_mul_si = gmpz_mul_si_type( ( libgmp_lib.undecorated_names["extern void __gmpz_mul_si(mpz_ptr arg0, mpz_srcptr arg1, long int arg2) [free function]"], libgmp_lib ) ) gmpq_div_2exp_type = ctypes.CFUNCTYPE( None, ctypes.POINTER( __mpq_struct ), ctypes.POINTER( __mpq_struct ), ctypes.c_ulong ) -gmpq_div_2exp = gmpq_div_2exp_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern void __gmpq_div_2exp(mpq_ptr arg0, mpq_srcptr arg1, long unsigned int arg2) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpq_div_2exp = gmpq_div_2exp_type( ( libgmp_lib.undecorated_names["extern void __gmpq_div_2exp(mpq_ptr arg0, mpq_srcptr arg1, long unsigned int arg2) [free function]"], libgmp_lib ) ) gmpq_mul_2exp_type = ctypes.CFUNCTYPE( None, ctypes.POINTER( __mpq_struct ), ctypes.POINTER( __mpq_struct ), ctypes.c_ulong ) -gmpq_mul_2exp = gmpq_mul_2exp_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern void __gmpq_mul_2exp(mpq_ptr arg0, mpq_srcptr arg1, long unsigned int arg2) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpq_mul_2exp = gmpq_mul_2exp_type( ( libgmp_lib.undecorated_names["extern void __gmpq_mul_2exp(mpq_ptr arg0, mpq_srcptr arg1, long unsigned int arg2) [free function]"], libgmp_lib ) ) gmpf_urandomb_type = ctypes.CFUNCTYPE( None, ctypes.POINTER( __mpf_struct ), ctypes.POINTER( __gmp_randstate_struct ), ctypes.c_ulong ) -gmpf_urandomb = gmpf_urandomb_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern void __gmpf_urandomb(__mpf_struct * arg0, __gmp_randstate_struct * arg1, long unsigned int arg2) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpf_urandomb = gmpf_urandomb_type( ( libgmp_lib.undecorated_names["extern void __gmpf_urandomb(__mpf_struct * arg0, __gmp_randstate_struct * arg1, long unsigned int arg2) [free function]"], libgmp_lib ) ) gmpq_neg_type = ctypes.CFUNCTYPE( None, ctypes.POINTER( __mpq_struct ), ctypes.POINTER( __mpq_struct ) ) -gmpq_neg = gmpq_neg_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["void __gmpq_neg(mpq_ptr __gmp_w, mpq_srcptr __gmp_u) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpq_neg = gmpq_neg_type( ( libgmp_lib.undecorated_names["void __gmpq_neg(mpq_ptr __gmp_w, mpq_srcptr __gmp_u) [free function]"], libgmp_lib ) ) gmpz_import_type = ctypes.CFUNCTYPE( None, ctypes.POINTER( __mpz_struct ), ctypes.c_uint, ctypes.c_int, ctypes.c_uint, ctypes.c_int, ctypes.c_uint, ctypes.c_void_p ) -gmpz_import = gmpz_import_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern void __gmpz_import(mpz_ptr arg0, size_t arg1, int arg2, size_t arg3, int arg4, size_t arg5, void const * arg6) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpz_import = gmpz_import_type( ( libgmp_lib.undecorated_names["extern void __gmpz_import(mpz_ptr arg0, size_t arg1, int arg2, size_t arg3, int arg4, size_t arg5, void const * arg6) [free function]"], libgmp_lib ) ) gmpz_mul_ui_type = ctypes.CFUNCTYPE( None, ctypes.POINTER( __mpz_struct ), ctypes.POINTER( __mpz_struct ), ctypes.c_ulong ) -gmpz_mul_ui = gmpz_mul_ui_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern void __gmpz_mul_ui(mpz_ptr arg0, mpz_srcptr arg1, long unsigned int arg2) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpz_mul_ui = gmpz_mul_ui_type( ( libgmp_lib.undecorated_names["extern void __gmpz_mul_ui(mpz_ptr arg0, mpz_srcptr arg1, long unsigned int arg2) [free function]"], libgmp_lib ) ) gmpz_tstbit_type = ctypes.CFUNCTYPE( ctypes.c_int, ctypes.POINTER( __mpz_struct ), ctypes.c_ulong ) -gmpz_tstbit = gmpz_tstbit_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern int __gmpz_tstbit(mpz_srcptr arg0, long unsigned int arg1) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpz_tstbit = gmpz_tstbit_type( ( libgmp_lib.undecorated_names["extern int __gmpz_tstbit(mpz_srcptr arg0, long unsigned int arg1) [free function]"], libgmp_lib ) ) gmpq_get_num_type = ctypes.CFUNCTYPE( None, ctypes.POINTER( __mpz_struct ), ctypes.POINTER( __mpq_struct ) ) -gmpq_get_num = gmpq_get_num_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern void __gmpq_get_num(mpz_ptr arg0, mpq_srcptr arg1) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpq_get_num = gmpq_get_num_type( ( libgmp_lib.undecorated_names["extern void __gmpq_get_num(mpz_ptr arg0, mpq_srcptr arg1) [free function]"], libgmp_lib ) ) gmpz_sub_ui_type = ctypes.CFUNCTYPE( None, ctypes.POINTER( __mpz_struct ), ctypes.POINTER( __mpz_struct ), ctypes.c_ulong ) -gmpz_sub_ui = gmpz_sub_ui_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern void __gmpz_sub_ui(mpz_ptr arg0, mpz_srcptr arg1, long unsigned int arg2) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpz_sub_ui = gmpz_sub_ui_type( ( libgmp_lib.undecorated_names["extern void __gmpz_sub_ui(mpz_ptr arg0, mpz_srcptr arg1, long unsigned int arg2) [free function]"], libgmp_lib ) ) gmpz_rrandomb_type = ctypes.CFUNCTYPE( None, ctypes.POINTER( __mpz_struct ), ctypes.POINTER( __gmp_randstate_struct ), ctypes.c_ulong ) -gmpz_rrandomb = gmpz_rrandomb_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern void __gmpz_rrandomb(mpz_ptr arg0, __gmp_randstate_struct * arg1, long unsigned int arg2) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpz_rrandomb = gmpz_rrandomb_type( ( libgmp_lib.undecorated_names["extern void __gmpz_rrandomb(mpz_ptr arg0, __gmp_randstate_struct * arg1, long unsigned int arg2) [free function]"], libgmp_lib ) ) gmpn_set_str_type = ctypes.CFUNCTYPE( ctypes.c_long, ctypes.POINTER( ctypes.c_ulong ), ctypes.POINTER( ctypes.c_ubyte ), ctypes.c_uint, ctypes.c_int ) -gmpn_set_str = gmpn_set_str_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern mp_size_t __gmpn_set_str(mp_ptr arg0, unsigned char const * arg1, size_t arg2, int arg3) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpn_set_str = gmpn_set_str_type( ( libgmp_lib.undecorated_names["extern mp_size_t __gmpn_set_str(mp_ptr arg0, unsigned char const * arg1, size_t arg2, int arg3) [free function]"], libgmp_lib ) ) gmpz_root_type = ctypes.CFUNCTYPE( ctypes.c_int, ctypes.POINTER( __mpz_struct ), ctypes.POINTER( __mpz_struct ), ctypes.c_ulong ) -gmpz_root = gmpz_root_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern int __gmpz_root(mpz_ptr arg0, mpz_srcptr arg1, long unsigned int arg2) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpz_root = gmpz_root_type( ( libgmp_lib.undecorated_names["extern int __gmpz_root(mpz_ptr arg0, mpz_srcptr arg1, long unsigned int arg2) [free function]"], libgmp_lib ) ) gmpz_fdiv_q_ui_type = ctypes.CFUNCTYPE( ctypes.c_ulong, ctypes.POINTER( __mpz_struct ), ctypes.POINTER( __mpz_struct ), ctypes.c_ulong ) -gmpz_fdiv_q_ui = gmpz_fdiv_q_ui_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern long unsigned int __gmpz_fdiv_q_ui(mpz_ptr arg0, mpz_srcptr arg1, long unsigned int arg2) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpz_fdiv_q_ui = gmpz_fdiv_q_ui_type( ( libgmp_lib.undecorated_names["extern long unsigned int __gmpz_fdiv_q_ui(mpz_ptr arg0, mpz_srcptr arg1, long unsigned int arg2) [free function]"], libgmp_lib ) ) gmpz_cmpabs_ui_type = ctypes.CFUNCTYPE( ctypes.c_int, ctypes.POINTER( __mpz_struct ), ctypes.c_ulong ) -gmpz_cmpabs_ui = gmpz_cmpabs_ui_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern int __gmpz_cmpabs_ui(mpz_srcptr arg0, long unsigned int arg1) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpz_cmpabs_ui = gmpz_cmpabs_ui_type( ( libgmp_lib.undecorated_names["extern int __gmpz_cmpabs_ui(mpz_srcptr arg0, long unsigned int arg1) [free function]"], libgmp_lib ) ) gmpz_divexact_type = ctypes.CFUNCTYPE( None, ctypes.POINTER( __mpz_struct ), ctypes.POINTER( __mpz_struct ), ctypes.POINTER( __mpz_struct ) ) -gmpz_divexact = gmpz_divexact_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern void __gmpz_divexact(mpz_ptr arg0, mpz_srcptr arg1, mpz_srcptr arg2) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpz_divexact = gmpz_divexact_type( ( libgmp_lib.undecorated_names["extern void __gmpz_divexact(mpz_ptr arg0, mpz_srcptr arg1, mpz_srcptr arg2) [free function]"], libgmp_lib ) ) gmpz_cmpabs_d_type = ctypes.CFUNCTYPE( ctypes.c_int, ctypes.POINTER( __mpz_struct ), ctypes.c_double ) -gmpz_cmpabs_d = gmpz_cmpabs_d_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern int __gmpz_cmpabs_d(mpz_srcptr arg0, double arg1) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpz_cmpabs_d = gmpz_cmpabs_d_type( ( libgmp_lib.undecorated_names["extern int __gmpz_cmpabs_d(mpz_srcptr arg0, double arg1) [free function]"], libgmp_lib ) ) gmpz_mod_type = ctypes.CFUNCTYPE( None, ctypes.POINTER( __mpz_struct ), ctypes.POINTER( __mpz_struct ), ctypes.POINTER( __mpz_struct ) ) -gmpz_mod = gmpz_mod_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern void __gmpz_mod(mpz_ptr arg0, mpz_srcptr arg1, mpz_srcptr arg2) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpz_mod = gmpz_mod_type( ( libgmp_lib.undecorated_names["extern void __gmpz_mod(mpz_ptr arg0, mpz_srcptr arg1, mpz_srcptr arg2) [free function]"], libgmp_lib ) ) gmpz_fits_ulong_p_type = ctypes.CFUNCTYPE( ctypes.c_int, ctypes.POINTER( __mpz_struct ) ) -gmpz_fits_ulong_p = gmpz_fits_ulong_p_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["int __gmpz_fits_ulong_p(mpz_srcptr __gmp_z) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpz_fits_ulong_p = gmpz_fits_ulong_p_type( ( libgmp_lib.undecorated_names["int __gmpz_fits_ulong_p(mpz_srcptr __gmp_z) [free function]"], libgmp_lib ) ) gmpz_cdiv_qr_ui_type = ctypes.CFUNCTYPE( ctypes.c_ulong, ctypes.POINTER( __mpz_struct ), ctypes.POINTER( __mpz_struct ), ctypes.POINTER( __mpz_struct ), ctypes.c_ulong ) -gmpz_cdiv_qr_ui = gmpz_cdiv_qr_ui_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern long unsigned int __gmpz_cdiv_qr_ui(mpz_ptr arg0, mpz_ptr arg1, mpz_srcptr arg2, long unsigned int arg3) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpz_cdiv_qr_ui = gmpz_cdiv_qr_ui_type( ( libgmp_lib.undecorated_names["extern long unsigned int __gmpz_cdiv_qr_ui(mpz_ptr arg0, mpz_ptr arg1, mpz_srcptr arg2, long unsigned int arg3) [free function]"], libgmp_lib ) ) gmpz_cmp_ui_type = ctypes.CFUNCTYPE( ctypes.c_int, ctypes.POINTER( __mpz_struct ), ctypes.c_ulong ) -gmpz_cmp_ui = gmpz_cmp_ui_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern int __gmpz_cmp_ui(mpz_srcptr arg0, long unsigned int arg1) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpz_cmp_ui = gmpz_cmp_ui_type( ( libgmp_lib.undecorated_names["extern int __gmpz_cmp_ui(mpz_srcptr arg0, long unsigned int arg1) [free function]"], libgmp_lib ) ) gmpz_clear_type = ctypes.CFUNCTYPE( None, ctypes.POINTER( __mpz_struct ) ) -gmpz_clear = gmpz_clear_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern void __gmpz_clear(mpz_ptr arg0) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpz_clear = gmpz_clear_type( ( libgmp_lib.undecorated_names["extern void __gmpz_clear(mpz_ptr arg0) [free function]"], libgmp_lib ) ) gmp_randinit_mt_type = ctypes.CFUNCTYPE( None, ctypes.POINTER( __gmp_randstate_struct ) ) -gmp_randinit_mt = gmp_randinit_mt_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern void __gmp_randinit_mt(__gmp_randstate_struct * arg0) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmp_randinit_mt = gmp_randinit_mt_type( ( libgmp_lib.undecorated_names["extern void __gmp_randinit_mt(__gmp_randstate_struct * arg0) [free function]"], libgmp_lib ) ) gmpq_set_z_type = ctypes.CFUNCTYPE( None, ctypes.POINTER( __mpq_struct ), ctypes.POINTER( __mpz_struct ) ) -gmpq_set_z = gmpq_set_z_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern void __gmpq_set_z(mpq_ptr arg0, mpz_srcptr arg1) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpq_set_z = gmpq_set_z_type( ( libgmp_lib.undecorated_names["extern void __gmpq_set_z(mpq_ptr arg0, mpz_srcptr arg1) [free function]"], libgmp_lib ) ) gmpz_abs_type = ctypes.CFUNCTYPE( None, ctypes.POINTER( __mpz_struct ), ctypes.POINTER( __mpz_struct ) ) -gmpz_abs = gmpz_abs_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["void __gmpz_abs(mpz_ptr __gmp_w, mpz_srcptr __gmp_u) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpz_abs = gmpz_abs_type( ( libgmp_lib.undecorated_names["void __gmpz_abs(mpz_ptr __gmp_w, mpz_srcptr __gmp_u) [free function]"], libgmp_lib ) ) gmpz_probab_prime_p_type = ctypes.CFUNCTYPE( ctypes.c_int, ctypes.POINTER( __mpz_struct ), ctypes.c_int ) -gmpz_probab_prime_p = gmpz_probab_prime_p_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern int __gmpz_probab_prime_p(mpz_srcptr arg0, int arg1) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpz_probab_prime_p = gmpz_probab_prime_p_type( ( libgmp_lib.undecorated_names["extern int __gmpz_probab_prime_p(mpz_srcptr arg0, int arg1) [free function]"], libgmp_lib ) ) gmpz_tdiv_q_type = ctypes.CFUNCTYPE( None, ctypes.POINTER( __mpz_struct ), ctypes.POINTER( __mpz_struct ), ctypes.POINTER( __mpz_struct ) ) -gmpz_tdiv_q = gmpz_tdiv_q_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern void __gmpz_tdiv_q(mpz_ptr arg0, mpz_srcptr arg1, mpz_srcptr arg2) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpz_tdiv_q = gmpz_tdiv_q_type( ( libgmp_lib.undecorated_names["extern void __gmpz_tdiv_q(mpz_ptr arg0, mpz_srcptr arg1, mpz_srcptr arg2) [free function]"], libgmp_lib ) ) gmpz_tdiv_r_type = ctypes.CFUNCTYPE( None, ctypes.POINTER( __mpz_struct ), ctypes.POINTER( __mpz_struct ), ctypes.POINTER( __mpz_struct ) ) -gmpz_tdiv_r = gmpz_tdiv_r_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern void __gmpz_tdiv_r(mpz_ptr arg0, mpz_srcptr arg1, mpz_srcptr arg2) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpz_tdiv_r = gmpz_tdiv_r_type( ( libgmp_lib.undecorated_names["extern void __gmpz_tdiv_r(mpz_ptr arg0, mpz_srcptr arg1, mpz_srcptr arg2) [free function]"], libgmp_lib ) ) gmpf_set_str_type = ctypes.CFUNCTYPE( ctypes.c_int, ctypes.POINTER( __mpf_struct ), ctypes.c_char_p, ctypes.c_int ) -gmpf_set_str = gmpf_set_str_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern int __gmpf_set_str(mpf_ptr arg0, char const * arg1, int arg2) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpf_set_str = gmpf_set_str_type( ( libgmp_lib.undecorated_names["extern int __gmpf_set_str(mpf_ptr arg0, char const * arg1, int arg2) [free function]"], libgmp_lib ) ) gmpf_set_q_type = ctypes.CFUNCTYPE( None, ctypes.POINTER( __mpf_struct ), ctypes.POINTER( __mpq_struct ) ) -gmpf_set_q = gmpf_set_q_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern void __gmpf_set_q(mpf_ptr arg0, mpq_srcptr arg1) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpf_set_q = gmpf_set_q_type( ( libgmp_lib.undecorated_names["extern void __gmpf_set_q(mpf_ptr arg0, mpq_srcptr arg1) [free function]"], libgmp_lib ) ) gmpq_set_d_type = ctypes.CFUNCTYPE( None, ctypes.POINTER( __mpq_struct ), ctypes.c_double ) -gmpq_set_d = gmpq_set_d_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern void __gmpq_set_d(mpq_ptr arg0, double arg1) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpq_set_d = gmpq_set_d_type( ( libgmp_lib.undecorated_names["extern void __gmpq_set_d(mpq_ptr arg0, double arg1) [free function]"], libgmp_lib ) ) gmpz_lcm_type = ctypes.CFUNCTYPE( None, ctypes.POINTER( __mpz_struct ), ctypes.POINTER( __mpz_struct ), ctypes.POINTER( __mpz_struct ) ) -gmpz_lcm = gmpz_lcm_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern void __gmpz_lcm(mpz_ptr arg0, mpz_srcptr arg1, mpz_srcptr arg2) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpz_lcm = gmpz_lcm_type( ( libgmp_lib.undecorated_names["extern void __gmpz_lcm(mpz_ptr arg0, mpz_srcptr arg1, mpz_srcptr arg2) [free function]"], libgmp_lib ) ) gmpn_rshift_type = ctypes.CFUNCTYPE( ctypes.c_ulong, ctypes.POINTER( ctypes.c_ulong ), ctypes.POINTER( ctypes.c_ulong ), ctypes.c_long, ctypes.c_uint ) -gmpn_rshift = gmpn_rshift_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern mp_limb_t __gmpn_rshift(mp_ptr arg0, mp_srcptr arg1, mp_size_t arg2, unsigned int arg3) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpn_rshift = gmpn_rshift_type( ( libgmp_lib.undecorated_names["extern mp_limb_t __gmpn_rshift(mp_ptr arg0, mp_srcptr arg1, mp_size_t arg2, unsigned int arg3) [free function]"], libgmp_lib ) ) gmpf_set_z_type = ctypes.CFUNCTYPE( None, ctypes.POINTER( __mpf_struct ), ctypes.POINTER( __mpz_struct ) ) -gmpf_set_z = gmpf_set_z_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern void __gmpf_set_z(mpf_ptr arg0, mpz_srcptr arg1) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpf_set_z = gmpf_set_z_type( ( libgmp_lib.undecorated_names["extern void __gmpf_set_z(mpf_ptr arg0, mpz_srcptr arg1) [free function]"], libgmp_lib ) ) gmpq_set_den_type = ctypes.CFUNCTYPE( None, ctypes.POINTER( __mpq_struct ), ctypes.POINTER( __mpz_struct ) ) -gmpq_set_den = gmpq_set_den_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern void __gmpq_set_den(mpq_ptr arg0, mpz_srcptr arg1) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpq_set_den = gmpq_set_den_type( ( libgmp_lib.undecorated_names["extern void __gmpq_set_den(mpq_ptr arg0, mpz_srcptr arg1) [free function]"], libgmp_lib ) ) gmpz_get_str_type = ctypes.CFUNCTYPE( ctypes.c_char_p, ctypes.c_char_p, ctypes.c_int, ctypes.POINTER( __mpz_struct ) ) -gmpz_get_str = gmpz_get_str_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern char * __gmpz_get_str(char * arg0, int arg1, mpz_srcptr arg2) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpz_get_str = gmpz_get_str_type( ( libgmp_lib.undecorated_names["extern char * __gmpz_get_str(char * arg0, int arg1, mpz_srcptr arg2) [free function]"], libgmp_lib ) ) gmpf_init_set_type = ctypes.CFUNCTYPE( None, ctypes.POINTER( __mpf_struct ), ctypes.POINTER( __mpf_struct ) ) -gmpf_init_set = gmpf_init_set_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern void __gmpf_init_set(mpf_ptr arg0, mpf_srcptr arg1) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpf_init_set = gmpf_init_set_type( ( libgmp_lib.undecorated_names["extern void __gmpf_init_set(mpf_ptr arg0, mpf_srcptr arg1) [free function]"], libgmp_lib ) ) gmpz_get_ui_type = ctypes.CFUNCTYPE( ctypes.c_ulong, ctypes.POINTER( __mpz_struct ) ) -gmpz_get_ui = gmpz_get_ui_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["long unsigned int __gmpz_get_ui(mpz_srcptr __gmp_z) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpz_get_ui = gmpz_get_ui_type( ( libgmp_lib.undecorated_names["long unsigned int __gmpz_get_ui(mpz_srcptr __gmp_z) [free function]"], libgmp_lib ) ) gmpf_get_si_type = ctypes.CFUNCTYPE( ctypes.c_long, ctypes.POINTER( __mpf_struct ) ) -gmpf_get_si = gmpf_get_si_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern long int __gmpf_get_si(mpf_srcptr arg0) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmpf_get_si = gmpf_get_si_type( ( libgmp_lib.undecorated_names["extern long int __gmpf_get_si(mpf_srcptr arg0) [free function]"], libgmp_lib ) ) gmp_randinit_lc_2exp_type = ctypes.CFUNCTYPE( None, ctypes.POINTER( __gmp_randstate_struct ), ctypes.POINTER( __mpz_struct ), ctypes.c_ulong, ctypes.c_ulong ) -gmp_randinit_lc_2exp = gmp_randinit_lc_2exp_type( ( libgmp_dot_so_dot_3_dot_4lib.undecorated_names["extern void __gmp_randinit_lc_2exp(__gmp_randstate_struct * arg0, mpz_srcptr arg1, long unsigned int arg2, long unsigned int arg3) [free function]"], libgmp_dot_so_dot_3_dot_4lib ) ) +gmp_randinit_lc_2exp = gmp_randinit_lc_2exp_type( ( libgmp_lib.undecorated_names["extern void __gmp_randinit_lc_2exp(__gmp_randstate_struct * arg0, mpz_srcptr arg1, long unsigned int arg2, long unsigned int ... [truncated message content] |
From: <rom...@us...> - 2009-01-15 13:38:06
|
Revision: 1580 http://pygccxml.svn.sourceforge.net/pygccxml/?rev=1580&view=rev Author: roman_yakovenko Date: 2009-01-15 13:37:55 +0000 (Thu, 15 Jan 2009) Log Message: ----------- revert previous commit Modified Paths: -------------- pyplusplus_dev/pyplusplus/decl_wrappers/call_policies.py Modified: pyplusplus_dev/pyplusplus/decl_wrappers/call_policies.py =================================================================== --- pyplusplus_dev/pyplusplus/decl_wrappers/call_policies.py 2009-01-15 13:35:10 UTC (rev 1579) +++ pyplusplus_dev/pyplusplus/decl_wrappers/call_policies.py 2009-01-15 13:37:55 UTC (rev 1580) @@ -5,7 +5,6 @@ """Contains definition of call policies classes""" -import types import algorithm import python_traits from pygccxml import declarations @@ -215,18 +214,11 @@ """implements code generation for boost::python::return_value_policy call policies""" def __init__( self, result_converter_generator, base=None): compound_policy_t.__init__( self, base ) - if not isinstance( result_converter_generator, types.StringTypes ): - raise RuntimeError( "New value of return_value_policy_t.result_converter_generator type should be string, got( %s )." - % str( result_converter_generator ) ) - self._result_converter_generator = result_converter_generator def _get_result_converter_generator( self ): return self._result_converter_generator def _set_result_converter_generator( self, new_result_converter_generator): - if not isinstance( new_result_converter_generator, types.StringTypes ): - raise RuntimeError( "New value of return_value_policy_t.result_converter_generator type should be string, got( %s )." - % str( new_result_converter_generator ) ) self._result_converter_generator = new_result_converter_generator result_converter_generator = property( _get_result_converter_generator , _set_result_converter_generator ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rom...@us...> - 2009-01-15 13:35:15
|
Revision: 1579 http://pygccxml.svn.sourceforge.net/pygccxml/?rev=1579&view=rev Author: roman_yakovenko Date: 2009-01-15 13:35:10 +0000 (Thu, 15 Jan 2009) Log Message: ----------- better error message for an user mistake Modified Paths: -------------- pyplusplus_dev/pyplusplus/decl_wrappers/call_policies.py Modified: pyplusplus_dev/pyplusplus/decl_wrappers/call_policies.py =================================================================== --- pyplusplus_dev/pyplusplus/decl_wrappers/call_policies.py 2009-01-15 11:51:47 UTC (rev 1578) +++ pyplusplus_dev/pyplusplus/decl_wrappers/call_policies.py 2009-01-15 13:35:10 UTC (rev 1579) @@ -5,6 +5,7 @@ """Contains definition of call policies classes""" +import types import algorithm import python_traits from pygccxml import declarations @@ -214,11 +215,18 @@ """implements code generation for boost::python::return_value_policy call policies""" def __init__( self, result_converter_generator, base=None): compound_policy_t.__init__( self, base ) + if not isinstance( result_converter_generator, types.StringTypes ): + raise RuntimeError( "New value of return_value_policy_t.result_converter_generator type should be string, got( %s )." + % str( result_converter_generator ) ) + self._result_converter_generator = result_converter_generator def _get_result_converter_generator( self ): return self._result_converter_generator def _set_result_converter_generator( self, new_result_converter_generator): + if not isinstance( new_result_converter_generator, types.StringTypes ): + raise RuntimeError( "New value of return_value_policy_t.result_converter_generator type should be string, got( %s )." + % str( new_result_converter_generator ) ) self._result_converter_generator = new_result_converter_generator result_converter_generator = property( _get_result_converter_generator , _set_result_converter_generator ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rom...@us...> - 2009-01-15 12:54:43
|
Revision: 1578 http://pygccxml.svn.sourceforge.net/pygccxml/?rev=1578&view=rev Author: roman_yakovenko Date: 2009-01-15 11:51:47 +0000 (Thu, 15 Jan 2009) Log Message: ----------- making ctypes tests to work on windows Modified Paths: -------------- pyplusplus_dev/unittests/autoconfig.py pyplusplus_dev/unittests/ctypes_pof_tester.py Modified: pyplusplus_dev/unittests/autoconfig.py =================================================================== --- pyplusplus_dev/unittests/autoconfig.py 2009-01-15 08:57:39 UTC (rev 1577) +++ pyplusplus_dev/unittests/autoconfig.py 2009-01-15 11:51:47 UTC (rev 1578) @@ -25,7 +25,7 @@ gccxml_version = '__GCCXML_09__' class cxx_parsers_cfg: - gccxml = pygccxml.parser.load_gccxml_configuration( 'gccxml.cfg' + gccxml = pygccxml.parser.load_gccxml_configuration( os.path.join( this_module_dir_path, 'gccxml.cfg' ) , gccxml_path=gccxml.executable , working_directory=data_directory , compiler=pygccxml.utils.native_compiler.get_gccxml_compiler() ) @@ -72,14 +72,14 @@ return os.linesep.join( code ) @staticmethod - def compile( cmd ) : + def compile( cmd, cwd=build_directory ) : print '\n', cmd process = subprocess.Popen( args=cmd , shell=True , stdin=subprocess.PIPE , stdout=subprocess.PIPE , stderr=subprocess.STDOUT - , cwd=this_module_dir_path ) + , cwd=cwd ) process.stdin.close() while process.poll() is None: Modified: pyplusplus_dev/unittests/ctypes_pof_tester.py =================================================================== --- pyplusplus_dev/unittests/ctypes_pof_tester.py 2009-01-15 08:57:39 UTC (rev 1577) +++ pyplusplus_dev/unittests/ctypes_pof_tester.py 2009-01-15 11:51:47 UTC (rev 1578) @@ -58,7 +58,7 @@ if self.base_name in sys.modules: return sys.modules[ self.base_name ] - autoconfig.scons_config.compile( self.__build_scons_cmd() ) + autoconfig.scons_config.compile( self.__build_scons_cmd(), cwd=autoconfig.this_module_dir_path ) mb = ctypes_module_builder_t( [self.header], self.symbols_file, autoconfig.cxx_parsers_cfg.gccxml ) self.customize( mb ) mb.build_code_creator( self.library_file ) @@ -146,7 +146,7 @@ udt = self.module_ref.create() self.failUnless( 1977 == self.module_ref.read_user_data(udt) ) self.module_ref.destroy( udt ) - + class include_algorithm_tester_t( ctypes_base_tester_t ): def __init__( self, *args, **keywd ): ctypes_base_tester_t.__init__( self, 'include_algorithm', *args, **keywd ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rom...@us...> - 2009-01-15 08:57:42
|
Revision: 1577 http://pygccxml.svn.sourceforge.net/pygccxml/?rev=1577&view=rev Author: roman_yakovenko Date: 2009-01-15 08:57:39 +0000 (Thu, 15 Jan 2009) Log Message: ----------- making ctypes testers to work on windows with python 2.5 and visual studio 2003 Modified Paths: -------------- pyplusplus_dev/unittests/autoconfig.py pyplusplus_dev/unittests/ctypes_pof_tester.py pyplusplus_dev/unittests/sconstruct Modified: pyplusplus_dev/unittests/autoconfig.py =================================================================== --- pyplusplus_dev/unittests/autoconfig.py 2009-01-15 08:39:29 UTC (rev 1576) +++ pyplusplus_dev/unittests/autoconfig.py 2009-01-15 08:57:39 UTC (rev 1577) @@ -22,24 +22,22 @@ import pygccxml -compiler = pygccxml.utils.native_compiler.get_gccxml_compiler() -print 'GCCXML configured to simulate compiler ', compiler gccxml_version = '__GCCXML_09__' + class cxx_parsers_cfg: - keywd = { 'working_directory' : data_directory - , 'define_symbols' : [ gccxml_version ] - , 'compiler' : compiler - , 'gccxml_path': gccxml.executable } + gccxml = pygccxml.parser.load_gccxml_configuration( 'gccxml.cfg' + , gccxml_path=gccxml.executable + , working_directory=data_directory + , compiler=pygccxml.utils.native_compiler.get_gccxml_compiler() ) + gccxml.define_symbols.append( gccxml_version ) if 'win' in sys.platform: - keywd['define_symbols'].append( '__PYGCCXML_%s__' % compiler.upper() ) - if 'msvc9' == compiler: - keywd['define_symbols'].append( '_HAS_TR1=0' ) + gccxml.define_symbols.append( '__PYGCCXML_%s__' % gccxml.compiler.upper() ) + if 'msvc9' == gccxml.compiler: + gccxml.define_symbols.append( '_HAS_TR1=0' ) - gccxml = pygccxml.parser.gccxml_configuration_t( **keywd ) +print 'GCCXML configured to simulate compiler ', cxx_parsers_cfg.gccxml.compiler - - class scons_config: libs = [] libpath = [ python.libs ] + boost.libs Modified: pyplusplus_dev/unittests/ctypes_pof_tester.py =================================================================== --- pyplusplus_dev/unittests/ctypes_pof_tester.py 2009-01-15 08:39:29 UTC (rev 1576) +++ pyplusplus_dev/unittests/ctypes_pof_tester.py 2009-01-15 08:57:39 UTC (rev 1577) @@ -48,12 +48,17 @@ def customize(self, mb ): pass + def __build_scons_cmd( self ): + cmd = autoconfig.scons.cmd_build + ' ' + self.base_name + if autoconfig.cxx_parsers_cfg.gccxml.compiler == 'msvc71': + cmd = cmd + ' use_msvc71=True' + return cmd + def setUp( self ): if self.base_name in sys.modules: return sys.modules[ self.base_name ] - #~ import pdb - #~ pdb.set_trace() - autoconfig.scons_config.compile( autoconfig.scons.cmd_build + ' ' + self.base_name ) + + autoconfig.scons_config.compile( self.__build_scons_cmd() ) mb = ctypes_module_builder_t( [self.header], self.symbols_file, autoconfig.cxx_parsers_cfg.gccxml ) self.customize( mb ) mb.build_code_creator( self.library_file ) @@ -150,7 +155,7 @@ self.failUnless( mb.global_ns.class_( 'io_marker_t' ).ignore == False ) def test(self): - self.failUnless( mb.module_ref.io_marker_t ) + self.failUnless( self.module_ref.io_marker_t ) class anonymous_tester_t( ctypes_base_tester_t ): def __init__( self, *args, **keywd ): @@ -166,12 +171,12 @@ 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)) - #~ suite.addTest( unittest.makeSuite(enums_tester_t)) - #~ suite.addTest( unittest.makeSuite(opaque_tester_t)) - #~ suite.addTest( unittest.makeSuite(include_algorithm_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)) return suite Modified: pyplusplus_dev/unittests/sconstruct =================================================================== --- pyplusplus_dev/unittests/sconstruct 2009-01-15 08:39:29 UTC (rev 1576) +++ pyplusplus_dev/unittests/sconstruct 2009-01-15 08:57:39 UTC (rev 1577) @@ -1,8 +1,12 @@ import os import sys -env = Environment() +opts = Options( "options.txt", ARGUMENTS ) +opts.Add( BoolOption( 'use_msvc71', 'use msvc71 compiler', False ) ) + +env = Environment(options=opts) + if 'win32' in sys.platform: if os.path.exists( r'E:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib' ): env.Append( LIBPATH=[ r'E:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib' @@ -13,6 +17,12 @@ env.AppendUnique( CCFLAGS=[ r"/MD",r"/EHsc",r"/GR",r"/Zc:wchar_t",r"/Zc:forScope" ] ) env.AppendUnique( LINKFLAGS=[r"/MAP:${TARGET.base}.map", r"/MAPINFO:EXPORTS"] ) + if env[ 'use_msvc71' ]: + env['MSVS'] = {'VERSION': '7.1'} + env['MSVS_VERSION'] = '7.1' + Tool('msvc')(env) + + env.AppendUnique( CPPPATH=['#data'] ) scripts = [ 'pof', 'issues', 'enums', 'opaque', 'include_algorithm', 'anonymous' ] This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rom...@us...> - 2009-01-15 08:39:35
|
Revision: 1576 http://pygccxml.svn.sourceforge.net/pygccxml/?rev=1576&view=rev Author: roman_yakovenko Date: 2009-01-15 08:39:29 +0000 (Thu, 15 Jan 2009) Log Message: ----------- removing dead code ( reference to pdb ) Modified Paths: -------------- pygccxml_dev/unittests/type_traits_tester.py pyplusplus_dev/pyplusplus/code_creators/fields_definition.py pyplusplus_dev/unittests/member_variables_tester.py pyplusplus_dev/unittests/unions_tester.py Modified: pygccxml_dev/unittests/type_traits_tester.py =================================================================== --- pygccxml_dev/unittests/type_traits_tester.py 2009-01-15 07:06:24 UTC (rev 1575) +++ pygccxml_dev/unittests/type_traits_tester.py 2009-01-15 08:39:29 UTC (rev 1576) @@ -45,9 +45,6 @@ elif isinstance( decl, declarations.calldef_t ) and decl.name.startswith( 'test_' ): continue else: - #~ if 'mf1_type_const_volatile_t' in decl.name: - #~ import pdb - #~ pdb.set_trace() self.failUnless( controller( decl ) , 'for type "%s" the answer to the question "%s" should be True' % ( decl.decl_string, ns_name ) ) Modified: pyplusplus_dev/pyplusplus/code_creators/fields_definition.py =================================================================== --- pyplusplus_dev/pyplusplus/code_creators/fields_definition.py 2009-01-15 07:06:24 UTC (rev 1575) +++ pyplusplus_dev/pyplusplus/code_creators/fields_definition.py 2009-01-15 08:39:29 UTC (rev 1576) @@ -30,10 +30,7 @@ return False def _create_impl(self): - result = [] - #~ import pdb - #~ pdb.set_trace() - + result = [] anonymous_vars = self.declaration.vars( self.has_unnamed_type, recursive=False, allow_empty=True ) if anonymous_vars: formated_vars = [] Modified: pyplusplus_dev/unittests/member_variables_tester.py =================================================================== --- pyplusplus_dev/unittests/member_variables_tester.py 2009-01-15 07:06:24 UTC (rev 1575) +++ pyplusplus_dev/unittests/member_variables_tester.py 2009-01-15 08:39:29 UTC (rev 1576) @@ -8,7 +8,6 @@ import ctypes import unittest import fundamental_tester_base -import pdb class tester_t(fundamental_tester_base.fundamental_tester_base_t): EXTENSION_NAME = 'member_variables' @@ -92,7 +91,6 @@ image = module.image_t() - #pdb.set_trace() data_type = ctypes.POINTER( ctypes.c_int ) data = data_type.from_address( image.data ) for j in range(5): Modified: pyplusplus_dev/unittests/unions_tester.py =================================================================== --- pyplusplus_dev/unittests/unions_tester.py 2009-01-15 07:06:24 UTC (rev 1575) +++ pyplusplus_dev/unittests/unions_tester.py 2009-01-15 08:39:29 UTC (rev 1576) @@ -5,7 +5,6 @@ import os import sys -import pdb import ctypes import unittest import fundamental_tester_base This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rom...@us...> - 2009-01-15 07:06:31
|
Revision: 1575 http://pygccxml.svn.sourceforge.net/pygccxml/?rev=1575&view=rev Author: roman_yakovenko Date: 2009-01-15 07:06:24 +0000 (Thu, 15 Jan 2009) Log Message: ----------- update load_gccxml_configuration functionality and integrate it with tests Modified Paths: -------------- pygccxml_dev/pygccxml/parser/config.py pygccxml_dev/unittests/autoconfig.py pygccxml_dev/unittests/undname_creator_tester.py Modified: pygccxml_dev/pygccxml/parser/config.py =================================================================== --- pygccxml_dev/pygccxml/parser/config.py 2009-01-15 07:04:23 UTC (rev 1574) +++ pygccxml_dev/pygccxml/parser/config.py 2009-01-15 07:06:24 UTC (rev 1575) @@ -194,7 +194,7 @@ config_t = gccxml_configuration_t #backward computability -def load_gccxml_configuration( configuration ): +def load_gccxml_configuration( configuration, **defaults ): """loads GCC-XML configuration from a file Configuration file sceleton: @@ -230,7 +230,16 @@ gccxml_cfg = gccxml_configuration_t() if not parser.has_section( 'gccxml' ): return gccxml_cfg + + values = defaults + if not values: + values = {} + for name, value in parser.items( 'gccxml' ): + if value.strip(): + values[ name ] = value + + for name, value in values.iteritems(): value = value.strip() if name == 'gccxml_path': gccxml_cfg.gccxml_path = value Modified: pygccxml_dev/unittests/autoconfig.py =================================================================== --- pygccxml_dev/unittests/autoconfig.py 2009-01-15 07:04:23 UTC (rev 1574) +++ pygccxml_dev/unittests/autoconfig.py 2009-01-15 07:06:24 UTC (rev 1575) @@ -27,77 +27,19 @@ import pygccxml print 'unittests will run on DEVELOPMENT version' -compiler = pygccxml.utils.native_compiler.get_gccxml_compiler() -print 'GCCXML configured to simulate compiler ', compiler pygccxml.declarations.class_t.USE_DEMANGLED_AS_NAME = True class cxx_parsers_cfg: - keywd = { 'working_directory' : data_directory - , 'define_symbols' : [ gccxml_version ] - , 'compiler' : compiler } + gccxml = pygccxml.parser.load_gccxml_configuration( 'gccxml.cfg' + , gccxml_path=gccxml_path + , working_directory=data_directory + , compiler=pygccxml.utils.native_compiler.get_gccxml_compiler() ) + gccxml.define_symbols.append( gccxml_version ) if 'win' in sys.platform: - keywd['define_symbols'].append( '__PYGCCXML_%s__' % compiler.upper() ) - if 'msvc9' == compiler: - keywd['define_symbols'].append( '_HAS_TR1=0' ) + gccxml.define_symbols.append( '__PYGCCXML_%s__' % gccxml.compiler.upper() ) + if 'msvc9' == gccxml.compiler: + gccxml.define_symbols.append( '_HAS_TR1=0' ) - - if os.path.exists( os.path.join( gccxml_path, 'gccxml' ) ) \ - or os.path.exists( os.path.join( gccxml_path, 'gccxml.exe' ) ): - keywd[ 'gccxml_path'] = gccxml_path - gccxml = pygccxml.parser.gccxml_configuration_t( **keywd ) - - #~ pdb_loader = None - #~ if sys.platform == 'win32': - #~ from pygccxml.msvc import mspdb - #~ pdb_file = os.path.join( data_directory, 'msvc_build', 'Debug', 'msvc_build.pdb' ) - #~ if os.path.exists( pdb_file ): - #~ pdb_loader = mspdb.decl_loader_t( pdb_file ) - #~ pdb_loader.read() - -#~ def get_pdb_global_ns(): - #~ if cxx_parsers_cfg.pdb_loader: - #~ return cxx_parsers_cfg.pdb_loader.global_ns - -#~ try: - #~ import pydsc - #~ pydsc.include( r'D:\pygccxml_sources\sources\pygccxml_dev' ) - #~ pydsc.ignore( [ 'Yakovenko' - #~ , 'Bierbaum' - #~ , 'org' - #~ , 'http' - #~ , 'bool' - #~ , 'str' - #~ , 'www' - #~ , 'param' - #~ , 'txt' - #~ , 'decl' - #~ , 'decls' - #~ , 'namespace' - #~ , 'namespaces' - #~ , 'enum' - #~ , 'const' - #~ , 'GCC' - #~ , 'xcc' - #~ , 'TODO' - #~ , 'typedef' - #~ , 'os' - #~ , 'normcase' - #~ , 'normpath' - #~ , 'scopedef' - #~ , 'ira'#part of Matthias mail address - #~ , 'uka'#part of Matthias mail address - #~ , 'de'#part of Matthias mail address - #~ , 'dat'#file extension of directory cache - #~ , 'config'#parameter description - #~ , 'gccxml'#parameter description - #~ , 'Py++' - #~ , 'pygccxml' - #~ , 'calldef' - #~ , 'XXX' - #~ , 'wstring' - #~ , 'py' - #~ ] ) -#~ except ImportError: - #~ pass +print 'GCCXML configured to simulate compiler ', cxx_parsers_cfg.gccxml.compiler Modified: pygccxml_dev/unittests/undname_creator_tester.py =================================================================== --- pygccxml_dev/unittests/undname_creator_tester.py 2009-01-15 07:04:23 UTC (rev 1574) +++ pygccxml_dev/unittests/undname_creator_tester.py 2009-01-15 07:06:24 UTC (rev 1575) @@ -41,7 +41,7 @@ #typeinfo name for number_t , '_ZTI8number_t' , '_ZTV8number_t' - , '_ZTS8number_t' + , '_ZTS8number_t' #it seems that gccxml doesn't report this one , '_ZNSt12auto_ptr_refI8number_tEC1EPS0_' #the following are some global symbols @@ -65,7 +65,7 @@ tester_t.global_ns = declarations.get_global_namespace( decls ) tester_t.global_ns.init_optimizer() - process = subprocess.Popen( args='scons msvc_compiler=%s' % autoconfig.compiler + process = subprocess.Popen( args='scons msvc_compiler=%s' % autoconfig.cxx_parsers_cfg.gccxml.compiler , shell=True , stdin=subprocess.PIPE , stdout=subprocess.PIPE @@ -94,7 +94,7 @@ symbols, parser = binary_parsers.merge_information( self.global_ns, fname, runs_under_unittest=True ) self.failUnless( len(symbols) == expected_symbols , "The expected symbols number(%d), is different frm the actual one(%d)" - % ( expected_symbols, len(symbols) ) ) + % ( expected_symbols, len(symbols) ) ) self.failUnless( 'identity' in symbols ) blob_names = set() @@ -118,7 +118,9 @@ blob_names.difference_update(common) if not self.known_issues.issubset( blob_names ): blob_names.difference_update( self.known_issues ) - msg = [ "undecorate_decl - failed" ] + if sys.version_info[0] == 2 and sys.version_info[1] == 5: + if 0 == len(decl_blob_names) and 0 ==len(blob_names): + return msg.append( "decl_blob_names :" ) for i in decl_blob_names: msg.append( '\t==>%s<==' % i ) @@ -130,11 +132,11 @@ def test_map_file( self ): if 'win32' in sys.platform: - self.__tester_impl( self.map_file ) + self.__tester_impl( self.map_file, 71 ) def test_dll_file( self ): if 'win32' in sys.platform: - self.__tester_impl( self.dll_file ) + self.__tester_impl( self.dll_file, 71 ) def test_z_compare_parsers( self ): if 'win32' not in sys.platform: @@ -159,7 +161,7 @@ if 'linux2' in sys.platform: self.__tester_impl( self.so_file, 64 ) - def dont_test_print( self ): + def dont_test_print( self ): """primary used for debugging""" symbols, parser = binary_parsers.merge_information( self.global_ns, self.so_file, runs_under_unittest=True ) for f in self.global_ns.calldefs( allow_empty=True, recursive=True ): This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rom...@us...> - 2009-01-15 07:04:33
|
Revision: 1574 http://pygccxml.svn.sourceforge.net/pygccxml/?rev=1574&view=rev Author: roman_yakovenko Date: 2009-01-15 07:04:23 +0000 (Thu, 15 Jan 2009) Log Message: ----------- replace md5 with hashlib module (removes deprecation warnings) Modified Paths: -------------- pygccxml_dev/pygccxml/parser/directory_cache.py Modified: pygccxml_dev/pygccxml/parser/directory_cache.py =================================================================== --- pygccxml_dev/pygccxml/parser/directory_cache.py 2009-01-14 19:30:12 UTC (rev 1573) +++ pygccxml_dev/pygccxml/parser/directory_cache.py 2009-01-15 07:04:23 UTC (rev 1574) @@ -14,7 +14,7 @@ argument of the L{parse()} function. """ -import os, os.path, gzip, md5 +import os, os.path, gzip, hashlib import cPickle import declarations_cache @@ -27,7 +27,7 @@ This class is a helper class for the directory_cache_t class. """ - + def __init__( self, filesigs, configsig ): """Constructor. @@ -42,8 +42,8 @@ def __setstate__(self, state): self.filesigs, self.configsig = state - + class directory_cache_t ( declarations_cache.cache_base_t ): """Cache class that stores its data as multiple files inside a directory. @@ -103,7 +103,7 @@ def flush(self): """Save the index table to disk.""" - self._save() + self._save() # self.__filename_rep._dump() def update(self, source_file, configuration, declarations, included_files): @@ -152,7 +152,7 @@ cachefilename = self._create_cache_filename(source_file) self._write_file(cachefilename, declarations) - + def cached_value(self, source_file, configuration): """Return the cached declarations or None. @@ -167,7 +167,7 @@ key = self._create_cache_key(source_file) entry = self.__index.get(key) if entry==None: -# print "CACHE: %s: Not cached"%source_file +# print "CACHE: %s: Not cached"%source_file return None # Check if the entry is still valid. It is not valid if: @@ -220,7 +220,7 @@ else: self.__index = {} self.__filename_rep = filename_repository_t(self.__md5_sigs) - + self.__modified_flag = False def _save(self): @@ -267,8 +267,8 @@ else: f = file(filename, "wb") cPickle.dump(data, f, cPickle.HIGHEST_PROTOCOL) - f.close() - + f.close() + def _remove_entry(self, source_file, key): """Remove an entry from the cache. @@ -285,7 +285,7 @@ @param key: Key value for the specified header file @type key: hashable object """ - + entry = self.__index.get(key) if entry==None: return @@ -340,7 +340,7 @@ @returns: Signature @rtype: str """ - m = md5.new() + m = hashlib.md5() m.update(config.working_directory) map(lambda p: m.update(p), config.include_paths) map(lambda p: m.update(p), config.define_symbols) @@ -349,8 +349,8 @@ return m.digest() - + class filename_entry_t: """This is a record stored in the filename_repository_t class. @@ -368,7 +368,7 @@ self.filename = filename # Reference count self.refcount = 0 - + # Cached signature value for the file. # If sig_valid flag is False, the signature still has to be computed, # otherwise the cached value can be used. @@ -410,7 +410,7 @@ def __init__( self, md5_sigs ): """Constructor. """ - + # Flag that determines whether the signature is a md5 digest or # the modification time # (this flag is passed to the filename_repository_t class) @@ -433,7 +433,7 @@ """Acquire a file name and return its id and its signature. """ id_ = self.__id_lut.get(name) - # Is this a new entry? + # Is this a new entry? if id_==None: # then create one... id_ = self.__next_id @@ -447,7 +447,7 @@ entry.inc_ref_count() return id_, self._get_signature(entry) - + def release_filename(self, id_): """Release a file name. """ @@ -467,7 +467,7 @@ if entry==None: raise ValueError, "Invalid filename id_ (%d)"%id_ - # Is the signature already known? + # Is the signature already known? if entry.sig_valid: # use the cached signature filesig = entry.signature @@ -501,7 +501,7 @@ return None data = f.read() f.close() - return md5.new(data).digest() + return hashlib.md5(data).digest() else: # return file modification date... try: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rom...@us...> - 2009-01-14 19:30:17
|
Revision: 1573 http://pygccxml.svn.sourceforge.net/pygccxml/?rev=1573&view=rev Author: roman_yakovenko Date: 2009-01-14 19:30:12 +0000 (Wed, 14 Jan 2009) Log Message: ----------- making gmp example to work Modified Paths: -------------- pyplusplus_dev/examples/gmplib_dev/dev/generate_code.py pyplusplus_dev/examples/gmplib_dev/pygmplib/__init__.py pyplusplus_dev/unittests/ctypes_pof_tester.py pyplusplus_dev/unittests/data/ctypes/anonymous/anonymous.cpp pyplusplus_dev/unittests/data/ctypes/anonymous/anonymous.h Modified: pyplusplus_dev/examples/gmplib_dev/dev/generate_code.py =================================================================== --- pyplusplus_dev/examples/gmplib_dev/dev/generate_code.py 2009-01-14 15:14:35 UTC (rev 1572) +++ pyplusplus_dev/examples/gmplib_dev/dev/generate_code.py 2009-01-14 19:30:12 UTC (rev 1573) @@ -25,12 +25,12 @@ for f in mb.calldefs( lambda x: x.name.startswith('__gmp') ): f.alias = f.name[2:] -#there is a bug in "include" algorithm - I need to wrote DFS +#there is a bug in "include" algorithm - I need to wrote BFS mb.class_( '_IO_FILE' ).opaque = True +#another dependency bug - internal union is not included +mb.class_( '__gmp_randstate_struct' ).include() -#include should work as expected - include only exported function -#~ mb.print_declarations() mb.build_code_creator( project_env.gmp.shared_library_file ) mb.write_module( os.path.join( project_env.gmp.generated_code_dir, '__init__.py' ) ) Modified: pyplusplus_dev/examples/gmplib_dev/pygmplib/__init__.py =================================================================== --- pyplusplus_dev/examples/gmplib_dev/pygmplib/__init__.py 2009-01-14 15:14:35 UTC (rev 1572) +++ pyplusplus_dev/examples/gmplib_dev/pygmplib/__init__.py 2009-01-14 19:30:12 UTC (rev 1573) @@ -617,217 +617,22 @@ "__gmpf_init_set_str" : "extern int __gmpf_init_set_str(mpf_ptr arg0, char const * arg1, int arg2) [free function]", } -class std: - """namespace std""" - -class __gnu_cxx: - """namespace __gnu_cxx""" - -class __cxxabiv1: - """namespace __cxxabiv1""" - class gmp_randalg_t( ctypes_utils.Enumeration ): GMP_RAND_ALG_DEFAULT = 0 GMP_RAND_ALG_LC = 0 -class (ctypes.Structure): - """class """ - - class (ctypes.Structure): - """class """ - -class _G_fpos64_t(ctypes.Structure): - """class _G_fpos64_t""" - -class _G_fpos_t(ctypes.Structure): - """class _G_fpos_t""" - class _IO_FILE(ctypes.Structure): """class _IO_FILE""" def __init__( self, *args, **keywd ): raise RuntimeError( "Unable to create instance of opaque type." ) -class _IO_cookie_io_functions_t(ctypes.Structure): - """class _IO_cookie_io_functions_t""" - -class _IO_marker(ctypes.Structure): - """class _IO_marker""" - -class __base_class_type_info_pseudo(ctypes.Structure): - """class __base_class_type_info_pseudo""" - -class __class_type_info_pseudo(ctypes.Structure): - """class __class_type_info_pseudo""" - -class __forced_unwind(ctypes.Structure): - """class __cxxabiv1::__forced_unwind""" - - -__cxxabiv1.__forced_unwind = __forced_unwind - -class __fsid_t(ctypes.Structure): - """class __fsid_t""" - class __gmp_randstate_struct(ctypes.Structure): """class __gmp_randstate_struct""" - class (ctypes.Structure): + class _(ctypes.Union): """class __gmp_randstate_struct""" -class __add_unsigned_less__char__greater_(ctypes.Structure): - """class __gnu_cxx::__add_unsigned< char >""" - - -__gnu_cxx.__add_unsigned_less__char__greater_ = __add_unsigned_less__char__greater_ - -class __add_unsigned_less__int__greater_(ctypes.Structure): - """class __gnu_cxx::__add_unsigned< int >""" - - -__gnu_cxx.__add_unsigned_less__int__greater_ = __add_unsigned_less__int__greater_ - -class __add_unsigned_less__long_long__greater_(ctypes.Structure): - """class __gnu_cxx::__add_unsigned< long long >""" - - -__gnu_cxx.__add_unsigned_less__long_long__greater_ = __add_unsigned_less__long_long__greater_ - -class __add_unsigned_less__long__greater_(ctypes.Structure): - """class __gnu_cxx::__add_unsigned< long >""" - - -__gnu_cxx.__add_unsigned_less__long__greater_ = __add_unsigned_less__long__greater_ - -class __add_unsigned_less__short__greater_(ctypes.Structure): - """class __gnu_cxx::__add_unsigned< short >""" - - -__gnu_cxx.__add_unsigned_less__short__greater_ = __add_unsigned_less__short__greater_ - -class __add_unsigned_less__signed_char__greater_(ctypes.Structure): - """class __gnu_cxx::__add_unsigned< signed char >""" - - -__gnu_cxx.__add_unsigned_less__signed_char__greater_ = __add_unsigned_less__signed_char__greater_ - -class __conditional_type_less__true_comma____gnu_cxx_scope___numeric_traits_integer_less__int__greater__comma____gnu_cxx_scope___numeric_traits_floating_less__int__greater___greater_(ctypes.Structure): - """class __gnu_cxx::__conditional_type< true, __gnu_cxx::__numeric_traits_integer< int >, __gnu_cxx::__numeric_traits_floating< int > >""" - - -__gnu_cxx.__conditional_type_less__true_comma____gnu_cxx_scope___numeric_traits_integer_less__int__greater__comma____gnu_cxx_scope___numeric_traits_floating_less__int__greater___greater_ = __conditional_type_less__true_comma____gnu_cxx_scope___numeric_traits_integer_less__int__greater__comma____gnu_cxx_scope___numeric_traits_floating_less__int__greater___greater_ - -class __conditional_type_less__true_comma____gnu_cxx_scope___numeric_traits_integer_less__short__greater__comma____gnu_cxx_scope___numeric_traits_floating_less__short__greater___greater_(ctypes.Structure): - """class __gnu_cxx::__conditional_type< true, __gnu_cxx::__numeric_traits_integer< short >, __gnu_cxx::__numeric_traits_floating< short > >""" - - -__gnu_cxx.__conditional_type_less__true_comma____gnu_cxx_scope___numeric_traits_integer_less__short__greater__comma____gnu_cxx_scope___numeric_traits_floating_less__short__greater___greater_ = __conditional_type_less__true_comma____gnu_cxx_scope___numeric_traits_integer_less__short__greater__comma____gnu_cxx_scope___numeric_traits_floating_less__short__greater___greater_ - -class __conditional_type_less__true_comma____gnu_cxx_scope___numeric_traits_integer_less__unsigned_long__greater__comma____gnu_cxx_scope___numeric_traits_floating_less__unsigned_long__greater___greater_(ctypes.Structure): - """class __gnu_cxx::__conditional_type< true, __gnu_cxx::__numeric_traits_integer< unsigned long >, __gnu_cxx::__numeric_traits_floating< unsigned long > >""" - - -__gnu_cxx.__conditional_type_less__true_comma____gnu_cxx_scope___numeric_traits_integer_less__unsigned_long__greater__comma____gnu_cxx_scope___numeric_traits_floating_less__unsigned_long__greater___greater_ = __conditional_type_less__true_comma____gnu_cxx_scope___numeric_traits_integer_less__unsigned_long__greater__comma____gnu_cxx_scope___numeric_traits_floating_less__unsigned_long__greater___greater_ - -class __conditional_type_less__true_comma__unsigned_long_comma__unsigned_long_long__greater_(ctypes.Structure): - """class __gnu_cxx::__conditional_type< true, unsigned long, unsigned long long >""" - - -__gnu_cxx.__conditional_type_less__true_comma__unsigned_long_comma__unsigned_long_long__greater_ = __conditional_type_less__true_comma__unsigned_long_comma__unsigned_long_long__greater_ - -class __type(ctypes.Structure): - """class __gnu_cxx::__numeric_traits_integer< int >""" - - -__gnu_cxx.__type = __type - -class __numeric_traits_less__int__greater_(ctypes.Structure): - """class __gnu_cxx::__numeric_traits< int >""" - - -__gnu_cxx.__numeric_traits_less__int__greater_ = __numeric_traits_less__int__greater_ - -class __type(ctypes.Structure): - """class __gnu_cxx::__numeric_traits_integer< short >""" - - -__gnu_cxx.__type = __type - -class __numeric_traits_less__short__greater_(ctypes.Structure): - """class __gnu_cxx::__numeric_traits< short >""" - - -__gnu_cxx.__numeric_traits_less__short__greater_ = __numeric_traits_less__short__greater_ - -class __type(ctypes.Structure): - """class __gnu_cxx::__numeric_traits_integer< unsigned long >""" - - -__gnu_cxx.__type = __type - -class __numeric_traits_less__unsigned_long__greater_(ctypes.Structure): - """class __gnu_cxx::__numeric_traits< unsigned long >""" - - -__gnu_cxx.__numeric_traits_less__unsigned_long__greater_ = __numeric_traits_less__unsigned_long__greater_ - -class __remove_unsigned_less__char__greater_(ctypes.Structure): - """class __gnu_cxx::__remove_unsigned< char >""" - - -__gnu_cxx.__remove_unsigned_less__char__greater_ = __remove_unsigned_less__char__greater_ - -class __remove_unsigned_less__unsigned_char__greater_(ctypes.Structure): - """class __gnu_cxx::__remove_unsigned< unsigned char >""" - - -__gnu_cxx.__remove_unsigned_less__unsigned_char__greater_ = __remove_unsigned_less__unsigned_char__greater_ - -class __remove_unsigned_less__unsigned_int__greater_(ctypes.Structure): - """class __gnu_cxx::__remove_unsigned< unsigned int >""" - - -__gnu_cxx.__remove_unsigned_less__unsigned_int__greater_ = __remove_unsigned_less__unsigned_int__greater_ - -class __remove_unsigned_less__unsigned_long_long__greater_(ctypes.Structure): - """class __gnu_cxx::__remove_unsigned< unsigned long long >""" - - -__gnu_cxx.__remove_unsigned_less__unsigned_long_long__greater_ = __remove_unsigned_less__unsigned_long_long__greater_ - -class __remove_unsigned_less__unsigned_long__greater_(ctypes.Structure): - """class __gnu_cxx::__remove_unsigned< unsigned long >""" - - -__gnu_cxx.__remove_unsigned_less__unsigned_long__greater_ = __remove_unsigned_less__unsigned_long__greater_ - -class __remove_unsigned_less__unsigned_short__greater_(ctypes.Structure): - """class __gnu_cxx::__remove_unsigned< unsigned short >""" - - -__gnu_cxx.__remove_unsigned_less__unsigned_short__greater_ = __remove_unsigned_less__unsigned_short__greater_ - -class new_allocator_less__char__greater_(ctypes.Structure): - """class __gnu_cxx::new_allocator< char >""" - - -__gnu_cxx.new_allocator_less__char__greater_ = new_allocator_less__char__greater_ - -class new_allocator_less__wchar_t__greater_(ctypes.Structure): - """class __gnu_cxx::new_allocator< wchar_t >""" - - -__gnu_cxx.new_allocator_less__wchar_t__greater_ = new_allocator_less__wchar_t__greater_ - -class __locale_struct(ctypes.Structure): - """class __locale_struct""" - -class __mbstate_t(ctypes.Structure): - """class __mbstate_t""" - - class (ctypes.Structure): - """class __mbstate_t""" - class __mpf_struct(ctypes.Structure): """class __mpf_struct""" @@ -837,1494 +642,6 @@ class __mpz_struct(ctypes.Structure): """class __mpz_struct""" -class __pthread_cleanup_class(ctypes.Structure): - """class __pthread_cleanup_class""" - -class __pthread_cleanup_frame(ctypes.Structure): - """class __pthread_cleanup_frame""" - -class __pthread_internal_slist(ctypes.Structure): - """class __pthread_internal_slist""" - -class __sched_param(ctypes.Structure): - """class __sched_param""" - -class __si_class_type_info_pseudo(ctypes.Structure): - """class __si_class_type_info_pseudo""" - -class __sigset_t(ctypes.Structure): - """class __sigset_t""" - -class __type_info_pseudo(ctypes.Structure): - """class __type_info_pseudo""" - -class __vmi_class_type_info_pseudo1(ctypes.Structure): - """class __vmi_class_type_info_pseudo1""" - -class __vmi_class_type_info_pseudo2(ctypes.Structure): - """class __vmi_class_type_info_pseudo2""" - -class _pthread_cleanup_buffer(ctypes.Structure): - """class _pthread_cleanup_buffer""" - -class cpu_set_t(ctypes.Structure): - """class cpu_set_t""" - -class itimerspec(ctypes.Structure): - """class itimerspec""" - -class lconv(ctypes.Structure): - """class lconv""" - -class pthread_attr_t(ctypes.Structure): - """class pthread_attr_t""" - -class pthread_barrier_t(ctypes.Structure): - """class pthread_barrier_t""" - -class pthread_barrierattr_t(ctypes.Structure): - """class pthread_barrierattr_t""" - -class pthread_cond_t(ctypes.Structure): - """class pthread_cond_t""" - - class (ctypes.Structure): - """class pthread_cond_t""" - -class pthread_condattr_t(ctypes.Structure): - """class pthread_condattr_t""" - -class pthread_mutex_t(ctypes.Structure): - """class pthread_mutex_t""" - - class __pthread_mutex_s(ctypes.Structure): - """class pthread_mutex_t::__pthread_mutex_s""" - - class (ctypes.Structure): - """class pthread_mutex_t::__pthread_mutex_s""" - -class pthread_mutexattr_t(ctypes.Structure): - """class pthread_mutexattr_t""" - -class pthread_rwlock_t(ctypes.Structure): - """class pthread_rwlock_t""" - - class (ctypes.Structure): - """class pthread_rwlock_t""" - -class pthread_rwlockattr_t(ctypes.Structure): - """class pthread_rwlockattr_t""" - -class sched_param(ctypes.Structure): - """class sched_param""" - -class __copy_move_less__false_comma__false_comma__std_scope_random_access_iterator_tag__greater_(ctypes.Structure): - """class std::__copy_move< false, false, std::random_access_iterator_tag >""" - - -std.__copy_move_less__false_comma__false_comma__std_scope_random_access_iterator_tag__greater_ = __copy_move_less__false_comma__false_comma__std_scope_random_access_iterator_tag__greater_ - -class __copy_move_backward_less__false_comma__false_comma__std_scope_random_access_iterator_tag__greater_(ctypes.Structure): - """class std::__copy_move_backward< false, false, std::random_access_iterator_tag >""" - - -std.__copy_move_backward_less__false_comma__false_comma__std_scope_random_access_iterator_tag__greater_ = __copy_move_backward_less__false_comma__false_comma__std_scope_random_access_iterator_tag__greater_ - -class ctype_base(ctypes.Structure): - """class std::ctype_base""" - - -std.ctype_base = ctype_base - -class __ctype_abstract_base_less__wchar_t__greater_(ctypes.Structure): - """class std::__ctype_abstract_base< wchar_t >""" - - -std.__ctype_abstract_base_less__wchar_t__greater_ = __ctype_abstract_base_less__wchar_t__greater_ - -class __equal_less__true__greater_(ctypes.Structure): - """class std::__equal< true >""" - - -std.__equal_less__true__greater_ = __equal_less__true__greater_ - -class __false_type(ctypes.Structure): - """class std::__false_type""" - - -std.__false_type = __false_type - -class __is_byte_less__char__greater_(ctypes.Structure): - """class std::__is_byte< char >""" - - -std.__is_byte_less__char__greater_ = __is_byte_less__char__greater_ - -class __is_byte_less__signed_char__greater_(ctypes.Structure): - """class std::__is_byte< signed char >""" - - -std.__is_byte_less__signed_char__greater_ = __is_byte_less__signed_char__greater_ - -class __is_byte_less__unsigned_char__greater_(ctypes.Structure): - """class std::__is_byte< unsigned char >""" - - -std.__is_byte_less__unsigned_char__greater_ = __is_byte_less__unsigned_char__greater_ - -class __is_char_less__char__greater_(ctypes.Structure): - """class std::__is_char< char >""" - - -std.__is_char_less__char__greater_ = __is_char_less__char__greater_ - -class __is_char_less__wchar_t__greater_(ctypes.Structure): - """class std::__is_char< wchar_t >""" - - -std.__is_char_less__wchar_t__greater_ = __is_char_less__wchar_t__greater_ - -class __is_floating_less__double__greater_(ctypes.Structure): - """class std::__is_floating< double >""" - - -std.__is_floating_less__double__greater_ = __is_floating_less__double__greater_ - -class __is_floating_less__float__greater_(ctypes.Structure): - """class std::__is_floating< float >""" - - -std.__is_floating_less__float__greater_ = __is_floating_less__float__greater_ - -class __is_floating_less__long_double__greater_(ctypes.Structure): - """class std::__is_floating< long double >""" - - -std.__is_floating_less__long_double__greater_ = __is_floating_less__long_double__greater_ - -class __is_integer_less__bool__greater_(ctypes.Structure): - """class std::__is_integer< bool >""" - - -std.__is_integer_less__bool__greater_ = __is_integer_less__bool__greater_ - -class __is_integer_less__char__greater_(ctypes.Structure): - """class std::__is_integer< char >""" - - -std.__is_integer_less__char__greater_ = __is_integer_less__char__greater_ - -class __is_integer_less__int__greater_(ctypes.Structure): - """class std::__is_integer< int >""" - - -std.__is_integer_less__int__greater_ = __is_integer_less__int__greater_ - -class __is_integer_less__long_long__greater_(ctypes.Structure): - """class std::__is_integer< long long >""" - - -std.__is_integer_less__long_long__greater_ = __is_integer_less__long_long__greater_ - -class __is_integer_less__long__greater_(ctypes.Structure): - """class std::__is_integer< long >""" - - -std.__is_integer_less__long__greater_ = __is_integer_less__long__greater_ - -class __is_integer_less__short__greater_(ctypes.Structure): - """class std::__is_integer< short >""" - - -std.__is_integer_less__short__greater_ = __is_integer_less__short__greater_ - -class __is_integer_less__signed_char__greater_(ctypes.Structure): - """class std::__is_integer< signed char >""" - - -std.__is_integer_less__signed_char__greater_ = __is_integer_less__signed_char__greater_ - -class __is_integer_less__unsigned_char__greater_(ctypes.Structure): - """class std::__is_integer< unsigned char >""" - - -std.__is_integer_less__unsigned_char__greater_ = __is_integer_less__unsigned_char__greater_ - -class __is_integer_less__unsigned_int__greater_(ctypes.Structure): - """class std::__is_integer< unsigned int >""" - - -std.__is_integer_less__unsigned_int__greater_ = __is_integer_less__unsigned_int__greater_ - -class __is_integer_less__unsigned_long_long__greater_(ctypes.Structure): - """class std::__is_integer< unsigned long long >""" - - -std.__is_integer_less__unsigned_long_long__greater_ = __is_integer_less__unsigned_long_long__greater_ - -class __is_integer_less__unsigned_long__greater_(ctypes.Structure): - """class std::__is_integer< unsigned long >""" - - -std.__is_integer_less__unsigned_long__greater_ = __is_integer_less__unsigned_long__greater_ - -class __is_integer_less__unsigned_short__greater_(ctypes.Structure): - """class std::__is_integer< unsigned short >""" - - -std.__is_integer_less__unsigned_short__greater_ = __is_integer_less__unsigned_short__greater_ - -class __is_integer_less__wchar_t__greater_(ctypes.Structure): - """class std::__is_integer< wchar_t >""" - - -std.__is_integer_less__wchar_t__greater_ = __is_integer_less__wchar_t__greater_ - -class __is_void_less__void__greater_(ctypes.Structure): - """class std::__is_void< void >""" - - -std.__is_void_less__void__greater_ = __is_void_less__void__greater_ - -class __iter_swap_less__true__greater_(ctypes.Structure): - """class std::__iter_swap< true >""" - - -std.__iter_swap_less__true__greater_ = __iter_swap_less__true__greater_ - -class __lc_rai_less__std_scope_random_access_iterator_tag_comma__std_scope_random_access_iterator_tag__greater_(ctypes.Structure): - """class std::__lc_rai< std::random_access_iterator_tag, std::random_access_iterator_tag >""" - - -std.__lc_rai_less__std_scope_random_access_iterator_tag_comma__std_scope_random_access_iterator_tag__greater_ = __lc_rai_less__std_scope_random_access_iterator_tag_comma__std_scope_random_access_iterator_tag__greater_ - -class __lexicographical_compare_less__true__greater_(ctypes.Structure): - """class std::__lexicographical_compare< true >""" - - -std.__lexicographical_compare_less__true__greater_ = __lexicographical_compare_less__true__greater_ - -class __num_base(ctypes.Structure): - """class std::__num_base""" - - -std.__num_base = __num_base - -class __true_type(ctypes.Structure): - """class std::__true_type""" - - -std.__true_type = __true_type - -class __truth_type_less__true__greater_(ctypes.Structure): - """class std::__truth_type< true >""" - - -std.__truth_type_less__true__greater_ = __truth_type_less__true__greater_ - -class allocator_less__char__greater_(ctypes.Structure): - """class std::allocator< char >""" - - class rebind_less__char__greater_(ctypes.Structure): - """class std::allocator< char >::rebind< char >""" - -std.allocator_less__char__greater_ = allocator_less__char__greater_ - -class allocator_less__void__greater_(ctypes.Structure): - """class std::allocator< void >""" - - -std.allocator_less__void__greater_ = allocator_less__void__greater_ - -class allocator_less__wchar_t__greater_(ctypes.Structure): - """class std::allocator< wchar_t >""" - - class rebind_less__char__greater_(ctypes.Structure): - """class std::allocator< wchar_t >::rebind< char >""" - - class rebind_less__wchar_t__greater_(ctypes.Structure): - """class std::allocator< wchar_t >::rebind< wchar_t >""" - -std.allocator_less__wchar_t__greater_ = allocator_less__wchar_t__greater_ - -class exception(ctypes.Structure): - """class std::exception""" - - -std.exception = exception - -class bad_alloc(ctypes.Structure): - """class std::bad_alloc""" - - -std.bad_alloc = bad_alloc - -class bad_exception(ctypes.Structure): - """class std::bad_exception""" - - -std.bad_exception = bad_exception - -class ios_base(ctypes.Structure): - """class std::ios_base""" - - class Init(ctypes.Structure): - """class std::ios_base::Init""" - - class _Callback_list(ctypes.Structure): - """class std::ios_base::_Callback_list""" - - class _Words(ctypes.Structure): - """class std::ios_base::_Words""" - - class failure(ctypes.Structure): - """class std::ios_base::failure""" - -std.ios_base = ios_base - -class basic_ios_less__char_comma__std_scope_char_traits_less__char__greater___greater_(ctypes.Structure): - """class std::basic_ios< char, std::char_traits< char > >""" - - -std.basic_ios_less__char_comma__std_scope_char_traits_less__char__greater___greater_ = basic_ios_less__char_comma__std_scope_char_traits_less__char__greater___greater_ - -class basic_ios_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater___greater_(ctypes.Structure): - """class std::basic_ios< wchar_t, std::char_traits< wchar_t > >""" - - -std.basic_ios_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater___greater_ = basic_ios_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater___greater_ - -class basic_istream_less__char_comma__std_scope_char_traits_less__char__greater___greater_(ctypes.Structure): - """class std::basic_istream< char, std::char_traits< char > >""" - - class sentry(ctypes.Structure): - """class std::basic_istream< char, std::char_traits< char > >::sentry""" - -std.basic_istream_less__char_comma__std_scope_char_traits_less__char__greater___greater_ = basic_istream_less__char_comma__std_scope_char_traits_less__char__greater___greater_ - -class basic_ostream_less__char_comma__std_scope_char_traits_less__char__greater___greater_(ctypes.Structure): - """class std::basic_ostream< char, std::char_traits< char > >""" - - class sentry(ctypes.Structure): - """class std::basic_ostream< char, std::char_traits< char > >::sentry""" - -std.basic_ostream_less__char_comma__std_scope_char_traits_less__char__greater___greater_ = basic_ostream_less__char_comma__std_scope_char_traits_less__char__greater___greater_ - -class iostream(ctypes.Structure): - """class std::basic_iostream< char, std::char_traits< char > >""" - - -std.iostream = iostream - -class basic_istream_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater___greater_(ctypes.Structure): - """class std::basic_istream< wchar_t, std::char_traits< wchar_t > >""" - - class sentry(ctypes.Structure): - """class std::basic_istream< wchar_t, std::char_traits< wchar_t > >::sentry""" - -std.basic_istream_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater___greater_ = basic_istream_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater___greater_ - -class basic_ostream_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater___greater_(ctypes.Structure): - """class std::basic_ostream< wchar_t, std::char_traits< wchar_t > >""" - - class sentry(ctypes.Structure): - """class std::basic_ostream< wchar_t, std::char_traits< wchar_t > >::sentry""" - -std.basic_ostream_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater___greater_ = basic_ostream_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater___greater_ - -class wiostream(ctypes.Structure): - """class std::basic_iostream< wchar_t, std::char_traits< wchar_t > >""" - - -std.wiostream = wiostream - -class basic_streambuf_less__char_comma__std_scope_char_traits_less__char__greater___greater_(ctypes.Structure): - """class std::basic_streambuf< char, std::char_traits< char > >""" - - -std.basic_streambuf_less__char_comma__std_scope_char_traits_less__char__greater___greater_ = basic_streambuf_less__char_comma__std_scope_char_traits_less__char__greater___greater_ - -class basic_streambuf_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater___greater_(ctypes.Structure): - """class std::basic_streambuf< wchar_t, std::char_traits< wchar_t > >""" - - -std.basic_streambuf_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater___greater_ = basic_streambuf_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater___greater_ - -class string(ctypes.Structure): - """class std::string""" - - class _Alloc_hider(ctypes.Structure): - """class std::string::_Alloc_hider""" - - class _Rep_base(ctypes.Structure): - """class std::string::_Rep_base""" - - class _Rep(ctypes.Structure): - """class std::string::_Rep""" - -std.string = string - -class wstring(ctypes.Structure): - """class std::wstring""" - - class _Alloc_hider(ctypes.Structure): - """class std::wstring::_Alloc_hider""" - - class _Rep_base(ctypes.Structure): - """class std::wstring::_Rep_base""" - - class _Rep(ctypes.Structure): - """class std::wstring::_Rep""" - -std.wstring = wstring - -class input_iterator_tag(ctypes.Structure): - """class std::input_iterator_tag""" - - -std.input_iterator_tag = input_iterator_tag - -class forward_iterator_tag(ctypes.Structure): - """class std::forward_iterator_tag""" - - -std.forward_iterator_tag = forward_iterator_tag - -class bidirectional_iterator_tag(ctypes.Structure): - """class std::bidirectional_iterator_tag""" - - -std.bidirectional_iterator_tag = bidirectional_iterator_tag - -class traits_type(ctypes.Structure): - """class std::char_traits< char >""" - - -std.traits_type = traits_type - -class traits_type(ctypes.Structure): - """class std::char_traits< wchar_t >""" - - -std.traits_type = traits_type - -class collate_less__char__greater_(ctypes.Structure): - """class std::collate< char >""" - - -std.collate_less__char__greater_ = collate_less__char__greater_ - -class collate_less__wchar_t__greater_(ctypes.Structure): - """class std::collate< wchar_t >""" - - -std.collate_less__wchar_t__greater_ = collate_less__wchar_t__greater_ - -class collate_byname_less__char__greater_(ctypes.Structure): - """class std::collate_byname< char >""" - - -std.collate_byname_less__char__greater_ = collate_byname_less__char__greater_ - -class collate_byname_less__wchar_t__greater_(ctypes.Structure): - """class std::collate_byname< wchar_t >""" - - -std.collate_byname_less__wchar_t__greater_ = collate_byname_less__wchar_t__greater_ - -class __ctype_type(ctypes.Structure): - """class std::ctype< char >""" - - -std.__ctype_type = __ctype_type - -class __ctype_type(ctypes.Structure): - """class std::ctype< wchar_t >""" - - -std.__ctype_type = __ctype_type - -class ctype_byname_less__char__greater_(ctypes.Structure): - """class std::ctype_byname< char >""" - - -std.ctype_byname_less__char__greater_ = ctype_byname_less__char__greater_ - -class ctype_byname_less__wchar_t__greater_(ctypes.Structure): - """class std::ctype_byname< wchar_t >""" - - -std.ctype_byname_less__wchar_t__greater_ = ctype_byname_less__wchar_t__greater_ - -class iterator_less__std_scope_output_iterator_tag_comma__void_comma__void_comma__void_comma__void__greater_(ctypes.Structure): - """class std::iterator< std::output_iterator_tag, void, void, void, void >""" - - -std.iterator_less__std_scope_output_iterator_tag_comma__void_comma__void_comma__void_comma__void__greater_ = iterator_less__std_scope_output_iterator_tag_comma__void_comma__void_comma__void_comma__void__greater_ - -class locale(ctypes.Structure): - """class std::locale""" - - class _Impl(ctypes.Structure): - """class std::locale::_Impl""" - - class facet(ctypes.Structure): - """class std::locale::facet""" - - class id(ctypes.Structure): - """class std::locale::id""" - -std.locale = locale - -class nothrow_t(ctypes.Structure): - """class std::nothrow_t""" - - -std.nothrow_t = nothrow_t - -class __num_get_type(ctypes.Structure): - """class std::num_get< char, std::istreambuf_iterator< char, std::char_traits< char > > >""" - - -std.__num_get_type = __num_get_type - -class __num_get_type(ctypes.Structure): - """class std::num_get< wchar_t, std::istreambuf_iterator< wchar_t, std::char_traits< wchar_t > > >""" - - -std.__num_get_type = __num_get_type - -class __num_put_type(ctypes.Structure): - """class std::num_put< char, std::ostreambuf_iterator< char, std::char_traits< char > > >""" - - -std.__num_put_type = __num_put_type - -class __num_put_type(ctypes.Structure): - """class std::num_put< wchar_t, std::ostreambuf_iterator< wchar_t, std::char_traits< wchar_t > > >""" - - -std.__num_put_type = __num_put_type - -class numpunct_less__char__greater_(ctypes.Structure): - """class std::numpunct< char >""" - - -std.numpunct_less__char__greater_ = numpunct_less__char__greater_ - -class numpunct_less__wchar_t__greater_(ctypes.Structure): - """class std::numpunct< wchar_t >""" - - -std.numpunct_less__wchar_t__greater_ = numpunct_less__wchar_t__greater_ - -class numpunct_byname_less__char__greater_(ctypes.Structure): - """class std::numpunct_byname< char >""" - - -std.numpunct_byname_less__char__greater_ = numpunct_byname_less__char__greater_ - -class numpunct_byname_less__wchar_t__greater_(ctypes.Structure): - """class std::numpunct_byname< wchar_t >""" - - -std.numpunct_byname_less__wchar_t__greater_ = numpunct_byname_less__wchar_t__greater_ - -class output_iterator_tag(ctypes.Structure): - """class std::output_iterator_tag""" - - -std.output_iterator_tag = output_iterator_tag - -class random_access_iterator_tag(ctypes.Structure): - """class std::random_access_iterator_tag""" - - -std.random_access_iterator_tag = random_access_iterator_tag - -class timespec(ctypes.Structure): - """class timespec""" - -class tm(ctypes.Structure): - """class tm""" - -class basic_istringstream_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater__comma__std_scope_allocator_less__wchar_t__greater___greater_(ctypes.Structure): - """class declaration std::basic_istringstream< wchar_t, std::char_traits< wchar_t >, std::allocator< wchar_t > >""" - _fields_ = [] -std.basic_istringstream_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater__comma__std_scope_allocator_less__wchar_t__greater___greater_ = basic_istringstream_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater__comma__std_scope_allocator_less__wchar_t__greater___greater_ - -class basic_ifstream_less__char_comma__std_scope_char_traits_less__char__greater___greater_(ctypes.Structure): - """class declaration std::basic_ifstream< char, std::char_traits< char > >""" - _fields_ = [] -std.basic_ifstream_less__char_comma__std_scope_char_traits_less__char__greater___greater_ = basic_ifstream_less__char_comma__std_scope_char_traits_less__char__greater___greater_ - -class money_base(ctypes.Structure): - """class declaration std::money_base""" - _fields_ = [] -std.money_base = money_base - -class time_base(ctypes.Structure): - """class declaration std::time_base""" - _fields_ = [] -std.time_base = time_base - -class basic_istringstream_less__char_comma__std_scope_char_traits_less__char__greater__comma__std_scope_allocator_less__char__greater___greater_(ctypes.Structure): - """class declaration std::basic_istringstream< char, std::char_traits< char >, std::allocator< char > >""" - _fields_ = [] -std.basic_istringstream_less__char_comma__std_scope_char_traits_less__char__greater__comma__std_scope_allocator_less__char__greater___greater_ = basic_istringstream_less__char_comma__std_scope_char_traits_less__char__greater__comma__std_scope_allocator_less__char__greater___greater_ - -class basic_stringbuf_less__char_comma__std_scope_char_traits_less__char__greater__comma__std_scope_allocator_less__char__greater___greater_(ctypes.Structure): - """class declaration std::basic_stringbuf< char, std::char_traits< char >, std::allocator< char > >""" - _fields_ = [] -std.basic_stringbuf_less__char_comma__std_scope_char_traits_less__char__greater__comma__std_scope_allocator_less__char__greater___greater_ = basic_stringbuf_less__char_comma__std_scope_char_traits_less__char__greater__comma__std_scope_allocator_less__char__greater___greater_ - -class basic_ostringstream_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater__comma__std_scope_allocator_less__wchar_t__greater___greater_(ctypes.Structure): - """class declaration std::basic_ostringstream< wchar_t, std::char_traits< wchar_t >, std::allocator< wchar_t > >""" - _fields_ = [] -std.basic_ostringstream_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater__comma__std_scope_allocator_less__wchar_t__greater___greater_ = basic_ostringstream_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater__comma__std_scope_allocator_less__wchar_t__greater___greater_ - -class messages_base(ctypes.Structure): - """class declaration std::messages_base""" - _fields_ = [] -std.messages_base = messages_base - -class basic_stringstream_less__char_comma__std_scope_char_traits_less__char__greater__comma__std_scope_allocator_less__char__greater___greater_(ctypes.Structure): - """class declaration std::basic_stringstream< char, std::char_traits< char >, std::allocator< char > >""" - _fields_ = [] -std.basic_stringstream_less__char_comma__std_scope_char_traits_less__char__greater__comma__std_scope_allocator_less__char__greater___greater_ = basic_stringstream_less__char_comma__std_scope_char_traits_less__char__greater__comma__std_scope_allocator_less__char__greater___greater_ - -class __numpunct_cache_less__wchar_t__greater_(ctypes.Structure): - """class declaration std::__numpunct_cache< wchar_t >""" - _fields_ = [] -std.__numpunct_cache_less__wchar_t__greater_ = __numpunct_cache_less__wchar_t__greater_ - -class __numpunct_cache_less__char__greater_(ctypes.Structure): - """class declaration std::__numpunct_cache< char >""" - _fields_ = [] -std.__numpunct_cache_less__char__greater_ = __numpunct_cache_less__char__greater_ - -class basic_stringbuf_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater__comma__std_scope_allocator_less__wchar_t__greater___greater_(ctypes.Structure): - """class declaration std::basic_stringbuf< wchar_t, std::char_traits< wchar_t >, std::allocator< wchar_t > >""" - _fields_ = [] -std.basic_stringbuf_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater__comma__std_scope_allocator_less__wchar_t__greater___greater_ = basic_stringbuf_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater__comma__std_scope_allocator_less__wchar_t__greater___greater_ - -class basic_ofstream_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater___greater_(ctypes.Structure): - """class declaration std::basic_ofstream< wchar_t, std::char_traits< wchar_t > >""" - _fields_ = [] -std.basic_ofstream_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater___greater_ = basic_ofstream_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater___greater_ - -class basic_ofstream_less__char_comma__std_scope_char_traits_less__char__greater___greater_(ctypes.Structure): - """class declaration std::basic_ofstream< char, std::char_traits< char > >""" - _fields_ = [] -std.basic_ofstream_less__char_comma__std_scope_char_traits_less__char__greater___greater_ = basic_ofstream_less__char_comma__std_scope_char_traits_less__char__greater___greater_ - -class basic_stringstream_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater__comma__std_scope_allocator_less__wchar_t__greater___greater_(ctypes.Structure): - """class declaration std::basic_stringstream< wchar_t, std::char_traits< wchar_t >, std::allocator< wchar_t > >""" - _fields_ = [] -std.basic_stringstream_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater__comma__std_scope_allocator_less__wchar_t__greater___greater_ = basic_stringstream_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater__comma__std_scope_allocator_less__wchar_t__greater___greater_ - -class basic_ostringstream_less__char_comma__std_scope_char_traits_less__char__greater__comma__std_scope_allocator_less__char__greater___greater_(ctypes.Structure): - """class declaration std::basic_ostringstream< char, std::char_traits< char >, std::allocator< char > >""" - _fields_ = [] -std.basic_ostringstream_less__char_comma__std_scope_char_traits_less__char__greater__comma__std_scope_allocator_less__char__greater___greater_ = basic_ostringstream_less__char_comma__std_scope_char_traits_less__char__greater__comma__std_scope_allocator_less__char__greater___greater_ - -class basic_fstream_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater___greater_(ctypes.Structure): - """class declaration std::basic_fstream< wchar_t, std::char_traits< wchar_t > >""" - _fields_ = [] -std.basic_fstream_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater___greater_ = basic_fstream_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater___greater_ - -class basic_fstream_less__char_comma__std_scope_char_traits_less__char__greater___greater_(ctypes.Structure): - """class declaration std::basic_fstream< char, std::char_traits< char > >""" - _fields_ = [] -std.basic_fstream_less__char_comma__std_scope_char_traits_less__char__greater___greater_ = basic_fstream_less__char_comma__std_scope_char_traits_less__char__greater___greater_ - -class istreambuf_iterator_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater___greater_(ctypes.Structure): - """class declaration std::istreambuf_iterator< wchar_t, std::char_traits< wchar_t > >""" - _fields_ = [] -std.istreambuf_iterator_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater___greater_ = istreambuf_iterator_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater___greater_ - -class istreambuf_iterator_less__char_comma__std_scope_char_traits_less__char__greater___greater_(ctypes.Structure): - """class declaration std::istreambuf_iterator< char, std::char_traits< char > >""" - _fields_ = [] -std.istreambuf_iterator_less__char_comma__std_scope_char_traits_less__char__greater___greater_ = istreambuf_iterator_less__char_comma__std_scope_char_traits_less__char__greater___greater_ - -class basic_ifstream_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater___greater_(ctypes.Structure): - """class declaration std::basic_ifstream< wchar_t, std::char_traits< wchar_t > >""" - _fields_ = [] -std.basic_ifstream_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater___greater_ = basic_ifstream_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater___greater_ - -class basic_filebuf_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater___greater_(ctypes.Structure): - """class declaration std::basic_filebuf< wchar_t, std::char_traits< wchar_t > >""" - _fields_ = [] -std.basic_filebuf_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater___greater_ = basic_filebuf_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater___greater_ - -class basic_filebuf_less__char_comma__std_scope_char_traits_less__char__greater___greater_(ctypes.Structure): - """class declaration std::basic_filebuf< char, std::char_traits< char > >""" - _fields_ = [] -std.basic_filebuf_less__char_comma__std_scope_char_traits_less__char__greater___greater_ = basic_filebuf_less__char_comma__std_scope_char_traits_less__char__greater___greater_ - -class reverse_iterator_less____gnu_cxx_scope___normal_iterator_less__const_wchar_t_ptr__comma__std_scope_basic_string_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater__comma__std_scope_allocator_less__wchar_t__greater___greater___greater___greater_(ctypes.Structure): - """class declaration std::reverse_iterator< __gnu_cxx::__normal_iterator< const wchar_t*, std::basic_string< wchar_t, std::char_traits< wchar_t >, std::allocator< wchar_t > > > >""" - _fields_ = [] -std.reverse_iterator_less____gnu_cxx_scope___normal_iterator_less__const_wchar_t_ptr__comma__std_scope_basic_string_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater__comma__std_scope_allocator_less__wchar_t__greater___greater___greater___greater_ = reverse_iterator_less____gnu_cxx_scope___normal_iterator_less__const_wchar_t_ptr__comma__std_scope_basic_string_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater__comma__std_scope_allocator_less__wchar_t__greater___greater___greater___greater_ - -class reverse_iterator_less____gnu_cxx_scope___normal_iterator_less__wchar_t_ptr__comma__std_scope_basic_string_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater__comma__std_scope_allocator_less__wchar_t__greater___greater___greater___greater_(ctypes.Structure): - """class declaration std::reverse_iterator< __gnu_cxx::__normal_iterator< wchar_t*, std::basic_string< wchar_t, std::char_traits< wchar_t >, std::allocator< wchar_t > > > >""" - _fields_ = [] -std.reverse_iterator_less____gnu_cxx_scope___normal_iterator_less__wchar_t_ptr__comma__std_scope_basic_string_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater__comma__std_scope_allocator_less__wchar_t__greater___greater___greater___greater_ = reverse_iterator_less____gnu_cxx_scope___normal_iterator_less__wchar_t_ptr__comma__std_scope_basic_string_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater__comma__std_scope_allocator_less__wchar_t__greater___greater___greater___greater_ - -class reverse_iterator_less____gnu_cxx_scope___normal_iterator_less__const_char_ptr__comma__std_scope_basic_string_less__char_comma__std_scope_char_traits_less__char__greater__comma__std_scope_allocator_less__char__greater___greater___greater___greater_(ctypes.Structure): - """class declaration std::reverse_iterator< __gnu_cxx::__normal_iterator< const char*, std::basic_string< char, std::char_traits< char >, std::allocator< char > > > >""" - _fields_ = [] -std.reverse_iterator_less____gnu_cxx_scope___normal_iterator_less__const_char_ptr__comma__std_scope_basic_string_less__char_comma__std_scope_char_traits_less__char__greater__comma__std_scope_allocator_less__char__greater___greater___greater___greater_ = reverse_iterator_less____gnu_cxx_scope___normal_iterator_less__const_char_ptr__comma__std_scope_basic_string_less__char_comma__std_scope_char_traits_less__char__greater__comma__std_scope_allocator_less__char__greater___greater___greater___greater_ - -class reverse_iterator_less____gnu_cxx_scope___normal_iterator_less__char_ptr__comma__std_scope_basic_string_less__char_comma__std_scope_char_traits_less__char__greater__comma__std_scope_allocator_less__char__greater___greater___greater___greater_(ctypes.Structure): - """class declaration std::reverse_iterator< __gnu_cxx::__normal_iterator< char*, std::basic_string< char, std::char_traits< char >, std::allocator< char > > > >""" - _fields_ = [] -std.reverse_iterator_less____gnu_cxx_scope___normal_iterator_less__char_ptr__comma__std_scope_basic_string_less__char_comma__std_scope_char_traits_less__char__greater__comma__std_scope_allocator_less__char__greater___greater___greater___greater_ = reverse_iterator_less____gnu_cxx_scope___normal_iterator_less__char_ptr__comma__std_scope_basic_string_less__char_comma__std_scope_char_traits_less__char__greater__comma__std_scope_allocator_less__char__greater___greater___greater___greater_ - -class fpos_less____mbstate_t__greater_(ctypes.Structure): - """class declaration std::fpos< __mbstate_t >""" - _fields_ = [] -std.fpos_less____mbstate_t__greater_ = fpos_less____mbstate_t__greater_ - -class codecvt_base(ctypes.Structure): - """class declaration std::codecvt_base""" - _fields_ = [] -std.codecvt_base = codecvt_base - -class codecvt_less__wchar_t_comma__char_comma____mbstate_t__greater_(ctypes.Structure): - """class declaration std::codecvt< wchar_t, char, __mbstate_t >""" - _fields_ = [] -std.codecvt_less__wchar_t_comma__char_comma____mbstate_t__greater_ = codecvt_less__wchar_t_comma__char_comma____mbstate_t__greater_ - -class codecvt_less__char_comma__char_comma____mbstate_t__greater_(ctypes.Structure): - """class declaration std::codecvt< char, char, __mbstate_t >""" - _fields_ = [] -std.codecvt_less__char_comma__char_comma____mbstate_t__greater_ = codecvt_less__char_comma__char_comma____mbstate_t__greater_ - -class __iter_swap_less___obrace__obrace_std_scope___are_same_less_typename_std_scope_iterator_traits_less__Iter_greater__scope_value_type_comma_typename_std_scope_iterator_traits_less__ForwardIterator2_greater__scope_value_type_greater__scope___value__ref__ref__std_scope___are_same_less_typename_std_scope_iterator_traits_less__Iter_greater__scope_value_type_ref__comma_typename_std_scope_iterator_traits_less__Iter_greater__scope_reference_greater__scope___value_cbrace___ref__ref__std_scope___are_same_less_typename_std_scope_iterator_traits_less__ForwardIterator2_greater__scope_value_type_ref__comma_typename_std_scope_iterator_traits_less__ForwardIterator2_greater__scope_reference_greater__scope___value_cbrace___greater_(ctypes.Structure): - """class declaration std::__iter_swap< ((std::__are_same<typename std::iterator_traits<_Iter>::value_type,typename std::iterator_traits<_ForwardIterator2>::value_type>::__value && std::__are_same<typename std::iterator_traits<_Iter>::value_type&,typename std::iterator_traits<_Iter>::reference>::__value) && std::__are_same<typename std::iterator_traits<_ForwardIterator2>::value_type&,typename std::iterator_traits<_ForwardIterator2>::reference>::__value) >""" - _fields_ = [] -std.__iter_swap_less___obrace__obrace_std_scope___are_same_less_typename_std_scope_iterator_traits_less__Iter_greater__scope_value_type_comma_typename_std_scope_iterator_traits_less__ForwardIterator2_greater__scope_value_type_greater__scope___value__ref__ref__std_scope___are_same_less_typename_std_scope_iterator_traits_less__Iter_greater__scope_value_type_ref__comma_typename_std_scope_iterator_traits_less__Iter_greater__scope_reference_greater__scope___value_cbrace___ref__ref__std_scope___are_same_less_typename_std_scope_iterator_traits_less__ForwardIterator2_greater__scope_value_type_ref__comma_typename_std_scope_iterator_traits_less__ForwardIterator2_greater__scope_reference_greater__scope___value_cbrace___greater_ = __iter_swap_less___obrace__obrace_std_scope___are_same_less_typename_std_scope_iterator_traits_less__Iter_greater__scope_value_type_comma_typename_std_scope_iterator_traits_less__ForwardIterator2_greater__scope_value_type_greater__scope___value__ref__ref__std_scope___are_same_less_typename_std_scope_iterator_traits_less__Iter_greater__scope_value_type_ref__comma_typename_std_scope_iterator_traits_less__Iter_greater__scope_reference_greater__scope___value_cbrace___ref__ref__std_scope___are_same_less_typename_std_scope_iterator_traits_less__ForwardIterator2_greater__scope_value_type_ref__comma_typename_std_scope_iterator_traits_less__ForwardIterator2_greater__scope_reference_greater__scope___value_cbrace___greater_ - -class ostreambuf_iterator_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater___greater_(ctypes.Structure): - """class declaration std::ostreambuf_iterator< wchar_t, std::char_traits< wchar_t > >""" - _fields_ = [] -std.ostreambuf_iterator_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater___greater_ = ostreambuf_iterator_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater___greater_ - -class ostreambuf_iterator_less__char_comma__std_scope_char_traits_less__char__greater___greater_(ctypes.Structure): - """class declaration std::ostreambuf_iterator< char, std::char_traits< char > >""" - _fields_ = [] -std.ostreambuf_iterator_less__char_comma__std_scope_char_traits_less__char__greater___greater_ = ostreambuf_iterator_less__char_comma__std_scope_char_traits_less__char__greater___greater_ - -class obstack(ctypes.Structure): - """class declaration obstack""" - _fields_ = [] - -class sigevent(ctypes.Structure): - """class declaration sigevent""" - _fields_ = [] - -class __numeric_traits_floating_less__short_int__greater_(ctypes.Structure): - """class declaration __gnu_cxx::__numeric_traits_floating< short int >""" - _fields_ = [] -__gnu_cxx.__numeric_traits_floating_less__short_int__greater_ = __numeric_traits_floating_less__short_int__greater_ - -class __numeric_traits_floating_less__long_unsigned_int__greater_(ctypes.Structure): - """class declaration __gnu_cxx::__numeric_traits_floating< long unsigned int >""" - _fields_ = [] -__gnu_cxx.__numeric_traits_floating_less__long_unsigned_int__greater_ = __numeric_traits_floating_less__long_unsigned_int__greater_ - -class __numeric_traits_floating_less__int__greater_(ctypes.Structure): - """class declaration __gnu_cxx::__numeric_traits_floating< int >""" - _fields_ = [] -__gnu_cxx.__numeric_traits_floating_less__int__greater_ = __numeric_traits_floating_less__int__greater_ - -class __add_unsigned_less__wchar_t__greater_(ctypes.Structure): - """class declaration __gnu_cxx::__add_unsigned< wchar_t >""" - _fields_ = [] -__gnu_cxx.__add_unsigned_less__wchar_t__greater_ = __add_unsigned_less__wchar_t__greater_ - -class __add_unsigned_less__bool__greater_(ctypes.Structure): - """class declaration __gnu_cxx::__add_unsigned< bool >""" - _fields_ = [] -__gnu_cxx.__add_unsigned_less__bool__greater_ = __add_unsigned_less__bool__greater_ - -class __enable_if_less__!_std_scope___is_char_less__CharT2_greater__scope___value_comma__int__greater_(ctypes.Structure): - """class declaration __gnu_cxx::__enable_if< ! std::__is_char<_CharT2>::__value, int >""" - _fields_ = [] -__gnu_cxx.__enable_if_less__!_std_scope___is_char_less__CharT2_greater__scope___value_comma__int__greater_ = __enable_if_less__!_std_scope___is_char_less__CharT2_greater__scope___value_comma__int__greater_ - -class __enable_if_less__!_std_scope___is_scalar_less__Tp_greater__scope___value_comma__void__greater_(ctypes.Structure): - """class declaration __gnu_cxx::__enable_if< ! std::__is_scalar<_Tp>::__value, void >""" - _fields_ = [] -__gnu_cxx.__enable_if_less__!_std_scope___is_scalar_less__Tp_greater__scope___value_comma__void__greater_ = __enable_if_less__!_std_scope___is_scalar_less__Tp_greater__scope___value_comma__void__greater_ - -class __remove_unsigned_less__wchar_t__greater_(ctypes.Structure): - """class declaration __gnu_cxx::__remove_unsigned< wchar_t >""" - _fields_ = [] -__gnu_cxx.__remove_unsigned_less__wchar_t__greater_ = __remove_unsigned_less__wchar_t__greater_ - -class __remove_unsigned_less__bool__greater_(ctypes.Structure): - """class declaration __gnu_cxx::__remove_unsigned< bool >""" - _fields_ = [] -__gnu_cxx.__remove_unsigned_less__bool__greater_ = __remove_unsigned_less__bool__greater_ - -class __normal_iterator_less__wchar_t_ptr__comma__std_scope_basic_string_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater__comma__std_scope_allocator_less__wchar_t__greater___greater___greater_(ctypes.Structure): - """class declaration __gnu_cxx::__normal_iterator< wchar_t*, std::basic_string< wchar_t, std::char_traits< wchar_t >, std::allocator< wchar_t > > >""" - _fields_ = [] -__gnu_cxx.__normal_iterator_less__wchar_t_ptr__comma__std_scope_basic_string_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater__comma__std_scope_allocator_less__wchar_t__greater___greater___greater_ = __normal_iterator_less__wchar_t_ptr__comma__std_scope_basic_string_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater__comma__std_scope_allocator_less__wchar_t__greater___greater___greater_ - -class __normal_iterator_less__const_wchar_t_ptr__comma__std_scope_basic_string_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater__comma__std_scope_allocator_less__wchar_t__greater___greater___greater_(ctypes.Structure): - """class declaration __gnu_cxx::__normal_iterator< const wchar_t*, std::basic_string< wchar_t, std::char_traits< wchar_t >, std::allocator< wchar_t > > >""" - _fields_ = [] -__gnu_cxx.__normal_iterator_less__const_wchar_t_ptr__comma__std_scope_basic_string_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater__comma__std_scope_allocator_less__wchar_t__greater___greater___greater_ = __normal_iterator_less__const_wchar_t_ptr__comma__std_scope_basic_string_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater__comma__std_scope_allocator_less__wchar_t__greater___greater___greater_ - -class __normal_iterator_less__char_ptr__comma__std_scope_basic_string_less__char_comma__std_scope_char_traits_less__char__greater__comma__std_scope_allocator_less__char__greater___greater___greater_(ctypes.Structure): - """class declaration __gnu_cxx::__normal_iterator< char*, std::basic_string< char, std::char_traits< char >, std::allocator< char > > >""" - _fields_ = [] -__gnu_cxx.__normal_iterator_less__char_ptr__comma__std_scope_basic_string_less__char_comma__std_scope_char_traits_less__char__greater__comma__std_scope_allocator_less__char__greater___greater___greater_ = __normal_iterator_less__char_ptr__comma__std_scope_basic_string_less__char_comma__std_scope_char_traits_less__char__greater__comma__std_scope_allocator_less__char__greater___greater___greater_ - -class __normal_iterator_less__const_char_ptr__comma__std_scope_basic_string_less__char_comma__std_scope_char_traits_less__char__greater__comma__std_scope_allocator_less__char__greater___greater___greater_(ctypes.Structure): - """class declaration __gnu_cxx::__normal_iterator< const char*, std::basic_string< char, std::char_traits< char >, std::allocator< char > > >""" - _fields_ = [] -__gnu_cxx.__normal_iterator_less__const_char_ptr__comma__std_scope_basic_string_less__char_comma__std_scope_char_traits_less__char__greater__comma__std_scope_allocator_less__char__greater___greater___greater_ = __normal_iterator_less__const_char_ptr__comma__std_scope_basic_string_less__char_comma__std_scope_char_traits_less__char__greater__comma__std_scope_allocator_less__char__greater___greater___greater_ - -class _IO_jump_t(ctypes.Structure): - """class declaration _IO_jump_t""" - _fields_ = [] - -class __jmp_buf_tag(ctypes.Structure): - """class declaration __jmp_buf_tag""" - _fields_ = [] - -class locale_data(ctypes.Structure): - """class declaration locale_data""" - _fields_ = [] - -class _IO_cookie_file(ctypes.Structure): - """class declaration _IO_cookie_file""" - _fields_ = [] - -class _IO_FILE_plus(ctypes.Structure): - """class declaration _IO_FILE_plus""" - _fields_ = [] - -std.collate_byname_less__wchar_t__greater_._fields_ = [ #class std::collate_byname< wchar_t > - ("__empty__", ctypes.c_char * 4) -] - -std.collate_byname_less__char__greater_._fields_ = [ #class std::collate_byname< char > - ("__empty__", ctypes.c_char * 4) -] - -std.bad_exception._fields_ = [ #class std::bad_exception - ("_vtable_", ctypes.POINTER(ctypes.c_void_p)), - ("__empty__", ctypes.c_char * 4) -] - -std.wstring._fields_ = [ #class std::wstring - ("npos", ctypes.c_uint), - ("_M_dataplus", std.wstring._Alloc_hider), -] - -std.wstring._Rep_base._fields_ = [ #class std::wstring::_Rep_base - ("_M_length", ctypes.c_uint), - ("_M_capacity", ctypes.c_uint), - ("_M_refcount", ctypes.c_int), -] - -std.wstring._Rep._fields_ = [ #class std::wstring::_Rep - ("_S_max_size", ctypes.c_uint), - ("_S_terminal", ctypes.c_wchar), - ("_S_empty_rep_storage", ( ctypes.c_uint * 4 )), -] - -std.wstring._Alloc_hider._fields_ = [ #class std::wstring::_Alloc_hider - ("_M_p", ctypes.c_wchar_p), -] - -std.basic_istream_less__char_comma__std_scope_char_traits_less__char__greater___greater_._fields_ = [ #class std::basic_istream< char, std::char_traits< char > > - ("_M_gcount", ctypes.c_int), -] - -std.basic_istream_less__char_comma__std_scope_char_traits_less__char__greater___greater_.sentry._fields_ = [ #class std::basic_istream< char, std::char_traits< char > >::sentry - ("_M_ok", ctypes.c_bool), -] - -std.basic_streambuf_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater___greater_._fields_ = [ #class std::basic_streambuf< wchar_t, std::char_traits< wchar_t > > - ("_vtable_", ctypes.POINTER(ctypes.c_void_p)), - ("_M_in_beg", ctypes.c_wchar_p), - ("_M_in_cur", ctypes.c_wchar_p), - ("_M_in_end", ctypes.c_wchar_p), - ("_M_out_beg", ctypes.c_wchar_p), - ("_M_out_cur", ctypes.c_wchar_p), - ("_M_out_end", ctypes.c_wchar_p), - ("_M_buf_locale", std.locale), -] - -std.basic_streambuf_less__char_comma__std_scope_char_traits_less__char__greater___greater_._fields_ = [ #class std::basic_streambuf< char, std::char_traits< char > > - ("_vtable_", ctypes.POINTER(ctypes.c_void_p)), - ("_M_in_beg", ctypes.c_char_p), - ("_M_in_cur", ctypes.c_char_p), - ("_M_in_end", ctypes.c_char_p), - ("_M_out_beg", ctypes.c_char_p), - ("_M_out_cur", ctypes.c_char_p), - ("_M_out_end", ctypes.c_char_p), - ("_M_buf_locale", std.locale), -] - -std.input_iterator_tag._fields_ = [ #class std::input_iterator_tag - ("__empty__", ctypes.c_char * 4) -] - -std.__copy_move_less__false_comma__false_comma__std_scope_random_access_iterator_tag__greater_._fields_ = [ #class std::__copy_move< false, false, std::random_access_iterator_tag > - ("__empty__", ctypes.c_char * 4) -] - -std.__false_type._fields_ = [ #class std::__false_type - ("__empty__", ctypes.c_char * 4) -] - -std.collate_less__wchar_t__greater_._fields_ = [ #class std::collate< wchar_t > - ("_vtable_", ctypes.POINTER(ctypes.c_void_p)), - ("_M_c_locale_collate", ctypes.POINTER( __locale_struct )), - ("id", std.locale.id), -] - -std.collate_less__char__greater_._fields_ = [ #class std::collate< char > - ("_vtable_", ctypes.POINTER(ctypes.c_void_p)), - ("_M_c_locale_collate", ctypes.POINTER( __locale_struct )), - ("id", std.locale.id), -] - -std.__lexicographical_compare_less__true__greater_._fields_ = [ #class std::__lexicographical_compare< true > - ("__empty__", ctypes.c_char * 4) -] - -std.basic_ostream_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater___greater_._fields_ = [ #class std::basic_ostream< wchar_t, std::char_traits< wchar_t > > - ("__empty__", ctypes.c_char * 4) -] - -std.basic_ostream_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater___greater_.sentry._fields_ = [ #class std::basic_ostream< wchar_t, std::char_traits< wchar_t > >::sentry - ("_M_ok", ctypes.c_bool), - ("_M_os", ctypes.POINTER( std.basic_ostream_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater___greater_ )), -] - -std.string._fields_ = [ #class std::string - ("npos", ctypes.c_uint), - ("_M_dataplus", std.string._Alloc_hider), -] - -std.string._Rep_base._fields_ = [ #class std::string::_Rep_base - ("_M_length", ctypes.c_uint), - ("_M_capacity", ctypes.c_uint), - ("_M_refcount", ctypes.c_int), -] - -std.string._Rep._fields_ = [ #class std::string::_Rep - ("_S_max_size", ctypes.c_uint), - ("_S_terminal", ctypes.c_char), - ("_S_empty_rep_storage", ( ctypes.c_uint * 4 )), -] - -std.string._Alloc_hider._fields_ = [ #class std::string::_Alloc_hider - ("_M_p", ctypes.c_char_p), -] - -std.locale._fields_ = [ #class std::locale - ("none", ctypes.c_int), - ("ctype", ctypes.c_int), - ("numer... [truncated message content] |
From: <rom...@us...> - 2009-01-14 15:14:42
|
Revision: 1572 http://pygccxml.svn.sourceforge.net/pygccxml/?rev=1572&view=rev Author: roman_yakovenko Date: 2009-01-14 15:14:35 +0000 (Wed, 14 Jan 2009) Log Message: ----------- adding ability to configure gccxml parser in a configuration files Modified Paths: -------------- pygccxml_dev/pygccxml/parser/__init__.py pygccxml_dev/pygccxml/parser/config.py Modified: pygccxml_dev/pygccxml/parser/__init__.py =================================================================== --- pygccxml_dev/pygccxml/parser/__init__.py 2009-01-14 13:20:11 UTC (rev 1571) +++ pygccxml_dev/pygccxml/parser/__init__.py 2009-01-14 15:14:35 UTC (rev 1572) @@ -8,6 +8,7 @@ from config import config_t from config import gccxml_configuration_t +from config import load_gccxml_configuration from project_reader import COMPILATION_MODE from project_reader import project_reader_t @@ -27,6 +28,7 @@ CONTENT_TYPE = file_configuration_t.CONTENT_TYPE + def parse( files , config=None , compilation_mode=COMPILATION_MODE.FILE_BY_FILE @@ -43,7 +45,7 @@ @type cache: L{cache_base_t} or str @returns: Declarations """ - + if not config: config = config_t() parser = project_reader_t( config=config, cache=cache ) Modified: pygccxml_dev/pygccxml/parser/config.py =================================================================== --- pygccxml_dev/pygccxml/parser/config.py 2009-01-14 13:20:11 UTC (rev 1571) +++ pygccxml_dev/pygccxml/parser/config.py 2009-01-14 15:14:35 UTC (rev 1572) @@ -9,6 +9,7 @@ import os import sys import copy +import types class parser_configuration_t(object): """Configuration object to collect parameters for invoking C++ parser @@ -76,10 +77,13 @@ """list of "undefine" directives """ return self.__undefine_symbols - @property - def compiler(self): - """compiler name to simulate""" + def get_compiler(self): + """get compiler name to simulate""" return self.__compiler + def set_compiler( self, compiler ): + """set compiler name to simulate""" + self.__compiler = compiler + compiler = property( get_compiler, set_compiler, doc="compiler name to simulate" ) def __get_cflags(self): return self.__cflags @@ -104,7 +108,6 @@ map( lambda idir: self.__ensure_dir_exists( idir, 'include directory' ) , self.include_paths ) - class gccxml_configuration_t(parser_configuration_t): """Configuration object to collect parameters for invoking gccxml. @@ -189,3 +192,64 @@ raise RuntimeError( msg ) config_t = gccxml_configuration_t #backward computability + + +def load_gccxml_configuration( configuration ): + """loads GCC-XML configuration from a file + + Configuration file sceleton: + + >>> start <<< + + [gccxml] + #path to gccxml executable file - optional, if not provided, os.environ['PATH'] + #variable is used to find it + gccxml_path= + #gccxml working directory - optional, could be set to your source code directory + working_directory= + #additional include directories, separated by ';' or ':' + include_paths= + #gccxml has a nice algorithms, which selects what C++ compiler to emulate. + #You can explicitly set what compiler it should emulate. + #Valid options are: g++, msvc6, msvc7, msvc71, msvc8, cl. + compiler= + + #GCC-XML site: http://gccxml.org/ + + >>> end <<< + + + configuration could be string( configuration file path ) or instance of + ConfigParser.SafeConfigParser class + """ + parser = configuration + if isinstance( configuration, types.StringTypes ): + from ConfigParser import SafeConfigParser + parser = SafeConfigParser() + parser.readfp( file( configuration, 'r' ) ) + gccxml_cfg = gccxml_configuration_t() + if not parser.has_section( 'gccxml' ): + return gccxml_cfg + for name, value in parser.items( 'gccxml' ): + value = value.strip() + if name == 'gccxml_path': + gccxml_cfg.gccxml_path = value + elif name == 'working_directory': + gccxml_cfg.working_directory = value + elif name == 'include_paths': + for p in value.split( ';' ): + for pp in p.split( ':' ): + pp = pp.strip() + if pp: + gccxml_cfg.include_paths.append( pp ) + elif name == 'compiler': + gccxml_cfg.compiler = value + else: + print '\n%s entry was ignored' % name + return gccxml_cfg + + +if __name__ == '__main__': + print load_gccxml_configuration( 'gccxml.cfg' ).__dict__ + + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rom...@us...> - 2009-01-14 13:20:21
|
Revision: 1571 http://pygccxml.svn.sourceforge.net/pygccxml/?rev=1571&view=rev Author: roman_yakovenko Date: 2009-01-14 13:20:11 +0000 (Wed, 14 Jan 2009) Log Message: ----------- web ui - main success scenarios work! Modified Paths: -------------- ui/web/code_generator.py ui/web/form_processor.py ui/web/static/generator.css ui/web/templates/generator_tmpl.html Modified: ui/web/code_generator.py =================================================================== --- ui/web/code_generator.py 2009-01-14 09:53:39 UTC (rev 1570) +++ ui/web/code_generator.py 2009-01-14 13:20:11 UTC (rev 1571) @@ -4,6 +4,7 @@ from pyplusplus import _logging_ from pygccxml import declarations from pyplusplus import module_builder +from pyplusplus.module_builder import ctypes_module_builder_t import xml.sax.saxutils class manager_t: @@ -36,10 +37,6 @@ user_msg.append( str( error ) ) return '', '\n'.join( user_msg ) - - def generate_pypp_code( self, source_code ): - return "import pyplusplus" - def generate_bpl_code( self, file_configuration ): try: _logging_.loggers.make_inmemory() @@ -61,6 +58,26 @@ user_msg.append( str( error ) ) return '', '\n'.join( user_msg ) + def generate_ctypes_code( self, file_configuration, symbols_file ): + try: + _logging_.loggers.make_inmemory() + mb = ctypes_module_builder_t( [ file_configuration ], symbols_file, config.gccxml ) + mb.build_code_creator( symbols_file ) + code = mb.code_creator.create() + code = code.replace( '\n\r', '\n' ) + code = code.replace( '\r\n', '\n' ) + warnings = _logging_.loggers.stream.getvalue() + _logging_.loggers.stream.close() + return code, warnings + except Exception, error: + user_msg = [ 'Error occured during code generation process!' ] + user_msg.append( 'Error:' ) + user_msg.append( str( error ) ) + return '', '\n'.join( user_msg ) + + + + if __name__ == '__main__': m = manager_t() m.generate_bpl_code( 'int do_smth( int &);int do_smth( int, int);' ) Modified: ui/web/form_processor.py =================================================================== --- ui/web/form_processor.py 2009-01-14 09:53:39 UTC (rev 1570) +++ ui/web/form_processor.py 2009-01-14 13:20:11 UTC (rev 1571) @@ -10,8 +10,8 @@ self.__handlers = { "VIEW_XML" : self.on_view_xml , "VIEW_DECLS" : self.on_view_decls - , "GENERATE_BP_CODE" : self.on_generate_bp_code - , "GENERATE_BP_PYPP_CODE" : self.on_generate_bp_pypp_code + , "GENERATE_BP_CODE" : self.on_generate_bpl_code + , "GENERATE_BP_PYPP_CODE" : self.on_generate_bpl_pypp_code , "GENERATE_CTYPES_CODE" : self.on_generate_ctypes_code , "GENERATE_CTYPES_PYPP_CODE" : self.on_generate_ctypes_pypp_code } @@ -35,18 +35,21 @@ decls_tree, warnings = self.__code_generator.show_declarations( fc ) return decls_tree, warnings - def on_generate_bp_code( self ): - fc = self.__create_fc( 'BP' ) + def on_generate_bpl_code( self ): + fc = self.__create_fc( 'BPL' ) code, warnings = self.__code_generator.generate_bpl_code( fc ) return code, warnings - def on_generate_bp_pypp_code( self ): + def on_generate_bpl_pypp_code( self ): w = wizard.wizard_t() - code = w.create_bpl_code( config.gccxml, self.__create_fc( 'BP' ) ) + code = w.create_bpl_code( config.gccxml, self.__create_fc( 'BPL' ) ) return code, '' def on_generate_ctypes_code( self ): - pass + fc = parser.create_source_fc( self.__input[ "CTYPES_FILE_NAME" ] ) + symbols_file = self.__input[ "CTYPES_SHLIB_FILE_NAME" ] + code, warnings = self.__code_generator.generate_ctypes_code( fc, symbols_file ) + return code, warnings def on_generate_ctypes_pypp_code( self ): pass Modified: ui/web/static/generator.css =================================================================== --- ui/web/static/generator.css 2009-01-14 09:53:39 UTC (rev 1570) +++ ui/web/static/generator.css 2009-01-14 13:20:11 UTC (rev 1571) @@ -17,15 +17,16 @@ } textarea{ - margin-top: 3px; - margin-right: 5px; - margin-left: 5px; - margin-bottom: 3px; + margin-top: 2mm; + margin-right: 2mm; + margin-left: 2mm; + margin-bottom: 2mm; } input{ - margin-top: 5px; - margin-right: 5px; - margin-left: 5px; - margin-bottom: 5px; + margin-top: 2mm; + margin-right: 2mm; + margin-left: 2mm; + margin-bottom: 2mm; } + Modified: ui/web/templates/generator_tmpl.html =================================================================== --- ui/web/templates/generator_tmpl.html 2009-01-14 09:53:39 UTC (rev 1570) +++ ui/web/templates/generator_tmpl.html 2009-01-14 13:20:11 UTC (rev 1571) @@ -11,23 +11,23 @@ </head> <body> <h2>pygccxml & py++ demo</h2> - <form action="/generated.html" method="post" name="CODE_GENERATOR_FORM"> + <form action="/generated.html" method="post"> <p>In the following tabs you can configurate GCC-XML compiler. It is not a must</p> <div class="tabber"> <div class="tabbertab"> <h2>Include directories</h2> <p>List include directories( each directory on the new line ):</p> - <textarea name="COMPILER_INCLUDE_DIRECTORIES" rows="5" cols="80" style="margin-left: 5mm" ></textarea> + <textarea name="COMPILER_INCLUDE_DIRECTORIES" rows="5" cols="80"></textarea> </div> <div class="tabbertab"> <h2>Preprocessor definitions</h2> <p>Configure preprocessor ( define -D"HAS_XYZ=1" or undefine -U"_DEBUG" ):</p> - <textarea name="COMPILER_PREPROCESSOR_DEFINITIONS" rows="5" cols="80" style="margin-left: 5mm" ></textarea> + <textarea name="COMPILER_PREPROCESSOR_DEFINITIONS" rows="5" cols="80"></textarea> </div> <div class="tabbertab"> <h2>Advance</h2> <p>Define GCC-XML command line arguments:</p> - <textarea name="COMPILER_CMD_ARGS" rows="5" cols="80" style="margin-left: 5mm"></textarea> + <textarea name="COMPILER_CMD_ARGS" rows="5" cols="80" ></textarea> </div> </div> <p>Add some text that describes purpose of the "Text" and "File"</p> @@ -36,9 +36,9 @@ <h2>pygccxml demonstration</h2> <p></p> <input type="radio" name="GCCXML_TAKE_CODE_FROM" value="file" checked="checked" />Header file:<br/> - <input type="text" name="GCCXML_FILE_NAME" size="80" style="margin-left: 5mm" /><br /> + <input type="text" name="GCCXML_FILE_NAME" style="min-width:93%;" /><br /> <input type="radio" name="GCCXML_TAKE_CODE_FROM" value="text"/>Code:<br/> - <textarea name="GCCXML_SOURCE_CODE" rows="15" cols="80" style="margin-left: 5mm"></textarea> + <textarea name="GCCXML_SOURCE_CODE" rows="15" cols="80" ></textarea> <br/> <hr /> <input type="submit" name="VIEW_XML" value="View XML" /> @@ -48,10 +48,10 @@ <div class="tabbertab"> <h2>Boost.Python code generator</h2> <p></p> - <input type="radio" name="BP_TAKE_CODE_FROM" value="file" checked="checked" />Header file:<br/> - <input type="text" name="BP_FILE_NAME" size="80" style="margin-left: 5mm" - <input type="radio" name="BP_TAKE_CODE_FROM" value="text"/>Code:<br/> - <textarea name="BP_SOURCE_CODE" rows="15" cols="80" style="margin-left: 5mm"></textarea> + <input type="radio" name="BPL_TAKE_CODE_FROM" value="file" checked="checked" />Header file:<br/> + <input type="text" name="BPL_FILE_NAME" style="min-width:93%;"/><br/> + <input type="radio" name="BPL_TAKE_CODE_FROM" value="text"/>Code:<br/> + <textarea name="BPL_SOURCE_CODE" rows="15" cols="80" ></textarea> <br/> <hr /> <input type="submit" name="GENERATE_BP_CODE" value="Generate code" /> @@ -62,13 +62,14 @@ <h2>ctypes code generator</h2> <p></p> <a>Dynamic/shared library path:</a> - <input type="text" name="CTYPES_SHLIB_FILE_NAME" size="80" style="margin-left: 5mm" /><br/> - <input type="radio" name="CTYPES_TAKE_CODE_FROM" value="file" checked="checked" />Header file:<br/> - <input type="text" name="CTYPES_FILE_NAME" size="80" style="margin-left: 5mm" /><br/> - <input type="radio" name="CTYPES_TAKE_CODE_FROM" value="text"/>Code:<br/> - <textarea name="CTYPES_SOURCE_CODE" rows="15" cols="80" style="margin-left: 5mm"></textarea> - <br/> - <hr /> + <input type="text" name="CTYPES_SHLIB_FILE_NAME" style="min-width:93%;" /><br/> + <!--input type="radio" name="CTYPES_TAKE_CODE_FROM" value="file" checked="checked" />Header file:<br/--> + <a>Header file:</a> + <input type="text" name="CTYPES_FILE_NAME" style="min-width:93%;" /><br/> + <!--input type="radio" name="CTYPES_TAKE_CODE_FROM" value="text"/>Code:<br/--> + <!--textarea name="CTYPES_SOURCE_CODE" rows="15" cols="80" ></textarea--> + <!--br/--> + <hr/> <input type="submit" name="GENERATE_CTYPES_CODE" value="Generate code" /> <a></a> <input type="submit" name="GENERATE_CTYPES_PYPP_CODE" value="Generate Py++ code" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rom...@us...> - 2009-01-14 09:53:49
|
Revision: 1570 http://pygccxml.svn.sourceforge.net/pygccxml/?rev=1570&view=rev Author: roman_yakovenko Date: 2009-01-14 09:53:39 +0000 (Wed, 14 Jan 2009) Log Message: ----------- adding ability to display generated XML Modified Paths: -------------- ui/web/code_generator.py ui/web/main.py ui/web/templates/generator_tmpl.html Added Paths: ----------- ui/web/form_processor.py Removed Paths: ------------- ui/web/forms.py Modified: ui/web/code_generator.py =================================================================== --- ui/web/code_generator.py 2009-01-14 09:50:52 UTC (rev 1569) +++ ui/web/code_generator.py 2009-01-14 09:53:39 UTC (rev 1570) @@ -4,9 +4,24 @@ from pyplusplus import _logging_ from pygccxml import declarations from pyplusplus import module_builder +import xml.sax.saxutils class manager_t: + def __init__( self ): + pass + def show_xml( self, file_configuration ): + try: + reader = parser.project_reader_t( config=config.gccxml ) + content = reader.read_xml( file_configuration ) + return content, '' + #return xml.sax.saxutils.escape( content ), '' + except Exception, error: + user_msg = [ 'Error occured during code generation process!' ] + user_msg.append( 'Error:' ) + user_msg.append( str( error ) ) + return '', '\n'.join( user_msg ) + def show_declarations( self, file_configuration ): try: reader = parser.project_reader_t( config=config.gccxml ) @@ -14,7 +29,6 @@ global_ns = declarations.get_global_namespace( decls ) tmp = [] declarations.print_declarations( decls, verbose=False, writer=lambda x: tmp.append( x.rstrip() ) ) - print os.linesep.join( tmp ) return os.linesep.join( tmp ), '' except Exception, error: user_msg = [ 'Error occured during code generation process!' ] Copied: ui/web/form_processor.py (from rev 1567, ui/web/forms.py) =================================================================== --- ui/web/form_processor.py (rev 0) +++ ui/web/form_processor.py 2009-01-14 09:53:39 UTC (rev 1570) @@ -0,0 +1,79 @@ +import config +import web +from pygccxml import parser +import wizard + +class generator_t: + def __init__( self, code_generator, input ): + self.__input = input + self.__code_generator = code_generator + self.__handlers = { + "VIEW_XML" : self.on_view_xml + , "VIEW_DECLS" : self.on_view_decls + , "GENERATE_BP_CODE" : self.on_generate_bp_code + , "GENERATE_BP_PYPP_CODE" : self.on_generate_bp_pypp_code + , "GENERATE_CTYPES_CODE" : self.on_generate_ctypes_code + , "GENERATE_CTYPES_PYPP_CODE" : self.on_generate_ctypes_pypp_code + } + + def __create_fc( self, prefix ): + fto_key = prefix + '_TAKE_CODE_FROM' + code_key = prefix + '_SOURCE_CODE' + file_key = prefix + '_FILE_NAME' + if self.__input[fto_key] == 'text': + return parser.create_text_fc( self.__input[ code_key ] ) + else: + return parser.create_source_fc( self.__input[ file_key ] ) + + def on_view_xml( self ): + fc = self.__create_fc( 'GCCXML' ) + decls_tree, warnings = self.__code_generator.show_xml( fc ) + return decls_tree, warnings + + def on_view_decls( self ): + fc = self.__create_fc( 'GCCXML' ) + decls_tree, warnings = self.__code_generator.show_declarations( fc ) + return decls_tree, warnings + + def on_generate_bp_code( self ): + fc = self.__create_fc( 'BP' ) + code, warnings = self.__code_generator.generate_bpl_code( fc ) + return code, warnings + + def on_generate_bp_pypp_code( self ): + w = wizard.wizard_t() + code = w.create_bpl_code( config.gccxml, self.__create_fc( 'BP' ) ) + return code, '' + + def on_generate_ctypes_code( self ): + pass + + def on_generate_ctypes_pypp_code( self ): + pass + + def not_found_handler( self ): + raise RuntimeError( 'Error - unknown submit action' ) + + def __select_handler( self ): + for key, handler in self.__handlers.iteritems(): + if key in self.__input: + return handler + else: + return self.not_found_handler + + def process( self ): + handler = self.__select_handler() + return handler() + + + #~ source_code = request_data[ self.__source_code.name] + #~ if self.__show_decls.name in request_data: + #~ generated = self.__code_generator.show_declarations( source_code ) + #~ elif self.__generate_pypp_code.name in request_data: + #~ generated = self.__code_generator.generate_pypp_code( source_code ) + #~ elif self.__generate_bpl_code.name in request_data: + #~ generated, warnings = self.__code_generator.generate_bpl_code( source_code ) + #~ else: + #~ generated = 'error - unknown submit action' + #~ return generated, warnings + Deleted: ui/web/forms.py =================================================================== --- ui/web/forms.py 2009-01-14 09:50:52 UTC (rev 1569) +++ ui/web/forms.py 2009-01-14 09:53:39 UTC (rev 1570) @@ -1,122 +0,0 @@ -import config -import web -from pygccxml import parser -import wizard - -class Label(web.form.Input): - tmpl = """<label name="%(name)s" %(atts)s>%(value)s</label>%(note)s""" - def render(self): - value = '' - if self.value is not None: - value = web.net.websafe(self.value) - return self.tmpl % dict( name=web.net.websafe(self.name) - , value=value - , atts=self.addatts() - , note=self.rendernote(self.note) ) - -class RawHTML(web.form.Input): - def __init__(self, html, *validators, **attrs): - web.form.Input.__init__( self, '', *validators, **attrs ) - self.__html = html - def render(self): - return self.__html - -class SimpleForm( web.form.Form ): - tmpl = """<form %(attrs)s>\n%(inputs)s\n</form>\n""" - def __init__(self, *inputs, **kw): - web.form.Form.__init__( self, *inputs, **kw ) - self.__kw = kw - self.__kw.pop( 'validators', None ) - - def render_addattrs( self ): - attrs = [] - for (n, v) in self.__kw.iteritems(): - attrs.append( ' %s="%s"' % (n, web.net.websafe(v)) ) - return ''.join( attrs ) - - def render( self ): - controls = [] - controls.append( self.rendernote(self.note) ) - for i in self.inputs: - if i.pre: - controls.append( i.pre ) - controls.append( i.render() ) - if i.post: - controls.append( i.post ) - return self.tmpl % dict( attrs=self.render_addattrs(), inputs='\n'.join( controls ) ) - - -class generator_t: - def __init__( self, code_generator, input ): - self.__input = input - self.__code_generator = code_generator - self.__handlers = { - "VIEW_XML" : self.on_view_xml - , "VIEW_DECLS" : self.on_view_decls - , "GENERATE_BP_CODE" : self.on_generate_bp_code - , "GENERATE_BP_PYPP_CODE" : self.on_generate_bp_pypp_code - , "GENERATE_CTYPES_CODE" : self.on_generate_ctypes_code - , "GENERATE_CTYPES_PYPP_CODE" : self.on_generate_ctypes_pypp_code - } - - def __create_fc( self, prefix ): - fto_key = prefix + '_TAKE_CODE_FROM' - code_key = prefix + '_SOURCE_CODE' - file_key = prefix + '_FILE_NAME' - if self.__input[fto_key] == 'text': - return parser.create_text_fc( self.__input[ code_key ] ) - else: - return parser.create_source_fc( self.__input[ file_key ] ) - - def on_view_xml( self ): - fc = self.__create_fc( 'GCCXML' ) - decls_tree, warnings = self.__code_generator.show_declarations( fc ) - return decls_tree, warnings - - def on_view_decls( self ): - fc = self.__create_fc( 'GCCXML' ) - decls_tree, warnings = self.__code_generator.show_declarations( fc ) - return decls_tree, warnings - - def on_generate_bp_code( self ): - fc = self.__create_fc( 'BP' ) - code, warnings = self.__code_generator.generate_bpl_code( fc ) - return code, warnings - - def on_generate_bp_pypp_code( self ): - w = wizard.wizard_t() - code = w.create_bpl_code( config.gccxml, self.__create_fc( 'BP' ) ) - return code, '' - - def on_generate_ctypes_code( self ): - pass - - def on_generate_ctypes_pypp_code( self ): - pass - - def not_found_handler( self ): - raise RuntimeError( 'Error - unknown submit action' ) - - def __select_handler( self ): - for key, handler in self.__handlers.iteritems(): - if key in self.__input: - return handler - else: - return self.not_found_handler - - def process( self ): - handler = self.__select_handler() - return handler() - - - #~ source_code = request_data[ self.__source_code.name] - #~ if self.__show_decls.name in request_data: - #~ generated = self.__code_generator.show_declarations( source_code ) - #~ elif self.__generate_pypp_code.name in request_data: - #~ generated = self.__code_generator.generate_pypp_code( source_code ) - #~ elif self.__generate_bpl_code.name in request_data: - #~ generated, warnings = self.__code_generator.generate_bpl_code( source_code ) - #~ else: - #~ generated = 'error - unknown submit action' - #~ return generated, warnings - Modified: ui/web/main.py =================================================================== --- ui/web/main.py 2009-01-14 09:50:52 UTC (rev 1569) +++ ui/web/main.py 2009-01-14 09:53:39 UTC (rev 1570) @@ -2,7 +2,7 @@ import sys import web -import forms +import form_processor import code_generator urls = ( "/", "generator" @@ -21,7 +21,7 @@ class generated: def POST(self, r_url=None ): - form = forms.generator_t( code_generator.manager_t(), web.input() ) + form = form_processor.generator_t( code_generator.manager_t(), web.input() ) generated_frender = web.template.frender('templates/generated_tmpl.html') generated, warnings = form.process() return generated_frender(generated, warnings) Modified: ui/web/templates/generator_tmpl.html =================================================================== --- ui/web/templates/generator_tmpl.html 2009-01-14 09:50:52 UTC (rev 1569) +++ ui/web/templates/generator_tmpl.html 2009-01-14 09:53:39 UTC (rev 1570) @@ -11,7 +11,7 @@ </head> <body> <h2>pygccxml & py++ demo</h2> - <form action="/generated.html" method="post" id="SourceCodeForm"> + <form action="/generated.html" method="post" name="CODE_GENERATOR_FORM"> <p>In the following tabs you can configurate GCC-XML compiler. It is not a must</p> <div class="tabber"> <div class="tabbertab"> @@ -36,7 +36,7 @@ <h2>pygccxml demonstration</h2> <p></p> <input type="radio" name="GCCXML_TAKE_CODE_FROM" value="file" checked="checked" />Header file:<br/> - <input type="file" name="GCCXML_FILE_NAME" size="90" style="margin-left: 5mm" /><br/> + <input type="text" name="GCCXML_FILE_NAME" size="80" style="margin-left: 5mm" /><br /> <input type="radio" name="GCCXML_TAKE_CODE_FROM" value="text"/>Code:<br/> <textarea name="GCCXML_SOURCE_CODE" rows="15" cols="80" style="margin-left: 5mm"></textarea> <br/> @@ -49,7 +49,7 @@ <h2>Boost.Python code generator</h2> <p></p> <input type="radio" name="BP_TAKE_CODE_FROM" value="file" checked="checked" />Header file:<br/> - <input type="file" name="BP_FILE_NAME" size="90" style="margin-left: 5mm" /><br/> + <input type="text" name="BP_FILE_NAME" size="80" style="margin-left: 5mm" <input type="radio" name="BP_TAKE_CODE_FROM" value="text"/>Code:<br/> <textarea name="BP_SOURCE_CODE" rows="15" cols="80" style="margin-left: 5mm"></textarea> <br/> @@ -62,9 +62,9 @@ <h2>ctypes code generator</h2> <p></p> <a>Dynamic/shared library path:</a> - <input type="file" name="CTYPES_SHLIB_FILE_NAME" size="90" style="margin-left: 5mm" /><br/> + <input type="text" name="CTYPES_SHLIB_FILE_NAME" size="80" style="margin-left: 5mm" /><br/> <input type="radio" name="CTYPES_TAKE_CODE_FROM" value="file" checked="checked" />Header file:<br/> - <input type="file" name="CTYPES_FILE_NAME" size="90" style="margin-left: 5mm" /><br/> + <input type="text" name="CTYPES_FILE_NAME" size="80" style="margin-left: 5mm" /><br/> <input type="radio" name="CTYPES_TAKE_CODE_FROM" value="text"/>Code:<br/> <textarea name="CTYPES_SOURCE_CODE" rows="15" cols="80" style="margin-left: 5mm"></textarea> <br/> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rom...@us...> - 2009-01-14 09:50:54
|
Revision: 1569 http://pygccxml.svn.sourceforge.net/pygccxml/?rev=1569&view=rev Author: roman_yakovenko Date: 2009-01-14 09:50:52 +0000 (Wed, 14 Jan 2009) Log Message: ----------- adding ability to view gccxml generated file Modified Paths: -------------- pygccxml_dev/pygccxml/parser/project_reader.py Modified: pygccxml_dev/pygccxml/parser/project_reader.py =================================================================== --- pygccxml_dev/pygccxml/parser/project_reader.py 2009-01-14 09:47:29 UTC (rev 1568) +++ pygccxml_dev/pygccxml/parser/project_reader.py 2009-01-14 09:50:52 UTC (rev 1569) @@ -307,6 +307,44 @@ reader = source_reader.source_reader_t( self.__config, None, self.__decl_factory ) return reader.read_string( content ) + def read_xml( self, file_configuration ): + """parses C++ code, defined on the file_configurations and returns GCCXML + generated file content""" + + xml_file_path = None + delete_xml_file = True + fc = file_configuration + reader = source_reader.source_reader_t( self.__config, None, self.__decl_factory ) + try: + if fc.content_type == fc.CONTENT_TYPE.STANDARD_SOURCE_FILE: + self.logger.info( 'Parsing source file "%s" ... ' % fc.data ) + xml_file_path = reader.create_xml_file( fc.data ) + elif fc.content_type == file_configuration_t.CONTENT_TYPE.GCCXML_GENERATED_FILE: + self.logger.info( 'Parsing xml file "%s" ... ' % fc.data ) + xml_file_path = fc.data + delete_xml_file = False + elif fc.content_type == fc.CONTENT_TYPE.CACHED_SOURCE_FILE: + #TODO: raise error when header file does not exist + if not os.path.exists( fc.cached_source_file ): + dir_ = os.path.split( fc.cached_source_file )[0] + if dir_ and not os.path.exists( dir_ ): + os.makedirs( dir_ ) + self.logger.info( 'Creating xml file "%s" from source file "%s" ... ' + % ( fc.cached_source_file, header ) ) + xml_file_path = reader.create_xml_file( header, fc.cached_source_file ) + else: + xml_file_path = fc.cached_source_file + else: + xml_file_path = reader.create_xml_file_from_string( fc.data ) + xml_file = file( xml_file_path, 'r' ) + xml = xml_file.read() + xml_file.close() + utils.remove_file_no_raise( xml_file_path ) + return xml + finally: + if xml_file_path and delete_xml_file: + utils.remove_file_no_raise( xml_file_path ) + def _join_top_namespaces(self, main_ns_list, other_ns_list): answer = main_ns_list[:] for other_ns in other_ns_list: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rom...@us...> - 2009-01-14 09:47:36
|
Revision: 1568 http://pygccxml.svn.sourceforge.net/pygccxml/?rev=1568&view=rev Author: roman_yakovenko Date: 2009-01-14 09:47:29 +0000 (Wed, 14 Jan 2009) Log Message: ----------- remove dead code Modified Paths: -------------- pygccxml_dev/pygccxml/parser/source_reader.py Modified: pygccxml_dev/pygccxml/parser/source_reader.py =================================================================== --- pygccxml_dev/pygccxml/parser/source_reader.py 2009-01-13 23:29:45 UTC (rev 1567) +++ pygccxml_dev/pygccxml/parser/source_reader.py 2009-01-14 09:47:29 UTC (rev 1568) @@ -320,28 +320,3 @@ decls = filter( lambda inst: isinstance( inst, namespace_t ) and not inst.parent , decls.itervalues() ) return ( decls, files.values() ) - - def read_synopsis_file( self, source_file ): - import synopsis_scanner - from Synopsis import AST - from Synopsis.Parsers import Cxx - - ffname = self.__file_full_name(source_file) - - cppflags = [] - map( lambda dpath: cppflags.append( '-I %s' % dpath ) - , self.__config.include_paths ) - map( lambda define: cppflags.append( '-D %s' % define ) - , self.__config.define_symbols ) - map( lambda define: cppflags.append( '-U %s' % define ) - , self.__config.undefine_symbols ) - - cxx = Cxx.Parser( preprocess=True, cppflags=cppflags ) - ast = AST.AST() - cxx.process( ast, input=[source_file] ) - scanner = synopsis_scanner.scanner_t( ast, self.__decl_factory ) - scanner.visitAST( ast ) - declarations = [scanner.global_ns] - self.__dcache.update( ffname, self.__config, declarations, [] ) - return declarations - This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rom...@us...> - 2009-01-13 23:29:52
|
Revision: 1567 http://pygccxml.svn.sourceforge.net/pygccxml/?rev=1567&view=rev Author: roman_yakovenko Date: 2009-01-13 23:29:45 +0000 (Tue, 13 Jan 2009) Log Message: ----------- adding support for anonymous structs Modified Paths: -------------- pyplusplus_dev/pyplusplus/code_creators/class_introduction.py pyplusplus_dev/pyplusplus/code_creators/fields_definition.py pyplusplus_dev/pyplusplus/creators_factory/ctypes_creator.py pyplusplus_dev/pyplusplus/module_builder/ctypes_builder.py pyplusplus_dev/unittests/ctypes_pof_tester.py pyplusplus_dev/unittests/data/ctypes/opaque/opaque.h pyplusplus_dev/unittests/data/unnamed_classes_to_be_exported.hpp pyplusplus_dev/unittests/sconstruct Added Paths: ----------- pyplusplus_dev/unittests/data/ctypes/anonymous/ pyplusplus_dev/unittests/data/ctypes/anonymous/anonymous.cpp pyplusplus_dev/unittests/data/ctypes/anonymous/anonymous.h pyplusplus_dev/unittests/data/ctypes/anonymous/sconscript pyplusplus_dev/unittests/data/ctypes/include_algorithm/ pyplusplus_dev/unittests/data/ctypes/include_algorithm/include_algorithm.cpp pyplusplus_dev/unittests/data/ctypes/include_algorithm/include_algorithm.h pyplusplus_dev/unittests/data/ctypes/include_algorithm/sconscript Modified: pyplusplus_dev/pyplusplus/code_creators/class_introduction.py =================================================================== --- pyplusplus_dev/pyplusplus/code_creators/class_introduction.py 2009-01-13 15:36:40 UTC (rev 1566) +++ pyplusplus_dev/pyplusplus/code_creators/class_introduction.py 2009-01-13 23:29:45 UTC (rev 1567) @@ -9,14 +9,26 @@ import declaration_based from pygccxml import declarations +ctypes_base_classes = { + declarations.CLASS_TYPES.CLASS : 'Structure' + , declarations.CLASS_TYPES.UNION : 'Union' + , declarations.CLASS_TYPES.STRUCT : 'Structure' +} + class class_introduction_t(compound.compound_t, declaration_based.declaration_based_t): def __init__( self, class_ ): compound.compound_t.__init__(self) declaration_based.declaration_based_t.__init__( self, class_ ) + @property + def ctypes_base_class( self ): + global ctypes_base_classes + return ctypes_base_classes[ self.declaration.class_type ] + def _create_impl(self): result = [] - result.append( "class %s(ctypes.Structure):" % self.alias ) + result.append( "class %(alias)s(ctypes.%(base)s):" + % dict( alias=self.alias, base=self.ctypes_base_class ) ) result.append( self.indent( '"""class %s"""' % self.decl_identifier ) ) if self.creators: result.append( self.indent( '' ) ) Modified: pyplusplus_dev/pyplusplus/code_creators/fields_definition.py =================================================================== --- pyplusplus_dev/pyplusplus/code_creators/fields_definition.py 2009-01-13 15:36:40 UTC (rev 1566) +++ pyplusplus_dev/pyplusplus/code_creators/fields_definition.py 2009-01-13 23:29:45 UTC (rev 1567) @@ -4,6 +4,7 @@ # http://www.boost.org/LICENSE_1_0.txt) import os +import algorithm import code_creator import ctypes_formatter import declaration_based @@ -19,8 +20,29 @@ code_creator.code_creator_t.__init__(self) declaration_based.declaration_based_t.__init__( self, class_ ) + def has_unnamed_type( self, var ): + type_ = declarations.remove_pointer( var.type ) + #~ type_ = declarations.remove_declarated( type_ ) + if declarations.class_traits.is_my_case( type_ ): + cls = declarations.class_traits.get_declaration( type_ ) + return bool( not cls.name ) + else: + return False + def _create_impl(self): result = [] + #~ import pdb + #~ pdb.set_trace() + + anonymous_vars = self.declaration.vars( self.has_unnamed_type, recursive=False, allow_empty=True ) + if anonymous_vars: + formated_vars = [] + for var in anonymous_vars: + formated_vars.append( '"%s"' % var.alias ) + result.append( '%(complete_py_name)s._anonymous_ = [%(vars)s]' + % dict( complete_py_name=self.complete_py_name + , vars=', '.join( formated_vars ) ) ) + result.append( '%(complete_py_name)s._fields_ = [ #class %(decl_identifier)s' % dict( complete_py_name=self.complete_py_name , decl_identifier=self.decl_identifier) ) @@ -35,7 +57,7 @@ vars.sort( key=lambda d: d.location.line ) for v in vars: result.append( self.indent( '("%(name)s", %(type)s),' - % dict( name=v.name + % dict( name=v.alias ,type=ctypes_formatter.as_ctype( v.type ) ) ) ) result.append( ']' ) return os.linesep.join( result ) Modified: pyplusplus_dev/pyplusplus/creators_factory/ctypes_creator.py =================================================================== --- pyplusplus_dev/pyplusplus/creators_factory/ctypes_creator.py 2009-01-13 15:36:40 UTC (rev 1566) +++ pyplusplus_dev/pyplusplus/creators_factory/ctypes_creator.py 2009-01-13 23:29:45 UTC (rev 1567) @@ -235,8 +235,6 @@ def visit_class(self): self.__dependencies_manager.add_exported( self.curr_decl ) if not self.curr_decl.opaque: - #fields definition should be recursive using the visitor - self.__class_defs_ccs.adopt_creator( code_creators.fields_definition_t( self.curr_decl ) ) if self.curr_decl.calldefs( self.__should_generate_code, recursive=False, allow_empty=True ): md_cc = code_creators.methods_definition_t( self.curr_decl ) self.__class2methods_def[ self.curr_decl ] = md_cc @@ -247,6 +245,9 @@ self.curr_decl = decl declarations.apply_visitor( self, decl ) self.curr_decl = class_ + #fields definition should be recursive using the visitor + #internal classes fields should be defined first + self.__class_defs_ccs.adopt_creator( code_creators.fields_definition_t( self.curr_decl ) ) else: cls_intro_cc = self.__class2introduction[ self.curr_decl ] cls_intro_cc.adopt_creator( code_creators.opaque_init_introduction_t( self.curr_decl ) ) Modified: pyplusplus_dev/pyplusplus/module_builder/ctypes_builder.py =================================================================== --- pyplusplus_dev/pyplusplus/module_builder/ctypes_builder.py 2009-01-13 15:36:40 UTC (rev 1566) +++ pyplusplus_dev/pyplusplus/module_builder/ctypes_builder.py 2009-01-13 23:29:45 UTC (rev 1567) @@ -58,7 +58,7 @@ self.global_ns = self.__parse_declarations( files, gccxml_config ) self.__blob2decl = binary_parsers.merge_information( self.global_ns, exported_symbols_file ) - self.__include_declarations() + self.__apply_defaults() self.__code_creator = None if optimize_queries: @@ -89,7 +89,7 @@ continue self.logger.debug( 'discovered dependency %s - included' % str(dependency) ) dd = traits.get_declaration( dependency ) - dd.ignore = False + dd.include() def __include_parent_classes( self, decl ): self.logger.debug( 'including decl %s' % str(decl) ) @@ -99,7 +99,7 @@ break else: self.logger.debug( 'including parent class %s' % str(parent) ) - parent.ignore = False + parent.include() parent = parent.parent def __include_declarations( self ): @@ -113,6 +113,15 @@ self.__include_dependencies( d ) self.logger.debug( 'including decl %s - done' % str(d) ) + def __apply_defaults( self ): + self.__include_declarations() + anonymous_classes = self.global_ns.classes( '', recursive=True, allow_empty=True ) + anonymous_classes.alias = '_' + #TODO: check whether the anonymous class unique or not + #if 1 == len( anonymous.parent.classes( '', recursive=False ) ): + anonymous_vars = self.global_ns.vars( '', recursive=True, allow_empty=True ) + anonymous_vars.alias = '_' + def build_code_creator( self, library_path, doc_extractor=None ): creator = creators_factory.ctypes_creator_t( self.global_ns , library_path Modified: pyplusplus_dev/unittests/ctypes_pof_tester.py =================================================================== --- pyplusplus_dev/unittests/ctypes_pof_tester.py 2009-01-13 15:36:40 UTC (rev 1566) +++ pyplusplus_dev/unittests/ctypes_pof_tester.py 2009-01-13 23:29:45 UTC (rev 1567) @@ -141,9 +141,29 @@ udt = self.module_ref.create() self.failUnless( 1977 == self.module_ref.read_user_data(udt) ) self.module_ref.destroy( udt ) + +class include_algorithm_tester_t( ctypes_base_tester_t ): + def __init__( self, *args, **keywd ): + ctypes_base_tester_t.__init__( self, 'include_algorithm', *args, **keywd ) + def customize( self, mb ): + self.failUnless( mb.global_ns.class_( 'io_marker_t' ).ignore == False ) + def test(self): + self.failUnless( mb.module_ref.io_marker_t ) +class anonymous_tester_t( ctypes_base_tester_t ): + def __init__( self, *args, **keywd ): + ctypes_base_tester_t.__init__( self, 'anonymous', *args, **keywd ) + + def customize( self, mb ): + mb.class_( 'rgbai' ).include() + + def test(self): + c = self.module_ref.color() + c.r + c.val + def create_suite(): suite = unittest.TestSuite() if 'win' in sys.platform: @@ -151,6 +171,8 @@ 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)) return suite def run_suite(): Added: pyplusplus_dev/unittests/data/ctypes/anonymous/anonymous.cpp =================================================================== --- pyplusplus_dev/unittests/data/ctypes/anonymous/anonymous.cpp (rev 0) +++ pyplusplus_dev/unittests/data/ctypes/anonymous/anonymous.cpp 2009-01-13 23:29:45 UTC (rev 1567) @@ -0,0 +1,3 @@ +#include "anonymous.h" + +void do_smth( color ){} Added: pyplusplus_dev/unittests/data/ctypes/anonymous/anonymous.h =================================================================== --- pyplusplus_dev/unittests/data/ctypes/anonymous/anonymous.h (rev 0) +++ pyplusplus_dev/unittests/data/ctypes/anonymous/anonymous.h 2009-01-13 23:29:45 UTC (rev 1567) @@ -0,0 +1,26 @@ +#pragma once +#include "libconfig.h" + + +struct EXPORT_SYMBOL rgbai{ + struct { + float r,g,b,a; + }; + int i; +}; + +struct EXPORT_SYMBOL color{ + union{ + struct { + float r,g,b,a; + }; + float val[4]; + }; +}; + +struct { + int x; +} unnamed_struct_with_mem_var_x; + +void EXPORT_SYMBOL do_smth( color ); + Added: pyplusplus_dev/unittests/data/ctypes/anonymous/sconscript =================================================================== --- pyplusplus_dev/unittests/data/ctypes/anonymous/sconscript (rev 0) +++ pyplusplus_dev/unittests/data/ctypes/anonymous/sconscript 2009-01-13 23:29:45 UTC (rev 1567) @@ -0,0 +1,5 @@ +Import('*') + +target_name = 'anonymous' +shlib = env.SharedLibrary( target=target_name, source=[ target_name + '.cpp' ] ) +env.Alias( target_name, shlib ) Added: pyplusplus_dev/unittests/data/ctypes/include_algorithm/include_algorithm.cpp =================================================================== --- pyplusplus_dev/unittests/data/ctypes/include_algorithm/include_algorithm.cpp (rev 0) +++ pyplusplus_dev/unittests/data/ctypes/include_algorithm/include_algorithm.cpp 2009-01-13 23:29:45 UTC (rev 1567) @@ -0,0 +1,5 @@ +#include "include_algorithm.h" + +void do_nothing( io_file_t* ){ + return; +} Added: pyplusplus_dev/unittests/data/ctypes/include_algorithm/include_algorithm.h =================================================================== --- pyplusplus_dev/unittests/data/ctypes/include_algorithm/include_algorithm.h (rev 0) +++ pyplusplus_dev/unittests/data/ctypes/include_algorithm/include_algorithm.h 2009-01-13 23:29:45 UTC (rev 1567) @@ -0,0 +1,11 @@ +#pragma once + +#include "libconfig.h" + +struct EXPORT_SYMBOL io_marker_t{}; + +struct EXPORT_SYMBOL io_file_t{ + io_marker_t* io_marker; +}; + +void EXPORT_SYMBOL do_nothing( io_file_t* ); Added: pyplusplus_dev/unittests/data/ctypes/include_algorithm/sconscript =================================================================== --- pyplusplus_dev/unittests/data/ctypes/include_algorithm/sconscript (rev 0) +++ pyplusplus_dev/unittests/data/ctypes/include_algorithm/sconscript 2009-01-13 23:29:45 UTC (rev 1567) @@ -0,0 +1,5 @@ +Import('*') + +target_name = 'include_algorithm' +shlib = env.SharedLibrary( target=target_name, source=[ target_name + '.cpp' ] ) +env.Alias( target_name, shlib ) Modified: pyplusplus_dev/unittests/data/ctypes/opaque/opaque.h =================================================================== --- pyplusplus_dev/unittests/data/ctypes/opaque/opaque.h 2009-01-13 15:36:40 UTC (rev 1566) +++ pyplusplus_dev/unittests/data/ctypes/opaque/opaque.h 2009-01-13 23:29:45 UTC (rev 1567) @@ -1,10 +1,12 @@ #pragma once -struct user_data_t{ +#include "libconfig.h" + +struct EXPORT_SYMBOL user_data_t{ int i; }; -user_data_t* create(); -int read_user_data(user_data_t*); -void destroy(user_data_t*); +user_data_t* EXPORT_SYMBOL create(); +int EXPORT_SYMBOL read_user_data(user_data_t*); +void EXPORT_SYMBOL destroy(user_data_t*); Modified: pyplusplus_dev/unittests/data/unnamed_classes_to_be_exported.hpp =================================================================== --- pyplusplus_dev/unittests/data/unnamed_classes_to_be_exported.hpp 2009-01-13 15:36:40 UTC (rev 1566) +++ pyplusplus_dev/unittests/data/unnamed_classes_to_be_exported.hpp 2009-01-13 23:29:45 UTC (rev 1567) @@ -6,9 +6,11 @@ #ifndef __unnamed_enums_to_be_exported_hpp__ #define __unnamed_enums_to_be_exported_hpp__ +#include "libconfig.h" + namespace unnamed_enums{ -struct color{ +struct EXPORT_SYMBOL color{ union{ struct { float r,g,b,a; @@ -17,10 +19,12 @@ }; }; -struct{ +struct { int x; } unnamed_struct_with_mem_var_x; +void EXPORT_SYMBOL do_smth( color ){} + } #endif//__unnamed_enums_to_be_exported_hpp__ Modified: pyplusplus_dev/unittests/sconstruct =================================================================== --- pyplusplus_dev/unittests/sconstruct 2009-01-13 15:36:40 UTC (rev 1566) +++ pyplusplus_dev/unittests/sconstruct 2009-01-13 23:29:45 UTC (rev 1567) @@ -13,7 +13,9 @@ env.AppendUnique( CCFLAGS=[ r"/MD",r"/EHsc",r"/GR",r"/Zc:wchar_t",r"/Zc:forScope" ] ) env.AppendUnique( LINKFLAGS=[r"/MAP:${TARGET.base}.map", r"/MAPINFO:EXPORTS"] ) -scripts = [ 'pof', 'issues', 'enums', 'opaque' ] +env.AppendUnique( CPPPATH=['#data'] ) + +scripts = [ 'pof', 'issues', 'enums', 'opaque', 'include_algorithm', 'anonymous' ] for s in scripts: SConscript( 'data/ctypes/%s/sconscript' % s , variant_dir='data/ctypes/%s/binaries' % s This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rom...@us...> - 2009-01-13 15:36:50
|
Revision: 1566 http://pygccxml.svn.sourceforge.net/pygccxml/?rev=1566&view=rev Author: roman_yakovenko Date: 2009-01-13 15:36:40 +0000 (Tue, 13 Jan 2009) Log Message: ----------- more changes to WEB UI Modified Paths: -------------- pygccxml_dev/pygccxml/declarations/decl_printer.py pyplusplus_dev/unittests/ctypes_pof_tester.py ui/web/code_generator.py ui/web/config.py ui/web/forms.py ui/web/main.py ui/web/templates/generated_tmpl.html Added Paths: ----------- ui/web/wizard.py Modified: pygccxml_dev/pygccxml/declarations/decl_printer.py =================================================================== --- pygccxml_dev/pygccxml/declarations/decl_printer.py 2009-01-12 22:33:13 UTC (rev 1565) +++ pygccxml_dev/pygccxml/declarations/decl_printer.py 2009-01-13 15:36:40 UTC (rev 1566) @@ -259,7 +259,8 @@ def visit_variable(self ): self.print_decl_header() curr_level = self.level + 1 - self.writer( ' ' * curr_level * self.INDENT_SIZE + 'type: %s value: %s'%(self.__inst.type.decl_string, self.__inst.value) + os.linesep) + self.writer( ' ' * curr_level * self.INDENT_SIZE + 'type: %s' % self.__inst.type.decl_string + os.linesep) + self.writer( ' ' * curr_level * self.INDENT_SIZE + 'value: %s' % self.__inst.value + os.linesep) if self.__print_details: byte_size = 'size: %d'%(self.__inst.type.byte_size) self.writer( ' ' * curr_level * self.INDENT_SIZE + byte_size.ljust( self.JUSTIFY ) + os.linesep) Modified: pyplusplus_dev/unittests/ctypes_pof_tester.py =================================================================== --- pyplusplus_dev/unittests/ctypes_pof_tester.py 2009-01-12 22:33:13 UTC (rev 1565) +++ pyplusplus_dev/unittests/ctypes_pof_tester.py 2009-01-13 15:36:40 UTC (rev 1566) @@ -141,15 +141,15 @@ udt = self.module_ref.create() self.failUnless( 1977 == self.module_ref.read_user_data(udt) ) self.module_ref.destroy( udt ) - - + + 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)) - #suite.addTest( unittest.makeSuite(enums_tester_t)) + suite.addTest( unittest.makeSuite(enums_tester_t)) suite.addTest( unittest.makeSuite(opaque_tester_t)) return suite Modified: ui/web/code_generator.py =================================================================== --- ui/web/code_generator.py 2009-01-12 22:33:13 UTC (rev 1565) +++ ui/web/code_generator.py 2009-01-13 15:36:40 UTC (rev 1566) @@ -6,34 +6,33 @@ from pyplusplus import module_builder class manager_t: - def __init__( self ): - pass - def show_declarations( self, source_code ): + def show_declarations( self, file_configuration ): try: - reader = parser.source_reader_t( config=config.gccxml ) - decls = reader.read_string( source_code ) + reader = parser.project_reader_t( config=config.gccxml ) + decls = reader.read_files( [file_configuration] ) global_ns = declarations.get_global_namespace( decls ) tmp = [] - declarations.print_declarations( decls, verbose=False, writer=lambda x: tmp.append( x ) ) - return '\n'.join( tmp ) + declarations.print_declarations( decls, verbose=False, writer=lambda x: tmp.append( x.rstrip() ) ) + print os.linesep.join( tmp ) + return os.linesep.join( tmp ), '' except Exception, error: user_msg = [ 'Error occured during code generation process!' ] user_msg.append( 'Error:' ) user_msg.append( str( error ) ) - return '\n'.join( user_msg ) + return '', '\n'.join( user_msg ) def generate_pypp_code( self, source_code ): return "import pyplusplus" - def generate_bpl_code( self, source_code ): + def generate_bpl_code( self, file_configuration ): try: _logging_.loggers.make_inmemory() - - f = parser.create_text_fc( source_code ) - mb = module_builder.module_builder_t( [ f ] - , gccxml_path=config.gccxml.gccxml_path ) + + mb = module_builder.module_builder_t( [ file_configuration ] + , gccxml_path=config.gccxml.gccxml_path + , compiler=config.gccxml.compiler) mb.decls( header_dir=config.temp_dir ).include() mb.build_code_creator( "pyplusplus" ) code = mb.code_creator.create() @@ -41,12 +40,12 @@ code = code.replace( '\r\n', '\n' ) warnings = _logging_.loggers.stream.getvalue() _logging_.loggers.stream.close() - return code, warnings + return code, warnings except Exception, error: user_msg = [ 'Error occured during code generation process!' ] user_msg.append( 'Error:' ) user_msg.append( str( error ) ) - return '\n'.join( user_msg ) + return '', '\n'.join( user_msg ) if __name__ == '__main__': m = manager_t() Modified: ui/web/config.py =================================================================== --- ui/web/config.py 2009-01-12 22:33:13 UTC (rev 1565) +++ ui/web/config.py 2009-01-13 15:36:40 UTC (rev 1566) @@ -10,16 +10,16 @@ if os.path.exists( os.path.join( projects_root_dir, 'pygccxml_dev' ) ): sys.path.append( os.path.join( projects_root_dir, 'pygccxml_dev' ) ) -if os.path.exists( os.path.join( projects_root_dir, 'pyplusplus_dev' ) ): +if os.path.exists( os.path.join( projects_root_dir, 'pyplusplus_dev' ) ): sys.path.append( os.path.join( projects_root_dir, 'pyplusplus_dev' ) ) -#else use installed modules +#else use installed modules from pygccxml import parser from pyplusplus import module_builder gccxml_path = os.path.join( projects_root_dir, 'gccxml_bin', 'v09', sys.platform, 'bin' ) if os.path.exists( gccxml_path ): - gccxml = parser.config_t( gccxml_path=gccxml_path ) + gccxml = parser.config_t( gccxml_path=gccxml_path, compiler='msvc71' ) else: #use gccxml from PATH gccxml = parser.config_t() Modified: ui/web/forms.py =================================================================== --- ui/web/forms.py 2009-01-12 22:33:13 UTC (rev 1565) +++ ui/web/forms.py 2009-01-13 15:36:40 UTC (rev 1566) @@ -1,12 +1,13 @@ import config import web -import textcha +from pygccxml import parser +import wizard class Label(web.form.Input): tmpl = """<label name="%(name)s" %(atts)s>%(value)s</label>%(note)s""" def render(self): value = '' - if self.value is not None: + if self.value is not None: value = web.net.websafe(self.value) return self.tmpl % dict( name=web.net.websafe(self.name) , value=value @@ -43,49 +44,79 @@ if i.post: controls.append( i.post ) return self.tmpl % dict( attrs=self.render_addattrs(), inputs='\n'.join( controls ) ) - - -class generator_t( SimpleForm ): - def __init__( self, action, code_generator=None, method='post' ): + + +class generator_t: + def __init__( self, code_generator, input ): + self.__input = input self.__code_generator = code_generator - self.__show_decls = web.form.Button( 'Show declarations', type="submit" ) - self.__generate_bpl_code = web.form.Button( 'Generate Boost.Python code', type="submit" ) - self.__generate_pypp_code = web.form.Button( 'Generate Py++ code', id="generate_pypp_code", type="submit" ) - self.__source_code = web.form.Textarea( "source_code", rows="20", style="width:100%") - self.__textcha_question = web.form.Hidden( "textcha_question", value=textcha.random_question(), style="width:60%;", id='textcha-question') - self.__textcha_answer = web.form.Textbox( "textcha_answer", value="", style="width:40%;", maxlength="120", id='textcha-answer') - SimpleForm.__init__( self - , Label( 'source_code', value="Source code:" ) - , RawHTML( '<br/>' ) - , self.__source_code - , RawHTML( '<br/>' ) - , self.__textcha_question - , Label( 'textcha_question', value=self.__textcha_question.value ) - , self.__textcha_answer - , RawHTML( '<br/><br/>' ) - , self.__show_decls - , RawHTML( '<a></a>' ) - , self.__generate_bpl_code - , RawHTML( '<a></a>' ) - , self.__generate_pypp_code - , action=action - , method=method - , style="width:80%; float:left;" ) - - def process( self, request_data ): - warnings = '' - generated = '' - if not textcha.is_human( request_data[ self.__textcha_question.name], request_data[ self.__textcha_answer.name] ): - generated = warnings = "Please answer the question!" - return generated, warnings - source_code = request_data[ self.__source_code.name] - if self.__show_decls.name in request_data: - generated = self.__code_generator.show_declarations( source_code ) - elif self.__generate_pypp_code.name in request_data: - generated = self.__code_generator.generate_pypp_code( source_code ) - elif self.__generate_bpl_code.name in request_data: - generated, warnings = self.__code_generator.generate_bpl_code( source_code ) + self.__handlers = { + "VIEW_XML" : self.on_view_xml + , "VIEW_DECLS" : self.on_view_decls + , "GENERATE_BP_CODE" : self.on_generate_bp_code + , "GENERATE_BP_PYPP_CODE" : self.on_generate_bp_pypp_code + , "GENERATE_CTYPES_CODE" : self.on_generate_ctypes_code + , "GENERATE_CTYPES_PYPP_CODE" : self.on_generate_ctypes_pypp_code + } + + def __create_fc( self, prefix ): + fto_key = prefix + '_TAKE_CODE_FROM' + code_key = prefix + '_SOURCE_CODE' + file_key = prefix + '_FILE_NAME' + if self.__input[fto_key] == 'text': + return parser.create_text_fc( self.__input[ code_key ] ) else: - generated = 'error - unknown submit action' - return generated, warnings - + return parser.create_source_fc( self.__input[ file_key ] ) + + def on_view_xml( self ): + fc = self.__create_fc( 'GCCXML' ) + decls_tree, warnings = self.__code_generator.show_declarations( fc ) + return decls_tree, warnings + + def on_view_decls( self ): + fc = self.__create_fc( 'GCCXML' ) + decls_tree, warnings = self.__code_generator.show_declarations( fc ) + return decls_tree, warnings + + def on_generate_bp_code( self ): + fc = self.__create_fc( 'BP' ) + code, warnings = self.__code_generator.generate_bpl_code( fc ) + return code, warnings + + def on_generate_bp_pypp_code( self ): + w = wizard.wizard_t() + code = w.create_bpl_code( config.gccxml, self.__create_fc( 'BP' ) ) + return code, '' + + def on_generate_ctypes_code( self ): + pass + + def on_generate_ctypes_pypp_code( self ): + pass + + def not_found_handler( self ): + raise RuntimeError( 'Error - unknown submit action' ) + + def __select_handler( self ): + for key, handler in self.__handlers.iteritems(): + if key in self.__input: + return handler + else: + return self.not_found_handler + + def process( self ): + handler = self.__select_handler() + return handler() + + + #~ source_code = request_data[ self.__source_code.name] + #~ if self.__show_decls.name in request_data: + #~ generated = self.__code_generator.show_declarations( source_code ) + #~ elif self.__generate_pypp_code.name in request_data: + #~ generated = self.__code_generator.generate_pypp_code( source_code ) + #~ elif self.__generate_bpl_code.name in request_data: + #~ generated, warnings = self.__code_generator.generate_bpl_code( source_code ) + #~ else: + #~ generated = 'error - unknown submit action' + #~ return generated, warnings + Modified: ui/web/main.py =================================================================== --- ui/web/main.py 2009-01-12 22:33:13 UTC (rev 1565) +++ ui/web/main.py 2009-01-13 15:36:40 UTC (rev 1566) @@ -21,9 +21,10 @@ class generated: def POST(self, r_url=None ): - form = forms.generator_t( action='', code_generator=code_generator.manager_t() ) - generated, warnings = form.process( web.input() ) - return render.generated(generated, warnings) + form = forms.generator_t( code_generator.manager_t(), web.input() ) + generated_frender = web.template.frender('templates/generated_tmpl.html') + generated, warnings = form.process() + return generated_frender(generated, warnings) if __name__ == '__main__': app = web.application(urls, globals(), autoreload=True) Modified: ui/web/templates/generated_tmpl.html =================================================================== --- ui/web/templates/generated_tmpl.html 2009-01-12 22:33:13 UTC (rev 1565) +++ ui/web/templates/generated_tmpl.html 2009-01-13 15:36:40 UTC (rev 1566) @@ -1,28 +1,21 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> - <link rel="shortcut icon" href="/static/favicon.ico" /> - <link rel="icon" href="/static/favicon.ico" /> - <title>pygccxml & py++ demo - generated code</title> -</head> -<body> - <h2>pygccxml & py++ demo - generated code</h2> - <span style="width:80%; float:left;"> - <label>Generated code</label> - <br/> - <textarea name="generated_code" rows="20" readonly="true" style="width:100%;">hihi</textarea> - </span> - <a> </a> - <span style="float : left; padding-left : 10px; width : 18%;"> - <br/> - <label style="width:100;">What is ... ?</label> - <dt> - <dd><a href="http://www.language-binding.net">py++</a></dd> - <dd><a href="http://www.language-binding.net">pygccxml</a></dd> - </dt> - <label style="width:100;">Adsense placeholder</label> - <textarea name="adsense" rows="15" style="width:100;">jjjjjjjjjjjjjjjjjjjjjjjjjj</textarea> - </span> -</body> -</html> +$def with ( generated_code, warnings ) +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> + <link rel="shortcut icon" href="/static/favicon.ico" /> + <link rel="icon" href="/static/favicon.ico" /> + <title>pygccxml & py++ demo - generated code</title> +</head> +<body> + <h2>pygccxml & py++ demo - generated code</h2> + <label>Generated code</label> + <br/> + <textarea name="generated_code" rows="20" cols="180" readonly="true">$generated_code</textarea> + <br/> + <label>Warnings and Errors</label> + <br/> + <textarea name="generated_code" rows="20" cols="180" readonly="true">$warnings</textarea> + +</body> +</html> Added: ui/web/wizard.py =================================================================== --- ui/web/wizard.py (rev 0) +++ ui/web/wizard.py 2009-01-13 15:36:40 UTC (rev 1566) @@ -0,0 +1,81 @@ +"""generates Py++ code from the user data""" +import os +from pygccxml import parser + +BP_FILE_CODE_TEMPLATE = \ +""" +import os +from pyplusplus import module_builder + +#Creating an instance of class that will help you to expose your declarations +mb = module_builder.module_builder_t( [r"%(file_name)s"] + , gccxml_path=r"%(gccxml_path)s" + , include_paths=%(include_paths)s + , define_symbols=%(define_symbols)s ) + +#print all parsed declarations and some information about them +mb.print_declarations() + +#Py++ has smart algorithm, which automaticly selects what declarations should be +#exported, but of course you can change that. + +#building code creator. After this step you should not modify declarations. +mb.build_code_creator( module_name='pyplusplus' ) + +#writing code to file. +mb.write_module( './bindings.cpp' ) +""" + +BP_TEXT_CODE_TEMPLATE = \ +r''' +import os +import tempfile +from pygccxml import parser +from pyplusplus import module_builder + +code = \ +""" +%(text)s +""" + + +#Creating an instance of class that will help you to expose your declarations +mb = module_builder.module_builder_t( [parser.create_text_fc(code)] + , gccxml_path=r"%(gccxml_path)s" + , include_paths=%(include_paths)s + , define_symbols=%(define_symbols)s ) + +#print all parsed declarations and some information about them +mb.print_declarations() + +#select all declarations from the code fragment and export them +mb.decls( header_dir=tempfile.tempdir ).include() + +mb.add_declaration_code( code, tail=False ) + +#building code creator. After this step you should not modify declarations. +mb.build_code_creator( module_name='pyplusplus' ) + +#writing code to file. +mb.write_module( './bindings.cpp' ) +''' + +class wizard_t( object ): + """code generator that creates Py++ code""" + def __init__( self ): + object.__init__( self ) + + def create_bpl_code( self, gccxml_cfg, file_configuration ): + tmpl = None + substitute_dict = dict( gccxml_path=gccxml_cfg.gccxml_path + , include_paths=`gccxml_cfg.include_paths` + , define_symbols=`gccxml_cfg.define_symbols` ) + if file_configuration.content_type == file_configuration.CONTENT_TYPE.TEXT: + global BP_TEXT_CODE_TEMPLATE + tmpl = BP_TEXT_CODE_TEMPLATE + substitute_dict['text'] = '\n'.join( [ line.rstrip() for line in file_configuration.data.split('\n') ] ) + else: + global BP_FILE_CODE_TEMPLATE + tmpl = BP_FILE_CODE_TEMPLATE + substitute_dict['file_name'] = file_configuration.data + return tmpl % substitute_dict This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rom...@us...> - 2009-01-12 23:05:12
|
Revision: 1564 http://pygccxml.svn.sourceforge.net/pygccxml/?rev=1564&view=rev Author: roman_yakovenko Date: 2009-01-12 22:28:49 +0000 (Mon, 12 Jan 2009) Log Message: ----------- Added Paths: ----------- gccxml_bin/v09/linux2/share/gccxml-0.9/GCC/2.95/gccxml_bitset Added: gccxml_bin/v09/linux2/share/gccxml-0.9/GCC/2.95/gccxml_bitset =================================================================== --- gccxml_bin/v09/linux2/share/gccxml-0.9/GCC/2.95/gccxml_bitset (rev 0) +++ gccxml_bin/v09/linux2/share/gccxml-0.9/GCC/2.95/gccxml_bitset 2009-01-12 22:28:49 UTC (rev 1564) @@ -0,0 +1,1066 @@ +/* + * Copyright (c) 1998 + * Silicon Graphics Computer Systems, Inc. + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Silicon Graphics makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + */ + +#ifndef __SGI_STL_BITSET +#define __SGI_STL_BITSET + +// This implementation of bitset<> has a second template parameter, +// _WordT, which defaults to unsigned long. *YOU SHOULD NOT USE +// THIS FEATURE*. It is experimental, and it may be removed in +// future releases. + +// A bitset of size N, using words of type _WordT, will have +// N % (sizeof(_WordT) * CHAR_BIT) unused bits. (They are the high- +// order bits in the highest word.) It is a class invariant +// of class bitset<> that those unused bits are always zero. + +// Most of the actual code isn't contained in bitset<> itself, but in the +// base class _Base_bitset. The base class works with whole words, not with +// individual bits. This allows us to specialize _Base_bitset for the +// important special case where the bitset is only a single word. + +// The C++ standard does not define the precise semantics of operator[]. +// In this implementation the const version of operator[] is equivalent +// to test(), except that it does no range checking. The non-const version +// returns a reference to a bit, again without doing any range checking. + + +#include <stddef.h> // for size_t +#include <limits.h> // for CHAR_BIT +#include <string> +#include <stdexcept> // for invalid_argument, out_of_range, overflow_error +#include <iostream.h> // for istream, ostream + +#define __BITS_PER_WORDT(__wt) (CHAR_BIT*sizeof(__wt)) +#define __BITSET_WORDS(__n,__wt) \ + ((__n) < 1 ? 1 : ((__n) + __BITS_PER_WORDT(__wt) - 1)/__BITS_PER_WORDT(__wt)) + +__STL_BEGIN_NAMESPACE + +#if defined(__sgi) && !defined(__GNUC__) && (_MIPS_SIM != _MIPS_SIM_ABI32) +#pragma set woff 1209 +#endif + +// structure to aid in counting bits +template<bool __dummy> +struct _Bit_count { + static unsigned char _S_bit_count[256]; +}; + +// Mapping from 8 bit unsigned integers to the index of the first one +// bit: +template<bool __dummy> +struct _First_one { + static unsigned char _S_first_one[256]; +}; + +// +// Base class: general case. +// + +template<size_t _Nw, class _WordT> +struct _Base_bitset { + _WordT _M_w[_Nw]; // 0 is the least significant word. + + _Base_bitset( void ) { _M_do_reset(); } + + _Base_bitset(unsigned long __val); + + static size_t _S_whichword( size_t __pos ) { + return __pos / __BITS_PER_WORDT(_WordT); + } + static size_t _S_whichbyte( size_t __pos ) { + return (__pos % __BITS_PER_WORDT(_WordT)) / CHAR_BIT; + } + static size_t _S_whichbit( size_t __pos ) { + return __pos % __BITS_PER_WORDT(_WordT); + } + static _WordT _S_maskbit( size_t __pos ) { + return (static_cast<_WordT>(1)) << _S_whichbit(__pos); + } + + _WordT& _M_getword(size_t __pos) { return _M_w[_S_whichword(__pos)]; } + _WordT _M_getword(size_t __pos) const { return _M_w[_S_whichword(__pos)]; } + + _WordT& _M_hiword() { return _M_w[_Nw - 1]; } + _WordT _M_hiword() const { return _M_w[_Nw - 1]; } + + void _M_do_and(const _Base_bitset<_Nw,_WordT>& __x) { + for ( size_t __i = 0; __i < _Nw; __i++ ) { + _M_w[__i] &= __x._M_w[__i]; + } + } + + void _M_do_or(const _Base_bitset<_Nw,_WordT>& __x) { + for ( size_t __i = 0; __i < _Nw; __i++ ) { + _M_w[__i] |= __x._M_w[__i]; + } + } + + void _M_do_xor(const _Base_bitset<_Nw,_WordT>& __x) { + for ( size_t __i = 0; __i < _Nw; __i++ ) { + _M_w[__i] ^= __x._M_w[__i]; + } + } + + void _M_do_left_shift(size_t __shift); + + void _M_do_right_shift(size_t __shift); + + void _M_do_flip() { + for ( size_t __i = 0; __i < _Nw; __i++ ) { + _M_w[__i] = ~_M_w[__i]; + } + } + + void _M_do_set() { + for ( size_t __i = 0; __i < _Nw; __i++ ) { + _M_w[__i] = ~static_cast<_WordT>(0); + } + } + + void _M_do_reset() { + for ( size_t __i = 0; __i < _Nw; __i++ ) { + _M_w[__i] = 0; + } + } + + bool _M_is_equal(const _Base_bitset<_Nw,_WordT>& __x) const { + for (size_t __i = 0; __i < _Nw; ++__i) { + if (_M_w[__i] != __x._M_w[__i]) + return false; + } + return true; + } + + bool _M_is_any() const { + for ( size_t __i = 0; __i < __BITSET_WORDS(_Nw,_WordT); __i++ ) { + if ( _M_w[__i] != static_cast<_WordT>(0) ) + return true; + } + return false; + } + + size_t _M_do_count() const { + size_t __result = 0; + const unsigned char* __byte_ptr = (const unsigned char*)_M_w; + const unsigned char* __end_ptr = (const unsigned char*)(_M_w+_Nw); + + while ( __byte_ptr < __end_ptr ) { + __result += _Bit_count<true>::_S_bit_count[*__byte_ptr]; + __byte_ptr++; + } + return __result; + } + + unsigned long _M_do_to_ulong() const; + + // find first "on" bit + size_t _M_do_find_first(size_t __not_found) const; + + // find the next "on" bit that follows "prev" + size_t _M_do_find_next(size_t __prev, size_t __not_found) const; +}; + +// +// Definitions of non-inline functions from _Base_bitset. +// + +template<size_t _Nw, class _WordT> +_Base_bitset<_Nw, _WordT>::_Base_bitset(unsigned long __val) +{ + _M_do_reset(); + const size_t __n = min(static_cast<size_t>(sizeof(unsigned long)*CHAR_BIT), + static_cast<size_t>(__BITS_PER_WORDT(_WordT)*_Nw)); + for(size_t __i = 0; __i < __n; ++__i, __val >>= 1) + if ( __val & 0x1 ) + _M_getword(__i) |= _S_maskbit(__i); +} + +template<size_t _Nw, class _WordT> +void _Base_bitset<_Nw, _WordT>::_M_do_left_shift(size_t __shift) +{ + if (__shift != 0) { + const size_t __wshift = __shift / __BITS_PER_WORDT(_WordT); + const size_t __offset = __shift % __BITS_PER_WORDT(_WordT); + const size_t __sub_offset = __BITS_PER_WORDT(_WordT) - __offset; + size_t __n = _Nw - 1; + for ( ; __n > __wshift; --__n) + _M_w[__n] = (_M_w[__n - __wshift] << __offset) | + (_M_w[__n - __wshift - 1] >> __sub_offset); + if (__n == __wshift) + _M_w[__n] = _M_w[0] << __offset; + for (size_t __n1 = 0; __n1 < __n; ++__n1) + _M_w[__n1] = static_cast<_WordT>(0); + } +} + +template<size_t _Nw, class _WordT> +void _Base_bitset<_Nw, _WordT>::_M_do_right_shift(size_t __shift) +{ + if (__shift != 0) { + const size_t __wshift = __shift / __BITS_PER_WORDT(_WordT); + const size_t __offset = __shift % __BITS_PER_WORDT(_WordT); + const size_t __sub_offset = __BITS_PER_WORDT(_WordT) - __offset; + const size_t __limit = _Nw - __wshift - 1; + size_t __n = 0; + for ( ; __n < __limit; ++__n) + _M_w[__n] = (_M_w[__n + __wshift] >> __offset) | + (_M_w[__n + __wshift + 1] << __sub_offset); + _M_w[__limit] = _M_w[_Nw-1] >> __offset; + for (size_t __n1 = __limit + 1; __n1 < _Nw; ++__n1) + _M_w[__n1] = static_cast<_WordT>(0); + } +} + +template<size_t _Nw, class _WordT> +unsigned long _Base_bitset<_Nw, _WordT>::_M_do_to_ulong() const +{ + const overflow_error __overflow("bitset"); + + if (sizeof(_WordT) >= sizeof(unsigned long)) { + for (size_t __i = 1; __i < _Nw; ++__i) + if (_M_w[__i]) + __STL_THROW(__overflow); + + const _WordT __mask = static_cast<_WordT>(static_cast<unsigned long>(-1)); + if (_M_w[0] & ~__mask) + __STL_THROW(__overflow); + + return static_cast<unsigned long>(_M_w[0] & __mask); + } + else { // sizeof(_WordT) < sizeof(unsigned long). + const size_t __nwords = + (sizeof(unsigned long) + sizeof(_WordT) - 1) / sizeof(_WordT); + + size_t __min_nwords = __nwords; + if (_Nw > __nwords) { + for (size_t __i = __nwords; __i < _Nw; ++__i) + if (_M_w[__i]) + __STL_THROW(__overflow); + } + else + __min_nwords = _Nw; + + // If unsigned long is 8 bytes and _WordT is 6 bytes, then an unsigned + // long consists of all of one word plus 2 bytes from another word. + const size_t __part = sizeof(unsigned long) % sizeof(_WordT); + + if (__part != 0 && __nwords <= _Nw && + (_M_w[__min_nwords - 1] >> ((sizeof(_WordT) - __part) * CHAR_BIT)) != 0) + __STL_THROW(__overflow); + + unsigned long __result = 0; + for (size_t __i = 0; __i < __min_nwords; ++__i) { + __result |= static_cast<unsigned long>( + _M_w[__i]) << (__i * sizeof(_WordT) * CHAR_BIT); + } + return __result; + } +} // End _M_do_to_ulong + +template<size_t _Nw, class _WordT> +size_t _Base_bitset<_Nw, _WordT>::_M_do_find_first(size_t __not_found) const +{ + for ( size_t __i = 0; __i < _Nw; __i++ ) { + _WordT __thisword = _M_w[__i]; + if ( __thisword != static_cast<_WordT>(0) ) { + // find byte within word + for ( size_t __j = 0; __j < sizeof(_WordT); __j++ ) { + unsigned char __this_byte + = static_cast<unsigned char>(__thisword & (~(unsigned char)0)); + if ( __this_byte ) + return __i*__BITS_PER_WORDT(_WordT) + __j*CHAR_BIT + + _First_one<true>::_S_first_one[__this_byte]; + + __thisword >>= CHAR_BIT; + } + } + } + // not found, so return an indication of failure. + return __not_found; +} + +template<size_t _Nw, class _WordT> +size_t +_Base_bitset<_Nw, _WordT>::_M_do_find_next(size_t __prev, + size_t __not_found) const +{ + // make bound inclusive + ++__prev; + + // check out of bounds + if ( __prev >= _Nw * __BITS_PER_WORDT(_WordT) ) + return __not_found; + + // search first word + size_t __i = _S_whichword(__prev); + _WordT __thisword = _M_w[__i]; + + // mask off bits below bound + __thisword &= (~static_cast<_WordT>(0)) << _S_whichbit(__prev); + + if ( __thisword != static_cast<_WordT>(0) ) { + // find byte within word + // get first byte into place + __thisword >>= _S_whichbyte(__prev) * CHAR_BIT; + for ( size_t __j = _S_whichbyte(__prev); __j < sizeof(_WordT); __j++ ) { + unsigned char __this_byte + = static_cast<unsigned char>(__thisword & (~(unsigned char)0)); + if ( __this_byte ) + return __i*__BITS_PER_WORDT(_WordT) + __j*CHAR_BIT + + _First_one<true>::_S_first_one[__this_byte]; + + __thisword >>= CHAR_BIT; + } + } + + // check subsequent words + __i++; + for ( ; __i < _Nw; __i++ ) { + _WordT __thisword = _M_w[__i]; + if ( __thisword != static_cast<_WordT>(0) ) { + // find byte within word + for ( size_t __j = 0; __j < sizeof(_WordT); __j++ ) { + unsigned char __this_byte + = static_cast<unsigned char>(__thisword & (~(unsigned char)0)); + if ( __this_byte ) + return __i*__BITS_PER_WORDT(_WordT) + __j*CHAR_BIT + + _First_one<true>::_S_first_one[__this_byte]; + + __thisword >>= CHAR_BIT; + } + } + } + + // not found, so return an indication of failure. + return __not_found; +} // end _M_do_find_next + + +// ------------------------------------------------------------ + +// +// Base class: specialization for a single word. +// + +template<class _WordT> +struct _Base_bitset<1, _WordT> { + _WordT _M_w; + + _Base_bitset( void ) { _M_do_reset(); } + + _Base_bitset(unsigned long __val); + + static size_t _S_whichword( size_t __pos ) { + return __pos / __BITS_PER_WORDT(_WordT); + } + static size_t _S_whichbyte( size_t __pos ) { + return (__pos % __BITS_PER_WORDT(_WordT)) / CHAR_BIT; + } + static size_t _S_whichbit( size_t __pos ) { + return __pos % __BITS_PER_WORDT(_WordT); + } + static _WordT _S_maskbit( size_t __pos ) { + return (static_cast<_WordT>(1)) << _S_whichbit(__pos); + } + + _WordT& _M_getword(size_t) { return _M_w; } + _WordT _M_getword(size_t) const { return _M_w; } + + _WordT& _M_hiword() { return _M_w; } + _WordT _M_hiword() const { return _M_w; } + + void _M_do_and(const _Base_bitset<1,_WordT>& __x) { _M_w &= __x._M_w; } + void _M_do_or(const _Base_bitset<1,_WordT>& __x) { _M_w |= __x._M_w; } + void _M_do_xor(const _Base_bitset<1,_WordT>& __x) { _M_w ^= __x._M_w; } + void _M_do_left_shift(size_t __shift) { _M_w <<= __shift; } + void _M_do_right_shift(size_t __shift) { _M_w >>= __shift; } + void _M_do_flip() { _M_w = ~_M_w; } + void _M_do_set() { _M_w = ~static_cast<_WordT>(0); } + void _M_do_reset() { _M_w = 0; } + + bool _M_is_equal(const _Base_bitset<1,_WordT>& __x) const { + return _M_w == __x._M_w; + } + bool _M_is_any() const { + return _M_w != 0; + } + + size_t _M_do_count() const { + size_t __result = 0; + const unsigned char* __byte_ptr = (const unsigned char*)&_M_w; + const unsigned char* __end_ptr = ((const unsigned char*)&_M_w)+sizeof(_M_w); + while ( __byte_ptr < __end_ptr ) { + __result += _Bit_count<true>::_S_bit_count[*__byte_ptr]; + __byte_ptr++; + } + return __result; + } + + unsigned long _M_do_to_ulong() const { + if (sizeof(_WordT) <= sizeof(unsigned long)) + return static_cast<unsigned long>(_M_w); + else { + const _WordT __mask = static_cast<_WordT>(static_cast<unsigned long>(-1)); + if (_M_w & ~__mask) + __STL_THROW(overflow_error("bitset")); + return static_cast<unsigned long>(_M_w); + } + } + + size_t _M_do_find_first(size_t __not_found) const; + + // find the next "on" bit that follows "prev" + size_t _M_do_find_next(size_t __prev, size_t __not_found) const; + +}; + +// +// Definitions of non-inline functions from the single-word version of +// _Base_bitset. +// + +template <class _WordT> +_Base_bitset<1, _WordT>::_Base_bitset(unsigned long __val) +{ + _M_do_reset(); + const size_t __n = min(static_cast<size_t>(sizeof(unsigned long)*CHAR_BIT), + static_cast<size_t>(__BITS_PER_WORDT(_WordT)*1)); + for(size_t __i = 0; __i < __n; ++__i, __val >>= 1) + if ( __val & 0x1 ) + _M_w |= _S_maskbit(__i); +} + +template <class _WordT> +size_t _Base_bitset<1, _WordT>::_M_do_find_first(size_t __not_found) const +{ + _WordT __thisword = _M_w; + + if ( __thisword != static_cast<_WordT>(0) ) { + // find byte within word + for ( size_t __j = 0; __j < sizeof(_WordT); __j++ ) { + unsigned char __this_byte + = static_cast<unsigned char>(__thisword & (~(unsigned char)0)); + if ( __this_byte ) + return __j*CHAR_BIT + _First_one<true>::_S_first_one[__this_byte]; + + __thisword >>= CHAR_BIT; + } + } + // not found, so return a value that indicates failure. + return __not_found; +} + +template <class _WordT> +size_t +_Base_bitset<1, _WordT>::_M_do_find_next(size_t __prev, + size_t __not_found ) const +{ + // make bound inclusive + ++__prev; + + // check out of bounds + if ( __prev >= __BITS_PER_WORDT(_WordT) ) + return __not_found; + + // search first (and only) word + _WordT __thisword = _M_w; + + // mask off bits below bound + __thisword &= (~static_cast<_WordT>(0)) << _S_whichbit(__prev); + + if ( __thisword != static_cast<_WordT>(0) ) { + // find byte within word + // get first byte into place + __thisword >>= _S_whichbyte(__prev) * CHAR_BIT; + for ( size_t __j = _S_whichbyte(__prev); __j < sizeof(_WordT); __j++ ) { + unsigned char __this_byte + = static_cast<unsigned char>(__thisword & (~(unsigned char)0)); + if ( __this_byte ) + return __j*CHAR_BIT + _First_one<true>::_S_first_one[__this_byte]; + + __thisword >>= CHAR_BIT; + } + } + + // not found, so return a value that indicates failure. + return __not_found; +} // end _M_do_find_next + +// +// One last specialization: _M_do_to_ulong() and the constructor from +// unsigned long are very simple if the bitset consists of a single +// word of type unsigned long. +// + +template<> +inline unsigned long +_Base_bitset<1, unsigned long>::_M_do_to_ulong() const { return _M_w; } + +template<> +inline _Base_bitset<1, unsigned long>::_Base_bitset(unsigned long __val) { + _M_w = __val; +} + + +// ------------------------------------------------------------ +// Helper class to zero out the unused high-order bits in the highest word. + +template <class _WordT, size_t _Extrabits> struct _Sanitize { + static void _M_do_sanitize(_WordT& __val) + { __val &= ~((~static_cast<_WordT>(0)) << _Extrabits); } +}; + +template <class _WordT> struct _Sanitize<_WordT, 0> { + static void _M_do_sanitize(_WordT) {} +}; + +// ------------------------------------------------------------ +// Class bitset. +// _Nb may be any nonzero number of type size_t. +// Type _WordT may be any unsigned integral type. + +template<size_t _Nb, class _WordT = unsigned long> +class bitset : private _Base_bitset<__BITSET_WORDS(_Nb,_WordT), _WordT> +{ +private: + typedef _Base_bitset<__BITSET_WORDS(_Nb,_WordT), _WordT> _Base; + + // Import base's protected interface. Necessary because of new template + // name resolution rules. + using _Base::_S_whichword; + using _Base::_S_whichbyte; + using _Base::_S_whichbit; + using _Base::_S_maskbit; + using _Base::_M_getword; + using _Base::_M_hiword; + using _Base::_M_do_and; + using _Base::_M_do_or; + using _Base::_M_do_xor; + using _Base::_M_do_left_shift; + using _Base::_M_do_right_shift; + using _Base::_M_do_flip; + using _Base::_M_do_set; + using _Base::_M_do_reset; + using _Base::_M_is_equal; + using _Base::_M_is_any; + using _Base::_M_do_count; + using _Base::_M_do_to_ulong; + using _Base::_M_do_find_first; + using _Base::_M_do_find_next; + +private: + void _M_do_sanitize() { + _Sanitize<_WordT,_Nb%__BITS_PER_WORDT(_WordT) > + ::_M_do_sanitize(_M_hiword()); + } + +public: + + // bit reference: + class reference; + friend class reference; + class reference { + friend class bitset; + + _WordT *_M_wp; + size_t _M_bpos; + + // left undefined + reference(); + + reference( bitset& __b, size_t __pos ) { + _M_wp = &__b._M_getword(__pos); + _M_bpos = _S_whichbit(__pos); + } + + public: + ~reference() {} + + // for b[i] = __x; + reference& operator=(bool __x) { + if ( __x ) + *_M_wp |= _S_maskbit(_M_bpos); + else + *_M_wp &= ~_S_maskbit(_M_bpos); + + return *this; + } + + // for b[i] = b[__j]; + reference& operator=(const reference& __j) { + if ( (*(__j._M_wp) & _S_maskbit(__j._M_bpos)) ) + *_M_wp |= _S_maskbit(_M_bpos); + else + *_M_wp &= ~_S_maskbit(_M_bpos); + + return *this; + } + + // flips the bit + bool operator~() const { return (*(_M_wp) & _S_maskbit(_M_bpos)) == 0; } + + // for __x = b[i]; + operator bool() const { return (*(_M_wp) & _S_maskbit(_M_bpos)) != 0; } + + // for b[i].flip(); + reference& flip() { + *_M_wp ^= _S_maskbit(_M_bpos); + return *this; + } + }; + + // 23.3.5.1 constructors: + bitset() {} + bitset(unsigned long __val) : + _Base_bitset<__BITSET_WORDS(_Nb,_WordT), _WordT>(__val) {} + + template<class _CharT, class _Traits, class _Alloc> + explicit bitset(const basic_string<_CharT,_Traits,_Alloc>& __s, + size_t __pos = 0, + size_t __n = size_t(basic_string<_CharT,_Traits,_Alloc>::npos)) + : _Base() + { + if (__pos > __s.size()) + __STL_THROW(out_of_range("bitset")); + _M_copy_from_string(__s, __pos, __n); + } + + // 23.3.5.2 bitset operations: + bitset<_Nb,_WordT>& operator&=(const bitset<_Nb,_WordT>& __rhs) { + _M_do_and(__rhs); + return *this; + } + + bitset<_Nb,_WordT>& operator|=(const bitset<_Nb,_WordT>& __rhs) { + _M_do_or(__rhs); + return *this; + } + + bitset<_Nb,_WordT>& operator^=(const bitset<_Nb,_WordT>& __rhs) { + _M_do_xor(__rhs); + return *this; + } + + bitset<_Nb,_WordT>& operator<<=(size_t __pos) { + _M_do_left_shift(__pos); + _M_do_sanitize(); + return *this; + } + + bitset<_Nb,_WordT>& operator>>=(size_t __pos) { + _M_do_right_shift(__pos); + _M_do_sanitize(); + return *this; + } + + // + // Extension: + // Versions of single-bit set, reset, flip, test with no range checking. + // + + bitset<_Nb,_WordT>& _Unchecked_set(size_t __pos) { + _M_getword(__pos) |= _S_maskbit(__pos); + return *this; + } + + bitset<_Nb,_WordT>& _Unchecked_set(size_t __pos, int __val) { + if (__val) + _M_getword(__pos) |= _S_maskbit(__pos); + else + _M_getword(__pos) &= ~_S_maskbit(__pos); + + return *this; + } + + bitset<_Nb,_WordT>& _Unchecked_reset(size_t __pos) { + _M_getword(__pos) &= ~_S_maskbit(__pos); + return *this; + } + + bitset<_Nb,_WordT>& _Unchecked_flip(size_t __pos) { + _M_getword(__pos) ^= _S_maskbit(__pos); + return *this; + } + + bool _Unchecked_test(size_t __pos) const { + return (_M_getword(__pos) & _S_maskbit(__pos)) != static_cast<_WordT>(0); + } + + // Set, reset, and flip. + + bitset<_Nb,_WordT>& set() { + _M_do_set(); + _M_do_sanitize(); + return *this; + } + + bitset<_Nb,_WordT>& set(size_t __pos) { + if (__pos >= _Nb) + __STL_THROW(out_of_range("bitset")); + + return _Unchecked_set(__pos); + } + + bitset<_Nb,_WordT>& set(size_t __pos, int __val) { + if (__pos >= _Nb) + __STL_THROW(out_of_range("bitset")); + + return _Unchecked_set(__pos, __val); + } + + bitset<_Nb,_WordT>& reset() { + _M_do_reset(); + return *this; + } + + bitset<_Nb,_WordT>& reset(size_t __pos) { + if (__pos >= _Nb) + __STL_THROW(out_of_range("bitset")); + + return _Unchecked_reset(__pos); + } + + bitset<_Nb,_WordT>& flip() { + _M_do_flip(); + _M_do_sanitize(); + return *this; + } + + bitset<_Nb,_WordT>& flip(size_t __pos) { + if (__pos >= _Nb) + __STL_THROW(out_of_range("bitset")); + + return _Unchecked_flip(__pos); + } + + bitset<_Nb,_WordT> operator~() const { + return bitset<_Nb,_WordT>(*this).flip(); + } + + // element access: + //for b[i]; + reference operator[](size_t __pos) { return reference(*this,__pos); } + bool operator[](size_t __pos) const { return _Unchecked_test(__pos); } + + unsigned long to_ulong() const { return _M_do_to_ulong(); } + +#ifdef __STL_EXPLICIT_FUNCTION_TMPL_ARGS + template <class _CharT, class _Traits, class _Alloc> + basic_string<_CharT, _Traits, _Alloc> to_string() const { + basic_string<_CharT, _Traits, _Alloc> __result; + _M_copy_to_string(__result); + return __result; + } +#endif /* __STL_EXPLICIT_FUNCTION_TMPL_ARGS */ + + // Helper functions for string operations. + template<class _CharT, class _Traits, class _Alloc> + void _M_copy_from_string(const basic_string<_CharT,_Traits,_Alloc>& __s, + size_t, + size_t); + + // Helper functions for string operations. + template<class _CharT, class _Traits, class _Alloc> + void _M_copy_to_string(basic_string<_CharT,_Traits,_Alloc>&) const; + + size_t count() const { return _M_do_count(); } + + size_t size() const { return _Nb; } + + bool operator==(const bitset<_Nb,_WordT>& __rhs) const { + return _M_is_equal(__rhs); + } + bool operator!=(const bitset<_Nb,_WordT>& __rhs) const { + return !_M_is_equal(__rhs); + } + + bool test(size_t __pos) const { + if (__pos > _Nb) + __STL_THROW(out_of_range("bitset")); + + return _Unchecked_test(__pos); + } + + bool any() const { return _M_is_any(); } + bool none() const { return !_M_is_any(); } + + bitset<_Nb,_WordT> operator<<(size_t __pos) const + { return bitset<_Nb,_WordT>(*this) <<= __pos; } + bitset<_Nb,_WordT> operator>>(size_t __pos) const + { return bitset<_Nb,_WordT>(*this) >>= __pos; } + + // + // EXTENSIONS: bit-find operations. These operations are + // experimental, and are subject to change or removal in future + // versions. + // + + // find the index of the first "on" bit + size_t _Find_first() const + { return _M_do_find_first(_Nb); } + + // find the index of the next "on" bit after prev + size_t _Find_next( size_t __prev ) const + { return _M_do_find_next(__prev, _Nb); } + +}; + +// +// Definitions of non-inline member functions. +// + +template <size_t _Nb, class _WordT> +template<class _CharT, class _Traits, class _Alloc> +void bitset<_Nb, _WordT> + ::_M_copy_from_string(const basic_string<_CharT,_Traits,_Alloc>& __s, + size_t __pos, + size_t __n) +{ + reset(); + const size_t __nbits = min(_Nb, min(__n, __s.size() - __pos)); + for (size_t __i = 0; __i < __nbits; ++__i) { + switch(__s[__pos + __nbits - __i - 1]) { + case '0': + break; + case '1': + set(__i); + break; + default: + __STL_THROW(invalid_argument("bitset")); + } + } +} + +template <size_t _Nb, class _WordT> +template <class _CharT, class _Traits, class _Alloc> +void bitset<_Nb, _WordT> + ::_M_copy_to_string(basic_string<_CharT, _Traits, _Alloc>& __s) const +{ + __s.assign(_Nb, '0'); + + for (size_t __i = 0; __i < _Nb; ++__i) + if (_Unchecked_test(__i)) + __s[_Nb - 1 - __i] = '1'; +} + +// ------------------------------------------------------------ + +// +// 23.3.5.3 bitset operations: +// + +template <size_t _Nb, class _WordT> +inline bitset<_Nb,_WordT> operator&(const bitset<_Nb,_WordT>& __x, + const bitset<_Nb,_WordT>& __y) { + bitset<_Nb,_WordT> __result(__x); + __result &= __y; + return __result; +} + + +template <size_t _Nb, class _WordT> +inline bitset<_Nb,_WordT> operator|(const bitset<_Nb,_WordT>& __x, + const bitset<_Nb,_WordT>& __y) { + bitset<_Nb,_WordT> __result(__x); + __result |= __y; + return __result; +} + +template <size_t _Nb, class _WordT> +inline bitset<_Nb,_WordT> operator^(const bitset<_Nb,_WordT>& __x, + const bitset<_Nb,_WordT>& __y) { + bitset<_Nb,_WordT> __result(__x); + __result ^= __y; + return __result; +} + +// NOTE: these must be rewritten once we have templatized iostreams. + +template <size_t _Nb, class _WordT> +istream& +operator>>(istream& __is, bitset<_Nb,_WordT>& __x) { + string __tmp; + __tmp.reserve(_Nb); + + // In new templatized iostreams, use istream::sentry + if (__is.flags() & ios::skipws) { + char __c; + do + __is.get(__c); + while (__is && isspace(__c)); + if (__is) + __is.putback(__c); + } + + for (size_t __i = 0; __i < _Nb; ++__i) { + char __c; + __is.get(__c); + + if (!__is) + break; + else if (__c != '0' && __c != '1') { + __is.putback(__c); + break; + } + else + __tmp.push_back(__c); + } + + if (__tmp.empty()) + __is.clear(__is.rdstate() | ios::failbit); + else + __x._M_copy_from_string(__tmp, static_cast<size_t>(0), _Nb); + + return __is; +} + +template <size_t _Nb, class _WordT> +ostream& operator<<(ostream& __os, const bitset<_Nb,_WordT>& __x) { + string __tmp; + __x._M_copy_to_string(__tmp); + return __os << __tmp; +} + +// ------------------------------------------------------------ +// Lookup tables for find and count operations. + +template<bool __dummy> +unsigned char _Bit_count<__dummy>::_S_bit_count[] = { + 0, /* 0 */ 1, /* 1 */ 1, /* 2 */ 2, /* 3 */ 1, /* 4 */ + 2, /* 5 */ 2, /* 6 */ 3, /* 7 */ 1, /* 8 */ 2, /* 9 */ + 2, /* 10 */ 3, /* 11 */ 2, /* 12 */ 3, /* 13 */ 3, /* 14 */ + 4, /* 15 */ 1, /* 16 */ 2, /* 17 */ 2, /* 18 */ 3, /* 19 */ + 2, /* 20 */ 3, /* 21 */ 3, /* 22 */ 4, /* 23 */ 2, /* 24 */ + 3, /* 25 */ 3, /* 26 */ 4, /* 27 */ 3, /* 28 */ 4, /* 29 */ + 4, /* 30 */ 5, /* 31 */ 1, /* 32 */ 2, /* 33 */ 2, /* 34 */ + 3, /* 35 */ 2, /* 36 */ 3, /* 37 */ 3, /* 38 */ 4, /* 39 */ + 2, /* 40 */ 3, /* 41 */ 3, /* 42 */ 4, /* 43 */ 3, /* 44 */ + 4, /* 45 */ 4, /* 46 */ 5, /* 47 */ 2, /* 48 */ 3, /* 49 */ + 3, /* 50 */ 4, /* 51 */ 3, /* 52 */ 4, /* 53 */ 4, /* 54 */ + 5, /* 55 */ 3, /* 56 */ 4, /* 57 */ 4, /* 58 */ 5, /* 59 */ + 4, /* 60 */ 5, /* 61 */ 5, /* 62 */ 6, /* 63 */ 1, /* 64 */ + 2, /* 65 */ 2, /* 66 */ 3, /* 67 */ 2, /* 68 */ 3, /* 69 */ + 3, /* 70 */ 4, /* 71 */ 2, /* 72 */ 3, /* 73 */ 3, /* 74 */ + 4, /* 75 */ 3, /* 76 */ 4, /* 77 */ 4, /* 78 */ 5, /* 79 */ + 2, /* 80 */ 3, /* 81 */ 3, /* 82 */ 4, /* 83 */ 3, /* 84 */ + 4, /* 85 */ 4, /* 86 */ 5, /* 87 */ 3, /* 88 */ 4, /* 89 */ + 4, /* 90 */ 5, /* 91 */ 4, /* 92 */ 5, /* 93 */ 5, /* 94 */ + 6, /* 95 */ 2, /* 96 */ 3, /* 97 */ 3, /* 98 */ 4, /* 99 */ + 3, /* 100 */ 4, /* 101 */ 4, /* 102 */ 5, /* 103 */ 3, /* 104 */ + 4, /* 105 */ 4, /* 106 */ 5, /* 107 */ 4, /* 108 */ 5, /* 109 */ + 5, /* 110 */ 6, /* 111 */ 3, /* 112 */ 4, /* 113 */ 4, /* 114 */ + 5, /* 115 */ 4, /* 116 */ 5, /* 117 */ 5, /* 118 */ 6, /* 119 */ + 4, /* 120 */ 5, /* 121 */ 5, /* 122 */ 6, /* 123 */ 5, /* 124 */ + 6, /* 125 */ 6, /* 126 */ 7, /* 127 */ 1, /* 128 */ 2, /* 129 */ + 2, /* 130 */ 3, /* 131 */ 2, /* 132 */ 3, /* 133 */ 3, /* 134 */ + 4, /* 135 */ 2, /* 136 */ 3, /* 137 */ 3, /* 138 */ 4, /* 139 */ + 3, /* 140 */ 4, /* 141 */ 4, /* 142 */ 5, /* 143 */ 2, /* 144 */ + 3, /* 145 */ 3, /* 146 */ 4, /* 147 */ 3, /* 148 */ 4, /* 149 */ + 4, /* 150 */ 5, /* 151 */ 3, /* 152 */ 4, /* 153 */ 4, /* 154 */ + 5, /* 155 */ 4, /* 156 */ 5, /* 157 */ 5, /* 158 */ 6, /* 159 */ + 2, /* 160 */ 3, /* 161 */ 3, /* 162 */ 4, /* 163 */ 3, /* 164 */ + 4, /* 165 */ 4, /* 166 */ 5, /* 167 */ 3, /* 168 */ 4, /* 169 */ + 4, /* 170 */ 5, /* 171 */ 4, /* 172 */ 5, /* 173 */ 5, /* 174 */ + 6, /* 175 */ 3, /* 176 */ 4, /* 177 */ 4, /* 178 */ 5, /* 179 */ + 4, /* 180 */ 5, /* 181 */ 5, /* 182 */ 6, /* 183 */ 4, /* 184 */ + 5, /* 185 */ 5, /* 186 */ 6, /* 187 */ 5, /* 188 */ 6, /* 189 */ + 6, /* 190 */ 7, /* 191 */ 2, /* 192 */ 3, /* 193 */ 3, /* 194 */ + 4, /* 195 */ 3, /* 196 */ 4, /* 197 */ 4, /* 198 */ 5, /* 199 */ + 3, /* 200 */ 4, /* 201 */ 4, /* 202 */ 5, /* 203 */ 4, /* 204 */ + 5, /* 205 */ 5, /* 206 */ 6, /* 207 */ 3, /* 208 */ 4, /* 209 */ + 4, /* 210 */ 5, /* 211 */ 4, /* 212 */ 5, /* 213 */ 5, /* 214 */ + 6, /* 215 */ 4, /* 216 */ 5, /* 217 */ 5, /* 218 */ 6, /* 219 */ + 5, /* 220 */ 6, /* 221 */ 6, /* 222 */ 7, /* 223 */ 3, /* 224 */ + 4, /* 225 */ 4, /* 226 */ 5, /* 227 */ 4, /* 228 */ 5, /* 229 */ + 5, /* 230 */ 6, /* 231 */ 4, /* 232 */ 5, /* 233 */ 5, /* 234 */ + 6, /* 235 */ 5, /* 236 */ 6, /* 237 */ 6, /* 238 */ 7, /* 239 */ + 4, /* 240 */ 5, /* 241 */ 5, /* 242 */ 6, /* 243 */ 5, /* 244 */ + 6, /* 245 */ 6, /* 246 */ 7, /* 247 */ 5, /* 248 */ 6, /* 249 */ + 6, /* 250 */ 7, /* 251 */ 6, /* 252 */ 7, /* 253 */ 7, /* 254 */ + 8 /* 255 */ +}; // end _Bit_count + +template<bool __dummy> +unsigned char _First_one<__dummy>::_S_first_one[] = { + 0, /* 0 */ 0, /* 1 */ 1, /* 2 */ 0, /* 3 */ 2, /* 4 */ + 0, /* 5 */ 1, /* 6 */ 0, /* 7 */ 3, /* 8 */ 0, /* 9 */ + 1, /* 10 */ 0, /* 11 */ 2, /* 12 */ 0, /* 13 */ 1, /* 14 */ + 0, /* 15 */ 4, /* 16 */ 0, /* 17 */ 1, /* 18 */ 0, /* 19 */ + 2, /* 20 */ 0, /* 21 */ 1, /* 22 */ 0, /* 23 */ 3, /* 24 */ + 0, /* 25 */ 1, /* 26 */ 0, /* 27 */ 2, /* 28 */ 0, /* 29 */ + 1, /* 30 */ 0, /* 31 */ 5, /* 32 */ 0, /* 33 */ 1, /* 34 */ + 0, /* 35 */ 2, /* 36 */ 0, /* 37 */ 1, /* 38 */ 0, /* 39 */ + 3, /* 40 */ 0, /* 41 */ 1, /* 42 */ 0, /* 43 */ 2, /* 44 */ + 0, /* 45 */ 1, /* 46 */ 0, /* 47 */ 4, /* 48 */ 0, /* 49 */ + 1, /* 50 */ 0, /* 51 */ 2, /* 52 */ 0, /* 53 */ 1, /* 54 */ + 0, /* 55 */ 3, /* 56 */ 0, /* 57 */ 1, /* 58 */ 0, /* 59 */ + 2, /* 60 */ 0, /* 61 */ 1, /* 62 */ 0, /* 63 */ 6, /* 64 */ + 0, /* 65 */ 1, /* 66 */ 0, /* 67 */ 2, /* 68 */ 0, /* 69 */ + 1, /* 70 */ 0, /* 71 */ 3, /* 72 */ 0, /* 73 */ 1, /* 74 */ + 0, /* 75 */ 2, /* 76 */ 0, /* 77 */ 1, /* 78 */ 0, /* 79 */ + 4, /* 80 */ 0, /* 81 */ 1, /* 82 */ 0, /* 83 */ 2, /* 84 */ + 0, /* 85 */ 1, /* 86 */ 0, /* 87 */ 3, /* 88 */ 0, /* 89 */ + 1, /* 90 */ 0, /* 91 */ 2, /* 92 */ 0, /* 93 */ 1, /* 94 */ + 0, /* 95 */ 5, /* 96 */ 0, /* 97 */ 1, /* 98 */ 0, /* 99 */ + 2, /* 100 */ 0, /* 101 */ 1, /* 102 */ 0, /* 103 */ 3, /* 104 */ + 0, /* 105 */ 1, /* 106 */ 0, /* 107 */ 2, /* 108 */ 0, /* 109 */ + 1, /* 110 */ 0, /* 111 */ 4, /* 112 */ 0, /* 113 */ 1, /* 114 */ + 0, /* 115 */ 2, /* 116 */ 0, /* 117 */ 1, /* 118 */ 0, /* 119 */ + 3, /* 120 */ 0, /* 121 */ 1, /* 122 */ 0, /* 123 */ 2, /* 124 */ + 0, /* 125 */ 1, /* 126 */ 0, /* 127 */ 7, /* 128 */ 0, /* 129 */ + 1, /* 130 */ 0, /* 131 */ 2, /* 132 */ 0, /* 133 */ 1, /* 134 */ + 0, /* 135 */ 3, /* 136 */ 0, /* 137 */ 1, /* 138 */ 0, /* 139 */ + 2, /* 140 */ 0, /* 141 */ 1, /* 142 */ 0, /* 143 */ 4, /* 144 */ + 0, /* 145 */ 1, /* 146 */ 0, /* 147 */ 2, /* 148 */ 0, /* 149 */ + 1, /* 150 */ 0, /* 151 */ 3, /* 152 */ 0, /* 153 */ 1, /* 154 */ + 0, /* 155 */ 2, /* 156 */ 0, /* 157 */ 1, /* 158 */ 0, /* 159 */ + 5, /* 160 */ 0, /* 161 */ 1, /* 162 */ 0, /* 163 */ 2, /* 164 */ + 0, /* 165 */ 1, /* 166 */ 0, /* 167 */ 3, /* 168 */ 0, /* 169 */ + 1, /* 170 */ 0, /* 171 */ 2, /* 172 */ 0, /* 173 */ 1, /* 174 */ + 0, /* 175 */ 4, /* 176 */ 0, /* 177 */ 1, /* 178 */ 0, /* 179 */ + 2, /* 180 */ 0, /* 181 */ 1, /* 182 */ 0, /* 183 */ 3, /* 184 */ + 0, /* 185 */ 1, /* 186 */ 0, /* 187 */ 2, /* 188 */ 0, /* 189 */ + 1, /* 190 */ 0, /* 191 */ 6, /* 192 */ 0, /* 193 */ 1, /* 194 */ + 0, /* 195 */ 2, /* 196 */ 0, /* 197 */ 1, /* 198 */ 0, /* 199 */ + 3, /* 200 */ 0, /* 201 */ 1, /* 202 */ 0, /* 203 */ 2, /* 204 */ + 0, /* 205 */ 1, /* 206 */ 0, /* 207 */ 4, /* 208 */ 0, /* 209 */ + 1, /* 210 */ 0, /* 211 */ 2, /* 212 */ 0, /* 213 */ 1, /* 214 */ + 0, /* 215 */ 3, /* 216 */ 0, /* 217 */ 1, /* 218 */ 0, /* 219 */ + 2, /* 220 */ 0, /* 221 */ 1, /* 222 */ 0, /* 223 */ 5, /* 224 */ + 0, /* 225 */ 1, /* 226 */ 0, /* 227 */ 2, /* 228 */ 0, /* 229 */ + 1, /* 230 */ 0, /* 231 */ 3, /* 232 */ 0, /* 233 */ 1, /* 234 */ + 0, /* 235 */ 2, /* 236 */ 0, /* 237 */ 1, /* 238 */ 0, /* 239 */ + 4, /* 240 */ 0, /* 241 */ 1, /* 242 */ 0, /* 243 */ 2, /* 244 */ + 0, /* 245 */ 1, /* 246 */ 0, /* 247 */ 3, /* 248 */ 0, /* 249 */ + 1, /* 250 */ 0, /* 251 */ 2, /* 252 */ 0, /* 253 */ 1, /* 254 */ + 0, /* 255 */ +}; // end _First_one + +#if defined(__sgi) && !defined(__GNUC__) && (_MIPS_SIM != _MIPS_SIM_ABI32) +#pragma reset woff 1209 +#endif + +__STL_END_NAMESPACE + + +#undef __BITS_PER_WORDT +#undef __BITSET_WORDS + +#endif /* __SGI_STL_BITSET */ + + +// Local Variables: +// mode:C++ +// End: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rom...@us...> - 2009-01-12 23:05:07
|
Revision: 1565 http://pygccxml.svn.sourceforge.net/pygccxml/?rev=1565&view=rev Author: roman_yakovenko Date: 2009-01-12 22:33:13 +0000 (Mon, 12 Jan 2009) Log Message: ----------- adding missing files Added Paths: ----------- gccxml_bin/v09/linux2/share/gccxml-0.9/GCC/2.95/std/bastring.cc gccxml_bin/v09/linux2/share/gccxml-0.9/GCC/2.95/std/dcomplex.h gccxml_bin/v09/linux2/share/gccxml-0.9/GCC/2.95/std/fcomplex.h gccxml_bin/v09/linux2/share/gccxml-0.9/GCC/2.95/std/ldcomplex.h gccxml_bin/v09/linux2/share/gccxml-0.9/GCC/2.95/std/straits.h gccxml_bin/v09/linux2/share/gccxml-0.9/GCC/2.95/stl_alloc.h gccxml_bin/v09/linux2/share/gccxml-0.9/GCC/2.95/stl_bvector.h gccxml_bin/v09/linux2/share/gccxml-0.9/GCC/2.95/stl_deque.h gccxml_bin/v09/linux2/share/gccxml-0.9/GCC/2.95/stl_list.h gccxml_bin/v09/linux2/share/gccxml-0.9/GCC/2.95/stl_tree.h gccxml_bin/v09/linux2/share/gccxml-0.9/GCC/2.95/stl_vector.h gccxml_bin/v09/linux2/share/gccxml-0.9/GCC/3.2/bits/sstream.tcc gccxml_bin/v09/linux2/share/gccxml-0.9/GCC/3.2/bits/valarray_meta.h gccxml_bin/v09/linux2/share/gccxml-0.9/GCC/3.2/sstream gccxml_bin/v09/linux2/share/gccxml-0.9/GCC/3.3/bits/fstream.tcc gccxml_bin/v09/linux2/share/gccxml-0.9/GCC/3.3/bits/list.tcc gccxml_bin/v09/linux2/share/gccxml-0.9/GCC/3.3/bits/sstream.tcc gccxml_bin/v09/linux2/share/gccxml-0.9/GCC/3.3/bits/stl_deque.h gccxml_bin/v09/linux2/share/gccxml-0.9/GCC/3.3/bits/stl_list.h gccxml_bin/v09/linux2/share/gccxml-0.9/GCC/3.3/bits/stl_tree.h gccxml_bin/v09/linux2/share/gccxml-0.9/GCC/3.3/bits/stl_vector.h gccxml_bin/v09/linux2/share/gccxml-0.9/GCC/3.3/bits/valarray_meta.h gccxml_bin/v09/linux2/share/gccxml-0.9/GCC/3.3/fstream gccxml_bin/v09/linux2/share/gccxml-0.9/GCC/3.3/sstream gccxml_bin/v09/linux2/share/gccxml-0.9/GCC/3.4/bits/gthr-default.h gccxml_bin/v09/linux2/share/gccxml-0.9/GCC/4.3/ gccxml_bin/v09/linux2/share/gccxml-0.9/Sun/ gccxml_bin/v09/linux2/share/gccxml-0.9/gccxml_identify_compiler.cc Added: gccxml_bin/v09/linux2/share/gccxml-0.9/GCC/2.95/std/bastring.cc =================================================================== --- gccxml_bin/v09/linux2/share/gccxml-0.9/GCC/2.95/std/bastring.cc (rev 0) +++ gccxml_bin/v09/linux2/share/gccxml-0.9/GCC/2.95/std/bastring.cc 2009-01-12 22:33:13 UTC (rev 1565) @@ -0,0 +1,524 @@ +// Member templates for the -*- C++ -*- string classes. +// Copyright (C) 1994, 1999 Free Software Foundation + +// This file is part of the GNU ANSI C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 2, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this library; see the file COPYING. If not, write to the Free +// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +// As a special exception, if you link this library with files +// compiled with a GNU compiler to produce an executable, this does not cause +// the resulting executable to be covered by the GNU General Public License. +// This exception does not however invalidate any other reasons why +// the executable file might be covered by the GNU General Public License. + +// Written by Jason Merrill based upon the specification by Takanori Adachi +// in ANSI X3J16/94-0013R2. + +extern "C++" { +template <class charT, class traits, class Allocator> +inline void * basic_string <charT, traits, Allocator>::Rep:: +operator new (size_t s, size_t extra) +{ + return Allocator::allocate(s + extra * sizeof (charT)); +} + +template <class charT, class traits, class Allocator> +inline void basic_string <charT, traits, Allocator>::Rep:: +operator delete (void * ptr) +{ + Allocator::deallocate(ptr, sizeof(Rep) + + reinterpret_cast<Rep *>(ptr)->res * + sizeof (charT)); +} + +template <class charT, class traits, class Allocator> +inline size_t basic_string <charT, traits, Allocator>::Rep:: +frob_size (size_t s) +{ + size_t i = 16; + while (i < s) i *= 2; + return i; +} + +template <class charT, class traits, class Allocator> +inline typename basic_string <charT, traits, Allocator>::Rep * +basic_string <charT, traits, Allocator>::Rep:: +create (size_t extra) +{ + extra = frob_size (extra + 1); + Rep *p = new (extra) Rep; + p->res = extra; + p->ref = 1; + p->selfish = false; + return p; +} + +template <class charT, class traits, class Allocator> +charT * basic_string <charT, traits, Allocator>::Rep:: +clone () +{ + Rep *p = Rep::create (len); + p->copy (0, data (), len); + p->len = len; + return p->data (); +} + +template <class charT, class traits, class Allocator> +inline bool basic_string <charT, traits, Allocator>::Rep:: +excess_slop (size_t s, size_t r) +{ + return 2 * (s <= 16 ? 16 : s) < r; +} + +template <class charT, class traits, class Allocator> +inline bool basic_string <charT, traits, Allocator>:: +check_realloc (basic_string::size_type s) const +{ + s += sizeof (charT); + rep ()->selfish = false; + return (rep ()->ref > 1 + || s > capacity () + || Rep::excess_slop (s, capacity ())); +} + +template <class charT, class traits, class Allocator> +void basic_string <charT, traits, Allocator>:: +alloc (basic_string::size_type __size, bool __save) +{ + if (! check_realloc (__size)) + return; + + Rep *p = Rep::create (__size); + + if (__save) + { + p->copy (0, data (), length ()); + p->len = length (); + } + else + p->len = 0; + + repup (p); +} + +template <class charT, class traits, class Allocator> +basic_string <charT, traits, Allocator>& +basic_string <charT, traits, Allocator>:: +replace (size_type pos1, size_type n1, + const basic_string& _str, size_type pos2, size_type n2) +{ + const size_t len2 = _str.length (); + + if (pos1 == 0 && n1 >= length () && pos2 == 0 && n2 >= len2) + return operator= (_str); + + OUTOFRANGE (pos2 > len2); + + if (n2 > len2 - pos2) + n2 = len2 - pos2; + + return replace (pos1, n1, _str.data () + pos2, n2); +} + +template <class charT, class traits, class Allocator> +inline void basic_string <charT, traits, Allocator>::Rep:: +copy (size_t pos, const charT *s, size_t n) +{ + if (n) + traits::copy (data () + pos, s, n); +} + +template <class charT, class traits, class Allocator> +inline void basic_string <charT, traits, Allocator>::Rep:: +move (size_t pos, const charT *s, size_t n) +{ + if (n) + traits::move (data () + pos, s, n); +} + +template <class charT, class traits, class Allocator> +basic_string <charT, traits, Allocator>& +basic_string <charT, traits, Allocator>:: +replace (size_type pos, size_type n1, const charT* s, size_type n2) +{ + const size_type len = length (); + OUTOFRANGE (pos > len); + if (n1 > len - pos) + n1 = len - pos; + LENGTHERROR (len - n1 > max_size () - n2); + size_t newlen = len - n1 + n2; + + if (check_realloc (newlen)) + { + Rep *p = Rep::create (newlen); + p->copy (0, data (), pos); + p->copy (pos + n2, data () + pos + n1, len - (pos + n1)); + p->copy (pos, s, n2); + repup (p); + } + else + { + rep ()->move (pos + n2, data () + pos + n1, len - (pos + n1)); + rep ()->copy (pos, s, n2); + } + rep ()->len = newlen; + + return *this; +} + +template <class charT, class traits, class Allocator> +inline void basic_string <charT, traits, Allocator>::Rep:: +set (size_t pos, const charT c, size_t n) +{ + traits::set (data () + pos, c, n); +} + +template <class charT, class traits, class Allocator> +basic_string <charT, traits, Allocator>& basic_string <charT, traits, Allocator>:: +replace (size_type pos, size_type n1, size_type n2, charT c) +{ + const size_t len = length (); + OUTOFRANGE (pos > len); + if (n1 > len - pos) + n1 = len - pos; + LENGTHERROR (len - n1 > max_size () - n2); + size_t newlen = len - n1 + n2; + + if (check_realloc (newlen)) + { + Rep *p = Rep::create (newlen); + p->copy (0, data (), pos); + p->copy (pos + n2, data () + pos + n1, len - (pos + n1)); + p->set (pos, c, n2); + repup (p); + } + else + { + rep ()->move (pos + n2, data () + pos + n1, len - (pos + n1)); + rep ()->set (pos, c, n2); + } + rep ()->len = newlen; + + return *this; +} + +template <class charT, class traits, class Allocator> +void basic_string <charT, traits, Allocator>:: +resize (size_type n, charT c) +{ + LENGTHERROR (n > max_size ()); + + if (n > length ()) + append (n - length (), c); + else + erase (n); +} + +template <class charT, class traits, class Allocator> +typename basic_string <charT, traits, Allocator>::size_type +basic_string <charT, traits, Allocator>:: +copy (charT* s, size_type n, size_type pos) const +{ + OUTOFRANGE (pos > length ()); + + if (n > length () - pos) + n = length () - pos; + + traits::copy (s, data () + pos, n); + return n; +} + +template <class charT, class traits, class Allocator> +typename basic_string <charT, traits, Allocator>::size_type +basic_string <charT, traits, Allocator>:: +find (const charT* s, size_type pos, size_type n) const +{ + size_t xpos = pos; + for (; xpos + n <= length (); ++xpos) + if (traits::eq (data () [xpos], *s) + && traits::compare (data () + xpos, s, n) == 0) + return xpos; + return npos; +} + +template <class charT, class traits, class Allocator> +inline typename basic_string <charT, traits, Allocator>::size_type +basic_string <charT, traits, Allocator>:: +_find (const charT* ptr, charT c, size_type xpos, size_type len) +{ + for (; xpos < len; ++xpos) + if (traits::eq (ptr [xpos], c)) + return xpos; + return npos; +} + +template <class charT, class traits, class Allocator> +typename basic_string <charT, traits, Allocator>::size_type +basic_string <charT, traits, Allocator>:: +find (charT c, size_type pos) const +{ + return _find (data (), c, pos, length ()); +} + +template <class charT, class traits, class Allocator> +typename basic_string <charT, traits, Allocator>::size_type +basic_string <charT, traits, Allocator>:: +rfind (const charT* s, size_type pos, size_type n) const +{ + if (n > length ()) + return npos; + + size_t xpos = length () - n; + if (xpos > pos) + xpos = pos; + + for (++xpos; xpos-- > 0; ) + if (traits::eq (data () [xpos], *s) + && traits::compare (data () + xpos, s, n) == 0) + return xpos; + return npos; +} + +template <class charT, class traits, class Allocator> +typename basic_string <charT, traits, Allocator>::size_type +basic_string <charT, traits, Allocator>:: +rfind (charT c, size_type pos) const +{ + if (1 > length ()) + return npos; + + size_t xpos = length () - 1; + if (xpos > pos) + xpos = pos; + + for (++xpos; xpos-- > 0; ) + if (traits::eq (data () [xpos], c)) + return xpos; + return npos; +} + +template <class charT, class traits, class Allocator> +typename basic_string <charT, traits, Allocator>::size_type +basic_string <charT, traits, Allocator>:: +find_first_of (const charT* s, size_type pos, size_type n) const +{ + size_t xpos = pos; + for (; xpos < length (); ++xpos) + if (_find (s, data () [xpos], 0, n) != npos) + return xpos; + return npos; +} + +template <class charT, class traits, class Allocator> +typename basic_string <charT, traits, Allocator>::size_type +basic_string <charT, traits, Allocator>:: +find_last_of (const charT* s, size_type pos, size_type n) const +{ + if (length() == 0) + return npos; + size_t xpos = length () - 1; + if (xpos > pos) + xpos = pos; + for (++xpos; xpos-- > 0;) + if (_find (s, data () [xpos], 0, n) != npos) + return xpos; + return npos; +} + +template <class charT, class traits, class Allocator> +typename basic_string <charT, traits, Allocator>::size_type +basic_string <charT, traits, Allocator>:: +find_first_not_of (const charT* s, size_type pos, size_type n) const +{ + size_t xpos = pos; + for (; xpos < length (); ++xpos) + if (_find (s, data () [xpos], 0, n) == npos) + return xpos; + return npos; +} + +template <class charT, class traits, class Allocator> +typename basic_string <charT, traits, Allocator>::size_type +basic_string <charT, traits, Allocator>:: +find_first_not_of (charT c, size_type pos) const +{ + size_t xpos = pos; + for (; xpos < length (); ++xpos) + if (traits::ne (data () [xpos], c)) + return xpos; + return npos; +} + +template <class charT, class traits, class Allocator> +typename basic_string <charT, traits, Allocator>::size_type +basic_string <charT, traits, Allocator>:: +find_last_not_of (const charT* s, size_type pos, size_type n) const +{ + if (length() == 0) + return npos; + size_t xpos = length () - 1; + if (xpos > pos) + xpos = pos; + for (++xpos; xpos-- > 0;) + if (_find (s, data () [xpos], 0, n) == npos) + return xpos; + return npos; +} + +template <class charT, class traits, class Allocator> +typename basic_string <charT, traits, Allocator>::size_type +basic_string <charT, traits, Allocator>:: +find_last_not_of (charT c, size_type pos) const +{ + if (length() == 0) + return npos; + size_t xpos = length () - 1; + if (xpos > pos) + xpos = pos; + for (++xpos; xpos-- > 0;) + if (traits::ne (data () [xpos], c)) + return xpos; + return npos; +} + +template <class charT, class traits, class Allocator> +int basic_string <charT, traits, Allocator>:: +compare (const basic_string& _str, size_type pos, size_type n) const +{ + OUTOFRANGE (pos > length ()); + + size_t rlen = length () - pos; + if (rlen > n) + rlen = n; + if (rlen > _str.length ()) + rlen = _str.length (); + int r = traits::compare (data () + pos, _str.data (), rlen); + if (r != 0) + return r; + if (rlen == n) + return 0; + return (length () - pos) - _str.length (); +} + +template <class charT, class traits, class Allocator> +int basic_string <charT, traits, Allocator>:: +compare (const charT* s, size_type pos, size_type n) const +{ + OUTOFRANGE (pos > length ()); + + size_t rlen = length () - pos; + if (rlen > n) + rlen = n; + int r = traits::compare (data () + pos, s, rlen); + if (r != 0) + return r; + return (length () - pos) - n; +} + +#include <iostream.h> + +template <class charT, class traits, class Allocator> +istream & +operator>> (istream &is, basic_string <charT, traits, Allocator> &s) +{ + int w = is.width (0); + if (is.ipfx0 ()) + { + register streambuf *sb = is.rdbuf (); + s.resize (0); + while (1) + { + int ch = sb->sbumpc (); + if (ch == EOF) + { + is.setstate (ios::eofbit); + break; + } + else if (traits::is_del (ch)) + { + sb->sungetc (); + break; + } + s += static_cast<charT> (ch); + if (--w == 1) + break; + } + } + + is.isfx (); + if (s.length () == 0) + is.setstate (ios::failbit); + + return is; +} + +template <class charT, class traits, class Allocator> +ostream & +operator<< (ostream &o, const basic_string <charT, traits, Allocator>& s) +{ + return o.write (s.data (), s.length ()); +} + +template <class charT, class traits, class Allocator> +istream& +getline (istream &is, basic_string <charT, traits, Allocator>& s, charT delim) +{ + if (is.ipfx1 ()) + { + _IO_size_t _count = 0; + streambuf *sb = is.rdbuf (); + s.resize (0); + + while (1) + { + int ch = sb->sbumpc (); + if (ch == EOF) + { + is.setstate (_count == 0 + ? (ios::failbit|ios::eofbit) + : ios::eofbit); + break; + } + + ++_count; + + if (ch == delim) + break; + + s += static_cast<charT> (ch); + + if (s.length () == s.npos - 1) + { + is.setstate (ios::failbit); + break; + } + } + } + + // We need to be friends with istream to do this. + // is._gcount = _count; + is.isfx (); + + return is; +} + +template <class charT, class traits, class Allocator> +typename basic_string <charT, traits, Allocator>::Rep +basic_string<charT, traits, Allocator>::nilRep = { 0, 0, 1, false }; + +template <class charT, class traits, class Allocator> +const typename basic_string <charT, traits, Allocator>::size_type +basic_string <charT, traits, Allocator>::npos; + +} // extern "C++" Added: gccxml_bin/v09/linux2/share/gccxml-0.9/GCC/2.95/std/dcomplex.h =================================================================== --- gccxml_bin/v09/linux2/share/gccxml-0.9/GCC/2.95/std/dcomplex.h (rev 0) +++ gccxml_bin/v09/linux2/share/gccxml-0.9/GCC/2.95/std/dcomplex.h 2009-01-12 22:33:13 UTC (rev 1565) @@ -0,0 +1,92 @@ +// The -*- C++ -*- double_complex class. +// Copyright (C) 1994 Free Software Foundation + +// This file is part of the GNU ANSI C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 2, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this library; see the file COPYING. If not, write to the Free +// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +// As a special exception, if you link this library with files +// compiled with a GNU compiler to produce an executable, this does not cause +// the resulting executable to be covered by the GNU General Public License. +// This exception does not however invalidate any other reasons why +// the executable file might be covered by the GNU General Public License. + +// Written by Jason Merrill based upon the specification in the 27 May 1994 +// C++ working paper, ANSI document X3J16/94-0098. + +#ifndef __DCOMPLEX__ +#define __DCOMPLEX__ + +#ifdef __GNUG__ +#pragma interface "dcomplex" +#endif + +extern "C++" { +template <> +class complex<double> +{ +public: + complex (double r = 0, double i = 0): re (r), im (i) { } + complex (const complex<float>& r): re (r.real ()), im (r.imag ()) { } + explicit complex (const complex<long double>& r); + + complex& operator+= (const complex& r) { return __doapl (this, r); } + complex& operator-= (const complex& r) { return __doami (this, r); } + complex& operator*= (const complex& r) { return __doaml (this, r); } + complex& operator/= (const complex& r) { return __doadv (this, r); } + + double real () const { return re; } + double imag () const { return im; } +private: + double re, im; + + friend complex& __doapl<> (complex *, const complex&); + friend complex& __doami<> (complex *, const complex&); + friend complex& __doaml<> (complex *, const complex&); + friend complex& __doadv<> (complex *, const complex&); + +#ifndef __STRICT_ANSI__ + friend inline complex operator + (const complex& x, double y) + { return operator+<> (x, y); } + friend inline complex operator + (double x, const complex& y) + { return operator+<> (x, y); } + friend inline complex operator - (const complex& x, double y) + { return operator-<> (x, y); } + friend inline complex operator - (double x, const complex& y) + { return operator-<> (x, y); } + friend inline complex operator * (const complex& x, double y) + { return operator*<> (x, y); } + friend inline complex operator * (double x, const complex& y) + { return operator*<> (x, y); } + friend inline complex operator / (const complex& x, double y) + { return operator/<> (x, y); } + friend inline complex operator / (double x, const complex& y) + { return operator/<> (x, y); } + friend inline bool operator == (const complex& x, double y) + { return operator==<> (x, y); } + friend inline bool operator == (double x, const complex& y) + { return operator==<> (x, y); } + friend inline bool operator != (const complex& x, double y) + { return operator!=<> (x, y); } + friend inline bool operator != (double x, const complex& y) + { return operator!=<> (x, y); } +#endif /* __STRICT_ANSI__ */ +}; + +inline complex<float>::complex (const complex<double>& r) +: re (r.real ()), im (r.imag ()) +{ } +} // extern "C++" + +#endif Added: gccxml_bin/v09/linux2/share/gccxml-0.9/GCC/2.95/std/fcomplex.h =================================================================== --- gccxml_bin/v09/linux2/share/gccxml-0.9/GCC/2.95/std/fcomplex.h (rev 0) +++ gccxml_bin/v09/linux2/share/gccxml-0.9/GCC/2.95/std/fcomplex.h 2009-01-12 22:33:13 UTC (rev 1565) @@ -0,0 +1,88 @@ +// The -*- C++ -*- float_complex class. +// Copyright (C) 1994 Free Software Foundation + +// This file is part of the GNU ANSI C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 2, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this library; see the file COPYING. If not, write to the Free +// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +// As a special exception, if you link this library with files +// compiled with a GNU compiler to produce an executable, this does not cause +// the resulting executable to be covered by the GNU General Public License. +// This exception does not however invalidate any other reasons why +// the executable file might be covered by the GNU General Public License. + +// Written by Jason Merrill based upon the specification in the 27 May 1994 +// C++ working paper, ANSI document X3J16/94-0098. + +#ifndef __FCOMPLEX__ +#define __FCOMPLEX__ + +#ifdef __GNUG__ +#pragma interface "fcomplex" +#endif + +extern "C++" { +template <> +class complex<float> +{ +public: + complex (float r = 0, float i = 0): re (r), im (i) { } + explicit complex (const complex<double>& r); + explicit complex (const complex<long double>& r); + + complex& operator+= (const complex& r) { return __doapl (this, r); } + complex& operator-= (const complex& r) { return __doami (this, r); } + complex& operator*= (const complex& r) { return __doaml (this, r); } + complex& operator/= (const complex& r) { return __doadv (this, r); } + + float real () const { return re; } + float imag () const { return im; } +private: + float re, im; + + friend complex& __doapl<> (complex *, const complex&); + friend complex& __doami<> (complex *, const complex&); + friend complex& __doaml<> (complex *, const complex&); + friend complex& __doadv<> (complex *, const complex&); + +#ifndef __STRICT_ANSI__ + friend inline complex operator + (const complex& x, float y) + { return operator+<> (x, y); } + friend inline complex operator + (float x, const complex& y) + { return operator+<> (x, y); } + friend inline complex operator - (const complex& x, float y) + { return operator-<> (x, y); } + friend inline complex operator - (float x, const complex& y) + { return operator-<> (x, y); } + friend inline complex operator * (const complex& x, float y) + { return operator*<> (x, y); } + friend inline complex operator * (float x, const complex& y) + { return operator*<> (x, y); } + friend inline complex operator / (const complex& x, float y) + { return operator/<> (x, y); } + friend inline complex operator / (float x, const complex& y) + { return operator/<> (x, y); } + friend inline bool operator == (const complex& x, float y) + { return operator==<> (x, y); } + friend inline bool operator == (float x, const complex& y) + { return operator==<> (x, y); } + friend inline bool operator != (const complex& x, float y) + { return operator!=<> (x, y); } + friend inline bool operator != (float x, const complex& y) + { return operator!=<> (x, y); } +#endif /* __STRICT_ANSI__ */ +}; +} // extern "C++" + +#endif Added: gccxml_bin/v09/linux2/share/gccxml-0.9/GCC/2.95/std/ldcomplex.h =================================================================== --- gccxml_bin/v09/linux2/share/gccxml-0.9/GCC/2.95/std/ldcomplex.h (rev 0) +++ gccxml_bin/v09/linux2/share/gccxml-0.9/GCC/2.95/std/ldcomplex.h 2009-01-12 22:33:13 UTC (rev 1565) @@ -0,0 +1,96 @@ +// The -*- C++ -*- long_double_complex class. +// Copyright (C) 1994 Free Software Foundation + +// This file is part of the GNU ANSI C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 2, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this library; see the file COPYING. If not, write to the Free +// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +// As a special exception, if you link this library with files +// compiled with a GNU compiler to produce an executable, this does not cause +// the resulting executable to be covered by the GNU General Public License. +// This exception does not however invalidate any other reasons why +// the executable file might be covered by the GNU General Public License. + +// Written by Jason Merrill based upon the specification in the 27 May 1994 +// C++ working paper, ANSI document X3J16/94-0098. + +#ifndef __LDCOMPLEX__ +#define __LDCOMPLEX__ + +#ifdef __GNUG__ +#pragma interface "ldcomplex" +#endif + +extern "C++" { +template <> +class complex<long double> +{ +public: + complex (long double r = 0, long double i = 0): re (r), im (i) { } + complex (const complex<float>& r): re (r.real ()), im (r.imag ()) { } + complex (const complex<double>& r): re (r.real ()), im (r.imag ()) { } + + complex& operator+= (const complex& r) { return __doapl (this, r); } + complex& operator-= (const complex& r) { return __doami (this, r); } + complex& operator*= (const complex& r) { return __doaml (this, r); } + complex& operator/= (const complex& r) { return __doadv (this, r); } + + long double real () const { return re; } + long double imag () const { return im; } +private: + long double re, im; + + friend complex& __doapl<> (complex *, const complex&); + friend complex& __doami<> (complex *, const complex&); + friend complex& __doaml<> (complex *, const complex&); + friend complex& __doadv<> (complex *, const complex&); + +#ifndef __STRICT_ANSI__ + friend inline complex operator + (const complex& x, long double y) + { return operator+<> (x, y); } + friend inline complex operator + (long double x, const complex& y) + { return operator+<> (x, y); } + friend inline complex operator - (const complex& x, long double y) + { return operator-<> (x, y); } + friend inline complex operator - (long double x, const complex& y) + { return operator-<> (x, y); } + friend inline complex operator * (const complex& x, long double y) + { return operator*<> (x, y); } + friend inline complex operator * (long double x, const complex& y) + { return operator*<> (x, y); } + friend inline complex operator / (const complex& x, long double y) + { return operator/<> (x, y); } + friend inline complex operator / (long double x, const complex& y) + { return operator/<> (x, y); } + friend inline bool operator == (const complex& x, long double y) + { return operator==<> (x, y); } + friend inline bool operator == (long double x, const complex& y) + { return operator==<> (x, y); } + friend inline bool operator != (const complex& x, long double y) + { return operator!=<> (x, y); } + friend inline bool operator != (long double x, const complex& y) + { return operator!=<> (x, y); } +#endif /* __STRICT_ANSI__ */ +}; + +inline complex<float>::complex (const complex<long double>& r) +: re (r.real ()), im (r.imag ()) +{ } + +inline complex<double>::complex (const complex<long double>& r) +: re (r.real ()), im (r.imag ()) +{ } +} // extern "C++" + +#endif Added: gccxml_bin/v09/linux2/share/gccxml-0.9/GCC/2.95/std/straits.h =================================================================== --- gccxml_bin/v09/linux2/share/gccxml-0.9/GCC/2.95/std/straits.h (rev 0) +++ gccxml_bin/v09/linux2/share/gccxml-0.9/GCC/2.95/std/straits.h 2009-01-12 22:33:13 UTC (rev 1565) @@ -0,0 +1,162 @@ +// Character traits template for the -*- C++ -*- string classes. +// Copyright (C) 1994 Free Software Foundation + +// This file is part of the GNU ANSI C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 2, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this library; see the file COPYING. If not, write to the Free +// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +// As a special exception, if you link this library with files +// compiled with a GNU compiler to produce an executable, this does not cause +// the resulting executable to be covered by the GNU General Public License. +// This exception does not however invalidate any other reasons why +// the executable file might be covered by the GNU General Public License. + +// Written by Jason Merrill based upon the specification by Takanori Adachi +// in ANSI X3J16/94-0013R2. + +#ifndef __STRING_CHAR_TRAITS__ +#define __STRING_CHAR_TRAITS__ + +#ifdef __GNUG__ +// For string_char_traits <char> +#pragma interface "std/straits.h" +#endif + +#include <cstddef> + +extern "C++" { +template <class charT> +struct string_char_traits { + typedef charT char_type; // for users to acquire the basic character type + + // constraints + + static void assign (char_type& c1, const char_type& c2) + { c1 = c2; } + static bool eq (const char_type& c1, const char_type& c2) + { return (c1 == c2); } + static bool ne (const char_type& c1, const char_type& c2) + { return !(c1 == c2); } + static bool lt (const char_type& c1, const char_type& c2) + { return (c1 < c2); } + static char_type eos () { return char_type(); } // the null character + static bool is_del(char_type a) { return 0; } + // characteristic function for delimiters of charT + + // speed-up functions + + static int compare (const char_type* s1, const char_type* s2, size_t n) + { + size_t i; + for (i = 0; i < n; ++i) + if (ne (s1[i], s2[i])) + return lt (s1[i], s2[i]) ? -1 : 1; + + return 0; + } + + static size_t length (const char_type* s) + { + size_t l = 0; + while (ne (*s++, eos ())) + ++l; + return l; + } + + static char_type* copy (char_type* s1, const char_type* s2, size_t n) + { + for (; n--; ) + assign (s1[n], s2[n]); + return s1; + } + + static char_type* move (char_type* s1, const char_type* s2, size_t n) + { + char_type a[n]; + size_t i; + for (i = 0; i < n; ++i) + assign (a[i], s2[i]); + for (i = 0; i < n; ++i) + assign (s1[i], a[i]); + return s1; + } + + static char_type* set (char_type* s1, const char_type& c, size_t n) + { + for (; n--; ) + assign (s1[n], c); + return s1; + } +}; + +class istream; +class ostream; +#include <cctype> +#include <cstring> + +template <> +struct string_char_traits <char> { + typedef char char_type; + + static void assign (char_type& c1, const char_type& c2) + { c1 = c2; } + static bool eq (const char_type & c1, const char_type& c2) + { return (c1 == c2); } + static bool ne (const char_type& c1, const char_type& c2) + { return (c1 != c2); } + static bool lt (const char_type& c1, const char_type& c2) + { return (c1 < c2); } + static char_type eos () { return 0; } + static bool is_del(char_type a) { return isspace(a); } + + static int compare (const char_type* s1, const char_type* s2, size_t n) + { return memcmp (s1, s2, n); } + static size_t length (const char_type* s) + { return strlen (s); } + static char_type* copy (char_type* s1, const char_type* s2, size_t n) + { return (char_type*) memcpy (s1, s2, n); } + static char_type* move (char_type* s1, const char_type* s2, size_t n) + { return (char_type*) memmove (s1, s2, n); } + static char_type* set (char_type* s1, const char_type& c, size_t n) + { return (char_type*) memset (s1, c, n); } +}; + +#if 0 +#include <cwctype> +struct string_char_traits <wchar_t> { + typedef wchar_t char_type; + + static void assign (char_type& c1, const char_type& c2) + { c1 = c2; } + static bool eq (const char_type & c1, const char_type& c2) + { return (c1 == c2); } + static bool ne (const char_type& c1, const char_type& c2) + { return (c1 != c2); } + static bool lt (const char_type& c1, const char_type& c2) + { return (c1 < c2); } + static char_type eos () { return 0; } + static bool is_del(char_type a) { return iswspace(a); } + + static int compare (const char_type* s1, const char_type* s2, size_t n) + { return wmemcmp (s1, s2, n); } + static size_t length (const char_type* s) + { return wcslen (s); } + static char_type* copy (char_type* s1, const char_type* s2, size_t n) + { return wmemcpy (s1, s2, n); } + static char_type* set (char_type* s1, const char_type& c, size_t n) + { return wmemset (s1, c, n); } +}; +#endif +} // extern "C++" +#endif Added: gccxml_bin/v09/linux2/share/gccxml-0.9/GCC/2.95/stl_alloc.h =================================================================== --- gccxml_bin/v09/linux2/share/gccxml-0.9/GCC/2.95/stl_alloc.h (rev 0) +++ gccxml_bin/v09/linux2/share/gccxml-0.9/GCC/2.95/stl_alloc.h 2009-01-12 22:33:13 UTC (rev 1565) @@ -0,0 +1,1057 @@ +/* + * Copyright (c) 1996-1997 + * Silicon Graphics Computer Systems, Inc. + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Silicon Graphics makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + */ + +/* NOTE: This is an internal header file, included by other STL headers. + * You should not attempt to use it directly. + */ + +#ifndef __SGI_STL_INTERNAL_ALLOC_H +#define __SGI_STL_INTERNAL_ALLOC_H + +#ifdef __SUNPRO_CC +# define __PRIVATE public + // Extra access restrictions prevent us from really making some things + // private. +#else +# define __PRIVATE private +#endif + +#ifdef __STL_STATIC_TEMPLATE_MEMBER_BUG +# define __USE_MALLOC +#endif + + +// This implements some standard node allocators. These are +// NOT the same as the allocators in the C++ draft standard or in +// in the original STL. They do not encapsulate different pointer +// types; indeed we assume that there is only one pointer type. +// The allocation primitives are intended to allocate individual objects, +// not larger arenas as with the original STL allocators. + +#ifdef __STL_USE_EXCEPTIONS +# include <new> +# define __THROW_BAD_ALLOC throw bad_alloc() +#elif !defined(__THROW_BAD_ALLOC) +# include <iostream.h> +# define __THROW_BAD_ALLOC cerr << "out of memory" << endl; exit(1) +#endif + +#ifdef __STL_WIN32THREADS +# include <windows.h> +#endif + +#include <stddef.h> +#include <stdlib.h> +#include <string.h> +#include <assert.h> +#ifndef __RESTRICT +# define __RESTRICT +#endif + +#if !defined(__STL_PTHREADS) && !defined(__STL_SOLTHREADS) \ + && !defined(_NOTHREADS) \ + && !defined(__STL_SGI_THREADS) && !defined(__STL_WIN32THREADS) +# define _NOTHREADS +#endif + +# ifdef __STL_PTHREADS + // POSIX Threads + // This is dubious, since this is likely to be a high contention + // lock. Performance may not be adequate. +# include <pthread.h> +# define __NODE_ALLOCATOR_LOCK \ + if (threads) pthread_mutex_lock(&_S_node_allocator_lock) +# define __NODE_ALLOCATOR_UNLOCK \ + if (threads) pthread_mutex_unlock(&_S_node_allocator_lock) +# define __NODE_ALLOCATOR_THREADS true +# define __VOLATILE volatile // Needed at -O3 on SGI +# endif +# ifdef __STL_SOLTHREADS +# include <thread.h> +# define __NODE_ALLOCATOR_LOCK \ + if (threads) mutex_lock(&_S_node_allocator_lock) +# define __NODE_ALLOCATOR_UNLOCK \ + if (threads) mutex_unlock(&_S_node_allocator_lock) +# define __NODE_ALLOCATOR_THREADS true +# define __VOLATILE +# endif +# ifdef __STL_WIN32THREADS + // The lock needs to be initialized by constructing an allocator + // objects of the right type. We do that here explicitly for alloc. +# define __NODE_ALLOCATOR_LOCK \ + EnterCriticalSection(&_S_node_allocator_lock) +# define __NODE_ALLOCATOR_UNLOCK \ + LeaveCriticalSection(&_S_node_allocator_lock) +# define __NODE_ALLOCATOR_THREADS true +# define __VOLATILE volatile // may not be needed +# endif /* WIN32THREADS */ +# ifdef __STL_SGI_THREADS + // This should work without threads, with sproc threads, or with + // pthreads. It is suboptimal in all cases. + // It is unlikely to even compile on nonSGI machines. + + extern "C" { + extern int __us_rsthread_malloc; + } + // The above is copied from malloc.h. Including <malloc.h> + // would be cleaner but fails with certain levels of standard + // conformance. +# define __NODE_ALLOCATOR_LOCK if (threads && __us_rsthread_malloc) \ + { _S_lock(&_S_node_allocator_lock); } +# define __NODE_ALLOCATOR_UNLOCK if (threads && __us_rsthread_malloc) \ + { _S_unlock(&_S_node_allocator_lock); } +# define __NODE_ALLOCATOR_THREADS true +# define __VOLATILE volatile // Needed at -O3 on SGI +# endif +# ifdef _NOTHREADS +// Thread-unsafe +# define __NODE_ALLOCATOR_LOCK +# define __NODE_ALLOCATOR_UNLOCK +# define __NODE_ALLOCATOR_THREADS false +# define __VOLATILE +# endif + +__STL_BEGIN_NAMESPACE + +#if defined(__sgi) && !defined(__GNUC__) && (_MIPS_SIM != _MIPS_SIM_ABI32) +#pragma set woff 1174 +#endif + +// Malloc-based allocator. Typically slower than default alloc below. +// Typically thread-safe and more storage efficient. +#ifdef __STL_STATIC_TEMPLATE_MEMBER_BUG +# ifdef __DECLARE_GLOBALS_HERE + void (* __malloc_alloc_oom_handler)() = 0; + // g++ 2.7.2 does not handle static template data members. +# else + extern void (* __malloc_alloc_oom_handler)(); +# endif +#endif + +template <int __inst> +class __malloc_alloc_template { + +private: + + static void* _S_oom_malloc(size_t); + static void* _S_oom_realloc(void*, size_t); + +#ifndef __STL_STATIC_TEMPLATE_MEMBER_BUG + static void (* __malloc_alloc_oom_handler)(); +#endif + +public: + + static void* allocate(size_t __n) + { + void* __result = malloc(__n); + if (0 == __result) __result = _S_oom_malloc(__n); + return __result; + } + + static void deallocate(void* __p, size_t /* __n */) + { + free(__p); + } + + static void* reallocate(void* __p, size_t /* old_sz */, size_t __new_sz) + { + void* __result = realloc(__p, __new_sz); + if (0 == __result) __result = _S_oom_realloc(__p, __new_sz); + return __result; + } + + static void (* __set_malloc_handler(void (*__f)()))() + { + void (* __old)() = __malloc_alloc_oom_handler; + __malloc_alloc_oom_handler = __f; + return(__old); + } + +}; + +// malloc_alloc out-of-memory handling + +#ifndef __STL_STATIC_TEMPLATE_MEMBER_BUG +template <int __inst> +void (* __malloc_alloc_template<__inst>::__malloc_alloc_oom_handler)() = 0; +#endif + +template <int __inst> +void* +__malloc_alloc_template<__inst>::_S_oom_malloc(size_t __n) +{ + void (* __my_malloc_handler)(); + void* __result; + + for (;;) { + __my_malloc_handler = __malloc_alloc_oom_handler; + if (0 == __my_malloc_handler) { __THROW_BAD_ALLOC; } + (*__my_malloc_handler)(); + __result = malloc(__n); + if (__result) return(__result); + } +} + +template <int __inst> +void* __malloc_alloc_template<__inst>::_S_oom_realloc(void* __p, size_t __n) +{ + void (* __my_malloc_handler)(); + void* __result; + + for (;;) { + __my_malloc_handler = __malloc_alloc_oom_handler; + if (0 == __my_malloc_handler) { __THROW_BAD_ALLOC; } + (*__my_malloc_handler)(); + __result = realloc(__p, __n); + if (__result) return(__result); + } +} + +typedef __malloc_alloc_template<0> malloc_alloc; + +template<class _Tp, class _Alloc> +class simple_alloc { + +public: + static _Tp* allocate(size_t __n) + { return 0 == __n ? 0 : (_Tp*) _Alloc::allocate(__n * sizeof (_Tp)); } + static _Tp* allocate(void) + { return (_Tp*) _Alloc::allocate(sizeof (_Tp)); } + static void deallocate(_Tp* __p, size_t __n) + { if (0 != __n) _Alloc::deallocate(__p, __n * sizeof (_Tp)); } + static void deallocate(_Tp* __p) + { _Alloc::deallocate(__p, sizeof (_Tp)); } +}; + +// Allocator adaptor to check size arguments for debugging. +// Reports errors using assert. Checking can be disabled with +// NDEBUG, but it's far better to just use the underlying allocator +// instead when no checking is desired. +// There is some evidence that this can confuse Purify. +template <class _Alloc> +class debug_alloc { + +private: + + enum {_S_extra = 8}; // Size of space used to store size. Note + // that this must be large enough to preserve + // alignment. + +public: + + static void* allocate(size_t __n) + { + char* __result = (char*)_Alloc::allocate(__n + _S_extra); + *(size_t*)__result = __n; + return __result + _S_extra; + } + + static void deallocate(void* __p, size_t __n) + { + char* __real_p = (char*)__p - _S_extra; + assert(*(size_t*)__real_p == __n); + _Alloc::deallocate(__real_p, __n + _S_extra); + } + + static void* reallocate(void* __p, size_t __old_sz, size_t __new_sz) + { + char* __real_p = (char*)__p - _S_extra; + assert(*(size_t*)__real_p == __old_sz); + char* __result = (char*) + _Alloc::reallocate(__real_p, __old_sz + _S_extra, __new_sz + _S_extra); + *(size_t*)__result = __new_sz; + return __result + _S_extra; + } + +}; + + +# ifdef __USE_MALLOC + +typedef malloc_alloc alloc; +typedef malloc_alloc single_client_alloc; + +# else + + +// Default node allocator. +// With a reasonable compiler, this should be roughly as fast as the +// original STL class-specific allocators, but with less fragmentation. +// Default_alloc_template parameters are experimental and MAY +// DISAPPEAR in the future. Clients should just use alloc for now. +// +// Important implementation properties: +// 1. If the client request an object of size > _MAX_BYTES, the resulting +// object will be obtained directly from malloc. +// 2. In all other cases, we allocate an object of size exactly +// _S_round_up(requested_size). Thus the client has enough size +// information that we can return the object to the proper free list +// without permanently losing part of the object. +// + +// The first template parameter specifies whether more than one thread +// may use this allocator. It is safe to allocate an object from +// one instance of a default_alloc and deallocate it with another +// one. This effectively transfers its ownership to the second one. +// This may have undesirable effects on reference locality. +// The second parameter is unreferenced and serves only to allow the +// creation of multiple default_alloc instances. +// Node that containers built on different allocator instances have +// different types, limiting the utility of this approach. +#ifdef __SUNPRO_CC +// breaks if we make these template class members: + enum {_ALIGN = 8}; + enum {_MAX_BYTES = 128}; + enum {_NFREELISTS = _MAX_BYTES/_ALIGN}; +#endif + +template <bool threads, int inst> +class __default_alloc_template { + +private: + // Really we should use static const int x = N + // instead of enum { x = N }, but few compilers accept the former. +# ifndef __SUNPRO_CC + enum {_ALIGN = 8}; + enum {_MAX_BYTES = 128}; + enum {_NFREELISTS = _MAX_BYTES/_ALIGN}; +# endif + static size_t + _S_round_up(size_t __bytes) + { return (((__bytes) + _ALIGN-1) & ~(_ALIGN - 1)); } + +__PRIVATE: + union _Obj { + union _Obj* _M_free_list_link; + char _M_client_data[1]; /* The client sees this. */ + }; +private: +# ifdef __SUNPRO_CC + static _Obj* __VOLATILE _S_free_list[]; + // Specifying a size results in duplicate def for 4.1 +# else + static _Obj* __VOLATILE _S_free_list[_NFREELISTS]; +# endif + static size_t _S_freelist_index(size_t __bytes) { + return (((__bytes) + _ALIGN-1)/_ALIGN - 1); + } + + // Returns an object of size __n, and optionally adds to size __n free list. + static void* _S_refill(size_t __n); + // Allocates a chunk for nobjs of size "size". nobjs may be reduced + // if it is inconvenient to allocate the requested number. + static char* _S_chunk_alloc(size_t __size, int& __nobjs); + + // Chunk allocation state. + static char* _S_start_free; + static char* _S_end_free; + static size_t _S_heap_size; + +# ifdef __STL_SGI_THREADS + static volatile unsigned long _S_node_allocator_lock; + static void _S_lock(volatile unsigned long*); + static inline void _S_unlock(volatile unsigned long*); +# endif + +# ifdef __STL_PTHREADS + static pthread_mutex_t _S_node_allocator_lock; +# endif + +# ifdef __STL_SOLTHREADS + static mutex_t _S_node_allocator_lock; +# endif + +# ifdef __STL_WIN32THREADS + static CRITICAL_SECTION _S_node_allocator_lock; + static bool _S_node_allocator_lock_initialized; + + public: + __default_alloc_template() { + // This assumes the first constructor is called before threads + // are started. + if (!_S_node_allocator_lock_initialized) { + InitializeCriticalSection(&_S_node_allocator_lock); + _S_node_allocator_lock_initialized = true; + } + } + private: +# endif + + class _Lock { + public: + _Lock() { __NODE_ALLOCATOR_LOCK; } + ~_Lock() { __NODE_ALLOCATOR_UNLOCK; } + }; + friend class _Lock; + +public: + + /* __n must be > 0 */ + static void* allocate(size_t __n) + { + _Obj* __VOLATILE* __my_free_list; + _Obj* __RESTRICT __result; + + if (__n > (size_t) _MAX_BYTES) { + return(malloc_alloc::allocate(__n)); + } + __my_free_list = _S_free_list + _S_freelist_index(__n); + // Acquire the lock here with a constructor call. + // This ensures that it is released in exit or during stack + // unwinding. +# ifndef _NOTHREADS + /*REFERENCED*/ + _Lock __lock_instance; +# endif + __result = *__my_free_list; + if (__result == 0) { + void* __r = _S_refill(_S_round_up(__n)); + return __r; + } + *__my_free_list = __result -> _M_free_list_link; + return (__result); + }; + + /* __p may not be 0 */ + static void deallocate(void* __p, size_t __n) + { + _Obj* __q = (_Obj*)__p; + _Obj* __VOLATILE* __my_free_list; + + if (__n > (size_t) _MAX_BYTES) { + malloc_alloc::deallocate(__p, __n); + return; + } + __my_free_list = _S_free_list + _S_freelist_index(__n); + // acquire lock +# ifndef _NOTHREADS + /*REFERENCED*/ + _Lock __lock_instance; +# endif /* _NOTHREADS */ + __q -> _M_free_list_link = *__my_free_list; + *__my_free_list = __q; + // lock is released here + } + + static void* reallocate(void* __p, size_t __old_sz, size_t __new_sz); + +} ; + +typedef __default_alloc_template<__NODE_ALLOCATOR_THREADS, 0> alloc; +typedef __default_alloc_template<false, 0> single_client_alloc; + + + +/* We allocate memory in large chunks in order to avoid fragmenting */ +/* the malloc heap too much. */ +/* We assume that size is properly aligned. */ +/* We hold the allocation lock. */ +template <bool __threads, int __inst> +char* +__default_alloc_template<__threads, __inst>::_S_chunk_alloc(size_t __size, + int& __nobjs) +{ + char* __result; + size_t __total_bytes = __size * __nobjs; + size_t __bytes_left = _S_end_free - _S_start_free; + + if (__bytes_left >= __total_bytes) { + __result = _S_start_free; + _S_start_free += __total_bytes; + return(__result); + } else if (__bytes_left >= __size) { + __nobjs = (int)(__bytes_left/__size); + __total_bytes = __size * __nobjs; + __result = _S_start_free; + _S_start_free += __total_bytes; + return(__result); + } else { + size_t __bytes_to_get = + 2 * __total_bytes + _S_round_up(_S_heap_size >> 4); + // Try to make use of the left-over piece. + if (__bytes_left > 0) { + _Obj* __VOLATILE* __my_free_list = + _S_free_list + _S_freelist_index(__bytes_left); + + ((_Obj*)_S_start_free) -> _M_free_list_link = *__my_free_list; + *__my_free_list = (_Obj*)_S_start_free; + } + _S_start_free = (char*)malloc(__bytes_to_get); + if (0 == _S_start_free) { + size_t __i; + _Obj* __VOLATILE* __my_free_list; + _Obj* __p; + // Try to make do with what we have. That can't + // hurt. We do not try smaller requests, since that tends + // to result in disaster on multi-process machines. + for (__i = __size; __i <= _MAX_BYTES; __i += _ALIGN) { + __my_free_list = _S_free_list + _S_freelist_index(__i); + __p = *__my_free_list; + if (0 != __p) { + *__my_free_list = __p -> _M_free_list_link; + _S_start_free = (char*)__p; + _S_end_free = _S_start_free + __i; + return(_S_chunk_alloc(__size, __nobjs)); + // Any leftover piece will eventually make it to the + // right free list. + } + } + _S_end_free = 0; // In case of exception. + _S_start_free = (char*)malloc_alloc::allocate(__bytes_to_get); + // This should either throw an + // exception or remedy the situation. Thus we assume it + // succeeded. + } + _S_heap_size += __bytes_to_get; + _S_end_free = _S_start_free + __bytes_to_get; + return(_S_chunk_alloc(__size, __nobjs)); + } +} + + +/* Returns an object of size __n, and optionally adds to size __n free list.*/ +/* We assume that __n is properly aligned. */ +/* We hold the allocation lock. */ +template <bool __threads, int __inst> +void* +__default_alloc_template<__threads, __inst>::_S_refill(size_t __n) +{ + int __nobjs = 20; + char* __chunk = _S_chunk_alloc(__n, __nobjs); + _Obj* __VOLATILE* __my_free_list; + _Obj* __result; + _Obj* __current_obj; + _Obj* __next_obj; + int __i; + + if (1 == __nobjs) return(__chunk); + __my_free_list = _S_free_list + _S_freelist_index(__n); + + /* Build free list in chunk */ + __result = (_Obj*)__chunk; + *__my_free_list = __next_obj = (_Obj*)(__chunk + __n); + for (__i = 1; ; __i++) { + __current_obj = __next_obj; + __next_obj = (_Obj*)((char*)__next_obj + __n); + if (__nobjs - 1 == __i) { + __current_obj -> _M_free_list_link = 0; + break; + } else { + __current_obj -> _M_free_list_link = __next_obj; + } + } + return(__result); +} + +template <bool threads, int inst> +void* +__default_alloc_template<threads, inst>::reallocate(void* __p, + size_t __old_sz, + size_t __new_sz) +{ + void* __result; + size_t __copy_sz; + + if (__old_sz > (size_t) _MAX_BYTES && __new_sz > (size_t) _MAX_BYTES) { + return(realloc(__p, __new_sz)); + } + if (_S_round_up(__old_sz) == _S_round_up(__new_sz)) return(__p); + __result = allocate(__new_sz); + __copy_sz = __new_sz > __old_sz? __old_sz : __new_sz; + memcpy(__result, __p, __copy_sz); + deallocate(__p, __old_sz); + return(__result); +} + +#ifdef __STL_PTHREADS + template <bool __threads, int __inst> + pthread_mutex_t + __default_alloc_template<__threads, __inst>::_S_node_allocator_lock + = PTHREAD_MUTEX_INITIALIZER; +#endif + +#ifdef __STL_SOLTHREADS + template <bool __threads, int __inst> + mutex_t + __default_alloc_template<__threads, __inst>::_S_node_allocator_lock + = DEFAULTMUTEX; +#endif + +#ifdef __STL_WIN32THREADS + template <bool __threads, int __inst> + CRITICAL_SECTION + __default_alloc_template<__threads, __inst>:: + _S_node_allocator_lock; + + template <bool __threads, int __inst> + bool + __default_alloc_template<__threads, __inst>:: + _S_node_allocator_lock_initialized + = false; +#endif + +#ifdef __STL_SGI_THREADS +__STL_END_NAMESPACE +#include <mutex.h> +#include <time.h> /* XXX should use <ctime> */ +__STL_BEGIN_NAMESPACE +// Somewhat generic lock implementations. We need only test-and-set +// and some way to sleep. These should work with both SGI pthreads +// and sproc threads. They may be useful on other systems. +template <bool __threads, int __inst> +volatile unsigned long +__default_alloc_template<__threads, __inst>::_S_node_allocator_lock = 0; + +#if __mips < 3 || !(defined (_ABIN32) || defined(_ABI64)) || defined(__GNUC__) +# define __test_and_set(l,v) test_and_set(l,v) +#endif + +template <bool __threads, int __inst> +void +__default_alloc_template<__threads, __inst>:: + _S_lock(volatile unsigned long* __lock) +{ + const unsigned __low_spin_max = 30; // spins if we suspect uniprocessor + const unsigned __high_spin_max = 1000; // spins for multiprocessor + static unsigned __spin_max = __low_spin_max; + unsigned __my_spin_max; + static unsigned __last_spins = 0; + unsigned __my_last_spins; + unsigned __junk; +# define __ALLOC_PAUSE \ + __junk *= __junk; __junk *= __junk; __junk *= __junk; __junk *= __junk + int __i; + + if (!__test_and_set((unsigned long*)__lock, 1)) { + return; + } + __my_spin_max = __spin_max; + __my_last_spins = __last_spins; + for (__i = 0; __i < __my_spin_max; __i++) { + if (__i < __my_last_spins/2 || *__lock) { + __ALLOC_PAUSE; + continue; + } + if (!__test_and_set((unsigned long*)__lock, 1)) { + // got it! + // Spinning worked. Thus we're probably not being scheduled + // against the other process with which we were contending. + // Thus it makes sense to spin longer the next time. + __last_spins = __i; + __spin_max = __high_spin_max; + return; + } + } + // We are probably being scheduled against the other process. Sleep. + __spin_max = __low_spin_max; + for (__i = 0 ;; ++__i) { + struct timespec __ts; + int __log_nsec = __i + 6; + + if (!__test_and_set((unsigned long *)__lock, 1)) { + return; + } + if (__log_nsec > 27) __log_nsec = 27; + /* Max sleep is 2**27nsec ~ 60msec */ + __ts.tv_sec = 0; + __ts.tv_nsec = 1 << __log_nsec; + nanosleep(&__ts, 0); + } +} + +template <bool __threads, int __inst> +inline void +__default_alloc_template<__threads, __inst>::_S_unlock( + volatile unsigned long* __lock) +{ +# if defined(__GNUC__) && __mips >= 3 + asm("sync"); + *__lock = 0; +# elif __mips >= 3 && (defined (_ABIN32) || defined(_ABI64)) + __lock_release(__lock); +# else + *__lock = 0; + // This is not sufficient on many multiprocessors, since + // writes to protected variables and the lock may be reordered. +# endif +} +#endif + +template <bool __threads, int __inst> +char* __default_alloc_template<__threads, __inst>::_S_start_free = 0; + +template <bool __threads, int __inst> +char* __default_alloc_template<__threads, __inst>::_S_end_free = 0; + +template <bool __threads, int __inst> +size_t __default_alloc_template<__threads, __inst>::_S_heap_size = 0; + +template <bool __threads, int __inst> +typename __default_alloc_template<__threads, __inst>::_Obj* __VOLATILE +__default_alloc_template<__threads, __inst> ::_S_free_list[ + _NFREELISTS +] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; +// The 16 zeros are necessary to make version 4.1 of the SunPro +// compiler happy. Otherwise it appears to allocate too little +// space for the array. + +# ifdef __STL_WIN32THREADS + // Create one to get critical section initialized. + // We do this onece per file, but only the first constructor + // does anything. + static alloc __node_allocator_dummy_instance; +# endif + +#endif /* ! __USE_MALLOC */ + +// This implements allocators as specified in the C++ standard. +// +// Note that standard-conforming allocators use many language features +// that are not yet widely implemented. In particular, they rely on +// member templates, partial specialization, partial ordering of function +// templates, the typename keyword, and the use of the template keyword +// to refer to a template member of a dependent type. + +#ifdef __STL_USE_STD_ALLOCATORS + +template <class _Tp> +class allocator { + typedef alloc _Alloc; // The underlying allocator. +public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef _Tp* pointer; + typedef const _Tp* const_pointer; + typedef _Tp& reference; + typedef const _Tp& const_reference; + typedef _Tp value_type; + + template <class _Tp1> struct rebind { + typedef allocator<_Tp1> other; + }; + + allocator() __STL_NOTHROW {} + allocator(const allocator&) __STL_NOTHROW {} + template <class _Tp1> allocator(const allocator<_Tp1>&) __STL_NOTHROW {} + ~allocator() __STL_NOTHROW {} + + pointer address(reference __x) const { return &__x; } + const_pointer address(const_reference __x) const { return &__x; } + + // __n is permitted to be 0. The C++ standard says nothing about what + // the return value is when __n == 0. + _Tp* allocate(size_type __n, const void* = 0) { + return __n != 0 ? static_cast<_Tp*>(_Alloc::allocate(__n * sizeof(_Tp))) + : 0; + } + + // __p is not permitted to be a null pointer. + void deallocate(pointer __p, size_type __n) + { _Alloc::deallocate(__p, __n * sizeof(_Tp)); } + + size_type max_size() const __STL_NOTHROW + { return size_t(-1) / sizeof(_Tp); } + + void construct(pointer __p, const _Tp& __val) { new(__p) _Tp(__val); } + void destroy(pointer __p) { __p->~_Tp(); } +}; + +template<> +class allocator<void> { + typedef size_t size_type; + typedef ptrdiff_t ... [truncated message content] |
From: <rom...@us...> - 2009-01-12 22:55:23
|
Revision: 1563 http://pygccxml.svn.sourceforge.net/pygccxml/?rev=1563&view=rev Author: roman_yakovenko Date: 2009-01-12 22:02:33 +0000 (Mon, 12 Jan 2009) Log Message: ----------- changing treatment of opaque types Modified Paths: -------------- pyplusplus_dev/pyplusplus/creators_factory/bpcreator.py pyplusplus_dev/pyplusplus/decl_wrappers/class_wrapper.py Modified: pyplusplus_dev/pyplusplus/creators_factory/bpcreator.py =================================================================== --- pyplusplus_dev/pyplusplus/creators_factory/bpcreator.py 2009-01-12 21:48:25 UTC (rev 1562) +++ pyplusplus_dev/pyplusplus/creators_factory/bpcreator.py 2009-01-12 22:02:33 UTC (rev 1563) @@ -126,6 +126,10 @@ if isinstance( decl, declarations.namespace_t ): continue + + if isinstance( decl, declarations.class_types ): + if decl.opaque: + continue if not decl.exportable: #leave only decls that user wants to export and that could be exported Modified: pyplusplus_dev/pyplusplus/decl_wrappers/class_wrapper.py =================================================================== --- pyplusplus_dev/pyplusplus/decl_wrappers/class_wrapper.py 2009-01-12 21:48:25 UTC (rev 1562) +++ pyplusplus_dev/pyplusplus/decl_wrappers/class_wrapper.py 2009-01-12 22:02:33 UTC (rev 1563) @@ -137,15 +137,14 @@ def _get_opaque( self ): return self._opaque - def _set_opaque( self, value ): self._opaque = value - self.ignore = value #don't expose opaque type - opaque = property( _get_opaque, _set_opaque - , doc="If True, Py++ will treat return types and arguments T* as opaque types." \ - +"Thus it will be able to generate code, that uses " \ - +" BOOST_PYTHON_OPAQUE_SPECIALIZED_TYPE_ID macro in a right places." ) + , doc="If True, Py++ will treat return types and arguments T* as opaque types. " + +"nFor Boost.Python code generator it means that macro BOOST_PYTHON_OPAQUE_SPECIALIZED_TYPE_ID everywhere it needed. " + +"For ctypes code generator it means that the class will be introduced, but without fields. " + +"For both code generators it means: you will only be able to get and pass pointers around. " + +"Other functionality will not be available." ) @property def class_var_name(self): @@ -731,4 +730,4 @@ self._no_init = value no_init = property( _get_no_init, _set_no_init - , doc="If True, class will be registered with 'boost::python::no_init'" ) \ No newline at end of file + , doc="If True, class will be registered with 'boost::python::no_init'" ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rom...@us...> - 2009-01-12 22:27:18
|
Revision: 1562 http://pygccxml.svn.sourceforge.net/pygccxml/?rev=1562&view=rev Author: roman_yakovenko Date: 2009-01-12 21:48:25 +0000 (Mon, 12 Jan 2009) Log Message: ----------- improving ctypes code generator - adding support for opaque types Modified Paths: -------------- pyplusplus_dev/examples/gmplib_dev/dev/generate_code.py pyplusplus_dev/examples/gmplib_dev/pygmplib/__init__.py pyplusplus_dev/pyplusplus/code_creators/__init__.py pyplusplus_dev/pyplusplus/code_creators/mem_fun_introduction.py pyplusplus_dev/pyplusplus/creators_factory/ctypes_creator.py pyplusplus_dev/pyplusplus/decl_wrappers/decl_wrapper.py pyplusplus_dev/unittests/ctypes_pof_tester.py pyplusplus_dev/unittests/sconstruct Added Paths: ----------- pyplusplus_dev/unittests/data/ctypes/opaque/ pyplusplus_dev/unittests/data/ctypes/opaque/opaque.cpp pyplusplus_dev/unittests/data/ctypes/opaque/opaque.h pyplusplus_dev/unittests/data/ctypes/opaque/sconscript Modified: pyplusplus_dev/examples/gmplib_dev/dev/generate_code.py =================================================================== --- pyplusplus_dev/examples/gmplib_dev/dev/generate_code.py 2009-01-12 19:04:19 UTC (rev 1561) +++ pyplusplus_dev/examples/gmplib_dev/dev/generate_code.py 2009-01-12 21:48:25 UTC (rev 1562) @@ -26,7 +26,7 @@ f.alias = f.name[2:] #there is a bug in "include" algorithm - I need to wrote DFS -mb.class_( '_IO_marker' ).include() +mb.class_( '_IO_FILE' ).opaque = True #include should work as expected - include only exported function Modified: pyplusplus_dev/examples/gmplib_dev/pygmplib/__init__.py =================================================================== --- pyplusplus_dev/examples/gmplib_dev/pygmplib/__init__.py 2009-01-12 19:04:19 UTC (rev 1561) +++ pyplusplus_dev/examples/gmplib_dev/pygmplib/__init__.py 2009-01-12 21:48:25 UTC (rev 1562) @@ -617,19 +617,217 @@ "__gmpf_init_set_str" : "extern int __gmpf_init_set_str(mpf_ptr arg0, char const * arg1, int arg2) [free function]", } +class std: + """namespace std""" + +class __gnu_cxx: + """namespace __gnu_cxx""" + +class __cxxabiv1: + """namespace __cxxabiv1""" + class gmp_randalg_t( ctypes_utils.Enumeration ): GMP_RAND_ALG_DEFAULT = 0 GMP_RAND_ALG_LC = 0 +class (ctypes.Structure): + """class """ + + class (ctypes.Structure): + """class """ + +class _G_fpos64_t(ctypes.Structure): + """class _G_fpos64_t""" + +class _G_fpos_t(ctypes.Structure): + """class _G_fpos_t""" + class _IO_FILE(ctypes.Structure): """class _IO_FILE""" + + def __init__( self, *args, **keywd ): + raise RuntimeError( "Unable to create instance of opaque type." ) +class _IO_cookie_io_functions_t(ctypes.Structure): + """class _IO_cookie_io_functions_t""" + class _IO_marker(ctypes.Structure): """class _IO_marker""" +class __base_class_type_info_pseudo(ctypes.Structure): + """class __base_class_type_info_pseudo""" + +class __class_type_info_pseudo(ctypes.Structure): + """class __class_type_info_pseudo""" + +class __forced_unwind(ctypes.Structure): + """class __cxxabiv1::__forced_unwind""" + + +__cxxabiv1.__forced_unwind = __forced_unwind + +class __fsid_t(ctypes.Structure): + """class __fsid_t""" + class __gmp_randstate_struct(ctypes.Structure): """class __gmp_randstate_struct""" + + class (ctypes.Structure): + """class __gmp_randstate_struct""" +class __add_unsigned_less__char__greater_(ctypes.Structure): + """class __gnu_cxx::__add_unsigned< char >""" + + +__gnu_cxx.__add_unsigned_less__char__greater_ = __add_unsigned_less__char__greater_ + +class __add_unsigned_less__int__greater_(ctypes.Structure): + """class __gnu_cxx::__add_unsigned< int >""" + + +__gnu_cxx.__add_unsigned_less__int__greater_ = __add_unsigned_less__int__greater_ + +class __add_unsigned_less__long_long__greater_(ctypes.Structure): + """class __gnu_cxx::__add_unsigned< long long >""" + + +__gnu_cxx.__add_unsigned_less__long_long__greater_ = __add_unsigned_less__long_long__greater_ + +class __add_unsigned_less__long__greater_(ctypes.Structure): + """class __gnu_cxx::__add_unsigned< long >""" + + +__gnu_cxx.__add_unsigned_less__long__greater_ = __add_unsigned_less__long__greater_ + +class __add_unsigned_less__short__greater_(ctypes.Structure): + """class __gnu_cxx::__add_unsigned< short >""" + + +__gnu_cxx.__add_unsigned_less__short__greater_ = __add_unsigned_less__short__greater_ + +class __add_unsigned_less__signed_char__greater_(ctypes.Structure): + """class __gnu_cxx::__add_unsigned< signed char >""" + + +__gnu_cxx.__add_unsigned_less__signed_char__greater_ = __add_unsigned_less__signed_char__greater_ + +class __conditional_type_less__true_comma____gnu_cxx_scope___numeric_traits_integer_less__int__greater__comma____gnu_cxx_scope___numeric_traits_floating_less__int__greater___greater_(ctypes.Structure): + """class __gnu_cxx::__conditional_type< true, __gnu_cxx::__numeric_traits_integer< int >, __gnu_cxx::__numeric_traits_floating< int > >""" + + +__gnu_cxx.__conditional_type_less__true_comma____gnu_cxx_scope___numeric_traits_integer_less__int__greater__comma____gnu_cxx_scope___numeric_traits_floating_less__int__greater___greater_ = __conditional_type_less__true_comma____gnu_cxx_scope___numeric_traits_integer_less__int__greater__comma____gnu_cxx_scope___numeric_traits_floating_less__int__greater___greater_ + +class __conditional_type_less__true_comma____gnu_cxx_scope___numeric_traits_integer_less__short__greater__comma____gnu_cxx_scope___numeric_traits_floating_less__short__greater___greater_(ctypes.Structure): + """class __gnu_cxx::__conditional_type< true, __gnu_cxx::__numeric_traits_integer< short >, __gnu_cxx::__numeric_traits_floating< short > >""" + + +__gnu_cxx.__conditional_type_less__true_comma____gnu_cxx_scope___numeric_traits_integer_less__short__greater__comma____gnu_cxx_scope___numeric_traits_floating_less__short__greater___greater_ = __conditional_type_less__true_comma____gnu_cxx_scope___numeric_traits_integer_less__short__greater__comma____gnu_cxx_scope___numeric_traits_floating_less__short__greater___greater_ + +class __conditional_type_less__true_comma____gnu_cxx_scope___numeric_traits_integer_less__unsigned_long__greater__comma____gnu_cxx_scope___numeric_traits_floating_less__unsigned_long__greater___greater_(ctypes.Structure): + """class __gnu_cxx::__conditional_type< true, __gnu_cxx::__numeric_traits_integer< unsigned long >, __gnu_cxx::__numeric_traits_floating< unsigned long > >""" + + +__gnu_cxx.__conditional_type_less__true_comma____gnu_cxx_scope___numeric_traits_integer_less__unsigned_long__greater__comma____gnu_cxx_scope___numeric_traits_floating_less__unsigned_long__greater___greater_ = __conditional_type_less__true_comma____gnu_cxx_scope___numeric_traits_integer_less__unsigned_long__greater__comma____gnu_cxx_scope___numeric_traits_floating_less__unsigned_long__greater___greater_ + +class __conditional_type_less__true_comma__unsigned_long_comma__unsigned_long_long__greater_(ctypes.Structure): + """class __gnu_cxx::__conditional_type< true, unsigned long, unsigned long long >""" + + +__gnu_cxx.__conditional_type_less__true_comma__unsigned_long_comma__unsigned_long_long__greater_ = __conditional_type_less__true_comma__unsigned_long_comma__unsigned_long_long__greater_ + +class __type(ctypes.Structure): + """class __gnu_cxx::__numeric_traits_integer< int >""" + + +__gnu_cxx.__type = __type + +class __numeric_traits_less__int__greater_(ctypes.Structure): + """class __gnu_cxx::__numeric_traits< int >""" + + +__gnu_cxx.__numeric_traits_less__int__greater_ = __numeric_traits_less__int__greater_ + +class __type(ctypes.Structure): + """class __gnu_cxx::__numeric_traits_integer< short >""" + + +__gnu_cxx.__type = __type + +class __numeric_traits_less__short__greater_(ctypes.Structure): + """class __gnu_cxx::__numeric_traits< short >""" + + +__gnu_cxx.__numeric_traits_less__short__greater_ = __numeric_traits_less__short__greater_ + +class __type(ctypes.Structure): + """class __gnu_cxx::__numeric_traits_integer< unsigned long >""" + + +__gnu_cxx.__type = __type + +class __numeric_traits_less__unsigned_long__greater_(ctypes.Structure): + """class __gnu_cxx::__numeric_traits< unsigned long >""" + + +__gnu_cxx.__numeric_traits_less__unsigned_long__greater_ = __numeric_traits_less__unsigned_long__greater_ + +class __remove_unsigned_less__char__greater_(ctypes.Structure): + """class __gnu_cxx::__remove_unsigned< char >""" + + +__gnu_cxx.__remove_unsigned_less__char__greater_ = __remove_unsigned_less__char__greater_ + +class __remove_unsigned_less__unsigned_char__greater_(ctypes.Structure): + """class __gnu_cxx::__remove_unsigned< unsigned char >""" + + +__gnu_cxx.__remove_unsigned_less__unsigned_char__greater_ = __remove_unsigned_less__unsigned_char__greater_ + +class __remove_unsigned_less__unsigned_int__greater_(ctypes.Structure): + """class __gnu_cxx::__remove_unsigned< unsigned int >""" + + +__gnu_cxx.__remove_unsigned_less__unsigned_int__greater_ = __remove_unsigned_less__unsigned_int__greater_ + +class __remove_unsigned_less__unsigned_long_long__greater_(ctypes.Structure): + """class __gnu_cxx::__remove_unsigned< unsigned long long >""" + + +__gnu_cxx.__remove_unsigned_less__unsigned_long_long__greater_ = __remove_unsigned_less__unsigned_long_long__greater_ + +class __remove_unsigned_less__unsigned_long__greater_(ctypes.Structure): + """class __gnu_cxx::__remove_unsigned< unsigned long >""" + + +__gnu_cxx.__remove_unsigned_less__unsigned_long__greater_ = __remove_unsigned_less__unsigned_long__greater_ + +class __remove_unsigned_less__unsigned_short__greater_(ctypes.Structure): + """class __gnu_cxx::__remove_unsigned< unsigned short >""" + + +__gnu_cxx.__remove_unsigned_less__unsigned_short__greater_ = __remove_unsigned_less__unsigned_short__greater_ + +class new_allocator_less__char__greater_(ctypes.Structure): + """class __gnu_cxx::new_allocator< char >""" + + +__gnu_cxx.new_allocator_less__char__greater_ = new_allocator_less__char__greater_ + +class new_allocator_less__wchar_t__greater_(ctypes.Structure): + """class __gnu_cxx::new_allocator< wchar_t >""" + + +__gnu_cxx.new_allocator_less__wchar_t__greater_ = new_allocator_less__wchar_t__greater_ + +class __locale_struct(ctypes.Structure): + """class __locale_struct""" + +class __mbstate_t(ctypes.Structure): + """class __mbstate_t""" + + class (ctypes.Structure): + """class __mbstate_t""" + class __mpf_struct(ctypes.Structure): """class __mpf_struct""" @@ -639,38 +837,1494 @@ class __mpz_struct(ctypes.Structure): """class __mpz_struct""" -_IO_FILE._fields_ = [ #class _IO_FILE - ("_flags", ctypes.c_int), - ("_IO_read_ptr", ctypes.c_char_p), - ("_IO_read_end", ctypes.c_char_p), - ("_IO_read_base", ctypes.c_char_p), - ("_IO_write_base", ctypes.c_char_p), - ("_IO_write_ptr", ctypes.c_char_p), - ("_IO_write_end", ctypes.c_char_p), - ("_IO_buf_base", ctypes.c_char_p), - ("_IO_buf_end", ctypes.c_char_p), - ("_IO_save_base", ctypes.c_char_p), - ("_IO_backup_base", ctypes.c_char_p), - ("_IO_save_end", ctypes.c_char_p), - ("_markers", ctypes.POINTER( _IO_marker )), - ("_chain", ctypes.POINTER( _IO_FILE )), - ("_fileno", ctypes.c_int), - ("_flags2", ctypes.c_int), - ("_old_offset", ctypes.c_long), - ("_cur_column", ctypes.c_ushort), - ("_vtable_offset", ctypes.c_byte), - ("_shortbuf", ( ctypes.c_char * 1 )), - ("_lock", ctypes.c_void_p), - ("_offset", ctypes.c_longlong), - ("__pad1", ctypes.c_void_p), - ("__pad2", ctypes.c_void_p), - ("__pad3", ctypes.c_void_p), - ("__pad4", ctypes.c_void_p), - ("__pad5", ctypes.c_uint), - ("_mode", ctypes.c_int), - ("_unused2", ( ctypes.c_char * 40 )), +class __pthread_cleanup_class(ctypes.Structure): + """class __pthread_cleanup_class""" + +class __pthread_cleanup_frame(ctypes.Structure): + """class __pthread_cleanup_frame""" + +class __pthread_internal_slist(ctypes.Structure): + """class __pthread_internal_slist""" + +class __sched_param(ctypes.Structure): + """class __sched_param""" + +class __si_class_type_info_pseudo(ctypes.Structure): + """class __si_class_type_info_pseudo""" + +class __sigset_t(ctypes.Structure): + """class __sigset_t""" + +class __type_info_pseudo(ctypes.Structure): + """class __type_info_pseudo""" + +class __vmi_class_type_info_pseudo1(ctypes.Structure): + """class __vmi_class_type_info_pseudo1""" + +class __vmi_class_type_info_pseudo2(ctypes.Structure): + """class __vmi_class_type_info_pseudo2""" + +class _pthread_cleanup_buffer(ctypes.Structure): + """class _pthread_cleanup_buffer""" + +class cpu_set_t(ctypes.Structure): + """class cpu_set_t""" + +class itimerspec(ctypes.Structure): + """class itimerspec""" + +class lconv(ctypes.Structure): + """class lconv""" + +class pthread_attr_t(ctypes.Structure): + """class pthread_attr_t""" + +class pthread_barrier_t(ctypes.Structure): + """class pthread_barrier_t""" + +class pthread_barrierattr_t(ctypes.Structure): + """class pthread_barrierattr_t""" + +class pthread_cond_t(ctypes.Structure): + """class pthread_cond_t""" + + class (ctypes.Structure): + """class pthread_cond_t""" + +class pthread_condattr_t(ctypes.Structure): + """class pthread_condattr_t""" + +class pthread_mutex_t(ctypes.Structure): + """class pthread_mutex_t""" + + class __pthread_mutex_s(ctypes.Structure): + """class pthread_mutex_t::__pthread_mutex_s""" + + class (ctypes.Structure): + """class pthread_mutex_t::__pthread_mutex_s""" + +class pthread_mutexattr_t(ctypes.Structure): + """class pthread_mutexattr_t""" + +class pthread_rwlock_t(ctypes.Structure): + """class pthread_rwlock_t""" + + class (ctypes.Structure): + """class pthread_rwlock_t""" + +class pthread_rwlockattr_t(ctypes.Structure): + """class pthread_rwlockattr_t""" + +class sched_param(ctypes.Structure): + """class sched_param""" + +class __copy_move_less__false_comma__false_comma__std_scope_random_access_iterator_tag__greater_(ctypes.Structure): + """class std::__copy_move< false, false, std::random_access_iterator_tag >""" + + +std.__copy_move_less__false_comma__false_comma__std_scope_random_access_iterator_tag__greater_ = __copy_move_less__false_comma__false_comma__std_scope_random_access_iterator_tag__greater_ + +class __copy_move_backward_less__false_comma__false_comma__std_scope_random_access_iterator_tag__greater_(ctypes.Structure): + """class std::__copy_move_backward< false, false, std::random_access_iterator_tag >""" + + +std.__copy_move_backward_less__false_comma__false_comma__std_scope_random_access_iterator_tag__greater_ = __copy_move_backward_less__false_comma__false_comma__std_scope_random_access_iterator_tag__greater_ + +class ctype_base(ctypes.Structure): + """class std::ctype_base""" + + +std.ctype_base = ctype_base + +class __ctype_abstract_base_less__wchar_t__greater_(ctypes.Structure): + """class std::__ctype_abstract_base< wchar_t >""" + + +std.__ctype_abstract_base_less__wchar_t__greater_ = __ctype_abstract_base_less__wchar_t__greater_ + +class __equal_less__true__greater_(ctypes.Structure): + """class std::__equal< true >""" + + +std.__equal_less__true__greater_ = __equal_less__true__greater_ + +class __false_type(ctypes.Structure): + """class std::__false_type""" + + +std.__false_type = __false_type + +class __is_byte_less__char__greater_(ctypes.Structure): + """class std::__is_byte< char >""" + + +std.__is_byte_less__char__greater_ = __is_byte_less__char__greater_ + +class __is_byte_less__signed_char__greater_(ctypes.Structure): + """class std::__is_byte< signed char >""" + + +std.__is_byte_less__signed_char__greater_ = __is_byte_less__signed_char__greater_ + +class __is_byte_less__unsigned_char__greater_(ctypes.Structure): + """class std::__is_byte< unsigned char >""" + + +std.__is_byte_less__unsigned_char__greater_ = __is_byte_less__unsigned_char__greater_ + +class __is_char_less__char__greater_(ctypes.Structure): + """class std::__is_char< char >""" + + +std.__is_char_less__char__greater_ = __is_char_less__char__greater_ + +class __is_char_less__wchar_t__greater_(ctypes.Structure): + """class std::__is_char< wchar_t >""" + + +std.__is_char_less__wchar_t__greater_ = __is_char_less__wchar_t__greater_ + +class __is_floating_less__double__greater_(ctypes.Structure): + """class std::__is_floating< double >""" + + +std.__is_floating_less__double__greater_ = __is_floating_less__double__greater_ + +class __is_floating_less__float__greater_(ctypes.Structure): + """class std::__is_floating< float >""" + + +std.__is_floating_less__float__greater_ = __is_floating_less__float__greater_ + +class __is_floating_less__long_double__greater_(ctypes.Structure): + """class std::__is_floating< long double >""" + + +std.__is_floating_less__long_double__greater_ = __is_floating_less__long_double__greater_ + +class __is_integer_less__bool__greater_(ctypes.Structure): + """class std::__is_integer< bool >""" + + +std.__is_integer_less__bool__greater_ = __is_integer_less__bool__greater_ + +class __is_integer_less__char__greater_(ctypes.Structure): + """class std::__is_integer< char >""" + + +std.__is_integer_less__char__greater_ = __is_integer_less__char__greater_ + +class __is_integer_less__int__greater_(ctypes.Structure): + """class std::__is_integer< int >""" + + +std.__is_integer_less__int__greater_ = __is_integer_less__int__greater_ + +class __is_integer_less__long_long__greater_(ctypes.Structure): + """class std::__is_integer< long long >""" + + +std.__is_integer_less__long_long__greater_ = __is_integer_less__long_long__greater_ + +class __is_integer_less__long__greater_(ctypes.Structure): + """class std::__is_integer< long >""" + + +std.__is_integer_less__long__greater_ = __is_integer_less__long__greater_ + +class __is_integer_less__short__greater_(ctypes.Structure): + """class std::__is_integer< short >""" + + +std.__is_integer_less__short__greater_ = __is_integer_less__short__greater_ + +class __is_integer_less__signed_char__greater_(ctypes.Structure): + """class std::__is_integer< signed char >""" + + +std.__is_integer_less__signed_char__greater_ = __is_integer_less__signed_char__greater_ + +class __is_integer_less__unsigned_char__greater_(ctypes.Structure): + """class std::__is_integer< unsigned char >""" + + +std.__is_integer_less__unsigned_char__greater_ = __is_integer_less__unsigned_char__greater_ + +class __is_integer_less__unsigned_int__greater_(ctypes.Structure): + """class std::__is_integer< unsigned int >""" + + +std.__is_integer_less__unsigned_int__greater_ = __is_integer_less__unsigned_int__greater_ + +class __is_integer_less__unsigned_long_long__greater_(ctypes.Structure): + """class std::__is_integer< unsigned long long >""" + + +std.__is_integer_less__unsigned_long_long__greater_ = __is_integer_less__unsigned_long_long__greater_ + +class __is_integer_less__unsigned_long__greater_(ctypes.Structure): + """class std::__is_integer< unsigned long >""" + + +std.__is_integer_less__unsigned_long__greater_ = __is_integer_less__unsigned_long__greater_ + +class __is_integer_less__unsigned_short__greater_(ctypes.Structure): + """class std::__is_integer< unsigned short >""" + + +std.__is_integer_less__unsigned_short__greater_ = __is_integer_less__unsigned_short__greater_ + +class __is_integer_less__wchar_t__greater_(ctypes.Structure): + """class std::__is_integer< wchar_t >""" + + +std.__is_integer_less__wchar_t__greater_ = __is_integer_less__wchar_t__greater_ + +class __is_void_less__void__greater_(ctypes.Structure): + """class std::__is_void< void >""" + + +std.__is_void_less__void__greater_ = __is_void_less__void__greater_ + +class __iter_swap_less__true__greater_(ctypes.Structure): + """class std::__iter_swap< true >""" + + +std.__iter_swap_less__true__greater_ = __iter_swap_less__true__greater_ + +class __lc_rai_less__std_scope_random_access_iterator_tag_comma__std_scope_random_access_iterator_tag__greater_(ctypes.Structure): + """class std::__lc_rai< std::random_access_iterator_tag, std::random_access_iterator_tag >""" + + +std.__lc_rai_less__std_scope_random_access_iterator_tag_comma__std_scope_random_access_iterator_tag__greater_ = __lc_rai_less__std_scope_random_access_iterator_tag_comma__std_scope_random_access_iterator_tag__greater_ + +class __lexicographical_compare_less__true__greater_(ctypes.Structure): + """class std::__lexicographical_compare< true >""" + + +std.__lexicographical_compare_less__true__greater_ = __lexicographical_compare_less__true__greater_ + +class __num_base(ctypes.Structure): + """class std::__num_base""" + + +std.__num_base = __num_base + +class __true_type(ctypes.Structure): + """class std::__true_type""" + + +std.__true_type = __true_type + +class __truth_type_less__true__greater_(ctypes.Structure): + """class std::__truth_type< true >""" + + +std.__truth_type_less__true__greater_ = __truth_type_less__true__greater_ + +class allocator_less__char__greater_(ctypes.Structure): + """class std::allocator< char >""" + + class rebind_less__char__greater_(ctypes.Structure): + """class std::allocator< char >::rebind< char >""" + +std.allocator_less__char__greater_ = allocator_less__char__greater_ + +class allocator_less__void__greater_(ctypes.Structure): + """class std::allocator< void >""" + + +std.allocator_less__void__greater_ = allocator_less__void__greater_ + +class allocator_less__wchar_t__greater_(ctypes.Structure): + """class std::allocator< wchar_t >""" + + class rebind_less__char__greater_(ctypes.Structure): + """class std::allocator< wchar_t >::rebind< char >""" + + class rebind_less__wchar_t__greater_(ctypes.Structure): + """class std::allocator< wchar_t >::rebind< wchar_t >""" + +std.allocator_less__wchar_t__greater_ = allocator_less__wchar_t__greater_ + +class exception(ctypes.Structure): + """class std::exception""" + + +std.exception = exception + +class bad_alloc(ctypes.Structure): + """class std::bad_alloc""" + + +std.bad_alloc = bad_alloc + +class bad_exception(ctypes.Structure): + """class std::bad_exception""" + + +std.bad_exception = bad_exception + +class ios_base(ctypes.Structure): + """class std::ios_base""" + + class Init(ctypes.Structure): + """class std::ios_base::Init""" + + class _Callback_list(ctypes.Structure): + """class std::ios_base::_Callback_list""" + + class _Words(ctypes.Structure): + """class std::ios_base::_Words""" + + class failure(ctypes.Structure): + """class std::ios_base::failure""" + +std.ios_base = ios_base + +class basic_ios_less__char_comma__std_scope_char_traits_less__char__greater___greater_(ctypes.Structure): + """class std::basic_ios< char, std::char_traits< char > >""" + + +std.basic_ios_less__char_comma__std_scope_char_traits_less__char__greater___greater_ = basic_ios_less__char_comma__std_scope_char_traits_less__char__greater___greater_ + +class basic_ios_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater___greater_(ctypes.Structure): + """class std::basic_ios< wchar_t, std::char_traits< wchar_t > >""" + + +std.basic_ios_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater___greater_ = basic_ios_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater___greater_ + +class basic_istream_less__char_comma__std_scope_char_traits_less__char__greater___greater_(ctypes.Structure): + """class std::basic_istream< char, std::char_traits< char > >""" + + class sentry(ctypes.Structure): + """class std::basic_istream< char, std::char_traits< char > >::sentry""" + +std.basic_istream_less__char_comma__std_scope_char_traits_less__char__greater___greater_ = basic_istream_less__char_comma__std_scope_char_traits_less__char__greater___greater_ + +class basic_ostream_less__char_comma__std_scope_char_traits_less__char__greater___greater_(ctypes.Structure): + """class std::basic_ostream< char, std::char_traits< char > >""" + + class sentry(ctypes.Structure): + """class std::basic_ostream< char, std::char_traits< char > >::sentry""" + +std.basic_ostream_less__char_comma__std_scope_char_traits_less__char__greater___greater_ = basic_ostream_less__char_comma__std_scope_char_traits_less__char__greater___greater_ + +class iostream(ctypes.Structure): + """class std::basic_iostream< char, std::char_traits< char > >""" + + +std.iostream = iostream + +class basic_istream_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater___greater_(ctypes.Structure): + """class std::basic_istream< wchar_t, std::char_traits< wchar_t > >""" + + class sentry(ctypes.Structure): + """class std::basic_istream< wchar_t, std::char_traits< wchar_t > >::sentry""" + +std.basic_istream_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater___greater_ = basic_istream_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater___greater_ + +class basic_ostream_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater___greater_(ctypes.Structure): + """class std::basic_ostream< wchar_t, std::char_traits< wchar_t > >""" + + class sentry(ctypes.Structure): + """class std::basic_ostream< wchar_t, std::char_traits< wchar_t > >::sentry""" + +std.basic_ostream_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater___greater_ = basic_ostream_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater___greater_ + +class wiostream(ctypes.Structure): + """class std::basic_iostream< wchar_t, std::char_traits< wchar_t > >""" + + +std.wiostream = wiostream + +class basic_streambuf_less__char_comma__std_scope_char_traits_less__char__greater___greater_(ctypes.Structure): + """class std::basic_streambuf< char, std::char_traits< char > >""" + + +std.basic_streambuf_less__char_comma__std_scope_char_traits_less__char__greater___greater_ = basic_streambuf_less__char_comma__std_scope_char_traits_less__char__greater___greater_ + +class basic_streambuf_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater___greater_(ctypes.Structure): + """class std::basic_streambuf< wchar_t, std::char_traits< wchar_t > >""" + + +std.basic_streambuf_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater___greater_ = basic_streambuf_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater___greater_ + +class string(ctypes.Structure): + """class std::string""" + + class _Alloc_hider(ctypes.Structure): + """class std::string::_Alloc_hider""" + + class _Rep_base(ctypes.Structure): + """class std::string::_Rep_base""" + + class _Rep(ctypes.Structure): + """class std::string::_Rep""" + +std.string = string + +class wstring(ctypes.Structure): + """class std::wstring""" + + class _Alloc_hider(ctypes.Structure): + """class std::wstring::_Alloc_hider""" + + class _Rep_base(ctypes.Structure): + """class std::wstring::_Rep_base""" + + class _Rep(ctypes.Structure): + """class std::wstring::_Rep""" + +std.wstring = wstring + +class input_iterator_tag(ctypes.Structure): + """class std::input_iterator_tag""" + + +std.input_iterator_tag = input_iterator_tag + +class forward_iterator_tag(ctypes.Structure): + """class std::forward_iterator_tag""" + + +std.forward_iterator_tag = forward_iterator_tag + +class bidirectional_iterator_tag(ctypes.Structure): + """class std::bidirectional_iterator_tag""" + + +std.bidirectional_iterator_tag = bidirectional_iterator_tag + +class traits_type(ctypes.Structure): + """class std::char_traits< char >""" + + +std.traits_type = traits_type + +class traits_type(ctypes.Structure): + """class std::char_traits< wchar_t >""" + + +std.traits_type = traits_type + +class collate_less__char__greater_(ctypes.Structure): + """class std::collate< char >""" + + +std.collate_less__char__greater_ = collate_less__char__greater_ + +class collate_less__wchar_t__greater_(ctypes.Structure): + """class std::collate< wchar_t >""" + + +std.collate_less__wchar_t__greater_ = collate_less__wchar_t__greater_ + +class collate_byname_less__char__greater_(ctypes.Structure): + """class std::collate_byname< char >""" + + +std.collate_byname_less__char__greater_ = collate_byname_less__char__greater_ + +class collate_byname_less__wchar_t__greater_(ctypes.Structure): + """class std::collate_byname< wchar_t >""" + + +std.collate_byname_less__wchar_t__greater_ = collate_byname_less__wchar_t__greater_ + +class __ctype_type(ctypes.Structure): + """class std::ctype< char >""" + + +std.__ctype_type = __ctype_type + +class __ctype_type(ctypes.Structure): + """class std::ctype< wchar_t >""" + + +std.__ctype_type = __ctype_type + +class ctype_byname_less__char__greater_(ctypes.Structure): + """class std::ctype_byname< char >""" + + +std.ctype_byname_less__char__greater_ = ctype_byname_less__char__greater_ + +class ctype_byname_less__wchar_t__greater_(ctypes.Structure): + """class std::ctype_byname< wchar_t >""" + + +std.ctype_byname_less__wchar_t__greater_ = ctype_byname_less__wchar_t__greater_ + +class iterator_less__std_scope_output_iterator_tag_comma__void_comma__void_comma__void_comma__void__greater_(ctypes.Structure): + """class std::iterator< std::output_iterator_tag, void, void, void, void >""" + + +std.iterator_less__std_scope_output_iterator_tag_comma__void_comma__void_comma__void_comma__void__greater_ = iterator_less__std_scope_output_iterator_tag_comma__void_comma__void_comma__void_comma__void__greater_ + +class locale(ctypes.Structure): + """class std::locale""" + + class _Impl(ctypes.Structure): + """class std::locale::_Impl""" + + class facet(ctypes.Structure): + """class std::locale::facet""" + + class id(ctypes.Structure): + """class std::locale::id""" + +std.locale = locale + +class nothrow_t(ctypes.Structure): + """class std::nothrow_t""" + + +std.nothrow_t = nothrow_t + +class __num_get_type(ctypes.Structure): + """class std::num_get< char, std::istreambuf_iterator< char, std::char_traits< char > > >""" + + +std.__num_get_type = __num_get_type + +class __num_get_type(ctypes.Structure): + """class std::num_get< wchar_t, std::istreambuf_iterator< wchar_t, std::char_traits< wchar_t > > >""" + + +std.__num_get_type = __num_get_type + +class __num_put_type(ctypes.Structure): + """class std::num_put< char, std::ostreambuf_iterator< char, std::char_traits< char > > >""" + + +std.__num_put_type = __num_put_type + +class __num_put_type(ctypes.Structure): + """class std::num_put< wchar_t, std::ostreambuf_iterator< wchar_t, std::char_traits< wchar_t > > >""" + + +std.__num_put_type = __num_put_type + +class numpunct_less__char__greater_(ctypes.Structure): + """class std::numpunct< char >""" + + +std.numpunct_less__char__greater_ = numpunct_less__char__greater_ + +class numpunct_less__wchar_t__greater_(ctypes.Structure): + """class std::numpunct< wchar_t >""" + + +std.numpunct_less__wchar_t__greater_ = numpunct_less__wchar_t__greater_ + +class numpunct_byname_less__char__greater_(ctypes.Structure): + """class std::numpunct_byname< char >""" + + +std.numpunct_byname_less__char__greater_ = numpunct_byname_less__char__greater_ + +class numpunct_byname_less__wchar_t__greater_(ctypes.Structure): + """class std::numpunct_byname< wchar_t >""" + + +std.numpunct_byname_less__wchar_t__greater_ = numpunct_byname_less__wchar_t__greater_ + +class output_iterator_tag(ctypes.Structure): + """class std::output_iterator_tag""" + + +std.output_iterator_tag = output_iterator_tag + +class random_access_iterator_tag(ctypes.Structure): + """class std::random_access_iterator_tag""" + + +std.random_access_iterator_tag = random_access_iterator_tag + +class timespec(ctypes.Structure): + """class timespec""" + +class tm(ctypes.Structure): + """class tm""" + +class basic_istringstream_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater__comma__std_scope_allocator_less__wchar_t__greater___greater_(ctypes.Structure): + """class declaration std::basic_istringstream< wchar_t, std::char_traits< wchar_t >, std::allocator< wchar_t > >""" + _fields_ = [] +std.basic_istringstream_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater__comma__std_scope_allocator_less__wchar_t__greater___greater_ = basic_istringstream_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater__comma__std_scope_allocator_less__wchar_t__greater___greater_ + +class basic_ifstream_less__char_comma__std_scope_char_traits_less__char__greater___greater_(ctypes.Structure): + """class declaration std::basic_ifstream< char, std::char_traits< char > >""" + _fields_ = [] +std.basic_ifstream_less__char_comma__std_scope_char_traits_less__char__greater___greater_ = basic_ifstream_less__char_comma__std_scope_char_traits_less__char__greater___greater_ + +class money_base(ctypes.Structure): + """class declaration std::money_base""" + _fields_ = [] +std.money_base = money_base + +class time_base(ctypes.Structure): + """class declaration std::time_base""" + _fields_ = [] +std.time_base = time_base + +class basic_istringstream_less__char_comma__std_scope_char_traits_less__char__greater__comma__std_scope_allocator_less__char__greater___greater_(ctypes.Structure): + """class declaration std::basic_istringstream< char, std::char_traits< char >, std::allocator< char > >""" + _fields_ = [] +std.basic_istringstream_less__char_comma__std_scope_char_traits_less__char__greater__comma__std_scope_allocator_less__char__greater___greater_ = basic_istringstream_less__char_comma__std_scope_char_traits_less__char__greater__comma__std_scope_allocator_less__char__greater___greater_ + +class basic_stringbuf_less__char_comma__std_scope_char_traits_less__char__greater__comma__std_scope_allocator_less__char__greater___greater_(ctypes.Structure): + """class declaration std::basic_stringbuf< char, std::char_traits< char >, std::allocator< char > >""" + _fields_ = [] +std.basic_stringbuf_less__char_comma__std_scope_char_traits_less__char__greater__comma__std_scope_allocator_less__char__greater___greater_ = basic_stringbuf_less__char_comma__std_scope_char_traits_less__char__greater__comma__std_scope_allocator_less__char__greater___greater_ + +class basic_ostringstream_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater__comma__std_scope_allocator_less__wchar_t__greater___greater_(ctypes.Structure): + """class declaration std::basic_ostringstream< wchar_t, std::char_traits< wchar_t >, std::allocator< wchar_t > >""" + _fields_ = [] +std.basic_ostringstream_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater__comma__std_scope_allocator_less__wchar_t__greater___greater_ = basic_ostringstream_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater__comma__std_scope_allocator_less__wchar_t__greater___greater_ + +class messages_base(ctypes.Structure): + """class declaration std::messages_base""" + _fields_ = [] +std.messages_base = messages_base + +class basic_stringstream_less__char_comma__std_scope_char_traits_less__char__greater__comma__std_scope_allocator_less__char__greater___greater_(ctypes.Structure): + """class declaration std::basic_stringstream< char, std::char_traits< char >, std::allocator< char > >""" + _fields_ = [] +std.basic_stringstream_less__char_comma__std_scope_char_traits_less__char__greater__comma__std_scope_allocator_less__char__greater___greater_ = basic_stringstream_less__char_comma__std_scope_char_traits_less__char__greater__comma__std_scope_allocator_less__char__greater___greater_ + +class __numpunct_cache_less__wchar_t__greater_(ctypes.Structure): + """class declaration std::__numpunct_cache< wchar_t >""" + _fields_ = [] +std.__numpunct_cache_less__wchar_t__greater_ = __numpunct_cache_less__wchar_t__greater_ + +class __numpunct_cache_less__char__greater_(ctypes.Structure): + """class declaration std::__numpunct_cache< char >""" + _fields_ = [] +std.__numpunct_cache_less__char__greater_ = __numpunct_cache_less__char__greater_ + +class basic_stringbuf_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater__comma__std_scope_allocator_less__wchar_t__greater___greater_(ctypes.Structure): + """class declaration std::basic_stringbuf< wchar_t, std::char_traits< wchar_t >, std::allocator< wchar_t > >""" + _fields_ = [] +std.basic_stringbuf_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater__comma__std_scope_allocator_less__wchar_t__greater___greater_ = basic_stringbuf_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater__comma__std_scope_allocator_less__wchar_t__greater___greater_ + +class basic_ofstream_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater___greater_(ctypes.Structure): + """class declaration std::basic_ofstream< wchar_t, std::char_traits< wchar_t > >""" + _fields_ = [] +std.basic_ofstream_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater___greater_ = basic_ofstream_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater___greater_ + +class basic_ofstream_less__char_comma__std_scope_char_traits_less__char__greater___greater_(ctypes.Structure): + """class declaration std::basic_ofstream< char, std::char_traits< char > >""" + _fields_ = [] +std.basic_ofstream_less__char_comma__std_scope_char_traits_less__char__greater___greater_ = basic_ofstream_less__char_comma__std_scope_char_traits_less__char__greater___greater_ + +class basic_stringstream_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater__comma__std_scope_allocator_less__wchar_t__greater___greater_(ctypes.Structure): + """class declaration std::basic_stringstream< wchar_t, std::char_traits< wchar_t >, std::allocator< wchar_t > >""" + _fields_ = [] +std.basic_stringstream_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater__comma__std_scope_allocator_less__wchar_t__greater___greater_ = basic_stringstream_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater__comma__std_scope_allocator_less__wchar_t__greater___greater_ + +class basic_ostringstream_less__char_comma__std_scope_char_traits_less__char__greater__comma__std_scope_allocator_less__char__greater___greater_(ctypes.Structure): + """class declaration std::basic_ostringstream< char, std::char_traits< char >, std::allocator< char > >""" + _fields_ = [] +std.basic_ostringstream_less__char_comma__std_scope_char_traits_less__char__greater__comma__std_scope_allocator_less__char__greater___greater_ = basic_ostringstream_less__char_comma__std_scope_char_traits_less__char__greater__comma__std_scope_allocator_less__char__greater___greater_ + +class basic_fstream_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater___greater_(ctypes.Structure): + """class declaration std::basic_fstream< wchar_t, std::char_traits< wchar_t > >""" + _fields_ = [] +std.basic_fstream_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater___greater_ = basic_fstream_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater___greater_ + +class basic_fstream_less__char_comma__std_scope_char_traits_less__char__greater___greater_(ctypes.Structure): + """class declaration std::basic_fstream< char, std::char_traits< char > >""" + _fields_ = [] +std.basic_fstream_less__char_comma__std_scope_char_traits_less__char__greater___greater_ = basic_fstream_less__char_comma__std_scope_char_traits_less__char__greater___greater_ + +class istreambuf_iterator_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater___greater_(ctypes.Structure): + """class declaration std::istreambuf_iterator< wchar_t, std::char_traits< wchar_t > >""" + _fields_ = [] +std.istreambuf_iterator_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater___greater_ = istreambuf_iterator_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater___greater_ + +class istreambuf_iterator_less__char_comma__std_scope_char_traits_less__char__greater___greater_(ctypes.Structure): + """class declaration std::istreambuf_iterator< char, std::char_traits< char > >""" + _fields_ = [] +std.istreambuf_iterator_less__char_comma__std_scope_char_traits_less__char__greater___greater_ = istreambuf_iterator_less__char_comma__std_scope_char_traits_less__char__greater___greater_ + +class basic_ifstream_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater___greater_(ctypes.Structure): + """class declaration std::basic_ifstream< wchar_t, std::char_traits< wchar_t > >""" + _fields_ = [] +std.basic_ifstream_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater___greater_ = basic_ifstream_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater___greater_ + +class basic_filebuf_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater___greater_(ctypes.Structure): + """class declaration std::basic_filebuf< wchar_t, std::char_traits< wchar_t > >""" + _fields_ = [] +std.basic_filebuf_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater___greater_ = basic_filebuf_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater___greater_ + +class basic_filebuf_less__char_comma__std_scope_char_traits_less__char__greater___greater_(ctypes.Structure): + """class declaration std::basic_filebuf< char, std::char_traits< char > >""" + _fields_ = [] +std.basic_filebuf_less__char_comma__std_scope_char_traits_less__char__greater___greater_ = basic_filebuf_less__char_comma__std_scope_char_traits_less__char__greater___greater_ + +class reverse_iterator_less____gnu_cxx_scope___normal_iterator_less__const_wchar_t_ptr__comma__std_scope_basic_string_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater__comma__std_scope_allocator_less__wchar_t__greater___greater___greater___greater_(ctypes.Structure): + """class declaration std::reverse_iterator< __gnu_cxx::__normal_iterator< const wchar_t*, std::basic_string< wchar_t, std::char_traits< wchar_t >, std::allocator< wchar_t > > > >""" + _fields_ = [] +std.reverse_iterator_less____gnu_cxx_scope___normal_iterator_less__const_wchar_t_ptr__comma__std_scope_basic_string_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater__comma__std_scope_allocator_less__wchar_t__greater___greater___greater___greater_ = reverse_iterator_less____gnu_cxx_scope___normal_iterator_less__const_wchar_t_ptr__comma__std_scope_basic_string_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater__comma__std_scope_allocator_less__wchar_t__greater___greater___greater___greater_ + +class reverse_iterator_less____gnu_cxx_scope___normal_iterator_less__wchar_t_ptr__comma__std_scope_basic_string_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater__comma__std_scope_allocator_less__wchar_t__greater___greater___greater___greater_(ctypes.Structure): + """class declaration std::reverse_iterator< __gnu_cxx::__normal_iterator< wchar_t*, std::basic_string< wchar_t, std::char_traits< wchar_t >, std::allocator< wchar_t > > > >""" + _fields_ = [] +std.reverse_iterator_less____gnu_cxx_scope___normal_iterator_less__wchar_t_ptr__comma__std_scope_basic_string_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater__comma__std_scope_allocator_less__wchar_t__greater___greater___greater___greater_ = reverse_iterator_less____gnu_cxx_scope___normal_iterator_less__wchar_t_ptr__comma__std_scope_basic_string_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater__comma__std_scope_allocator_less__wchar_t__greater___greater___greater___greater_ + +class reverse_iterator_less____gnu_cxx_scope___normal_iterator_less__const_char_ptr__comma__std_scope_basic_string_less__char_comma__std_scope_char_traits_less__char__greater__comma__std_scope_allocator_less__char__greater___greater___greater___greater_(ctypes.Structure): + """class declaration std::reverse_iterator< __gnu_cxx::__normal_iterator< const char*, std::basic_string< char, std::char_traits< char >, std::allocator< char > > > >""" + _fields_ = [] +std.reverse_iterator_less____gnu_cxx_scope___normal_iterator_less__const_char_ptr__comma__std_scope_basic_string_less__char_comma__std_scope_char_traits_less__char__greater__comma__std_scope_allocator_less__char__greater___greater___greater___greater_ = reverse_iterator_less____gnu_cxx_scope___normal_iterator_less__const_char_ptr__comma__std_scope_basic_string_less__char_comma__std_scope_char_traits_less__char__greater__comma__std_scope_allocator_less__char__greater___greater___greater___greater_ + +class reverse_iterator_less____gnu_cxx_scope___normal_iterator_less__char_ptr__comma__std_scope_basic_string_less__char_comma__std_scope_char_traits_less__char__greater__comma__std_scope_allocator_less__char__greater___greater___greater___greater_(ctypes.Structure): + """class declaration std::reverse_iterator< __gnu_cxx::__normal_iterator< char*, std::basic_string< char, std::char_traits< char >, std::allocator< char > > > >""" + _fields_ = [] +std.reverse_iterator_less____gnu_cxx_scope___normal_iterator_less__char_ptr__comma__std_scope_basic_string_less__char_comma__std_scope_char_traits_less__char__greater__comma__std_scope_allocator_less__char__greater___greater___greater___greater_ = reverse_iterator_less____gnu_cxx_scope___normal_iterator_less__char_ptr__comma__std_scope_basic_string_less__char_comma__std_scope_char_traits_less__char__greater__comma__std_scope_allocator_less__char__greater___greater___greater___greater_ + +class fpos_less____mbstate_t__greater_(ctypes.Structure): + """class declaration std::fpos< __mbstate_t >""" + _fields_ = [] +std.fpos_less____mbstate_t__greater_ = fpos_less____mbstate_t__greater_ + +class codecvt_base(ctypes.Structure): + """class declaration std::codecvt_base""" + _fields_ = [] +std.codecvt_base = codecvt_base + +class codecvt_less__wchar_t_comma__char_comma____mbstate_t__greater_(ctypes.Structure): + """class declaration std::codecvt< wchar_t, char, __mbstate_t >""" + _fields_ = [] +std.codecvt_less__wchar_t_comma__char_comma____mbstate_t__greater_ = codecvt_less__wchar_t_comma__char_comma____mbstate_t__greater_ + +class codecvt_less__char_comma__char_comma____mbstate_t__greater_(ctypes.Structure): + """class declaration std::codecvt< char, char, __mbstate_t >""" + _fields_ = [] +std.codecvt_less__char_comma__char_comma____mbstate_t__greater_ = codecvt_less__char_comma__char_comma____mbstate_t__greater_ + +class __iter_swap_less___obrace__obrace_std_scope___are_same_less_typename_std_scope_iterator_traits_less__Iter_greater__scope_value_type_comma_typename_std_scope_iterator_traits_less__ForwardIterator2_greater__scope_value_type_greater__scope___value__ref__ref__std_scope___are_same_less_typename_std_scope_iterator_traits_less__Iter_greater__scope_value_type_ref__comma_typename_std_scope_iterator_traits_less__Iter_greater__scope_reference_greater__scope___value_cbrace___ref__ref__std_scope___are_same_less_typename_std_scope_iterator_traits_less__ForwardIterator2_greater__scope_value_type_ref__comma_typename_std_scope_iterator_traits_less__ForwardIterator2_greater__scope_reference_greater__scope___value_cbrace___greater_(ctypes.Structure): + """class declaration std::__iter_swap< ((std::__are_same<typename std::iterator_traits<_Iter>::value_type,typename std::iterator_traits<_ForwardIterator2>::value_type>::__value && std::__are_same<typename std::iterator_traits<_Iter>::value_type&,typename std::iterator_traits<_Iter>::reference>::__value) && std::__are_same<typename std::iterator_traits<_ForwardIterator2>::value_type&,typename std::iterator_traits<_ForwardIterator2>::reference>::__value) >""" + _fields_ = [] +std.__iter_swap_less___obrace__obrace_std_scope___are_same_less_typename_std_scope_iterator_traits_less__Iter_greater__scope_value_type_comma_typename_std_scope_iterator_traits_less__ForwardIterator2_greater__scope_value_type_greater__scope___value__ref__ref__std_scope___are_same_less_typename_std_scope_iterator_traits_less__Iter_greater__scope_value_type_ref__comma_typename_std_scope_iterator_traits_less__Iter_greater__scope_reference_greater__scope___value_cbrace___ref__ref__std_scope___are_same_less_typename_std_scope_iterator_traits_less__ForwardIterator2_greater__scope_value_type_ref__comma_typename_std_scope_iterator_traits_less__ForwardIterator2_greater__scope_reference_greater__scope___value_cbrace___greater_ = __iter_swap_less___obrace__obrace_std_scope___are_same_less_typename_std_scope_iterator_traits_less__Iter_greater__scope_value_type_comma_typename_std_scope_iterator_traits_less__ForwardIterator2_greater__scope_value_type_greater__scope___value__ref__ref__std_scope___are_same_less_typename_std_scope_iterator_traits_less__Iter_greater__scope_value_type_ref__comma_typename_std_scope_iterator_traits_less__Iter_greater__scope_reference_greater__scope___value_cbrace___ref__ref__std_scope___are_same_less_typename_std_scope_iterator_traits_less__ForwardIterator2_greater__scope_value_type_ref__comma_typename_std_scope_iterator_traits_less__ForwardIterator2_greater__scope_reference_greater__scope___value_cbrace___greater_ + +class ostreambuf_iterator_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater___greater_(ctypes.Structure): + """class declaration std::ostreambuf_iterator< wchar_t, std::char_traits< wchar_t > >""" + _fields_ = [] +std.ostreambuf_iterator_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater___greater_ = ostreambuf_iterator_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater___greater_ + +class ostreambuf_iterator_less__char_comma__std_scope_char_traits_less__char__greater___greater_(ctypes.Structure): + """class declaration std::ostreambuf_iterator< char, std::char_traits< char > >""" + _fields_ = [] +std.ostreambuf_iterator_less__char_comma__std_scope_char_traits_less__char__greater___greater_ = ostreambuf_iterator_less__char_comma__std_scope_char_traits_less__char__greater___greater_ + +class obstack(ctypes.Structure): + """class declaration obstack""" + _fields_ = [] + +class sigevent(ctypes.Structure): + """class declaration sigevent""" + _fields_ = [] + +class __numeric_traits_floating_less__short_int__greater_(ctypes.Structure): + """class declaration __gnu_cxx::__numeric_traits_floating< short int >""" + _fields_ = [] +__gnu_cxx.__numeric_traits_floating_less__short_int__greater_ = __numeric_traits_floating_less__short_int__greater_ + +class __numeric_traits_floating_less__long_unsigned_int__greater_(ctypes.Structure): + """class declaration __gnu_cxx::__numeric_traits_floating< long unsigned int >""" + _fields_ = [] +__gnu_cxx.__numeric_traits_floating_less__long_unsigned_int__greater_ = __numeric_traits_floating_less__long_unsigned_int__greater_ + +class __numeric_traits_floating_less__int__greater_(ctypes.Structure): + """class declaration __gnu_cxx::__numeric_traits_floating< int >""" + _fields_ = [] +__gnu_cxx.__numeric_traits_floating_less__int__greater_ = __numeric_traits_floating_less__int__greater_ + +class __add_unsigned_less__wchar_t__greater_(ctypes.Structure): + """class declaration __gnu_cxx::__add_unsigned< wchar_t >""" + _fields_ = [] +__gnu_cxx.__add_unsigned_less__wchar_t__greater_ = __add_unsigned_less__wchar_t__greater_ + +class __add_unsigned_less__bool__greater_(ctypes.Structure): + """class declaration __gnu_cxx::__add_unsigned< bool >""" + _fields_ = [] +__gnu_cxx.__add_unsigned_less__bool__greater_ = __add_unsigned_less__bool__greater_ + +class __enable_if_less__!_std_scope___is_char_less__CharT2_greater__scope___value_comma__int__greater_(ctypes.Structure): + """class declaration __gnu_cxx::__enable_if< ! std::__is_char<_CharT2>::__value, int >""" + _fields_ = [] +__gnu_cxx.__enable_if_less__!_std_scope___is_char_less__CharT2_greater__scope___value_comma__int__greater_ = __enable_if_less__!_std_scope___is_char_less__CharT2_greater__scope___value_comma__int__greater_ + +class __enable_if_less__!_std_scope___is_scalar_less__Tp_greater__scope___value_comma__void__greater_(ctypes.Structure): + """class declaration __gnu_cxx::__enable_if< ! std::__is_scalar<_Tp>::__value, void >""" + _fields_ = [] +__gnu_cxx.__enable_if_less__!_std_scope___is_scalar_less__Tp_greater__scope___value_comma__void__greater_ = __enable_if_less__!_std_scope___is_scalar_less__Tp_greater__scope___value_comma__void__greater_ + +class __remove_unsigned_less__wchar_t__greater_(ctypes.Structure): + """class declaration __gnu_cxx::__remove_unsigned< wchar_t >""" + _fields_ = [] +__gnu_cxx.__remove_unsigned_less__wchar_t__greater_ = __remove_unsigned_less__wchar_t__greater_ + +class __remove_unsigned_less__bool__greater_(ctypes.Structure): + """class declaration __gnu_cxx::__remove_unsigned< bool >""" + _fields_ = [] +__gnu_cxx.__remove_unsigned_less__bool__greater_ = __remove_unsigned_less__bool__greater_ + +class __normal_iterator_less__wchar_t_ptr__comma__std_scope_basic_string_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater__comma__std_scope_allocator_less__wchar_t__greater___greater___greater_(ctypes.Structure): + """class declaration __gnu_cxx::__normal_iterator< wchar_t*, std::basic_string< wchar_t, std::char_traits< wchar_t >, std::allocator< wchar_t > > >""" + _fields_ = [] +__gnu_cxx.__normal_iterator_less__wchar_t_ptr__comma__std_scope_basic_string_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater__comma__std_scope_allocator_less__wchar_t__greater___greater___greater_ = __normal_iterator_less__wchar_t_ptr__comma__std_scope_basic_string_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater__comma__std_scope_allocator_less__wchar_t__greater___greater___greater_ + +class __normal_iterator_less__const_wchar_t_ptr__comma__std_scope_basic_string_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater__comma__std_scope_allocator_less__wchar_t__greater___greater___greater_(ctypes.Structure): + """class declaration __gnu_cxx::__normal_iterator< const wchar_t*, std::basic_string< wchar_t, std::char_traits< wchar_t >, std::allocator< wchar_t > > >""" + _fields_ = [] +__gnu_cxx.__normal_iterator_less__const_wchar_t_ptr__comma__std_scope_basic_string_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater__comma__std_scope_allocator_less__wchar_t__greater___greater___greater_ = __normal_iterator_less__const_wchar_t_ptr__comma__std_scope_basic_string_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater__comma__std_scope_allocator_less__wchar_t__greater___greater___greater_ + +class __normal_iterator_less__char_ptr__comma__std_scope_basic_string_less__char_comma__std_scope_char_traits_less__char__greater__comma__std_scope_allocator_less__char__greater___greater___greater_(ctypes.Structure): + """class declaration __gnu_cxx::__normal_iterator< char*, std::basic_string< char, std::char_traits< char >, std::allocator< char > > >""" + _fields_ = [] +__gnu_cxx.__normal_iterator_less__char_ptr__comma__std_scope_basic_string_less__char_comma__std_scope_char_traits_less__char__greater__comma__std_scope_allocator_less__char__greater___greater___greater_ = __normal_iterator_less__char_ptr__comma__std_scope_basic_string_less__char_comma__std_scope_char_traits_less__char__greater__comma__std_scope_allocator_less__char__greater___greater___greater_ + +class __normal_iterator_less__const_char_ptr__comma__std_scope_basic_string_less__char_comma__std_scope_char_traits_less__char__greater__comma__std_scope_allocator_less__char__greater___greater___greater_(ctypes.Structure): + """class declaration __gnu_cxx::__normal_iterator< const char*, std::basic_string< char, std::char_traits< char >, std::allocator< char > > >""" + _fields_ = [] +__gnu_cxx.__normal_iterator_less__const_char_ptr__comma__std_scope_basic_string_less__char_comma__std_scope_char_traits_less__char__greater__comma__std_scope_allocator_less__char__greater___greater___greater_ = __normal_iterator_less__const_char_ptr__comma__std_scope_basic_string_less__char_comma__std_scope_char_traits_less__char__greater__comma__std_scope_allocator_less__char__greater___greater___greater_ + +class _IO_jump_t(ctypes.Structure): + """class declaration _IO_jump_t""" + _fields_ = [] + +class __jmp_buf_tag(ctypes.Structure): + """class declaration __jmp_buf_tag""" + _fields_ = [] + +class locale_data(ctypes.Structure): + """class declaration locale_data""" + _fields_ = [] + +class _IO_cookie_file(ctypes.Structure): + """class declaration _IO_cookie_file""" + _fields_ = [] + +class _IO_FILE_plus(ctypes.Structure): + """class declaration _IO_FILE_plus""" + _fields_ = [] + +std.collate_byname_less__wchar_t__greater_._fields_ = [ #class std::collate_byname< wchar_t > + ("__empty__", ctypes.c_char * 4) ] +std.collate_byname_less__char__greater_._fields_ = [ #class std::collate_byname< char > + ("__empty__", ctypes.c_char * 4) +] + +std.bad_exception._fields_ = [ #class std::bad_exception + ("_vtable_", ctypes.POINTER(ctypes.c_void_p)), + ("__empty__", ctypes.c_char * 4) +] + +std.wstring._fields_ = [ #class std::wstring + ("npos", ctypes.c_uint), + ("_M_dataplus", std.wstring._Alloc_hider), +] + +std.wstring._Rep_base._fields_ = [ #class std::wstring::_Rep_base + ("_M_length", ctypes.c_uint), + ("_M_capacity", ctypes.c_uint), + ("_M_refcount", ctypes.c_int), +] + +std.wstring._Rep._fields_ = [ #class std::wstring::_Rep + ("_S_max_size", ctypes.c_uint), + ("_S_terminal", ctypes.c_wchar), + ("_S_empty_rep_storage", ( ctypes.c_uint * 4 )), +] + +std.wstring._Alloc_hider._fields_ = [ #class std::wstring::_Alloc_hider + ("_M_p", ctypes.c_wchar_p), +] + +std.basic_istream_less__char_comma__std_scope_char_traits_less__char__greater___greater_._fields_ = [ #class std::basic_istream< char, std::char_traits< char > > + ("_M_gcount", ctypes.c_int), +] + +std.basic_istream_less__char_comma__std_scope_char_traits_less__char__greater___greater_.sentry._fields_ = [ #class std::basic_istream< char, std::char_traits< char > >::sentry + ("_M_ok", ctypes.c_bool), +] + +std.basic_streambuf_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater___greater_._fields_ = [ #class std::basic_streambuf< wchar_t, std::char_traits< wchar_t > > + ("_vtable_", ctypes.POINTER(ctypes.c_void_p)), + ("_M_in_beg", ctypes.c_wchar_p), + ("_M_in_cur", ctypes.c_wchar_p), + ("_M_in_end", ctypes.c_wchar_p), + ("_M_out_beg", ctypes.c_wchar_p), + ("_M_out_cur", ctypes.c_wchar_p), + ("_M_out_end", ctypes.c_wchar_p), + ("_M_buf_locale", std.locale), +] + +std.basic_streambuf_less__char_comma__std_scope_char_traits_less__char__greater___greater_._fields_ = [ #class std::basic_streambuf< char, std::char_traits< char > > + ("_vtable_", ctypes.POINTER(ctypes.c_void_p)), + ("_M_in_beg", ctypes.c_char_p), + ("_M_in_cur", ctypes.c_char_p), + ("_M_in_end", ctypes.c_char_p), + ("_M_out_beg", ctypes.c_char_p), + ("_M_out_cur", ctypes.c_char_p), + ("_M_out_end", ctypes.c_char_p), + ("_M_buf_locale", std.locale), +] + +std.input_iterator_tag._fields_ = [ #class std::input_iterator_tag + ("__empty__", ctypes.c_char * 4) +] + +std.__copy_move_less__false_comma__false_comma__std_scope_random_access_iterator_tag__greater_._fields_ = [ #class std::__copy_move< false, false, std::random_access_iterator_tag > + ("__empty__", ctypes.c_char * 4) +] + +std.__false_type._fields_ = [ #class std::__false_type + ("__empty__", ctypes.c_char * 4) +] + +std.collate_less__wchar_t__greater_._fields_ = [ #class std::collate< wchar_t > + ("_vtable_", ctypes.POINTER(ctypes.c_void_p)), + ("_M_c_locale_collate", ctypes.POINTER( __locale_struct )), + ("id", std.locale.id), +] + +std.collate_less__char__greater_._fields_ = [ #class std::collate< char > + ("_vtable_", ctypes.POINTER(ctypes.c_void_p)), + ("_M_c_locale_collate", ctypes.POINTER( __locale_struct )), + ("id", std.locale.id), +] + +std.__lexicographical_compare_less__true__greater_._fields_ = [ #class std::__lexicographical_compare< true > + ("__empty__", ctypes.c_char * 4) +] + +std.basic_ostream_less__wchar_t_comma__std_scope_char_traits_less__wchar_t__greater___greater_... [truncated message content] |
From: <rom...@us...> - 2009-01-12 19:04:25
|
Revision: 1561 http://pygccxml.svn.sourceforge.net/pygccxml/?rev=1561&view=rev Author: roman_yakovenko Date: 2009-01-12 19:04:19 +0000 (Mon, 12 Jan 2009) Log Message: ----------- ignore *.pyc files Property Changed: ---------------- developer_scripts/ Property changes on: developer_scripts ___________________________________________________________________ Added: svn:ignore + *.pyc This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rom...@us...> - 2009-01-12 15:57:27
|
Revision: 1560 http://pygccxml.svn.sourceforge.net/pygccxml/?rev=1560&view=rev Author: roman_yakovenko Date: 2009-01-12 15:57:21 +0000 (Mon, 12 Jan 2009) Log Message: ----------- updating web interface Modified Paths: -------------- ui/web/main.py ui/web/templates/generator_tmpl.html Modified: ui/web/main.py =================================================================== --- ui/web/main.py 2009-01-12 15:46:44 UTC (rev 1559) +++ ui/web/main.py 2009-01-12 15:57:21 UTC (rev 1560) @@ -13,9 +13,12 @@ class generator: def GET(self, name=None): - form = forms.generator_t(action='/generated.html') - return render.generator(form) + generator = web.template.frender('templates/generator_tmpl.html') + return generator() + #~ form = forms.generator_t(action='/generated.html') + #~ return render.generator(form) + class generated: def POST(self, r_url=None ): form = forms.generator_t( action='', code_generator=code_generator.manager_t() ) Modified: ui/web/templates/generator_tmpl.html =================================================================== --- ui/web/templates/generator_tmpl.html 2009-01-12 15:46:44 UTC (rev 1559) +++ ui/web/templates/generator_tmpl.html 2009-01-12 15:57:21 UTC (rev 1560) @@ -2,11 +2,11 @@ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> - <link rel="shortcut icon" href="/static/favicon.ico" /> - <link rel="icon" href="/static/favicon.ico" /> - <link rel="stylesheet" href="/static/tabber.css" type="text/css" media="screen"/> - <link rel="stylesheet" href="/static/generator.css" type="text/css" media="screen"/> - <script type="text/javascript" src="tabber.js"></script> + <link rel="shortcut icon" href="static/favicon.ico" /> + <link rel="icon" href="static/favicon.ico" /> + <link rel="stylesheet" href="static/tabber.css" type="text/css" media="screen"/> + <link rel="stylesheet" href="static/generator.css" type="text/css" media="screen"/> + <script type="text/javascript" src="static/tabber.js"></script> <title>pygccxml & py++ demo</title> </head> <body> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rom...@us...> - 2009-01-12 15:46:52
|
Revision: 1559 http://pygccxml.svn.sourceforge.net/pygccxml/?rev=1559&view=rev Author: roman_yakovenko Date: 2009-01-12 15:46:44 +0000 (Mon, 12 Jan 2009) Log Message: ----------- updating web interface Modified Paths: -------------- ui/web/static/generator.css ui/web/templates/generator_tmpl.html ui/web/web.zip Added Paths: ----------- ui/web/static/tabber.css ui/web/static/tabber.js Removed Paths: ------------- ui/web/templates/generated.html ui/web/templates/generator.html Modified: ui/web/static/generator.css =================================================================== --- ui/web/static/generator.css 2009-01-11 21:17:40 UTC (rev 1558) +++ ui/web/static/generator.css 2009-01-12 15:46:44 UTC (rev 1559) @@ -11,3 +11,21 @@ border: 2px solid #000000; padding: 3px 2px; } + +form{ + max-width: 19cm; +} + +textarea{ + margin-top: 3px; + margin-right: 5px; + margin-left: 5px; + margin-bottom: 3px; +} + +input{ + margin-top: 5px; + margin-right: 5px; + margin-left: 5px; + margin-bottom: 5px; +} Added: ui/web/static/tabber.css =================================================================== --- ui/web/static/tabber.css (rev 0) +++ ui/web/static/tabber.css 2009-01-12 15:46:44 UTC (rev 1559) @@ -0,0 +1,99 @@ +/* $Id: example.css,v 1.5 2006/03/27 02:44:36 pat Exp $ */ + +/*-------------------------------------------------- + REQUIRED to hide the non-active tab content. + But do not hide them in the print stylesheet! + --------------------------------------------------*/ +.tabberlive .tabbertabhide { + display:none; +} + +/*-------------------------------------------------- + .tabber = before the tabber interface is set up + .tabberlive = after the tabber interface is set up + --------------------------------------------------*/ +.tabber { +} +.tabberlive { + margin-top:1em; +} + +/*-------------------------------------------------- + ul.tabbernav = the tab navigation list + li.tabberactive = the active tab + --------------------------------------------------*/ +ul.tabbernav +{ + margin:0; + padding: 3px 0; + border-bottom: 1px solid #778; + font: bold 12px Verdana, sans-serif; +} + +ul.tabbernav li +{ + list-style: none; + margin: 0; + display: inline; +} + +ul.tabbernav li a +{ + padding: 3px 0.5em; + margin-right: 3px; + border: 1px solid #778; + border-bottom: none; + background: #DDE; + text-decoration: none; +} + +ul.tabbernav li a:link { color: #448; } +ul.tabbernav li a:visited { color: #667; } + +ul.tabbernav li a:hover +{ + color: #000; + background: #AAE; + border-color: #227; +} + +ul.tabbernav li.tabberactive a +{ + background-color: #fff; + border-bottom: 1px solid #fff; +} + +ul.tabbernav li.tabberactive a:hover +{ + color: #000; + background: white; + border-bottom: 1px solid white; +} + +/*-------------------------------------------------- + .tabbertab = the tab content + Add style only after the tabber interface is set up (.tabberlive) + --------------------------------------------------*/ +.tabberlive .tabbertab { + padding:5px; + border:1px solid #aaa; + border-top:0; + + /* If you don't want the tab size changing whenever a tab is changed + you can set a fixed height */ + + /* height:200px; */ + + /* If you set a fix height set overflow to auto and you will get a + scrollbar when necessary */ + + /* overflow:auto; */ +} + +/* If desired, hide the heading since a heading is provided by the tab */ +.tabberlive .tabbertab h2 { + display:none; +} +.tabberlive .tabbertab h3 { + display:none; +} Added: ui/web/static/tabber.js =================================================================== --- ui/web/static/tabber.js (rev 0) +++ ui/web/static/tabber.js 2009-01-12 15:46:44 UTC (rev 1559) @@ -0,0 +1,523 @@ +/*================================================== + $Id: tabber.js,v 1.9 2006/04/27 20:51:51 pat Exp $ + tabber.js by Patrick Fitzgerald pa...@ba... + + Documentation can be found at the following URL: + http://www.barelyfitz.com/projects/tabber/ + + License (http://www.opensource.org/licenses/mit-license.php) + + Copyright (c) 2006 Patrick Fitzgerald + + Permission is hereby granted, free of charge, to any person + obtaining a copy of this software and associated documentation files + (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, + publish, distribute, sublicense, and/or sell copies of the Software, + and to permit persons to whom the Software is furnished to do so, + subject to the following conditions: + + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. + ==================================================*/ + +function tabberObj(argsObj) +{ + var arg; /* name of an argument to override */ + + /* Element for the main tabber div. If you supply this in argsObj, + then the init() method will be called. + */ + this.div = null; + + /* Class of the main tabber div */ + this.classMain = "tabber"; + + /* Rename classMain to classMainLive after tabifying + (so a different style can be applied) + */ + this.classMainLive = "tabberlive"; + + /* Class of each DIV that contains a tab */ + this.classTab = "tabbertab"; + + /* Class to indicate which tab should be active on startup */ + this.classTabDefault = "tabbertabdefault"; + + /* Class for the navigation UL */ + this.classNav = "tabbernav"; + + /* When a tab is to be hidden, instead of setting display='none', we + set the class of the div to classTabHide. In your screen + stylesheet you should set classTabHide to display:none. In your + print stylesheet you should set display:block to ensure that all + the information is printed. + */ + this.classTabHide = "tabbertabhide"; + + /* Class to set the navigation LI when the tab is active, so you can + use a different style on the active tab. + */ + this.classNavActive = "tabberactive"; + + /* Elements that might contain the title for the tab, only used if a + title is not specified in the TITLE attribute of DIV classTab. + */ + this.titleElements = ['h2','h3','h4','h5','h6']; + + /* Should we strip out the HTML from the innerHTML of the title elements? + This should usually be true. + */ + this.titleElementsStripHTML = true; + + /* If the user specified the tab names using a TITLE attribute on + the DIV, then the browser will display a tooltip whenever the + mouse is over the DIV. To prevent this tooltip, we can remove the + TITLE attribute after getting the tab name. + */ + this.removeTitle = true; + + /* If you want to add an id to each link set this to true */ + this.addLinkId = false; + + /* If addIds==true, then you can set a format for the ids. + <tabberid> will be replaced with the id of the main tabber div. + <tabnumberzero> will be replaced with the tab number + (tab numbers starting at zero) + <tabnumberone> will be replaced with the tab number + (tab numbers starting at one) + <tabtitle> will be replaced by the tab title + (with all non-alphanumeric characters removed) + */ + this.linkIdFormat = '<tabberid>nav<tabnumberone>'; + + /* You can override the defaults listed above by passing in an object: + var mytab = new tabber({property:value,property:value}); + */ + for (arg in argsObj) { this[arg] = argsObj[arg]; } + + /* Create regular expressions for the class names; Note: if you + change the class names after a new object is created you must + also change these regular expressions. + */ + this.REclassMain = new RegExp('\\b' + this.classMain + '\\b', 'gi'); + this.REclassMainLive = new RegExp('\\b' + this.classMainLive + '\\b', 'gi'); + this.REclassTab = new RegExp('\\b' + this.classTab + '\\b', 'gi'); + this.REclassTabDefault = new RegExp('\\b' + this.classTabDefault + '\\b', 'gi'); + this.REclassTabHide = new RegExp('\\b' + this.classTabHide + '\\b', 'gi'); + + /* Array of objects holding info about each tab */ + this.tabs = new Array(); + + /* If the main tabber div was specified, call init() now */ + if (this.div) { + + this.init(this.div); + + /* We don't need the main div anymore, and to prevent a memory leak + in IE, we must remove the circular reference between the div + and the tabber object. */ + this.div = null; + } +} + + +/*-------------------------------------------------- + Methods for tabberObj + --------------------------------------------------*/ + + +tabberObj.prototype.init = function(e) +{ + /* Set up the tabber interface. + + e = element (the main containing div) + + Example: + init(document.getElementById('mytabberdiv')) + */ + + var + childNodes, /* child nodes of the tabber div */ + i, i2, /* loop indices */ + t, /* object to store info about a single tab */ + defaultTab=0, /* which tab to select by default */ + DOM_ul, /* tabbernav list */ + DOM_li, /* tabbernav list item */ + DOM_a, /* tabbernav link */ + aId, /* A unique id for DOM_a */ + headingElement; /* searching for text to use in the tab */ + + /* Verify that the browser supports DOM scripting */ + if (!document.getElementsByTagName) { return false; } + + /* If the main DIV has an ID then save it. */ + if (e.id) { + this.id = e.id; + } + + /* Clear the tabs array (but it should normally be empty) */ + this.tabs.length = 0; + + /* Loop through an array of all the child nodes within our tabber element. */ + childNodes = e.childNodes; + for(i=0; i < childNodes.length; i++) { + + /* Find the nodes where class="tabbertab" */ + if(childNodes[i].className && + childNodes[i].className.match(this.REclassTab)) { + + /* Create a new object to save info about this tab */ + t = new Object(); + + /* Save a pointer to the div for this tab */ + t.div = childNodes[i]; + + /* Add the new object to the array of tabs */ + this.tabs[this.tabs.length] = t; + + /* If the class name contains classTabDefault, + then select this tab by default. + */ + if (childNodes[i].className.match(this.REclassTabDefault)) { + defaultTab = this.tabs.length-1; + } + } + } + + /* Create a new UL list to hold the tab headings */ + DOM_ul = document.createElement("ul"); + DOM_ul.className = this.classNav; + + /* Loop through each tab we found */ + for (i=0; i < this.tabs.length; i++) { + + t = this.tabs[i]; + + /* Get the label to use for this tab: + From the title attribute on the DIV, + Or from one of the this.titleElements[] elements, + Or use an automatically generated number. + */ + t.headingText = t.div.title; + + /* Remove the title attribute to prevent a tooltip from appearing */ + if (this.removeTitle) { t.div.title = ''; } + + if (!t.headingText) { + + /* Title was not defined in the title of the DIV, + So try to get the title from an element within the DIV. + Go through the list of elements in this.titleElements + (typically heading elements ['h2','h3','h4']) + */ + for (i2=0; i2<this.titleElements.length; i2++) { + headingElement = t.div.getElementsByTagName(this.titleElements[i2])[0]; + if (headingElement) { + t.headingText = headingElement.innerHTML; + if (this.titleElementsStripHTML) { + t.headingText.replace(/<br>/gi," "); + t.headingText = t.headingText.replace(/<[^>]+>/g,""); + } + break; + } + } + } + + if (!t.headingText) { + /* Title was not found (or is blank) so automatically generate a + number for the tab. + */ + t.headingText = i + 1; + } + + /* Create a list element for the tab */ + DOM_li = document.createElement("li"); + + /* Save a reference to this list item so we can later change it to + the "active" class */ + t.li = DOM_li; + + /* Create a link to activate the tab */ + DOM_a = document.createElement("a"); + DOM_a.appendChild(document.createTextNode(t.headingText)); + DOM_a.href = "javascript:void(null);"; + DOM_a.title = t.headingText; + DOM_a.onclick = this.navClick; + + /* Add some properties to the link so we can identify which tab + was clicked. Later the navClick method will need this. + */ + DOM_a.tabber = this; + DOM_a.tabberIndex = i; + + /* Do we need to add an id to DOM_a? */ + if (this.addLinkId && this.linkIdFormat) { + + /* Determine the id name */ + aId = this.linkIdFormat; + aId = aId.replace(/<tabberid>/gi, this.id); + aId = aId.replace(/<tabnumberzero>/gi, i); + aId = aId.replace(/<tabnumberone>/gi, i+1); + aId = aId.replace(/<tabtitle>/gi, t.headingText.replace(/[^a-zA-Z0-9\-]/gi, '')); + + DOM_a.id = aId; + } + + /* Add the link to the list element */ + DOM_li.appendChild(DOM_a); + + /* Add the list element to the list */ + DOM_ul.appendChild(DOM_li); + } + + /* Add the UL list to the beginning of the tabber div */ + e.insertBefore(DOM_ul, e.firstChild); + + /* Make the tabber div "live" so different CSS can be applied */ + e.className = e.className.replace(this.REclassMain, this.classMainLive); + + /* Activate the default tab, and do not call the onclick handler */ + this.tabShow(defaultTab); + + /* If the user specified an onLoad function, call it now. */ + if (typeof this.onLoad == 'function') { + this.onLoad({tabber:this}); + } + + return this; +}; + + +tabberObj.prototype.navClick = function(event) +{ + /* This method should only be called by the onClick event of an <A> + element, in which case we will determine which tab was clicked by + examining a property that we previously attached to the <A> + element. + + Since this was triggered from an onClick event, the variable + "this" refers to the <A> element that triggered the onClick + event (and not to the tabberObj). + + When tabberObj was initialized, we added some extra properties + to the <A> element, for the purpose of retrieving them now. Get + the tabberObj object, plus the tab number that was clicked. + */ + + var + rVal, /* Return value from the user onclick function */ + a, /* element that triggered the onclick event */ + self, /* the tabber object */ + tabberIndex, /* index of the tab that triggered the event */ + onClickArgs; /* args to send the onclick function */ + + a = this; + if (!a.tabber) { return false; } + + self = a.tabber; + tabberIndex = a.tabberIndex; + + /* Remove focus from the link because it looks ugly. + I don't know if this is a good idea... + */ + a.blur(); + + /* If the user specified an onClick function, call it now. + If the function returns false then do not continue. + */ + if (typeof self.onClick == 'function') { + + onClickArgs = {'tabber':self, 'index':tabberIndex, 'event':event}; + + /* IE uses a different way to access the event object */ + if (!event) { onClickArgs.event = window.event; } + + rVal = self.onClick(onClickArgs); + if (rVal === false) { return false; } + } + + self.tabShow(tabberIndex); + + return false; +}; + + +tabberObj.prototype.tabHideAll = function() +{ + var i; /* counter */ + + /* Hide all tabs and make all navigation links inactive */ + for (i = 0; i < this.tabs.length; i++) { + this.tabHide(i); + } +}; + + +tabberObj.prototype.tabHide = function(tabberIndex) +{ + var div; + + if (!this.tabs[tabberIndex]) { return false; } + + /* Hide a single tab and make its navigation link inactive */ + div = this.tabs[tabberIndex].div; + + /* Hide the tab contents by adding classTabHide to the div */ + if (!div.className.match(this.REclassTabHide)) { + div.className += ' ' + this.classTabHide; + } + this.navClearActive(tabberIndex); + + return this; +}; + + +tabberObj.prototype.tabShow = function(tabberIndex) +{ + /* Show the tabberIndex tab and hide all the other tabs */ + + var div; + + if (!this.tabs[tabberIndex]) { return false; } + + /* Hide all the tabs first */ + this.tabHideAll(); + + /* Get the div that holds this tab */ + div = this.tabs[tabberIndex].div; + + /* Remove classTabHide from the div */ + div.className = div.className.replace(this.REclassTabHide, ''); + + /* Mark this tab navigation link as "active" */ + this.navSetActive(tabberIndex); + + /* If the user specified an onTabDisplay function, call it now. */ + if (typeof this.onTabDisplay == 'function') { + this.onTabDisplay({'tabber':this, 'index':tabberIndex}); + } + + return this; +}; + +tabberObj.prototype.navSetActive = function(tabberIndex) +{ + /* Note: this method does *not* enforce the rule + that only one nav item can be active at a time. + */ + + /* Set classNavActive for the navigation list item */ + this.tabs[tabberIndex].li.className = this.classNavActive; + + return this; +}; + + +tabberObj.prototype.navClearActive = function(tabberIndex) +{ + /* Note: this method does *not* enforce the rule + that one nav should always be active. + */ + + /* Remove classNavActive from the navigation list item */ + this.tabs[tabberIndex].li.className = ''; + + return this; +}; + + +/*==================================================*/ + + +function tabberAutomatic(tabberArgs) +{ + /* This function finds all DIV elements in the document where + class=tabber.classMain, then converts them to use the tabber + interface. + + tabberArgs = an object to send to "new tabber()" + */ + var + tempObj, /* Temporary tabber object */ + divs, /* Array of all divs on the page */ + i; /* Loop index */ + + if (!tabberArgs) { tabberArgs = {}; } + + /* Create a tabber object so we can get the value of classMain */ + tempObj = new tabberObj(tabberArgs); + + /* Find all DIV elements in the document that have class=tabber */ + + /* First get an array of all DIV elements and loop through them */ + divs = document.getElementsByTagName("div"); + for (i=0; i < divs.length; i++) { + + /* Is this DIV the correct class? */ + if (divs[i].className && + divs[i].className.match(tempObj.REclassMain)) { + + /* Now tabify the DIV */ + tabberArgs.div = divs[i]; + divs[i].tabber = new tabberObj(tabberArgs); + } + } + + return this; +} + + +/*==================================================*/ + + +function tabberAutomaticOnLoad(tabberArgs) +{ + /* This function adds tabberAutomatic to the window.onload event, + so it will run after the document has finished loading. + */ + var oldOnLoad; + + if (!tabberArgs) { tabberArgs = {}; } + + /* Taken from: http://simon.incutio.com/archive/2004/05/26/addLoadEvent */ + + oldOnLoad = window.onload; + if (typeof window.onload != 'function') { + window.onload = function() { + tabberAutomatic(tabberArgs); + }; + } else { + window.onload = function() { + oldOnLoad(); + tabberAutomatic(tabberArgs); + }; + } +} + + +/*==================================================*/ + + +/* Run tabberAutomaticOnload() unless the "manualStartup" option was specified */ + +if (typeof tabberOptions == 'undefined') { + + tabberAutomaticOnLoad(); + +} else { + + if (!tabberOptions['manualStartup']) { + tabberAutomaticOnLoad(tabberOptions); + } + +} Deleted: ui/web/templates/generated.html =================================================================== --- ui/web/templates/generated.html 2009-01-11 21:17:40 UTC (rev 1558) +++ ui/web/templates/generated.html 2009-01-12 15:46:44 UTC (rev 1559) @@ -1,36 +0,0 @@ -$def with (code, warnings) -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> - <link rel="shortcut icon" href="/static/favicon.ico" /> - <link rel="icon" href="/static/favicon.ico" /> - <!--link rel="stylesheet" type="text/css" charset="utf-8" media="all" href="/static/generator.css"--> - <title>pygccxml & py++ demo - generated code</title> -</head> -<body> - <h2>pygccxml & py++ demo - generated code</h2> - <span style="width:80%; float:left;"> - <label>Generated code:</label> - <br/> - <textarea name="generated_code" rows="20" readonly="true" style="width:100%;">$:code</textarea> - </span> - <a> </a> - <span style="float : left; padding-left : 10px; width : 18%;"> - <br/> - <label style="width:100%;">What is ... ?</label> - <dt> - <dd><a href="http://www.language-binding.net">py++</a></dd> - <dd><a href="http://www.language-binding.net">pygccxml</a></dd> - </dt> - <label style="width:100%;">Adsense placeholder</label> - <textarea name="adsense" rows="15" style="width:100;">jjjjjjjjjjjjjjjjjjjjjjjjjj</textarea> - </span> - <span style="width:100%;"> - <br/> - <label>Warnings:</label> - <br/> - <textarea name="warnings" rows="15" readonly="true" style="width:100%;">$:warnings</textarea> - </span> -</body> -</html> Deleted: ui/web/templates/generator.html =================================================================== --- ui/web/templates/generator.html 2009-01-11 21:17:40 UTC (rev 1558) +++ ui/web/templates/generator.html 2009-01-12 15:46:44 UTC (rev 1559) @@ -1,26 +0,0 @@ -$def with (generator_form) -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> - <link rel="shortcut icon" href="/static/favicon.ico" /> - <link rel="icon" href="/static/favicon.ico" /> - <!--link rel="stylesheet" type="text/css" charset="utf-8" media="all" href="/static/generator.css"--> - <title>pygccxml & py++ demo</title> -</head> -<body> - <h2>pygccxml & py++ demo</h2> - $:generator_form.render() - <a> </a> - <span style="float : left; padding-left : 10px; width : 18%;"> - <br/> - <label style="width:100;">What is ... ?</label> - <dt> - <dd><a href="http://www.language-binding.net">py++</a></dd> - <dd><a href="http://www.language-binding.net">pygccxml</a></dd> - </dt> - <label style="width:100;">Adsense placeholder</label> - <textarea name="adsense" rows="15" style="width:100;">jjjjjjjjjjjjjjjjjjjjjjjjjj</textarea> - </span> -</body> -</html> Modified: ui/web/templates/generator_tmpl.html =================================================================== --- ui/web/templates/generator_tmpl.html 2009-01-11 21:17:40 UTC (rev 1558) +++ ui/web/templates/generator_tmpl.html 2009-01-12 15:46:44 UTC (rev 1559) @@ -1,34 +1,79 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> - <link rel="shortcut icon" href="/static/favicon.ico" /> - <link rel="icon" href="/static/favicon.ico" /> - <title>pygccxml & py++ demo</title> -</head> -<body> - <h2>pygccxml & py++ demo</h2> - <form action="/generated.html" method="post" id="SourceCodeForm" style="width:80%; float:left;"> - <label>Source code:</label> - <br/> - <textarea name="source_code" rows="20" style="width:100%;"></textarea> - <br/> - <input type="submit" name="show_decls" value="Show declarations" /> - <a></a> - <input type="submit" name="generate_bp" value="Generate Boost.Python code" /> - <a></a> - <input type="submit" name="generate_pypp" value="Generate Py++ code" /> - </form> - <a> </a> - <span style="float : left; padding-left : 10px; width : 18%;"> - <br/> - <label style="width:100;">What is ... ?</label> - <dt> - <dd><a href="http://www.language-binding.net">py++</a></dd> - <dd><a href="http://www.language-binding.net">pygccxml</a></dd> - </dt> - <label style="width:100;">Adsense placeholder</label> - <textarea name="adsense" rows="15" style="width:100;">jjjjjjjjjjjjjjjjjjjjjjjjjj</textarea> - </span> -</body> -</html> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> + <link rel="shortcut icon" href="/static/favicon.ico" /> + <link rel="icon" href="/static/favicon.ico" /> + <link rel="stylesheet" href="/static/tabber.css" type="text/css" media="screen"/> + <link rel="stylesheet" href="/static/generator.css" type="text/css" media="screen"/> + <script type="text/javascript" src="tabber.js"></script> + <title>pygccxml & py++ demo</title> +</head> +<body> + <h2>pygccxml & py++ demo</h2> + <form action="/generated.html" method="post" id="SourceCodeForm"> + <p>In the following tabs you can configurate GCC-XML compiler. It is not a must</p> + <div class="tabber"> + <div class="tabbertab"> + <h2>Include directories</h2> + <p>List include directories( each directory on the new line ):</p> + <textarea name="COMPILER_INCLUDE_DIRECTORIES" rows="5" cols="80" style="margin-left: 5mm" ></textarea> + </div> + <div class="tabbertab"> + <h2>Preprocessor definitions</h2> + <p>Configure preprocessor ( define -D"HAS_XYZ=1" or undefine -U"_DEBUG" ):</p> + <textarea name="COMPILER_PREPROCESSOR_DEFINITIONS" rows="5" cols="80" style="margin-left: 5mm" ></textarea> + </div> + <div class="tabbertab"> + <h2>Advance</h2> + <p>Define GCC-XML command line arguments:</p> + <textarea name="COMPILER_CMD_ARGS" rows="5" cols="80" style="margin-left: 5mm"></textarea> + </div> + </div> + <p>Add some text that describes purpose of the "Text" and "File"</p> + <div class="tabber"> + <div class="tabbertab"> + <h2>pygccxml demonstration</h2> + <p></p> + <input type="radio" name="GCCXML_TAKE_CODE_FROM" value="file" checked="checked" />Header file:<br/> + <input type="file" name="GCCXML_FILE_NAME" size="90" style="margin-left: 5mm" /><br/> + <input type="radio" name="GCCXML_TAKE_CODE_FROM" value="text"/>Code:<br/> + <textarea name="GCCXML_SOURCE_CODE" rows="15" cols="80" style="margin-left: 5mm"></textarea> + <br/> + <hr /> + <input type="submit" name="VIEW_XML" value="View XML" /> + <a></a> + <input type="submit" name="VIEW_DECLS" value="View declarations tree" /> + </div> + <div class="tabbertab"> + <h2>Boost.Python code generator</h2> + <p></p> + <input type="radio" name="BP_TAKE_CODE_FROM" value="file" checked="checked" />Header file:<br/> + <input type="file" name="BP_FILE_NAME" size="90" style="margin-left: 5mm" /><br/> + <input type="radio" name="BP_TAKE_CODE_FROM" value="text"/>Code:<br/> + <textarea name="BP_SOURCE_CODE" rows="15" cols="80" style="margin-left: 5mm"></textarea> + <br/> + <hr /> + <input type="submit" name="GENERATE_BP_CODE" value="Generate code" /> + <a></a> + <input type="submit" name="GENERATE_BP_PYPP_CODE" value="Generate Py++ code" /> + </div> + <div class="tabbertab"> + <h2>ctypes code generator</h2> + <p></p> + <a>Dynamic/shared library path:</a> + <input type="file" name="CTYPES_SHLIB_FILE_NAME" size="90" style="margin-left: 5mm" /><br/> + <input type="radio" name="CTYPES_TAKE_CODE_FROM" value="file" checked="checked" />Header file:<br/> + <input type="file" name="CTYPES_FILE_NAME" size="90" style="margin-left: 5mm" /><br/> + <input type="radio" name="CTYPES_TAKE_CODE_FROM" value="text"/>Code:<br/> + <textarea name="CTYPES_SOURCE_CODE" rows="15" cols="80" style="margin-left: 5mm"></textarea> + <br/> + <hr /> + <input type="submit" name="GENERATE_CTYPES_CODE" value="Generate code" /> + <a></a> + <input type="submit" name="GENERATE_CTYPES_PYPP_CODE" value="Generate Py++ code" /> + </div> + </div> + </form> +</body> +</html> Modified: ui/web/web.zip =================================================================== (Binary files differ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rom...@us...> - 2009-01-11 21:17:48
|
Revision: 1558 http://pygccxml.svn.sourceforge.net/pygccxml/?rev=1558&view=rev Author: roman_yakovenko Date: 2009-01-11 21:17:40 +0000 (Sun, 11 Jan 2009) Log Message: ----------- gmplis almost works Modified Paths: -------------- pygccxml_dev/pygccxml/declarations/dependencies.py pyplusplus_dev/examples/gmplib_dev/dev/generate_code.py pyplusplus_dev/examples/gmplib_dev/pygmplib/__init__.py pyplusplus_dev/examples/gmplib_dev/pygmplib/ctypes_utils.py pyplusplus_dev/examples/gmplib_dev/test.py pyplusplus_dev/pyplusplus/code_repository/ctypes_utils.py pyplusplus_dev/pyplusplus/creators_factory/ctypes_creator.py pyplusplus_dev/pyplusplus/module_builder/ctypes_builder.py Modified: pygccxml_dev/pygccxml/declarations/dependencies.py =================================================================== --- pygccxml_dev/pygccxml/declarations/dependencies.py 2009-01-11 19:18:50 UTC (rev 1557) +++ pygccxml_dev/pygccxml/declarations/dependencies.py 2009-01-11 21:17:40 UTC (rev 1558) @@ -61,7 +61,7 @@ return None @staticmethod - def they_depend_on_me( decl ): + def i_depend_on_them( decl ): """returns set of declarations. every item in the returned set, depends on a declaration from the input""" import class_declaration #prevent cyclic imports @@ -76,7 +76,7 @@ return to_be_included @staticmethod - def they_depend_on_us( decls ): + def we_depend_on_them( decls ): """returns set of declarations. every item in the returned set, depends on a declaration from the input""" import class_declaration #prevent cyclic imports Modified: pyplusplus_dev/examples/gmplib_dev/dev/generate_code.py =================================================================== --- pyplusplus_dev/examples/gmplib_dev/dev/generate_code.py 2009-01-11 19:18:50 UTC (rev 1557) +++ pyplusplus_dev/examples/gmplib_dev/dev/generate_code.py 2009-01-11 21:17:40 UTC (rev 1558) @@ -24,8 +24,12 @@ #introduces define, which aliass __gmpy to gmpy for f in mb.calldefs( lambda x: x.name.startswith('__gmp') ): f.alias = f.name[2:] -#enums +#there is a bug in "include" algorithm - I need to wrote DFS +mb.class_( '_IO_marker' ).include() + +#include should work as expected - include only exported function + #~ mb.print_declarations() mb.build_code_creator( project_env.gmp.shared_library_file ) mb.write_module( os.path.join( project_env.gmp.generated_code_dir, '__init__.py' ) ) Modified: pyplusplus_dev/examples/gmplib_dev/pygmplib/__init__.py =================================================================== --- pyplusplus_dev/examples/gmplib_dev/pygmplib/__init__.py 2009-01-11 19:18:50 UTC (rev 1557) +++ pyplusplus_dev/examples/gmplib_dev/pygmplib/__init__.py 2009-01-11 21:17:40 UTC (rev 1558) @@ -617,9 +617,16 @@ "__gmpf_init_set_str" : "extern int __gmpf_init_set_str(mpf_ptr arg0, char const * arg1, int arg2) [free function]", } +class gmp_randalg_t( ctypes_utils.Enumeration ): + GMP_RAND_ALG_DEFAULT = 0 + GMP_RAND_ALG_LC = 0 + class _IO_FILE(ctypes.Structure): """class _IO_FILE""" +class _IO_marker(ctypes.Structure): + """class _IO_marker""" + class __gmp_randstate_struct(ctypes.Structure): """class __gmp_randstate_struct""" @@ -682,10 +689,16 @@ ("_mp_den", __mpz_struct), ] +_IO_marker._fields_ = [ #class _IO_marker + ("_next", ctypes.POINTER( _IO_marker )), + ("_sbuf", ctypes.POINTER( _IO_FILE )), + ("_pos", ctypes.c_int), +] + __gmp_randstate_struct._fields_ = [ #class __gmp_randstate_struct ("_mp_seed", ( __mpz_struct * 1 )), ("_mp_alg", gmp_randalg_t), - ("_mp_algdata", __gmp_randstate_struct.), + ("_mp_algdata", ctypes.c_int), ] gmpq_add_type = ctypes.CFUNCTYPE( None, ctypes.POINTER( __mpq_struct ), ctypes.POINTER( __mpq_struct ), ctypes.POINTER( __mpq_struct ) ) Modified: pyplusplus_dev/examples/gmplib_dev/pygmplib/ctypes_utils.py =================================================================== --- pyplusplus_dev/examples/gmplib_dev/pygmplib/ctypes_utils.py 2009-01-11 19:18:50 UTC (rev 1557) +++ pyplusplus_dev/examples/gmplib_dev/pygmplib/ctypes_utils.py 2009-01-11 21:17:40 UTC (rev 1558) @@ -129,3 +129,7 @@ def multi_method( self, restype=None ): return multi_method_registry_t( self, restype ) + +#take a look on http://code.activestate.com/recipes/413486/ +Enumeration = ctypes.c_int + Modified: pyplusplus_dev/examples/gmplib_dev/test.py =================================================================== --- pyplusplus_dev/examples/gmplib_dev/test.py 2009-01-11 19:18:50 UTC (rev 1557) +++ pyplusplus_dev/examples/gmplib_dev/test.py 2009-01-11 21:17:40 UTC (rev 1558) @@ -1,4 +1,15 @@ +import ctypes import pygmplib as gmp -mpz = gmp.__mpz_struct() +integ1 = ctypes.pointer( gmp.__mpz_struct() ) +integ2 = ctypes.pointer( gmp.__mpz_struct() ) +gmp.gmpz_init_set_ui( integ1, ctypes.c_ulong( 1900 ) ) +print 'integ1 : ', gmp.gmpz_get_si( integ1 ) +gmp.gmpz_init_set_ui( integ2, ctypes.c_ulong( 77 ) ) +print 'integ2 : ', gmp.gmpz_get_si( integ2 ) + +gmp.gmpz_add( integ1, integ1, integ2 ) + +print 'integ1 : ', gmp.gmpz_get_si( integ1 ) + Modified: pyplusplus_dev/pyplusplus/code_repository/ctypes_utils.py =================================================================== --- pyplusplus_dev/pyplusplus/code_repository/ctypes_utils.py 2009-01-11 19:18:50 UTC (rev 1557) +++ pyplusplus_dev/pyplusplus/code_repository/ctypes_utils.py 2009-01-11 21:17:40 UTC (rev 1558) @@ -137,6 +137,5 @@ #take a look on http://code.activestate.com/recipes/413486/ -class Enumeration( object ): - pass +Enumeration = ctypes.c_int """ Modified: pyplusplus_dev/pyplusplus/creators_factory/ctypes_creator.py =================================================================== --- pyplusplus_dev/pyplusplus/creators_factory/ctypes_creator.py 2009-01-11 19:18:50 UTC (rev 1557) +++ pyplusplus_dev/pyplusplus/creators_factory/ctypes_creator.py 2009-01-11 21:17:40 UTC (rev 1558) @@ -29,6 +29,7 @@ self.__library_path = library_path self.__exported_symbols = exported_symbols + self.__exported_decls = set( exported_symbols.itervalues() ) self.module = code_creators.ctypes_module_t( global_ns ) self.__dependencies_manager = dependencies_manager.manager_t(self.decl_logger) @@ -68,6 +69,8 @@ def __should_generate_code( self, decl ): if decl.ignore or decl.already_exposed: return False + if isinstance( decl, declarations.calldef_t ): + return decl in self.__exported_decls return True Modified: pyplusplus_dev/pyplusplus/module_builder/ctypes_builder.py =================================================================== --- pyplusplus_dev/pyplusplus/module_builder/ctypes_builder.py 2009-01-11 19:18:50 UTC (rev 1557) +++ pyplusplus_dev/pyplusplus/module_builder/ctypes_builder.py 2009-01-11 21:17:40 UTC (rev 1558) @@ -79,33 +79,38 @@ return decls_package.matcher.get_single( decls_package.namespace_matcher_t( name='::' ) , decls ) + def __include_dependencies( self, decl): + i_depend_on_them = decls_package.dependency_info_t.i_depend_on_them + decls_traits = ( decls_package.class_traits, decls_package.class_declaration_traits, decls_package.enum_traits ) + for dependency in i_depend_on_them( decl ): + self.logger.debug( 'discovered dependency %s' % str(dependency) ) + for traits in decls_traits: + if not traits.is_my_case( dependency ): + continue + self.logger.debug( 'discovered dependency %s - included' % str(dependency) ) + dd = traits.get_declaration( dependency ) + dd.ignore = False + + def __include_parent_classes( self, decl ): + self.logger.debug( 'including decl %s' % str(decl) ) + parent = decl.parent + while True: + if isinstance( parent, decls_package.namespace_t ): + break + else: + self.logger.debug( 'including parent class %s' % str(parent) ) + parent.ignore = False + parent = parent.parent + def __include_declarations( self ): self.global_ns.exclude() #include exported declarations included_decls = set( self.__blob2decl.itervalues() ) - - they_depend_on_me = decls_package.dependency_info_t.they_depend_on_me + #include dependencies for d in included_decls: d.include() - self.logger.debug( 'including decl %s' % str(d) ) - parent = d.parent - while True: - if isinstance( parent, decls_package.namespace_t ): - break - else: - self.logger.debug( 'including parent class %s' % str(parent) ) - parent.ignore = False - parent = parent.parent - for dependency in they_depend_on_me( d ): - self.logger.debug( 'discovered dependency %s' % str(dependency) ) - #include declarations, on which exported declarations depend - #I need this for classes, referenced by function arguments - decls_traits = ( decls_package.class_traits, decls_package.class_declaration_traits, decls_package.enum_traits ) - for traits in decls_traits: - if traits.is_my_case( dependency ): - self.logger.debug( 'discovered dependency %s - included' % str(dependency) ) - traits.get_declaration( dependency ).ignore = False - + self.__include_parent_classes( d ) + self.__include_dependencies( d ) self.logger.debug( 'including decl %s - done' % str(d) ) def build_code_creator( self, library_path, doc_extractor=None ): This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |