Fixed TryGet... Methods
parent
4caa582b82
commit
31064d8175
|
@ -66,11 +66,14 @@ namespace ln.types.btree
|
|||
}
|
||||
}
|
||||
}
|
||||
public Boolean TryGet(K key,ref V value)
|
||||
public Boolean TryGet(K key, out V value)
|
||||
{
|
||||
TreeNode node = Find(key);
|
||||
if (object.ReferenceEquals(node, null))
|
||||
{
|
||||
value = default(V);
|
||||
return false;
|
||||
}
|
||||
|
||||
value = node.Value;
|
||||
return true;
|
||||
|
|
|
@ -20,8 +20,7 @@ namespace ln.types.btree
|
|||
{
|
||||
get
|
||||
{
|
||||
IEnumerable<V> values = null;
|
||||
if (TryGet(key,ref values))
|
||||
if (TryGet(key,out IEnumerable<V> values))
|
||||
{
|
||||
return values;
|
||||
}
|
||||
|
@ -47,8 +46,7 @@ namespace ln.types.btree
|
|||
|
||||
public bool TryAdd(K key,V value)
|
||||
{
|
||||
List<V> values = null;
|
||||
if (!bTree.TryGet(key,ref values))
|
||||
if (!bTree.TryGet(key, out List<V> values))
|
||||
{
|
||||
values = new List<V>();
|
||||
bTree.Add(key, values);
|
||||
|
@ -56,13 +54,14 @@ namespace ln.types.btree
|
|||
values.Add(value);
|
||||
return true;
|
||||
}
|
||||
public bool TryGet(K key,ref IEnumerable<V> values)
|
||||
public bool TryGet(K key,out IEnumerable<V> values)
|
||||
{
|
||||
List<V> _values = null;
|
||||
if ((!bTree.TryGet(key, ref _values)) || (_values.Count == 0))
|
||||
if ((!bTree.TryGet(key, out List<V> v)) || (v.Count == 0))
|
||||
{
|
||||
values = v;
|
||||
return false;
|
||||
|
||||
values = _values;
|
||||
}
|
||||
values = v;
|
||||
return true;
|
||||
}
|
||||
public bool TryRemove(K key)
|
||||
|
@ -71,8 +70,7 @@ namespace ln.types.btree
|
|||
}
|
||||
public bool TryRemove(K key,V value)
|
||||
{
|
||||
List<V> values = null;
|
||||
if (bTree.TryGet(key, ref values))
|
||||
if (bTree.TryGet(key, out List<V> values))
|
||||
{
|
||||
bool success = values.Remove(value);
|
||||
if (values.Count == 0)
|
||||
|
@ -83,8 +81,7 @@ namespace ln.types.btree
|
|||
}
|
||||
public bool ContainsKey(K key)
|
||||
{
|
||||
List<V> _values = null;
|
||||
if (!bTree.TryGet(key, ref _values))
|
||||
if (!bTree.TryGet(key, out List<V> _values))
|
||||
return false;
|
||||
return _values.Count > 0;
|
||||
}
|
||||
|
@ -101,8 +98,7 @@ namespace ln.types.btree
|
|||
|
||||
public int Count(K key)
|
||||
{
|
||||
List<V> _values = null;
|
||||
if ((!bTree.TryGet(key, ref _values)) || (_values.Count == 0))
|
||||
if ((!bTree.TryGet(key, out List<V> _values)) || (_values.Count == 0))
|
||||
return 0;
|
||||
return _values.Count;
|
||||
}
|
||||
|
|
|
@ -50,7 +50,7 @@ namespace ln.types.btree
|
|||
public void Remove(V v) => tree.Remove(KeyMapping(v));
|
||||
public bool TryRemove(V v) => tree.TryRemove(KeyMapping(v));
|
||||
|
||||
public bool TryGet(K key, ref V v) => tree.TryGet(key, ref v);
|
||||
public bool TryGet(K key, out V v) => tree.TryGet(key, out v);
|
||||
public void RemoveKey(K key) => tree.Remove(key);
|
||||
|
||||
public bool Contains(V v) => tree.ContainsKey(KeyMapping(v));
|
||||
|
|
|
@ -45,8 +45,7 @@ namespace ln.types.cache
|
|||
|
||||
public bool TryGet(K key,out V value)
|
||||
{
|
||||
value = default(V);
|
||||
return values.TryGet(key, ref value);
|
||||
return values.TryGet(key, out value);
|
||||
}
|
||||
|
||||
public void Forget()
|
||||
|
@ -60,8 +59,7 @@ namespace ln.types.cache
|
|||
{
|
||||
lock (this)
|
||||
{
|
||||
LinkedListItem<K> item = null;
|
||||
if (itemTree.TryGet(key,ref item))
|
||||
if (itemTree.TryGet(key,out LinkedListItem<K> item))
|
||||
Forget(item);
|
||||
}
|
||||
}
|
||||
|
@ -80,8 +78,7 @@ namespace ln.types.cache
|
|||
{
|
||||
lock (this)
|
||||
{
|
||||
LinkedListItem<K> item = null;
|
||||
if (!itemTree.TryGet(key, ref item))
|
||||
if (!itemTree.TryGet(key, out LinkedListItem<K> item))
|
||||
{
|
||||
item = new LinkedListItem<K>(key);
|
||||
values.Add(key,value);
|
||||
|
|
|
@ -22,19 +22,19 @@ namespace ln.types.odb.ng.mappings
|
|||
Func<Mapper, Document, object> createObjectHook;
|
||||
Func<FieldInfo, bool> filterFieldsHook;
|
||||
|
||||
public ClassMapping(Type type)
|
||||
{
|
||||
Logging.Log(LogLevel.DEBUG, "Constructing ClassMapping for {0}",type);
|
||||
private ClassMapping() { }
|
||||
|
||||
MappedType = type;
|
||||
AddFields(type);
|
||||
}
|
||||
public ClassMapping(Type type) : this(type, null, null) { }
|
||||
|
||||
public ClassMapping(Type type, Func<Mapper, Document, object> createObjectHook, Func<FieldInfo, bool> filterFieldsHook)
|
||||
:this(type)
|
||||
{
|
||||
Logging.Log(LogLevel.DEBUG, "Constructing ClassMapping for {0}", type);
|
||||
MappedType = type;
|
||||
|
||||
this.createObjectHook = createObjectHook;
|
||||
this.filterFieldsHook = filterFieldsHook;
|
||||
|
||||
AddFields(type);
|
||||
}
|
||||
|
||||
private void AddFields(Type type)
|
||||
|
@ -42,7 +42,7 @@ namespace ln.types.odb.ng.mappings
|
|||
foreach (FieldInfo fieldinfo in type.GetFields(BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public))
|
||||
{
|
||||
if ((filterFieldsHook == null) || filterFieldsHook(fieldinfo))
|
||||
mappedFields.Add(fieldinfo);
|
||||
mappedFields.Add(fieldinfo);
|
||||
}
|
||||
|
||||
if ((type != null) && !type.IsValueType && (!typeof(object).Equals(type.BaseType)))
|
||||
|
@ -63,7 +63,7 @@ namespace ln.types.odb.ng.mappings
|
|||
{
|
||||
if (IsReferenceType)
|
||||
{
|
||||
if (mapper.IdentityCache.TryGetValue(document.ID, out object o, () => Activator.CreateInstance(MappedType, true)))
|
||||
if (mapper.IdentityCache.TryGetValue(document.ID, out object o, () => (createObjectHook != null) ? createObjectHook(mapper, document) : Activator.CreateInstance(MappedType, true) ))
|
||||
return o;
|
||||
}
|
||||
|
||||
|
|
|
@ -73,6 +73,9 @@ namespace ln.types.odb.ng.storage.fs
|
|||
|
||||
storages.Add(storageName, storage);
|
||||
}
|
||||
if (!storages[storageName].IsOpen)
|
||||
storages[storageName].Open();
|
||||
|
||||
return storages[storageName];
|
||||
}
|
||||
}
|
||||
|
|
|
@ -88,8 +88,7 @@ namespace ln.types.odb.ng.storage
|
|||
}
|
||||
else
|
||||
{
|
||||
SegmentedFile.Segment existing = null;
|
||||
if (usedSegments.TryGet(segment.ID, ref existing))
|
||||
if (usedSegments.TryGet(segment.ID, out SegmentedFile.Segment existing))
|
||||
{
|
||||
if (existing.TimeStamp < segment.TimeStamp)
|
||||
{
|
||||
|
@ -197,9 +196,7 @@ namespace ln.types.odb.ng.storage
|
|||
{
|
||||
lock (this)
|
||||
{
|
||||
SegmentedFile.Segment segment = null;
|
||||
|
||||
if (!usedSegments.TryGet(documentID,ref segment))
|
||||
if (!usedSegments.TryGet(documentID,out SegmentedFile.Segment segment))
|
||||
throw new KeyNotFoundException();
|
||||
|
||||
return LoadDocument(segment);
|
||||
|
@ -249,8 +246,7 @@ namespace ln.types.odb.ng.storage
|
|||
|
||||
indexRoot.Replace(document.ID, document);
|
||||
|
||||
SegmentedFile.Segment previousSegment = null;
|
||||
if (usedSegments.TryGet(document.ID,ref previousSegment))
|
||||
if (usedSegments.TryGet(document.ID,out SegmentedFile.Segment previousSegment))
|
||||
{
|
||||
usedSegments.RemoveKey(document.ID);
|
||||
|
||||
|
@ -271,8 +267,7 @@ namespace ln.types.odb.ng.storage
|
|||
{
|
||||
lock (this)
|
||||
{
|
||||
SegmentedFile.Segment segment = null;
|
||||
if (usedSegments.TryGet(documentID, ref segment))
|
||||
if (usedSegments.TryGet(documentID, out SegmentedFile.Segment segment))
|
||||
{
|
||||
usedSegments.RemoveKey(documentID);
|
||||
|
||||
|
|
Loading…
Reference in New Issue