|
using System;
using System.Collections.Generic;
using System.Text;
namespace hOOt
{
#region [ internal classes ]
internal class KeyPointer
{
public KeyPointer(bytearr key, int recno, int duppage)
{
RecordNum = recno;
Key = key;
DuplicatesPage = duppage;
}
public KeyPointer(bytearr key, int recno)
{
RecordNum = recno;
Key = key;
DuplicatesPage = -1;
}
public bytearr Key;
public int RecordNum;
public int DuplicatesPage = -1;
//public override string ToString()
//{
// return "" + Key;
//}
public KeyPointer Copy()
{
return new KeyPointer(Key, RecordNum);
}
}
public struct bytearr
{
public bytearr(byte[] key)
{
val = key;
}
public byte[] val;
//public override string ToString()
//{
// return "" + val[0];
//}
public override int GetHashCode()
{
int result = 17;
foreach (byte b in val)
{
result = result * 31 + b;
}
return result;
}
}
#endregion
internal class Bucket
{
internal int BucketNumber = -1;
internal List<KeyPointer> Pointers = new List<KeyPointer>();
internal List<int> Duplicates = new List<int>();
internal int DiskPageNumber = -1;
internal int NextPageNumber = -1;
internal bool isDirty = false;
internal bool isBucket = true;
internal bool isOverflow = false;
public Bucket(byte type, int bucketnumber, List<KeyPointer> pointers, List<int> duplicates, int diskpage, int nextpage)
{
DiskPageNumber = diskpage;
BucketNumber = bucketnumber;
NextPageNumber = nextpage;
if ((type & 8) == 8)
isBucket = true;
if ((type & 16) == 16)
isOverflow = true;
Pointers = pointers;
Duplicates = duplicates;
}
public Bucket(int page)
{
DiskPageNumber = page;
}
public short Count
{
get { return (short)Pointers.Count; }
}
//public override string ToString()
//{
// return "count = " + Pointers.Count;
//}
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
Mehdi first started programming when he was 8 on BBC+128k machine in 6512 processor language, after various hardware and software changes he eventually came across .net and c# which he has been using since v1.0.
He is formally educated as a system analyst Industrial engineer, but his programming passion continues.
* Mehdi is the 5th person to get 6 out of 7 Platinum's on Code-Project (13th Jan'12)
* Mehdi is the 3rd person to get 7 out of 7 Platinum's on Code-Project (26th Aug'16)