Revision: 254
Author: roman_yakovenko
Date: 2006-06-27 12:36:38 -0700 (Tue, 27 Jun 2006)
ViewCVS: http://svn.sourceforge.net/pygccxml/?rev=254&view=rev
Log Message:
-----------
indexing suite 2
Modified Paths:
--------------
pyplusplus_dev/pyplusplus/code_creators/__init__.py
pyplusplus_dev/pyplusplus/code_creators/indexing_suites.py
pyplusplus_dev/pyplusplus/decl_wrappers/__init__.py
pyplusplus_dev/pyplusplus/decl_wrappers/class_wrapper.py
pyplusplus_dev/pyplusplus/decl_wrappers/indexing_suite.py
pyplusplus_dev/pyplusplus/module_builder/builder.py
pyplusplus_dev/pyplusplus/module_creator/creator.py
Added Paths:
-----------
pyplusplus_dev/pyplusplus/decl_wrappers/indexing_suite2.py
Modified: pyplusplus_dev/pyplusplus/code_creators/__init__.py
===================================================================
--- pyplusplus_dev/pyplusplus/code_creators/__init__.py 2006-06-27 08:23:42 UTC (rev 253)
+++ pyplusplus_dev/pyplusplus/code_creators/__init__.py 2006-06-27 19:36:38 UTC (rev 254)
@@ -105,4 +105,4 @@
from array_1_registrator import array_1_registrator_t
-from indexing_suites import indexing_suite_t
+from indexing_suites import indexing_suite1_t
Modified: pyplusplus_dev/pyplusplus/code_creators/indexing_suites.py
===================================================================
--- pyplusplus_dev/pyplusplus/code_creators/indexing_suites.py 2006-06-27 08:23:42 UTC (rev 253)
+++ pyplusplus_dev/pyplusplus/code_creators/indexing_suites.py 2006-06-27 19:36:38 UTC (rev 254)
@@ -10,7 +10,7 @@
import declaration_based
from pygccxml import declarations
-class indexing_suite_t( code_creator.code_creator_t ):
+class indexing_suite1_t( code_creator.code_creator_t ):
def __init__(self, parent=None ):
code_creator.code_creator_t.__init__( self, parent=parent )
Modified: pyplusplus_dev/pyplusplus/decl_wrappers/__init__.py
===================================================================
--- pyplusplus_dev/pyplusplus/decl_wrappers/__init__.py 2006-06-27 08:23:42 UTC (rev 253)
+++ pyplusplus_dev/pyplusplus/decl_wrappers/__init__.py 2006-06-27 19:36:38 UTC (rev 254)
@@ -86,7 +86,8 @@
from user_text import user_text_t
from user_text import class_user_text_t
-from indexing_suite import indexing_suite_t
+from indexing_suite import indexing_suite1_t
+from indexing_suite2 import indexing_suite2_t
class dwfactory_t( declarations.decl_factory_t ):
Modified: pyplusplus_dev/pyplusplus/decl_wrappers/class_wrapper.py
===================================================================
--- pyplusplus_dev/pyplusplus/decl_wrappers/class_wrapper.py 2006-06-27 08:23:42 UTC (rev 253)
+++ pyplusplus_dev/pyplusplus/decl_wrappers/class_wrapper.py 2006-06-27 19:36:38 UTC (rev 254)
@@ -7,8 +7,8 @@
import decl_wrapper
import scopedef_wrapper
from pygccxml import declarations
-import indexing_suite as container_suites
-
+import indexing_suite as isuite1
+import indexing_suite2 as isuite2
class class_common_impl_details_t( object ):
def __init__(self):
@@ -17,7 +17,15 @@
self._indexing_suite = None
self._equality_comparable = None
self._lessthan_comparable = None
-
+ self._isuite_version = 1
+
+ def _get_indexing_suite_version( self ):
+ return self._isuite_version
+ def _set_indexing_suite_version( self, version ):
+ assert version in ( 1, 2 )
+ self._isuite_version = version
+ indexing_suite_version = property( _get_indexing_suite_version, _set_indexing_suite_version )
+
def _get_always_expose_using_scope( self ):
return self._always_expose_using_scope
def _set_always_expose_using_scope( self, value ):
@@ -28,7 +36,10 @@
if self._indexing_suite is None:
for container_traits in declarations.all_container_traits:
if container_traits.is_my_case( self ):
- self._indexing_suite = container_suites.indexing_suite_t( self, container_traits )
+ if self._isuite_version == 1:
+ self._indexing_suite = isuite1.indexing_suite1_t( self, container_traits )
+ else:
+ self._indexing_suite = isuite2.indexing_suite2_t( self, container_traits )
break
return self._indexing_suite
indexing_suite = property( _get_indexing_suite )
Modified: pyplusplus_dev/pyplusplus/decl_wrappers/indexing_suite.py
===================================================================
--- pyplusplus_dev/pyplusplus/decl_wrappers/indexing_suite.py 2006-06-27 08:23:42 UTC (rev 253)
+++ pyplusplus_dev/pyplusplus/decl_wrappers/indexing_suite.py 2006-06-27 19:36:38 UTC (rev 254)
@@ -16,7 +16,7 @@
# 4. std::complex
# 5. shared_ptr
-class indexing_suite_t( object ):
+class indexing_suite1_t( object ):
def __init__( self, container_class, container_traits, no_proxy=None, derived_policies=None ):
object.__init__( self )
self.__no_proxy = no_proxy
Added: pyplusplus_dev/pyplusplus/decl_wrappers/indexing_suite2.py
===================================================================
--- pyplusplus_dev/pyplusplus/decl_wrappers/indexing_suite2.py (rev 0)
+++ pyplusplus_dev/pyplusplus/decl_wrappers/indexing_suite2.py 2006-06-27 19:36:38 UTC (rev 254)
@@ -0,0 +1,88 @@
+# 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)
+from pygccxml import declarations
+
+#NoProxy
+#By default indexed elements have Python reference semantics and are returned by
+#proxy. This can be disabled by supplying true in the NoProxy template parameter.
+#When we want to disable is:
+#1. We deal with immutable objects:
+# 1. fundamental types
+# 2. enum type
+# 3. std::[w]string
+# 4. std::complex
+# 5. shared_ptr
+
+class indexing_suite2_t( object ):
+ def __init__( self, container_class, container_traits ):
+ object.__init__( self )
+ self.__call_policies = None
+ self.__container_class = container_class
+ self.__container_traits = container_traits
+ self.__disable_len = None
+ self.__disable_slices = None
+ self.__disable_search = None
+ self.__disable_reorder = None
+ self.__disable_extend = None
+ self.__disable_insert = None
+
+ def _get_container_class( self ):
+ return self.__container_class
+ container_class = property( _get_container_class )
+
+ def _get_container_traits( self ):
+ return self._get_container_traits()
+ container_traits = property( _get_container_traits )
+
+ def _get_call_policies( self ):
+ #TODO find out call policies
+ return self.__call_policies
+ def _set_call_policies( self, call_policies ):
+ self.__call_policies = call_policies
+ call_policies = property( _get_call_policies, _set_call_policies )
+
+ def _get_disable_len( self ):
+ return self.__disable_len
+ def _set_disable_len( self, value ):
+ self.__disable_len = value
+ disable_len = property( _get_disable_len, _set_disable_len )
+
+ def _get_disable_slices( self ):
+ return self.__disable_slices
+ def _set_disable_slices( self, value ):
+ self.__disable_slices = value
+ disable_slices = property( _get_disable_slices, _set_disable_slices )
+
+ def _get_disable_search( self ): #need operator==
+ if None is self.__disable_search:
+ value_type = self.container_traits.value_type( self.container_class )
+ if not declarations.has_public_equal( value_type ):
+ self.__disable_search = True
+ return self.__disable_search
+ def _set_disable_search( self, value ):
+ self.__disable_search = value
+ disable_search = property( _get_disable_search, _set_disable_search )
+
+ def _get_disable_reorder( self ): #need operator<
+ if None is self.__disable_reorder:
+ value_type = self.container_traits.value_type( self.container_class )
+ if not declarations.has_public_less( value_type ):
+ self.__disable_reorder = True
+ return self.__disable_reorder
+ def _set_disable_reorder( self, value ):
+ self.__disable_reorder = value
+ disable_reorder = property( _get_disable_reorder, _set_disable_reorder )
+
+ def _get_disable_extend( self ):
+ return self.__disable_extend
+ def _set_disable_extend( self, value ):
+ self.__disable_extend = value
+ disable_extend = property( _get_disable_extend, _set_disable_extend )
+
+ def _get_disable_insert( self ):
+ return self.__disable_insert
+ def _set_disable_insert( self, value ):
+ self.__disable_insert = value
+ disable_insert = property( _get_disable_insert, _set_disable_insert )
Modified: pyplusplus_dev/pyplusplus/module_builder/builder.py
===================================================================
--- pyplusplus_dev/pyplusplus/module_builder/builder.py 2006-06-27 08:23:42 UTC (rev 253)
+++ pyplusplus_dev/pyplusplus/module_builder/builder.py 2006-06-27 19:36:38 UTC (rev 254)
@@ -34,7 +34,8 @@
, compilation_mode=None
, cache=None
, optimize_queries=True
- , ignore_gccxml_output=False):
+ , ignore_gccxml_output=False
+ , indexing_suite_version=1):
"""
@param files: list of files, declarations from them you want to export
@type files: list of strings or L{file_configuration_t} instances
@@ -76,11 +77,12 @@
self.__global_ns = self.__parse_declarations( files
, gccxml_config
, compilation_mode
- , cache )
+ , cache
+ , indexing_suite_version)
self.__code_creator = None
if optimize_queries:
self.run_query_optimizer()
-
+
def _get_global_ns( self ):
return self.__global_ns
global_ns = property( _get_global_ns, doc="reference to global namespace" )
@@ -93,7 +95,7 @@
"""
self.__global_ns.init_optimizer()
- def __parse_declarations( self, files, gccxml_config, compilation_mode, cache ):
+ def __parse_declarations( self, files, gccxml_config, compilation_mode, cache, indexing_suite_version ):
if None is gccxml_config:
gccxml_config = parser.config_t()
if None is compilation_mode:
@@ -102,16 +104,23 @@
_logging_.logger.debug( 'parsing files - started' )
reader = parser.project_reader_t( gccxml_config, cache, decl_wrappers.dwfactory_t() )
decls = reader.read_files( files, compilation_mode )
+
_logging_.logger.debug( 'parsing files - done( %f seconds )' % ( time.clock() - start_time ) )
_logging_.logger.debug( 'settings declarations defaults- started' )
+
+ 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
+
start_time = time.clock()
self.__apply_decls_defaults(decls)
_logging_.logger.debug( 'settings declarations defaults - done( %f seconds )'
% ( time.clock() - start_time ) )
- return decls_package.matcher.get_single(
- decls_package.namespace_matcher_t( name='::' )
- , decls )
-
+ return global_ns
+
def __filter_by_location( self, flatten_decls ):
for decl in flatten_decls:
if not decl.location:
Modified: pyplusplus_dev/pyplusplus/module_creator/creator.py
===================================================================
--- pyplusplus_dev/pyplusplus/module_creator/creator.py 2006-06-27 08:23:42 UTC (rev 253)
+++ pyplusplus_dev/pyplusplus/module_creator/creator.py 2006-06-27 19:36:38 UTC (rev 254)
@@ -391,7 +391,7 @@
value_type = cls.indexing_suite.value_type()
if declarations.is_class( value_type ) and not declarations.has_public_equal( value_type ):
cls_creator.adopt_creator( create_explanation( cls ) )
- cls_creator.adopt_creator( code_creators.indexing_suite_t() )
+ cls_creator.adopt_creator( code_creators.indexing_suite1_t() )
self.__module_body.adopt_creator( cls_creator )
def create(self, decl_headers=None):
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|