Revision: 994
http://svn.sourceforge.net/pygccxml/?rev=994&view=rev
Author: roman_yakovenko
Date: 2007-04-17 00:16:21 -0700 (Tue, 17 Apr 2007)
Log Message:
-----------
introducing few small optimizations:
include and namespace code creators always generate same code - from now they will do it only once
Modified Paths:
--------------
pyplusplus_dev/pyplusplus/code_creators/include.py
pyplusplus_dev/pyplusplus/code_creators/namespace.py
Modified: pyplusplus_dev/pyplusplus/code_creators/include.py
===================================================================
--- pyplusplus_dev/pyplusplus/code_creators/include.py 2007-04-17 07:13:00 UTC (rev 993)
+++ pyplusplus_dev/pyplusplus/code_creators/include.py 2007-04-17 07:16:21 UTC (rev 994)
@@ -3,25 +3,30 @@
# accompanying file LICENSE_1_0.txt or copy at
# http://www.boost.org/LICENSE_1_0.txt)
-import os
import code_creator
-import algorithm
import include_directories
class include_t(code_creator.code_creator_t):
"""
Creates C++ code for include directive
"""
- def __init__( self, header, user_defined=False ):
+ def __init__( self, header, user_defined=False, system=False ):
code_creator.code_creator_t.__init__(self)
self._header = include_directories.include_directories_t.normalize( header )
self._include_dirs_optimization = None #This parameter will be set from module_t.create function
self._user_defined = user_defined
+ self._system = system
+ self.__created_code = None
@property
def is_user_defined(self):
return self._user_defined
+ @property
+ def is_system(self):
+ """Return True if header file is system( Boost.Python or Py++ ) header file"""
+ return self._system
+
def _get_header(self):
return self._header
def _set_header(self, header):
@@ -34,7 +39,7 @@
self._include_dirs_optimization = include_dirs
include_dirs_optimization = property( _get_include_dirs_optimization, _set_include_dirs_optimization )
- def _create_impl(self):
+ def _create_include_directive_code(self):
header = self.header.strip()
if header.startswith( '"' ) or header.startswith( '<' ):
return '#include %s' % self.header
@@ -48,5 +53,10 @@
else:
return '#include "%s"' % normalize_header
+ def _create_impl(self):
+ if not self.__created_code:
+ self.__created_code = self._create_include_directive_code()
+ return self.__created_code
+
def _get_system_headers_impl( self ):
return []
Modified: pyplusplus_dev/pyplusplus/code_creators/namespace.py
===================================================================
--- pyplusplus_dev/pyplusplus/code_creators/namespace.py 2007-04-17 07:13:00 UTC (rev 993)
+++ pyplusplus_dev/pyplusplus/code_creators/namespace.py 2007-04-17 07:16:21 UTC (rev 994)
@@ -10,6 +10,7 @@
code_creator.code_creator_t.__init__( self )
self._alias = alias
self._full_namespace_name = full_namespace_name
+ self.__created_code = None
def _get_alias( self ):
return self._alias
@@ -24,7 +25,11 @@
full_namespace_name = property( _get_full_namespace_name, _set_full_namespace_name )
def _create_impl(self):
- return 'namespace %s = %s;' % ( self.alias, self.full_namespace_name )
+ if self.__created_code:
+ return self.__created_code
+ else:
+ self.__created_code = 'namespace %s = %s;' % ( self.alias, self.full_namespace_name )
+ return self.__created_code
def _get_system_headers_impl( self ):
return []
@@ -33,6 +38,7 @@
def __init__( self, namespace_name ):
code_creator.code_creator_t.__init__(self )
self._namespace_name = namespace_name
+ self.__created_code = None
def _get_namespace_name( self ):
return self._namespace_name.lstrip( '::' )
@@ -41,7 +47,11 @@
namespace_name = property( _get_namespace_name, _set_namespace_name )
def _create_impl(self):
- return 'using namespace %s;' % self.namespace_name
+ if self.__created_code:
+ return self.__created_code
+ else:
+ self.__created_code = 'using namespace %s;' % self.namespace_name
+ return self.__created_code
def _get_system_headers_impl( self ):
return []
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|