Files
HandyControl/Net35/HandyControl_Net35/Data/FrugalMap.cs
T
2019-01-21 00:43:10 +08:00

68 lines
1.8 KiB
C#

using System;
using System.Collections;
namespace HandyControl.Data
{
internal enum FrugalMapStoreState
{
Success,
ThreeObjectMap,
SixObjectMap,
Array,
SortedArray,
Hashtable
}
internal delegate void FrugalMapIterationCallback(ArrayList list, int key, object value);
abstract class FrugalMapBase
{
public abstract FrugalMapStoreState InsertEntry(int key, Object value);
public abstract void RemoveEntry(int key);
/// <summary>
/// Looks for an entry that contains the given key, null is returned if the
/// key is not found.
/// </summary>
public abstract Object Search(int key);
/// <summary>
/// A routine used by enumerators that need a sorted map
/// </summary>
public abstract void Sort();
/// <summary>
/// A routine used by enumerators to iterate through the map
/// </summary>
public abstract void GetKeyValuePair(int index, out int key, out Object value);
/// <summary>
/// A routine used to iterate through all the entries in the map
/// </summary>
public abstract void Iterate(ArrayList list, FrugalMapIterationCallback callback);
/// <summary>
/// Promotes the key/value pairs in the current collection to the next larger
/// and more complex storage model.
/// </summary>
public abstract void Promote(FrugalMapBase newMap);
/// <summary>
/// Size of this data store
/// </summary>
public abstract int Count
{
get;
}
protected const int INVALIDKEY = 0x7FFFFFFF;
internal struct Entry
{
public int Key;
public object Value;
}
}
}