/***************************************************************************
*   Copyright (C) 2004 by Denis A. Birukov aka Messenger of death         *
*   riper@fromru.com                                                      *
*                                                                         *
*   This program is free software; you can redistribute it and/or modify  *
*   it under the terms of the GNU General Public License as published by  *
*   the Free Software Foundation; either version 2 of the License, or     *
*   (at your option) any later version.                                   *
*                                                                         *
*   This program is distributed in the hope that it will be useful,       *
*   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
*   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
*   GNU General Public License for more details.                          *
*                                                                         *
*   You should have received a copy of the GNU General Public License     *
*   along with this program; if not, write to the                         *
*   Free Software Foundation, Inc.,                                       *
*   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
***************************************************************************/
#ifndef ME_N_STORAGEME_C_PARSER_H
#define ME_N_STORAGEME_C_PARSER_H
#include <me_defines.h>
#include <vector>
#include <string>
#include <utility>

namespace ME_n_Storage
{
class ME_c_Storage;
	/**
	Данный класс представляет собой интерфейс для всех классов-парсеров.

	@author Denis A. Birukov aka Messenger of death 
	*/
	class ME_c_Parser
	{
		public:
			/**Данная функция производит обработку входных аргументов и (в случае необходимости), добавление их в указанное хранилище. 
			Функция получает в качестве входных параметров:\n
			const std::vector<std::pair<std::string, std::string> > &atrs - вектор параметов, которые должны быть обработаны\n
			ME_c_Storage *storage - указатель на хранилище\n
			const std::string &category - категория к которой принадлежит данный парсер\n
			Данный парсер по умолчанию выполняет анализ данных и добавляет данные в виде строки либо в виде числа, если данная строка может быть целиком преобразована в число.
			Формирует конечное имя вида category->valuename
			 */
			DECLSPEC virtual bool _parse( const std::vector<std::pair<std::string, std::string> > &atrs, ME_c_Storage *storage, const std::string &category );
			DECLSPEC ME_c_Parser();

	};

}

#endif
