File: MIGRATION

package info (click to toggle)
clisp 1%3A2.41-1
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 49,804 kB
  • ctags: 16,291
  • sloc: lisp: 75,912; ansic: 49,247; xml: 24,289; asm: 21,993; sh: 11,234; fortran: 6,692; cpp: 2,660; objc: 2,481; makefile: 2,355; perl: 164; sed: 55
file content (58 lines) | stat: -rw-r--r-- 1,790 bytes parent folder | download | duplicates (11)
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
Migration Guide
===============

When switching from vacall+trampoline to callback, you need to make the
following changes to your code:

       vacall+trampoline                       callback
       -----------------                       --------

                              -- Include files --

#include "vacall/vacall.h"              #include "callback/callback.h"
#include "trampoline/trampoline.h"

                          -- Variable declarations --

static void* trampvar;

                           -- Callback declaration --
                                
static void                             static void
mycallback (va_alist args)              mycallback (void* data, va_alist args)
{                                       {
  void* data = trampvar;                  ...
  ...

                              -- Initialization --

vacall_function = &mycallback;

                          -- Allocating a callback --

void* trampoline =                      void* trampoline =
  alloc_trampoline(                       alloc_callback(&mycallback,data);
    (__TR_function)&vacall,
    &trampvar,
    data);

                          -- Testing for a callback --

if                                      if
(is_trampoline(address)                 (is_callback(address)
 && (trampoline_address(address)         && (callback_address(address)
     == (__TR_function)&vacall)              == &mycallback)
 && (trampoline_variable(address)       )
     == &trampvar)
)

void* data = trampoline_data(address);  void* data = callback_data(address);

                         -- Deallocating a callback --

free_trampoline(address);               free_callback(address);

                                -- Libraries --

libvacall.a libtrampoline.a             libcallback.a