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 ()

Private Attributes

char delimitor
rlSpreadsheetTablefirstTable

Detailed Description

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

Definition at line 95 of file rlspreadsheet.h.


Constructor & Destructor Documentation

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

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

Definition at line 423 of file rlspreadsheet.cpp.

00424 {
00425   firstTable = NULL;
00426   delimitor = del;
00427 }

rlSpreadsheetWorkbook::~rlSpreadsheetWorkbook (  )  [virtual]

Definition at line 429 of file rlspreadsheet.cpp.

00430 {
00431   rlSpreadsheetTable *item,*last;
00432   item = firstTable;
00433   while(item != NULL)
00434   {
00435     last = item;
00436     item = item->getNextTable();
00437     if(item != last) delete last;
00438   }
00439 }


Member Function Documentation

void rlSpreadsheetWorkbook::clear (  ) 

Definition at line 487 of file rlspreadsheet.cpp.

00488 {
00489   rlSpreadsheetTable *item;
00490 
00491   item = firstTable;
00492   while(item != NULL)
00493   {
00494     item->clear();
00495     item = item->getNextTable();
00496   }
00497 }

int rlSpreadsheetWorkbook::exists ( int  column,
int  row,
int  page 
)

Definition at line 570 of file rlspreadsheet.cpp.

00571 {
00572   rlSpreadsheetTable *item;
00573   int p;
00574 
00575   p = 1;
00576   item = firstTable;
00577   while(item != NULL)
00578   {
00579     if(p == page) return item->exists(column,row);
00580     p++;
00581     item = item->getNextTable();
00582   }
00583   return 0;
00584 }

rlSpreadsheetTable * rlSpreadsheetWorkbook::getFirstTable (  ) 

Definition at line 586 of file rlspreadsheet.cpp.

00587 {
00588   return firstTable;
00589 }

int rlSpreadsheetWorkbook::printf ( int  column,
int  row,
int  page,
const char *  format,
  ... 
)

Definition at line 474 of file rlspreadsheet.cpp.

00475 {
00476   int ret;
00477   char buf[rl_PRINTF_LENGTH_SPREADSHEET]; // should be big enough
00478 
00479   va_list ap;
00480   va_start(ap,format);
00481   ret = rlvsnprintf(buf, rl_PRINTF_LENGTH_SPREADSHEET - 1, format, ap);
00482   va_end(ap);
00483   setText(column,row,page,buf);
00484   return ret;
00485 }

int rlSpreadsheetWorkbook::read ( const char *  filename  ) 

Definition at line 499 of file rlspreadsheet.cpp.

00500 {
00501   FILE *fp;
00502   rlSpreadsheetTable *item,*last,*next;
00503   int p = 1;
00504   char buf[16],*fname;
00505   if(filename == NULL) return -1;
00506 
00507   // delete old workbook
00508   item = firstTable;
00509   while(item != NULL)
00510   {
00511     last = item;
00512     item = item->getNextTable();
00513     if(item != last) delete last;
00514   }
00515 
00516   // read new workbook
00517   fname = new char[strlen(filename)+16];
00518   while(1)
00519   {
00520     strcpy(fname,filename);
00521     sprintf(buf,"%d.txt",p);
00522     strcat(fname,buf);
00523     // test if file exists
00524     fp = fopen(fname,"r");
00525     if(fp == NULL) break;
00526     fclose(fp);
00527     if(p==1)
00528     {
00529       item = firstTable = new rlSpreadsheetTable(delimitor);
00530     }
00531     else
00532     {
00533       next = new rlSpreadsheetTable(delimitor);
00534       item->setNextTable(next);
00535       item = next;
00536     }
00537     if(item->read(fname) < 0) break;
00538     p++;
00539   }
00540 
00541   delete [] fname;
00542   return 0;
00543 }

void rlSpreadsheetWorkbook::setText ( int  column,
int  row,
int  page,
const char *  text 
)

Definition at line 456 of file rlspreadsheet.cpp.

00457 {
00458   int p = 1;
00459   rlSpreadsheetTable *item,*nextitem;
00460 
00461   if(page < 1) return;
00462   if(firstTable == NULL) firstTable = new rlSpreadsheetTable;
00463   item = firstTable;
00464   while(1)
00465   {
00466     if(p == page) { item->setText(column, row, text); return; }
00467     nextitem = item->getNextTable();
00468     if(nextitem == NULL) item->setNextTable(new rlSpreadsheetTable);
00469     item = item->getNextTable();
00470     p++;
00471   }
00472 }

const char * rlSpreadsheetWorkbook::text ( int  column,
int  row,
int  page 
)

Definition at line 441 of file rlspreadsheet.cpp.

00442 {
00443   int p = 1;
00444   rlSpreadsheetTable *item;
00445 
00446   item = firstTable;
00447   while(item != NULL)
00448   {
00449     if(p == page) return item->text(column, row);
00450     item = item->getNextTable();
00451     p++;
00452   }
00453   return null_string;
00454 }

int rlSpreadsheetWorkbook::write ( const char *  filename  ) 

Definition at line 545 of file rlspreadsheet.cpp.

00546 {
00547   rlSpreadsheetTable *item = NULL;
00548   int p = 1;
00549   char buf[16],*fname;
00550   if(filename == NULL) return -1;
00551 
00552   // write workbook
00553   fname = new char[strlen(filename)+16];
00554   while(1)
00555   {
00556     strcpy(fname,filename);
00557     sprintf(buf,"%d.txt",p);
00558     strcat(fname,buf);
00559     if(p==1) item = firstTable;
00560     else     item = item->getNextTable();
00561     if(item == NULL)     break;
00562     if(item->write(fname) < 0) break;
00563     p++;
00564   }
00565 
00566   delete [] fname;
00567   return 0;
00568 }


Member Data Documentation

Definition at line 110 of file rlspreadsheet.h.

Definition at line 111 of file rlspreadsheet.h.


The documentation for this class was generated from the following files:
Generated on Mon Aug 30 20:16:17 2010 for rllib by  doxygen 1.6.3