/** * Modify a tuple in this node. * @param left The tuple. */ public void modifyTuple(Tuple left, int tupleindex, OAVAttributeType type, Object oldvalue, Object newvalue, IOAVState state, ReteMemory mem, AbstractAgenda agenda) { if(!getRelevantAttributes().contains(type)) return; super.modifyTuple(left, tupleindex, type, oldvalue, newvalue, state, mem, agenda); if(!isAffected(type)) { Collection omem = fetchObjectMemory(state, left, mem); if(omem!=null) { for(Iterator it=omem.iterator(); it.hasNext(); ) { Object right = it.next(); boolean contains = isMatchContained(state, left, right, mem); // Tuple changed in memory -> propagate modification if(contains) propagateModification(left, right, tupleindex, type, oldvalue, newvalue, state, mem, agenda); } } } }
/** * Modify a tuple in this node. * @param left The tuple. */ public void modifyTuple(Tuple left, int tupleindex, OAVAttributeType type, Object oldvalue, Object newvalue, IOAVState state, ReteMemory mem, AbstractAgenda agenda) { if(!getRelevantAttributes().contains(type)) return; super.modifyTuple(left, tupleindex, type, oldvalue, newvalue, state, mem, agenda); if(!isAffected(type)) { Collection omem = fetchObjectMemory(state, left, mem); if(omem!=null) { for(Iterator it=omem.iterator(); it.hasNext(); ) { Object right = it.next(); boolean contains = isMatchContained(state, left, right, mem); // Tuple changed in memory -> propagate modification if(contains) propagateModification(left, right, tupleindex, type, oldvalue, newvalue, state, mem, agenda); } } } }
super.modifyTuple(left, tupleindex, type, oldvalue, newvalue, state, mem, agenda); nomem.setDelay(false);
super.modifyTuple(left, tupleindex, type, oldvalue, newvalue, state, mem, agenda); nomem.setDelay(false);