| /* |
| * Heap native function representation. |
| */ |
| |
| #ifndef DUK_HNATIVEFUNCTION_H_INCLUDED |
| #define DUK_HNATIVEFUNCTION_H_INCLUDED |
| |
| #define DUK_HNATIVEFUNCTION_NARGS_VARARGS ((duk_int16_t) -1) |
| #define DUK_HNATIVEFUNCTION_NARGS_MAX ((duk_int16_t) 0x7fff) |
| |
| struct duk_hnativefunction { |
| /* shared object part */ |
| duk_hobject obj; |
| |
| duk_c_function func; |
| duk_int16_t nargs; |
| duk_int16_t magic; |
| |
| /* The 'magic' field allows an opaque 16-bit field to be accessed by the |
| * Duktape/C function. This allows, for instance, the same native function |
| * to be used for a set of very similar functions, with the 'magic' field |
| * providing the necessary non-argument flags / values to guide the behavior |
| * of the native function. The value is signed on purpose: it is easier to |
| * convert a signed value to unsigned (simply AND with 0xffff) than vice |
| * versa. |
| * |
| * Note: cannot place nargs/magic into the heaphdr flags, because |
| * duk_hobject takes almost all flags already (and needs the spare). |
| */ |
| }; |
| |
| #endif /* DUK_HNATIVEFUNCTION_H_INCLUDED */ |