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


		MCMemoryCopy.h


		Copyright: (c) 2001 Eovia Corp. All rights reserved.


		Author:	Pierre
		Date:	12/12/97

		Revision History

		when		who			what & why
		==========	==========	======================================================
		08/24/99	dsm			added MCmemfill8/16/32

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

#include "MCBasicTypes.h"

void MCmemmove				(void* dest, const void* source, int32 length);

void MCmemcpy				(void*   dest, const void*   source, int32 length8 );
void MCmemcpy_uint16		(uint16* dest, const uint16* source, int32 length16);
void MCmemcpy_uint32		(uint32* dest, const uint32* source, int32 length32);

void MCmemfill				(int32 data, void *dst, int32 size);			// size in bytes
void MCmemfill8				(int8  data, void *dst, int32 size);			// size in bytes
void MCmemfill16			(int16 data, void *dst, int32 size);			// size in short
void MCmemfill32			(int32 data, void *dst, int32 size);			// size in long
void MCmemfill32align		(int32 data, void *dst, int32 size);			// size in long, dst must be aligned on a 32 bit


#if defined(WIN) && !defined(qLeanMCCore)
// +----------------------------------------------------------------------------------------------------+
// | To use the following routines, you need to test yourself if MMX is supported (if (macroHasMMX) ...)|
// | And you need to call emms.                                                                         |
// +----------------------------------------------------------------------------------------------------+
void MCmemcpy_uint8_MMX_no_emms( void*   dest, const void*  source, int32 length8 );
void MCmemcpy_uint16_MMX_no_emms(uint16* dest, const uint16*source, int32 length16);
void MCmemcpy_uint32_MMX_no_emms(uint32* dest, const uint32*source, int32 length32);

#endif
