public static Stamp StampJoin(Stamp s1, Stamp s2) { // joins two stamps, returning the resulting stamp Id.Sum(s1.Id, s2.Id); Event.Join(s1.Event, s2.Event); return s1; }
public static Stamp[] StampFork(Stamp st) { var b = new Stamp { Event = (Event.Clone(st.Event)) }; var par = st.Id.Split(); st.Id = (par[0]); b.Id = (par[1]); return new[]{st, b}; }
public static Stamp StampEvent(Stamp st) { // returns the new updated Stamp var res = st.Clone(); StampFill(st.Id, st.Event); var notFilled = st.Event.Equals(res.Event); if (notFilled) { StampGrow(st.Id, st.Event); } return res; }
public static Stamp StampPeek(Stamp st) { var i = new Id(0); var ev = Event.Clone(st.Event); return new Stamp(i, ev); }
protected Stamp(Stamp s) { Event = s.Event; Id = s.Id; }
public bool Leq(Stamp s2) { return Event.Leq(s2.Event); }
public void Join(Stamp s2) { // joins two stamps becoming itself the result stamp Id.Sum(Id, s2.Id); Event.Join(Event,s2.Event); }
public Stamp Fork() { var st = new Stamp { Event = (Event.Clone(Event)) }; var par = Id.Split(); Id = par[0]; st.Id = (par[1]); return st; }