Ejemplo n.º 1
0
        private void push(FoldableObjectToken info) {
            if (info == null) return;

            info.Size = info.Target.CurrentSize;
            info.State = info.Target.CurrentState;

            switch (info.State) {
                case FoldableObjectState.Active:
                    Allocate(info.Size);
                    _activeObjects.AddFirst(info);
                    _totalActiveSize += info.Size;
                    break;
                case FoldableObjectState.Folded:
                    _packedObjects.AddFirst(info);
                    break;
                case FoldableObjectState.NotRegistered:
                    // ignore
                    break;
                default:
                    throw new InvalidOperationException();
            }
        }
Ejemplo n.º 2
0
        private void pop(FoldableObjectToken info) {
            if (info == null) return;

            switch (info.State) {
                case FoldableObjectState.Active:
                    _activeObjects.Remove(info);
                    _totalActiveSize -= info.Size;
                    break;
                case FoldableObjectState.Folded:
                    _packedObjects.Remove(info);
                    break;
                case FoldableObjectState.NotRegistered:
                    // ignore
                    break;
                default:
                    throw new InvalidOperationException();
            }
        }