Beispiel #1
0
 private void CopyOnWrite()
 {
     if (_referenceCount.Count > 1)
     {
         _data = new EntityData(_data);
         _referenceCount.Decrement();
         _referenceCount = (Settings.ParallelClone ? (IReferenceCount) new ReferenceCountInterlocked() : new ReferenceCount());
     }
 }
Beispiel #2
0
 protected internal Entity(Entity cloneFrom)
 {
     _fuzzyHash      = cloneFrom._fuzzyHash;
     _referenceCount = cloneFrom._referenceCount;
     if (Settings.CopyOnWrite)
     {
         _data = cloneFrom._data;
         _referenceCount.Increment();
     }
     else
     {
         _data = new EntityData(cloneFrom._data);
     }
 }
Beispiel #3
0
 protected internal Entity(Card card, Dictionary <GameTag, int> tags = null)
 {
     _data           = new EntityData(card, tags);
     _referenceCount = (Settings.ParallelClone ? (IReferenceCount) new ReferenceCountInterlocked() : new ReferenceCount());
 }