rllib  1
Public Member Functions | Private Attributes
rlSpreadsheetTable Class Reference

#include <rlspreadsheet.h>

Collaboration diagram for rlSpreadsheetTable:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 rlSpreadsheetTable (char delimitor='\t')
 column = 1...N, row = 1...N
virtual ~rlSpreadsheetTable ()
const char * text (int column, int row)
void setText (int column, int row, const char *text)
int printf (int column, int row, const char *format,...)
void clear ()
int read (const char *filename)
int write (const char *filename)
void setNextTable (rlSpreadsheetTable *next)
rlSpreadsheetTablegetNextTable ()
rlSpreadsheetRowgetFirstRow ()
int exists (int column, int row)
void setDelimitor (char delimitor)

Private Attributes

char delimitor
rlSpreadsheetRowfirstRow
rlSpreadsheetTablenextTable

Detailed Description

A spreadsheet Table.
The class works with CSV files.

Definition at line 69 of file rlspreadsheet.h.


Constructor & Destructor Documentation

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

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

Definition at line 254 of file rlspreadsheet.cpp.

{
  firstRow  = NULL;
  nextTable = NULL;
  delimitor = del;
}
rlSpreadsheetTable::~rlSpreadsheetTable ( ) [virtual]

Definition at line 261 of file rlspreadsheet.cpp.

{
  rlSpreadsheetRow *item,*last;
  item = firstRow;
  while(item != NULL)
  {
    last = item;
    item = item->getNextRow();
    if(item != last) delete last;
  }
}

Member Function Documentation

void rlSpreadsheetTable::clear ( )

Definition at line 319 of file rlspreadsheet.cpp.

{
  rlSpreadsheetRow *item;

  item = firstRow;
  while(item != NULL)
  {
    item->clear();
    item = item->getNextRow();
  }
}
int rlSpreadsheetTable::exists ( int  column,
int  row 
)

Definition at line 406 of file rlspreadsheet.cpp.

{
  rlSpreadsheetRow *item;
  int r;

  r = 1;
  item = firstRow;
  while(item != NULL)
  {
    if(r == row) return item->exists(column);
    r++;
    item = item->getNextRow();
  }
  return 0;
}
rlSpreadsheetRow * rlSpreadsheetTable::getFirstRow ( )

Definition at line 396 of file rlspreadsheet.cpp.

{
  return firstRow;
}
rlSpreadsheetTable * rlSpreadsheetTable::getNextTable ( )

Definition at line 401 of file rlspreadsheet.cpp.

{
  return nextTable;
}
int rlSpreadsheetTable::printf ( int  column,
int  row,
const char *  format,
  ... 
)

Definition at line 306 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,buf);
  return ret;
}
int rlSpreadsheetTable::read ( const char *  filename)

Definition at line 331 of file rlspreadsheet.cpp.

{
  FILE *fp;
  rlSpreadsheetRow *item,*last,*next;
  unsigned char *line;
  int r = 1;
  if(filename == NULL) return -1;

  // delete old table
  item = firstRow;
  while(item != NULL)
  {
    last = item;
    item = item->getNextRow();
    if(item != last) delete last;
  }

  // read new table
  fp = fopen(filename,"r");
  if(fp == NULL) return -1;
  line = new unsigned char[256*256+1];
  while(fgets((char *) line,256*256,fp) != NULL)
  {
    if(r==1)
    {
      item = firstRow = new rlSpreadsheetRow;
    }
    else
    {
      next = new rlSpreadsheetRow;
      item->setNextRow(next);
      item = next;
    }
    item->readRow(line,delimitor);
    r++;
  }
  delete [] line;
  fclose(fp);
  return r - 1; // number of lines that have been read
}
void rlSpreadsheetTable::setDelimitor ( char  delimitor)

Definition at line 422 of file rlspreadsheet.cpp.

{
  delimitor = _delimitor;
}
void rlSpreadsheetTable::setNextTable ( rlSpreadsheetTable next)

Definition at line 391 of file rlspreadsheet.cpp.

{
  nextTable = next;
}
void rlSpreadsheetTable::setText ( int  column,
int  row,
const char *  text 
)

Definition at line 288 of file rlspreadsheet.cpp.

{
  int r = 1;
  rlSpreadsheetRow *item,*nextitem;

  if(row < 1) return;
  if(firstRow == NULL) firstRow = new rlSpreadsheetRow;
  item = firstRow;
  while(1)
  {
    if(r == row) { item->setText(column,text); return; }
    nextitem = item->getNextRow();
    if(nextitem == NULL) item->setNextRow(new rlSpreadsheetRow);
    item = item->getNextRow();
    r++;
  }
}
const char * rlSpreadsheetTable::text ( int  column,
int  row 
)

Definition at line 273 of file rlspreadsheet.cpp.

{
  int r = 1;
  rlSpreadsheetRow *item;

  item = firstRow;
  while(item != NULL)
  {
    if(r == row) return item->text(column);
    item = item->getNextRow();
    r++;
  }
  return null_string;
}
int rlSpreadsheetTable::write ( const char *  filename)

Definition at line 372 of file rlspreadsheet.cpp.

{
  rlSpreadsheetRow *item;
  FILE *fp;
  if(filename == NULL) return -1;
  fp = fopen(filename,"w");
  if(fp == NULL) return -1;

  item = firstRow;
  while(item != NULL)
  {
    item->writeRow((void *) fp, delimitor);
    item = item->getNextRow();
  }

  fclose(fp);
  return 0;
}

Member Data Documentation

Definition at line 87 of file rlspreadsheet.h.

Definition at line 88 of file rlspreadsheet.h.

Definition at line 89 of file rlspreadsheet.h.


The documentation for this class was generated from the following files:
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Defines