| Trees | Indices | Help | 
 | 
|---|
|  | 
 1  # Copyright 2006 Roman Yakovenko. 
 2  # Distributed under the Boost Software License, Version 1.0. (See 
 3  # accompanying file LICENSE_1_0.txt or copy at 
 4  # http://www.boost.org/LICENSE_1_0.txt) 
 5   
 6  """This module contains the class L{function_transformation_t}. 
 7  """ 
 8  import md5 
 9  import controllers 
10  from pygccxml import declarations 
11  from pyplusplus import code_repository 
15          """Constructor. """ 
16          self.__function = function 
17          self.__controller = None 
18          if isinstance( function.parent, declarations.class_t ): 
19              if declarations.VIRTUALITY_TYPES.NOT_VIRTUAL == function.virtuality: 
20                  self.__controller = controllers.mem_fun_controller_t( function ) 
21              else: 
22                  self.__controller = controllers.virtual_mem_fun_controller_t( function ) 
23          else: 
24              self.__controller = controllers.free_fun_controller_t( function ) 
25          self.__transformers = map( lambda tr_creator: tr_creator( function ), transformer_creator ) 
26          self.__thread_safe = keywd.get( 'thread_safe', False ) 
27          self.__controller.apply( self.__transformers ) 
28          self.__unique_name = None 
29          self.__alias = keywd.get( 'alias', None ) 
30           
31      @property 
33          if None is self.__unique_name: 
34              obj = md5.new() 
35              if self.__function.mangled: # free functions don't have a mangled value 
36                  obj.update( self.__function.mangled ) 
37              else: 
38                  obj.update( self.__function.decl_string ) 
39                  obj.update( self.__function.location.file_name ) 
40                  obj.update( str( self.__function.location.line ) ) 
41              self.__unique_name = self.__function.name + '_' + obj.hexdigest () 
42          return self.__unique_name 
43   
44      @property 
46          if None is self.__alias: 
47              if self.__function.overloads: 
48                  self.__alias = self.unique_name 
49              else: 
50                  self.__alias = self.__function.alias 
51          return self.__alias 
52       
53      @property 
56   
57      @property 
60   
62          headers = [] 
63          map( lambda transformer: headers.extend( transformer.required_headers() ) 
64               , self.transformers ) 
65          if self.__function.call_policies: 
66              headers.append( code_repository.call_policies.file_name ) 
67          return headers 
68   
69      @property 
72   
| Trees | Indices | Help | 
 | 
|---|
| Generated by Epydoc 3.0.1 on Mon Oct 20 08:51:43 2008 | http://epydoc.sourceforge.net |