private void UpdateAtomicCompositionQueryForPartInHashSet( AtomicComposition atomicComposition, HashSet <ComposablePartDefinition> hashset, AtomicCompositionQueryState state) { PartQueryStateNode previousNode = GetPartQueryStateNode(atomicComposition); atomicComposition.SetValue(this, new PartInHashSetQueryStateNode(hashset, previousNode, state)); }
private void UpdateAtomicCompositionQueryForPartEquals( AtomicComposition atomicComposition, ComposablePartDefinition part, AtomicCompositionQueryState state) { PartQueryStateNode previousNode = GetPartQueryStateNode(atomicComposition); atomicComposition.SetValue(this, new PartEqualsQueryStateNode(part, previousNode, state)); }
private AtomicCompositionQueryState QueryPartState(AtomicComposition atomicComposition, ComposablePartDefinition definition) { PartQueryStateNode node = GetPartQueryStateNode(atomicComposition); if (node == null) { return(AtomicCompositionQueryState.Unknown); } else { return(node.GetQueryState(definition)); } }
public AtomicCompositionQueryState GetQueryState(ComposablePartDefinition definition) { int hashCode = definition.GetHashCode(); PartQueryStateNode node = this; do { if (node.IsMatchingDefinition(definition, hashCode)) { return(node._state); } node = node._previousNode; }while (node != null); return(AtomicCompositionQueryState.Unknown); }
protected PartQueryStateNode(PartQueryStateNode previousNode, AtomicCompositionQueryState state) { _previousNode = previousNode; _state = state; }
public PartInHashSetQueryStateNode(HashSet <ComposablePartDefinition> parts, PartQueryStateNode previousNode, AtomicCompositionQueryState state) : base(previousNode, state) { _parts = parts; }
public PartEqualsQueryStateNode(ComposablePartDefinition part, PartQueryStateNode previousNode, AtomicCompositionQueryState state) : base(previousNode, state) { _part = part; _hashCode = part.GetHashCode(); }