#pragma once

#if 0
namespace SystemPack
{
	typedef CList<CObject> TPatchStack;


	class CPatch_Stack
	{
		TPatchStack lstStack;

		 CPatch_Symbol* Execute(TPatchStack* stack);
	public:

		 CPatch_Stack(const CString& line);
		 CPatch_Symbol* ExecuteStack();
		 void Remove (TPatchStack* stack);
		
		~CPatch_Stack();
	};
}
#endif











namespace SystemPack
{
	class CPatch_Stack
	{
	protected:

		CPatch_Stack	*pPrev, *pNext;
		CObject			*pObject;

	public:

		CPatch_Stack ();
		static CPatch_Stack* CreateStack (const CString& line);

		void PushNext (CPatch_Stack* stack);
		void PushBack (CPatch_Stack* stack);
		void Destroy ();

		CPatch_Stack* Prev ();
		CPatch_Stack* Next ();
		uint32		  Num  ();

		CObject* GetData ();
		void	 SetData (CObject* object);
		
		CPatch_Symbol* Execute ();		// выполнение всего стека далее данного
		CPatch_Symbol* ExecuteLocal ();	// выполнение конкретного элемента

		virtual ~CPatch_Stack ();
	};
}