ftp.nice.ch/Attic/openStep/implementation/gnustep/sources/gstep-base-0.2.7.tgz#/gstep-base-0.2.7/src/include/Invocation.h

This is Invocation.h in view mode; [Download] [Up]

#ifndef __Invocation_h_GNUSTEP_BASE_INCLUDE
#define __Invocation_h_GNUSTEP_BASE_INCLUDE

/* 
   Use these for notifications!
   Don't forget to make these archivable / transportable.
   WARNING: All the (char*) type arguments and return values may
   extraneous stuff after the first type.
*/

#include <gnustep/base/preface.h>
#include <gnustep/base/Collection.h>
#include <gnustep/base/Invoking.h>

@interface Invocation : NSObject <Invoking>
{
  char *return_type;		/* may actually contain full argframe type */
  unsigned return_size;
  void *return_value;
}
- initWithReturnType: (const char *)encoding;
- (const char *) returnType;
- (unsigned) returnSize;
- (void) getReturnValue: (void*) addr;
@end

@interface ArgframeInvocation : Invocation
{
  arglist_t argframe;
  BOOL args_retained;
  /* Use return_type to hold full argframe type. */
}
- initWithArgframe: (arglist_t)frame type: (const char *)e;
- initWithType: (const char *)e;

- (void) retainArguments;
- (BOOL) argumentsRetained;

- (const char *) argumentTypeAtIndex: (unsigned)i;
- (unsigned) argumentSizeAtIndex: (unsigned)i;
- (void) getArgument: (void*)addr atIndex: (unsigned)i;
- (void) setArgumentAtIndex: (unsigned)i 
    toValueAt: (const void*)addr;
@end

@interface MethodInvocation : ArgframeInvocation
{
  id *target_pointer;
  SEL *sel_pointer;
}

- initWithArgframe: (arglist_t)frame selector: (SEL)s;
- initWithSelector: (SEL)s;
- initWithTarget: target selector: (SEL)s, ...;
- (void) invokeWithTarget: t;
- (SEL) selector;
- (void) setSelector: (SEL)s;
- target;
- (void) setTarget: t;
@end

/* Same as MethodInvocation, except that when sent 
   [ -invokeWithObject: anObj], anObj does not become the target
   for the invocation's selector, it becomes the first object 
   argument of the selector. */
@interface ObjectMethodInvocation : MethodInvocation
{
  id *arg_object_pointer;
}
@end

@interface VoidFunctionInvocation : Invocation
{
  void (*function)();
}
- initWithVoidFunction: (void(*)())f;
@end


@interface ObjectFunctionInvocation : Invocation
{
  id (*function)(id);
}
- initWithObjectFunction: (id(*)(id))f;
@end


#if 0
@interface FunctionInvocation : ArgframeInvocation
{
  void (*function)();
}
- initWithFunction: (void(*)())f
    argframe: (arglist_t)frame type: (const char *)e;
- initWithFunction: (void(*)())f;
@end
#endif

#endif /* __Invocation_h_GNUSTEP_BASE_INCLUDE */

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.