fluffos/docs/efun/functions/functionp.md

59 lines
1.7 KiB
Markdown
Raw Permalink Normal View History

2018-12-30 16:43:04 -08:00
---
title: functions / functionp
---
2023-11-25 09:50:24 -08:00
# functionp
2018-12-30 16:43:04 -08:00
### NAME
2018-12-30 16:59:01 -08:00
2018-12-30 16:43:04 -08:00
functionp() - determine whether or not a given variable is a function
pointer, and if so what kind
### SYNOPSIS
2018-12-30 16:59:01 -08:00
int functionp( mixed arg );
2018-12-30 16:43:04 -08:00
### DESCRIPTION
2018-12-30 16:59:01 -08:00
2018-12-30 16:43:04 -08:00
Return nonzero if 'arg' is a function pointer and zero (0) otherwise.
Function pointers are variables of type 'function' as indicated in the
documentation for the type 'function', for example:
f = (: obj, func :);
The return value indicates the type of function pointer using the val
ues given in the driver include file "include/function.h".
function pointer type value
--------------------- -----
call_other FP_CALL_OTHER
lfun FP_LOCAL
efun FP_EFUN
simul_efun FP_SIMUL
functional FP_FUNCTIONAL
In addition, the following values will be added in some cases:
FP_HAS_ARGUMENTS arguments provided
FP_OWNER_DESTED creator has been dested
FP_NOT_BINDABLE not rebindable)
2018-12-30 16:43:04 -08:00
The last set of values are bit values and can be tested with bit opera
tions. The value FP_MASK is provided for ignoring the bit values and
2018-12-30 16:43:04 -08:00
testing the basic type of the function pointer.
Examples:
To test if a function variable is an efun pointer:
if ((functionp(f) & FP_MASK) == FP_EFUN) ...
to test if it has args:
if (functionp(f) & FP_HAS_ARGUMENTS) ...
### SEE ALSO
2018-12-30 16:59:01 -08:00
2018-12-30 16:43:04 -08:00
mapp(3), stringp(3), pointerp(3), objectp(3), intp(3), bufferp(3),
floatp(3), nullp(3), undefinedp(3), bind(3), lpc/types/func
2018-12-30 16:43:04 -08:00
tion