AtomsList<T> | A list held as one piece of application state, changed in place. Every change notifies what reads the list, marks the frame stale and records an undo step. |
AtomsMap<TKey, TValue> | A map held as one piece of application state, changed in place the way AtomsList is. Whether changes can be undone is decided by creating a TrackedAtomsMap or a LocalAtomsMap. |
AtomsQueue<T> | A queue held as one piece of application state, joined at the back and left from the front. It is touched only by the drawing thread, so background work hands its item over with FrameThread.Post. |
AtomsSet<T> | A set held as one piece of application state, behaving as a HashSet<T> does: adding what is already there changes nothing. A walk of it is in no order, so sort it where the reader sees the order. |
AtomsStack<T> | A stack held as one piece of application state, put on and taken off the top. AtomsStack.Value reads from the top down, so Value[0] is what AtomsStack.Peek answers. |