/*#io
docCopyright("Steve Dekorte", 2002)
docLicense("BSD revised")
*/

#ifndef IoActivationContext_DEFINED
#define IoActivationContext_DEFINED 1

#include "Common.h"
#include "List.h"
#include "IoState.h"

#ifdef __cplusplus
extern "C" {
#endif

#define ISACTIVATIONCONTEXT(self) IoObject_hasCloneFunc_(self, (TagCloneFunc *)IoActivationContext_rawClone)

typedef IoObject IoActivationContext;

typedef struct
{
	IoObject *sender;
	IoObject *target;
	IoObject *message;
	IoObject *slotContext;
	IoObject *activated;
} IoActivationContextData;

IoActivationContext *IoActivationContext_with(void *state, 
									 IoObject *sender,
									 IoObject *target,
									 IoObject *message,
									 IoObject *slotContext,
									 IoObject *activated);

IoActivationContext *IoActivationContext_proto(void *state);
IoActivationContext *IoActivationContext_rawClone(IoActivationContext *self);
IoActivationContext *IoActivationContext_new(IoState *state);

void IoActivationContext_mark(IoActivationContext *self);
void IoActivationContext_free(IoActivationContext *self);

void IoActivationContext_writeToStore_stream_(IoActivationContext *self, IoStore *store, BStream *stream);
void IoActivationContext_readFromStore_stream_(IoActivationContext *self, IoStore *store, BStream *stream);

IoObject *IoActivationContext_sender(IoObject *self, IoObject *locals, IoMessage *m);
IoObject *IoActivationContext_message(IoObject *self, IoObject *locals, IoMessage *m);
IoObject *IoActivationContext_target(IoObject *self, IoObject *locals, IoMessage *m);
IoObject *IoActivationContext_slotContext(IoObject *self, IoObject *locals, IoMessage *m);
IoObject *IoActivationContext_activated(IoObject *self, IoObject *locals, IoMessage *m);

#ifdef __cplusplus
}
#endif
#endif
