#pragma once

/* * * * * * * * * * * * * * * * * * * * * * * * * * * * *




 * * * * * * * * * * * * * * * * * * * * * * * * * * * * */


namespace UnionFilters
{
	extern const CString sDefaultSpace;

	extern const CString sResource_Local;
	extern const CString sResource_Option;
	extern const CString sResource_Number;
	extern const CString sResource_Operator;

	extern const CString sNumber_Integer;
	extern const CString sNumber_PureHex;
	extern const CString sNumber_Float;
	extern const CString sNumber_LineHex;

	extern const CString sBrackets_Round		 [2];
	extern const CString sBrackets_Square		 [2];
	extern const CString sBrackets_TextLine		 [2];
	extern const CString sBrackets_HexLine		 [2];
	extern const CString sBrackets_Comment		 [2];

	extern const CString sAssociation_Quote		 [2];
	extern const CString sAssociation_EndLine	 [2];
	extern const CString sAssociation_Tabulation [2];

	const uint32  ulResourceNum		= 4;
	const uint32  ulNumberNum		= 4;
	const uint32  ulBracketsNum		= 5;
	const uint32  ulAssociationNum	= 3;

	extern const CString  arrResource	 [ulResourceNum];	   
	extern const CString  arrNumber		 [ulNumberNum];   
	extern const CString* arrBrackets	 [ulBracketsNum];	   
	extern const CString* arrAssociation [ulAssociationNum];
}

namespace SystemPack
{
	const uint32  ulOperatorNum	= 22;

	extern const CString sEngineBlock	[2];
	extern const CString sPatchBlock	[2];
	extern const CString sOperators		[ulOperatorNum];
}

#include "CPatch_Page.h"
#include "CPatch_Symbol.h"
//#include "CPatch_Function.h"
#include "CPatch_Stack.h"
#include "CPatch_Region.h"

namespace SystemPack
{
	

	class CPatch_File
	{
		CString	  sFileName;
		CDocument sFileData;
	protected:
		CPatch_File( const CString& fileName );
	public:
		static CPatch_File*	LoadFile( const CString& fileName );
		CPatch_Region*	CreateEngineBlock (const uint32& hash);

		void CloseFile();
	};

}