Revision: 1426
http://pygccxml.svn.sourceforge.net/pygccxml/?rev=1426&view=rev
Author: roman_yakovenko
Date: 2008-10-05 21:22:28 +0000 (Sun, 05 Oct 2008)
Log Message:
-----------
improve Py++ - in case different content is going to be written to the same file, Py++ will raise exception
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 2008-10-05 20:26:38 UTC (rev 1425)
+++ pyplusplus_dev/pyplusplus/file_writers/multiple_files.py 2008-10-05 21:22:28 UTC (rev 1426)
@@ -51,6 +51,15 @@
def write_file( self, fpath, content ):
+ if fpath in self.written_files:
+ msg = ['Py++ is going to write different content to the same file(%s).' % fpath]
+ msg.append('The following is a short list of possible explanations for this behaviour:' )
+ msg.append('* Py++ bug, in this case, please report it' )
+ msg.append('* module_builder_t contains two or more classes with the same alias')
+ msg.append('* module_builder_t contains two or more classes with the same wrapper alias')
+ msg.append('Please carefully review Py++ warning messages. It should contain an additional information.')
+ raise RuntimeError( os.linesep.join(msg) )
+
self.written_files.append( fpath )
writer.writer_t.write_file( fpath, content, self.files_sum_repository, self.encoding )
@@ -133,7 +142,7 @@
return None
if not isinstance( code_creator.declaration.indexing_suite, decl_wrappers.indexing_suite2_t ):
return None
-
+
#sometimes, for some reason I expose containers as regular classes ( hash_map )
#and in this case I do generate include to
classes = ( code_creators.indexing_suite1_t, code_creators.indexing_suite2_t )
@@ -142,7 +151,7 @@
break
else:
return None
-
+
try:
element_type = code_creator.declaration.indexing_suite.element_type
class_traits = declarations.class_traits
@@ -150,20 +159,20 @@
return None
value_class = class_traits.get_declaration( element_type )
if value_class.less_than_comparable and value_class.equality_comparable:
- return None #Py++ doesn't create value traits for class that has
+ return None #Py++ doesn't create value traits for class that has
# = and < operators available
return self.create_value_traits_header_name( value_class )
except RuntimeError, error:
decls_logger = _logging_.loggers.declarations
if not messages.filter_disabled_msgs([messages.W1042], code_creator.declaration.disabled_messages ):
- return #user disabled property warning
+ return #user disabled property warning
decls_logger.warn( "%s;%s" % ( code_creator.declaration, messages.W1042 ) )
def create_include_code( self, creators, head_headers=None, tail_headers=None ):
answer = []
normalize = code_creators.include_directories_t.normalize
unique_headers = code_creators.code_creator_t.unique_headers
-
+
if head_headers:
answer.extend( map( lambda header: '#include "%s"' % normalize( header )
, head_headers ) )
@@ -171,11 +180,11 @@
dependend_on_headers = []
for creator in creators:
dependend_on_headers.extend( creator.get_system_headers( recursive=True ) )
-
- dependend_on_headers = unique_headers( map( normalize, dependend_on_headers ) )
-
+
+ dependend_on_headers = unique_headers( map( normalize, dependend_on_headers ) )
+
for include_cc in self.__predefined_include_creators:
- if include_cc.is_system:
+ if include_cc.is_system:
if include_cc.header in dependend_on_headers:
answer.append( include_cc.create() )
else:# user header file - always include
@@ -389,11 +398,11 @@
self.write_code_repository( self.__directory_path )
self.save_exposed_decls_db( self.__directory_path )
-
+
self.extmodule.do_include_dirs_optimization()
self.split_values_traits()
- self.split_classes()
+ self.split_classes()
self.split_enums()
self.split_global_variables()
self.split_free_functions()
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|