chiark / gitweb /
pyke/mapping.c, key.c: Make the mapping code more intrusive and complete.
[pyke] / pyke-mLib.h
1 /* -*-c-*-
2  *
3  * Pyke: the Python Kit for Extensions, mLib integration
4  *
5  * (c) 2019 Straylight/Edgeware
6  */
7
8 /*----- Licensing notice --------------------------------------------------*
9  *
10  * This file is part of Pyke: the Python Kit for Extensions.
11  *
12  * Pyke is free software: you can redistribute it and/or modify it under
13  * the terms of the GNU General Public License as published by the Free
14  * Software Foundation; either version 2 of the License, or (at your
15  * option) any later version.
16  *
17  * Pyke is distributed in the hope that it will be useful, but WITHOUT
18  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
19  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
20  * for more details.
21  *
22  * You should have received a copy of the GNU General Public License
23  * along with Pyke.  If not, write to the Free Software Foundation, Inc.,
24  * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
25  */
26
27 #ifndef PYKE_MLIB_H
28 #define PYKE_MLIB_H
29
30 #ifdef __cplusplus
31   extern "C" {
32 #endif
33
34 /*----- Header files ------------------------------------------------------*/
35
36 #ifndef PYKE_H
37 #  include "pyke.h"
38 #endif
39
40 PUBLIC_SYMBOLS;
41 #include <mLib/bits.h>
42 #include <mLib/sym.h>
43 PRIVATE_SYMBOLS;
44
45 /*----- Conversions -------------------------------------------------------*/
46
47 #define DECL_CONVU_(n) extern int convu##n(PyObject *, void *);
48 DOUINTSZ(DECL_CONVU_)
49   /* Define an `O&' input conversion `convuN' for each mLib type `uintN'. */
50
51 extern int convk64(PyObject *, void *);
52   /* Input conversion for `kludge64'. */
53
54 extern PyObject *getk64(kludge64);
55   /* Output conversion for `kludge64'. */
56
57 /*----- Mapping support ---------------------------------------------------*/
58
59 extern Py_ssize_t gmap_pysize_from_sym(sym_table *);
60   /* Determine the size of a mapping based on a `sym_table'. */
61
62 /*----- That's all, folks -------------------------------------------------*/
63
64 #ifdef __cplusplus
65   }
66 #endif
67
68 #endif