pygccxml-commit Mailing List for C++ Python language bindings (Page 51)
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: <mb...@us...> - 2006-09-26 09:06:49
|
Revision: 590
http://svn.sourceforge.net/pygccxml/?rev=590&view=rev
Author: mbaas
Date: 2006-09-26 02:06:43 -0700 (Tue, 26 Sep 2006)
Log Message:
-----------
Take static members into account when setting up the substitution variables.
Modified Paths:
--------------
pyplusplus_dev/pyplusplus/function_transformers/substitution_manager.py
Modified: pyplusplus_dev/pyplusplus/function_transformers/substitution_manager.py
===================================================================
--- pyplusplus_dev/pyplusplus/function_transformers/substitution_manager.py 2006-09-26 08:54:57 UTC (rev 589)
+++ pyplusplus_dev/pyplusplus/function_transformers/substitution_manager.py 2006-09-26 09:06:43 UTC (rev 590)
@@ -230,11 +230,14 @@
# Check if we're dealing with a member function...
clsdecl = self._class_decl(decl)
if clsdecl!=None:
- selfname = self.wrapper_func._make_name_unique("self")
- selfarg = declarations.argument_t(selfname, declarations.dummy_type_t("%s&"%clsdecl.name))
- self.wrapper_func.arg_list.insert(0, selfarg)
- self.wrapper_func.CALL_FUNC_NAME = "%s.%s"%(selfname, self.wrapper_func.CALL_FUNC_NAME)
- self._insert_arg_idx_offset = 1
+ if decl.has_static:
+ self.wrapper_func.CALL_FUNC_NAME = "%s::%s"%(clsdecl.name, self.wrapper_func.CALL_FUNC_NAME)
+ else:
+ selfname = self.wrapper_func._make_name_unique("self")
+ selfarg = declarations.argument_t(selfname, declarations.dummy_type_t("%s&"%clsdecl.name))
+ self.wrapper_func.arg_list.insert(0, selfarg)
+ self.wrapper_func.CALL_FUNC_NAME = "%s.%s"%(selfname, self.wrapper_func.CALL_FUNC_NAME)
+ self._insert_arg_idx_offset = 1
# Argument index map
# Original argument index ---> Input arg index (indices are 0-based!)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <rom...@us...> - 2006-09-26 08:55:15
|
Revision: 589
http://svn.sourceforge.net/pygccxml/?rev=589&view=rev
Author: roman_yakovenko
Date: 2006-09-26 01:54:57 -0700 (Tue, 26 Sep 2006)
Log Message:
-----------
adding initial support for properties
Modified Paths:
--------------
pyplusplus_dev/pyplusplus/code_creators/__init__.py
pyplusplus_dev/pyplusplus/decl_wrappers/class_wrapper.py
pyplusplus_dev/pyplusplus/module_creator/creator.py
pyplusplus_dev/unittests/test_all.py
Added Paths:
-----------
pyplusplus_dev/unittests/data/properties_to_be_exported.hpp
pyplusplus_dev/unittests/properties_tester.py
Modified: pyplusplus_dev/pyplusplus/code_creators/__init__.py
===================================================================
--- pyplusplus_dev/pyplusplus/code_creators/__init__.py 2006-09-26 08:52:53 UTC (rev 588)
+++ pyplusplus_dev/pyplusplus/code_creators/__init__.py 2006-09-26 08:54:57 UTC (rev 589)
@@ -124,3 +124,5 @@
from exception_translator import exception_translator_register_t
from opaque_type_registrator import opaque_type_registrator_t
+
+from properties import property_t
Modified: pyplusplus_dev/pyplusplus/decl_wrappers/class_wrapper.py
===================================================================
--- pyplusplus_dev/pyplusplus/decl_wrappers/class_wrapper.py 2006-09-26 08:52:53 UTC (rev 588)
+++ pyplusplus_dev/pyplusplus/decl_wrappers/class_wrapper.py 2006-09-26 08:54:57 UTC (rev 589)
@@ -7,6 +7,7 @@
import os
import user_text
+import properties
import decl_wrapper
import scopedef_wrapper
from pygccxml import declarations
@@ -137,6 +138,7 @@
self._null_constructor_body = ''
self._copy_constructor_body = ''
self._exception_translation_code = None
+ self._properties = []
def _get_redefine_operators( self ):
return self._redefine_operators
@@ -310,3 +312,25 @@
if sort:
sorted_members = sort( members )
return sorted_members
+
+ @property
+ def properties( self ):
+ """list of properties"""
+ return self._properties
+
+ def add_property( self, name, fget, fset=None, doc='' ):
+ """adds new property to the class
+
+ @param name: name of the property
+ @type name: str
+
+ @param fget: reference to the class member function
+ @param fset: reference to the class member function, could be None
+ @param doc: documentation string
+ """
+ self._properties.append( properties.property_t( name, fget, fset, doc ) )
+
+ def add_static_property( self, name, fget, fset=None, doc='' ):
+ """adds new static property to the class"""
+ self._properties.append( properties.property_t( name, fget, fset, doc, True ) )
+
Modified: pyplusplus_dev/pyplusplus/module_creator/creator.py
===================================================================
--- pyplusplus_dev/pyplusplus/module_creator/creator.py 2006-09-26 08:52:53 UTC (rev 588)
+++ pyplusplus_dev/pyplusplus/module_creator/creator.py 2006-09-26 08:54:57 UTC (rev 589)
@@ -331,14 +331,14 @@
else:#class declaration:
decl = declarations.class_declaration_traits.get_declaration( naked_type )
opaque_type_registrator = None
- if not id(decl) in self.__exposed_opaque_decls.keys():
+ if id(decl) not in self.__exposed_opaque_decls.keys():
opaque_type_registrator = code_creators.opaque_type_registrator_t( decl )
self.__exposed_opaque_decls[ id(decl) ] = opaque_type_registrator
self.__extmodule.adopt_declaration_creator( opaque_type_registrator )
else:
opaque_type_registrator = self.__exposed_opaque_decls[ id(decl) ]
creator.associated_decl_creators.append(opaque_type_registrator)
-
+
def _adopt_free_operator( self, operator ):
def adopt_operator_impl( operator, found_creators ):
creator = filter( lambda creator: isinstance( creator, code_creators.class_t )
@@ -561,7 +561,7 @@
self.curr_code_creator.adopt_creator( maker )
self.register_opaque_type( maker, self.curr_decl.return_type, self.curr_decl.call_policies )
-
+
# Make sure all required headers are included...
required_headers = getattr(fwrapper, "get_required_headers", lambda : [])()
for header in required_headers:
@@ -654,7 +654,7 @@
self.__types_db.update( f )
if None is f.call_policies:
f.call_policies = self.__call_policies_resolver( f )
-
+
overloads_cls_creator = code_creators.free_fun_overloads_class_t( overloads )
self.__extmodule.adopt_declaration_creator( overloads_cls_creator )
@@ -697,11 +697,11 @@
overloads_cls_creator = code_creators.mem_fun_overloads_class_t( overloads )
self.__extmodule.adopt_declaration_creator( overloads_cls_creator )
-
+
overloads_reg = code_creators.mem_fun_overloads_t( overloads_cls_creator )
cls_creator.adopt_creator( overloads_reg )
overloads_reg.associated_decl_creators.append( overloads_cls_creator )
-
+
self.register_opaque_type( overloads_reg, f.return_type, f.call_policies )
return exposed
@@ -769,6 +769,9 @@
= code_creators.exception_translator_register_t( cls_decl, translator )
cls_cc.adopt_creator( translator_register )
+ for property_def in cls_decl.properties:
+ cls_cc.adopt_creator( code_creators.property_t(property_def) )
+
self.curr_decl = cls_decl
self.curr_code_creator = cls_parent_cc
Added: pyplusplus_dev/unittests/data/properties_to_be_exported.hpp
===================================================================
--- pyplusplus_dev/unittests/data/properties_to_be_exported.hpp (rev 0)
+++ pyplusplus_dev/unittests/data/properties_to_be_exported.hpp 2006-09-26 08:54:57 UTC (rev 589)
@@ -0,0 +1,28 @@
+// Copyright 2004 Roman Yakovenko.
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef __properties_to_be_exported_hpp__
+#define __properties_to_be_exported_hpp__
+
+namespace properties{
+
+struct properties_tester_t{
+ properties_tester_t()
+ : m_count( 0 )
+ {}
+
+ int count() const
+ { return m_count; }
+
+ void set_count( int x )
+ { m_count = x; }
+
+ int m_count;
+};
+
+}
+
+
+#endif//__properties_to_be_exported_hpp__
Added: pyplusplus_dev/unittests/properties_tester.py
===================================================================
--- pyplusplus_dev/unittests/properties_tester.py (rev 0)
+++ pyplusplus_dev/unittests/properties_tester.py 2006-09-26 08:54:57 UTC (rev 589)
@@ -0,0 +1,40 @@
+# Copyright 2004 Roman Yakovenko.
+# Distributed under the Boost Software License, Version 1.0. (See
+# accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt)
+
+import os
+import sys
+import unittest
+import fundamental_tester_base
+
+class tester_t(fundamental_tester_base.fundamental_tester_base_t):
+ EXTENSION_NAME = 'properties'
+
+ def __init__( self, *args ):
+ fundamental_tester_base.fundamental_tester_base_t.__init__(
+ self
+ , tester_t.EXTENSION_NAME
+ , *args )
+
+ def customize(self, mb ):
+ cls = mb.class_( 'properties_tester_t' )
+ count = cls.member_function( 'count' )
+ set_count = cls.member_function( 'set_count' )
+ count.exclude()
+ set_count.exclude()
+ cls.add_property( "count", count, set_count )
+
+ def run_tests(self, module):
+ pass
+
+def create_suite():
+ suite = unittest.TestSuite()
+ suite.addTest( unittest.makeSuite(tester_t))
+ return suite
+
+def run_suite():
+ unittest.TextTestRunner(verbosity=2).run( create_suite() )
+
+if __name__ == "__main__":
+ run_suite()
Modified: pyplusplus_dev/unittests/test_all.py
===================================================================
--- pyplusplus_dev/unittests/test_all.py 2006-09-26 08:52:53 UTC (rev 588)
+++ pyplusplus_dev/unittests/test_all.py 2006-09-26 08:54:57 UTC (rev 589)
@@ -62,6 +62,7 @@
import no_init_tester
import overloads_macro_tester
import split_module_tester
+import properties_tester
def create_suite(times):
testers = [
@@ -120,6 +121,7 @@
, no_init_tester
, overloads_macro_tester
, split_module_tester
+ , properties_tester
]
main_suite = unittest.TestSuite()
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <rom...@us...> - 2006-09-26 08:53:01
|
Revision: 588
http://svn.sourceforge.net/pygccxml/?rev=588&view=rev
Author: roman_yakovenko
Date: 2006-09-26 01:52:53 -0700 (Tue, 26 Sep 2006)
Log Message:
-----------
fixing bug: calculation of unique associated creators was fixed
Modified Paths:
--------------
pyplusplus_dev/unittests/data/split_module_bug_to_be_exported.hpp
pyplusplus_dev/unittests/split_module_bug_tester.py
Modified: pyplusplus_dev/unittests/data/split_module_bug_to_be_exported.hpp
===================================================================
--- pyplusplus_dev/unittests/data/split_module_bug_to_be_exported.hpp 2006-09-26 08:41:38 UTC (rev 587)
+++ pyplusplus_dev/unittests/data/split_module_bug_to_be_exported.hpp 2006-09-26 08:52:53 UTC (rev 588)
@@ -9,6 +9,7 @@
typedef struct opaque_ *opaque_pointer;
inline opaque_pointer get_opaque(){ return 0; }
+inline opaque_pointer get_opaque2(){ return 0; }
#endif//__split_module_to_be_exported_hpp__
Modified: pyplusplus_dev/unittests/split_module_bug_tester.py
===================================================================
--- pyplusplus_dev/unittests/split_module_bug_tester.py 2006-09-26 08:41:38 UTC (rev 587)
+++ pyplusplus_dev/unittests/split_module_bug_tester.py 2006-09-26 08:52:53 UTC (rev 588)
@@ -23,8 +23,9 @@
self.files = []
def customize( self, mb ):
- mb.calldefs( 'get_opaque' ).call_policies \
- = call_policies.return_value_policy( call_policies.return_opaque_pointer )
+ opaque_cp = call_policies.return_value_policy( call_policies.return_opaque_pointer )
+ mb.calldefs( 'get_opaque' ).call_policies = opaque_cp
+ mb.calldefs( 'get_opaque2' ).call_policies = opaque_cp
def generate_source_files( self, mb ):
files = mb.split_module( autoconfig.build_dir, on_unused_file_found=lambda fpath: fpath )
@@ -36,6 +37,7 @@
def run_tests(self, module):
module.get_opaque()
+ module.get_opaque2()
def create_suite():
suite = unittest.TestSuite()
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <rom...@us...> - 2006-09-26 08:41:43
|
Revision: 587
http://svn.sourceforge.net/pygccxml/?rev=587&view=rev
Author: roman_yakovenko
Date: 2006-09-26 01:41:38 -0700 (Tue, 26 Sep 2006)
Log Message:
-----------
fixing bug: calculation of unique associated creators was fixed
Modified Paths:
--------------
pyplusplus_dev/pyplusplus/file_writers/multiple_files.py
Modified: pyplusplus_dev/pyplusplus/file_writers/multiple_files.py
===================================================================
--- pyplusplus_dev/pyplusplus/file_writers/multiple_files.py 2006-09-26 08:41:35 UTC (rev 586)
+++ pyplusplus_dev/pyplusplus/file_writers/multiple_files.py 2006-09-26 08:41:38 UTC (rev 587)
@@ -61,6 +61,15 @@
@type: str
""" )
+ def get_unique_creators( self, creators ):
+ unique_creators = []
+ unique_creator_ids = set()
+ for creator in creators:
+ if not id( creator ) in unique_creator_ids:
+ unique_creator_ids.add( id( creator ) )
+ unique_creators.append( creator )
+ return unique_creators
+
def associated_decl_creators( self, creator ):
""" references to all class declaration code creators. """
if not isinstance( creator, code_creators.registration_based_t ):
@@ -70,23 +79,17 @@
internal_creators = []
if isinstance( creator, code_creators.compound_t ):
- internal_creators.extend(
+ internal_creators.extend(
filter( lambda creator: isinstance( creator, code_creators.registration_based_t )
, code_creators.make_flatten( creator.creators ) ) )
-
+
map( lambda internal_creator: associated_creators.extend( internal_creator.associated_decl_creators )
, internal_creators )
#now associated_creators contains all code creators associated with the creator
#We should leave only creators, defined in the global namespace
associated_creators = filter( lambda associated_creator: associated_creator.parent is self.extmodule
, associated_creators )
- unique_associated_creators = []
- unique_associated_creator_ids = set()
- for acreator in associated_creators:
- if not id( acreator ) in unique_associated_creator_ids:
- unique_associated_creator_ids.add( id( acreator ) )
- unique_associated_creators.append( acreator )
- return unique_associated_creators
+ return associated_creators
def create_function_code( self, function_name ):
return "void %s();" % function_name
@@ -187,6 +190,7 @@
declaration_creators = []
for rc in registration_creators:
declaration_creators.extend( self.associated_decl_creators( rc ) )
+ declaration_creators = self.get_unique_creators( declaration_creators )
creators = registration_creators + declaration_creators
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <mb...@us...> - 2006-09-26 08:41:38
|
Revision: 586
http://svn.sourceforge.net/pygccxml/?rev=586&view=rev
Author: mbaas
Date: 2006-09-26 01:41:35 -0700 (Tue, 26 Sep 2006)
Log Message:
-----------
Small bug fix. The function wasn't checking if the parent really is a class.
Modified Paths:
--------------
pyplusplus_dev/pyplusplus/code_creators/calldef_transformed.py
Modified: pyplusplus_dev/pyplusplus/code_creators/calldef_transformed.py
===================================================================
--- pyplusplus_dev/pyplusplus/code_creators/calldef_transformed.py 2006-09-25 10:19:10 UTC (rev 585)
+++ pyplusplus_dev/pyplusplus/code_creators/calldef_transformed.py 2006-09-26 08:41:35 UTC (rev 586)
@@ -6,7 +6,7 @@
import os
#import algorithm
#import code_creator
-#import class_declaration
+import class_declaration
from pygccxml import declarations
from calldef import calldef_t, calldef_wrapper_t
import pyplusplus.function_transformers as function_transformers
@@ -97,10 +97,10 @@
@rtype: str
"""
- if self.parent==None:
+ if isinstance(self.parent, class_declaration.class_wrapper_t):
+ return self.parent.full_name + '::_py_' + self.declaration.alias
+ else:
return '_py_' + self.declaration.alias
- else:
- return self.parent.full_name + '::_py_' + self.declaration.alias
def create_sig_id(self):
"""Create an ID string that identifies a signature.
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <rom...@us...> - 2006-09-25 10:19:23
|
Revision: 585
http://svn.sourceforge.net/pygccxml/?rev=585&view=rev
Author: roman_yakovenko
Date: 2006-09-25 03:19:10 -0700 (Mon, 25 Sep 2006)
Log Message:
-----------
adding unit test for opaque functionality
Added Paths:
-----------
pyplusplus_dev/unittests/data/split_module_bug_to_be_exported.hpp
pyplusplus_dev/unittests/split_module_bug_tester.py
Added: pyplusplus_dev/unittests/data/split_module_bug_to_be_exported.hpp
===================================================================
--- pyplusplus_dev/unittests/data/split_module_bug_to_be_exported.hpp (rev 0)
+++ pyplusplus_dev/unittests/data/split_module_bug_to_be_exported.hpp 2006-09-25 10:19:10 UTC (rev 585)
@@ -0,0 +1,14 @@
+// Copyright 2004 Roman Yakovenko.
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef __split_module_bug_to_be_exported_hpp__
+#define __split_module_bug_to_be_exported_hpp__
+
+typedef struct opaque_ *opaque_pointer;
+
+inline opaque_pointer get_opaque(){ return 0; }
+
+
+#endif//__split_module_to_be_exported_hpp__
Added: pyplusplus_dev/unittests/split_module_bug_tester.py
===================================================================
--- pyplusplus_dev/unittests/split_module_bug_tester.py (rev 0)
+++ pyplusplus_dev/unittests/split_module_bug_tester.py 2006-09-25 10:19:10 UTC (rev 585)
@@ -0,0 +1,49 @@
+# Copyright 2004 Roman Yakovenko.
+# Distributed under the Boost Software License, Version 1.0. (See
+# accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt)
+
+import os
+import sys
+import unittest
+import autoconfig
+import fundamental_tester_base
+
+from pyplusplus import module_builder
+from pyplusplus.module_builder import call_policies
+
+class tester_t(fundamental_tester_base.fundamental_tester_base_t):
+ EXTENSION_NAME = 'split_module_bug'
+
+ def __init__( self, *args ):
+ fundamental_tester_base.fundamental_tester_base_t.__init__(
+ self
+ , tester_t.EXTENSION_NAME
+ , *args )
+ self.files = []
+
+ def customize( self, mb ):
+ mb.calldefs( 'get_opaque' ).call_policies \
+ = call_policies.return_value_policy( call_policies.return_opaque_pointer )
+
+ def generate_source_files( self, mb ):
+ files = mb.split_module( autoconfig.build_dir, on_unused_file_found=lambda fpath: fpath )
+ self.files = filter( lambda fname: fname.endswith( 'cpp' ), files )
+ print self.files
+
+ def get_source_files( self ):
+ return self.files
+
+ def run_tests(self, module):
+ module.get_opaque()
+
+def create_suite():
+ suite = unittest.TestSuite()
+ suite.addTest( unittest.makeSuite(tester_t))
+ return suite
+
+def run_suite():
+ unittest.TextTestRunner(verbosity=2).run( create_suite() )
+
+if __name__ == "__main__":
+ run_suite()
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <rom...@us...> - 2006-09-25 10:12:32
|
Revision: 584
http://svn.sourceforge.net/pygccxml/?rev=584&view=rev
Author: roman_yakovenko
Date: 2006-09-25 03:12:18 -0700 (Mon, 25 Sep 2006)
Log Message:
-----------
creating split_module unit test
Modified Paths:
--------------
pyplusplus_dev/unittests/algorithms_tester.py
pyplusplus_dev/unittests/call_policies_tester.py
pyplusplus_dev/unittests/data/call_policies_to_be_exported.hpp
pyplusplus_dev/unittests/fundamental_tester_base.py
pyplusplus_dev/unittests/test_all.py
Added Paths:
-----------
pyplusplus_dev/unittests/data/split_module_to_be_exported.hpp
pyplusplus_dev/unittests/split_module_tester.py
Modified: pyplusplus_dev/unittests/algorithms_tester.py
===================================================================
--- pyplusplus_dev/unittests/algorithms_tester.py 2006-09-25 10:10:06 UTC (rev 583)
+++ pyplusplus_dev/unittests/algorithms_tester.py 2006-09-25 10:12:18 UTC (rev 584)
@@ -121,57 +121,6 @@
minus_minus = xxx.operator( symbol='--' )
self.failUnless( 1 == len( minus_minus.readme() ), os.linesep.join( minus_minus.readme() ) )
-class multiple_files_tester_t(unittest.TestCase):
- CLASS_DEF = \
- """
- namespace tester{
-
- struct op_struct{};
-
- op_struct* get_opaque();
-
- void check_overload( int i=0, int j=1, int k=2 );
-
-
- struct b{
- enum EColor{ red, blue };
- enum EFruit{ apple, orange };
-
- b(){}
- b( int ){}
-
- void do_nothing(){}
-
- int do_something(){ return 1; }
-
- op_struct* get_opaque();
-
- void check_overload( int i=0, int j=1, int k=2 );
-
- int m_dummy;
-
- struct b_nested{};
- };
- }
- """
- def test(self):
- mb = module_builder.module_builder_t(
- [ module_builder.create_text_fc( self.CLASS_DEF ) ]
- , gccxml_path=autoconfig.gccxml.executable )
- mb.namespace( name='::tester' ).include()
- mb.calldefs( 'check_overload' ).use_overload_macro = True
- mb.calldefs( 'get_opaque' ).call_policies \
- = module_builder.call_policies.return_value_policy( module_builder.call_policies.return_opaque_pointer )
- mb.class_( 'op_struct' ).exclude()
- b = mb.class_( 'b' )
- b.add_declaration_code( '//hello world' )
- nested = b.class_( 'b_nested' )
- nested.add_declaration_code( '//hello nested decl' )
- nested.add_registration_code( '//hello nested reg', False )
-
- mb.build_code_creator('b_multi')
- mb.split_module( autoconfig.build_dir, on_unused_file_found=lambda fpath: fpath )
-
class class_multiple_files_tester_t(unittest.TestCase):
CLASS_DEF = \
"""
@@ -193,7 +142,7 @@
void do_nothing(){}
int do_something(){ return 1; }
-
+
void check_overload( int i=0, int j=1, int k=2 );
op_struct* get_opaque();
@@ -242,8 +191,6 @@
def create_suite():
suite = unittest.TestSuite()
- multiple_files_tester_t
- suite.addTest( unittest.makeSuite(multiple_files_tester_t))
suite.addTest( unittest.makeSuite(doc_extractor_tester_t))
suite.addTest( unittest.makeSuite(class_organizer_tester_t))
suite.addTest( unittest.makeSuite(indent_tester_t))
Modified: pyplusplus_dev/unittests/call_policies_tester.py
===================================================================
--- pyplusplus_dev/unittests/call_policies_tester.py 2006-09-25 10:10:06 UTC (rev 583)
+++ pyplusplus_dev/unittests/call_policies_tester.py 2006-09-25 10:12:18 UTC (rev 584)
@@ -21,9 +21,14 @@
def customize(self, mb ):
mb.calldef( 'return_second_arg' ).call_policies = call_policies.return_arg( 2 )
mb.calldef( 'return_self' ).call_policies = call_policies.return_self()
+
+ mb.class_( 'impl_details_t' ).exclude()
mb.calldef( 'get_impl_details' ).call_policies \
= call_policies.return_value_policy( call_policies.return_opaque_pointer )
+ mb.calldef( 'get_opaque' ).call_policies \
+ = call_policies.return_value_policy( call_policies.return_opaque_pointer )
+
def run_tests(self, module):
self.failUnless( module.compare( module.my_address() ) )
@@ -40,8 +45,10 @@
cont = module.container()
self.failUnless( 1977 == cont[1977] )
- x = module.get_impl_details()
- print x
+ module.get_impl_details()
+
+ module.get_opaque()
+
def create_suite():
suite = unittest.TestSuite()
suite.addTest( unittest.makeSuite(tester_t))
Modified: pyplusplus_dev/unittests/data/call_policies_to_be_exported.hpp
===================================================================
--- pyplusplus_dev/unittests/data/call_policies_to_be_exported.hpp 2006-09-25 10:10:06 UTC (rev 583)
+++ pyplusplus_dev/unittests/data/call_policies_to_be_exported.hpp 2006-09-25 10:12:18 UTC (rev 584)
@@ -55,6 +55,10 @@
inline impl_details_t* get_impl_details(){
return (impl_details_t*)( 0x11223344 );
}
+
+ typedef struct opaque_ *opaque_pointer;
+ opaque_pointer get_opaque(){ return 0; }
+
}
}
Added: pyplusplus_dev/unittests/data/split_module_to_be_exported.hpp
===================================================================
--- pyplusplus_dev/unittests/data/split_module_to_be_exported.hpp (rev 0)
+++ pyplusplus_dev/unittests/data/split_module_to_be_exported.hpp 2006-09-25 10:12:18 UTC (rev 584)
@@ -0,0 +1,43 @@
+// Copyright 2004 Roman Yakovenko.
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef __split_module_to_be_exported_hpp__
+#define __split_module_to_be_exported_hpp__
+
+namespace split_module{
+
+struct op_struct{};
+
+inline op_struct* get_opaque(){
+ return 0;
+}
+
+inline void check_overload( int i=0, int j=1, int k=2 ){
+}
+
+
+struct item_t{
+
+ enum EColor{ red, blue };
+ enum EFruit{ apple, orange };
+
+ item_t(){}
+ item_t( int ){}
+
+ void do_nothing(){}
+ int do_something(){ return 1; }
+
+ op_struct* get_opaque(){ return 0; }
+
+ void check_overload( int i=0, int j=1, int k=2 ){}
+
+ int m_dummy;
+
+ struct nested_t{};
+};
+}
+
+
+#endif//__split_module_to_be_exported_hpp__
Modified: pyplusplus_dev/unittests/fundamental_tester_base.py
===================================================================
--- pyplusplus_dev/unittests/fundamental_tester_base.py 2006-09-25 10:10:06 UTC (rev 583)
+++ pyplusplus_dev/unittests/fundamental_tester_base.py 2006-09-25 10:12:18 UTC (rev 584)
@@ -16,21 +16,21 @@
class fundamental_tester_base_t( unittest.TestCase ):
SUFFIX_TO_BE_EXPORTED = '_to_be_exported.hpp'
-
+
def __init__(self, module_name, *args, **keywd ):
unittest.TestCase.__init__(self, *args)
self.__module_name = module_name
self.__to_be_exported_header \
= os.path.join( autoconfig.data_directory
, self.__module_name + self.SUFFIX_TO_BE_EXPORTED )
-
+
self.__generated_source_file_name = os.path.join( autoconfig.build_dir
, self.__module_name + '.cpp' )
self.__generated_scons_file_name = os.path.join( autoconfig.build_dir
, self.__module_name + '.scons' )
-
+
self.__indexing_suite_version = keywd.get( 'indexing_suite_version', 1 )
-
+
def failIfRaisesAny(self, callableObj, *args, **kwargs):
try:
callableObj(*args, **kwargs)
@@ -43,10 +43,21 @@
callableObj(*args, **kwargs)
except:
was_exception = True
- self.failUnless(was_exception, 'exception has not been raised during execution.')
+ self.failUnless(was_exception, 'exception has not been raised during execution.')
+
def customize(self, generator):
pass
-
+
+ def get_source_files( self ):
+ sources = [ self.__generated_source_file_name ]
+ to_be_exported_cpp = os.path.splitext( self.__to_be_exported_header )[0] + '.cpp'
+ if os.path.exists( to_be_exported_cpp ):
+ sources.append( to_be_exported_cpp )
+ return sources
+
+ def generate_source_files( self, mb ):
+ mb.write_module( self.__generated_source_file_name )
+
def run_tests(self, module):
raise NotImplementedError()
@@ -65,9 +76,9 @@
mb.build_code_creator( self.__module_name, doc_extractor=doc_extractor )
mb.code_creator.std_directories.extend( autoconfig.scons_config.cpppath )
mb.code_creator.user_defined_directories.append( autoconfig.data_directory )
- mb.code_creator.precompiled_header = "boost/python.hpp"
+ mb.code_creator.precompiled_header = "boost/python.hpp"
mb.code_creator.license = LICENSE
- mb.write_module( self.__generated_source_file_name )
+ self.generate_source_files( mb )
def _create_sconstruct(self, sources ):
sources_str = []
@@ -80,7 +91,7 @@
sconstruct_file = file( self.__generated_scons_file_name, 'w+b' )
sconstruct_file.write( sconstruct_script )
sconstruct_file.close()
-
+
def _create_extension(self):
cmd = autoconfig.scons.cmd_build % self.__generated_scons_file_name
output = os.popen( cmd )
@@ -116,16 +127,13 @@
pypp = None
try:
self._create_extension_source_file()
- sources = [ self.__generated_source_file_name ]
- to_be_exported_cpp = os.path.splitext( self.__to_be_exported_header )[0] + '.cpp'
- if os.path.exists( to_be_exported_cpp ):
- sources.append( to_be_exported_cpp )
+ sources = self.get_source_files()
self._create_sconstruct(sources)
- self._create_extension()
+ self._create_extension()
pypp = __import__( self.__module_name )
self.run_tests(pypp)
finally:
if sys.modules.has_key( self.__module_name ):
del sys.modules[self.__module_name]
del pypp
- #self._clean_build(self.__generated_scons_file_name)
\ No newline at end of file
+ #self._clean_build(self.__generated_scons_file_name)
Added: pyplusplus_dev/unittests/split_module_tester.py
===================================================================
--- pyplusplus_dev/unittests/split_module_tester.py (rev 0)
+++ pyplusplus_dev/unittests/split_module_tester.py 2006-09-25 10:12:18 UTC (rev 584)
@@ -0,0 +1,66 @@
+# Copyright 2004 Roman Yakovenko.
+# Distributed under the Boost Software License, Version 1.0. (See
+# accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt)
+
+import os
+import sys
+import unittest
+import autoconfig
+import fundamental_tester_base
+
+from pyplusplus import module_builder
+from pyplusplus.module_builder import call_policies
+
+class tester_t(fundamental_tester_base.fundamental_tester_base_t):
+ EXTENSION_NAME = 'split_module'
+
+ def __init__( self, *args ):
+ fundamental_tester_base.fundamental_tester_base_t.__init__(
+ self
+ , tester_t.EXTENSION_NAME
+ , *args )
+ self.files = []
+
+ def customize( self, mb ):
+ mb.global_ns.exclude()
+ sm = mb.global_ns.namespace( name='split_module' )
+ sm.include()
+ sm.class_( 'op_struct' ).exclude()
+
+ mb.calldefs( 'check_overload' ).use_overload_macro = True
+ mb.calldefs( 'get_opaque' ).call_policies \
+ = call_policies.return_value_policy( call_policies.return_opaque_pointer )
+
+ mb.class_( 'op_struct' ).exclude()
+ item = mb.class_( 'item_t' )
+ item.add_declaration_code( '//hello world' )
+ nested = item.class_( 'nested_t' )
+ nested.add_declaration_code( '//hello nested decl' )
+ nested.add_registration_code( '//hello nested reg', False )
+
+ def generate_source_files( self, mb ):
+ files = mb.split_module( autoconfig.build_dir, on_unused_file_found=lambda fpath: fpath )
+ self.files = filter( lambda fname: fname.endswith( 'cpp' ), files )
+ print self.files
+
+ def get_source_files( self ):
+ return self.files
+
+ def run_tests(self, module):
+ module.get_opaque()
+ item = module.item_t()
+ item.get_opaque()
+ module.check_overload()
+ item.check_overload()
+
+def create_suite():
+ suite = unittest.TestSuite()
+ suite.addTest( unittest.makeSuite(tester_t))
+ return suite
+
+def run_suite():
+ unittest.TextTestRunner(verbosity=2).run( create_suite() )
+
+if __name__ == "__main__":
+ run_suite()
Modified: pyplusplus_dev/unittests/test_all.py
===================================================================
--- pyplusplus_dev/unittests/test_all.py 2006-09-25 10:10:06 UTC (rev 583)
+++ pyplusplus_dev/unittests/test_all.py 2006-09-25 10:12:18 UTC (rev 584)
@@ -61,6 +61,7 @@
import cppexceptions_tester
import no_init_tester
import overloads_macro_tester
+import split_module_tester
def create_suite(times):
testers = [
@@ -118,6 +119,7 @@
, cppexceptions_tester
, no_init_tester
, overloads_macro_tester
+ , split_module_tester
]
main_suite = unittest.TestSuite()
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <rom...@us...> - 2006-09-25 10:10:13
|
Revision: 583
http://svn.sourceforge.net/pygccxml/?rev=583&view=rev
Author: roman_yakovenko
Date: 2006-09-25 03:10:06 -0700 (Mon, 25 Sep 2006)
Log Message:
-----------
fixing small bug generating of *_OVERLOADS macro
Modified Paths:
--------------
pyplusplus_dev/pyplusplus/code_creators/calldef.py
Modified: pyplusplus_dev/pyplusplus/code_creators/calldef.py
===================================================================
--- pyplusplus_dev/pyplusplus/code_creators/calldef.py 2006-09-25 08:51:35 UTC (rev 582)
+++ pyplusplus_dev/pyplusplus/code_creators/calldef.py 2006-09-25 10:10:06 UTC (rev 583)
@@ -34,7 +34,7 @@
declaration_based.declaration_based_t.__init__( self, declaration=function )
self._wrapper = wrapper
self._associated_decl_creators = []
-
+
@property
def associated_decl_creators( self ):
""" references to declaration code creators. """
@@ -1159,12 +1159,13 @@
min_ = None
max_ = 0
for f in self.functions:
- args_ = len( f.arguments )
+ f_max = len( f.arguments )
+ f_min = f_max - len( filter( lambda arg: arg.default_value, f.arguments ) )
if None is min_:
- min_ = args_
+ min_ = f_min
else:
- min_ = min( min_, args_ )
- max_tmp = max( max_, args_ )
+ min_ = min( min_, f_min )
+ max_tmp = max( max_, f_max )
if max_ < max_tmp:
max_ = max_tmp
self._max_fun = f
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <rom...@us...> - 2006-09-25 08:51:42
|
Revision: 582
http://svn.sourceforge.net/pygccxml/?rev=582&view=rev
Author: roman_yakovenko
Date: 2006-09-25 01:51:35 -0700 (Mon, 25 Sep 2006)
Log Message:
-----------
adding new test case for opaque call policies
Modified Paths:
--------------
pyplusplus_dev/unittests/call_policies_tester.py
pyplusplus_dev/unittests/data/call_policies_to_be_exported.hpp
Modified: pyplusplus_dev/unittests/call_policies_tester.py
===================================================================
--- pyplusplus_dev/unittests/call_policies_tester.py 2006-09-24 18:07:46 UTC (rev 581)
+++ pyplusplus_dev/unittests/call_policies_tester.py 2006-09-25 08:51:35 UTC (rev 582)
@@ -11,35 +11,39 @@
class tester_t(fundamental_tester_base.fundamental_tester_base_t):
EXTENSION_NAME = 'call_policies'
-
+
def __init__( self, *args ):
- fundamental_tester_base.fundamental_tester_base_t.__init__(
+ fundamental_tester_base.fundamental_tester_base_t.__init__(
self
, tester_t.EXTENSION_NAME
, *args )
-
+
def customize(self, mb ):
mb.calldef( 'return_second_arg' ).call_policies = call_policies.return_arg( 2 )
mb.calldef( 'return_self' ).call_policies = call_policies.return_self()
+ mb.calldef( 'get_impl_details' ).call_policies \
+ = call_policies.return_value_policy( call_policies.return_opaque_pointer )
- def run_tests(self, module):
+ def run_tests(self, module):
self.failUnless( module.compare( module.my_address() ) )
x = module.return_second_arg( 1, 2, 3)
self.failUnless( x == 2 )
-
+
x = module.dummy()
y = module.return_self( x, 0 )
self.failUnless( x.id() == y.id() )
y = module.copy_const_reference( x )
self.failUnless( x.id() != y.id() )
-
+
cont = module.container()
self.failUnless( 1977 == cont[1977] )
+ x = module.get_impl_details()
+ print x
def create_suite():
- suite = unittest.TestSuite()
+ suite = unittest.TestSuite()
suite.addTest( unittest.makeSuite(tester_t))
return suite
@@ -47,4 +51,4 @@
unittest.TextTestRunner(verbosity=2).run( create_suite() )
if __name__ == "__main__":
- run_suite()
\ No newline at end of file
+ run_suite()
Modified: pyplusplus_dev/unittests/data/call_policies_to_be_exported.hpp
===================================================================
--- pyplusplus_dev/unittests/data/call_policies_to_be_exported.hpp 2006-09-24 18:07:46 UTC (rev 581)
+++ pyplusplus_dev/unittests/data/call_policies_to_be_exported.hpp 2006-09-25 08:51:35 UTC (rev 582)
@@ -1,54 +1,62 @@
-// Copyright 2004 Roman Yakovenko.
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-#ifndef __call_policies_to_be_exported_hpp__
-#define __call_policies_to_be_exported_hpp__
-
-namespace call_policies{
-
-struct dummy{
- int id() { return int( this ); }
-};
-
-namespace return_arg{
-
-inline void return_second_arg( int, int x, int )
-{ ; }
-
-}
-
-namespace return_self{
-
-inline const dummy& return_self( const dummy& x , int y )
-{ return x; }
-
-}
-
-namespace return_value_policy{
-
-inline const dummy& copy_const_reference( const dummy& x)
-{ return x; }
+// Copyright 2004 Roman Yakovenko.
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+#ifndef __call_policies_to_be_exported_hpp__
+#define __call_policies_to_be_exported_hpp__
+
+namespace call_policies{
+
+struct dummy{
+ int id() { return int( this ); }
+};
+
+namespace return_arg{
+
+inline void return_second_arg( int, int x, int )
+{ ; }
+
+}
+
+namespace return_self{
+
+inline const dummy& return_self( const dummy& x , int y )
+{ return x; }
+
+}
+
+namespace return_value_policy{
+
+inline const dummy& copy_const_reference( const dummy& x)
+{ return x; }
+
struct container{
int operator[]( int i ) const { return i; }
};
-
-}
-
-namespace void_ptr{
-
-inline void* my_address(){
- return (void*)( &my_address );
-}
-
-inline bool compare( void* ptr ){
- return ptr == my_address();
-}
-
-}
-
-}
-
-#endif//__call_policies_to_be_exported_hpp__
+
+}
+
+namespace void_ptr{
+
+inline void* my_address(){
+ return (void*)( &my_address );
+}
+
+inline bool compare( void* ptr ){
+ return ptr == my_address();
+}
+
+}
+
+namespace opaque{
+ struct impl_details_t{};
+
+ inline impl_details_t* get_impl_details(){
+ return (impl_details_t*)( 0x11223344 );
+ }
+}
+
+}
+
+#endif//__call_policies_to_be_exported_hpp__
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <rom...@us...> - 2006-09-24 18:11:24
|
Revision: 581
http://svn.sourceforge.net/pygccxml/?rev=581&view=rev
Author: roman_yakovenko
Date: 2006-09-24 11:07:46 -0700 (Sun, 24 Sep 2006)
Log Message:
-----------
adding initial support for automatic registrayion
of opaque type
Modified Paths:
--------------
pyplusplus_dev/examples/pyboost_dev/dev/date_time/include/date_time.pypp.xml
pyplusplus_dev/pyplusplus/file_writers/multiple_files.py
pyplusplus_dev/unittests/operators_bug_tester.py
Modified: pyplusplus_dev/examples/pyboost_dev/dev/date_time/include/date_time.pypp.xml
===================================================================
--- pyplusplus_dev/examples/pyboost_dev/dev/date_time/include/date_time.pypp.xml 2006-09-24 07:00:50 UTC (rev 580)
+++ pyplusplus_dev/examples/pyboost_dev/dev/date_time/include/date_time.pypp.xml 2006-09-24 18:07:46 UTC (rev 581)
@@ -1,13 +1,13 @@
<?xml version="1.0"?>
<GCC_XML cvs_revision="1.113">
- <Namespace id="_1" name="::" members="_3 _4 _5 _6 _7 _8 _9 _10 _11 _12 _13 _14 _15 _16 _17 _18 _19 _20 _21 _22 _23 _24 _25 _26 _27 _28 _29 _30 _31 _32 _33 _34 _35 _36 _37 _38 _39 _40 _41 _42 _43 _44 _45 _46 _47 _48 _49 _50 _51 _52 _53 _54 _55 _56 _57 _58 _59 _60 _61 _62 _63 _64 _65 _66 _67 _68 _69 _70 _71 _72 _73 _74 _75 _76 _77 _78 _79 _80 _81 _82 _83 _84 _85 _86 _87 _88 _89 _90 _91 _92 _93 _94 _95 _96 _97 _98 _99 _100 _101 _102 _103 _104 _105 _106 _107 _108 _109 _110 _111 _112 _113 _114 _115 _116 _117 _118 _119 _120 _121 _122 _123 _124 _125 _126 _127 _128 _129 _130 _131 _132 _133 _134 _135 _136 _137 _138 _139 _140 _141 _142 _143 _144 _145 _146 _147 _148 _149 _150 _151 _152 _153 _154 _155 _156 _157 _158 _159 _160 _161 _162 _163 _164 _165 _166 _167 _168 _169 _170 _171 _172 _173 _174 _175 _176 _177 _178 _179 _180 _181 _182 _183 _184 _185 _186 _187 _188 _189 _190 _191 _192 _193 _194 _195 _196 _197 _198 _199 _200 _201 _202 _203 _204 _205 _206 _207 _208 _209 _210 _211 _212 _213 _214 _215 _216 _217 _218 _219 _220 _221 _222 _223 _224 _225 _226 _227 _228 _229 _230 _231 _232 _233 _234 _235 _236 _237 _238 _239 _240 _241 _242 _243 _244 _245 _246 _247 _248 _249 _250 _251 _252 _253 _254 _255 _256 _257 _258 _259 _260 _261 _262 _263 _264 _265 _266 _267 _268 _269 _270 _271 _272 _273 _274 _275 _276 _277 _278 _279 _280 _281 _282 _283 _284 _285 _286 _287 _288 _289 _290 _291 _292 _293 _294 _295 _296 _297 _298 _299 _300 _301 _302 _303 _304 _305 _306 _307 _308 _309 _310 _311 _312 _313 _314 _315 _316 _317 _318 _319 _320 _321 _322 _323 _324 _325 _326 _327 _328 _329 _330 _331 _332 _333 _334 _335 _336 _337 _338 _339 _340 _341 _342 _343 _344 _345 _346 _347 _348 _349 _350 _351 _352 _353 _354 _355 _356 _357 _358 _359 _360 _361 _362 _363 _364 _365 _366 _367 _368 _369 _370 _371 _372 _373 _374 _375 _376 _377 _378 _379 _380 _381 _382 _383 _384 _385 _386 _387 _388 _389 _390 _391 _392 _393 _394 _395 _396 _397 _398 _399 _400 _401 _402 _403 _404 _405 _406 _407 _408 _409 _410 _411 _412 _413 _414 _415 _416 _417 _418 _419 _420 _421 _422 _423 _424 _425 _426 _427 _428 _429 _430 _431 _432 _433 _434 _435 _436 _437 _438 _439 _440 _441 _442 _443 _444 _445 _446 _447 _448 _449 _450 _451 _452 _453 _454 _455 _456 _457 _458 _459 _460 _461 _462 _463 _464 _465 _466 _467 _468 _469 _470 _471 _472 _473 _474 _475 _476 _477 _478 _479 _480 _482 _483 _484 _485 _486 _487 _488 _489 _490 _491 _492 _493 _494 _495 _496 _497 _498 _499 _501 _502 _503 _504 _505 _506 _508 _509 _510 _511 _512 _513 _514 _515 _516 _517 _518 _519 _520 _521 _522 _523 _524 _525 _526 _527 _528 _529 _530 _531 _532 _533 _534 _535 _536 _537 _538 _539 _540 _541 _542 _543 _544 _545 _546 _547 _548 _549 _550 _551 _552 _553 _554 _555 _556 _557 _558 _559 _560 _561 _562 _563 _564 _565 _566 _567 _568 _569 _570 _571 _572 _573 _574 _575 _576 _577 _578 _579 _580 _581 _582 _583 _584 _585 _586 _587 _588 _589 _590 _591 _592 _593 _594 _595 _596 _597 _598 _599 _600 _601 _602 _603 _604 _605 _606 _607 _608 _609 _610 _611 _612 _613 _614 _615 _616 _617 _618 _619 _621 _622 _623 _624 _625 _626 _627 _628 _629 _630 _631 _632 _633 _634 _635 _636 _638 _639 _640 _641 _642 _643 _644 _645 _646 _647 _648 _649 _650 _651 _652 _653 _654 _655 _656 _657 _658 _659 _660 _661 _662 _663 _664 _665 _666 _667 _668 _669 _670 _671 _672 _673 _674 _675 _676 _677 _678 _679 _680 _681 _682 _683 _684 _685 _686 _687 _688 _689 _690 _691 _692 _693 _694 _695 _696 _697 _698 _699 _700 _701 _702 _703 _704 _705 _706 _707 _708 _709 _710 _711 _712 _713 _714 _715 _716 _717 _718 _719 _720 _721 _722 _723 _724 _725 _726 _727 _728 _729 _730 _731 _732 _733 _734 _735 _736 _737 _738 _739 _740 _741 _742 _743 _744 _745 _746 _747 _748 _749 _750 _751 _752 _753 _754 _755 _756 _757 _758 _759 _760 _761 _762 _763 _764 _766 _767 _768 _769 _770 _771 _772 _773 _774 _775 _776 _777 _778 _779 _780 _781 _782 _783 _784 _785 _786 _787 _788 _789 _790 _791 _792 _793 _794 _795 _796 _797 _798 _799 _800 _801 _802 _803 _804 _805 _806 _807 _808 _809 _810 _811 _812 _813 _814 _815 _816 _817 _819 _820 _821 _823 _824 _825 _826 _827 _828 _829 _830 _831 _832 _833 _834 _835 _836 _837 _838 _839 _840 _841 _842 _843 _844 _845 _846 _847 _848 _849 _850 _851 _852 _853 _854 _855 _856 _857 _858 _859 _860 _861 _862 _863 _864 _865 _866 _867 _868 _869 _870 _871 _872 _873 _874 _875 _876 _877 _878 _879 _880 _881 _882 _883 _884 _885 _886 _887 _888 _889 _890 _891 _892 _893 _894 _895 _896 _897 _898 _899 _900 _901 _902 _903 _904 _905 _906 _907 _908 _909 _910 _911 _912 _913 _914 _915 _916 _917 _918 _919 _920 _921 _922 _923 _924 _925 _926 _927 _928 _929 _930 _931 _932 _933 _934 _935 _936 _937 _938 _939 _940 _941 _942 _943 _944 _945 _946 _947 _948 _949 _950 _951 _952 _953 _954 _955 _956 _957 _958 _959 _960 _961 _962 _963 _964 _965 _966 _967 _968 _969 _970 _971 _972 _973 _974 _975 _976 _977 _978 _979 _980 _981 _982 _983 _984 _985 _986 _987 _988 _989 _990 _991 _992 _993 _994 _995 _996 _997 _998 _999 _1000 _1001 _1002 _1003 _1005 _1006 _1007 _1008 _1009 _1010 _1011 _1012 _1013 _1014 _1015 _1016 _1017 _1018 _1019 _1020 _1021 _1022 _1023 _1024 _1025 _1026 _1027 _1028 _1029 _1030 _1031 _1032 _1033 _1034 _1035 _1036 _1037 _1038 _1039 _1040 _1041 _1042 _1043 _1044 _1045 _1046 _1047 _1048 _1049 _1050 _1051 _1052 _1053 _1054 _1055 _1056 _1057 _1058 _1059 _1060 _1061 _1062 _1063 _1064 _1065 _1066 _1067 _1068 _1069 _1070 _1071 _1072 _1073 _1074 _1075 _1076 _1077 _1078 _1079 _1080 _1081 _1082 _1083 _1084 _1085 _1086 _1087 _1088 _1089 _1090 _1091 _1092 _1093 _1094 _1095 _1096 _1097 _1098 _1099 _1100 _1101 _1102 _1103 _1104 _1106 _1108 _1110 _1111 _1112 _1113 _1114 _1115 _1116 _1117 _1118 _1119 _1120 _1121 _1122 _1123 _1124 _1125 _1126 _1127 _1128 _1129 _1130 _1131 _1132 _1133 _1135 _1134 _1137 _1139 _1141 _1143 _1144 _1145 _1146 _1147 _1148 _1149 _1150 _1151 _1152 _1153 _1155 _1156 _1157 _1158 _1160 _1161 _1163 _1164 _1166 _1167 _1169 _1171 _1173 _1175 _1177 _1179 _1181 _1183 _1185 _1186 _1187 _1188 _1189 _1190 _1191 _1105 _1107 _765 _1192 _1194 _1195 _1193 _1196 _1197 _1198 _1199 _1200 _1201 _1202 _1203 _1204 _1205 _1206 _1207 _1208 _1209 _1210 _1211 _1212 _1213 _1214 _1215 _1216 _1217 _1218 _1219 _1220 _1221 _1222 _1223 _1224 _1225 _1226 _1227 _1228 _1229 _1230 _1231 _1232 _1233 _1234 _1235 _1236 _1237 _1238 _1239 _1241 _1242 _1243 _1244 _1245 _1247 _1249 _1250 _1251 _1252 _1253 _1255 _1256 _1257 _1258 _1260 _1261 _1262 _1263 _1264 _1265 _1266 _1267 _1268 _1269 _1270 _1271 _1272 _1273 _1274 _1275 _1276 _1277 _1278 _1279 _1280 _1281 _1282 _1283 _1284 _1285 _1286 _1287 _1288 _1289 _1290 _1291 _1292 _1293 _1294 _1295 _1296 _1297 _1298 _1299 _1300 _1301 _1302 _1303 _1304 _1305 _1306 _1307 _1308 _1309 _1310 _1311 _1312 _1313 _1314 _1315 _1316 _1317 _1318 _1319 _1320 _1321 _1322 _1323 _1324 _1325 _1326 _1327 _1328 _1329 _1330 _1331 _1332 _1333 _1334 _1335 _1336 _1337 _1338 _1339 _1340 _1341 _1342 _1343 _1344 _1345 _1346 _1347 _1348 _1349 _1350 _1351 _1352 _1353 _1354 _1355 _1356 _1357 _1358 _1359 _1360 _1361 _1362 _1363 _1364 _1365 _1366 _1367 _1368 _1369 _1370 _1371 _1372 _1373 _1374 _1375 _1376 _1377 _1378 _1379 _1380 _1381 _1382 _1383 _1384 _1385 _1386 _1387 _1388 _1389 _1390 _1391 _1392 _1393 _1394 _1395 _1396 _1397 _1398 _1399 _1400 _1401 _1402 _1403 _1404 _1405 _1406 _1407 _1408 _1409 _1410 _1411 _1412 _1413 _1414 _1415 _1416 _1417 _1418 _1419 _1420 _1421 _1422 _1423 _1424 _1425 _1426 _1427 _1428 _1430 _1431 _1432 _1433 _1434 _1435 _1436 _1437 _1438 _1439 _1440 _1441 _1442 _1443 _1444 _1445 _1446 _1447 _1448 _1449 _1450 _1451 _1452 _1453 _1454 _1455 _1456 _1457 _1458 _1459 _1460 _1461 _1462 _1463 _1464 _1465 _1466 _1467 _1468 _1469 _1470 _1471 _1472 _1473 _1474 _1475 _1476 _1477 _1478 _1479 _1480 _1481 _1482 _1483 _1484 _1485 _1486 _1487 _1488 _1489 _1491 _1490 _1492 _1493 _818 _1494 _1495 _1496 _1497 _1499 _1498 _1501 _1502 _1503 _1504 _1505 _1506 _1507 _1508 _1509 _1510 _1512 _1513 _1514 _1515 _1516 _1517 _1518 _1519 _1520 _1521 _1522 _1523 _1525 _1524 _1526 _1527 _1528 _1529 _1530 _1531 _1532 _1533 _1534 _1535 _1536 _1537 _1538 _1539 _1540 _1541 _1542 _1543 _1544 _1545 _1546 _1547 _1548 _1549 _1550 _1551 _1552 _1553 _1554 _1555 _1556 _1557 _1558 _1559 _1560 _1562 _1563 _1564 _1565 _1566 _1567 _1568 _1569 _1570 _1571 _1573 _1574 _1575 _1576 _1577 _1578 _1579 _1580 _1581 _1582 _1583 _1584 _1585 _1586 _1587 _1588 _1589 _1590 _1591 _1592 _1593 _1594 _1561 _1595 _1596 _1597 _1598 _1599 _1600 _1601 _1602 _1603 _1604 _1605 _1606 _1607 _1608 _1609 _1610 _1611 _1612 _1613 _1614 _1615 _1616 _1617 _1618 _1619 _1620 _1621 _1622 _1623 _1624 _1625 _1626 _1627 _1628 _1629 _1630 _1631 _1632 _1633 _1634 _1635 _1636 _1637 _1638 _1639 _1640 _1641 _1642 _1643 _1644 _1645 _1646 _1647 _1648 _1649 _1650 _1651 _1652 _1653 _1654 _1655 _1656 _1657 _1658 _1659 _1660 _1661 _1662 _1663 _1664 _1665 _1666 _1667 _1668 _1669 _1670 _1671 _1672 _1673 _1674 _1675 _1676 _1677 _1678 _1679 _1680 _1681 _1682 _1683 _1684 _1685 _1686 _1687 _1688 _1689 _1690 _1691 _1692 _1693 _1694 _1695 _1696 _1697 _1698 _1699 _1700 _1701 _1702 _1703 _1704 _1705 _1706 _1707 _1708 _1709 _1710 _1711 _1712 _1713 _1714 _1715 _1716 _1717 _1718 _1719 _1720 _1721 _1722 _1723 _1724 _1725 _1726 _1727 _1728 _1729 _1730 _1731 _1732 _1733 _1734 _1735 _1736 _1737 _1738 _1739 _1740 _1741 _1742 _1743 _1744 _1745 _1746 _1747 _1748 _1749 _1750 _1751 _1752 _1753 _1754 _1755 _1756 _1757 _1758 _1759 _1760 _1761 _1762 _1763 _1764 _1765 _1766 _1767 _1768 _1769 _1770 _1771 _1772 _1773 _1774 _1775 _1776 _1777 _1778 _1779 _1780 _1781 _1782 _1783 _1784 _1785 _1786 _1787 _1788 _1789 _1790 _1791 _1792 _1793 _1794 _1795 _1796 _1797 _1798 _1799 _1800 _1801 _1802 _1803 _1804 _1805 _1806 _1807 _1808 _1809 _1810 _1811 _1812 _1813 _1814 _1815 _1816 _1817 _1818 _1819 _1820 _1821 _1822 _1823 _1824 _1825 _1826 _1827 _1828 _1829 _1830 _1831 _1832 _1833 _1834 _1835 _1836 _1837 _1838 _1839 _1840 _1841 _1842 _1843 _1844 _1845 _1846 _1847 _1848 _1849 _1850 " mangled="_Z2::" demangled="::"/>
- <Namespace id="_2" name="std" context="_1" members="_1852 _1853 _1854 _1855 _1856 _1857 _1858 _1859 _1860 _1861 _1862 _1863 _1864 _1865 _1866 _1867 _1868 _1869 _1870 _1871 _1872 _1873 _1874 _1875 _1876 _1877 _1878 _1879 _1880 _1881 _1882 _1883 _1884 _1885 _1886 _1887 _1888 _1889 _1890 _1891 _1892 _1893 _1894 _1895 _1896 _1897 _1898 _1899 _1900 _1901 _1906 _1907 _1912 _1913 _1926 _1927 _1932 _1933 _1938 _1939 _1940 _1941 _1942 _1943 _1944 _1945 _1946 _1947 _1948 _1962 _1963 _1964 _1965 _1966 _1967 _1968 _1969 _1970 _1971 _1974 _1979 _1980 _1981 _1982 _1987 _1988 _1989 _1990 _1993 _1994 _1995 _1996 _1997 _1998 _1999 _2000 _2001 _2002 _2003 _2012 _2013 _2014 _2045 _2054 _2055 _2056 _2057 _2058 _2059 _2060 _2061 _2062 _2063 _2064 _2065 _2066 _2067 _2068 _2069 _2070 _2071 _2072 _2073 _2074 _2075 _2076 _2077 _2078 _2079 _2080 _2081 _2082 _2083 _2084 _2085 _2086 _2087 _2088 _2089 _2090 _2091 _2092 _2093 _2094 _2095 _2096 _2097 _2098 _2099 _2100 _2106 _2107 _2148 _2149 _2150 _2168 _2169 _2209 _2211 _2212 _2213 _2274 _2287 _2296 _2313 _2314 _2319 _2321 _2322 _2323 _2330 _2331 _2332 _2455 _2456 _2457 _2458 _2459 _2460 _2461 _2462 _2463 _2465 _2467 _2469 _2471 _2473 _2475 _2477 _2479 _2481 _2483 _2485 _2487 _2489 _2491 _2493 _2495 _2497 _2499 _2501 _2503 _2505 _2507 _2509 _2511 _2513 _2515 _2516 _2521 _2522 _2523 _2524 _2525 _2526 _2527 _2528 _2529 _2530 _2531 _2532 _2533 _2534 _2536 _2537 _2538 _2539 _2540 _2541 _2542 _2543 _2544 _2546 _2548 _2567 _2568 _2569 _2570 _2571 _2572 _2573 _2574 _2575 _2638 _2639 _2640 _2641 _2642 _2643 _2644 _2653 _2654 _2655 " mangled="_Z3std" demangled="std"/>
- <Function id="_3" name="_GLOBAL__D__home_roman_pygccxml_sources_sources_pyplusplus_dev_examples_pyboost_dev_dev_date_time_include_date_time.pypp.hppsxu6vd" returns="_1154" context="_1" location="f0:131" file="f0" line="131" endline="131"/>
- <Function id="_4" name="_GLOBAL__I__home_roman_pygccxml_sources_sources_pyplusplus_dev_examples_pyboost_dev_dev_date_time_include_date_time.pypp.hppsxu6vd" returns="_1154" context="_1" location="f0:131" file="f0" line="131" endline="131"/>
- <Variable id="_5" name="_ZGVN5boost9date_time10date_facetINS_9gregorian4dateEcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE" type="_1248" context="_1" location="f1:372" file="f1" line="372" artificial="1"/>
- <Function id="_6" name="__static_initialization_and_destruction_0" returns="_1154" context="_1" mangled="_Z41__static_initialization_and_destruction_0ii" demangled="__static_initialization_and_destruction_0(int, int)" location="f0:131" file="f0" line="131" endline="76">
- <Argument name="__initialize_p" type="_500" location="f0:131" file="f0" line="131"/>
- <Argument name="__priority" type="_500" location="f0:131" file="f0" line="131"/>
+ <Namespace id="_1" name="::" members="_3 _4 _5 _6 _7 _8 _9 _10 _11 _12 _13 _14 _15 _16 _17 _18 _19 _20 _21 _22 _23 _24 _25 _26 _27 _28 _29 _30 _31 _32 _33 _34 _35 _36 _37 _38 _39 _40 _41 _42 _43 _44 _45 _46 _47 _48 _49 _50 _51 _52 _53 _54 _55 _56 _57 _58 _59 _60 _61 _62 _63 _64 _65 _66 _67 _68 _69 _70 _71 _72 _73 _74 _75 _76 _77 _78 _79 _80 _81 _82 _83 _84 _85 _86 _87 _88 _89 _90 _91 _92 _93 _94 _95 _96 _97 _98 _99 _100 _101 _102 _103 _104 _105 _106 _107 _108 _109 _110 _111 _112 _113 _114 _115 _116 _117 _118 _119 _120 _121 _122 _123 _124 _125 _126 _127 _128 _129 _130 _131 _132 _133 _134 _135 _136 _137 _138 _139 _140 _141 _142 _143 _144 _145 _146 _147 _148 _149 _150 _151 _152 _153 _154 _155 _156 _157 _158 _159 _160 _161 _162 _163 _164 _165 _166 _167 _168 _169 _170 _171 _172 _173 _174 _175 _176 _177 _178 _179 _180 _181 _182 _183 _184 _185 _186 _187 _188 _189 _190 _191 _192 _193 _194 _195 _196 _197 _198 _199 _200 _201 _202 _203 _204 _205 _206 _207 _208 _209 _210 _211 _212 _213 _214 _215 _216 _217 _218 _219 _220 _221 _222 _223 _224 _225 _226 _227 _228 _229 _230 _231 _232 _233 _234 _235 _236 _237 _238 _239 _240 _241 _242 _243 _244 _245 _246 _247 _248 _249 _250 _251 _252 _253 _254 _255 _256 _257 _258 _259 _260 _261 _262 _263 _264 _265 _266 _267 _268 _269 _270 _271 _272 _273 _274 _275 _276 _277 _278 _279 _280 _281 _282 _283 _284 _285 _286 _287 _288 _289 _290 _291 _292 _293 _294 _295 _296 _297 _298 _299 _300 _301 _302 _303 _304 _305 _306 _307 _308 _309 _310 _311 _312 _313 _314 _315 _316 _317 _318 _319 _320 _321 _322 _323 _324 _325 _326 _327 _328 _329 _330 _331 _332 _333 _334 _335 _336 _337 _338 _339 _340 _341 _342 _343 _344 _345 _346 _347 _348 _349 _350 _351 _352 _353 _354 _355 _356 _357 _358 _359 _360 _361 _362 _363 _364 _365 _366 _367 _368 _369 _370 _371 _372 _373 _374 _375 _376 _377 _378 _379 _380 _381 _382 _383 _384 _385 _386 _387 _388 _389 _390 _391 _392 _393 _394 _395 _396 _397 _398 _399 _400 _401 _402 _403 _404 _405 _406 _407 _408 _409 _410 _411 _412 _413 _414 _415 _416 _417 _418 _419 _420 _421 _422 _423 _424 _425 _426 _427 _428 _429 _430 _431 _432 _433 _434 _435 _436 _437 _438 _439 _440 _441 _442 _443 _444 _445 _446 _447 _448 _449 _450 _451 _452 _453 _454 _455 _456 _457 _458 _459 _460 _461 _462 _463 _464 _465 _466 _467 _468 _469 _470 _471 _472 _473 _474 _475 _476 _477 _478 _479 _480 _481 _483 _484 _485 _486 _487 _488 _489 _490 _491 _492 _493 _494 _495 _496 _497 _498 _499 _500 _502 _503 _504 _505 _506 _507 _509 _510 _511 _512 _513 _514 _515 _516 _517 _518 _519 _520 _521 _522 _523 _524 _525 _526 _527 _528 _529 _530 _531 _532 _533 _534 _535 _536 _537 _538 _539 _540 _541 _542 _543 _544 _545 _546 _547 _548 _549 _550 _551 _552 _553 _554 _555 _556 _557 _558 _559 _560 _561 _562 _563 _564 _565 _566 _567 _568 _569 _570 _571 _572 _573 _574 _575 _576 _577 _578 _579 _580 _581 _582 _583 _584 _585 _586 _587 _588 _589 _590 _591 _592 _593 _594 _595 _596 _597 _598 _599 _600 _601 _602 _603 _604 _605 _606 _607 _608 _609 _610 _611 _612 _613 _614 _615 _616 _617 _618 _619 _620 _622 _623 _624 _625 _626 _627 _628 _629 _630 _631 _632 _633 _634 _635 _636 _637 _639 _640 _641 _642 _643 _644 _645 _646 _647 _648 _649 _650 _651 _652 _653 _654 _655 _656 _657 _658 _659 _660 _661 _662 _663 _664 _665 _666 _667 _668 _669 _670 _671 _672 _673 _674 _675 _676 _677 _678 _679 _680 _681 _682 _683 _684 _685 _686 _687 _688 _689 _690 _691 _692 _693 _694 _695 _696 _697 _698 _699 _700 _701 _702 _703 _704 _705 _706 _707 _708 _709 _710 _711 _712 _713 _714 _715 _716 _717 _718 _719 _720 _721 _722 _723 _724 _725 _726 _727 _728 _729 _730 _731 _732 _733 _734 _735 _736 _737 _738 _739 _740 _741 _742 _743 _744 _745 _746 _747 _748 _749 _750 _751 _752 _753 _754 _755 _756 _757 _758 _759 _760 _761 _762 _763 _764 _765 _767 _768 _769 _770 _771 _772 _773 _774 _775 _776 _777 _778 _779 _780 _781 _782 _783 _784 _785 _786 _787 _788 _789 _790 _791 _792 _793 _794 _795 _796 _797 _798 _799 _800 _801 _802 _803 _804 _805 _806 _807 _808 _809 _810 _811 _812 _813 _814 _815 _816 _817 _818 _820 _821 _822 _824 _825 _826 _827 _828 _829 _830 _831 _832 _833 _834 _835 _836 _837 _838 _839 _840 _841 _842 _843 _844 _845 _846 _847 _848 _849 _850 _851 _852 _853 _854 _855 _856 _857 _858 _859 _860 _861 _862 _863 _864 _865 _866 _867 _868 _869 _870 _871 _872 _873 _874 _875 _876 _877 _878 _879 _880 _881 _882 _883 _884 _885 _886 _887 _888 _889 _890 _891 _892 _893 _894 _895 _896 _897 _898 _899 _900 _901 _902 _903 _904 _905 _906 _907 _908 _909 _910 _911 _912 _913 _914 _915 _916 _917 _918 _919 _920 _921 _922 _923 _924 _925 _926 _927 _928 _929 _930 _931 _932 _933 _934 _935 _936 _937 _938 _939 _940 _941 _942 _943 _944 _945 _946 _947 _948 _949 _950 _951 _952 _953 _954 _955 _956 _957 _958 _959 _960 _961 _962 _963 _964 _965 _966 _967 _968 _969 _970 _971 _972 _973 _974 _975 _976 _977 _978 _979 _980 _981 _982 _983 _984 _985 _986 _987 _988 _989 _990 _991 _992 _993 _994 _995 _996 _997 _998 _999 _1000 _1001 _1002 _1003 _1004 _1006 _1007 _1008 _1009 _1010 _1011 _1012 _1013 _1014 _1015 _1016 _1017 _1018 _1019 _1020 _1021 _1022 _1023 _1024 _1025 _1026 _1027 _1028 _1029 _1030 _1031 _1032 _1033 _1034 _1035 _1036 _1037 _1038 _1039 _1040 _1041 _1042 _1043 _1044 _1045 _1046 _1047 _1048 _1049 _1050 _1051 _1052 _1053 _1054 _1055 _1056 _1057 _1058 _1059 _1060 _1061 _1062 _1063 _1064 _1065 _1066 _1067 _1068 _1069 _1070 _1071 _1072 _1073 _1074 _1075 _1076 _1077 _1078 _1079 _1080 _1081 _1082 _1083 _1084 _1085 _1086 _1087 _1088 _1089 _1090 _1091 _1092 _1093 _1094 _1095 _1096 _1097 _1098 _1099 _1100 _1101 _1102 _1103 _1104 _1105 _1107 _1109 _1111 _1112 _1113 _1114 _1115 _1116 _1117 _1118 _1119 _1120 _1121 _1122 _1123 _1124 _1125 _1126 _1127 _1128 _1129 _1130 _1131 _1132 _1133 _1134 _1136 _1135 _1138 _1140 _1142 _1144 _1145 _1146 _1147 _1148 _1149 _1150 _1151 _1152 _1153 _1154 _1156 _1157 _1158 _1159 _1161 _1162 _1164 _1165 _1167 _1168 _1170 _1172 _1174 _1176 _1178 _1180 _1182 _1184 _1186 _1187 _1188 _1189 _1190 _1191 _1192 _1106 _1108 _766 _1193 _1195 _1196 _1194 _1197 _1198 _1199 _1200 _1201 _1202 _1203 _1204 _1205 _1206 _1207 _1208 _1209 _1210 _1211 _1212 _1213 _1214 _1215 _1216 _1217 _1218 _1219 _1220 _1221 _1222 _1223 _1224 _1225 _1226 _1227 _1228 _1229 _1230 _1231 _1232 _1233 _1234 _1235 _1236 _1237 _1238 _1239 _1240 _1242 _1243 _1244 _1245 _1246 _1248 _1250 _1251 _1252 _1253 _1254 _1256 _1257 _1258 _1259 _1261 _1262 _1263 _1264 _1265 _1266 _1267 _1268 _1269 _1270 _1271 _1272 _1273 _1274 _1275 _1276 _1277 _1278 _1279 _1280 _1281 _1282 _1283 _1284 _1285 _1286 _1287 _1288 _1289 _1290 _1291 _1292 _1293 _1294 _1295 _1296 _1297 _1298 _1299 _1300 _1301 _1302 _1303 _1304 _1305 _1306 _1307 _1308 _1309 _1310 _1311 _1312 _1313 _1314 _1315 _1316 _1317 _1318 _1319 _1320 _1321 _1322 _1323 _1324 _1325 _1326 _1327 _1328 _1329 _1330 _1331 _1332 _1333 _1334 _1335 _1336 _1337 _1338 _1339 _1340 _1341 _1342 _1343 _1344 _1345 _1346 _1347 _1348 _1349 _1350 _1351 _1352 _1353 _1354 _1355 _1356 _1357 _1358 _1359 _1360 _1361 _1362 _1363 _1364 _1365 _1366 _1367 _1368 _1369 _1370 _1371 _1372 _1373 _1374 _1375 _1376 _1377 _1378 _1379 _1380 _1381 _1382 _1383 _1384 _1385 _1386 _1387 _1388 _1389 _1390 _1391 _1392 _1393 _1394 _1395 _1396 _1397 _1398 _1399 _1400 _1401 _1402 _1403 _1404 _1405 _1406 _1407 _1408 _1409 _1410 _1411 _1412 _1413 _1414 _1415 _1416 _1417 _1418 _1419 _1420 _1421 _1422 _1423 _1424 _1425 _1426 _1427 _1428 _1429 _1431 _1432 _1433 _1434 _1435 _1436 _1437 _1438 _1439 _1440 _1441 _1442 _1443 _1444 _1445 _1446 _1447 _1448 _1449 _1450 _1451 _1452 _1453 _1454 _1455 _1456 _1457 _1458 _1459 _1460 _1461 _1462 _1463 _1464 _1465 _1466 _1467 _1468 _1469 _1470 _1471 _1472 _1473 _1474 _1475 _1476 _1477 _1478 _1479 _1480 _1481 _1482 _1483 _1484 _1485 _1486 _1487 _1488 _1489 _1490 _1492 _1491 _1493 _1494 _819 _1495 _1496 _1497 _1498 _1500 _1499 _1502 _1503 _1504 _1505 _1506 _1507 _1508 _1509 _1510 _1511 _1513 _1514 _1515 _1516 _1517 _1518 _1519 _1520 _1521 _1522 _1523 _1524 _1526 _1525 _1527 _1528 _1529 _1530 _1531 _1532 _1533 _1534 _1535 _1536 _1537 _1538 _1539 _1540 _1541 _1542 _1543 _1544 _1545 _1546 _1547 _1548 _1549 _1550 _1551 _1552 _1553 _1554 _1555 _1556 _1557 _1558 _1559 _1560 _1561 _1563 _1564 _1565 _1566 _1567 _1568 _1569 _1570 _1571 _1572 _1574 _1575 _1576 _1577 _1578 _1579 _1580 _1581 _1582 _1583 _1584 _1585 _1586 _1587 _1588 _1589 _1590 _1591 _1592 _1593 _1594 _1595 _1562 _1596 _1597 _1598 _1599 _1600 _1601 _1602 _1603 _1604 _1605 _1606 _1607 _1608 _1609 _1610 _1611 _1612 _1613 _1614 _1615 _1616 _1617 _1618 _1619 _1620 _1621 _1622 _1623 _1624 _1625 _1626 _1627 _1628 _1629 _1630 _1631 _1632 _1633 _1634 _1635 _1636 _1637 _1638 _1639 _1640 _1641 _1642 _1643 _1644 _1645 _1646 _1647 _1648 _1649 _1650 _1651 _1652 _1653 _1654 _1655 _1656 _1657 _1658 _1659 _1660 _1661 _1662 _1663 _1664 _1665 _1666 _1667 _1668 _1669 _1670 _1671 _1672 _1673 _1674 _1675 _1676 _1677 _1678 _1679 _1680 _1681 _1682 _1683 _1684 _1685 _1686 _1687 _1688 _1689 _1690 _1691 _1692 _1693 _1694 _1695 _1696 _1697 _1698 _1699 _1700 _1701 _1702 _1703 _1704 _1705 _1706 _1707 _1708 _1709 _1710 _1711 _1712 _1713 _1714 _1715 _1716 _1717 _1718 _1719 _1720 _1721 _1722 _1723 _1724 _1725 _1726 _1727 _1728 _1729 _1730 _1731 _1732 _1733 _1734 _1735 _1736 _1737 _1738 _1739 _1740 _1741 _1742 _1743 _1744 _1745 _1746 _1747 _1748 _1749 _1750 _1751 _1752 _1753 _1754 _1755 _1756 _1757 _1758 _1759 _1760 _1761 _1762 _1763 _1764 _1765 _1766 _1767 _1768 _1769 _1770 _1771 _1772 _1773 _1774 _1775 _1776 _1777 _1778 _1779 _1780 _1781 _1782 _1783 _1784 _1785 _1786 _1787 _1788 _1789 _1790 _1791 _1792 _1793 _1794 _1795 _1796 _1797 _1798 _1799 _1800 _1801 _1802 _1803 _1804 _1805 _1806 _1807 _1808 _1809 _1810 _1811 _1812 _1813 _1814 _1815 _1816 _1817 _1818 _1819 _1820 _1821 _1822 _1823 _1824 _1825 _1826 _1827 _1828 _1829 _1830 _1831 _1832 _1833 _1834 _1835 _1836 _1837 _1838 _1839 _1840 _1841 _1842 _1843 _1844 _1845 _1846 _1847 _1848 _1849 _1850 _1851 " mangled="_Z2::" demangled="::"/>
+ <Namespace id="_2" name="std" context="_1" members="_1853 _1854 _1855 _1856 _1857 _1858 _1859 _1860 _1861 _1862 _1863 _1864 _1865 _1866 _1867 _1868 _1869 _1870 _1871 _1872 _1873 _1874 _1875 _1876 _1877 _1878 _1879 _1880 _1881 _1882 _1883 _1884 _1885 _1886 _1887 _1888 _1889 _1890 _1891 _1892 _1893 _1894 _1895 _1896 _1897 _1898 _1899 _1900 _1901 _1902 _1907 _1908 _1913 _1914 _1927 _1928 _1933 _1934 _1939 _1940 _1941 _1942 _1943 _1944 _1945 _1946 _1947 _1948 _1949 _1963 _1964 _1965 _1966 _1967 _1968 _1969 _1970 _1971 _1972 _1975 _1980 _1981 _1982 _1983 _1988 _1989 _1990 _1991 _1994 _1995 _1996 _1997 _1998 _1999 _2000 _2001 _2002 _2003 _2004 _2013 _2014 _2015 _2046 _2055 _2056 _2057 _2058 _2059 _2060 _2061 _2062 _2063 _2064 _2065 _2066 _2067 _2068 _2069 _2070 _2071 _2072 _2073 _2074 _2075 _2076 _2077 _2078 _2079 _2080 _2081 _2082 _2083 _2084 _2085 _2086 _2087 _2088 _2089 _2090 _2091 _2092 _2093 _2094 _2095 _2096 _2097 _2098 _2099 _2100 _2101 _2107 _2108 _2148 _2149 _2150 _2168 _2169 _2209 _2211 _2212 _2213 _2274 _2287 _2296 _2313 _2314 _2319 _2321 _2322 _2323 _2330 _2331 _2332 _2455 _2456 _2457 _2458 _2459 _2460 _2461 _2462 _2463 _2465 _2467 _2469 _2471 _2473 _2475 _2477 _2479 _2481 _2483 _2485 _2487 _2489 _2491 _2493 _2495 _2497 _2499 _2501 _2503 _2505 _2507 _2509 _2511 _2513 _2515 _2516 _2521 _2522 _2523 _2524 _2525 _2526 _2527 _2528 _2529 _2530 _2531 _2532 _2533 _2534 _2536 _2537 _2538 _2539 _2540 _2541 _2542 _2543 _2544 _2546 _2548 _2567 _2568 _2569 _2570 _2571 _2572 _2573 _2574 _2575 _2638 _2639 _2640 _2641 _2642 _2643 _2644 _2653 _2654 _2655 " mangled="_Z3std" demangled="std"/>
+ <Function id="_3" name="_GLOBAL__D__home_roman_pygccxml_sources_sources_pyplusplus_dev_examples_pyboost_dev_dev_date_time_include_date_time.pypp.hpp7MXvEa" returns="_1155" context="_1" location="f0:131" file="f0" line="131" endline="131"/>
+ <Function id="_4" name="_GLOBAL__I__home_roman_pygccxml_sources_sources_pyplusplus_dev_examples_pyboost_dev_dev_date_time_include_date_time.pypp.hpp7MXvEa" returns="_1155" context="_1" location="f0:131" file="f0" line="131" endline="131"/>
+ <Variable id="_5" name="_ZGVN5boost9date_time10date_facetINS_9gregorian4dateEcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE" type="_1249" context="_1" location="f1:372" file="f1" line="372" artificial="1"/>
+ <Function id="_6" name="__static_initialization_and_destruction_0" returns="_1155" context="_1" mangled="_Z41__static_initialization_and_destruction_0ii" demangled="__static_initialization_and_destruction_0(int, int)" location="f0:131" file="f0" line="131" endline="76">
+ <Argument name="__initialize_p" type="_501" location="f0:131" file="f0" line="131"/>
+ <Argument name="__priority" type="_501" location="f0:131" file="f0" line="131"/>
</Function>
<Variable id="_7" name="_ZTSSt12out_of_range" type="_2656c" init=""St12out_of_range"" context="_1" location="f0:131" file="f0" line="131" artificial="1"/>
<Variable id="_8" name="_ZTSN5boost9gregorian11bad_weekdayE" type="_2658c" init=""N5boost9gregorian11bad_weekdayE"" context="_1" location="f0:131" file="f0" line="131" artificial="1"/>
@@ -17,1791 +17,1792 @@
<Variable id="_12" name="_ZTSN5boost12bad_weak_ptrE" type="_2666c" init=""N5boost12bad_weak_ptrE"" context="_1" location="f0:131" file="f0" line="131" artificial="1"/>
<Variable id="_13" name="_ZTSN5boost9gregorian9bad_monthE" type="_2668c" init=""N5boost9gregorian9bad_monthE"" context="_1" location="f0:131" file="f0" line="131" artificial="1"/>
<Variable id="_14" name="_ZTSN5boost16bad_lexical_castE" type="_2670c" init=""N5boost16bad_lexical_castE"" context="_1" location="f0:131" file="f0" line="131" artificial="1"/>
- <Variable id="_15" name="_ZTIs" type="_2672c" context="_1" location="f2:222" file="f2" line="222" extern="1" artificial="1"/>
- <Variable id="_16" name="_ZTIx" type="_2672c" context="_1" location="f2:222" file="f2" line="222" extern="1" artificial="1"/>
- <Variable id="_17" name="_ZTIi" type="_2672c" context="_1" location="f2:222" file="f2" line="222" extern="1" artificial="1"/>
- <Variable id="_18" name="_ZTIt" type="_2672c" context="_1" location="f2:222" file="f2" line="222" extern="1" artificial="1"/>
- <Variable id="_19" name="_ZTISs" type="_2674c" context="_1" location="f2:222" file="f2" line="222" extern="1" artificial="1"/>
- <Function id="_20" name="__cxa_rethrow" returns="_1154" context="_1" location="f3:575" file="f3" line="575" extern="1"/>
- <Variable id="_21" name="_ZTIN5boost9date_time10date_facetINS_9gregorian4dateEcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE" type="_2676c" context="_1" location="f1:45" file="f1" line="45" extern="1" artificial="1"/>
- <Variable id="_22" name="_ZTIN5boost10local_time21custom_time_zone_baseIcEE" type="_2676c" context="_1" location="f4:29" file="f4" line="29" extern="1" artificial="1"/>
- <Variable id="_23" name="_ZTIN5boost10local_time20posix_time_zone_baseIcEE" type="_2676c" context="_1" location="f5:64" file="f5" line="64" extern="1" artificial="1"/>
- <Variable id="_24" name="_ZTIN5boost9date_time17day_calc_dst_ruleINS_10local_time18nth_kday_rule_specEEE" type="_2676c" context="_1" location="f6:38" file="f6" line="38" extern="1" artificial="1"/>
- <Variable id="_25" name="_ZTIN5boost9date_time17day_calc_dst_ruleINS_10local_time19last_last_rule_specEEE" type="_2676c" context="_1" location="f6:38" file="f6" line="38" extern="1" artificial="1"/>
- <Variable id="_26" name="_ZTIN5boost9date_time17day_calc_dst_ruleINS_10local_time20first_last_rule_specEEE" type="_2676c" context="_1" location="f6:38" file="f6" line="38" extern="1" artificial="1"/>
- <Variable id="_27" name="_ZTIN5boost9date_time14time_zone_baseINS_10posix_time5ptimeEcEE" type="_2674c" context="_1" location="f7:33" file="f7" line="33" extern="1" artificial="1"/>
- <Variable id="_28" name="_ZTIN5boost9date_time15bad_field_countE" type="_2676c" context="_1" location="f8:40" file="f8" line="40" extern="1" artificial="1"/>
- <Variable id="_29" name="_ZTIN5boost9date_time19data_not_accessibleE" type="_2676c" context="_1" location="f8:28" file="f8" line="28" extern="1" artificial="1"/>
- <Variable id="_30" name="_ZTISt13basic_fstreamIwSt11char_traitsIwEE" type="_2676c" context="_1" location="f9:95" file="f9" line="95" extern="1" artificial="1"/>
- <Variable id="_31" name="_ZTISt14basic_ofstreamIwSt11char_traitsIwEE" type="_2676c" context="_1" location="f9:92" file="f9" line="92" extern="1" artificial="1"/>
- <Variable id="_32" name="_ZTISt14basic_ifstreamIwSt11char_traitsIwEE" type="_2676c" context="_1" location="f9:89" file="f9" line="89" extern="1" artificial="1"/>
- <Variable id="_33" name="_ZTISt13basic_filebufIwSt11char_traitsIwEE" type="_2676c" context="_1" location="f9:86" file="f9" line="86" extern="1" artificial="1"/>
- <Variable id="_34" name="_ZTISt13basic_fstreamIcSt11char_traitsIcEE" type="_2676c" context="_1" location="f9:95" file="f9" line="95" extern="1" artificial="1"/>
- <Variable id="_35" name="_ZTISt14basic_ofstreamIcSt11char_traitsIcEE" type="_2676c" context="_1" location="f9:92" file="f9" line="92" extern="1" artificial="1"/>
- <Variable id="_36" name="_ZTISt14basic_ifstreamIcSt11char_traitsIcEE" type="_2676c" context="_1" location="f9:89" file="f9" line="89" extern="1" artificial="1"/>
- <Variable id="_37" name="_ZTISt13basic_filebufIcSt11char_traitsIcEE" type="_2676c" context="_1" location="f9:86" file="f9" line="86" extern="1" artificial="1"/>
- <Variable id="_38" name="_ZTIN5boost9date_time17day_calc_dst_ruleINS_10local_time22partial_date_rule_specEEE" type="_2676c" context="_1" location="f6:38" file="f6" line="38" extern="1" artificial="1"/>
- <Variable id="_39" name="_ZTIN5boost9date_time17day_calc_dst_ruleINS_10local_time18nth_last_rule_specEEE" type="_2676c" context="_1" location="f6:38" file="f6" line="38" extern="1" artificial="1"/>
- <Variable id="_40" name="_ZTIN5boost9date_time17dst_day_calc_ruleINS_9gregorian4dateEEE" type="_2674c" context="_1" location="f6:18" file="f6" line="18" extern="1" artificial="1"/>
- <Variable id="_41" name="_ZTIN5boost10local_time14bad_adjustmentE" type="_2676c" context="_1" location="f5:33" file="f5" line="33" extern="1" artificial="1"/>
- <Variable id="_42" name="_ZTIN5boost10local_time10bad_offsetE" type="_2676c" context="_1" location="f5:28" file="f5" line="28" extern="1" artificial="1"/>
- <Variable id="_43" name="_ZTIN5boost10local_time13dst_not_validE" type="_2676c" context="_1" location="f10:37" file="f10" line="37" extern="1" artificial="1"/>
- <Variable id="_44" name="_ZTIN5boost10local_time18time_label_invalidE" type="_2676c" context="_1" location="f10:32" file="f10" line="32" extern="1" artificial="1"/>
- <Variable id="_45" name="_ZTIN5boost10local_time16ambiguous_resultE" type="_2676c" context="_1" location="f10:26" file="f10" line="26" extern="1" artificial="1"/>
- <Function id="_46" name="matherr" returns="_500" throw="" context="_1" location="f11:293" file="f11" line="293" extern="1">
+ <Variable id="_15" name="_ZTIs" type="_2672c" context="_1" location="f2:856" file="f2" line="856" extern="1" artificial="1"/>
+ <Variable id="_16" name="_ZTIx" type="_2672c" context="_1" location="f2:856" file="f2" line="856" extern="1" artificial="1"/>
+ <Variable id="_17" name="_ZTIi" type="_2672c" context="_1" location="f2:856" file="f2" line="856" extern="1" artificial="1"/>
+ <Variable id="_18" name="_ZTIt" type="_2672c" context="_1" location="f2:856" file="f2" line="856" extern="1" artificial="1"/>
+ <Variable id="_19" name="_ZTISs" type="_2674c" context="_1" location="f2:856" file="f2" line="856" extern="1" artificial="1"/>
+ <Variable id="_20" name="_ZTIN5boost6detail17lexical_streambufIcEE" type="_2676c" context="_1" location="f2:336" file="f2" line="336" extern="1" artificial="1"/>
+ <Function id="_21" name="__cxa_rethrow" returns="_1155" context="_1" location="f3:575" file="f3" line="575" extern="1"/>
+ <Variable id="_22" name="_ZTIN5boost9date_time10date_facetINS_9gregorian4dateEcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE" type="_2676c" context="_1" location="f1:45" file="f1" line="45" extern="1" artificial="1"/>
+ <Variable id="_23" name="_ZTIN5boost10local_time21custom_time_zone_baseIcEE" type="_2676c" context="_1" location="f4:29" file="f4" line="29" extern="1" artificial="1"/>
+ <Variable id="_24" name="_ZTIN5boost10local_time20posix_time_zone_baseIcEE" type="_2676c" context="_1" location="f5:64" file="f5" line="64" extern="1" artificial="1"/>
+ <Variable id="_25" name="_ZTIN5boost9date_time17day_calc_dst_ruleINS_10local_time18nth_kday_rule_specEEE" type="_2676c" context="_1" location="f6:38" file="f6" line="38" extern="1" artificial="1"/>
+ <Variable id="_26" name="_ZTIN5boost9date_time17day_calc_dst_ruleINS_10local_time19last_last_rule_specEEE" type="_2676c" context="_1" location="f6:38" file="f6" line="38" extern="1" artificial="1"/>
+ <Variable id="_27" name="_ZTIN5boost9date_time17day_calc_dst_ruleINS_10local_time20first_last_rule_specEEE" type="_2676c" context="_1" location="f6:38" file="f6" line="38" extern="1" artificial="1"/>
+ <Variable id="_28" name="_ZTIN5boost9date_time14time_zone_baseINS_10posix_time5ptimeEcEE" type="_2674c" context="_1" location="f7:33" file="f7" line="33" extern="1" artificial="1"/>
+ <Variable id="_29" name="_ZTIN5boost9date_time15bad_field_countE" type="_2676c" context="_1" location="f8:40" file="f8" line="40" extern="1" artificial="1"/>
+ <Variable id="_30" name="_ZTIN5boost9date_time19data_not_accessibleE" type="_2676c" context="_1" location="f8:28" file="f8" line="28" extern="1" artificial="1"/>
+ <Variable id="_31" name="_ZTISt13basic_fstreamIwSt11char_traitsIwEE" type="_2676c" context="_1" location="f9:95" file="f9" line="95" extern="1" artificial="1"/>
+ <Variable id="_32" name="_ZTISt14basic_ofstreamIwSt11char_traitsIwEE" type="_2676c" context="_1" location="f9:92" file="f9" line="92" extern="1" artificial="1"/>
+ <Variable id="_33" name="_ZTISt14basic_ifstreamIwSt11char_traitsIwEE" type="_2676c" context="_1" location="f9:89" file="f9" line="89" extern="1" artificial="1"/>
+ <Variable id="_34" name="_ZTISt13basic_filebufIwSt11char_traitsIwEE" type="_2676c" context="_1" location="f9:86" file="f9" line="86" extern="1" artificial="1"/>
+ <Variable id="_35" name="_ZTISt13basic_fstreamIcSt11char_traitsIcEE" type="_2676c" context="_1" location="f9:95" file="f9" line="95" extern="1" artificial="1"/>
+ <Variable id="_36" name="_ZTISt14basic_ofstreamIcSt11char_traitsIcEE" type="_2676c" context="_1" location="f9:92" file="f9" line="92" extern="1" artificial="1"/>
+ <Variable id="_37" name="_ZTISt14basic_ifstreamIcSt11char_traitsIcEE" type="_2676c" context="_1" location="f9:89" file="f9" line="89" extern="1" artificial="1"/>
+ <Variable id="_38" name="_ZTISt13basic_filebufIcSt11char_traitsIcEE" type="_2676c" context="_1" location="f9:86" file="f9" line="86" extern="1" artificial="1"/>
+ <Variable id="_39" name="_ZTIN5boost9date_time17day_calc_dst_ruleINS_10local_time22partial_date_rule_specEEE" type="_2676c" context="_1" location="f6:38" file="f6" line="38" extern="1" artificial="1"/>
+ <Variable id="_40" name="_ZTIN5boost9date_time17day_calc_dst_ruleINS_10local_time18nth_last_rule_specEEE" type="_2676c" context="_1" location="f6:38" file="f6" line="38" extern="1" artificial="1"/>
+ <Variable id="_41" name="_ZTIN5boost9date_time17dst_day_calc_ruleINS_9gregorian4dateEEE" type="_2674c" context="_1" location="f6:18" file="f6" line="18" extern="1" artificial="1"/>
+ <Variable id="_42" name="_ZTIN5boost10local_time14bad_adjustmentE" type="_2676c" context="_1" location="f5:33" file="f5" line="33" extern="1" artificial="1"/>
+ <Variable id="_43" name="_ZTIN5boost10local_time10bad_offsetE" type="_2676c" context="_1" location="f5:28" file="f5" line="28" extern="1" artificial="1"/>
+ <Variable id="_44" name="_ZTIN5boost10local_time13dst_not_validE" type="_2676c" context="_1" location="f10:37" file="f10" line="37" extern="1" artificial="1"/>
+ <Variable id="_45" name="_ZTIN5boost10local_time18time_label_invalidE" type="_2676c" context="_1" location="f10:32" file="f10" line="32" extern="1" artificial="1"/>
+ <Variable id="_46" name="_ZTIN5boost10local_time16ambiguous_resultE" type="_2676c" context="_1" location="f10:26" file="f10" line="26" extern="1" artificial="1"/>
+ <Function id="_47" name="matherr" returns="_501" throw="" context="_1" location="f11:293" file="f11" line="293" extern="1">
<Argument name="__exc" type="_2678" location="f11:293" file="f11" line="293"/>
</Function>
- <Struct id="_47" name="__exception" context="_1" mangled="11__exception" demangled="__exception" location="f11:284" file="f11" line="284" artificial="1" size="256" align="32" members="_2679 _2680 _2681 _2682 _2683 _2684 _2685 " bases=""/>
- <Variable id="_48" name="_LIB_VERSION" type="_49" context="_1" location="f11:269" file="f11" line="269" extern="1"/>
- <Enumeration id="_49" name="_LIB_VERSION_TYPE" context="_1" location="f11:264" file="f11" line="264" size="32" align="32">
+ <Struct id="_48" name="__exception" context="_1" mangled="11__exception" demangled="__exception" location="f11:284" file="f11" line="284" artificial="1" size="256" align="32" members="_2679 _2680 _2681 _2682 _2683 _2684 _2685 " bases=""/>
+ <Variable id="_49" name="_LIB_VERSION" type="_50" context="_1" location="f11:269" file="f11" line="269" extern="1"/>
+ <Enumeration id="_50" name="_LIB_VERSION_TYPE" context="_1" location="f11:264" file="f11" line="264" size="32" align="32">
<EnumValue name="_IEEE_" init="-1"/>
<EnumValue name="_SVID_" init="0"/>
<EnumValue name="_XOPEN_" init="1"/>
<EnumValue name="_POSIX_" init="2"/>
<EnumValue name="_ISOC_" init="3"/>
</Enumeration>
- <Enumeration id="_50" name="._92" context="_1" location="f11:172" file="f11" line="172" artificial="1" size="32" align="32">
+ <Enumeration id="_51" name="._92" context="_1" location="f11:172" file="f11" line="172" artificial="1" size="32" align="32">
<EnumValue name="FP_NAN" init="0"/>
<EnumValue name="FP_INFINITE" init="1"/>
<EnumValue name="FP_ZERO" init="2"/>
<EnumValue name="FP_SUBNORMAL" init="3"/>
<EnumValue name="FP_NORMAL" init="4"/>
</Enumeration>
- <Variable id="_51" name="signgam" type="_500" context="_1" location="f11:130" file="f11" line="130" extern="1"/>
- <Function id="_52" name="__scalbl" returns="_481" throw="" context="_1" location="f12:360" file="f12" line="360" extern="1">
- <Argument name="__x" type="_481" location="f12:360" file="f12" line="360"/>
- <Argument name="__n" type="_481" location="f12:360" file="f12" line="360"/>
+ <Variable id="_52" name="signgam" type="_501" context="_1" location="f11:130" file="f11" line="130" extern="1"/>
+ <Function id="_53" name="__scalbl" returns="_482" throw="" context="_1" location="f12:360" file="f12" line="360" extern="1">
+ <Argument name="__x" type="_482" location="f12:360" file="f12" line="360"/>
+ <Argument name="__n" type="_482" location="f12:360" file="f12" line="360"/>
</Function>
- <Function id="_53" name="scalbl" returns="_481" throw="" context="_1" location="f12:360" file="f12" line="360" extern="1">
- <Argument name="__x" type="_481" location="f12:360" file="f12" line="360"/>
- <Argument name="__n" type="_481" location="f12:360" file="f12" line="360"/>
+ <Function id="_54" name="scalbl" returns="_482" throw="" context="_1" location="f12:360" file="f12" line="360" extern="1">
+ <Argument name="__x" type="_482" location="f12:360" file="f12" line="360"/>
+ <Argument name="__n" type="_482" location="f12:360" file="f12" line="360"/>
</Function>
- <Function id="_54" name="__fmal" returns="_481" throw="" context="_1" location="f12:355" file="f12" line="355" extern="1">
- <Argument name="__x" type="_481" location="f12:355" file="f12" line="355"/>
- <Argument name="__y" type="_481" location="f12:355" file="f12" line="355"/>
- <Argument name="__z" type="_481" location="f12:355" file="f12" line="355"/>
+ <Function id="_55" name="__fmal" returns="_482" throw="" context="_1" location="f12:355" file="f12" line="355" extern="1">
+ <Argument name="__x" type="_482" location="f12:355" file="f12" line="355"/>
+ <Argument name="__y" type="_482" location="f12:355" file="f12" line="355"/>
+ <Argument name="__z" type="_482" location="f12:355" file="f12" line="355"/>
</Function>
- <Function id="_55" name="fmal" returns="_481" throw="" context="_1" location="f12:355" file="f12" line="355" extern="1">
- <Argument name="__x" type="_481" location="f12:355" file="f12" line="355"/>
- <Argument name="__y" type="_481" location="f12:355" file="f12" line="355"/>
- <Argument name="__z" type="_481" location="f12:355" file="f12" line="355"/>
+ <Function id="_56" name="fmal" returns="_482" throw="" context="_1" location="f12:355" file="f12" line="355" extern="1">
+ <Argument name="__x" type="_482" location="f12:355" file="f12" line="355"/>
+ <Argument name="__y" type="_482" location="f12:355" file="f12" line="355"/>
+ <Argument name="__z" type="_482" location="f12:355" file="f12" line="355"/>
</Function>
- <Function id="_56" name="__signbitl" returns="_500" throw="" context="_1" location="f12:351" file="f12" line="351" extern="1" attributes="const">
- <Argument name="__value" type="_481" location="f12:351" file="f12" line="351"/>
+ <Function id="_57" name="__signbitl" returns="_501" throw="" context="_1" location="f12:351" file="f12" line="351" extern="1" attributes="const">
+ <Argument name="__value" type="_482" location="f12:351" file="f12" line="351"/>
</Function>
- <Function id="_57" name="__fpclassifyl" returns="_500" throw="" context="_1" location="f12:347" file="f12" line="347" extern="1" attributes="const">
- <Argument name="__value" type="_481" location="f12:347" file="f12" line="347"/>
+ <Function id="_58" name="__fpclassifyl" returns="_501" throw="" context="_1" location="f12:347" file="f12" line="347" extern="1" attributes="const">
+ <Argument name="__value" type="_482" location="f12:347" file="f12" line="347"/>
</Function>
- <Function id="_58" name="__fminl" returns="_481" throw="" context="_1" location="f12:342" file="f12" line="342" extern="1">
- <Argument name="__x" type="_481" location="f12:342" file="f12" line="342"/>
- <Argument name="__y" type="_481" location="f12:342" file="f12" line="342"/>
+ <Function id="_59" name="__fminl" returns="_482" throw="" context="_1" location="f12:342" file="f12" line="342" extern="1">
+ <Argument name="__x" type="_482" location="f12:342" file="f12" line="342"/>
+ <Argument name="__y" type="_482" location="f12:342" file="f12" line="342"/>
</Function>
- <Function id="_59" name="fminl" returns="_481" throw="" context="_1" location="f12:342" file="f12" line="342" extern="1">
- <Argument name="__x" type="_481" location="f12:342" file="f12" line="342"/>
- <Argument name="__y" type="_481" location="f12:342" file="f12" line="342"/>
+ <Function id="_60" name="fminl" returns="_482" throw="" context="_1" location="f12:342" file="f12" line="342" extern="1">
+ <Argument name="__x" type="_482" location="f12:342" file="f12" line="342"/>
+ <Argument name="__y" type="_482" location="f12:342" file="f12" line="342"/>
</Function>
- <Function id="_60" name="__fmaxl" returns="_481" throw="" context="_1" location="f12:339" file="f12" line="339" extern="1">
- <Argument name="__x" type="_481" location="f12:339" file="f12" line="339"/>
- <Argument name="__y" type="_481" location="f12:339" file="f12" line="339"/>
+ <Function id="_61" name="__fmaxl" returns="_482" throw="" context="_1" location="f12:339" file="f12" line="339" extern="1">
+ <Argument name="__x" type="_482" location="f12:339" file="f12" line="339"/>
+ <Argument name="__y" type="_482" location="f12:339" file="f12" line="339"/>
</Function>
- <Function id="_61" name="fmaxl" returns="_481" throw="" context="_1" location="f12:339" file="f12" line="339" extern="1">
- <Argument name="__x" type="_481" location="f12:339" file="f12" line="339"/>
- <Argument name="__y" type="_481" location="f12:339" file="f12" line="339"/>
+ <Function id="_62" name="fmaxl" returns="_482" throw="" context="_1" location="f12:339" file="f12" line="339" extern="1">
+ <Argument name="__x" type="_482" location="f12:339" file="f12" line="339"/>
+ <Argument name="__y" type="_482" location="f12:339" file="f12" line="339"/>
</Function>
- <Function id="_62" name="__fdiml" returns="_481" throw="" context="_1" location="f12:336" file="f12" line="336" extern="1">
- <Argument name="__x" type="_481" location="f12:336" file="f12" line="336"/>
- <Argument name="__y" type="_481" location="f12:336" file="f12" line="336"/>
+ <Function id="_63" name="__fdiml" returns="_482" throw="" context="_1" location="f12:336" file="f12" line="336" extern="1">
+ <Argument name="__x" type="_482" location="f12:336" file="f12" line="336"/>
+ <Argument name="__y" type="_482" location="f12:336" file="f12" line="336"/>
</Function>
- <Function id="_63" name="fdiml" returns="_481" throw="" context="_1" location="f12:336" file="f12" line="336" extern="1">
- <Argument name="__x" type="_481" location="f12:336" file="f12" line="336"/>
- <Argument name="__y" type="_481" location="f12:336" file="f12" line="336"/>
+ <Function id="_64" name="fdiml" returns="_482" throw="" context="_1" location="f12:336" file="f12" line="336" extern="1">
+ <Argument name="__x" type="_482" location="f12:336" file="f12" line="336"/>
+ <Argument name="__y" type="_482" location="f12:336" file="f12" line="336"/>
</Function>
- <Function id="_64" name="__llroundl" returns="_1248" throw="" context="_1" location="f12:332" file="f12" line="332" extern="1">
- <Argument name="__x" type="_481" location="f12:332" file="f12" line="332"/>
+ <Function id="_65" name="__llroundl" returns="_1249" throw="" context="_1" location="f12:332" file="f12" line="332" extern="1">
+ <Argument name="__x" type="_482" location="f12:332" file="f12" line="332"/>
</Function>
- <Function id="_65" name="llroundl" returns="_1248" throw="" context="_1" location="f12:332" file="f12" line="332" extern="1">
- <Argument name="__x" type="_481" location="f12:332" file="f12" line="332"/>
+ <Function id="_66" name="llroundl" returns="_1249" throw="" context="_1" location="f12:332" file="f12" line="332" extern="1">
+ <Argument name="__x" type="_482" location="f12:332" file="f12" line="332"/>
</Function>
- <Function id="_66" name="__lroundl" returns="_1511" throw="" context="_1" location="f12:331" file="f12" line="331" extern="1">
- <Argument name="__x" type="_481" location="f12:331" file="f12" line="331"/>
+ <Function id="_67" name="__lroundl" returns="_1512" throw="" context="_1" location="f12:331" file="f12" line="331" extern="1">
+ <Argument name="__x" type="_482" location="f12:331" file="f12" line="331"/>
</Function>
- <Function id="_67" name="lroundl" returns="_1511" throw="" context="_1" location="f12:331" file="f12" line="331" extern="1">
- <Argument name="__x" type="_481" location="f12:331" file="f12" line="331"/>
+ <Function id="_68" name="lroundl" returns="_1512" throw="" context="_1" location="f12:331" file="f12" line="331" extern="1">
+ <Argument name="__x" type="_482" location="f12:331" file="f12" line="331"/>
</Function>
- <Function id="_68" name="__llrintl" returns="_1248" throw="" context="_1" location="f12:327" file="f12" line="327" extern="1">
- <Argument name="__x" type="_481" location="f12:327" file="f12" line="327"/>
+ <Function id="_69" name="__llrintl" returns="_1249" throw="" context="_1" location="f12:327" file="f12" line="327" extern="1">
+ <Argument name="__x" type="_482" location="f12:327" file="f12" line="327"/>
</Function>
- <Function id="_69" name="llrintl" returns="_1248" throw="" context="_1" location="f12:327" file="f12" line="327" extern="1">
- <Argument name="__x" type="_481" location="f12:327" file="f12" line="327"/>
+ <Function id="_70" name="llrintl" returns="_1249" throw="" context="_1" location="f12:327" file="f12" line="327" extern="1">
+ <Argument name="__x" type="_482" location="f12:327" file="f12" line="327"/>
</Function>
- <Function id="_70" name="__lrintl" returns="_1511" throw="" context="_1" location="f12:326" file="f12" line="326" extern="1">
- <Argument name="__x" type="_481" location="f12:326" file="f12" line="326"/>
+ <Function id="_71" name="__lrintl" returns="_1512" throw="" context="_1" location="f12:326" file="f12" line="326" extern="1">
+ <Argument name="__x" type="_482" location="f12:326" file="f12" line="326"/>
</Function>
- <Function id="_71" name="lrintl" returns="_1511" throw="" context="_1" location="f12:326" file="f12" line="326" extern="1">
- <Argument name="__x" type="_481" location="f12:326" file="f12" line="326"/>
+ <Function id="_72" name="lrintl" returns="_1512" throw="" context="_1" location="f12:326" file="f12" line="326" extern="1">
+ <Argument name="__x" type="_482" location="f12:326" file="f12" line="326"/>
</Function>
- <Function id="_72" name="__remquol" returns="_481" throw="" context="_1" location="f12:319" file="f12" line="319" extern="1">
- <Argument name="__x" type="_481" location="f12:319" file="f12" line="319"/>
- <Argument name="__y" type="_481" location="f12:319" file="f12" line="319"/>
+ <Function id="_73" name="__remquol" returns="_482" throw="" context="_1" location="f12:319" file="f12" line="319" extern="1">
+ <Argument name="__x" type="_482" location="f12:319" file="f12" line="319"/>
+ <Argument name="__y" type="_482" location="f12:319" file="f12" line="319"/>
<Argument name="__quo" type="_2686" location="f12:319" file="f12" line="319"/>
</Function>
- <Function id="_73" name="remquol" returns="_481" throw="" context="_1" location="f12:319" file="f12" line="319" extern="1">
- <Argument name="__x" type="_481" location="f12:319" file="f12" line="319"/>
- <Argument name="__y" type="_481" location="f12:319" file="f12" line="319"/>
+ <Function id="_74" name="remquol" returns="_482" throw="" context="_1" location="f12:319" file="f12" line="319" extern="1">
+ <Argument name="__x" type="_482" location="f12:319" file="f12" line="319"/>
+ <Argument name="__y" type="_482" location="f12:319" file="f12" line="319"/>
<Argument name="__quo" type="_2686" location="f12:319" file="f12" line="319"/>
</Function>
- <Function id="_74" name="__truncl" returns="_481" throw="" context="_1" location="f12:314" file="f12" line="314" extern="1" attributes="const">
- <Argument name="__x" type="_481" location="f12:314" file="f12" line="314"/>
+ <Function id="_75" name="__truncl" returns="_482" throw="" context="_1" location="f12:314" file="f12" line="314" extern="1" attributes="const">
+ <Argument name="__x" type="_482" location="f12:314" file="f12" line="314"/>
</Function>
- <Function id="_75" name="truncl" returns="_481" throw="" context="_1" location="f12:314" file="f12" line="314" extern="1" attributes="const">
- <Argument name="__x" type="_481" location="f12:314" file="f12" line="314"/>
+ <Function id="_76" name="truncl" returns="_482" throw="" context="_1" location="f12:314" file="f12" line="314" extern="1" attributes="const">
+ <Argument name="__x" type="_482" location="f12:314" file="f12" line="314"/>
</Function>
- <Function id="_76" name="__roundl" returns="_481" throw="" context="_1" location="f12:310" file="f12" line="310" extern="1" attributes="const">
- <Argument name="__x" type="_481" location="f12:310" file="f12" line="310"/>
+ <Function id="_77" name="__roundl" returns="_482" throw="" context="_1" location="f12:310" file="f12" line="310" extern="1" attributes="const">
+ <Argument name="__x" type="_482" location="f12:310" file="f12" line="310"/>
</Function>
- <Function id="_77" name="roundl" returns="_481" throw="" context="_1" location="f12:310" file="f12" line="310" extern="1" attributes="const">
- <Argument name="__x" type="_481" location="f12:310" file="f12" line="310"/>
+ <Function id="_78" name="roundl" returns="_482" throw="" context="_1" location="f12:310" file="f12" line="310" extern="1" attributes="const">
+ <Argument name="__x" type="_482" location="f12:310" file="f12" line="310"/>
</Function>
- <Function id="_78" name="__nearbyintl" returns="_481" throw="" context="_1" location="f12:306" file="f12" line="306" extern="1">
- <Argument name="__x" type="_481" location="f12:306" file="f12" line="306"/>
+ <Function id="_79" name="__nearbyintl" returns="_482" throw="" context="_1" location="f12:306" file="f12" line="306" extern="1">
+ <Argument name="__x" type="_482" location="f12:306" file="f12" line="306"/>
</Function>
- <Function id="_79" name="nearbyintl" returns="_481" throw="" context="_1" location="f12:306" file="f12" line="306" extern="1">
- <Argument name="__x" type="_481" location="f12:306" file="f12" line="306"/>
+ <Function id="_80" name="nearbyintl" returns="_482" throw="" context="_1" location="f12:306" file="f12" line="306" extern="1">
+ <Argument name="__x" type="_482" location="f12:306" file="f12" line="306"/>
</Function>
- <Function id="_80" name="__scalblnl" returns="_481" throw="" context="_1" location="f12:302" file="f12" line="302" extern="1">
- <Argument name="__x" type="_481" location="f12:302" file="f12" line="302"/>
- <Argument name="__n" type="_1511" location="f12:302" file="f12" line="302"/>
+ <Function id="_81" name="__scalblnl" returns="_482" throw="" context="_1" location="f12:302" file="f12" line="302" extern="1">
+ <Argument name="__x" type="_482" location="f12:302" file="f12" line="302"/>
+ <Argument name="__n" type="_1512" location="f12:302" file="f12" line="302"/>
</Function>
- <Function id="_81" name="scalblnl" returns="_481" throw="" context="_1" location="f12:302" file="f12" line="302" extern="1">
- <Argument name="__x" type="_481" location="f12:302" file="f12" line="302"/>
- <Argument name="__n" type="_1511" location="f12:302" file="f12" line="302"/>
+ <Function id="_82" name="scalblnl" returns="_482" throw="" context="_1" location="f12:302" file="f12" line="302" extern="1">
+ <Argument name="__x" type="_482" location="f12:302" file="f12" line="302"/>
+ <Argument name="__n" type="_1512" location="f12:302" file="f12" line="302"/>
</Function>
- <Function id="_82" name="__ilogbl" returns="_500" throw="" context="_1" location="f12:297" file="f12" line="297" extern="1">
- <Argument name="__x" type="_481" location="f12:297" file="f12" line="297"/>
+ <Function id="_83" name="__ilogbl" returns="_501" throw="" context="_1" location="f12:297" file="f12" line="297" extern="1">
+ <Argument name="__x" type="_482" location="f12:297" file="f12" line="297"/>
</Function>
- <Function id="_83" name="ilogbl" returns="_500" throw="" context="_1" location="f12:297" file="f12" line="297" extern="1">
- <Argument name="__x" type="_481" location="f12:297" file="f12" line="297"/>
+ <Function id="_84" name="ilogbl" returns="_501" throw="" context="_1" location="f12:297" file="f12" line="297" extern="1">
+ <Argument name="__x" type="_482" location="f12:297" file="f12" line="297"/>
</Function>
- <Function id="_84" name="__scalbnl" returns="_481" throw="" context="_1" location="f12:293" file="f12" line="293" extern="1">
- <Argument name="__x" type="_481" location="f12:293" file="f12" line="293"/>
- <Argument name="__n" type="_500" location="f12:293" file="f12" line="293"/>
+ <Function id="_85" name="__scalbnl" returns="_482" throw="" context="_1" location="f12:293" file="f12" line="293" extern="1">
+ <Argument name="__x" type="_482" location="f12:293" file="f12" line="293"/>
+ <Argument name="__n" type="_501" location="f12:293" file="f12" line="293"/>
</Function>
- <Function id="_85" name="scalbnl" returns="_481" throw="" context="_1" location="f12:293" file="f12" line="293" extern="1">
- <Argument name="__x" type="_481" location="f12:293" file="f12" line="293"/>
- <Argument name="__n" type="_500" location="f12:293" file="f12" line="293"/>
+ <Function id="_86" name="scalbnl" returns="_482" throw="" context="_1" location="f12:293" file="f12" line="293" extern="1">
+ <Argument name="__x" type="_482" location="f12:293" file="f12" line="293"/>
+ <Argument name="__n" type="_501" location="f12:293" file="f12" line="293"/>
</Function>
- <Function id="_86" name="__remainderl" returns="_481" throw="" context="_1" location="f12:289" file="f12" line="289" extern="1">
- <Argument name="__x" type="_481" location="f12:289" file="f12" line="289"/>
- <Argument name="__y" type="_481" location="f12:289" file="f12" line="289"/>
+ <Function id="_87" name="__remainderl" returns="_482" throw="" context="_1" location="f12:289" file="f12" line="289" extern="1">
+ <Argument name="__x" type="_482" location="f12:289" file="f12" line="289"/>
+ <Argument name="__y" type="_482" location="f12:289" file="f12" line="289"/>
</Function>
- <Function id="_87" name="remainderl" returns="_481" throw="" context="_1" location="f12:289" file="f12" line="289" extern="1">
- <Argument name="__x" type="_481" location="f12:289" file="f12" line="289"/>
- <Argument name="__y" type="_481" location="f12:289" file="f12" line="289"/>
+ <Function id="_88" name="remainderl" returns="_482" throw="" context="_1" location="f12:289" file="f12" line="289" extern="1">
+ <Argument name="__x" type="_482" location="f12:289" file="f12" line="289"/>
+ <Argument name="__y" type="_482" location="f12:289" file="f12" line="289"/>
</Function>
- <Function id="_88" name="__nexttowardl" returns="_481" throw="" context="_1" location="f12:285" file="f12" line="285" extern="1" attributes="const">
- <Argument name="__x" type="_481" location="f12:285" file="f12" line="285"/>
- <Argument name="__y" type="_481" location="f12:285" file="f12" line="285"/>
+ <Function id="_89" name="__nexttowardl" returns="_482" throw="" context="_1" location="f12:285" file="f12" line="285" extern="1" attributes="const">
+ <Argument name="__x" type="_482" location="f12:285" file="f12" line="285"/>
+ <Argument name="__y" type="_482" location="f12:285" file="f12" line="285"/>
</Function>
- <Function id="_89" name="nexttowardl" returns="_481" throw="" context="_1" location="f12:285" file="f12" line="285" extern="1" attributes="const">
- <Argument name="__x" type="_481" location="f12:285" file="f12" line="285"/>
- <Argument name="__y" type="_481" location="f12:285" file="f12" line="285"/>
+ <Function id="_90" name="nexttowardl" returns="_482" throw="" context="_1" location="f12:285" file="f12" line="285" extern="1" attributes="const">
+ <Argument name="__x" type="_482" location="f12:285" file="f12" line="285"/>
+ <Argument name="__y" type="_482" location="f12:285" file="f12" line="285"/>
</Function>
- <Function id="_90" name="__nextafterl" returns="_481" throw="" context="_1" location="f12:283" file="f12" line="283" extern="1" attributes="const">
- <Argument name="__x" type="_481" location="f12:283" file="f12" line="283"/>
...
[truncated message content] |
|
From: <mb...@us...> - 2006-09-24 07:00:55
|
Revision: 580
http://svn.sourceforge.net/pygccxml/?rev=580&view=rev
Author: mbaas
Date: 2006-09-24 00:00:50 -0700 (Sun, 24 Sep 2006)
Log Message:
-----------
Return the wrapper creator for non-virtual functions in the creator wizard.
Modified Paths:
--------------
pyplusplus_dev/pyplusplus/module_creator/creators_wizard.py
Modified: pyplusplus_dev/pyplusplus/module_creator/creators_wizard.py
===================================================================
--- pyplusplus_dev/pyplusplus/module_creator/creators_wizard.py 2006-09-24 06:59:53 UTC (rev 579)
+++ pyplusplus_dev/pyplusplus/module_creator/creators_wizard.py 2006-09-24 07:00:50 UTC (rev 580)
@@ -24,6 +24,7 @@
if decl.virtuality == VIRTUALITY_TYPES.NOT_VIRTUAL:
if decl.function_transformers:
maker_cls = code_creators.mem_fun_transformed_t
+ fwrapper_cls = code_creators.mem_fun_transformed_wrapper_t
else:
maker_cls = code_creators.mem_fun_t
elif decl.virtuality == VIRTUALITY_TYPES.PURE_VIRTUAL:
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <mb...@us...> - 2006-09-24 06:59:59
|
Revision: 579
http://svn.sourceforge.net/pygccxml/?rev=579&view=rev
Author: mbaas
Date: 2006-09-23 23:59:53 -0700 (Sat, 23 Sep 2006)
Log Message:
-----------
Added a test for non-virtual member functions.
Modified Paths:
--------------
pyplusplus_dev/unittests/data/function_transformations_to_be_exported.hpp
pyplusplus_dev/unittests/function_transformations_tester.py
Modified: pyplusplus_dev/unittests/data/function_transformations_to_be_exported.hpp
===================================================================
--- pyplusplus_dev/unittests/data/function_transformations_to_be_exported.hpp 2006-09-23 20:33:03 UTC (rev 578)
+++ pyplusplus_dev/unittests/data/function_transformations_to_be_exported.hpp 2006-09-24 06:59:53 UTC (rev 579)
@@ -84,6 +84,15 @@
return v[0]+v[1]+v[2];
}
+//////////////////////////////////////////////////////////////////////
+
+// A class without any virtual members
+struct no_virtual_members_t
+{
+ bool member(int& v) { v=17; return true; }
+};
+
+
}
#endif//__function_transformations_to_be_exported_hpp__
Modified: pyplusplus_dev/unittests/function_transformations_tester.py
===================================================================
--- pyplusplus_dev/unittests/function_transformations_tester.py 2006-09-23 20:33:03 UTC (rev 578)
+++ pyplusplus_dev/unittests/function_transformations_tester.py 2006-09-24 06:59:53 UTC (rev 579)
@@ -29,6 +29,10 @@
image.member_function( "fixed_output_array" ).function_transformers.extend([output_array_t(1,3)])
mb.free_function("get_cpp_instance").call_policies = return_value_policy(reference_existing_object)
mb.variable( "cpp_instance" ).exclude()
+
+ cls = mb.class_("no_virtual_members_t")
+ cls.member_function("member").function_transformers.append(output_t(1))
+
mb.decls(lambda decl: decl.name[0]=="_").exclude()
def run_tests(self, module):
@@ -135,7 +139,10 @@
# Check if the C++ class can also be passed back to C++
self.assertEqual(module.get_image_one_value(cppimg), 12)
+ ######### Test no_virtual_members_t ########
+ cls = module.no_virtual_members_t()
+ self.assertEqual(cls.member(), (True, 17))
def create_suite():
suite = unittest.TestSuite()
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <rom...@us...> - 2006-09-23 20:33:09
|
Revision: 578
http://svn.sourceforge.net/pygccxml/?rev=578&view=rev
Author: roman_yakovenko
Date: 2006-09-23 13:33:03 -0700 (Sat, 23 Sep 2006)
Log Message:
-----------
adding initial support for automatic registrayion
of opaque type
Modified Paths:
--------------
pyplusplus_dev/unittests/algorithms_tester.py
Modified: pyplusplus_dev/unittests/algorithms_tester.py
===================================================================
--- pyplusplus_dev/unittests/algorithms_tester.py 2006-09-23 20:30:56 UTC (rev 577)
+++ pyplusplus_dev/unittests/algorithms_tester.py 2006-09-23 20:33:03 UTC (rev 578)
@@ -125,9 +125,14 @@
CLASS_DEF = \
"""
namespace tester{
-
+
+ struct op_struct{};
+
+ op_struct* get_opaque();
+
void check_overload( int i=0, int j=1, int k=2 );
+
struct b{
enum EColor{ red, blue };
enum EFruit{ apple, orange };
@@ -139,6 +144,8 @@
int do_something(){ return 1; }
+ op_struct* get_opaque();
+
void check_overload( int i=0, int j=1, int k=2 );
int m_dummy;
@@ -153,6 +160,9 @@
, gccxml_path=autoconfig.gccxml.executable )
mb.namespace( name='::tester' ).include()
mb.calldefs( 'check_overload' ).use_overload_macro = True
+ mb.calldefs( 'get_opaque' ).call_policies \
+ = module_builder.call_policies.return_value_policy( module_builder.call_policies.return_opaque_pointer )
+ mb.class_( 'op_struct' ).exclude()
b = mb.class_( 'b' )
b.add_declaration_code( '//hello world' )
nested = b.class_( 'b_nested' )
@@ -167,6 +177,10 @@
"""
namespace tester{
+ struct op_struct{};
+
+ op_struct* get_opaque();
+
void check_overload( int i=0, int j=1, int k=2 );
struct x{
@@ -182,6 +196,8 @@
void check_overload( int i=0, int j=1, int k=2 );
+ op_struct* get_opaque();
+
int m_dummy;
struct x_nested{};
@@ -200,6 +216,9 @@
nested.add_declaration_code( '//hello nested decl' )
nested.add_registration_code( '//hello nested reg', False )
mb.calldefs( 'check_overload' ).use_overload_macro = True
+ mb.calldefs( 'get_opaque' ).call_policies \
+ = module_builder.call_policies.return_value_policy( module_builder.call_policies.return_opaque_pointer )
+ mb.class_( 'op_struct' ).exclude()
mb.build_code_creator('x_class_multi')
mb.split_module( autoconfig.build_dir
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <rom...@us...> - 2006-09-23 20:31:12
|
Revision: 577
http://svn.sourceforge.net/pygccxml/?rev=577&view=rev
Author: roman_yakovenko
Date: 2006-09-23 13:30:56 -0700 (Sat, 23 Sep 2006)
Log Message:
-----------
adding initial support for automatic registrayion
of opaque type
Modified Paths:
--------------
pyplusplus_dev/pyplusplus/code_creators/opaque_type_registrator.py
pyplusplus_dev/pyplusplus/file_writers/class_multiple_files.py
pyplusplus_dev/pyplusplus/file_writers/multiple_files.py
pyplusplus_dev/pyplusplus/module_creator/creator.py
Modified: pyplusplus_dev/pyplusplus/code_creators/opaque_type_registrator.py
===================================================================
--- pyplusplus_dev/pyplusplus/code_creators/opaque_type_registrator.py 2006-09-23 07:47:39 UTC (rev 576)
+++ pyplusplus_dev/pyplusplus/code_creators/opaque_type_registrator.py 2006-09-23 20:30:56 UTC (rev 577)
@@ -4,13 +4,16 @@
# http://www.boost.org/LICENSE_1_0.txt)
import os
+import code_creator
import declaration_based
-class opaque_type_registrator_t( declaration_based.declaration_based_t ):
+class opaque_type_registrator_t( code_creator.code_creator_t
+ , declaration_based.declaration_based_t ):
"""
This class creates code that register static sized array
"""
def __init__( self, pointee ):
+ code_creator.code_creator_t.__init__( self )
declaration_based.declaration_based_t.__init__( self, pointee )
self.works_on_instance = False
Modified: pyplusplus_dev/pyplusplus/file_writers/class_multiple_files.py
===================================================================
--- pyplusplus_dev/pyplusplus/file_writers/class_multiple_files.py 2006-09-23 07:47:39 UTC (rev 576)
+++ pyplusplus_dev/pyplusplus/file_writers/class_multiple_files.py 2006-09-23 20:30:56 UTC (rev 577)
@@ -108,7 +108,8 @@
for decl_creator in self.associated_decl_creators( creator ):
source_code.append( '' )
source_code.append( decl_creator.create() )
- decl_creator.create = lambda: ''
+ if not isinstance( decl_creator, self.ref_count_creators ):
+ decl_creator.create = lambda: ''
# Write the register() function...
source_code.append( '' )
@@ -228,7 +229,8 @@
for creator in class_creator.associated_decl_creators:
source_code.append( '' )
source_code.append( creator.create() )
- creator.create = lambda: ''
+ if not isinstance( creator, self.ref_count_creators ):
+ creator.create = lambda: ''
# Write the register() function...
source_code.append( '' )
Modified: pyplusplus_dev/pyplusplus/file_writers/multiple_files.py
===================================================================
--- pyplusplus_dev/pyplusplus/file_writers/multiple_files.py 2006-09-23 07:47:39 UTC (rev 576)
+++ pyplusplus_dev/pyplusplus/file_writers/multiple_files.py 2006-09-23 20:30:56 UTC (rev 577)
@@ -40,8 +40,8 @@
self.split_method_names = [] # List of methods from the split files
self.write_main = write_main
self.written_files = []
+ self.ref_count_creators = ( code_creators.opaque_type_registrator_t, )
-
def write_file( self, fpath, content ):
self.written_files.append( fpath )
writer.writer_t.write_file( fpath, content )
@@ -198,7 +198,8 @@
for creator in declaration_creators:
answer.append( '' )
answer.append( creator.create() )
- creator.create = lambda: ''
+ if not isinstance( creator, self.ref_count_creators ):
+ creator.create = lambda: ''
# Write the register() function...
answer.append( '' )
Modified: pyplusplus_dev/pyplusplus/module_creator/creator.py
===================================================================
--- pyplusplus_dev/pyplusplus/module_creator/creator.py 2006-09-23 07:47:39 UTC (rev 576)
+++ pyplusplus_dev/pyplusplus/module_creator/creator.py 2006-09-23 20:30:56 UTC (rev 577)
@@ -131,7 +131,7 @@
self.__array_1_registered = set() #(type.decl_string,size)
self.__free_operators = []
self.__exposed_free_fun_overloads = set()
- self.__exposed_opaque_decls = set()
+ self.__exposed_opaque_decls = {} #decl : creator
def _prepare_decls( self, decls, doc_extractor ):
global DO_NOT_REPORT_MSGS
@@ -319,18 +319,26 @@
return True #function transformers require wrapper
return bool( self.redefined_funcs(class_inst) )
- def register_opaque_type( self, type_, call_policy ):
+ def register_opaque_type( self, creator, type_, call_policy ):
if not decl_wrappers.is_return_opaque_pointer_policy( call_policy ):
return #not our case
naked_type = declarations.remove_cv( declarations.remove_pointer( type_ ) )
if decl_wrappers.python_traits.is_immutable( naked_type ):
return #don't register opaque converter for immutable types.
- if decl in self.__exposed_opaque_decls:
- return #already registered
- self.__exposed_opaque_decls.add( decl )
- creator = code_creators.opaque_type_registrator_t( decl )
- self.__extmodule.adopt_declaration_creator( creator )
-
+ decl = None
+ if declarations.is_class( naked_type ):
+ decl = declarations.class_traits.get_declaration( naked_type )
+ else:#class declaration:
+ decl = declarations.class_declaration_traits.get_declaration( naked_type )
+ opaque_type_registrator = None
+ if not id(decl) in self.__exposed_opaque_decls.keys():
+ opaque_type_registrator = code_creators.opaque_type_registrator_t( decl )
+ self.__exposed_opaque_decls[ id(decl) ] = opaque_type_registrator
+ self.__extmodule.adopt_declaration_creator( opaque_type_registrator )
+ else:
+ opaque_type_registrator = self.__exposed_opaque_decls[ id(decl) ]
+ creator.associated_decl_creators.append(opaque_type_registrator)
+
def _adopt_free_operator( self, operator ):
def adopt_operator_impl( operator, found_creators ):
creator = filter( lambda creator: isinstance( creator, code_creators.class_t )
@@ -535,7 +543,6 @@
self.__types_db.update( self.curr_decl )
if None is self.curr_decl.call_policies:
self.curr_decl.call_policies = self.__call_policies_resolver( self.curr_decl )
- self.register_opaque_type( self.curr_decl.return_type, self.curr_decl.call_policies )
maker_cls, fwrapper_cls = creators_wizard.find_out_mem_fun_creator_classes( self.curr_decl )
@@ -553,6 +560,8 @@
maker = maker_cls( function=self.curr_decl )
self.curr_code_creator.adopt_creator( maker )
+ self.register_opaque_type( maker, self.curr_decl.return_type, self.curr_decl.call_policies )
+
# Make sure all required headers are included...
required_headers = getattr(fwrapper, "get_required_headers", lambda : [])()
for header in required_headers:
@@ -566,7 +575,6 @@
# Make Py++ write the header
self.__extmodule.add_system_header( header )
-
if self.curr_decl.has_static:
#static_method should be created only once.
found = filter( lambda creator: isinstance( creator, code_creators.static_method_t )
@@ -615,17 +623,18 @@
if None is self.curr_decl.call_policies:
self.curr_decl.call_policies = self.__call_policies_resolver( self.curr_decl )
- self.register_opaque_type( self.curr_decl.return_type, self.curr_decl.call_policies )
self.__types_db.update( self.curr_decl )
if not self.curr_decl.parent.is_abstract \
and not declarations.is_reference( self.curr_decl.return_type ):
maker = code_creators.casting_operator_t( operator=self.curr_decl )
self.__module_body.adopt_creator( maker )
+ self.register_opaque_type( maker, self.curr_decl.return_type, self.curr_decl.call_policies )
#what to do if class is abstract
if self.curr_decl.access_type == ACCESS_TYPES.PUBLIC:
maker = code_creators.casting_member_operator_t( operator=self.curr_decl )
self.curr_code_creator.adopt_creator( maker )
+ self.register_opaque_type( maker, self.curr_decl.return_type, self.curr_decl.call_policies )
def visit_free_function( self ):
if self.curr_decl in self.__exposed_free_fun_overloads:
@@ -645,7 +654,6 @@
self.__types_db.update( f )
if None is f.call_policies:
f.call_policies = self.__call_policies_resolver( f )
- self.register_opaque_type( f.return_type, f.call_policies )
overloads_cls_creator = code_creators.free_fun_overloads_class_t( overloads )
self.__extmodule.adopt_declaration_creator( overloads_cls_creator )
@@ -653,13 +661,14 @@
overloads_reg = code_creators.free_fun_overloads_t( overloads_cls_creator )
self.curr_code_creator.adopt_creator( overloads_reg )
overloads_reg.associated_decl_creators.append( overloads_cls_creator )
+ self.register_opaque_type( overloads_reg, f.return_type, f.call_policies )
else:
self.__types_db.update( self.curr_decl )
if None is self.curr_decl.call_policies:
self.curr_decl.call_policies = self.__call_policies_resolver( self.curr_decl )
- self.register_opaque_type( self.curr_decl.return_type, self.curr_decl.call_policies )
maker = code_creators.free_function_t( function=self.curr_decl )
self.curr_code_creator.adopt_creator( maker )
+ self.register_opaque_type( maker, self.curr_decl.return_type, self.curr_decl.call_policies )
def visit_free_operator( self ):
self.__types_db.update( self.curr_decl )
@@ -685,15 +694,15 @@
self.__types_db.update( f )
if None is f.call_policies:
f.call_policies = self.__call_policies_resolver( f )
- self.register_opaque_type( f.return_type, f.call_policies )
overloads_cls_creator = code_creators.mem_fun_overloads_class_t( overloads )
self.__extmodule.adopt_declaration_creator( overloads_cls_creator )
overloads_reg = code_creators.mem_fun_overloads_t( overloads_cls_creator )
cls_creator.adopt_creator( overloads_reg )
+ overloads_reg.associated_decl_creators.append( overloads_cls_creator )
- overloads_reg.associated_decl_creators.append( overloads_cls_creator )
+ self.register_opaque_type( overloads_reg, f.return_type, f.call_policies )
return exposed
def visit_class(self ):
@@ -825,11 +834,11 @@
elif declarations.is_reference( self.curr_decl.type ):
if None is self.curr_decl.getter_call_policies:
self.curr_decl.getter_call_policies = self.__call_policies_resolver( self.curr_decl, 'get' )
- self.register_opaque_type( self.curr_decl.type, self.curr_decl.getter_call_policies )
if None is self.curr_decl.setter_call_policies:
self.curr_decl.setter_call_policies = self.__call_policies_resolver( self.curr_decl, 'set' )
wrapper = code_creators.mem_var_ref_wrapper_t( variable=self.curr_decl )
maker = code_creators.mem_var_ref_t( variable=self.curr_decl, wrapper=wrapper )
+ self.register_opaque_type( maker, self.curr_decl.type, self.curr_decl.getter_call_policies )
else:
maker = code_creators.member_variable_t( variable=self.curr_decl )
if wrapper:
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <rom...@us...> - 2006-09-23 07:47:45
|
Revision: 576
http://svn.sourceforge.net/pygccxml/?rev=576&view=rev
Author: roman_yakovenko
Date: 2006-09-23 00:47:39 -0700 (Sat, 23 Sep 2006)
Log Message:
-----------
operators & wrapper bug work around
Modified Paths:
--------------
pyplusplus_dev/pyplusplus/code_creators/calldef.py
pyplusplus_dev/pyplusplus/code_creators/class_declaration.py
Modified: pyplusplus_dev/pyplusplus/code_creators/calldef.py
===================================================================
--- pyplusplus_dev/pyplusplus/code_creators/calldef.py 2006-09-22 06:47:02 UTC (rev 575)
+++ pyplusplus_dev/pyplusplus/code_creators/calldef.py 2006-09-23 07:47:39 UTC (rev 576)
@@ -889,7 +889,7 @@
result.append( self.parent.wrapper_alias )
result.append( '(' )
args = []
- if self.parent.held_type and not self.target_configuration.boost_python_has_wrapper_held_type:
+ if not self.target_configuration.boost_python_has_wrapper_held_type:
args.append( 'PyObject*' )
args_decl = self.args_declaration()
if args_decl:
@@ -936,7 +936,7 @@
result = []
result.append( self.parent.wrapper_alias )
result.append( '(' )
- if self.parent.held_type and not self.target_configuration.boost_python_has_wrapper_held_type:
+ if not self.target_configuration.boost_python_has_wrapper_held_type:
result.append( 'PyObject*, ' )
declarated = declarations.declarated_t( self.declaration )
const_decl = declarations.const_t( declarated )
@@ -975,7 +975,7 @@
def _create_impl(self):
answer = [ self.parent.wrapper_alias + '(' ]
- if self.parent.held_type and not self.target_configuration.boost_python_has_wrapper_held_type:
+ if not self.target_configuration.boost_python_has_wrapper_held_type:
answer[0] = answer[0] + 'PyObject*'
answer[0] = answer[0] + ')'
answer.append( ': ' + self._create_constructor_call() )
Modified: pyplusplus_dev/pyplusplus/code_creators/class_declaration.py
===================================================================
--- pyplusplus_dev/pyplusplus/code_creators/class_declaration.py 2006-09-22 06:47:02 UTC (rev 575)
+++ pyplusplus_dev/pyplusplus/code_creators/class_declaration.py 2006-09-23 07:47:39 UTC (rev 576)
@@ -176,7 +176,7 @@
held_type = self._generated_held_type()
if self.wrapper:
- if held_type and not self.target_configuration.boost_python_has_wrapper_held_type:
+ if not self.target_configuration.boost_python_has_wrapper_held_type:
args.append( algorithm.create_identifier( self, self.declaration.decl_string ) )
args.append( self.wrapper.full_name )
else:
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <mb...@us...> - 2006-09-22 06:47:09
|
Revision: 575
http://svn.sourceforge.net/pygccxml/?rev=575&view=rev
Author: mbaas
Date: 2006-09-21 23:47:02 -0700 (Thu, 21 Sep 2006)
Log Message:
-----------
1) Switched to the Py++ arg policies. 2) Added a decoration method setAttr() that can be used to set arbitrary attributes on decl_wrappers.
Modified Paths:
--------------
pyplusplus_dev/contrib/pypp_api/pypp_api/__init__.py
pyplusplus_dev/contrib/pypp_api/pypp_api/declwrapper.py
Modified: pyplusplus_dev/contrib/pypp_api/pypp_api/__init__.py
===================================================================
--- pyplusplus_dev/contrib/pypp_api/pypp_api/__init__.py 2006-09-21 19:13:52 UTC (rev 574)
+++ pyplusplus_dev/contrib/pypp_api/pypp_api/__init__.py 2006-09-22 06:47:02 UTC (rev 575)
@@ -67,6 +67,11 @@
PRIVATE = ACCESS_TYPES.PRIVATE
from decltypes import arg, cpp
-from argpolicy import *
+#from argpolicy import *
+from pyplusplus.function_transformers.arg_policies import output_t as Output
+from pyplusplus.function_transformers.arg_policies import input_t as Input
+from pyplusplus.function_transformers.arg_policies import inout_t as InOut
+from pyplusplus.function_transformers.arg_policies import input_array_t as InputArray
+from pyplusplus.function_transformers.arg_policies import output_array_t as OutputArray
-from modulebuilder import ModuleBuilder
\ No newline at end of file
+from modulebuilder import ModuleBuilder
Modified: pyplusplus_dev/contrib/pypp_api/pypp_api/declwrapper.py
===================================================================
--- pyplusplus_dev/contrib/pypp_api/pypp_api/declwrapper.py 2006-09-21 19:13:52 UTC (rev 574)
+++ pyplusplus_dev/contrib/pypp_api/pypp_api/declwrapper.py 2006-09-22 06:47:02 UTC (rev 575)
@@ -254,8 +254,30 @@
if decoration_log!=None:
ps = ", ".join(map(lambda x: str(x), policies))
self._logDecoration("setArgPolicy(%s)"%ps, decl)
- self.modulebuilder.mArgPolicyManager.setArgPolicy(decl, policies)
+ decl.function_transformers.extend(list(policies))
+# self.modulebuilder.mArgPolicyManager.setArgPolicy(decl, policies)
+ # setAttr
+ def setAttr(self, attr, value):
+ """Set an arbitrary attribute.
+
+ Sets an arbitrary attribute on the contained decl_wrappers.
+
+ This method can be used as a backdoor to access Py++
+ decl_wrapper properties that are not directly exposed in
+ pypp_api (yet).
+
+ @param attr: Attribute name
+ @type attr: str
+ @param value: The value that should be set
+ """
+ self._checkLock()
+ for decl in self._iterContained():
+ if decoration_log!=None:
+ self._logDecoration('setAttr("%s", %s)'%(attr,value), decl)
+ setattr(decl, attr, value)
+ return self
+
# addMethod
def addMethod(self, name, impl):
"""Add a new method to a class.
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <rom...@us...> - 2006-09-21 19:14:04
|
Revision: 574
http://svn.sourceforge.net/pygccxml/?rev=574&view=rev
Author: roman_yakovenko
Date: 2006-09-21 12:13:52 -0700 (Thu, 21 Sep 2006)
Log Message:
-----------
fixing bug in associated_decl_creators functionality
Modified Paths:
--------------
pyplusplus_dev/pyplusplus/file_writers/class_multiple_files.py
pyplusplus_dev/pyplusplus/file_writers/multiple_files.py
pyplusplus_dev/pyplusplus/module_creator/creator.py
pyplusplus_dev/unittests/algorithms_tester.py
Modified: pyplusplus_dev/pyplusplus/file_writers/class_multiple_files.py
===================================================================
--- pyplusplus_dev/pyplusplus/file_writers/class_multiple_files.py 2006-09-21 12:41:16 UTC (rev 573)
+++ pyplusplus_dev/pyplusplus/file_writers/class_multiple_files.py 2006-09-21 19:13:52 UTC (rev 574)
@@ -157,7 +157,7 @@
return patterns
def split_internal_memfuns( self, class_creator ):
- calldef_types = ( code_creators.mem_fun_t )
+ calldef_types = ( code_creators.mem_fun_t, code_creators.mem_fun_overloads_t )
return self.split_internal_calldefs( class_creator, calldef_types, 'memfuns' )
def split_internal_v_memfuns( self, class_creator ):
Modified: pyplusplus_dev/pyplusplus/file_writers/multiple_files.py
===================================================================
--- pyplusplus_dev/pyplusplus/file_writers/multiple_files.py 2006-09-21 12:41:16 UTC (rev 573)
+++ pyplusplus_dev/pyplusplus/file_writers/multiple_files.py 2006-09-21 19:13:52 UTC (rev 574)
@@ -70,10 +70,10 @@
internal_creators = []
if isinstance( creator, code_creators.compound_t ):
- internal_creators.extend(
- filter( lambda acreator: isinstance( acreator, code_creators.compound_t )
+ internal_creators.extend(
+ filter( lambda creator: isinstance( creator, code_creators.registration_based_t )
, code_creators.make_flatten( creator.creators ) ) )
-
+
map( lambda internal_creator: associated_creators.extend( internal_creator.associated_decl_creators )
, internal_creators )
#now associated_creators contains all code creators associated with the creator
@@ -315,8 +315,8 @@
def split_free_functions( self ):
"""Write all free functions into a separate .h/.cpp file.
"""
- creators = filter( lambda x: isinstance(x, code_creators.free_function_t )
- , self.extmodule.body.creators )
+ free_functions = ( code_creators.free_function_t, code_creators.free_fun_overloads_t )
+ creators = filter( lambda x: isinstance(x, free_functions ), self.extmodule.body.creators )
self.split_creators( creators, '_free_functions', 'register_free_functions', -1 )
#TODO: move write_main to __init__
Modified: pyplusplus_dev/pyplusplus/module_creator/creator.py
===================================================================
--- pyplusplus_dev/pyplusplus/module_creator/creator.py 2006-09-21 12:41:16 UTC (rev 573)
+++ pyplusplus_dev/pyplusplus/module_creator/creator.py 2006-09-21 19:13:52 UTC (rev 574)
@@ -646,11 +646,13 @@
if None is f.call_policies:
f.call_policies = self.__call_policies_resolver( f )
self.register_opaque_type( f.return_type, f.call_policies )
+
overloads_cls_creator = code_creators.free_fun_overloads_class_t( overloads )
self.__extmodule.adopt_declaration_creator( overloads_cls_creator )
overloads_reg = code_creators.free_fun_overloads_t( overloads_cls_creator )
self.curr_code_creator.adopt_creator( overloads_reg )
+ overloads_reg.associated_decl_creators.append( overloads_cls_creator )
else:
self.__types_db.update( self.curr_decl )
if None is self.curr_decl.call_policies:
@@ -687,10 +689,11 @@
overloads_cls_creator = code_creators.mem_fun_overloads_class_t( overloads )
self.__extmodule.adopt_declaration_creator( overloads_cls_creator )
- cls_creator.associated_decl_creators.append( overloads_cls_creator )
-
+
overloads_reg = code_creators.mem_fun_overloads_t( overloads_cls_creator )
cls_creator.adopt_creator( overloads_reg )
+
+ overloads_reg.associated_decl_creators.append( overloads_cls_creator )
return exposed
def visit_class(self ):
Modified: pyplusplus_dev/unittests/algorithms_tester.py
===================================================================
--- pyplusplus_dev/unittests/algorithms_tester.py 2006-09-21 12:41:16 UTC (rev 573)
+++ pyplusplus_dev/unittests/algorithms_tester.py 2006-09-21 19:13:52 UTC (rev 574)
@@ -125,6 +125,9 @@
CLASS_DEF = \
"""
namespace tester{
+
+ void check_overload( int i=0, int j=1, int k=2 );
+
struct b{
enum EColor{ red, blue };
enum EFruit{ apple, orange };
@@ -134,8 +137,10 @@
void do_nothing(){}
- int do_somghing(){ return 1; }
+ int do_something(){ return 1; }
+ void check_overload( int i=0, int j=1, int k=2 );
+
int m_dummy;
struct b_nested{};
@@ -147,6 +152,7 @@
[ module_builder.create_text_fc( self.CLASS_DEF ) ]
, gccxml_path=autoconfig.gccxml.executable )
mb.namespace( name='::tester' ).include()
+ mb.calldefs( 'check_overload' ).use_overload_macro = True
b = mb.class_( 'b' )
b.add_declaration_code( '//hello world' )
nested = b.class_( 'b_nested' )
@@ -160,6 +166,9 @@
CLASS_DEF = \
"""
namespace tester{
+
+ void check_overload( int i=0, int j=1, int k=2 );
+
struct x{
enum EColor{ red, blue };
enum EFruit{ apple, orange };
@@ -169,7 +178,9 @@
void do_nothing(){}
- int do_somghing(){ return 1; }
+ int do_something(){ return 1; }
+
+ void check_overload( int i=0, int j=1, int k=2 );
int m_dummy;
@@ -188,6 +199,7 @@
nested = x.class_( 'x_nested' )
nested.add_declaration_code( '//hello nested decl' )
nested.add_registration_code( '//hello nested reg', False )
+ mb.calldefs( 'check_overload' ).use_overload_macro = True
mb.build_code_creator('x_class_multi')
mb.split_module( autoconfig.build_dir
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <mb...@us...> - 2006-09-21 12:41:23
|
Revision: 573
http://svn.sourceforge.net/pygccxml/?rev=573&view=rev
Author: mbaas
Date: 2006-09-21 05:41:16 -0700 (Thu, 21 Sep 2006)
Log Message:
-----------
Renamed gil_state_t to gil_guard_t.
Modified Paths:
--------------
pyplusplus_dev/pyplusplus/code_creators/calldef_transformed.py
Modified: pyplusplus_dev/pyplusplus/code_creators/calldef_transformed.py
===================================================================
--- pyplusplus_dev/pyplusplus/code_creators/calldef_transformed.py 2006-09-21 11:31:18 UTC (rev 572)
+++ pyplusplus_dev/pyplusplus/code_creators/calldef_transformed.py 2006-09-21 12:41:16 UTC (rev 573)
@@ -329,7 +329,7 @@
if thread_safe:
body = """
-pyplusplus::threading::gil_state_t %(gstate_var)s;
+pyplusplus::threading::gil_guard_t %(gstate_var)s;
%(gstate_var)s.ensure();
boost::python::override %(override_var)s = this->get_override( "%(alias)s" );
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <rom...@us...> - 2006-09-21 11:31:23
|
Revision: 572
http://svn.sourceforge.net/pygccxml/?rev=572&view=rev
Author: roman_yakovenko
Date: 2006-09-21 04:31:18 -0700 (Thu, 21 Sep 2006)
Log Message:
-----------
fix treatment of function tramsformations
Modified Paths:
--------------
pyplusplus_dev/pyplusplus/module_creator/creator.py
Modified: pyplusplus_dev/pyplusplus/module_creator/creator.py
===================================================================
--- pyplusplus_dev/pyplusplus/module_creator/creator.py 2006-09-21 09:54:39 UTC (rev 571)
+++ pyplusplus_dev/pyplusplus/module_creator/creator.py 2006-09-21 11:31:18 UTC (rev 572)
@@ -315,6 +315,8 @@
return True #virtual and pure virtual functions requieres wrappers.
if member.access_type in ( ACCESS_TYPES.PROTECTED, ACCESS_TYPES.PRIVATE ):
return True #we already decided that those functions should be exposed, so I need wrapper for them
+ if member.function_transformers:
+ return True #function transformers require wrapper
return bool( self.redefined_funcs(class_inst) )
def register_opaque_type( self, type_, call_policy ):
@@ -551,19 +553,6 @@
maker = maker_cls( function=self.curr_decl )
self.curr_code_creator.adopt_creator( maker )
- # Are we dealing with transformed non-virtual member functions?
- if maker_cls==code_creators.mem_fun_transformed_t:
- # Create the code creator that generates the function source code
- fwrapper = code_creators.mem_fun_transformed_wrapper_t(self.curr_decl)
- # and add it either to the wrapper class or just to the declaration
- # area of the cpp file
- if self.curr_code_creator.wrapper is None:
- self.curr_code_creator.associated_decl_creators.append(fwrapper)
- else:
- self.curr_code_creator.wrapper.adopt_creator(fwrapper)
- # Set the wrapper so that the registration code will refer to it
- maker.wrapper = fwrapper
-
# Make sure all required headers are included...
required_headers = getattr(fwrapper, "get_required_headers", lambda : [])()
for header in required_headers:
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <mb...@us...> - 2006-09-21 09:54:49
|
Revision: 571
http://svn.sourceforge.net/pygccxml/?rev=571&view=rev
Author: mbaas
Date: 2006-09-21 02:54:39 -0700 (Thu, 21 Sep 2006)
Log Message:
-----------
1) Renamed gil_state to gil_guard (and moved the class under pyplusplus::threading). 2) The code creator can tell the module creator what header files it requires. As a result, the header file(s) from the code repository (i.e. __gil_guard.pypp.hpp) only gets created when it is really required. 3) Moved the functionality to add/query required headers from the substitution manager to the code manager.
Modified Paths:
--------------
pyplusplus_dev/pyplusplus/code_creators/calldef_transformed.py
pyplusplus_dev/pyplusplus/function_transformers/code_manager.py
pyplusplus_dev/pyplusplus/function_transformers/substitution_manager.py
pyplusplus_dev/pyplusplus/module_creator/creator.py
Modified: pyplusplus_dev/pyplusplus/code_creators/calldef_transformed.py
===================================================================
--- pyplusplus_dev/pyplusplus/code_creators/calldef_transformed.py 2006-09-21 09:51:06 UTC (rev 570)
+++ pyplusplus_dev/pyplusplus/code_creators/calldef_transformed.py 2006-09-21 09:54:39 UTC (rev 571)
@@ -10,6 +10,7 @@
from pygccxml import declarations
from calldef import calldef_t, calldef_wrapper_t
import pyplusplus.function_transformers as function_transformers
+from pyplusplus import code_repository
######################################################################
@@ -64,6 +65,10 @@
"""
calldef_wrapper_t.__init__( self, function=function )
+ # Create the substitution manager
+ sm = function_transformers.substitution_manager_t(function, transformers=function.function_transformers)
+ self._subst_manager = sm
+
# def is_free_function(self):
# """Return True if the generated function is a free function.
#
@@ -151,10 +156,6 @@
return os.linesep.join( answer )
def _create_impl(self):
- # Create the substitution manager
- decl = self.declaration
- sm = function_transformers.substitution_manager_t(decl, transformers=decl.function_transformers)
- self._subst_manager = sm
answer = self.create_function()
@@ -226,12 +227,17 @@
@type function: calldef_t
"""
calldef_wrapper_t.__init__( self, function=function )
-
+
+ # Create the substitution manager
+ sm = function_transformers.substitution_manager_t(function, transformers=function.function_transformers)
+ self._subst_manager = sm
+
# Stores the name of the variable that holds the override
- self._override_var = None
+ self._override_var = sm.virtual_func.allocate_local(function.alias+"_callable")
# Stores the name of the 'gstate' variable
- self._gstate_var = None
+ self._gstate_var = sm.virtual_func.allocate_local("gstate")
+
def default_name(self):
"""Return the name of the 'default' function.
@@ -323,7 +329,7 @@
if thread_safe:
body = """
-pyplusplus::gil_state_t %(gstate_var)s;
+pyplusplus::threading::gil_state_t %(gstate_var)s;
%(gstate_var)s.ensure();
boost::python::override %(override_var)s = this->get_override( "%(alias)s" );
@@ -478,15 +484,15 @@
answer.append( self.indent( self.create_default_body() ) )
answer.append( '}' )
return os.linesep.join( answer )
-
+ def get_required_headers(self):
+ """Return a list of required header file names."""
+ res = [code_repository.gil_guard.file_name]
+ res += self._subst_manager.virtual_func.get_required_headers()
+ res += self._subst_manager.wrapper_func.get_required_headers()
+ return res
+
def _create_impl(self):
- # Create the substitution manager
- decl = self.declaration
- sm = function_transformers.substitution_manager_t(decl, transformers=decl.function_transformers)
- self._override_var = sm.virtual_func.allocate_local(decl.alias+"_callable")
- self._gstate_var = sm.virtual_func.allocate_local("gstate")
- self._subst_manager = sm
answer = [ self.create_function() ]
answer.append( os.linesep )
Modified: pyplusplus_dev/pyplusplus/function_transformers/code_manager.py
===================================================================
--- pyplusplus_dev/pyplusplus/function_transformers/code_manager.py 2006-09-21 09:51:06 UTC (rev 570)
+++ pyplusplus_dev/pyplusplus/function_transformers/code_manager.py 2006-09-21 09:54:39 UTC (rev 571)
@@ -94,6 +94,39 @@
# A list with variable tuples: (name, type, size, default)
self._local_var_list = []
+ # Required header file names
+ self._required_headers = []
+
+ # require_header
+ def require_header(self, include):
+ """Declare an include file that is required for the code to compile.
+
+ include is the name of the include file which may contain <> or ""
+ characters around the name (which are currently ignored).
+ If an include file is declared twice it will only be added once.
+
+ @param include: The name of the include file (may contain <> or "")
+ @type include: str
+ """
+ if include=="":
+ return
+
+ # Add apostrophes if there aren't any already
+ if include[0] in '"<':
+ include = include[1:-1]
+
+ if include not in self._required_headers:
+ self._required_headers.append(include)
+
+ # get_required_headers
+ def get_required_headers(self, where=None):
+ """Return a list of include files required for the function.
+
+ @return: A list of include file names
+ @rtype: list of str
+ """
+ return self._required_headers
+
# declare_local
def declare_local(self, name, type, size=None, default=None):
"""Declare a local variable and return its final name.
Modified: pyplusplus_dev/pyplusplus/function_transformers/substitution_manager.py
===================================================================
--- pyplusplus_dev/pyplusplus/function_transformers/substitution_manager.py 2006-09-21 09:51:06 UTC (rev 570)
+++ pyplusplus_dev/pyplusplus/function_transformers/substitution_manager.py 2006-09-21 09:54:39 UTC (rev 571)
@@ -160,8 +160,8 @@
@ivar virtual_func: The L{code manager<code_manager_t>} object that manages the virtual function. This is used by the arg policies to modify the virtual function.
@type virtual_func: L{code_manager_t}
- @group Methods called by the user of the class: append_code_block, subst_wrapper, subst_virtual, get_includes
- @group Methods called by the function transformers: remove_arg, insert_arg, py_result_expr, require_include
+ @group Methods called by the user of the class: append_code_block, subst_wrapper, subst_virtual
+ @group Methods called by the function transformers: remove_arg, insert_arg, py_result_expr
@author: Matthias Baas
"""
@@ -466,66 +466,6 @@
else:
return "%s[%d]"%(pyresult, idx)
- # require_include
- def require_include(self, include, where=None):
- """Declare an include file that is required for the code to compile.
-
- This function is supposed to be called by function transformer
- objects to tell the substitution manager that they create code
- that requires a particular header file.
-
- include is the name of the include file which may contain <> or ""
- characters around the name.
-
- @param include: The name of the include file (may contain <> or "")
- @type include: str
- @param where: "wrapper", "virtual" or None (for both)
- @type where: str
- """
- if where not in ["wrapper", "virtual", None]:
- raise ValueError, "Invalid 'where' argument: %s"%where
-
- if include=="":
- return
-
- # Add apostrophes if there aren't any already
- if include[0] not in '"<':
- include = '"%s"'%include
-
- if where=="wrapper" or where==None:
- if include not in self._wrapper_includes:
- self._wrapper_includes.append(include)
-
- if where=="virtual" or where==None:
- if include not in self._virtual_includes:
- self._virtual_includes.append(include)
-
- # get_includes
- def get_includes(self, where=None):
- """Return a list of include files required for the wrapper and/or the virtual function.
-
- @param where: "wrapper", "virtual" or None (for a combined list)
- @type where: str
- @return: A list of include file names (all names contain <> or "")
- @rtype: list of str
- """
- if where not in ["wrapper", "virtual", None]:
- raise ValueError, "Invalid 'where' argument: %s"%where
-
- if where=="wrapper":
- return self._wrapper_includes[:]
-
- if where=="virtual":
- return self._virtual_includes[:]
-
- # Merge both lists (without duplicating names)
- res = self._virtual_includes[:]
- for inc in self._wrapper_includes:
- if inc not in res:
- res.append(inc)
-
- return res
-
# subst_virtual
def subst_virtual(self, template):
"""Perform a text substitution using the "virtual" variable set.
Modified: pyplusplus_dev/pyplusplus/module_creator/creator.py
===================================================================
--- pyplusplus_dev/pyplusplus/module_creator/creator.py 2006-09-21 09:51:06 UTC (rev 570)
+++ pyplusplus_dev/pyplusplus/module_creator/creator.py 2006-09-21 09:54:39 UTC (rev 571)
@@ -554,23 +554,30 @@
# Are we dealing with transformed non-virtual member functions?
if maker_cls==code_creators.mem_fun_transformed_t:
# Create the code creator that generates the function source code
- mftw = code_creators.mem_fun_transformed_wrapper_t(self.curr_decl)
+ fwrapper = code_creators.mem_fun_transformed_wrapper_t(self.curr_decl)
# and add it either to the wrapper class or just to the declaration
# area of the cpp file
if self.curr_code_creator.wrapper is None:
- self.curr_code_creator.associated_decl_creators.append(mftw)
+ self.curr_code_creator.associated_decl_creators.append(fwrapper)
else:
- self.curr_code_creator.wrapper.adopt_creator(mftw)
+ self.curr_code_creator.wrapper.adopt_creator(fwrapper)
# Set the wrapper so that the registration code will refer to it
- maker.wrapper = mftw
+ maker.wrapper = fwrapper
- # Include the gil_state header from the code repository.
- if not self.__extmodule.is_system_header(code_repository.gil_state.file_name):
- self.__extmodule.add_system_header( code_repository.gil_state.file_name )
- self.__extmodule.adopt_creator( code_creators.include_t( code_repository.gil_state.file_name )
- , self.__extmodule.first_include_index() + 1)
+ # Make sure all required headers are included...
+ required_headers = getattr(fwrapper, "get_required_headers", lambda : [])()
+ for header in required_headers:
+ # Check whether the header is already included
+ included = filter(lambda cc: isinstance(cc, code_creators.include_t) and cc.header==header, self.__extmodule.creators)
+ if not included:
+ self.__extmodule.add_include( header )
+ # Check if it is a header from the code repository
+ if header in map(lambda mod: mod.file_name, code_repository.all):
+ # Make Py++ write the header
+ self.__extmodule.add_system_header( header )
+
if self.curr_decl.has_static:
#static_method should be created only once.
found = filter( lambda creator: isinstance( creator, code_creators.static_method_t )
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <rom...@us...> - 2006-09-21 09:51:19
|
Revision: 570
http://svn.sourceforge.net/pygccxml/?rev=570&view=rev
Author: roman_yakovenko
Date: 2006-09-21 02:51:06 -0700 (Thu, 21 Sep 2006)
Log Message:
-----------
adding support for associated_decl_creators to file writers
Modified Paths:
--------------
pyplusplus_dev/pyplusplus/code_creators/__init__.py
pyplusplus_dev/pyplusplus/code_creators/class_declaration.py
pyplusplus_dev/pyplusplus/file_writers/class_multiple_files.py
pyplusplus_dev/pyplusplus/file_writers/multiple_files.py
pyplusplus_dev/pyplusplus/module_creator/creator.py
Modified: pyplusplus_dev/pyplusplus/code_creators/__init__.py
===================================================================
--- pyplusplus_dev/pyplusplus/code_creators/__init__.py 2006-09-21 09:48:15 UTC (rev 569)
+++ pyplusplus_dev/pyplusplus/code_creators/__init__.py 2006-09-21 09:51:06 UTC (rev 570)
@@ -27,6 +27,8 @@
from declaration_based import declaration_based_t
+from registration_based import registration_based_t
+
from scoped import scoped_t
from module_body import module_body_t
@@ -121,4 +123,4 @@
from exception_translator import exception_translator_t
from exception_translator import exception_translator_register_t
-from opaque_type_registrator import opaque_type_registrator_t
\ No newline at end of file
+from opaque_type_registrator import opaque_type_registrator_t
Modified: pyplusplus_dev/pyplusplus/code_creators/class_declaration.py
===================================================================
--- pyplusplus_dev/pyplusplus/code_creators/class_declaration.py 2006-09-21 09:48:15 UTC (rev 569)
+++ pyplusplus_dev/pyplusplus/code_creators/class_declaration.py 2006-09-21 09:51:06 UTC (rev 570)
@@ -90,7 +90,6 @@
registration_based.registration_based_t.__init__( self )
self._wrapper = wrapper
self.works_on_instance = False
- self._associated_decl_creators = []
def _get_wrapper( self ):
return self._wrapper
@@ -98,11 +97,6 @@
self._wrapper = new_wrapper
wrapper = property( _get_wrapper, _set_wrapper )
- @property
- def associated_decl_creators( self ):
- """ references to class declaration code creators. """
- return self._associated_decl_creators
-
def _get_held_type(self):
return self.declaration.held_type
def _set_held_type(self, held_type):
Modified: pyplusplus_dev/pyplusplus/file_writers/class_multiple_files.py
===================================================================
--- pyplusplus_dev/pyplusplus/file_writers/class_multiple_files.py 2006-09-21 09:48:15 UTC (rev 569)
+++ pyplusplus_dev/pyplusplus/file_writers/class_multiple_files.py 2006-09-21 09:51:06 UTC (rev 570)
@@ -72,7 +72,7 @@
header_file = os.path.join( self.directory_path, self.wrapper_header(class_creator) )
self.write_file( header_file, wrapper_code )
- def split_internal_creators( self, class_creator, creators, pattern, decl_creators=None):
+ def split_internal_creators( self, class_creator, creators, pattern ):
file_path = os.path.join( self.directory_path
, self.create_base_fname( class_creator, pattern ) )
@@ -104,8 +104,8 @@
source_code.append( '' )
source_code.append( self.create_namespaces_code( creators ) )
- if decl_creators:
- for decl_creator in decl_creators:
+ for creator in creators:
+ for decl_creator in self.associated_decl_creators( creator ):
source_code.append( '' )
source_code.append( decl_creator.create() )
decl_creator.create = lambda: ''
@@ -174,22 +174,12 @@
, code_creators.mem_fun_protected_s_t
, code_creators.mem_fun_protected_v_t
, code_creators.mem_fun_protected_pv_t )
-
return self.split_internal_calldefs( class_creator, calldef_types, 'protected_memfuns' )
-
def split_internal_classes( self, class_creator ):
class_types = ( code_creators.class_t, code_creators.class_declaration_t )
creators = filter( lambda x: isinstance(x, class_types ), class_creator.creators )
-
- decl_creators = []
- class_creators = filter( lambda creator: isinstance( creator, code_creators.class_t )
- , creators )
-
- map( lambda creator: decl_creators.extend( self.associated_decl_creators( creator ) )
- , class_creators )
-
- self.split_internal_creators( class_creator, creators, 'classes', decl_creators )
+ self.split_internal_creators( class_creator, creators, 'classes' )
return 'classes'
def split_internal_member_variables( self, class_creator ):
Modified: pyplusplus_dev/pyplusplus/file_writers/multiple_files.py
===================================================================
--- pyplusplus_dev/pyplusplus/file_writers/multiple_files.py 2006-09-21 09:48:15 UTC (rev 569)
+++ pyplusplus_dev/pyplusplus/file_writers/multiple_files.py 2006-09-21 09:51:06 UTC (rev 570)
@@ -63,17 +63,23 @@
def associated_decl_creators( self, creator ):
""" references to all class declaration code creators. """
- if not isinstance( creator, code_creators.class_t ):
+ if not isinstance( creator, code_creators.registration_based_t ):
return []
-
+
associated_creators = creator.associated_decl_creators[:]
- relevant_creators = filter( lambda acreator: isinstance( acreator, code_creators.class_t )
- , code_creators.make_flatten( creator.creators ) )
+ internal_creators = []
+ if isinstance( creator, code_creators.compound_t ):
+ internal_creators.extend(
+ filter( lambda acreator: isinstance( acreator, code_creators.compound_t )
+ , code_creators.make_flatten( creator.creators ) ) )
- map( lambda acreator: associated_creators.extend( acreator.associated_decl_creators )
- , relevant_creators )
-
+ map( lambda internal_creator: associated_creators.extend( internal_creator.associated_decl_creators )
+ , internal_creators )
+ #now associated_creators contains all code creators associated with the creator
+ #We should leave only creators, defined in the global namespace
+ associated_creators = filter( lambda associated_creator: associated_creator.parent is self.extmodule
+ , associated_creators )
return associated_creators
def create_function_code( self, function_name ):
@@ -160,7 +166,7 @@
else:
return os.linesep.join( map( lambda creator: creator.create(), ns_creators ) )
- def create_source( self, file_name, function_name, registration_creators, declaration_creators=None ):
+ def create_source( self, file_name, function_name, registration_creators ):
"""Return the content of a cpp file.
@param file_name: The base name of the corresponding include file (without extension)
@@ -172,9 +178,10 @@
@returns: The content for a cpp file
@rtype: str
"""
+ declaration_creators = []
+ for rc in registration_creators:
+ declaration_creators.extend( self.associated_decl_creators( rc ) )
- if None is declaration_creators:
- declaration_creators = []
creators = registration_creators + declaration_creators
answer = []
@@ -211,19 +218,10 @@
self.write_file( header_name
, self.create_header( class_creator.alias
, self.create_function_code( function_name ) ) )
- class_wrapper = None
- decl_creators = []
- if isinstance( class_creator, code_creators.class_t ):
- decl_creators.extend( self.associated_decl_creators( class_creator ) )
- if class_creator.wrapper:
- class_wrapper = class_creator.wrapper
- decl_creators.append( class_creator.wrapper )
# Write the .cpp file...
- cpp_code = self.create_source( class_creator.alias
- , function_name
- , [class_creator]
- , decl_creators )
+ cpp_code = self.create_source( class_creator.alias, function_name, [class_creator] )
+
self.write_file( file_path + self.SOURCE_EXT, cpp_code )
# Replace the create() method so that only the register() method is called
@@ -286,9 +284,8 @@
self.write_file( header_name
, self.create_header( file_pattern, self.create_function_code( function_name ) ) )
self.write_file( file_path + self.SOURCE_EXT
- , self.create_source( file_pattern
- , function_name
- , creators ))
+ , self.create_source( file_pattern, function_name, creators ))
+
for creator in creators:
creator.create = lambda: ''
self.extmodule.body.adopt_creator(
Modified: pyplusplus_dev/pyplusplus/module_creator/creator.py
===================================================================
--- pyplusplus_dev/pyplusplus/module_creator/creator.py 2006-09-21 09:48:15 UTC (rev 569)
+++ pyplusplus_dev/pyplusplus/module_creator/creator.py 2006-09-21 09:51:06 UTC (rev 570)
@@ -132,7 +132,7 @@
self.__free_operators = []
self.__exposed_free_fun_overloads = set()
self.__exposed_opaque_decls = set()
-
+
def _prepare_decls( self, decls, doc_extractor ):
global DO_NOT_REPORT_MSGS
@@ -534,7 +534,7 @@
if None is self.curr_decl.call_policies:
self.curr_decl.call_policies = self.__call_policies_resolver( self.curr_decl )
self.register_opaque_type( self.curr_decl.return_type, self.curr_decl.call_policies )
-
+
maker_cls, fwrapper_cls = creators_wizard.find_out_mem_fun_creator_classes( self.curr_decl )
maker = None
@@ -569,8 +569,8 @@
self.__extmodule.add_system_header( code_repository.gil_state.file_name )
self.__extmodule.adopt_creator( code_creators.include_t( code_repository.gil_state.file_name )
, self.__extmodule.first_include_index() + 1)
-
+
if self.curr_decl.has_static:
#static_method should be created only once.
found = filter( lambda creator: isinstance( creator, code_creators.static_method_t )
@@ -620,7 +620,7 @@
if None is self.curr_decl.call_policies:
self.curr_decl.call_policies = self.__call_policies_resolver( self.curr_decl )
self.register_opaque_type( self.curr_decl.return_type, self.curr_decl.call_policies )
-
+
self.__types_db.update( self.curr_decl )
if not self.curr_decl.parent.is_abstract \
and not declarations.is_reference( self.curr_decl.return_type ):
@@ -710,6 +710,7 @@
wrapper = code_creators.class_wrapper_t( declaration=self.curr_decl
, class_creator=cls_cc )
cls_cc.wrapper = wrapper
+ cls_cc.associated_decl_creators.append( wrapper )
#insert wrapper before module body
if isinstance( self.curr_decl.parent, declarations.class_t ):
#we deal with internal class
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <mb...@us...> - 2006-09-21 09:48:21
|
Revision: 569
http://svn.sourceforge.net/pygccxml/?rev=569&view=rev
Author: mbaas
Date: 2006-09-21 02:48:15 -0700 (Thu, 21 Sep 2006)
Log Message:
-----------
Renamed the module from gil_state to gil_guard.
Modified Paths:
--------------
pyplusplus_dev/pyplusplus/code_repository/__init__.py
Added Paths:
-----------
pyplusplus_dev/pyplusplus/code_repository/gil_guard.py
Removed Paths:
-------------
pyplusplus_dev/pyplusplus/code_repository/gil_state.py
Modified: pyplusplus_dev/pyplusplus/code_repository/__init__.py
===================================================================
--- pyplusplus_dev/pyplusplus/code_repository/__init__.py 2006-09-21 09:47:12 UTC (rev 568)
+++ pyplusplus_dev/pyplusplus/code_repository/__init__.py 2006-09-21 09:48:15 UTC (rev 569)
@@ -14,6 +14,6 @@
"""
import array_1
-import gil_state
+import gil_guard
-all = [ array_1, gil_state ]
+all = [ array_1, gil_guard ]
Copied: pyplusplus_dev/pyplusplus/code_repository/gil_guard.py (from rev 568, pyplusplus_dev/pyplusplus/code_repository/gil_state.py)
===================================================================
--- pyplusplus_dev/pyplusplus/code_repository/gil_guard.py (rev 0)
+++ pyplusplus_dev/pyplusplus/code_repository/gil_guard.py 2006-09-21 09:48:15 UTC (rev 569)
@@ -0,0 +1,62 @@
+# Copyright 2004 Roman Yakovenko.
+# Distributed under the Boost Software License, Version 1.0. (See
+# accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt)
+
+"""
+This file contains C++ code to acquire/release the GIL.
+"""
+
+file_name = "__gil_guard.pypp.hpp"
+
+code = \
+"""// Copyright 2004 Roman Yakovenko.
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef __gil_guard_pyplusplus_hpp__
+#define __gil_guard_pyplusplus_hpp__
+
+namespace pyplusplus{ namespace threading {
+
+class gil_guard_t
+{
+ public:
+ gil_guard_t( bool lock=false )
+ : m_locked( false )
+ {
+ if( lock )
+ ensure();
+ }
+
+ ~gil_guard_t() {
+ release();
+ }
+
+ void ensure() {
+ if( !m_locked )
+ {
+ m_gstate = PyGILState_Ensure();
+ m_locked = true;
+ }
+ }
+
+ void release() {
+ if( m_locked )
+ {
+ PyGILState_Release(m_gstate);
+ m_locked = false;
+ }
+ }
+
+ private:
+ bool m_locked;
+ PyGILState_STATE m_gstate;
+};
+
+} /* threading */ } /* pyplusplus*/
+
+
+#endif//__gil_guard_pyplusplus_hpp__
+"""
Deleted: pyplusplus_dev/pyplusplus/code_repository/gil_state.py
===================================================================
--- pyplusplus_dev/pyplusplus/code_repository/gil_state.py 2006-09-21 09:47:12 UTC (rev 568)
+++ pyplusplus_dev/pyplusplus/code_repository/gil_state.py 2006-09-21 09:48:15 UTC (rev 569)
@@ -1,62 +0,0 @@
-# Copyright 2004 Roman Yakovenko.
-# Distributed under the Boost Software License, Version 1.0. (See
-# accompanying file LICENSE_1_0.txt or copy at
-# http://www.boost.org/LICENSE_1_0.txt)
-
-"""
-This file contains C++ code to acquire/release the GIL.
-"""
-
-file_name = "__gil_guard.pypp.hpp"
-
-code = \
-"""// Copyright 2004 Roman Yakovenko.
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-#ifndef __gil_guard_pyplusplus_hpp__
-#define __gil_guard_pyplusplus_hpp__
-
-namespace pyplusplus{ namespace threading {
-
-class gil_guard_t
-{
- public:
- gil_guard_t( bool lock=false )
- : m_locked( false )
- {
- if( lock )
- ensure();
- }
-
- ~gil_guard_t() {
- release();
- }
-
- void ensure() {
- if( !m_locked )
- {
- m_gstate = PyGILState_Ensure();
- m_locked = true;
- }
- }
-
- void release() {
- if( m_locked )
- {
- PyGILState_Release(m_gstate);
- m_locked = false;
- }
- }
-
- private:
- bool m_locked;
- PyGILState_STATE m_gstate;
-};
-
-} /* threading */ } /* pyplusplus*/
-
-
-#endif//__gil_guard_pyplusplus_hpp__
-"""
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <mb...@us...> - 2006-09-21 09:47:17
|
Revision: 568
http://svn.sourceforge.net/pygccxml/?rev=568&view=rev
Author: mbaas
Date: 2006-09-21 02:47:12 -0700 (Thu, 21 Sep 2006)
Log Message:
-----------
Renamed the class from gil_state_t to gil_guard_t.
Modified Paths:
--------------
pyplusplus_dev/pyplusplus/code_repository/gil_state.py
Modified: pyplusplus_dev/pyplusplus/code_repository/gil_state.py
===================================================================
--- pyplusplus_dev/pyplusplus/code_repository/gil_state.py 2006-09-20 19:57:24 UTC (rev 567)
+++ pyplusplus_dev/pyplusplus/code_repository/gil_state.py 2006-09-21 09:47:12 UTC (rev 568)
@@ -7,7 +7,7 @@
This file contains C++ code to acquire/release the GIL.
"""
-file_name = "__gil_state.pypp.hpp"
+file_name = "__gil_guard.pypp.hpp"
code = \
"""// Copyright 2004 Roman Yakovenko.
@@ -15,22 +15,22 @@
// accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
-#ifndef __gil_state_pyplusplus_hpp__
-#define __gil_state_pyplusplus_hpp__
+#ifndef __gil_guard_pyplusplus_hpp__
+#define __gil_guard_pyplusplus_hpp__
-namespace pyplusplus{
+namespace pyplusplus{ namespace threading {
-class gil_state_t
+class gil_guard_t
{
public:
- gil_state_t( bool lock=false )
+ gil_guard_t( bool lock=false )
: m_locked( false )
{
if( lock )
ensure();
}
- ~gil_state_t() {
+ ~gil_guard_t() {
release();
}
@@ -55,8 +55,8 @@
PyGILState_STATE m_gstate;
};
-} /* pyplusplus*/
+} /* threading */ } /* pyplusplus*/
-#endif//__gil_state_pyplusplus_hpp__
+#endif//__gil_guard_pyplusplus_hpp__
"""
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <rom...@us...> - 2006-09-20 19:57:43
|
Revision: 567
http://svn.sourceforge.net/pygccxml/?rev=567&view=rev
Author: roman_yakovenko
Date: 2006-09-20 12:57:24 -0700 (Wed, 20 Sep 2006)
Log Message:
-----------
small refactoring, that introduce new base class:
registration_based_t code creator. It keeps list of
associated global declaration creators
Modified Paths:
--------------
pyplusplus_dev/pyplusplus/code_creators/array_1_registrator.py
pyplusplus_dev/pyplusplus/code_creators/calldef.py
pyplusplus_dev/pyplusplus/code_creators/calldef_transformed.py
pyplusplus_dev/pyplusplus/code_creators/class_declaration.py
pyplusplus_dev/pyplusplus/code_creators/declaration_based.py
pyplusplus_dev/pyplusplus/code_creators/enum.py
pyplusplus_dev/pyplusplus/code_creators/exception_translator.py
pyplusplus_dev/pyplusplus/code_creators/global_variable.py
pyplusplus_dev/pyplusplus/code_creators/indexing_suites.py
pyplusplus_dev/pyplusplus/code_creators/member_variable.py
pyplusplus_dev/pyplusplus/code_creators/smart_pointers.py
pyplusplus_dev/pyplusplus/code_creators/unnamed_enum.py
Added Paths:
-----------
pyplusplus_dev/pyplusplus/code_creators/registration_based.py
Modified: pyplusplus_dev/pyplusplus/code_creators/array_1_registrator.py
===================================================================
--- pyplusplus_dev/pyplusplus/code_creators/array_1_registrator.py 2006-09-20 18:26:26 UTC (rev 566)
+++ pyplusplus_dev/pyplusplus/code_creators/array_1_registrator.py 2006-09-20 19:57:24 UTC (rev 567)
@@ -6,18 +6,18 @@
import os
import algorithm
-import code_creator
+import registration_based
from pyplusplus import code_repository
from pyplusplus.decl_wrappers import call_policies
from pyplusplus.decl_wrappers import python_traits
from pygccxml import declarations
-class array_1_registrator_t( code_creator.code_creator_t ):
+class array_1_registrator_t( registration_based.registration_based_t ):
"""
This class creates code that register static sized array
"""
def __init__( self, array_type ):
- code_creator.code_creator_t.__init__( self )
+ registration_based.registration_based_t.__init__( self )
self._array_type = array_type
self._call_policies = self._guess_call_policies()
self.works_on_instance = False
Modified: pyplusplus_dev/pyplusplus/code_creators/calldef.py
===================================================================
--- pyplusplus_dev/pyplusplus/code_creators/calldef.py 2006-09-20 18:26:26 UTC (rev 566)
+++ pyplusplus_dev/pyplusplus/code_creators/calldef.py 2006-09-20 19:57:24 UTC (rev 567)
@@ -7,6 +7,7 @@
import algorithm
import code_creator
import declaration_based
+import registration_based
import class_declaration
from pygccxml import declarations
from pyplusplus import decl_wrappers
@@ -26,8 +27,10 @@
#protected member functions - call, override
#private - override
-class calldef_t( declaration_based.declaration_based_t):
+class calldef_t( registration_based.registration_based_t
+ , declaration_based.declaration_based_t ):
def __init__(self, function, wrapper=None ):
+ registration_based.registration_based_t.__init__( self )
declaration_based.declaration_based_t.__init__( self, declaration=function )
self._wrapper = wrapper
self._associated_decl_creators = []
@@ -154,8 +157,10 @@
return ''.join( result )
-class calldef_wrapper_t( declaration_based.declaration_based_t):
+class calldef_wrapper_t( code_creator.code_creator_t
+ , declaration_based.declaration_based_t):
def __init__(self, function ):
+ code_creator.code_creator_t.__init__( self )
declaration_based.declaration_based_t.__init__( self, declaration=function )
def argument_name( self, index ):
@@ -795,22 +800,6 @@
mem_fun_private_pv_wrapper_t = mem_fun_private_v_wrapper_t
-
-#class protected_helper_t( object ):
- #def __init__( self ):
- #object.__init__( self )
-
- #def wclass_inst_arg_type( self ):
- #inst_arg_type = declarations.declarated_t( self.declaration.parent )
- #if self.declaration.has_const:
- #inst_arg_type = declarations.const_t(inst_arg_type)
- #inst_arg_type = declarations.reference_t(inst_arg_type)
- #return inst_arg_type
-
- #def wclass_inst_arg( self ):
- #return self.wclass_inst_arg_type().decl_string + ' wcls_inst'
-
-
class constructor_t( calldef_t ):
"""
Creates boost.python code needed to expose constructor.
@@ -867,11 +856,13 @@
code = self.parent.class_var_name + '.' + code + ';'
return code
-class static_method_t( declaration_based.declaration_based_t ):
+class static_method_t( declaration_based.declaration_based_t
+ , registration_based.registration_based_t ):
"""
Creates boost.python code that expose member function as static function.
"""
def __init__(self, function, function_code_creator=None ):
+ registration_based.registration_based_t.__init__( self )
declaration_based.declaration_based_t.__init__( self, declaration=function )
self._function_code_creator = function_code_creator
@@ -932,11 +923,13 @@
#There are usecases when boost.python requeres
#constructor for wrapper class from exposed class
#I should understand this more
-class copy_constructor_wrapper_t( declaration_based.declaration_based_t ):
+class copy_constructor_wrapper_t( code_creator.code_creator_t
+ , declaration_based.declaration_based_t ):
"""
Creates wrapper class constructor from wrapped class instance.
"""
def __init__( self, class_inst ):
+ code_creator.code_creator_t.__init__( self )
declaration_based.declaration_based_t.__init__( self, declaration=class_inst )
def _create_declaration(self):
@@ -968,11 +961,13 @@
return os.linesep.join( answer )
-class null_constructor_wrapper_t( declaration_based.declaration_based_t ):
+class null_constructor_wrapper_t( code_creator.code_creator_t
+ , declaration_based.declaration_based_t ):
"""
Creates wrapper for compiler generated null constructor.
"""
def __init__( self, class_inst ):
+ code_creator.code_creator_t.__init__( self )
declaration_based.declaration_based_t.__init__( self, declaration=class_inst )
def _create_constructor_call( self ):
@@ -992,7 +987,8 @@
#in python all operators are members of class, while in C++
#you can define operators that are not.
-class operator_t( declaration_based.declaration_based_t ):
+class operator_t( registration_based.registration_based_t
+ , declaration_based.declaration_based_t ):
"""
Creates boost.python code needed to expose supported subset of C++ operators.
"""
@@ -1002,9 +998,8 @@
BOTH = 'both'
def __init__(self, operator ):
- declaration_based.declaration_based_t.__init__( self
- , declaration=operator
- )
+ registration_based.registration_based_t.__init__( self )
+ declaration_based.declaration_based_t.__init__( self, declaration=operator )
def _call_type_constructor( self, type ):
x = declarations.remove_reference( type )
@@ -1066,11 +1061,13 @@
code = self._create_unary_operator()
return 'def( %s )' % code
-class casting_operator_t( declaration_based.declaration_based_t ):
+class casting_operator_t( registration_based.registration_based_t
+ , declaration_based.declaration_based_t ):
"""
Creates boost.python code needed to register type conversions( implicitly_convertible )
"""
def __init__( self, operator ):
+ registration_based.registration_based_t.__init__( self )
declaration_based.declaration_based_t.__init__( self, declaration=operator )
def _create_impl(self):
@@ -1085,13 +1082,15 @@
, [ from_arg , to_arg ] ) \
+ '();'
-class casting_member_operator_t( declaration_based.declaration_based_t ):
+class casting_member_operator_t( registration_based.registration_based_t
+ , declaration_based.declaration_based_t ):
"""
Creates boost.python code needed to register casting operators. For some
operators Pythonic name is given: __int__, __long__, __float__, __str__
"""
def __init__( self, operator ):
+ registration_based.registration_based_t.__init__( self )
declaration_based.declaration_based_t.__init__( self, declaration=operator )
def _create_impl(self):
@@ -1118,13 +1117,15 @@
, 'doc' : doc
}
-class casting_constructor_t( declaration_based.declaration_based_t ):
+class casting_constructor_t( registration_based.registration_based_t
+ , declaration_based.declaration_based_t ):
"""
Creates boost.python code needed to register type conversions( implicitly_convertible ).
This case treat situation when class has public non explicit constuctor from
another type.
"""
def __init__( self, constructor ):
+ registration_based.registration_based_t.__init__( self )
declaration_based.declaration_based_t.__init__( self, declaration=constructor )
def _create_impl(self):
@@ -1221,9 +1222,9 @@
, 'max' : max_
}
-class calldef_overloads_t( code_creator.code_creator_t ):
+class calldef_overloads_t( registration_based.registration_based_t ):
def __init__( self, overloads_class ):
- code_creator.code_creator_t.__init__( self )
+ registration_based.registration_based_t.__init__( self )
self._overloads_class = overloads_class
@property
Modified: pyplusplus_dev/pyplusplus/code_creators/calldef_transformed.py
===================================================================
--- pyplusplus_dev/pyplusplus/code_creators/calldef_transformed.py 2006-09-20 18:26:26 UTC (rev 566)
+++ pyplusplus_dev/pyplusplus/code_creators/calldef_transformed.py 2006-09-20 19:57:24 UTC (rev 567)
@@ -502,4 +502,3 @@
self.declaration.arguments = self._subst_manager.wrapper_func.arg_list
return answer
-
Modified: pyplusplus_dev/pyplusplus/code_creators/class_declaration.py
===================================================================
--- pyplusplus_dev/pyplusplus/code_creators/class_declaration.py 2006-09-20 18:26:26 UTC (rev 566)
+++ pyplusplus_dev/pyplusplus/code_creators/class_declaration.py 2006-09-20 19:57:24 UTC (rev 567)
@@ -10,11 +10,14 @@
import algorithm
import smart_pointers
import declaration_based
+import registration_based
from pygccxml import declarations
-class class_declaration_t( scoped.scoped_t ):
+class class_declaration_t( scoped.scoped_t
+ , registration_based.registration_based_t ):
def __init__(self, class_inst ):
scoped.scoped_t.__init__( self, declaration=class_inst )
+ registration_based.registration_based_t.__init__( self )
self.works_on_instance = False
def _generate_class_definition(self):
@@ -78,12 +81,13 @@
return self._generate_code_no_scope()
-class class_t( scoped.scoped_t ):
+class class_t( scoped.scoped_t, registration_based.registration_based_t ):
"""
Creates boost.python code that needed to export a class
"""
def __init__(self, class_inst, wrapper=None ):
scoped.scoped_t.__init__( self, declaration=class_inst )
+ registration_based.registration_based_t.__init__( self )
self._wrapper = wrapper
self.works_on_instance = False
self._associated_decl_creators = []
Modified: pyplusplus_dev/pyplusplus/code_creators/declaration_based.py
===================================================================
--- pyplusplus_dev/pyplusplus/code_creators/declaration_based.py 2006-09-20 18:26:26 UTC (rev 566)
+++ pyplusplus_dev/pyplusplus/code_creators/declaration_based.py 2006-09-20 19:57:24 UTC (rev 567)
@@ -6,7 +6,7 @@
import algorithm
import code_creator
-class declaration_based_t(code_creator.code_creator_t):
+class declaration_based_t:
"""Code creator that is based on a declaration.
"""
def __init__(self, declaration ):
@@ -17,12 +17,8 @@
@param parent: Parent code creator.
@type parent: code_creator_t
"""
- code_creator.code_creator_t.__init__(self)
self._decl = declaration
- def _create_impl(self):
- raise NotImplementedError()
-
def _generate_valid_name(self, name=None):
if name == None:
name = self.declaration.name
@@ -49,4 +45,5 @@
def documentation( self ):
if None is self.declaration.documentation:
return ''
- return self.declaration.documentation
\ No newline at end of file
+ return self.declaration.documentation
+
\ No newline at end of file
Modified: pyplusplus_dev/pyplusplus/code_creators/enum.py
===================================================================
--- pyplusplus_dev/pyplusplus/code_creators/enum.py 2006-09-20 18:26:26 UTC (rev 566)
+++ pyplusplus_dev/pyplusplus/code_creators/enum.py 2006-09-20 19:57:24 UTC (rev 567)
@@ -6,12 +6,15 @@
import os
import algorithm
import declaration_based
+import registration_based
-class enum_t( declaration_based.declaration_based_t ):
+class enum_t( registration_based.registration_based_t
+ , declaration_based.declaration_based_t ):
"""
Creates boost.python code that expose C++ enum
"""
def __init__(self, enum ):
+ registration_based.registration_based_t.__init__( self )
declaration_based.declaration_based_t.__init__( self, declaration=enum)
self.works_on_instance = False
Modified: pyplusplus_dev/pyplusplus/code_creators/exception_translator.py
===================================================================
--- pyplusplus_dev/pyplusplus/code_creators/exception_translator.py 2006-09-20 18:26:26 UTC (rev 566)
+++ pyplusplus_dev/pyplusplus/code_creators/exception_translator.py 2006-09-20 19:57:24 UTC (rev 567)
@@ -8,10 +8,13 @@
import algorithm
import code_creator
import declaration_based
+import registration_based
from pygccxml import declarations
-class exception_translator_t( declaration_based.declaration_based_t ):
+class exception_translator_t( code_creator.code_creator_t
+ , declaration_based.declaration_based_t ):
def __init__(self, exception_class ):
+ code_creator.code_creator_t.__init__( self )
declaration_based.declaration_based_t.__init__( self, declaration=exception_class )
@property
@@ -28,8 +31,10 @@
, 'arg_name' : self.declaration.exception_argument_name }
-class exception_translator_register_t( declaration_based.declaration_based_t ):
+class exception_translator_register_t( registration_based.registration_based_t
+ , declaration_based.declaration_based_t ):
def __init__(self, exception_class, exception_translator):
+ registration_based.registration_based_t.__init__( self )
declaration_based.declaration_based_t.__init__( self, declaration=exception_class )
self.works_on_instance = False
self.translator = exception_translator
Modified: pyplusplus_dev/pyplusplus/code_creators/global_variable.py
===================================================================
--- pyplusplus_dev/pyplusplus/code_creators/global_variable.py 2006-09-20 18:26:26 UTC (rev 566)
+++ pyplusplus_dev/pyplusplus/code_creators/global_variable.py 2006-09-20 19:57:24 UTC (rev 567)
@@ -6,17 +6,21 @@
import os
import pygccxml
import algorithm
+import code_creator
import declaration_based
+import registration_based
from pygccxml import declarations
from pyplusplus import code_repository
#TODO: if variable is not const, then export it using boost::python::ptr
-class global_variable_base_t( declaration_based.declaration_based_t ):
+class global_variable_base_t( registration_based.registration_based_t
+ , declaration_based.declaration_based_t ):
"""
Base class for all global variables code creators. Mainly exists to
simplify file writers algorithms.
"""
def __init__(self, variable, wrapper=None ):
+ registration_based.registration_based_t.__init__( self )
declaration_based.declaration_based_t.__init__( self, declaration=variable)
self._wrapper = wrapper
@@ -60,12 +64,14 @@
answer.append( '();' )
return ''.join( answer )
-class array_gv_wrapper_t( declaration_based.declaration_based_t ):
+class array_gv_wrapper_t( code_creator.code_creator_t
+ , declaration_based.declaration_based_t ):
"""
Creates C++ code that register array class.
"""
def __init__(self, variable ):
+ code_creator.code_creator_t.__init__( self )
declaration_based.declaration_based_t.__init__( self, declaration=variable)
def _get_wrapper_type( self ):
Modified: pyplusplus_dev/pyplusplus/code_creators/indexing_suites.py
===================================================================
--- pyplusplus_dev/pyplusplus/code_creators/indexing_suites.py 2006-09-20 18:26:26 UTC (rev 566)
+++ pyplusplus_dev/pyplusplus/code_creators/indexing_suites.py 2006-09-20 19:57:24 UTC (rev 567)
@@ -8,10 +8,13 @@
import algorithm
import code_creator
import declaration_based
+import registration_based
from pygccxml import declarations
-class indexing_suite1_t( declaration_based.declaration_based_t ):
+class indexing_suite1_t( registration_based.registration_based_t
+ , declaration_based.declaration_based_t ):
def __init__(self, container ):
+ registration_based.registration_based_t.__init__( self )
declaration_based.declaration_based_t.__init__( self, declaration=container )
def _get_configuration( self ):
@@ -47,8 +50,10 @@
return "def( %s() )" % self._create_suite_declaration()
-class indexing_suite2_t( declaration_based.declaration_based_t ):
+class indexing_suite2_t( registration_based.registration_based_t
+ , declaration_based.declaration_based_t ):
def __init__(self, container ):
+ registration_based.registration_based_t.__init__( self )
declaration_based.declaration_based_t.__init__( self, declaration=container )
self.__method_mask_var_name = "methods_mask"
self.works_on_instance = not self.does_user_disable_methods()
@@ -104,8 +109,10 @@
answer.append( ';' )
return ''.join( answer )
-class value_traits_t( declaration_based.declaration_based_t ):
+class value_traits_t( code_creator.code_creator_t
+ , declaration_based.declaration_based_t ):
def __init__( self, value_class ):
+ code_creator.code_creator_t.__init__( self )
declaration_based.declaration_based_t.__init__( self, declaration=value_class )
def generate_value_traits( self ):
Modified: pyplusplus_dev/pyplusplus/code_creators/member_variable.py
===================================================================
--- pyplusplus_dev/pyplusplus/code_creators/member_variable.py 2006-09-20 18:26:26 UTC (rev 566)
+++ pyplusplus_dev/pyplusplus/code_creators/member_variable.py 2006-09-20 19:57:24 UTC (rev 567)
@@ -5,19 +5,23 @@
import os
import algorithm
+import code_creator
import declaration_based
from pyplusplus import code_repository
from pyplusplus.decl_wrappers import call_policies
from pyplusplus.decl_wrappers import python_traits
+import registration_based
from pygccxml import declarations
-class member_variable_base_t( declaration_based.declaration_based_t ):
+class member_variable_base_t( registration_based.registration_based_t
+ , declaration_based.declaration_based_t ):
"""
Base class for all member variables code creators. Mainly exists to
simplify file writers algorithms.
"""
def __init__(self, variable, wrapper=None ):
+ registration_based.registration_based_t.__init__( self )
declaration_based.declaration_based_t.__init__( self, declaration=variable)
self._wrapper = wrapper
@@ -131,13 +135,14 @@
def _create_impl(self):
return self._generate_variable()
-class member_variable_wrapper_t( declaration_based.declaration_based_t ):
+class member_variable_wrapper_t( code_creator.code_creator_t
+ , declaration_based.declaration_based_t ):
"""
Creates C++ code that creates accessor for pointer class variables
"""
#TODO: give user a way to set call policies
# treat void* pointer
- indent = declaration_based.declaration_based_t.indent
+ indent = code_creator.code_creator_t.indent
MV_GET_TEMPLATE = os.linesep.join([
'static %(type)s get_%(name)s(%(cls_type)s inst ){'
, indent( 'return inst.%(name)s;' )
@@ -167,6 +172,7 @@
])
def __init__(self, variable ):
+ code_creator.code_creator_t.__init__( self )
declaration_based.declaration_based_t.__init__( self, declaration=variable)
def _get_getter_full_name(self):
@@ -273,12 +279,13 @@
answer[i] = os.linesep + self.indent( self.indent( self.indent( answer[i] ) ) )
return ''.join( answer )
-class bit_field_wrapper_t( declaration_based.declaration_based_t ):
+class bit_field_wrapper_t( code_creator.code_creator_t
+ , declaration_based.declaration_based_t ):
"""
Creates C++ code that creates accessor for bit fields
"""
- indent = declaration_based.declaration_based_t.indent
+ indent = code_creator.code_creator_t.indent
BF_GET_TEMPLATE = os.linesep.join([
'%(type)s get_%(name)s() const {'
, indent( 'return %(name)s;' )
@@ -294,6 +301,7 @@
])
def __init__(self, variable ):
+ code_creator.code_creator_t.__init__( self )
declaration_based.declaration_based_t.__init__( self, declaration=variable)
def _get_getter_full_name(self):
@@ -370,12 +378,14 @@
#TODO: generated fucntion should be static and take instance of the wrapped class
#as first argument.
-class array_mv_wrapper_t( declaration_based.declaration_based_t ):
+class array_mv_wrapper_t( code_creator.code_creator_t
+ , declaration_based.declaration_based_t ):
"""
Creates C++ code that register array class.
"""
def __init__(self, variable ):
+ code_creator.code_creator_t.__init__( self )
declaration_based.declaration_based_t.__init__( self, declaration=variable)
def _get_wrapper_type( self ):
@@ -477,12 +487,13 @@
answer.append( "%s.%s;" % (class_var_name, self._create_setter() ) )
return ''.join( answer )
-class mem_var_ref_wrapper_t( declaration_based.declaration_based_t ):
+class mem_var_ref_wrapper_t( code_creator.code_creator_t
+ , declaration_based.declaration_based_t ):
"""
Creates C++ code that creates accessor for class member variable, that has type reference.
"""
- indent = declaration_based.declaration_based_t.indent
+ indent = code_creator.code_creator_t.indent
GET_TEMPLATE = os.linesep.join([
'static %(type)s get_%(name)s( %(class_type)s& inst ) {'
, indent( 'return inst.%(name)s;' )
@@ -498,6 +509,7 @@
])
def __init__(self, variable ):
+ code_creator.code_creator_t.__init__( self )
declaration_based.declaration_based_t.__init__( self, declaration=variable)
def _get_getter_full_name(self):
Added: pyplusplus_dev/pyplusplus/code_creators/registration_based.py
===================================================================
--- pyplusplus_dev/pyplusplus/code_creators/registration_based.py (rev 0)
+++ pyplusplus_dev/pyplusplus/code_creators/registration_based.py 2006-09-20 19:57:24 UTC (rev 567)
@@ -0,0 +1,21 @@
+# Copyright 2004 Roman Yakovenko.
+# Distributed under the Boost Software License, Version 1.0. (See
+# accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt)
+
+import algorithm
+import code_creator
+
+class registration_based_t(code_creator.code_creator_t):
+ """Code creator that is based on a declaration.
+ """
+ def __init__(self, associated_decl_creators=None ):
+ code_creator.code_creator_t.__init__(self)
+ if None is associated_decl_creators:
+ associated_decl_creators = []
+ self._associated_decl_creators = associated_decl_creators
+
+ @property
+ def associated_decl_creators( self ):
+ """ references to global declaration code creators. """
+ return self._associated_decl_creators
Modified: pyplusplus_dev/pyplusplus/code_creators/smart_pointers.py
===================================================================
--- pyplusplus_dev/pyplusplus/code_creators/smart_pointers.py 2006-09-20 18:26:26 UTC (rev 566)
+++ pyplusplus_dev/pyplusplus/code_creators/smart_pointers.py 2006-09-20 19:57:24 UTC (rev 567)
@@ -5,8 +5,10 @@
import os
import algorithm
+import declaration_based
+import registration_based
from pygccxml import declarations
-import declaration_based
+
templates = declarations.templates
class held_type_t(object):
@@ -32,13 +34,15 @@
arg = algorithm.create_identifier( creator, creator.declaration.decl_string )
return templates.join( smart_ptr, [ arg ] )
-class smart_pointer_registrator_t( declaration_based.declaration_based_t ):
+class smart_pointer_registrator_t( registration_based.registration_based_t
+ , declaration_based.declaration_based_t ):
""" Convertor for boost::python::register_ptr_to_python<PTR>.
Lets boost python know that it can use smart_ptr to hold a an object.
See: http://www.boost.org/libs/python/doc/v2/register_ptr_to_python.html
"""
def __init__( self, smart_ptr, class_creator ):
""" smart_ptr: string of ptr type. Ex: 'boost::shared_ptr' """
+ registration_based.registration_based_t.__init__( self )
declaration_based.declaration_based_t.__init__( self, class_creator.declaration )
self._smart_ptr = smart_ptr
self._class_creator = class_creator
@@ -67,13 +71,15 @@
held_type = held_type_t(self.smart_ptr).create( self )
return templates.join( rptp, [ held_type ] ) + '();'
-class smart_pointers_converter_t( declaration_based.declaration_based_t ):
+class smart_pointers_converter_t( registration_based.registration_based_t
+ , declaration_based.declaration_based_t ):
""" creator for boost::python::implicitly_convertible.
This creates a statemnt that allows the usage of C++ implicit
conversion from source to target.
See: http://www.boost.org/libs/python/doc/v2/implicit.html
"""
def __init__( self, smart_ptr, source, target ):
+ registration_based.registration_based_t.__init__( self )
declaration_based.declaration_based_t.__init__( self, source )
self._target = target
self._smart_ptr = smart_ptr
Modified: pyplusplus_dev/pyplusplus/code_creators/unnamed_enum.py
===================================================================
--- pyplusplus_dev/pyplusplus/code_creators/unnamed_enum.py 2006-09-20 18:26:26 UTC (rev 566)
+++ pyplusplus_dev/pyplusplus/code_creators/unnamed_enum.py 2006-09-20 19:57:24 UTC (rev 567)
@@ -7,9 +7,12 @@
import pygccxml
import algorithm
import declaration_based
+import registration_based
-class unnamed_enum_t( declaration_based.declaration_based_t ):
+class unnamed_enum_t( registration_based.registration_based_t
+ , declaration_based.declaration_based_t ):
def __init__(self, unnamed_enum ):
+ registration_based.registration_based_t.__init__( self )
declaration_based.declaration_based_t.__init__( self, declaration=unnamed_enum)
self.works_on_instance = False
@@ -26,4 +29,5 @@
for name, value in self.declaration.values:
result.append( tmpl % ( self.value_aliases.get( name, name )
, algorithm.create_identifier( self, full_name + '::' + name ) ) )
- return os.linesep.join( result )
\ No newline at end of file
+ return os.linesep.join( result )
+
\ No newline at end of file
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <rom...@us...> - 2006-09-20 18:26:36
|
Revision: 566
http://svn.sourceforge.net/pygccxml/?rev=566&view=rev
Author: roman_yakovenko
Date: 2006-09-20 11:26:26 -0700 (Wed, 20 Sep 2006)
Log Message:
-----------
adding arg_policies to __init__.py otherwise the unit tests fails
Modified Paths:
--------------
pyplusplus_dev/pyplusplus/function_transformers/__init__.py
Modified: pyplusplus_dev/pyplusplus/function_transformers/__init__.py
===================================================================
--- pyplusplus_dev/pyplusplus/function_transformers/__init__.py 2006-09-20 16:54:14 UTC (rev 565)
+++ pyplusplus_dev/pyplusplus/function_transformers/__init__.py 2006-09-20 18:26:26 UTC (rev 566)
@@ -19,3 +19,4 @@
from substitution_manager import substitution_manager_t
from function_transformer import function_transformer_t
+import arg_policies
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|