#pragma once
using namespace System;

namespace lkfxdok {
	namespace c {

		private delegate void LKFUnmanagedMemoryDelegateFunction(void *, const char*, const char*, long long ptr, long elem, long siz);

		public delegate void LKFMemoryDelegateFunction(String^, String^, Int64, Int32, Int32);

		public ref class LKFMemoryDelegate
		{
		private:
			LKFUnmanagedMemoryDelegateFunction^_delegateFunction;
			LKFMemoryDelegateFunction^ _managedDelegateFunction;
			IntPtr _unmanagedFileDelegate;
			int _delegateFlags;
		public:
			void memoryDelegate (void *, const char*, const char*, long long ptr, long elem, long siz);
			
		
		public:
			LKFMemoryDelegate(LKFMemoryDelegateFunction^ _managedDelegateFunction, int delegateFlags);
			~LKFMemoryDelegate();
			void Assign();
			void Deassign();
		};
	}
}

