/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to bzrlib/python-compat.h

  • Committer: Marius Kruger
  • Date: 2010-07-10 21:28:56 UTC
  • mto: (5384.1.1 integration)
  • mto: This revision was merged to the branch mainline in revision 5385.
  • Revision ID: marius.kruger@enerweb.co.za-20100710212856-uq4ji3go0u5se7hx
* Update documentation
* add NEWS

Show diffs side-by-side

added added

removed removed

Lines of Context:
25
25
#ifndef _BZR_PYTHON_COMPAT_H
26
26
#define _BZR_PYTHON_COMPAT_H
27
27
 
28
 
#ifdef _MSC_VER
29
 
#define inline __inline
30
 
#endif
31
 
 
32
 
#if PY_MAJOR_VERSION >= 3
33
 
 
34
 
#define PyInt_FromSsize_t PyLong_FromSsize_t
35
 
 
36
 
/* On Python 3 just don't intern bytes for now */
37
 
#define PyBytes_InternFromStringAndSize PyBytes_FromStringAndSize
38
 
 
39
 
/* In Python 3 the Py_TPFLAGS_CHECKTYPES behaviour is on by default */
40
 
#define Py_TPFLAGS_CHECKTYPES 0
41
 
 
42
 
#define PYMOD_ERROR NULL
43
 
#define PYMOD_SUCCESS(val) val
44
 
#define PYMOD_INIT_FUNC(name) PyMODINIT_FUNC PyInit_##name(void)
45
 
#define PYMOD_CREATE(ob, name, doc, methods) do { \
46
 
    static struct PyModuleDef moduledef = { \
47
 
        PyModuleDef_HEAD_INIT, name, doc, -1, methods \
48
 
    }; \
49
 
    ob = PyModule_Create(&moduledef); \
50
 
    } while(0)
51
 
 
52
 
#else
53
 
 
54
 
#define PyBytes_Type PyString_Type
55
 
#define PyBytes_CheckExact PyString_CheckExact
56
 
#define PyBytes_FromStringAndSize PyString_FromStringAndSize
57
 
inline PyObject* PyBytes_InternFromStringAndSize(const char *v, Py_ssize_t len)
58
 
{
59
 
    PyObject *obj = PyString_FromStringAndSize(v, len);
60
 
    if (obj != NULL) {
61
 
        PyString_InternInPlace(&obj);
62
 
    }
63
 
    return obj;
64
 
}
65
 
 
66
 
/* Lazy hide Python 3.3 only functions, callers must avoid on 2.7 anyway */
67
 
#define PyUnicode_AsUTF8AndSize(u, size) NULL
68
 
 
69
 
#define PYMOD_ERROR
70
 
#define PYMOD_SUCCESS(val)
71
 
#define PYMOD_INIT_FUNC(name) void init##name(void)
72
 
#define PYMOD_CREATE(ob, name, doc, methods) do { \
73
 
    ob = Py_InitModule3(name, methods, doc); \
74
 
    } while(0)
75
 
 
76
 
#endif
77
 
 
78
 
#define BrzPy_EnterRecursiveCall(where) (Py_EnterRecursiveCall(where) == 0)
 
28
/* http://www.python.org/dev/peps/pep-0353/ */
 
29
#if PY_VERSION_HEX < 0x02050000 && !defined(PY_SSIZE_T_MIN)
 
30
    typedef int Py_ssize_t;
 
31
    typedef Py_ssize_t (*lenfunc)(PyObject *);
 
32
    typedef PyObject * (*ssizeargfunc)(PyObject *, Py_ssize_t);
 
33
    typedef PyObject * (*ssizessizeargfunc)(PyObject *, Py_ssize_t, Py_ssize_t);
 
34
    #define PY_SSIZE_T_MAX INT_MAX
 
35
    #define PY_SSIZE_T_MIN INT_MIN
 
36
    #define PyInt_FromSsize_t(z) PyInt_FromLong(z)
 
37
    #define PyInt_AsSsize_t(o) PyInt_AsLong(o)
 
38
#endif
79
39
 
80
40
#if defined(_WIN32) || defined(WIN32)
81
41
    /* Defining WIN32_LEAN_AND_MEAN makes including windows quite a bit
114
74
 
115
75
#ifdef _MSC_VER
116
76
#define  snprintf  _snprintf
117
 
/* gcc (mingw32) has strtoll, while the MSVC compiler uses _strtoi64 */
118
 
#define strtoll _strtoi64
119
 
#define strtoull _strtoui64
 
77
#endif
 
78
 
 
79
/* Introduced in Python 2.6 */
 
80
#ifndef Py_TYPE
 
81
#  define Py_TYPE(o) ((o)->ob_type)
 
82
#endif
 
83
#ifndef Py_REFCNT
 
84
#  define Py_REFCNT(o) ((o)->ob_refcnt)
120
85
#endif
121
86
 
122
87
#endif /* _BZR_PYTHON_COMPAT_H */