#if !defined(AFX_STREAMREADER_H__CE6628BF_30CD_427B_9977_CAD98F9206AD__INCLUDED_)
#define AFX_STREAMREADER_H__CE6628BF_30CD_427B_9977_CAD98F9206AD__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// StreamReader.h : header file
//

#include <KCore\KCore.h>


/////////////////////////////////////////////////////////////////////////////
// StreamReader command target

//class StreamReader : public CObject
class StreamReader
{
//	DECLARE_DYNCREATE(StreamReader)

public:
	StreamReader();           // protected constructor used by dynamic creation
	~StreamReader();

	bool setStream(KArchive * file);
	bool closeStream();
	
	virtual bool	getChar(char & Char) = 0;
	virtual bool	getInt(int & Int) = 0;
	virtual bool	getu32(u32 & ref) = 0;
	virtual bool	getFloat(float & Float) = 0;
	virtual bool	getString(char *& String) = 0;
	virtual bool	getIdentifier(char *& Id) = 0;
	virtual bool	getBeginSection() = 0;

	virtual bool	dumpSection() = 0;  //dumps everything to the end of current section including '}'
	
// Attributes
public:

// Operations
public:

// Overrides
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(StreamReader)
	//}}AFX_VIRTUAL

// Implementation
protected:

	KArchive * m_inFile;

	virtual bool	getEndSection() = 0;

	// Generated message map functions
	//{{AFX_MSG(StreamReader)
		// NOTE - the ClassWizard will add and remove member functions here.
	//}}AFX_MSG

//	DECLARE_MESSAGE_MAP()
};

/////////////////////////////////////////////////////////////////////////////

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_STREAMREADER_H__CE6628BF_30CD_427B_9977_CAD98F9206AD__INCLUDED_)
