sqlitecompat.h 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. /* sqlitecompat.h - compatibility macros
  2. *
  3. * Copyright (C) 2006-2007 Gerhard Häring <gh@ghaering.de>
  4. *
  5. * This file is part of pysqlite.
  6. *
  7. * This software is provided 'as-is', without any express or implied
  8. * warranty. In no event will the authors be held liable for any damages
  9. * arising from the use of this software.
  10. *
  11. * Permission is granted to anyone to use this software for any purpose,
  12. * including commercial applications, and to alter it and redistribute it
  13. * freely, subject to the following restrictions:
  14. *
  15. * 1. The origin of this software must not be misrepresented; you must not
  16. * claim that you wrote the original software. If you use this software
  17. * in a product, an acknowledgment in the product documentation would be
  18. * appreciated but is not required.
  19. * 2. Altered source versions must be plainly marked as such, and must not be
  20. * misrepresented as being the original software.
  21. * 3. This notice may not be removed or altered from any source distribution.
  22. */
  23. #ifndef PYSQLITE_COMPAT_H
  24. #define PYSQLITE_COMPAT_H
  25. /* define Py_ssize_t for pre-2.5 versions of Python */
  26. #if PY_VERSION_HEX < 0x02050000
  27. typedef int Py_ssize_t;
  28. typedef int (*lenfunc)(PyObject*);
  29. #endif
  30. /* define PyDict_CheckExact for pre-2.4 versions of Python */
  31. #ifndef PyDict_CheckExact
  32. #define PyDict_CheckExact(op) ((op)->ob_type == &PyDict_Type)
  33. #endif
  34. /* define Py_CLEAR for pre-2.4 versions of Python */
  35. #ifndef Py_CLEAR
  36. #define Py_CLEAR(op) \
  37. do { \
  38. if (op) { \
  39. PyObject *tmp = (PyObject *)(op); \
  40. (op) = NULL; \
  41. Py_DECREF(tmp); \
  42. } \
  43. } while (0)
  44. #endif
  45. #endif