MudOSa4DGD/
MudOSa4DGD/bin/
MudOSa4DGD/data/
MudOSa4DGD/doc/
MudOSa4DGD/doc/driver/
MudOSa4DGD/doc/efun/bitstrings/
MudOSa4DGD/doc/efun/command/
MudOSa4DGD/doc/efun/communication/
MudOSa4DGD/doc/efun/heart_beat/
MudOSa4DGD/doc/efun/interactive/
MudOSa4DGD/doc/efun/inventory/
MudOSa4DGD/doc/efun/living/
MudOSa4DGD/doc/efun/mappings/
MudOSa4DGD/doc/efun/strings/
MudOSa4DGD/doc/efun/uid/
MudOSa4DGD/doc/funs/
MudOSa4DGD/doc/language/
MudOSa4DGD/mudlib/dgd/doc/
MudOSa4DGD/mudlib/dgd/lib/include/dgd/
MudOSa4DGD/mudlib/dgd/lib/std/
MudOSa4DGD/mudlib/dgd/lib/sys/
MudOSa4DGD/mudlib/dgd/log/
MudOSa4DGD/mudlib/log/
MudOSa4DGD/mudlib/std/include/
MudOSa4DGD/mudlib/std/obj/
/*
 * fp.c
 *
 * define functions for functionpointers
 *
 * (C) Frank Schmidt, Jesus@NorseMUD
 *
 */


/* test if <var> is a function */
static int functionp(mixed var) {
  if (arrayp(var) && ::sizeof(var) == 2 && stringp(_FUNC(var))) {
    switch (typeof(_OB(var))) {
    case T_OBJECT:
    case T_STRING:
      return 1;
    }
  }
  return 0;
}


/* call a functionpointer with some arguments */
static varargs mixed call_fp(mixed fp, mixed args...) {
  if (functionp(fp))
    return __call_other(_OB(fp), _FUNC(fp), args...);
  error("Illegal argument 1 to function call_fp(), needs functionpointer.");
  return 0;
}