#ifndef __${PrjName:uppercase}_DOCUMENT_H__
#define __${PrjName:uppercase}_DOCUMENT_H__


#include <akndoc.h>

// Forward references
class C${PrjName}AppUi;
class CEikApplication;


/*! 
  @class C${PrjName:uppercase}Document
  
  @discussion An instance of class C${PrjName:uppercase}Document is the Document
  part of the AVKON application framework for the ${PrjName:uppercase}
  application
  */
class C${PrjName}Document : public CAknDocument
{
public:

/*!
  @function NewL
  
  @discussion Construct a C${PrjName}Document for the AVKON application
  aApp  using two phase construction, and return a pointer to the created object
  @param aApp application creating this document
  @result a pointer to the created instance of C${PrjName}Document
  */
    static C${PrjName}Document* NewL(CEikApplication& aApp);

/*!
  @function NewLC
  
  @discussion Construct a C${PrjName}Document for the AVKON application aApp 
  using two phase construction, and return a pointer to the created object
  @param aApp application creating this document
  @result a pointer to the created instance of C${PrjName}Document
  */
    static C${PrjName}Document* NewLC(CEikApplication& aApp);

/*!
  @function ~C${PrjName}Document
  
  @discussion Destroy the object and release all memory objects
  */
    ~C${PrjName}Document();

public: // from CAknDocument
/*!
  @function CreateAppUiL 
  
  @discussion Create a C${PrjName}AppUi object and return a pointer to it
  @result a pointer to the created instance of the AppUi created
  */
    CEikAppUi* CreateAppUiL();

private:

/*!
  @function ConstructL
  
  @discussion Perform the second phase construction of a CHelloWorldDocument object
  */
    void ConstructL();

/*!
  @function C${PrjName}Document
  
  @discussion Perform the first phase of two phase construction 
  @param aApp application creating this document
  */
    C${PrjName}Document(CEikApplication& aApp);

};


#endif // __${PrjName:uppercase}_DOCUMENT_H__
