You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
76 lines
2.8 KiB
C
76 lines
2.8 KiB
C
#if defined(__clang__)
|
|
#pragma clang system_header
|
|
#endif
|
|
#include "objc-visibility.h"
|
|
|
|
#ifndef _OBJC_MESSAGE_H_
|
|
#define _OBJC_MESSAGE_H_
|
|
|
|
#if defined(__x86_64) || defined(__i386) || defined(__arm__) || \
|
|
defined(__mips_n64) || defined(__mips_n32) || \
|
|
defined(__ARM_ARCH_ISA_A64) || \
|
|
(defined(__riscv) && __riscv_xlen == 64 && \
|
|
defined(__riscv_float_abi_double))
|
|
|
|
// Define __GNUSTEP_MSGSEND__ if available
|
|
#ifndef __GNUSTEP_MSGSEND__
|
|
#define __GNUSTEP_MSGSEND__
|
|
#endif
|
|
|
|
/**
|
|
* Standard message sending function. This function must be cast to the
|
|
* correct types for the function before use. The first argument is the
|
|
* receiver and the second the selector.
|
|
*
|
|
* Note that this function is not available on all architectures. For a more
|
|
* portable solution to sending arbitrary messages, consider using
|
|
* objc_msg_lookup_sender() and then calling the returned IMP directly.
|
|
*
|
|
* This version of the function is used for all messages that return either an
|
|
* integer, a pointer, or a small structure value that is returned in
|
|
* registers. Be aware that calling conventions differ between operating
|
|
* systems even within the same architecture, so take great care if using this
|
|
* function for small (two integer) structures.
|
|
*/
|
|
OBJC_PUBLIC
|
|
id objc_msgSend(id self, SEL _cmd, ...);
|
|
/**
|
|
* Standard message sending function. This function must be cast to the
|
|
* correct types for the function before use. The first argument is the
|
|
* receiver and the second the selector.
|
|
*
|
|
* Note that this function is not available on all architectures. For a more
|
|
* portable solution to sending arbitrary messages, consider using
|
|
* objc_msg_lookup_sender() and then calling the returned IMP directly.
|
|
*
|
|
* This version of the function is used for all messages that return a
|
|
* structure that is not returned in registers. Be aware that calling
|
|
* conventions differ between operating systems even within the same
|
|
* architecture, so take great care if using this function for small (two
|
|
* integer) structures.
|
|
*/
|
|
OBJC_PUBLIC
|
|
#ifdef __cplusplus
|
|
id objc_msgSend_stret(id self, SEL _cmd, ...);
|
|
#else
|
|
void objc_msgSend_stret(id self, SEL _cmd, ...);
|
|
#endif
|
|
/**
|
|
* Standard message sending function. This function must be cast to the
|
|
* correct types for the function before use. The first argument is the
|
|
* receiver and the second the selector.
|
|
*
|
|
* Note that this function is not available on all architectures. For a more
|
|
* portable solution to sending arbitrary messages, consider using
|
|
* objc_msg_lookup_sender() and then calling the returned IMP directly.
|
|
*
|
|
* This version of the function is used for all messages that return floating
|
|
* point values.
|
|
*/
|
|
OBJC_PUBLIC
|
|
long double objc_msgSend_fpret(id self, SEL _cmd, ...);
|
|
|
|
#endif
|
|
|
|
#endif //_OBJC_MESSAGE_H_
|