Esempio n. 1
0
	def attach_defaults(self, default_insts, kwdefault_insts):
		if default_insts:
			tmp = PyTupleLL(None, self.v)
			tmp.declare_tmp(name=self.hlnode.owner.name + "_defaults")
			tmp.pack(*default_insts)
			self.c_obj.set_attr_string('__defaults__', tmp)
			tmp.decref()
		if kwdefault_insts:
			tmp = PyDictLL(None, self.v)
			tmp.declare_tmp(name=self.hlnode.owner.name + "_kwdefaults")
			tmp.new()
			for name, inst in kwdefault_insts:
				if inst is None:
					self.v.none.incref()
					tmp.set_item_string(name, self.v.none)
				else:
					tmp.set_item_string(name, inst)
					inst.decref()
			self.c_obj.set_attr_string('__kwdefaults__', tmp)
			tmp.decref()