public class Mem
{
public System.Collections.SortedList JobList=new System.Collections.SortedList();
private int _Size=640;
//////////////////////////////////////////////////////////////
private void Init()
{
this.JobList=new System.Collections.SortedList(_Size);
}
//////////////////////////////////////////////////////////////
public Mem()
{
Init();
}
public void FirstInsert(string jname,int jsize)
{
bool NeedEnd=true;
Job j=new Job(jname,jsize);
if(JobList.Count==0)
{ j.Start=0;
if(jsize<=this._Size)
JobList.Add(j,null);
}
else if(JobList.Count==1)
{ j.Start=((Job)JobList.GetKey(0)).Size;
if((this._Size-((Job)JobList.GetKey(0)).Size)>=jsize)
JobList.Add(j,null);
}
else
{ for(int i=0;i<JobList.Count-1;i++)
{ if(((Job)JobList.GetKey(i+1)).Start-((Job)JobList.GetKey(i)).Start-((Job)JobList.GetKey(i)).Size>=jsize)
{ j.Start=((Job)JobList.GetKey(i)).Start+((Job)JobList.GetKey(i)).Size;
JobList.Add(j,null);
NeedEnd=false;
break;
}
}
if(NeedEnd==true)
{ j.Start=((Job)JobList.GetKey(JobList.Count-1)).Start+((Job)JobList.GetKey(JobList.Count-1)).Size;
if(this._Size-((Job)JobList.GetKey(JobList.Count-1)).Start-((Job)JobList.GetKey(JobList.Count-1)).Size>=jsize)
JobList.Add(j,null);
}
}
for(int i=0;i<JobList.Count;i++)
{ Console.Write(((Job)JobList.GetKey(i)).Name);//(((Job)(JobList.GetKey(i))).Name);
Console.Write(" ");
Console.Write(((Job)(JobList.GetKey(i))).Start.ToString());
Console.Write(" ");
Console.Write(((Job)(JobList.GetKey(i))).Size.ToString());
Console.Write("\n");
}
/*Job j2=new Job("j2",100);
j2.Start=140;
JobList.Add(j2,null);*/
}
}