/usr/include/python2.7/mx/mxUID.h is in python-egenix-mx-base-dev 3.2.9-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 | #ifndef MXUID_H
#define MXUID_H
/*
mxUID -- A UID datatype.
Copyright (c) 2000, Marc-Andre Lemburg; mailto:mal@lemburg.com
Copyright (c) 2000-2015, eGenix.com Software GmbH; mailto:info@egenix.com
See the documentation for further copyright information or contact
the author (mailto:mal@lemburg.com).
*/
/* The extension's name; must be the same as the init function's suffix */
#define MXUID_MODULE "mxUID"
/* Name of the package or module that provides the extensions C API.
If the extension is used inside a package, provide the complete
import path. */
#define MXUID_API_MODULE "mx.UID"
/* --- No servicable parts below this line ----------------------*/
/* Include generic mx extension header file */
#include "mxh.h"
#ifdef MX_BUILDING_MXUID
# define MXUID_EXTERNALIZE MX_EXPORT
#else
# define MXUID_EXTERNALIZE MX_IMPORT
#endif
#ifdef __cplusplus
extern "C" {
#endif
/* --- C API ----------------------------------------------------*/
/* C API for usage by other Python modules */
typedef struct {
/* Build a new UID string for object with address id.
code is optionally included in UID if given. It may be NULL.
timestamp should be a double indicating Unix ticks, or 0 to have
the API use the current time.
The output buffer uid must have room for at least 512
bytes. uid_len is set to the uid data length. It must be preset to
the buffer's size.
Returns the Python string object on success, NULL on error.
*/
PyObject *(*UID)(void *obj,
char *code,
double timestamp);
/* Extracts the ticks timestamp from an UID string uid */
double (*timestamp)(unsigned char *uid);
} mxUIDModule_APIObject;
#ifndef MX_BUILDING_MXUID
/* Interfacestructure to C API for other modules.
Call mxUID_ImportModuleAPI() to initialize this
structure. After that usage is simple:
PyObject *v;
v = mxUID.UID("Marc");
if (!v)
goto onError;
...
*/
static
mxUIDModule_APIObject mxUID;
/* You *must* call this before using any of the functions in
mxUID and check its outcome; otherwise all accesses will
result in a segfault. Returns 0 on success. */
#ifndef DPRINTF
# define DPRINTF if (0) printf
#endif
static
int mxUID_ImportModuleAndAPI(void)
{
PyObject *mod = 0, *v = 0;
void *api;
DPRINTF("Importing the %s C API...\n",MXUID_API_MODULE);
mod = PyImport_ImportModule(MXUID_API_MODULE);
if (mod == NULL)
goto onError;
DPRINTF(" module found\n");
v = PyObject_GetAttrString(mod,MXUID_MODULE"API");
if (v == NULL)
goto onError;
Py_CLEAR(mod);
DPRINTF(" API object found\n");
api = PyCObject_AsVoidPtr(v);
if (api == NULL)
goto onError;
Py_CLEAR(v);
memcpy(&mxUID,api,sizeof(mxUID));
DPRINTF(" API object initialized.\n");
return 0;
onError:
DPRINTF(" not found.\n");
Py_XDECREF(mod);
Py_XDECREF(v);
return -1;
}
#endif
/* EOF */
#ifdef __cplusplus
}
#endif
#endif
|