/* * This file is a part of Winix * and is not publicly distributed * * Copyright (c) 2008-2010, Tomasz Sowa * All rights reserved. * */ #ifndef headerfileconfparser #define headerfileconfparser #include #include #include class ConfParser { public: enum Status { ok, cant_open_file, syntax_error }; ConfParser(); Status Parse(const char * file_name); // last status Status status; // line in which there is a syntax_error int line; typedef std::map Table; Table table; private: // last read variable, value std::string variable, value; // separator between a variable and a value, usually '=' int separator; // commentary char int commentary; // last read char int lastc; // current file std::ifstream file; Status ParseFile(); bool IsVariableChar(int c); bool IsValueSimpleChar(int c); bool ReadVariable(); bool ReadValue(); bool ReadValueQuoted(); bool ReadValueSimple(); int ReadChar(); bool IsWhite(int c); void SkipWhite(); void SkipLine(); void Trim(std::string & s); }; #endif