summaryrefslogtreecommitdiff
path: root/testing/embedding/tlocal.py
blob: 7800dffa87c705af45de622a380538579f7ed806 (plain)
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
import cffi

ffi = cffi.FFI()

ffi.embedding_api("""
    int add1(int, int);
""")

ffi.embedding_init_code(r"""
    from _tlocal_cffi import ffi
    import itertools
    try:
        import thread
        g_seen = itertools.count().next
    except ImportError:
        import _thread as thread      # py3
        g_seen = itertools.count().__next__
    tloc = thread._local()

    @ffi.def_extern()
    def add1(x, y):
        try:
            num = tloc.num
        except AttributeError:
            num = tloc.num = g_seen() * 1000
        return x + y + num
""")

ffi.set_source("_tlocal_cffi", """
""")

fn = ffi.compile(verbose=True)
print('FILENAME: %s' % (fn,))