rllib  1
Public Member Functions | Private Attributes
rlSpreadsheetWorkbook Class Reference

#include <rlspreadsheet.h>

Collaboration diagram for rlSpreadsheetWorkbook:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 rlSpreadsheetWorkbook (char delimitor='\t')
 column = 1...N, row = 1...N, page = 1...N
virtual ~rlSpreadsheetWorkbook ()
const char * text (int column, int row, int page)
void setText (int column, int row, int page, const char *text)
int printf (int column, int row, int page, const char *format,...)
void clear ()
int read (const char *filename)
int write (const char *filename)
int exists (int column, int row, int page)
rlSpreadsheetTablegetFirstTable ()
void setDelimitor (char delimitor)

Private Attributes

char delimitor
rlSpreadsheetTablefirstTable

Detailed Description

A series of spreadsheet tables.
The class works with CSV files.

Definition at line 96 of file rlspreadsheet.h.


Constructor & Destructor Documentation

rlSpreadsheetWorkbook::rlSpreadsheetWorkbook ( char  delimitor = '\t')

column = 1...N, row = 1...N, page = 1...N

Definition at line 428 of file rlspreadsheet.cpp.

{
  firstTable = NULL;
  delimitor = del;
}
rlSpreadsheetWorkbook::~rlSpreadsheetWorkbook ( ) [virtual]

Definition at line 434 of file rlspreadsheet.cpp.

{
  rlSpreadsheetTable *item,*last;
  item = firstTable;
  while(item != NULL)
  {
    last = item;
    item = item->getNextTable();
    if(item != last) delete last;
  }
}

Member Function Documentation

void rlSpreadsheetWorkbook::clear ( )

Definition at line 492 of file rlspreadsheet.cpp.

{
  rlSpreadsheetTable *item;

  item = firstTable;
  while(item != NULL)
  {
    item->clear();
    item = item->getNextTable();
  }
}
int rlSpreadsheetWorkbook::exists ( int  column,
int  row,
int  page 
)

Definition at line 575 of file rlspreadsheet.cpp.

{
  rlSpreadsheetTable *item;
  int p;

  p = 1;
  item = firstTable;
  while(item != NULL)
  {
    if(p == page) return item->exists(column,row);
    p++;
    item = item->getNextTable();
  }
  return 0;
}
rlSpreadsheetTable * rlSpreadsheetWorkbook::getFirstTable ( )

Definition at line 591 of file rlspreadsheet.cpp.

{
  return firstTable;
}
int rlSpreadsheetWorkbook::printf ( int  column,
int  row,
int  page,
const char *  format,
  ... 
)

Definition at line 479 of file rlspreadsheet.cpp.

{
  int ret;
  char buf[rl_PRINTF_LENGTH_SPREADSHEET]; // should be big enough

  va_list ap;
  va_start(ap,format);
  ret = rlvsnprintf(buf, rl_PRINTF_LENGTH_SPREADSHEET - 1, format, ap);
  va_end(ap);
  setText(column,row,page,buf);
  return ret;
}
int rlSpreadsheetWorkbook::read ( const char *  filename)

Definition at line 504 of file rlspreadsheet.cpp.

{
  FILE *fp;
  rlSpreadsheetTable *item,*last,*next;
  int p = 1;
  char buf[16],*fname;
  if(filename == NULL) return -1;

  // delete old workbook
  item = firstTable;
  while(item != NULL)
  {
    last = item;
    item = item->getNextTable();
    if(item != last) delete last;
  }

  // read new workbook
  fname = new char[strlen(filename)+16];
  while(1)
  {
    strcpy(fname,filename);
    sprintf(buf,"%d.txt",p);
    strcat(fname,buf);
    // test if file exists
    fp = fopen(fname,"r");
    if(fp == NULL) break;
    fclose(fp);
    if(p==1)
    {
      item = firstTable = new rlSpreadsheetTable(delimitor);
    }
    else
    {
      next = new rlSpreadsheetTable(delimitor);
      item->setNextTable(next);
      item = next;
    }
    if(item->read(fname) < 0) break;
    p++;
  }

  delete [] fname;
  return 0;
}
void rlSpreadsheetWorkbook::setDelimitor ( char  delimitor)

Definition at line 596 of file rlspreadsheet.cpp.

{
  delimitor = _delimitor;
}
void rlSpreadsheetWorkbook::setText ( int  column,
int  row,
int  page,
const char *  text 
)

Definition at line 461 of file rlspreadsheet.cpp.

{
  int p = 1;
  rlSpreadsheetTable *item,*nextitem;

  if(page < 1) return;
  if(firstTable == NULL) firstTable = new rlSpreadsheetTable;
  item = firstTable;
  while(1)
  {
    if(p == page) { item->setText(column, row, text); return; }
    nextitem = item->getNextTable();
    if(nextitem == NULL) item->setNextTable(new rlSpreadsheetTable);
    item = item->getNextTable();
    p++;
  }
}
const char * rlSpreadsheetWorkbook::text ( int  column,
int  row,
int  page 
)

Definition at line 446 of file rlspreadsheet.cpp.

{
  int p = 1;
  rlSpreadsheetTable *item;

  item = firstTable;
  while(item != NULL)
  {
    if(p == page) return item->text(column, row);
    item = item->getNextTable();
    p++;
  }
  return null_string;
}
int rlSpreadsheetWorkbook::write ( const char *  filename)

Definition at line 550 of file rlspreadsheet.cpp.

{
  rlSpreadsheetTable *item = NULL;
  int p = 1;
  char buf[16],*fname;
  if(filename == NULL) return -1;

  // write workbook
  fname = new char[strlen(filename)+16];
  while(1)
  {
    strcpy(fname,filename);
    sprintf(buf,"%d.txt",p);
    strcat(fname,buf);
    if(p==1) item = firstTable;
    else     item = item->getNextTable();
    if(item == NULL)     break;
    if(item->write(fname) < 0) break;
    p++;
  }

  delete [] fname;
  return 0;
}

Member Data Documentation

Definition at line 112 of file rlspreadsheet.h.

Definition at line 113 of file rlspreadsheet.h.


The documentation for this class was generated from the following files: