internal ImmutableModelGroup(GreenModelGroup green, MutableModelGroup mutableModelGroup) { this.green = green; this.mutableModelGroup = new WeakReference <MutableModelGroup>(mutableModelGroup); this.models = new ConditionalWeakTable <ModelId, ImmutableModel>(); this.objects = new ConditionalWeakTable <ObjectId, ImmutableObjectBase>(); }
internal MutableModelGroup(GreenModelGroup green, ImmutableModelGroup immutableModelGroup) { this.green = green; this.updater = new ThreadLocal <GreenModelUpdater>(); this.immutableModelGroup = new WeakReference <ImmutableModelGroup>(immutableModelGroup); this.models = new ConditionalWeakTable <ModelId, MutableModel>(); this.objects = new ConditionalWeakTable <ObjectId, MutableObject>(); }
public void AddReference(MutableModelGroup reference) { GreenModelGroup gmg = reference.Green; foreach (var greenReference in gmg.References) { this.AddReference(greenReference.Value); } foreach (var greenModel in gmg.Models) { this.AddReference(greenModel.Value); } }
internal GreenModelUpdateContext BeginUpdate() { GreenModelUpdater updater = this.updater.Value; if (updater != null) { return(new GreenModelUpdateContext(false, updater, this.green)); } else { GreenModelGroup green = this.green; updater = new GreenModelUpdater(green, this); this.updater.Value = updater; return(new GreenModelUpdateContext(true, updater, green)); } }
public void AddReference(ImmutableModel reference) { if (reference.ModelGroup != null) { GreenModelGroup gmg = reference.ModelGroup.Green; foreach (var greenReference in gmg.References) { this.AddReference(greenReference.Value); } foreach (var greenModel in gmg.Models) { this.AddReference(greenModel.Value); } } else { this.AddReference(reference.Green); } }