#include <vector>
#include <map>
#include <string>
#include <iostream>
#include <sstream>
#include "tinyxml.h"

#ifndef CONFIGPARSER_H_
#define CONFIGPARSER_H_

namespace cosi {

namespace io {

namespace onchipcommunication {

using namespace std;

class ConfigParser {
public:

	ConfigParser(string pFname);

	void Parse();

	string GetCosiRoot();

	void SetCosiRoot(string pRoot) ;

	string GetCosiVersion();

	string GetSystemCRoot();

	string GetParquetRoot();

	string GetParquetExec();

	string GetHmetisRoot();

	string GetHmetisExec();

	string GetKhmetisRoot();

	string GetKhmetisExec();

	string GetShmetisRoot();

	string GetShmetisExec();

	string GetTracerRoot() ;
	
	string GetTracerExec() ;
	
	string GetTmp();

private:

	void ParseNode(TiXmlNode* pParent);

	void ParseCosi(TiXmlNode* pParent);

	void ParseTmp(TiXmlNode* pParent);

	void ParseSystemC(TiXmlNode* pParent);

	void ParseParquet(TiXmlNode* pParent);

	void ParseHmetis(TiXmlNode* pParent);

	void ParseKhmetis(TiXmlNode* pParent);

	void ParseShmetis(TiXmlNode* pParent);
	
	void ParseTracer(TiXmlNode* pParent);

	string mFname;

	string mCosiRoot;

	string mCosiVersion;

	string mSystemCRoot;

	string mParquetRoot;

	string mTracerRoot ;
	
	string mTracerExec ;
	
	string mParquetExec;

	string mHmetisRoot;
	string mKhmetisRoot;
	string mShmetisRoot;

	string mHmetisExec;
	string mKhmetisExec;
	string mShmetisExec;

	string mTmp;

};

}
}
}

#endif /*LIBRARYPARSER_H_*/
