rllib  1
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros
Public Member Functions | Private Attributes | List of all members
rlSpreadsheetTable Class Reference

#include <rlspreadsheet.h>

Collaboration diagram for rlSpreadsheetTable:
Collaboration graph
[legend]

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.

{
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.

{
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;
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.

{
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

char rlSpreadsheetTable::delimitor
private

Definition at line 87 of file rlspreadsheet.h.

rlSpreadsheetRow* rlSpreadsheetTable::firstRow
private

Definition at line 88 of file rlspreadsheet.h.

rlSpreadsheetTable* rlSpreadsheetTable::nextTable
private

Definition at line 89 of file rlspreadsheet.h.


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