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