File: newhandler.cpp

package info (click to toggle)
elk 3.99.8-2.1
  • links: PTS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 5,004 kB
  • ctags: 3,435
  • sloc: ansic: 22,294; lisp: 6,208; makefile: 821; sh: 171; awk: 154; cpp: 92
file content (29 lines) | stat: -rw-r--r-- 615 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include "scheme.h"

#include <new>

#ifdef USE_ATTC_PLUS_PLUS
#  define set_new_handler set_new_handler__FPFv_v
#endif

static Object New_Handler;

static void New_Handler_Proc () {
    (void)Funcall (New_Handler, Null, 0);
}

static Object P_Set_New_Handler (Object p) {
    Object old;

    Check_Procedure (p);
    old = New_Handler;
    New_Handler = p;
    return old;
}

extern "C" void elk_init_lib_cplusplus () {
    New_Handler = Null;
    Global_GC_Link (New_Handler);
    std::new_handler (New_Handler_Proc);
    Define_Primitive ((Object (*)())P_Set_New_Handler, "set-c++-new-handler!", 1, 1, EVAL);
}