// ContentTrack.h : main header file for the CONTENTTRACK application
//

#if !defined(AFX_CONTENTTRACK_H__380504FE_782B_11D3_9C1F_00609712FBEF__INCLUDED_)
#define AFX_CONTENTTRACK_H__380504FE_782B_11D3_9C1F_00609712FBEF__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#ifndef __AFXWIN_H__
	#error include 'stdafx.h' before including this file for PCH
#endif

#include "resource.h"       // main symbols
#include "nodeobject.h"

/////////////////////////////////////////////////////////////////////////////
// CContentTrackApp:
// See ContentTrack.cpp for the implementation of this class
//
class CStringMap// : public CObject
{
private:
	struct MAPNODE
	{
		MAPNODE();
		~MAPNODE();
		CString GetName();
		char *szName;
		MAPNODE *pParent,*pLeft,*pRight;
		BYTE parentshare;
		BYTE value;
	};
	MAPNODE *m_arrRoots[26];
	MAPNODE *m_pMisc;
	MAPNODE *_Find(const char *,MAPNODE *,MAPNODE *,int);
	int _MakeList(CStringList &,MAPNODE *);
	int _MakeList(CPtrList &,MAPNODE *);
	DWORD NodeMem(MAPNODE *);
protected:
public:
	CStringMap();
	~CStringMap();

	POSITION Find(const char *);
	POSITION Exists(const char *);
	void SetValue(POSITION,BYTE);
	BYTE GetValue(POSITION);
	int MakeList(CStringList &);
	int MakeList(CPtrList &);
	CString GetName(POSITION);
	DWORD CountMem();
};

class CContentTrackApp : public CWinApp
{
protected:
public:
	CContentTrackApp();

	int UpdateKeys();
	int WritePropFile();
	int ReadPropFile();
	CMapWordToOb m_mapTemplates;
	CNodeObject *m_pNodeSelected;
	CString m_strRunDir;

// Overrides
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CContentTrackApp)
	public:
	virtual BOOL InitInstance();
	virtual int ExitInstance();
	//}}AFX_VIRTUAL

// Implementation
	//{{AFX_MSG(CContentTrackApp)
	afx_msg void OnAppAbout();
	afx_msg void OnFileOpen();
	afx_msg void OnEditKeytype();
	afx_msg void OnFileNew();
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};


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

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

#endif // !defined(AFX_CONTENTTRACK_H__380504FE_782B_11D3_9C1F_00609712FBEF__INCLUDED_)
