rlFileLoad Class Reference

#include <rlfileload.h>

Collaboration diagram for rlFileLoad:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 rlFileLoad ()
virtual ~rlFileLoad ()
int load (const char *filename)
void unload ()
const char * firstLine ()
const char * nextLine ()
void setDebug (int state)

Private Attributes

int loaded
int debug
rlFileLines file_lines
rlFileLinescurrent_line

Detailed Description

This class loads a text file to memory.
Then you can iterate to it's lines.

Definition at line 31 of file rlfileload.h.


Constructor & Destructor Documentation

rlFileLoad::rlFileLoad (  ) 

Definition at line 20 of file rlfileload.cpp.

00021 {
00022   loaded = debug = 0;
00023   file_lines.line = NULL;
00024   file_lines.next = NULL;
00025   current_line = NULL;
00026 }

rlFileLoad::~rlFileLoad (  )  [virtual]

Definition at line 28 of file rlfileload.cpp.

00029 {
00030   unload();
00031 }


Member Function Documentation

const char * rlFileLoad::firstLine (  ) 

Definition at line 81 of file rlfileload.cpp.

00082 {
00083   if(loaded == 0) return NULL;
00084   current_line = &file_lines;
00085   current_line = current_line->next;
00086   if(current_line == NULL) return NULL;
00087   if(debug) printf("rlFileLoad::firstLine=%s",current_line->line);
00088   return current_line->line;
00089 }

int rlFileLoad::load ( const char *  filename  ) 

Definition at line 33 of file rlfileload.cpp.

00034 {
00035   FILE *fin;
00036   rlFileLines *fl;
00037   char line[rl_PRINTF_LENGTH], *cptr;
00038 
00039   unload();
00040   fin = fopen(filename,"r");
00041   if(fin == NULL) return -1;
00042 
00043   fl = &file_lines;
00044   while(fgets(line,sizeof(line)-1,fin) != NULL)
00045   {
00046     cptr = strchr(line,'\n');
00047     if(cptr != NULL) *cptr = '\0';
00048     cptr = strchr(line,0x0D);
00049     if(cptr != NULL) *cptr = '\0';
00050     if(debug) printf("rlFileLoad::load line=%s\n",line);
00051     fl->next = new rlFileLines;
00052     fl = fl->next;
00053     fl->line = new char [strlen(line)+1];
00054     strcpy(fl->line,line);
00055     fl->next = NULL;
00056   }
00057 
00058   fclose(fin);
00059   loaded = 1;
00060   return 1;
00061 }

const char * rlFileLoad::nextLine (  ) 

Definition at line 91 of file rlfileload.cpp.

00092 {
00093   if(loaded == 0) return NULL;
00094   if(current_line != NULL) current_line = current_line->next;
00095   if(current_line == NULL) return NULL;
00096   if(debug) printf("rlFileLoad::nextLine=%s",current_line->line);
00097   return current_line->line; 
00098 }

void rlFileLoad::setDebug ( int  state  ) 

Definition at line 100 of file rlfileload.cpp.

00101 {
00102   if(state == 0) debug = 0;
00103   else           debug = 1;
00104 }

void rlFileLoad::unload (  ) 

Definition at line 63 of file rlfileload.cpp.

00064 {
00065   rlFileLines *fl,*flold;
00066 
00067   if(loaded == 0) return;
00068   fl = &file_lines;
00069   fl = fl->next;
00070   while(fl != NULL)
00071   {
00072     if(debug) printf("rlFileLoad::unload line=%s",fl->line);
00073     delete [] fl->line;
00074     flold = fl;
00075     fl = fl->next;
00076     delete flold;
00077   }
00078   loaded = 0;
00079 }


Member Data Documentation

Definition at line 45 of file rlfileload.h.

int rlFileLoad::debug [private]

Definition at line 43 of file rlfileload.h.

Definition at line 44 of file rlfileload.h.

int rlFileLoad::loaded [private]

Definition at line 42 of file rlfileload.h.


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