|
rllib
1
|
#include <rlspreadsheet.h>

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) |
| rlSpreadsheetTable * | getNextTable () |
| rlSpreadsheetRow * | getFirstRow () |
| int | exists (int column, int row) |
| void | setDelimitor (char delimitor) |
Private Attributes | |
| char | delimitor |
| rlSpreadsheetRow * | firstRow |
| rlSpreadsheetTable * | nextTable |
A spreadsheet Table. The class works with CSV files.
Definition at line 69 of file rlspreadsheet.h.
| rlSpreadsheetTable::rlSpreadsheetTable | ( | char | delimitor = '\t' | ) |
column = 1...N, row = 1...N
Definition at line 254 of file rlspreadsheet.cpp.
| 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;
}
}
| 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;
}
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.
1.7.5.1