Пример #1
0
Файл: Page.cs Проект: kjk/qemacs
 void SplitPage(int page_idx, int offset)
 {
     var bufs = SplitBuf(page_table[page_idx].data, offset);
     page_table[page_idx] = new Page(bufs.Item1); ;
     page_table.Insert(page_idx + 1, new Page(bufs.Item2));
 }
Пример #2
0
Файл: Page.cs Проект: kjk/qemacs
 /*
 public int FindPageIdx(Page p)
 {
     for (int i = 0; i < page_table.Count; i++)
     {
         if (page_table[i] == p)
             return i;
     }
     return -1;
 }*/
 void CachePageAtOffset(int offset)
 {
     int page_idx = 0;
     int page_offset = 0;
     foreach (Page p in page_table)
     {
         if (offset < page_offset + p.size)
             page_offset += p.size;
         else
         {
             cur_page = p;
             cur_page_offset = page_offset;
             cur_page_idx = page_idx;
             return;
         }
         ++page_idx;
     }
     Debug.Assert(false);
 }
Пример #3
0
Файл: Page.cs Проект: kjk/qemacs
 // TODO: get rid of size and use buf.Length instead?
 // Note: @size is the total size of buf
 Page[] PagesFromData(byte[] buf, int offset, int size)
 {
     size = size - offset;
     Debug.Assert(size > 0);
     int n = PagesForSize(size);
     Page[] pages = new Page[n];
     int cur_page = 0;
     while (size > 0)
     {
         pages[cur_page].data = PageDataFromBuf(buf, ref size, ref offset);
     }
     return pages;
 }
Пример #4
0
Файл: Page.cs Проект: kjk/qemacs
 public void InvalidateCache()
 {
     cur_page = null;
 }