Esempio n. 1
0
void KeyFile::init() {
  KeyFileHeader header;
  readHead(header, false);
  header.checkFileVersion(getName());
  SETCONST(m_keydef, header.m_keydef, KeyFileDefinition);
  ((KeyPageInfo&)m_pageInfo).init(m_keydef.getSize());
}
Esempio n. 2
0
// reads an existing edb header at a given recno and sets header values
EDB_Status EDB::open(uint32_t head_ptr)
{
  EDB_head_ptr = head_ptr;
  EDB_table_ptr = sizeof(EDB_Header) + EDB_head_ptr;
  readHead();
  return EDB_OK;
}
Esempio n. 3
0
void KeyFile::setRoot(KeyPageAddr addr, int delta) {
  KeyFileHeader header;
  readHead(header, false);
  header.m_root      = addr;
  header.m_keyCount += delta;
  writeHead(header);
}
Esempio n. 4
0
AsfFile::AsfFile(const char *fileName, int memoryLimitInBytes)
    : _memoryLimitInBytes(memoryLimitInBytes)
{
    char last = *std::string(fileName).rbegin();
    if (last == 'z')
    {
        _stream = (std::istream*) new igzstream(fileName,
            std::ios::in | std::ios::binary);
        _isPositioningDenied = true;
    }
    else if (last == 'f')
    {
        _stream = new std::ifstream(fileName,
            std::ios::in | std::ios::binary);
        _isPositioningDenied = false;
    }
    else
    {
        THROW_EXCEPTION("Unknown file format.");
    }

    if (!_stream->good())
    {
        THROW_EXCEPTION("Can't open ASF file.");
    }

    readHead();
    readBody();
}
Esempio n. 5
0
File: EDB.cpp Progetto: 4-20ma/EDB
// reads an existing edb header at a given recno and sets header values
EDB_Status EDB::open(unsigned long head_ptr)
{
  EDB_head_ptr = head_ptr;
  // Thanks to Steve Kelly for the next line... 
  EDB_table_ptr = sizeof(EDB_Header) + EDB_head_ptr; // this line was originally missing in the downloaded library
  readHead();
  return EDB_OK;
}
Esempio n. 6
0
void KeyFile::truncate() { // remove all data!!! be careful
  KeyFileHeader header;
  readHead(header, false);
  const KeyFileDefinition keydef = header.m_keydef;
  header.init(keydef);
  DbFile::truncate();
  writeHead(header);
}
Esempio n. 7
0
// reads an existing edb header at a given recno and sets header values
EDB_Status EDB::open(unsigned long head_ptr)
{
  EDB_head_ptr = head_ptr;
  EDB_table_ptr = sizeof(EDB_Header) + EDB_head_ptr;
  readHead();
  
  return EDB_OK;
}
Esempio n. 8
0
KeyFileInfo KeyFile::getInfo() {
  KeyFileHeader header;
  readHead(header,false);
  KeyPage page(header.m_keydef.getSize());

  KeyFileInfo result;
  result.m_header          = header;
  result.m_size            = getSize();
  result.m_pageInfo        = m_pageInfo;
  if(header.m_root == DB_NULLADDR) {
    result.m_rootPageAddress   = 0;
    result.m_rootPageItemCount = 0;
    result.m_treeHeight        = 0;
  } else {
    result.m_rootPageAddress = getPageOffset(header.m_root);
    KeyPage page(m_keydef.getSize());
    readPage(header.m_root,page);
    result.m_rootPageItemCount = page.getItemCount();
    result.m_treeHeight  = 1;
    for(KeyPageAddr addr = page.getChild(0); addr; addr = page.getChild(0)) {
      readPage(addr,page);
      result.m_treeHeight++;
    }
  }
  result.m_rootPageIndex = header.m_root;
  result.m_dataPageCount = (UINT)((result.m_size - sizeof(header)) / m_pageInfo.m_pageSize - header.m_freeListSize);

  UINT nonLeafPageCount = 0;
  UINT leafPageCount    = 0;
  CompactIntArray  &pageCountPerLevel = result.m_pageCountPerLevel;

  if(result.m_treeHeight == 0) { // file is empty
    pageCountPerLevel.add(0);
  } else {
    for(UINT l = 0; l < result.m_treeHeight; l++) {
      pageCountPerLevel.add(0);
    }
    pageCountPerLevel.first() = 1;
    KeyPageCounter pageCounter(pageCountPerLevel);
    pageScan(result.m_header.m_root, 0, pageCounter, max(0, result.m_treeHeight-3));
    if(result.m_treeHeight >= 3) {
      for(size_t i = 0; i < pageCountPerLevel.size()-1; i++) {
        nonLeafPageCount += pageCountPerLevel[i];
      }
      leafPageCount = pageCountPerLevel.last() = result.m_dataPageCount - nonLeafPageCount;
    }
  }

  const ULONG totalPageCount = result.m_dataPageCount + header.m_freeListSize;
  if(totalPageCount == 0) {
    result.m_utilizationRate = 100;
  } else {
    const INT64 maxKeys = (INT64)nonLeafPageCount * m_pageInfo.m_maxItemCount + (INT64)leafPageCount * m_pageInfo.m_maxKeyCount;
    result.m_utilizationRate = PERCENT(header.m_keyCount, maxKeys);
  }
  return result;
}
Esempio n. 9
0
void KeyFile::setFreeList(KeyPageAddr addr, int dsize) {
  KeyFileHeader header;
  readHead(header, true);
  header.m_freeList     =  addr;
  header.m_freeListSize += dsize;
  if(header.m_freeListSize < 0) {
    throwSqlError(SQL_FATAL_ERROR,_T("KeyFile::setFreeList:m_header.m_freeListSize<0. (=%d)"),header.m_freeListSize);
  } else if(header.m_freeListSize == 0 && header.m_freeList != DB_NULLADDR) {
    throwSqlError(SQL_FATAL_ERROR,_T("KeyFile::setFreeList:m_header.m_freeListSize=0 and m_freeList != NULLADDR."));
  } else if(header.m_freeListSize > 0 && header.m_freeList == DB_NULLADDR) {
    throwSqlError(SQL_FATAL_ERROR,_T("KeyFile::setFreeList:m_header.m_freeListSize>0 and m_freeList == NULLADDR."));
  }

  writeHead(header);
}
Esempio n. 10
0
void KeyFile::dump(FILE *f, int flags) {
  KeyFileHeader header;

  readHead(header, false);
  KeyPage page(m_pageInfo);
  dbAddrDump(header.m_root, 1,f,flags);
  if(flags & DUMP_HEADER) {
    _ftprintf(f,_T("Root:%s Last:%s Freelist:("), toString(header.m_root).cstr(), toString(header.m_last).cstr());
  }
  if(flags & DUMP_FREELIST) {
    for(KeyPageAddr list = header.m_freeList;list != DB_NULLADDR; list = page.getNextFree()) {
      _ftprintf(f,_T("%s "),toString(list).cstr());
      readPage(list, page);
    }
    _ftprintf(f,_T(")\n"));
  }
}
Esempio n. 11
0
int main()
{

  static struct LMF_ccs_encodingHeader *pEncoH = NULL;

  double x1, y1, z1, x2, y2, z2;

  FILE *pfCCS = NULL;
  system("ls *ccs *cch");
  if (LMFcchReader(""))
    exit(EXIT_FAILURE);
  pfCCS = open_CCS_file2(ccsFileName);	/* // LMF binary file   */
  fseek(pfCCS, 0L, 0);
  pEncoH = readHead(pfCCS);	/*  // read head of ccs */


  while (findXYZinLMFfile(pfCCS, &x1, &y1, &z1, &x2, &y2, &z2, pEncoH)) {
    printf("\n\nOne coinci event read : \n");
    printf("first : %f\t", x1);
    printf("%f\t", y1);
    printf("%f\t and second : ", z1);
    printf("%f\t", x2);
    printf("%f\t", y2);
    printf("%f\n", z2);
  }

  if (pfCCS) {
    fclose(pfCCS);
    printf("File CCS closed\n");
  }

  destroy_findXYZinLMFfile(pEncoH);
  LMFcchReaderDestructor();
  destroyReadHead();
  printf("\nmain over\n");
  return (EXIT_SUCCESS);


}
Esempio n. 12
0
void DetailExcelWidget::getSheetData(Worksheet* sheet)
{
    sheetName.push_back(sheet->sheetName());
    readHead(sheet);
    readType(sheet);
}
Esempio n. 13
0
KeyPageAddr KeyFile::getFreeList() {
  KeyFileHeader header;
  readHead(header, false);
  return header.m_freeList;
}
Esempio n. 14
0
void readIpc (unsigned char* bufferedData) {
    // fix the data length so if the interrupt adds data
    // during execution of this block, it will be read
    // until the next readIpc
    unsigned int tmpLen = getLength(protBuffer);


    unsigned int i=0;
    unsigned int availBytes = 0, sendMore = 0;
    unsigned char failureTrue = 0;

    //static unsigned long long timeStamp = 0;


    // Set the output size accordingly
    bufferedData[0] = (tmpLen > MAXLOGLEN)? MAXLOGLEN: tmpLen;

    // TODO: Remove debugging info from readIPC
    //if ((timeStamp % 1000)== 0){
    //	printToUart2("T: %6.0f\n\r\0",(float) timeStamp*0.01);
    //}
    //timeStamp++;

    // write the data
    for(i = 1; i <= bufferedData[0]; i += 1 )
    {
        bufferedData[i] = readFront(protBuffer);
    }


    if (getOverflow(protBuffer)>0) {
        // disable the SPI module
        SPI1STATbits.SPIEN  = 0;

        // Disable the interrupts
        IEC0bits.SPI1IE		= 0;
        IFS0bits.SPI1IF 	= 0;

        printToUart2("\n=== %s =====\n\r\n\r\n\r", "BEGIN DUMP ");
        //printToUart2("Ts: %f\n\r\0",(float) timeStamp*0.01);
        printToUart2("Ovrflw: %d\n\r", getOverflow(protBuffer));
        printToUart2("Head: %d\n\r", readHead(protBuffer));
        printToUart2("Tail: %d\n\r", readTail(protBuffer));
        printToUart2("Len: %d\n\r", getLength(protBuffer));
        printToUart2("Siz: %d\n\r", protBuffer->size);


        for(i = 0; i <BSIZE; i ++ )
        {
            printToUart2("%d ", protBuffer->buffer[i]);
        }

        printToUart2("\n=== %s =====\n\r\n\r\n\r", "END ");

        // Empty the buffer
        makeEmpty(protBuffer);


        // Enable the interrupts
        IFS0bits.SPI1IF 	= 0;
        IEC0bits.SPI1IE		= 1;

        // Enable the SPI module
        SPI1STATbits.SPIEN  = 1;

    }

}
Esempio n. 15
0
UINT KeyFile::getFreePageCount() {
  KeyFileHeader header;
  readHead(header,false);
  return header.m_freeListSize;
}
Esempio n. 16
0
UINT64 KeyFile::getKeyCount() {
  KeyFileHeader header;
  readHead(header, false);
  return header.m_keyCount;
}
Esempio n. 17
0
void KeyFile::setLast(KeyPageAddr addr) {
  KeyFileHeader header;
  readHead(header, true);
  header.m_last = addr;
  writeHead(header);
}
Esempio n. 18
0
KeyPageAddr KeyFile::getLast() {
  KeyFileHeader header;
  readHead(header, false);
  return header.m_last;
}
Esempio n. 19
0
void DB::open(int head_ptr)
{
  DB_head_ptr = head_ptr;
  DB_tbl_ptr  = head_ptr + DB_HEAD_SIZE;
  readHead();
}
Esempio n. 20
0
// reads an existing edb header at a given recno and sets header values
EDB_Status EDB::open(unsigned long head_ptr)
{
  EDB_head_ptr = head_ptr;
  readHead();
  return EDB_OK;
}
Esempio n. 21
0
// truncates the queue by resetting the internal pointers
void EDB::clear()
{
  readHead();
  create(EDB_head_ptr, EDB_head.table_size, EDB_head.rec_size);
}