[pygccxml-commit] SF.net SVN: pygccxml: [997] pyplusplus_dev/pyplusplus
Brought to you by:
mbaas,
roman_yakovenko
|
From: <rom...@us...> - 2007-04-17 21:07:12
|
Revision: 997
http://svn.sourceforge.net/pygccxml/?rev=997&view=rev
Author: roman_yakovenko
Date: 2007-04-17 14:07:13 -0700 (Tue, 17 Apr 2007)
Log Message:
-----------
adding user defined header files to generated code
Modified Paths:
--------------
pyplusplus_dev/pyplusplus/code_creators/compound.py
pyplusplus_dev/pyplusplus/code_creators/declaration_based.py
pyplusplus_dev/pyplusplus/decl_wrappers/decl_wrapper.py
pyplusplus_dev/pyplusplus/file_writers/single_file.py
Modified: pyplusplus_dev/pyplusplus/code_creators/compound.py
===================================================================
--- pyplusplus_dev/pyplusplus/code_creators/compound.py 2007-04-17 12:40:13 UTC (rev 996)
+++ pyplusplus_dev/pyplusplus/code_creators/compound.py 2007-04-17 21:07:13 UTC (rev 997)
@@ -86,3 +86,4 @@
if unique:
files = self.unique_headers( files )
return files
+
\ No newline at end of file
Modified: pyplusplus_dev/pyplusplus/code_creators/declaration_based.py
===================================================================
--- pyplusplus_dev/pyplusplus/code_creators/declaration_based.py 2007-04-17 12:40:13 UTC (rev 996)
+++ pyplusplus_dev/pyplusplus/code_creators/declaration_based.py 2007-04-17 21:07:13 UTC (rev 997)
@@ -50,4 +50,7 @@
if None is self.declaration.documentation:
return ''
return self.declaration.documentation
-
\ No newline at end of file
+
+ def get_user_headers( self, recursive=False, unique=False ):
+ """return list of user header files to be included from the generated file"""
+ return self.declaration.include_files
Modified: pyplusplus_dev/pyplusplus/decl_wrappers/decl_wrapper.py
===================================================================
--- pyplusplus_dev/pyplusplus/decl_wrappers/decl_wrapper.py 2007-04-17 12:40:13 UTC (rev 996)
+++ pyplusplus_dev/pyplusplus/decl_wrappers/decl_wrapper.py 2007-04-17 21:07:13 UTC (rev 997)
@@ -31,6 +31,7 @@
self._exportable_reason = None
self._documentation = None
self.__msgs_to_ignore = set()
+ self._include_files = []
@property
def logger( self ):
@@ -150,7 +151,6 @@
def _readme_impl( self ):
return []
-
def readme( self, skip_ignored=True ):
"""This function will returns some hints/tips/description of problems
that applied to the declarations. For example function that has argument
@@ -192,3 +192,8 @@
raise RuntimeError( "Unable to find out message id. The message is: " + msg )
self.__msgs_to_ignore.add( msg )
disable_warnings = disable_messages
+
+ @property
+ def include_files( self ):
+ """list of header files, to be included from the file, the generated code will be placed-in"""
+ return self._include_files
\ No newline at end of file
Modified: pyplusplus_dev/pyplusplus/file_writers/single_file.py
===================================================================
--- pyplusplus_dev/pyplusplus/file_writers/single_file.py 2007-04-17 12:40:13 UTC (rev 996)
+++ pyplusplus_dev/pyplusplus/file_writers/single_file.py 2007-04-17 21:07:13 UTC (rev 997)
@@ -7,11 +7,10 @@
import os
import writer
+from pyplusplus import code_creators
class single_file_t(writer.writer_t):
- """
- This class writes all code into single file.
- """
+ """generates all code into single cpp file"""
def __init__(self, extmodule, file_name):
writer.writer_t.__init__(self, extmodule)
@@ -21,6 +20,15 @@
return self.__fname
file_name = property( _get_file_name )
- def write(self):
+ def write(self):
+ user_headers = []
+ creators = filter( lambda creator: isinstance( creator, code_creators.declaration_based_t )
+ , code_creators.make_flatten( self.extmodule ) )
+ map( lambda creator: user_headers.extend( creator.get_user_headers() )
+ , creators )
+ user_headers = code_creators.code_creator_t.unique_headers( user_headers )
+ map( lambda header: self.extmodule.add_include( header )
+ , user_headers )
self.write_code_repository( os.path.split( self.file_name )[0] )
- self.write_file( self.file_name, self.extmodule.create() )
\ No newline at end of file
+ self.write_file( self.file_name, self.extmodule.create() )
+
\ No newline at end of file
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|