Code Search for Developers
 
 
  

AtomicMessages.h from redshed at Krugle


Show AtomicMessages.h syntax highlighted

/****************************************************************************************
	AtomicMessages.h $Revision: 18 $
		<http://rentzsch.com/atomicMessages>
	
	Copyright © 1999-2002 Red Shed Software. All rights reserved.
	by Jonathan 'Wolf' Rentzsch (jon at redshed dot net)
	
	************************************************************************************/

#ifndef		_AtomicMessages_
#define		_AtomicMessages_

#include	"atomicity.h"

#ifdef		__cplusplus
extern	"C"	{
#endif	//	__cplusplus

/**************************
*	
*	Types
*	
**************************/
#pragma mark	(Types)

typedef	long	AtomicMessage;

typedef	struct	AtomicMessageElement	AtomicMessageElement;
typedef	struct	AtomicMessageQueue		AtomicMessageQueue;
typedef	AtomicMessageElement*	(*AtomicMessageProc)( AtomicMessageElement *message,
														AtomicMessageQueue *queue );

struct	AtomicMessageElement	{		//	Offset	Size	Total
	GuardedAtomicElement	element;	//	0		8		8	(must be 4 byte aligned)
	AtomicMessageProc		disposer;	//	8		4		12
	AtomicMessage			message;	//	12		4		16
	long					data1;		//	16		4		20
	long					data2;		//	20		4		24
	long					data3;		//	24		4		28
};

struct	AtomicMessageQueue	{		//	Offset	Size	Total
	AtomicQueue			queue;		//	0		8		8	(must be 4 byte aligned)
	AtomicMessageProc	incoming;	//	8		4		12
	AtomicMessageProc	allocator;	//	12		4		16
	void				*refCon;	//	16		4		20
};

/**************************
*	
*	Constants
*	
**************************/
#pragma mark	-
#pragma mark	(Constants)

#define		kNoAtomicMessage	(AtomicMessage)0

#define		kFilterFoundAtomicMessage		(AtomicMessageElement*)1
#define		kFilterNextAtomicMessage		(AtomicMessageElement*)2

/**************************
*	
*	Interfaces
*	
**************************/
#pragma mark	-
#pragma mark	(Interfaces)

	extern
	void
InitializeAtomicMessageQueue(
	AtomicMessageQueue	*queue );

	extern
	Boolean
SendAtomicMessage(
	AtomicMessageQueue		*queue,
	AtomicMessageElement	*message );
	
	extern
	OSErr
NewAtomicMessage(
	AtomicMessageQueue	*queue,
	AtomicMessage		message,
	long				data1,
	long				data2,
	long				data3 );

	extern
	AtomicMessage
PeekAtomicMessage(
	AtomicMessageQueue	*queue,
	AtomicMessageProc	filterProc,
	AtomicMessage		filterValue,
	long				*data1,
	long				*data2,
	long				*data3 );

	extern
	AtomicMessage
ReceiveAtomicMessage(
	AtomicMessageQueue	*queue,
	AtomicMessageProc	filterProc,
	AtomicMessage		filterValue,
	long				*data1,
	long				*data2,
	long				*data3 );

	extern
	void
DumpAtomicMessages(
	AtomicMessageQueue	*queue );

#ifdef	__cplusplus
}
#endif

#endif	//	_AtomicMessages_



See more files for this project here

redshed

Code for Mac+WebObjects.

Project homepage: http://sourceforge.net/projects/redshed
Programming language(s): C,Java,Objective C
License: other

  MacsBug/
    AtomicMessages.mbug
    AtomicMessages.mbug.r
  AtomicMessages.c
  AtomicMessages.h
  TestAtomicMessages.c