#ifndef H_CORAL_IO_XMI_READER
#define H_CORAL_IO_XMI_READER
// This file is part of the Coral project.
// Please read the copyright notice in the LICENSE file.

#include <coral/coral.h>

#include "xmi_reader_common.h"

namespace coral {
	class EXPORTFWD_coral Element;
	class EXPORTFWD_coral Language;
	namespace io {
		/*
		 * _state1 contains the necessary information for
		 * loading one XMI 1.2 stream.
		 */
		struct _state1 : public xmistate {
			bool reading_slots;
			_state1();
			~_state1() throw ();
			/*
			 * Switches between reading elements and slots.
			 */
			bool switchF() throw ();
			xmistate* newState();
			int postProcess(all_states_t& all_states,
					const std::string& old_filename);
			int loadIt();
		  protected:
			virtual void handleBadID();

		};
	}
}
#endif

