Google
Web alhem.net
Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Namespace Members | Class Members | File Members

SimpleParser Class Reference

#include <SimpleParser.h>

Inheritance diagram for SimpleParser:

Inheritance graph
[legend]
Collaboration diagram for SimpleParser:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 SimpleParser (const std::string &path, BlackAdder *)
 ~SimpleParser ()
void Parser (FILE *fil, int &line, const std::string &name)

Private Member Functions

void error (const std::string &str)
int ReadLine (FILE *fil, int &line)
int GetToken (FILE *fil, int &line, std::string &val)
void include_file (const std::string &)
void preprocessor (std::string &,int &line)
void find_types (CLS *, string_v &, int=0)

Private Attributes

char the_str [5000]
int the_ptr
int m_state
std::vector< std::string > m_vec
std::string m_currentfile
std::string m_path
int m_levelm
int m_line
std::string m_namespace
std::map< int, std::string > m_namesave
int m_current
std::vector< std::string > m_added
BlackAdderm_pAdder
int m_plevelm
std::string m_stfile
int m_stline
bool m_extern

Detailed Description

File ......... SimpleParser.h Published .... 2004-05-17 Author ....... grymse@alhem.net

Definition at line 30 of file SimpleParser.h.


Constructor & Destructor Documentation

SimpleParser::SimpleParser const std::string &  path,
BlackAdder
 

Definition at line 39 of file SimpleParser.cpp.

00040 :BaseParser()
00041 ,the_ptr(0)
00042 ,m_state(0)
00043 ,m_currentfile("")
00044 ,m_path(path)
00045 ,m_line(0)
00046 ,m_namespace("")
00047 ,m_current(0)
00048 ,m_pAdder(pAdder)
00049 ,m_plevelm(0)
00050 ,m_stfile("")
00051 ,m_stline(0)
00052 ,m_extern(false)
00053 {
00054         *the_str = 0;
00055 }

SimpleParser::~SimpleParser  ) 
 

Definition at line 58 of file SimpleParser.cpp.

00059 {
00060 }


Member Function Documentation

void SimpleParser::error const std::string &  str  )  [private, virtual]
 

Reimplemented from BaseParser.

Definition at line 63 of file SimpleParser.cpp.

References DEB, and m_currentfile.

Referenced by GetToken(), and include_file().

00064 {
00065 DEB(    fprintf(stderr,"%s line %d: %s\n",m_currentfile.c_str(),m_line,str.c_str());)
00066 }

void SimpleParser::find_types CLS ,
string_v ,
int  = 0
[private]
 

Definition at line 663 of file SimpleParser.cpp.

References m_pAdder, and string_v.

Referenced by Parser().

00664 {
00665         std::string typ;
00666         for (string_v::iterator it = vec.begin(); it != vec.end(); it++)
00667         {
00668                 string_v translated;
00669                 NSP *nsp;
00670                 bool is_type = m_pAdder -> type_lookup(cls, *it, translated, nsp);
00671                 if (*it == "&")
00672                         typ += *it;
00673                 else
00674                 if (*it == "*")
00675                         typ += *it;
00676                 else
00677                 if (*it == "[")
00678                         typ += *it;
00679                 else
00680                 if (is_type)
00681                 {
00682                         if (translated.size())
00683                         {
00684                                 fprintf(stderr,"TYPE*<%s, %s>", nsp -> name.c_str(), (*it).c_str());
00685                                 for (size_t i = 0; i < translated.size(); i++)
00686                                         fprintf(stderr," %s", translated[i].c_str());
00687                                 fprintf(stderr,"\n");
00688                                 if (l < 5)
00689                                         find_types(cls, translated, l + 1);
00690                         }
00691                         else
00692                         {
00693                                 fprintf(stderr,"TYPE<%s> %s\n", nsp -> name.c_str(), (*it).c_str());
00694                                 if (typ.size())
00695                                         m_pAdder -> add_type(cls, typ);
00696                                 typ = *it;
00697                         }
00698                 }
00699         }
00700         if (typ.size())
00701                 m_pAdder -> add_type(cls, typ);
00702 }

int SimpleParser::GetToken FILE *  fil,
int &  line,
std::string &  val
[private]
 

Definition at line 202 of file SimpleParser.cpp.

References AND, C1, C2, CC, CHAR, COMMENT, CPP, dblcheck, DPTR, EQ, error(), BaseParser::GetWord(), GTEQ, GTGT, IDENTIFIER, LTEQ, LTLT, m_namesave, MM, NEQ, NUMBER, OR, POINTER, PP, ReadLine(), and STRING.

Referenced by Parser().

00203 {
00204         while (C == ' ' || C == '\t')
00205                 the_ptr++;
00206         while (!C)
00207         {
00208                 if (!ReadLine(fil,line))
00209                         return 0;
00210                 if (C == '#')
00211                 {
00212                         val = the_str;
00213                         C = 0;
00214                         return CPP;
00215                 }
00216                 while (C == ' ' || C == '\t')
00217                         the_ptr++;
00218         }
00219         if (isdigit(C))
00220         {
00221                 while (isdigit(C) || C == '.')
00222                 {
00223                         val += C;
00224                         the_ptr++;
00225                 }
00226                 return NUMBER;
00227         }
00228         if (isalpha(C) || C == '_' || C == '~' || (C == ':' && C1 == ':' && (isalpha(C2) || C2 == '_')) )
00229         {
00230                 if (C == '~')
00231                 {
00232                         val += C;
00233                         the_ptr++;
00234                 }
00235                 while (isalnum(C) || C == '_' || (C == ':' && C1 == ':'))
00236                 {
00237                         if (C == ':' && C1 == ':')
00238                         {
00239                                 val += C;
00240                                 the_ptr++;
00241                         }
00242                         val += C;
00243                         the_ptr++;
00244                 }
00245                 {
00246                         int id = GetWord(val);
00247                         if (id >= 256)
00248                         {
00249                                 return id;
00250                         }
00251                 }
00252                 return IDENTIFIER;
00253         }
00254         if (C == '/' && C1 == '*')
00255         {
00256                 while (C != '*' || C1 != '/')
00257                 {
00258                         val += C;
00259                         the_ptr++;
00260                         while (!C)
00261                         {
00262                                 if (!ReadLine(fil,line))
00263                                         return 0;
00264                                 val += '\n';
00265                         }
00266                 }
00267                 val += C;
00268                 the_ptr++;
00269                 val += C;
00270                 the_ptr++;
00271                 return COMMENT;
00272         }
00273         if (C == '/' && C1 == '/')
00274         {
00275                 val = the_str + the_ptr;
00276                 C = 0;
00277                 return COMMENT;
00278         }
00279         if (C == 34)
00280         {
00281                 val += C;
00282                 the_ptr++;
00283                 while (C != 34 && C)
00284                 {
00285                         if (C == '\\') // escaping
00286                         {
00287                                 val += C;
00288                                 the_ptr++;
00289                         }
00290                         val += C;
00291                         the_ptr++;
00292                 }
00293                 if (C == 34)
00294                 {
00295                         val += C;
00296                         the_ptr++;
00297                 }
00298                 else
00299                 {
00300                         error("Unterminated string constant");
00301                 }
00302                 return STRING;
00303         }
00304         if (C == '\'')
00305         {
00306                 val += C;
00307                 the_ptr++;
00308                 while (C != '\'' && C)
00309                 {
00310                         if (C == '\\') // escaping
00311                         {
00312                                 val += C;
00313                                 the_ptr++;
00314                         }
00315                         val += C;
00316                         the_ptr++;
00317                 }
00318                 if (C == '\'')
00319                 {
00320                         val += C;
00321                         the_ptr++;
00322                 }
00323                 else
00324                 {
00325                         error("Unterminated char constant");
00326                 }
00327                 return CHAR;
00328         }
00329         // dbl chars
00330 #define dblcheck(x1,x2,y)  \
00331         if (C == x1 && C1 == x2) \
00332         { \
00333                 val = x1; \
00334                 val += x2; \
00335                 the_ptr += 2; \
00336                 return y; \
00337         } 
00338         //
00339         dblcheck(':',':',CC);
00340         dblcheck('<','<',LTLT);
00341         dblcheck('>','>',GTGT);
00342         dblcheck('*','*',DPTR);
00343         dblcheck('<','=',LTEQ);
00344         dblcheck('!','=',NEQ);
00345         dblcheck('>','=',GTEQ);
00346         dblcheck('=','=',EQ);
00347         dblcheck('|','|',OR);
00348         dblcheck('&','&',AND);
00349         dblcheck('+','+',PP);
00350         dblcheck('-','-',MM);
00351         dblcheck('-','>',POINTER);
00352         // single char:
00353         val += C;
00354         if (C == '{')
00355         {
00356                 m_namesave[m_level] = m_namespace;
00357                 m_level++;
00358         }
00359         if (C == '(')
00360                 m_plevel++;
00361         return the_str[the_ptr++];
00362 }

void SimpleParser::include_file const std::string &   )  [private]
 

Definition at line 69 of file SimpleParser.cpp.

References error(), and Parser().

Referenced by preprocessor().

00070 {
00071         char tmp[4000];
00072 
00073         strcpy(tmp,filename.c_str() + 1);
00074         while (*tmp == ' ' || *tmp == '\t')
00075                 memmove(tmp,tmp + 1,strlen(tmp + 1));
00076         for (size_t i = 0; i < strlen(tmp); i++)
00077                 if (tmp[i] == '"' || tmp[i] == '>')
00078                         tmp[i] = 0;
00079 
00080 //      printf("Including file '%s'...\n",filename.c_str());
00081 
00082         if (filename[0] == 34)
00083         {
00084                 FILE *fil;
00085                 char tmp2[4000];
00086                 
00087                 sprintf(tmp2,"%s/%s",m_path.c_str(),tmp);
00088                 if ((fil = fopen(tmp2,"rt")) != NULL)
00089                 {
00090                         int line = 0;
00091                         Parser(fil,line,tmp);
00092                         fclose(fil);
00093                 }
00094                 else
00095                 {
00096                         sprintf(tmp2,"Couldn't open '%s'...",tmp);
00097                         error( tmp2 );
00098                 }
00099         }
00100         else
00101         {
00102                 FILE *fil;
00103                 char tmp2[4000];
00104 
00105                 sprintf(tmp2,"/usr/include/%s",tmp);
00106                 fil = fopen(tmp2,"rt");
00107                 if (!fil)
00108                 {
00109                         sprintf(tmp2,"/usr/include/linux/%s",tmp);
00110                         fil = fopen(tmp2,"rt");
00111                 }
00112                 if (!fil)
00113                 {
00114                         sprintf(tmp2,"/usr/include/g++-3/%s",tmp);
00115                         fil = fopen(tmp2,"rt");
00116                 }
00117                 if (!fil)
00118                 {
00119                         sprintf(tmp2,"/usr/local/include/%s",tmp);
00120                         fil = fopen(tmp2,"rt");
00121                 }
00122                 if (!fil)
00123                 {
00124                         sprintf(tmp2,"/usr/devel/include/%s",tmp);
00125                         fil = fopen(tmp2,"rt");
00126                 }
00127                 if (!fil)
00128                 {
00129                         sprintf(tmp2,"%s/../%s",m_path.c_str(),tmp);
00130                         fil = fopen(tmp2,"rt");
00131                 }
00132                 if (fil)
00133                 {
00134                         int line = 0;
00135                         Parser(fil,line,tmp2);
00136                         fclose(fil);
00137                 }
00138                 else
00139                 {
00140                         sprintf(tmp2,"Couldn't open '%s'...",tmp);
00141                         error( tmp2 );
00142                 }
00143         }
00144 }

void SimpleParser::Parser FILE *  fil,
int &  line,
const std::string &  name
 

Definition at line 365 of file SimpleParser.cpp.

References Class, COMMENT, CPP, BaseParser::EndToken(), find_types(), Friend, GetToken(), IDENTIFIER, m_current, m_currentfile, m_levelm, m_namesave, m_pAdder, m_state, m_stfile, m_vec, Namespace, preprocessor(), string_v, Template, Typedef, and Using.

Referenced by include_file(), and parse_file().

00366 {
00367         CLS *cls = NULL;
00368         int c;
00369         std::string val;
00370         std::string old = m_currentfile;
00371         std::string strClass;
00372         bool func = false;
00373         bool ptr = false;
00374         std::string prev;
00375 
00376         m_currentfile = name;
00377 
00378         if (!old.size())
00379         {
00380 //              printf("Parsing '%s'...\n",name.c_str());
00381         }
00382 
00383         for (;;)
00384         {
00385                 val = "";
00386                 c = GetToken(fil,line,val);
00387                 if (!c) // eof
00388                 {
00389                         break;
00390                 }
00391                 if (c == IDENTIFIER && strstr(val.c_str(), "::"))
00392                 {
00393                         fprintf(stderr, "%s\n", val.c_str());
00394                 }
00395                 if (c == CPP)
00396                 {
00397                         preprocessor( val, line );
00398                         m_line = line;
00399                 }
00400                 else
00401                 // if c is '{', m_level has already been increased
00402                 // if c is '}', m_level is decreased after this switch
00403                 switch (m_state)
00404                 {
00405                 case 0:
00406                         if (m_vec.size())
00407                         {
00408                                 while (m_vec.size())
00409                                         m_vec.erase(m_vec.begin());
00410                         }
00411                         switch (c)
00412                         {
00413                         case Class:
00414                                 m_state = 1;
00415                                 break;
00416                         case Namespace:
00417                                 m_state = 2;
00418                                 break;
00419                         case Using:
00420                                 m_state = 3;
00421                                 break;
00422                         case Template:
00423                                 m_state = 4;
00424                                 break;
00425                         case Friend:
00426                                 m_state = 5;
00427                                 break;
00428                         case Typedef:
00429                                 m_state = 6;
00430                                 m_levelm = m_level;
00431                                 break;
00432                         }
00433                         if (m_state)
00434                         {
00435                                 m_vec.push_back( val );
00436                         }
00437                         break;
00438                 case 1: // class
00439                         if (c != COMMENT)
00440                                 m_vec.push_back(val);
00441                         if (c == ';') // forward decl
00442                         {
00443                                 m_state = 0;
00444                         }
00445                         else
00446                         if (c == '{') // definition
00447                         {
00448                                 // uses m_namespace, m_vec
00449                                 cls = m_pAdder -> add_class(m_namespace,m_vec,m_stfile,m_stline,m_extern);
00450                                 if (m_namespace.size())
00451                                         m_namespace += "::" + m_vec[1];
00452                                 else
00453                                         m_namespace = m_vec[1];
00454                                 m_current = Class;
00455                                 m_state = 10;
00456                                 m_levelm = m_level;
00457                                 strClass = m_vec[1];
00458                                 // init class parse
00459                                 while (m_vec.size())
00460                                         m_vec.erase(m_vec.begin());
00461                                 func = false;
00462                                 ptr = false;
00463                                 // ...
00464                         }
00465                         break;
00466                 case 2: // namespace
00467                         if (c != COMMENT)
00468                                 m_vec.push_back(val);
00469                         if (c == ';') // forward decl 'namespace ugly int beep();' ???
00470                                 m_state = 0;
00471                         else
00472                         if (c == '{') // definition
00473                                 m_state = 0;
00474                         if (!m_state && m_vec[1] != "{")
00475                         {
00476                                 if (m_namespace.size())
00477                                         m_namespace += "::" + m_vec[1];
00478                                 else
00479                                         m_namespace = m_vec[1];
00480                                 m_current = Namespace;
00481                         }
00482                         break;
00483                 case 3: // using
00484                         if (c != COMMENT)
00485                                 m_vec.push_back(val);
00486                         if (c == ';') // forward decl 'namespace ugly int beep();' ???
00487                                 m_state = 0;
00488                         else
00489                         if (c == '{') // definition
00490                                 m_state = 0;
00491                         if (!m_state)
00492                         {
00493                                 m_pAdder -> add_using(m_vec[1]);
00494                         }
00495                         break;
00496                 case 4: // template
00497                         if (c != COMMENT)
00498                                 m_vec.push_back(val);
00499                         if (c == ';') // forward decl 'namespace ugly int beep();' ???
00500                                 m_state = 0;
00501                         else
00502                         if (c == '{') // definition
00503                                 m_state = 0;
00504                         break;
00505                 case 5: // friend
00506                         if (c != COMMENT)
00507                                 m_vec.push_back(val);
00508                         if (c == ';') // forward decl 'namespace ugly int beep();' ???
00509                                 m_state = 0;
00510                         else
00511                         if (c == '{') // definition
00512                                 m_state = 0;
00513                         break;
00514                 case 6: // typedef
00515                         if (c != COMMENT)
00516                                 m_vec.push_back(val);
00517                         if (c == ';' && m_level == m_levelm)
00518                                 m_state = 0;
00519                         if (!m_state)
00520                         {
00521                                 std::string prev;
00522                                 std::string prev2;
00523                                 string_v::iterator it = m_vec.begin();
00524                                 string_v def;
00525                                 while (it != m_vec.end())
00526                                 {
00527                                         std::string tmp = *it;
00528                                         it++;
00529                                         if (prev2.size() && prev2 != "typedef")
00530                                         {
00531                                                 def.push_back(prev2);
00532                                         }
00533                                         prev2 = prev;
00534                                         if (it != m_vec.end())
00535                                         {
00536                                                 prev = tmp;
00537                                         }
00538                                 }
00539                                 m_pAdder -> set_typedef(m_namespace, prev, def);
00540                         }
00541                         break;
00542                 case 10: // in class
00543                         if (m_level < m_levelm)
00544                                 m_state = 0;
00545                         else
00546                         if (m_level == m_levelm) // not in inline method
00547                         {
00548                                 if (c != COMMENT)
00549                                         m_vec.push_back(val);
00550                                 switch (val[0])
00551                                 {
00552                                 case ';':
00553                                         if (!func)
00554                                         {
00555                                                 if (0)
00556                                                 {
00557                                                         printf("HEADER");
00558                                                         for (size_t i = 0; i < m_vec.size(); i++)
00559                                                                 printf(" %s", m_vec[i].c_str());
00560                                                         printf("\n");
00561                                                 }
00562                                                 if (m_vec[0] != "typedef" && m_vec[0] != "friend" )
00563                                                 {
00564                                                         std::string prev;
00565                                                         std::string typ;
00566                                                         find_types(cls, m_vec);
00567 /*
00568                                                         for (string_v::iterator it = m_vec.begin(); it != m_vec.end(); it++)
00569                                                         {
00570                                                                 string_v translated;
00571                                                                 NSP *nsp;
00572                                                                 bool is_type = m_pAdder -> type_lookup(cls, *it, translated, nsp);
00573                                                                 if (is_type)
00574                                                                 {
00575                                                                         if (translated.size())
00576                                                                         {
00577                                                                                 printf("TYPE*<%s, %s>", nsp -> name.c_str(), (*it).c_str());
00578                                                                                 for (size_t i = 0; i < m_vec.size(); i++)
00579                                                                                         printf(" %s", m_vec[i].c_str());
00580                                                                                 printf("\n");
00581                                                                         }
00582                                                                         else
00583                                                                         {
00584                                                                                 printf("TYPE<%s> %s\n", nsp -> name.c_str(), (*it).c_str());
00585                                                                         }
00586                                                                 }
00587                                                                 if (prev.size() && *it != "[" && (*it != ";" || prev == "]") &&
00588                                                                         prev != "static" && prev != "const" && *it != "=" && !eq
00589                                                                 )
00590                                                                 {
00591                                                                         if (prev == "<") // template 
00592                                                                                 typ += " " + prev;
00593                                                                         else
00594                                                                                 typ += prev;
00595                                                                 }
00596                                                                 if (*it == "=")
00597                                                                         eq = true;
00598                                                                 if (*it == ";")
00599                                                                         break;
00600                                                                 prev = *it;
00601                                                         }
00602                                                         if (cls)
00603                                                         {
00604 //printf("Calling add_type '%s' class '%s'\n", typ.c_str(), cls -> name.c_str());
00605                                                                 m_pAdder -> add_type(cls, typ);
00606                                                         }
00607 */
00608                                                 }
00609                                         }
00610                                         // init class parse
00611                                         while (m_vec.size())
00612                                                 m_vec.erase(m_vec.begin());
00613                                         func = false;
00614                                         ptr = false;
00615                                         // ...
00616                                         break;
00617                                 case ':':
00618                                         if (m_vec[0] == "public")
00619                                         {
00620                                         }
00621                                         if (m_vec[0] == "protected")
00622                                         {
00623                                         }
00624                                         if (m_vec[0] == "private")
00625                                         {
00626                                         }
00627                                         // init class parse
00628                                         while (m_vec.size())
00629                                                 m_vec.erase(m_vec.begin());
00630                                         func = false;
00631                                         ptr = false;
00632                                         // ...
00633                                         break;
00634                                 case '(':
00635                                         func = true;
00636                                         break;
00637                                 case '*':
00638                                         if (!func)
00639                                                 ptr = true;
00640                                         break;
00641                                 default:
00642                                         break;
00643                                 }
00644                         }
00645                         break;
00646                 }
00647                 //
00648                 if (c == '}')
00649                 {
00650                         m_level--;
00651                         m_namespace = m_namesave[m_level];
00652                 }
00653                 else
00654                 {
00655                         EndToken(c);
00656                 }
00657                 prev = val;
00658         }
00659         m_currentfile = old;
00660 }

void SimpleParser::preprocessor std::string &  ,
int &  line
[private]
 

Definition at line 147 of file SimpleParser.cpp.

References Parse::getword(), include_file(), and m_currentfile.

Referenced by Parser().

00148 {
00149         if (!strncmp(val.c_str(),"#include ",9))
00150         {
00151                 include_file(val.c_str() + 9);
00152         }
00153         else
00154         {
00155                 Parse pa( (char *)val.c_str() );
00156                 char slask[200];
00157 
00158                 strcpy(slask,pa.getword().c_str()); // '#'
00159                 assert(*slask == '#');
00160                 strcpy(slask,pa.getword().c_str()); // line
00161                 line = atoi(slask);
00162                 m_line = line;
00163                 strcpy(slask,pa.getword().c_str());
00164                 if (*slask == 34)
00165                 {
00166                         memmove(slask,slask + 1,strlen(slask + 1) + 1);
00167                         slask[strlen(slask) - 1] = 0;
00168                 }
00169                 m_currentfile = slask;
00170                 if (*slask == '/')
00171                         m_extern = true;
00172                 else
00173                         m_extern = false;
00174         }
00175 }

int SimpleParser::ReadLine FILE *  fil,
int &  line
[private]
 

Definition at line 178 of file SimpleParser.cpp.

References Cx.

Referenced by GetToken().

00179 {
00180         fgets(the_str,5000,fil);
00181         line++;
00182         m_line = line;
00183         if (feof(fil))
00184                 return 0;
00185         while (strlen(the_str) && (Cx == 13 || Cx == 10))
00186                 Cx = 0;
00187         while (Cx == '\\') // continue
00188         {
00189                 fgets(the_str + strlen(the_str) - 1,5000 - strlen(the_str),fil);
00190                 line++;
00191                 m_line = line;
00192                 if (feof(fil))
00193                         return 0;
00194                 while (strlen(the_str) && (Cx == 13 || Cx == 10))
00195                         Cx = 0;
00196         }
00197         the_ptr = 0;
00198         return 1;
00199 }


Member Data Documentation

std::vector<std::string> SimpleParser::m_added [private]
 

Definition at line 57 of file SimpleParser.h.

int SimpleParser::m_current [private]
 

Definition at line 56 of file SimpleParser.h.

Referenced by Parser().

std::string SimpleParser::m_currentfile [private]
 

Definition at line 50 of file SimpleParser.h.

Referenced by error(), Parser(), and preprocessor().

bool SimpleParser::m_extern [private]
 

Definition at line 62 of file SimpleParser.h.

int SimpleParser::m_levelm [private]
 

Definition at line 52 of file SimpleParser.h.

Referenced by Parser().

int SimpleParser::m_line [private]
 

Reimplemented from BaseParser.

Definition at line 53 of file SimpleParser.h.

std::map<int,std::string> SimpleParser::m_namesave [private]
 

Definition at line 55 of file SimpleParser.h.

Referenced by GetToken(), and Parser().

std::string SimpleParser::m_namespace [private]
 

Definition at line 54 of file SimpleParser.h.

BlackAdder* SimpleParser::m_pAdder [private]
 

Definition at line 58 of file SimpleParser.h.

Referenced by find_types(), and Parser().

std::string SimpleParser::m_path [private]
 

Definition at line 51 of file SimpleParser.h.

int SimpleParser::m_plevelm [private]
 

Definition at line 59 of file SimpleParser.h.

int SimpleParser::m_state [private]
 

Definition at line 48 of file SimpleParser.h.

Referenced by Parser().

std::string SimpleParser::m_stfile [private]
 

Definition at line 60 of file SimpleParser.h.

Referenced by Parser().

int SimpleParser::m_stline [private]
 

Definition at line 61 of file SimpleParser.h.

std::vector<std::string> SimpleParser::m_vec [private]
 

Definition at line 49 of file SimpleParser.h.

Referenced by Parser().

int SimpleParser::the_ptr [private]
 

Reimplemented from BaseParser.

Definition at line 47 of file SimpleParser.h.

char SimpleParser::the_str[5000] [private]
 

Reimplemented from BaseParser.

Definition at line 46 of file SimpleParser.h.


The documentation for this class was generated from the following files:
Generated for My SDL C++ Gui by doxygen 1.3.6