#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) |
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.
00262 { 00263 rlSpreadsheetRow *item,*last; 00264 item = firstRow; 00265 while(item != NULL) 00266 { 00267 last = item; 00268 item = item->getNextRow(); 00269 if(item != last) delete last; 00270 } 00271 }
| void rlSpreadsheetTable::clear | ( | ) |
Definition at line 319 of file rlspreadsheet.cpp.
00320 { 00321 rlSpreadsheetRow *item; 00322 00323 item = firstRow; 00324 while(item != NULL) 00325 { 00326 item->clear(); 00327 item = item->getNextRow(); 00328 } 00329 }
| int rlSpreadsheetTable::exists | ( | int | column, | |
| int | row | |||
| ) |
Definition at line 406 of file rlspreadsheet.cpp.
00407 { 00408 rlSpreadsheetRow *item; 00409 int r; 00410 00411 r = 1; 00412 item = firstRow; 00413 while(item != NULL) 00414 { 00415 if(r == row) return item->exists(column); 00416 r++; 00417 item = item->getNextRow(); 00418 } 00419 return 0; 00420 }
| rlSpreadsheetRow * rlSpreadsheetTable::getFirstRow | ( | ) |
Definition at line 396 of file rlspreadsheet.cpp.
00397 { 00398 return firstRow; 00399 }
| rlSpreadsheetTable * rlSpreadsheetTable::getNextTable | ( | ) |
Definition at line 401 of file rlspreadsheet.cpp.
00402 { 00403 return nextTable; 00404 }
| int rlSpreadsheetTable::printf | ( | int | column, | |
| int | row, | |||
| const char * | format, | |||
| ... | ||||
| ) |
Definition at line 306 of file rlspreadsheet.cpp.
00307 { 00308 int ret; 00309 char buf[rl_PRINTF_LENGTH_SPREADSHEET]; // should be big enough 00310 00311 va_list ap; 00312 va_start(ap,format); 00313 ret = rlvsnprintf(buf, rl_PRINTF_LENGTH_SPREADSHEET - 1, format, ap); 00314 va_end(ap); 00315 setText(column,row,buf); 00316 return ret; 00317 }
| int rlSpreadsheetTable::read | ( | const char * | filename | ) |
Definition at line 331 of file rlspreadsheet.cpp.
00332 { 00333 FILE *fp; 00334 rlSpreadsheetRow *item,*last,*next; 00335 unsigned char *line; 00336 int r = 1; 00337 if(filename == NULL) return -1; 00338 00339 // delete old table 00340 item = firstRow; 00341 while(item != NULL) 00342 { 00343 last = item; 00344 item = item->getNextRow(); 00345 if(item != last) delete last; 00346 } 00347 00348 // read new table 00349 fp = fopen(filename,"r"); 00350 if(fp == NULL) return -1; 00351 line = new unsigned char[256*256+1]; 00352 while(fgets((char *) line,256*256,fp) != NULL) 00353 { 00354 if(r==1) 00355 { 00356 item = firstRow = new rlSpreadsheetRow; 00357 } 00358 else 00359 { 00360 next = new rlSpreadsheetRow; 00361 item->setNextRow(next); 00362 item = next; 00363 } 00364 item->readRow(line,delimitor); 00365 r++; 00366 } 00367 delete [] line; 00368 fclose(fp); 00369 return 0; 00370 }
| void rlSpreadsheetTable::setNextTable | ( | rlSpreadsheetTable * | next | ) |
Definition at line 391 of file rlspreadsheet.cpp.
00392 { 00393 nextTable = next; 00394 }
| void rlSpreadsheetTable::setText | ( | int | column, | |
| int | row, | |||
| const char * | text | |||
| ) |
Definition at line 288 of file rlspreadsheet.cpp.
00289 { 00290 int r = 1; 00291 rlSpreadsheetRow *item,*nextitem; 00292 00293 if(row < 1) return; 00294 if(firstRow == NULL) firstRow = new rlSpreadsheetRow; 00295 item = firstRow; 00296 while(1) 00297 { 00298 if(r == row) { item->setText(column,text); return; } 00299 nextitem = item->getNextRow(); 00300 if(nextitem == NULL) item->setNextRow(new rlSpreadsheetRow); 00301 item = item->getNextRow(); 00302 r++; 00303 } 00304 }
| const char * rlSpreadsheetTable::text | ( | int | column, | |
| int | row | |||
| ) |
Definition at line 273 of file rlspreadsheet.cpp.
00274 { 00275 int r = 1; 00276 rlSpreadsheetRow *item; 00277 00278 item = firstRow; 00279 while(item != NULL) 00280 { 00281 if(r == row) return item->text(column); 00282 item = item->getNextRow(); 00283 r++; 00284 } 00285 return null_string; 00286 }
| int rlSpreadsheetTable::write | ( | const char * | filename | ) |
Definition at line 372 of file rlspreadsheet.cpp.
00373 { 00374 rlSpreadsheetRow *item; 00375 FILE *fp; 00376 if(filename == NULL) return -1; 00377 fp = fopen(filename,"w"); 00378 if(fp == NULL) return -1; 00379 00380 item = firstRow; 00381 while(item != NULL) 00382 { 00383 item->writeRow((void *) fp); 00384 item = item->getNextRow(); 00385 } 00386 00387 fclose(fp); 00388 return 0; 00389 }
char rlSpreadsheetTable::delimitor [private] |
Definition at line 86 of file rlspreadsheet.h.
rlSpreadsheetRow* rlSpreadsheetTable::firstRow [private] |
Definition at line 87 of file rlspreadsheet.h.
rlSpreadsheetTable* rlSpreadsheetTable::nextTable [private] |
Definition at line 88 of file rlspreadsheet.h.
1.6.3