// CCppClassMapGenerator.h
//
#if !defined (_CCPPCLASSMAPGENERATOR_H_)
#define _CCPPCLASSMAPGENERATOR_H_

#include "enums.h"
#include "CppBaseGenerator.h"
#include "cmString.h"

class CProjectSettings;
class CXMLStorageElement;

class CCppClassMapGenerator: public CCppBaseGenerator
{
public:
	CCppClassMapGenerator();
	virtual ~CCppClassMapGenerator();

	virtual void Generate();
	
protected:
	// header file generators
	//
	virtual void GenerateHeader();
	virtual void Head_generateHeader();
	virtual void Head_generateIfDefBegin();
	virtual void Head_generateIncludeSection();
	virtual void Head_generateForwardDecl();
	virtual void Head_generateClassBegin();
	virtual void Head_generateConstructor();
	virtual void Head_generateDestructor();
	virtual void Head_generateMethods();
	virtual void Head_generateSerialization();
	virtual void Head_generateMembers();
	virtual void Head_generateIfDefEnd();
	virtual void Head_generateClassEnd();

	// implementation file generators
	//
	virtual void GenerateImplementation();
	virtual void Impl_generateHeader();
	virtual void Impl_generateIncludeSection();
	virtual void Impl_generateConstructor();
	virtual void Impl_generateDestructor();
	virtual void Impl_generateMethods();
	virtual void Impl_generateSerialization();

private:
	
	cmString headCode_;
	cmString implCode_;
};

#endif //!defined (_CCPPCLASSMAPGENERATOR_H_)