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

#include <rlspreadsheet.h>

Collaboration diagram for rlSpreadsheetWorkbook:
Collaboration graph
[legend]

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.

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

{
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)
{
}
else
{
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;
while(table != NULL)
{
table = table->getNextTable();
}
}
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;
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;
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

char rlSpreadsheetWorkbook::delimitor
private

Definition at line 112 of file rlspreadsheet.h.

rlSpreadsheetTable* rlSpreadsheetWorkbook::firstTable
private

Definition at line 113 of file rlspreadsheet.h.


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