コード例 #1
0
ファイル: user.py プロジェクト: parastoo-62/pie
    def _get_frame(self, context, stack_values):
        frame = Frame()
        for index, argument in enumerate(self.arguments):
            argument_name, argument_type, default = argument
            try:
                value = stack_values[index]

                if argument_type == self.REFERENCE:
                    if not isinstance(value, W_Variable):
                        NonVariablePassedByReference(context).handle()
                        frame.variables[argument_name] = space.variable(space.null())
                    else:
                        frame.variables[argument_name] = value
                else:
                    frame.set_variable(argument_name, value.deref())

            except IndexError:
                if default is None:
                    MissingArgument(context, index + 1, self).handle()
                    frame.variables[argument_name] = space.variable(space.null())
                else:
                    frame.variables[argument_name] = space.variable(default)

        return frame
コード例 #2
0
ファイル: frame.py プロジェクト: parastoo-62/pie
 def set_variable(self, name, w_value):
     if name in self.variables:
         self.variables[name].set_value(w_value.deref())
     else:
         self.variables[name] = space.variable(w_value.deref())