inlib  1.2.0
Public Member Functions | Protected Member Functions | Protected Attributes
inlib::columns::parser Class Reference
Inheritance diagram for inlib::columns::parser:
Inheritance graph
[legend]
Collaboration diagram for inlib::columns::parser:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 parser ()
virtual ~parser ()
bool parse (const std::string &a_s)
void dump (std::ostream &a_out)

Protected Member Functions

 parser (const parser &a_from)

Protected Attributes

tree m_top

Detailed Description

Definition at line 80 of file columns.


Constructor & Destructor Documentation

inlib::columns::parser::parser ( ) [inline]

Definition at line 82 of file columns.

:m_top(0){}
virtual inlib::columns::parser::~parser ( ) [inline, virtual]

Definition at line 83 of file columns.

{m_top.clear();}
inlib::columns::parser::parser ( const parser a_from) [inline, protected]

Definition at line 85 of file columns.

:m_top(a_from.m_top){}

Member Function Documentation

void inlib::columns::parser::dump ( std::ostream &  a_out) [inline]

Definition at line 141 of file columns.

{m_top.dump_tree(a_out,"");}
bool inlib::columns::parser::parse ( const std::string &  a_s) [inline]

Definition at line 89 of file columns.

                                  {
    m_top.clear();
    tree* prev = &m_top;
   {tree tmp(0);
    std::string s;
    for(std::string::const_iterator it=a_s.begin();;++it) {
      if(it==a_s.end()) {
        if(s.size()) {
          tmp.m_dcl = s;
          tmp.m_parent = prev;
          prev->m_sub.push_back(tmp);
          s.clear();
        }
        tmp.clear();
        break;
      } else {
        const char& c = *it;
        if(c==',') {
          if(s.size()) {
            tmp.m_dcl = s;
            tmp.m_parent = prev;
            prev->m_sub.push_back(tmp);
            s.clear();
          }
          tmp.clear();
        } else if(c=='{') {
          tmp.clear();
          if(s.size()) {
            tmp.m_dcl = s;
            s.clear();
          }
          tmp.m_parent = prev;
          prev->m_sub.push_back(tmp);      
          prev = &(prev->m_sub.back());
        } else if(c=='}') {
          if(s.size()) {
            tmp.m_dcl = s;
            tmp.m_parent = prev;
            prev->m_sub.push_back(tmp);
            s.clear();
          }
          tmp.clear();
          prev = prev->m_parent;
          if(!prev) return false; //should not happen.
        } else {
          s += c;
        }
      }
    }}
    return true;
  }

Member Data Documentation

Definition at line 143 of file columns.


The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines