package ContainerExample;

import FVisitor.CompReceiver;
import FVisitor.FVisitor;
import FVisitor.ThreadedComp;

class Overfull extends CompReceiver{
    ElementSum last;
    final boolean overfull;
    public Overfull(ElementSum es, boolean of){ last = es; overfull = of; }
    public Overfull before(Container c, ThreadedComp<ElementSum, Overfull> comp){
        return new Overfull(comp.vis1, false);
    }
    public Overfull after(Container c, ThreadedComp<ElementSum, Overfull> comp){
        return new Overfull(null, (comp.vis1.sum-last.sum) > c.capacity);
    }
    public Overfull visitDefault(Object o, FVisitor vis){
        return new Overfull(((ThreadedComp<?, Overfull>)vis).vis2.last, false);
    }
    public boolean continueVisit(){ return overfull; }
    public String toString(){ return "("+last+", "+overfull+")";}
}
