int PageDirectory::nextRecordPageID(FileHandle &fh, int pageid){ int pgentry = -1; if (pageid == 0) while (1) { if (get_pgnum() != 0) return get_pgid(0); if (get_next() == 0) return -1; moveToNext(fh); } if((pgentry = locateRecordPage(fh, pageid)) == -1) return -1; if (pgentry < get_pgnum() - 1) return get_pgid(pgentry + 1); while (get_next() != 0) { moveToNext(fh); if (get_pgnum() != 0) return get_pgid(0); } return -1; }
int PageDirectory::firstPageWithFreelen(FileHandle& fh, int len){ while(1){ int num = get_pgnum(); for (int i = 0; i < num; i++) if (get_pgfreelen(i) > len) return get_pgid(i); if(get_next() == 0) return -1; moveToNext(fh); } return -1; }
int PageDirectory::locateRecordPage(FileHandle &fh, int pageid){ int pgentry = -1; while (1) { for (int i = 0; i < get_pgnum(); i++) if (get_pgid(i) == pageid) { pgentry = i; break; } if (pgentry != -1) break; if (get_next() == 0) return -1; moveToNext(fh); } return pgentry; }
buf[j++] = hexlist[aptr[i] & 0x0f]; else buf[j++] = CLIF_NOT_SUPPLIED; aptr = get_pgpct(); for (i=0; i<MAX_BANDWIDTH_GROUPS; i++) { if (aptr[i] >= 0) { buf[j++] = hexlist[(aptr[i] & 0xf0)>>4]; buf[j++] = hexlist[aptr[i] & 0x0f]; } else { buf[j++] = CLIF_NOT_SUPPLIED; buf[j++] = CLIF_NOT_SUPPLIED; } } aptr = get_pgid(); for (i=0; i<MAX_USER_PRIORITIES; i++) if (aptr[i] >= 0) buf[j++] = hexlist[aptr[i] & 0x0f]; else buf[j++] = CLIF_NOT_SUPPLIED; aptr = get_uppct(); for (i=0; i<MAX_USER_PRIORITIES; i++) { if (aptr[i] >= 0) { buf[j++] = hexlist[(aptr[i] & 0xf0)>>4]; buf[j++] = hexlist[aptr[i] & 0x0f]; } else { buf[j++] = CLIF_NOT_SUPPLIED; buf[j++] = CLIF_NOT_SUPPLIED; }