Revision: 409
Author: roman_yakovenko
Date: 2006-08-16 01:41:53 -0700 (Wed, 16 Aug 2006)
ViewCVS: http://svn.sourceforge.net/pygccxml/?rev=409&view=rev
Log Message:
-----------
fixing bug related to indexing suite v2
Modified Paths:
--------------
pyplusplus_dev/pyplusplus/module_builder/builder.py
Modified: pyplusplus_dev/pyplusplus/module_builder/builder.py
===================================================================
--- pyplusplus_dev/pyplusplus/module_builder/builder.py 2006-08-16 08:41:16 UTC (rev 408)
+++ pyplusplus_dev/pyplusplus/module_builder/builder.py 2006-08-16 08:41:53 UTC (rev 409)
@@ -8,13 +8,13 @@
import time
from pygccxml import parser
-from pygccxml import declarations as decls_package
-
-from pyplusplus import _logging_
+from pygccxml import declarations as decls_package
+
+from pyplusplus import _logging_
from pyplusplus import decl_wrappers
-from pyplusplus import file_writers
+from pyplusplus import file_writers
from pyplusplus import code_creators
-from pyplusplus import module_creator as mcreator_package
+from pyplusplus import module_creator as mcreator_package
class module_builder_t(object):
"""
@@ -22,11 +22,11 @@
and/or pygccxml functionality. If this is your first attempt to use Py++
consider to read tutorials. You can find them on U{web site<http://www.language-binding.net>}.
"""
-
+
def __init__( self
- , files
- , gccxml_path=''
- , working_directory='.'
+ , files
+ , gccxml_path=''
+ , working_directory='.'
, include_paths=None
, define_symbols=None
, undefine_symbols=None
@@ -40,26 +40,26 @@
"""
@param files: list of files, declarations from them you want to export
@type files: list of strings or L{file_configuration_t} instances
-
+
@param gccxml_path: path to gccxml binary. If you don't pass this argument,
pygccxml parser will try to locate it using you environment PATH variable
@type gccxml_path: str
-
+
@param include_paths: additional header files location. You don't have to
specify system and standard directories.
@type include_paths: list of strings
-
+
@param define_symbols: list of symbols to be defined for preprocessor.
@param define_symbols: list of strings
-
+
@param undefine_symbols: list of symbols to be undefined for preprocessor.
@param undefine_symbols: list of strings
-
+
@param cflags: Raw string to be added to gccxml command line.
"""
- object.__init__( self )
+ object.__init__( self )
self.logger = _logging_.loggers.module_builder
- gccxml_config = parser.config_t(
+ gccxml_config = parser.config_t(
gccxml_path=gccxml_path
, working_directory=working_directory
, include_paths=include_paths
@@ -77,34 +77,34 @@
, parser.project_reader_t.get_os_file_names( files ) )
tmp = map( lambda file_: os.path.split( file_ )[0], self.__parsed_files )
self.__parsed_dirs = filter( None, tmp )
-
+
self.__global_ns = self.__parse_declarations( files
, gccxml_config
, compilation_mode
, cache
- , indexing_suite_version)
- self.__code_creator = None
+ , indexing_suite_version)
+ self.__code_creator = None
if optimize_queries:
- self.run_query_optimizer()
-
- self.__declarations_code_head = []
+ self.run_query_optimizer()
+
+ self.__declarations_code_head = []
self.__declarations_code_tail = []
-
- self.__registrations_code_head = []
- self.__registrations_code_tail = []
+ self.__registrations_code_head = []
+ self.__registrations_code_tail = []
+
def _get_global_ns( self ):
return self.__global_ns
global_ns = property( _get_global_ns, doc="reference to global namespace" )
-
+
def run_query_optimizer(self):
"""
It is possible to optimze time that takes to execute queries. In most cases
this is done from __init__ method. But there are use-case, when you need
to disable optimizer at __init__ and run it later.
- """
- self.__global_ns.init_optimizer()
-
+ """
+ self.__global_ns.init_optimizer()
+
def __parse_declarations( self, files, gccxml_config, compilation_mode, cache, indexing_suite_version ):
if None is gccxml_config:
gccxml_config = parser.config_t()
@@ -118,21 +118,23 @@
self.logger.debug( 'parsing files - done( %f seconds )' % ( time.clock() - start_time ) )
self.logger.debug( 'settings declarations defaults - started' )
- global_ns = decls_package.matcher.get_single(
+ global_ns = decls_package.matcher.get_single(
decls_package.namespace_matcher_t( name='::' )
, decls )
if indexing_suite_version != 1:
for cls in global_ns.classes():
cls.indexing_suite_version = indexing_suite_version
-
+ for cls in global_ns.decls(decl_type=decls_package.class_declaration_t):
+ cls.indexing_suite_version = indexing_suite_version
+
start_time = time.clock()
self.__apply_decls_defaults(decls)
self.logger.debug( 'settings declarations defaults - done( %f seconds )'
% ( time.clock() - start_time ) )
return global_ns
-
+
def __filter_by_location( self, flatten_decls ):
- for decl in flatten_decls:
+ for decl in flatten_decls:
if not decl.location:
continue
fpath = decls_package.filtering.normalize_path( decl.location.file_name )
@@ -147,7 +149,7 @@
break
if not found:
decl.exclude()
-
+
def __apply_decls_defaults(self, decls):
flatten_decls = decls_package.make_flatten( decls )
self.__filter_by_location( flatten_decls )
@@ -163,39 +165,39 @@
, mem_vars )
map( lambda mem_var: mem_var.set_setter_call_policies( call_policies_resolver( mem_var, 'set' ) )
, mem_vars )
-
- @property
- def declarations_code_head( self ):
- "List of user code, that will be added to the head of the declarations section."
- return self.__declarations_code_head
-
- @property
- def declarations_code_tail( self ):
- "List of user code, that will be added to the tail of the declarations section."
- return self.__declarations_code_tail
-
- @property
- def registrations_code_head( self ):
- "List of user code, that will be added to the head of the registrations section."
- return self.__registrations_code_head
-
- @property
- def registrations_code_tail( self ):
- "List of user code, that will be added to the tail of the registrations section."
- return self.__registrations_code_tail
-
+
+ @property
+ def declarations_code_head( self ):
+ "List of user code, that will be added to the head of the declarations section."
+ return self.__declarations_code_head
+
+ @property
+ def declarations_code_tail( self ):
+ "List of user code, that will be added to the tail of the declarations section."
+ return self.__declarations_code_tail
+
+ @property
+ def registrations_code_head( self ):
+ "List of user code, that will be added to the head of the registrations section."
+ return self.__registrations_code_head
+
+ @property
+ def registrations_code_tail( self ):
+ "List of user code, that will be added to the tail of the registrations section."
+ return self.__registrations_code_tail
+
def print_declarations(self, decl=None, detailed=True, recursive=True, writer=sys.stdout.write):
"""
This function will print detailed description of all declarations or
some specific one.
-
+
@param decl: optional, if passed, then only it will be printed
@type decl: instance of L{decl_wrappers.decl_wrapper_t} class
- """
- if None is decl:
- decl = self.global_ns
- decl_wrappers.print_declarations( decl, detailed, recursive, writer )
-
+ """
+ if None is decl:
+ decl = self.global_ns
+ decl_wrappers.print_declarations( decl, detailed, recursive, writer )
+
def build_code_creator( self
, module_name
, boost_python_ns_name='bp'
@@ -207,20 +209,20 @@
, doc_extractor=None):
"""
Creates L{module_t} code creator.
-
- @param module_name: module name
+
+ @param module_name: module name
@type module_name: string
-
- @param boost_python_ns_name: boost::python namespace alias, by default
+
+ @param boost_python_ns_name: boost::python namespace alias, by default
it is 'bp'
@type boost_python_ns_name: string
-
+
@param call_policies_resolver_: callable, that will be invoked on every
calldef object. It should return call policies.
@type call_policies_resolver_: callable
- @param doc_extractor: callable, that takes as argument reference to declaration
+ @param doc_extractor: callable, that takes as argument reference to declaration
and returns documentation string
- @type doc_extractor: callable or None
+ @type doc_extractor: callable or None
"""
creator = mcreator_package.creator_t( self.global_ns
, module_name
@@ -239,74 +241,74 @@
# , self.__parsed_dirs )
return self.__code_creator
-
+
def _get_module( self ):
if not self.__code_creator:
raise RuntimeError( "self.module is equal to None. Did you forget to call build_code_creator function?" )
return self.__code_creator
code_creator = property( _get_module, doc="reference to L{code_creators.module_t} instance" )
-
+
def has_code_creator( self ):
"""
- Function, that will return True if build_code_creator function has been
+ Function, that will return True if build_code_creator function has been
called and False otherwise
"""
return not ( None is self.__code_creator )
-
- def add_declaration_code( self, code, tail=True ):
- if tail:
- self.__declarations_code_tail.append( code )
- else:
- self.__declarations_code_head.append( code )
-
- def add_registration_code( self, code, tail=True ):
- if tail:
- self.__registrations_code_tail.append( code )
- else:
- self.__registrations_code_head.append( code )
-
- def __merge_user_code( self ):
- for code in self.__declarations_code_tail:
- self.code_creator.add_declaration_code( code, -1 )
-
- for code in self.__declarations_code_head:
- self.code_creator.add_declaration_code( code, 0 )
-
- body = self.code_creator.body
-
- for code in self.__registrations_code_tail:
- body.adopt_creator( code_creators.custom_text_t( code ), -1 )
-
- for code in self.__registrations_code_head:
- body.adopt_creator( code_creators.custom_text_t( code ), 0 )
-
+ def add_declaration_code( self, code, tail=True ):
+ if tail:
+ self.__declarations_code_tail.append( code )
+ else:
+ self.__declarations_code_head.append( code )
+
+ def add_registration_code( self, code, tail=True ):
+ if tail:
+ self.__registrations_code_tail.append( code )
+ else:
+ self.__registrations_code_head.append( code )
+
+ def __merge_user_code( self ):
+ for code in self.__declarations_code_tail:
+ self.code_creator.add_declaration_code( code, -1 )
+
+ for code in self.__declarations_code_head:
+ self.code_creator.add_declaration_code( code, 0 )
+
+ body = self.code_creator.body
+
+ for code in self.__registrations_code_tail:
+ body.adopt_creator( code_creators.custom_text_t( code ), -1 )
+
+ for code in self.__registrations_code_head:
+ body.adopt_creator( code_creators.custom_text_t( code ), 0 )
+
+
def write_module( self, file_name ):
"""
Writes module to single file
@param file_name: file name
@type file_name: string
- """
+ """
self.__merge_user_code()
file_writers.write_file( self.code_creator, file_name )
-
+
def split_module(self, dir_name, huge_classes=None):
"""
Writes module to multiple files
-
+
@param dir_name: directory name
- @type dir_name: string
-
- @param huge_classes: list that contains reference to classes, that should be split
- """
- self.__merge_user_code()
+ @type dir_name: string
+
+ @param huge_classes: list that contains reference to classes, that should be split
+ """
+ self.__merge_user_code()
if None is huge_classes:
- file_writers.write_multiple_files( self.code_creator, dir_name )
- else:
+ file_writers.write_multiple_files( self.code_creator, dir_name )
+ else:
file_writers.write_class_multiple_files( self.code_creator, dir_name, huge_classes )
#select decl(s) interfaces
- def decl( self, name=None, function=None, header_dir=None, header_file=None, recursive=None ):
+ def decl( self, name=None, function=None, header_dir=None, header_file=None, recursive=None ):
"""Please see L{decl_wrappers.scopedef_t} class documentation"""
return self.global_ns.decl( name=name
, function=function
@@ -319,7 +321,7 @@
return self.global_ns.decls( name=name
, function=function
, header_dir=header_dir
- , header_file=header_file
+ , header_file=header_file
, recursive=recursive)
def class_( self, name=None, function=None, header_dir=None, header_file=None, recursive=None ):
@@ -327,7 +329,7 @@
return self.global_ns.class_( name=name
, function=function
, header_dir=header_dir
- , header_file=header_file
+ , header_file=header_file
, recursive=recursive)
def classes( self, name=None, function=None, header_dir=None, header_file=None, recursive=None ):
@@ -335,35 +337,35 @@
return self.global_ns.classes( name=name
, function=function
, header_dir=header_dir
- , header_file=header_file
+ , header_file=header_file
, recursive=recursive)
-
+
def variable( self, name=None, function=None, type=None, header_dir=None, header_file=None, recursive=None ):
"""Please see L{decl_wrappers.scopedef_t} class documentation"""
return self.global_ns.variable( name=name
- , function=function
+ , function=function
, type=type
, header_dir=header_dir
- , header_file=header_file
+ , header_file=header_file
, recursive=recursive)
def variables( self, name=None, function=None, type=None, header_dir=None, header_file=None, recursive=None ):
"""Please see L{decl_wrappers.scopedef_t} class documentation"""
return self.global_ns.variables( name=name
- , function=function
+ , function=function
, type=type
, header_dir=header_dir
- , header_file=header_file
+ , header_file=header_file
, recursive=recursive)
-
+
def calldef( self, name=None, function=None, return_type=None, arg_types=None, header_dir=None, header_file=None, recursive=None ):
"""Please see L{decl_wrappers.scopedef_t} class documentation"""
return self.global_ns.calldef( name=name
, function=function
, return_type=return_type
- , arg_types=arg_types
+ , arg_types=arg_types
, header_dir=header_dir
- , header_file=header_file
+ , header_file=header_file
, recursive=recursive )
def calldefs( self, name=None, function=None, return_type=None, arg_types=None, header_dir=None, header_file=None, recursive=None ):
@@ -371,11 +373,11 @@
return self.global_ns.calldefs( name=name
, function=function
, return_type=return_type
- , arg_types=arg_types
+ , arg_types=arg_types
, header_dir=header_dir
, header_file=header_file
, recursive=recursive)
-
+
def operator( self, name=None, symbol=None, return_type=None, arg_types=None, decl_type=None, header_dir=None, header_file=None, recursive=None ):
"""Please see L{decl_wrappers.scopedef_t} class documentation"""
return self.global_ns.operator( name=name
@@ -383,9 +385,9 @@
, function=function
, decl_type=decl_type
, return_type=return_type
- , arg_types=arg_types
+ , arg_types=arg_types
, header_dir=header_dir
- , header_file=header_file
+ , header_file=header_file
, recursive=recursive )
def operators( self, name=None, symbol=None, return_type=None, arg_types=None, decl_type=None, header_dir=None, header_file=None, recursive=None ):
@@ -395,19 +397,19 @@
, function=function
, decl_type=decl_type
, return_type=return_type
- , arg_types=arg_types
+ , arg_types=arg_types
, header_dir=header_dir
- , header_file=header_file
- , recursive=recursive )
-
+ , header_file=header_file
+ , recursive=recursive )
+
def member_function( self, name=None, function=None, return_type=None, arg_types=None, header_dir=None, header_file=None, recursive=None ):
"""Please see L{decl_wrappers.scopedef_t} class documentation"""
return self.global_ns.member_function( name=name
, function=function
, return_type=return_type
- , arg_types=arg_types
+ , arg_types=arg_types
, header_dir=header_dir
- , header_file=header_file
+ , header_file=header_file
, recursive=recursive )
def member_functions( self, name=None, function=None, return_type=None, arg_types=None, header_dir=None, header_file=None, recursive=None ):
@@ -415,19 +417,19 @@
return self.global_ns.member_functions( name=name
, function=function
, return_type=return_type
- , arg_types=arg_types
+ , arg_types=arg_types
, header_dir=header_dir
, header_file=header_file
, recursive=recursive)
-
+
def constructor( self, name=None, function=None, return_type=None, arg_types=None, header_dir=None, header_file=None, recursive=None ):
"""Please see L{decl_wrappers.scopedef_t} class documentation"""
return self.global_ns.constructor( name=name
, function=function
, return_type=return_type
- , arg_types=arg_types
+ , arg_types=arg_types
, header_dir=header_dir
- , header_file=header_file
+ , header_file=header_file
, recursive=recursive )
def constructors( self, name=None, function=None, return_type=None, arg_types=None, header_dir=None, header_file=None, recursive=None ):
@@ -435,20 +437,20 @@
return self.global_ns.constructors( name=name
, function=function
, return_type=return_type
- , arg_types=arg_types
+ , arg_types=arg_types
, header_dir=header_dir
, header_file=header_file
, recursive=recursive)
-
+
def member_operator( self, name=None, function=None, symbol=None, return_type=None, arg_types=None, header_dir=None, header_file=None, recursive=None ):
"""Please see L{decl_wrappers.scopedef_t} class documentation"""
return self.global_ns.member_operator( name=name
, symbol=symbol
, function=function
, return_type=return_type
- , arg_types=arg_types
+ , arg_types=arg_types
, header_dir=header_dir
- , header_file=header_file
+ , header_file=header_file
, recursive=recursive )
def member_operators( self, name=None, function=None, symbol=None, return_type=None, arg_types=None, header_dir=None, header_file=None, recursive=None ):
@@ -457,19 +459,19 @@
, symbol=symbol
, function=function
, return_type=return_type
- , arg_types=arg_types
+ , arg_types=arg_types
, header_dir=header_dir
- , header_file=header_file
- , recursive=recursive )
-
+ , header_file=header_file
+ , recursive=recursive )
+
def casting_operator( self, name=None, function=None, return_type=None, arg_types=None, header_dir=None, header_file=None, recursive=None ):
"""Please see L{decl_wrappers.scopedef_t} class documentation"""
return self.global_ns.casting_operator( name=name
, function=function
, return_type=return_type
- , arg_types=arg_types
+ , arg_types=arg_types
, header_dir=header_dir
- , header_file=header_file
+ , header_file=header_file
, recursive=recursive )
def casting_operators( self, name=None, function=None, return_type=None, arg_types=None, header_dir=None, header_file=None, recursive=None ):
@@ -477,30 +479,30 @@
return self.global_ns.casting_operators( name=name
, function=function
, return_type=return_type
- , arg_types=arg_types
+ , arg_types=arg_types
, header_dir=header_dir
, header_file=header_file
, recursive=recursive)
- def enumeration( self, name=None, function=None, header_dir=None, header_file=None, recursive=None ):
+ def enumeration( self, name=None, function=None, header_dir=None, header_file=None, recursive=None ):
"""Please see L{decl_wrappers.scopedef_t} class documentation"""
return self.global_ns.enumeration( name=name
, function=function
, header_dir=header_dir
, header_file=header_file
, recursive=recursive)
- enum = enumeration
-
+ enum = enumeration
+
def enumerations( self, name=None, function=None, header_dir=None, header_file=None, recursive=None ):
"""Please see L{decl_wrappers.scopedef_t} class documentation"""
return self.global_ns.enumerations( name=name
, function=function
, header_dir=header_dir
- , header_file=header_file
+ , header_file=header_file
, recursive=recursive)
-
- enums = enumerations
-
+
+ enums = enumerations
+
def namespace( self, name=None, function=None, recursive=None ):
"""Please see L{decl_wrappers.namespace_t} class documentation"""
return self.global_ns.namespace( name=name
@@ -512,15 +514,15 @@
return self.global_ns.namespaces( name=name
, function=function
, recursive=recursive )
-
+
def free_function( self, name=None, function=None, return_type=None, arg_types=None, header_dir=None, header_file=None, recursive=None ):
"""Please see L{decl_wrappers.namespace_t} class documentation"""
return self.global_ns.free_function( name=name
, function=function
, return_type=return_type
- , arg_types=arg_types
+ , arg_types=arg_types
, header_dir=header_dir
- , header_file=header_file
+ , header_file=header_file
, recursive=recursive )
def free_functions( self, name=None, function=None, return_type=None, arg_types=None, header_dir=None, header_file=None, recursive=None ):
@@ -528,7 +530,7 @@
return self.global_ns.free_functions( name=name
, function=function
, return_type=return_type
- , arg_types=arg_types
+ , arg_types=arg_types
, header_dir=header_dir
, header_file=header_file
, recursive=recursive)
@@ -539,9 +541,9 @@
, symbol=symbol
, function=function
, return_type=return_type
- , arg_types=arg_types
+ , arg_types=arg_types
, header_dir=header_dir
- , header_file=header_file
+ , header_file=header_file
, recursive=recursive )
def free_operators( self, name=None, function=None, symbol=None, return_type=None, arg_types=None, header_dir=None, header_file=None, recursive=None ):
@@ -550,13 +552,13 @@
, symbol=symbol
, function=function
, return_type=return_type
- , arg_types=arg_types
+ , arg_types=arg_types
, header_dir=header_dir
- , header_file=header_file
+ , header_file=header_file
, recursive=recursive )
def _get_BOOST_PYTHON_MAX_ARITY( self ):
return decl_wrappers.calldef_t.BOOST_PYTHON_MAX_ARITY
def _set_BOOST_PYTHON_MAX_ARITY( self, value ):
decl_wrappers.calldef_t.BOOST_PYTHON_MAX_ARITY = value
- BOOST_PYTHON_MAX_ARITY = property( _get_BOOST_PYTHON_MAX_ARITY, _set_BOOST_PYTHON_MAX_ARITY )
+ BOOST_PYTHON_MAX_ARITY = property( _get_BOOST_PYTHON_MAX_ARITY, _set_BOOST_PYTHON_MAX_ARITY )
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|