Пример #1
0
    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()
Пример #2
0
    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)