[Scummvm-cvs-logs] CVS: scummvm/backends/PalmOS/Src/arm macros.h,NONE,1.1

Chris Apers chrilith at users.sourceforge.net
Sun Sep 12 05:37:01 CEST 2004


Update of /cvsroot/scummvm/scummvm/backends/PalmOS/Src/arm
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv30673

Added Files:
	macros.h 
Log Message:
Convenient macros to ease ARM code

--- NEW FILE: macros.h ---
#ifndef __MACROS_H__
#define __MACROS_H__ 

#ifndef DISABLE_ARM
	// macros for ARM calls
	#define ARM_START(TYPE) \
			if (OPTIONS_TST(kOptDeviceARM)) { \
				TYPE data;

	#define ARM_CHECK_EXEC(test)	if (test) {
	#define ARM_CHECK_END()			}

	#define ARM_ADDP(member)		data.member = &member;
	#define ARM_ADDM(member)		data.member = member;
	#define ARM_ADDV(member, var)	data.member = var;
	#define ARM_INIT(id)			data.funcID = id;

	#define ARM_DATA()		&data
	#define ARM_CONTINUE()	} else
	#define ARM_END()		return; \
						}

	#define PNO_CALL(pno, data)				_PnoCall(&ARM(pno).pnoDesc, data);
	#define PNO_CALL_RETURN(pno, data, var)	var  = _PnoCall(&ARM(pno).pnoDesc, data);

	#define PCE_CALL(pno, data)				_PceCall(ARM(pno).pnoPtr, data);
	#define PCE_CALL_RETURN(pno, data, var)	var  = _PceCall(ARM(pno).pnoPtr, data);

#else
	// no ARM = empty definition
	#define ARM_START(TYPE)

	#define ARM_CHECK_EXEC(test)
	#define ARM_CHECK_END()

	#define ARM_ADDP(member)
	#define ARM_ADDM(member)
	#define ARM_ADDV(member, var)
	#define ARM_INIT(id)

	#define ARM_DATA()
	#define ARM_CONTINUE()
	#define ARM_END()

	#define PNO_CALL(data)
	#define PNO_CALL_RETURN(data, var)

	#define PCE_CALL(data)
	#define PCE_CALL_RETURN(data, var)
	
#endif

	// Data access
	#define  _GETPTR(ptr, base, member, type)	(type)ReadUnaligned32( (byte *)ptr + OffsetOf(base, member) )
	#define  _SETPTR(base, member, type, var)	type var = _GETPTR(userData68KP, base, member, type);

	#define  _GET32	 _GETPTR
	#define  _SET32	 _SETPTR

	#define	 _GET16(ptr, base, member, type)	(type)ByteSwap16( ((UInt16 *)((byte *)ptr + OffsetOf(base, member)))[0] )
	#define  _SET16(base, member, type, var)	type var = _GET16(userData68KP, base, member, type);

	#define  _GET8(ptr, base, member, type)		(type)((byte *)ptr + OffsetOf(base, member))[0]
	#define  _SET8(base, member, type, var)		type var = _GET8(userData68KP, base, member, type);

	// convenient macros to ease data access
	#ifdef MAIN_TYPE 
	#	define SETPTRV(type, member, var)	_SETPTR(MAIN_TYPE, member, type, var)
	#	define SETPTR(type, member)			_SETPTR(MAIN_TYPE, member, type, member)
	#	define SET32(type, member)			_SET32 (MAIN_TYPE, member, type, member)
	#	define SET16(type, member)			_SET16 (MAIN_TYPE, member, type, member)
	#	define SET8(type, member)			_SET8  (MAIN_TYPE, member, type, member)
	#endif

#endif




More information about the Scummvm-git-logs mailing list