/*******************************************************************************
 * Copyright (c) 2015-2016 ONERA.
 * Ce logiciel est la propriété de l’ONERA (the French Aerospace Lab).
 * Tous droits réservés.
 *
 * Ce programme et les éléments qui l'accompagnent sont mis à disposition
 * aux conditions définies par le contrat de licence logiciel CeCILL-C soumise
 * au droit français et respectant les principes de diffusion des logiciels libres.
 * Vous pouvez utiliser, modifier et/ou redistribuer ce programme
 * sous les conditions de la licence CeCILL-C (http://www.cecill.info).

 * This software is property of ONERA (the French Aerospace Lab).
 * All rights reserved.
 *
 * This program and the accompanying materials are made available under
 * the terms of the CeCILL-C license under French law and
 * abiding by the rules of distribution of free software.
 * You can  use, modify and/ or redistribute the software under the terms of
 * the CeCILL-C license (http://www.cecill.info).
 *
 * Contributeurs/contributors:
 *     Guillaume Infantes (ONERA - Centre de Toulouse) - initial API and implementation
 *
 *******************************************************************************/

#ifndef ALTARICA_INIT_INFO_XML2_HH
#define ALTARICA_INIT_INFO_XML2_HH

#include <map> 
#include <string> 
#include <vector>

#include "AltaricaInitInfo.hh"
#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/json_parser.hpp>


namespace epoch {
    namespace altarica {

	class AltaricaModel;
	class Value; 
	class Node;
	class Event;
	class EventLaw;


	class AltaricaInitInfoXML2 : public AltaricaInitInfo {
	private:
    void processRoot(boost::property_tree::ptree& root);
    void processNode(boost::property_tree::ptree& node);

	    void processEvent(boost::property_tree::ptree & node, std::vector<Node *>* altNode);
//	    void processEvents(boost::property_tree::ptree & node, std::vector<Node *>* altNode);
	    void processValue(boost::property_tree::ptree & node, std::vector<Node*>* altNode);
//	    void processValues(boost::property_tree::ptree & node, std::vector<Node*>* altNode);
	public:
	    AltaricaInitInfoXML2(std::string initFile,AltaricaModel *am);
	   
	};
    }
}

#endif
