parameters: (self, lower)
docstring: Lower the generator's initialization function (which will fill up
          the passed-by-reference generator structure).
docstring_summary: Lower the generator's initialization function (which will fill up
          the passed-by-reference generator structure).
docstring_tokens: Lower the generator s initialization function ( which will fill up the passed - by - reference generator structure ) .
function: def lower_init_func(self, lower):
          """
          Lower the generator's initialization function (which will fill up
          the passed-by-reference generator structure).
          """
          lower.setup_function(self.fndesc)
  
          builder = lower.builder
  
          # Insert the generator into the target context in order to allow
          # calling from other Numba-compiled functions.
          lower.context.insert_generator(self.gentype, self.gendesc,
                                         [self.library])
  
          # Init argument values
          lower.extract_function_arguments()
  
          lower.pre_lower()
  
          # Initialize the return structure (i.e. the generator structure).
          retty = self.context.get_return_type(self.gentype)
          # Structure index #0: the initial resume index (0 == start of generator)
          resume_index = self.context.get_constant(types.int32, 0)
          # Structure index #1: the function arguments
          argsty = retty.elements[1]
          statesty = retty.elements[2]
  
          lower.debug_print("# low_init_func incref")
          # Incref all NRT arguments before storing into generator states
          if self.context.enable_nrt:
              for argty, argval in zip(self.fndesc.argtypes, lower.fnargs):
                  self.context.nrt.incref(builder, argty, argval)
  
          # Filter out omitted arguments
          argsval = self.arg_packer.as_data(builder, lower.fnargs)
  
          # Zero initialize states
          statesval = Constant.null(statesty)
          gen_struct = cgutils.make_anonymous_struct(builder,
                                                     [resume_index, argsval,
                                                      statesval],
                                                     retty)
  
          retval = self.box_generator_struct(lower, gen_struct)
  
          lower.debug_print("# low_init_func before return")
          self.call_conv.return_value(builder, retval)
          lower.post_lower()
function_tokens: def lower_init_func ( self , lower ) : lower . setup_function ( self . fndesc ) builder = lower . builder # Insert the generator into the target context in order to allow # calling from other Numba-compiled functions. lower . context . insert_generator ( self . gentype , self . gendesc , [ self . library ] ) # Init argument values lower . extract_function_arguments ( ) lower . pre_lower ( ) # Initialize the return structure (i.e. the generator structure). retty = self . context . get_return_type ( self . gentype ) # Structure index #0: the initial resume index (0 == start of generator) resume_index = self . context . get_constant ( types . int32 , 0 ) # Structure index #1: the function arguments argsty = retty . elements [ 1 ] statesty = retty . elements [ 2 ] lower . debug_print ( "# low_init_func incref" ) # Incref all NRT arguments before storing into generator states if self . context . enable_nrt : for argty , argval in zip ( self . fndesc . argtypes , lower . fnargs ) : self . context . nrt . incref ( builder , argty , argval ) # Filter out omitted arguments argsval = self . arg_packer . as_data ( builder , lower . fnargs ) # Zero initialize states statesval = Constant . null ( statesty ) gen_struct = cgutils . make_anonymous_struct ( builder , [ resume_index , argsval , statesval ] , retty ) retval = self . box_generator_struct ( lower , gen_struct ) lower . debug_print ( "# low_init_func before return" ) self . call_conv . return_value ( builder , retval ) lower . post_lower ( )