def assertit(self): """Assert the fact within CLIPS.""" data = clips.data.DataObject(self._env) data.value = list(self._multifield) if lib.EnvPutFactSlot(self._env, self._fact, ffi.NULL, data.byref) != 1: raise CLIPSError(self._env) super(ImpliedFact, self).assertit()
def __setitem__(self, key, value): if self.asserted: raise RuntimeError("Fact already asserted") data = clips.data.DataObject(self._env) data.value = value ret = lib.EnvPutFactSlot(self._env, self._fact, str(key).encode(), data.byref) if ret != 1: if key not in (s.name for s in self.template.slots()): raise KeyError("'%s' fact has not slot '%s'" % (self.template.name, key)) raise CLIPSError(self._env)