1   
  2   
  3   
  4   
  5   
  6  import os 
  7  import algorithm 
  8  import registration_based 
  9  from pygccxml import declarations 
 10   
 11 -class property_t( registration_based.registration_based_t ): 
  12 -    def __init__(self, property_def, wrapper=None ): 
  17   
 18      @property 
 20          return self._property_def 
  21   
 22      @property 
 24          if not self._make_function: 
 25              self._make_function = algorithm.create_identifier( self, '::boost::python::make_function' ) 
 26          return self._make_function 
  27   
 30   
 50   
 61   
 67   
 82   
 84          result = [] 
 85          param_sep = ', ' 
 86          if self.has_long_line(): 
 87              param_sep = os.linesep + self.indent( param_sep ) 
 88   
 89          fget_class_typedef_code, fget_class_alias = None, None 
 90          fset_class_typedef_code, fset_class_alias = None, None 
 91          if self.is_same_parent(): 
 92              fget_class_typedef_code, fget_class_alias \ 
 93                  = self.create_class_typedef_on_demand( self.property_def.fget ) 
 94              fset_class_alias = fget_class_alias 
 95              fset_class_typedef_code = fget_class_typedef_code 
 96          else: 
 97              fget_class_typedef_code, fget_class_alias \ 
 98                  = self.create_class_typedef_on_demand( self.property_def.fget, 'fget_' ) 
 99              fset_class_typedef_code, fset_class_alias \ 
100                  = self.create_class_typedef_on_demand( self.property_def.fset, 'fset_' ) 
101   
102          if fget_class_typedef_code: 
103              result.append( fget_class_typedef_code ) 
104   
105          if fset_class_typedef_code and fset_class_typedef_code != fget_class_typedef_code: 
106              result.append( os.linesep ) 
107              result.append( fset_class_typedef_code ) 
108   
109          if result: 
110              result.append( 2 * os.linesep ) 
111   
112          result.append( self.create_function_type_alias_code( self.property_def.fget, 'fget', fget_class_alias ) ) 
113          if self.property_def.fset: 
114              result.append( os.linesep ) 
115              result.append( self.create_function_type_alias_code( self.property_def.fset, 'fset', fset_class_alias ) ) 
116   
117          result.append( 2 * os.linesep ) 
118   
119          add_property = None 
120          if self.property_def.is_static: 
121              add_property = 'add_static_property' 
122          else: 
123              add_property = 'add_property' 
124   
125          class_var_name = self.parent.class_var_name 
126          if self.has_long_line(): 
127              result.append( '%s.%s( ' % ( class_var_name, add_property ) ) 
128              result.append( os.linesep + self.indent( '"%s"' % self.property_def.name ) ) 
129          else: 
130              result.append( '%s.%s( "%s"' % ( class_var_name, add_property, self.property_def.name ) ) 
131          result.append( param_sep + self.create_accessor_code( self.property_def.fget, 'fget' ) ) 
132          if self.property_def.fset: 
133              result.append( param_sep + self.create_accessor_code( self.property_def.fset, 'fset' )) 
134          if self.property_def.doc: 
135              result.append( param_sep + self.property_def.doc) 
136          result.append( ' );') 
137          return ''.join( result ) 
 138   
140          result = [] 
141          result.append( '{ //%s' % self.property_def ) 
142          result.append( '' ) 
143          result.append( self.indent( self.create_property_code() ) ) 
144          result.append( '' ) 
145          result.append( '}' ) 
146          return os.linesep.join( result ) 
 147