home *** CD-ROM | disk | FTP | other *** search
/ Freelog 33 / Freelog033.iso / Progr / Python-2.2.1.exe / TUPLEOBJECT.H < prev    next >
Encoding:
C/C++ Source or Header  |  2001-09-10  |  1.7 KB  |  50 lines

  1.  
  2. /* Tuple object interface */
  3.  
  4. #ifndef Py_TUPLEOBJECT_H
  5. #define Py_TUPLEOBJECT_H
  6. #ifdef __cplusplus
  7. extern "C" {
  8. #endif
  9.  
  10. /*
  11. Another generally useful object type is an tuple of object pointers.
  12. This is a mutable type: the tuple items can be changed (but not their
  13. number).  Out-of-range indices or non-tuple objects are ignored.
  14.  
  15. *** WARNING *** PyTuple_SetItem does not increment the new item's reference
  16. count, but does decrement the reference count of the item it replaces,
  17. if not nil.  It does *decrement* the reference count if it is *not*
  18. inserted in the tuple.  Similarly, PyTuple_GetItem does not increment the
  19. returned item's reference count.
  20. */
  21.  
  22. typedef struct {
  23.     PyObject_VAR_HEAD
  24.     PyObject *ob_item[1];
  25. } PyTupleObject;
  26.  
  27. extern DL_IMPORT(PyTypeObject) PyTuple_Type;
  28.  
  29. #define PyTuple_Check(op) PyObject_TypeCheck(op, &PyTuple_Type)
  30. #define PyTuple_CheckExact(op) ((op)->ob_type == &PyTuple_Type)
  31.  
  32. extern DL_IMPORT(PyObject *) PyTuple_New(int size);
  33. extern DL_IMPORT(int) PyTuple_Size(PyObject *);
  34. extern DL_IMPORT(PyObject *) PyTuple_GetItem(PyObject *, int);
  35. extern DL_IMPORT(int) PyTuple_SetItem(PyObject *, int, PyObject *);
  36. extern DL_IMPORT(PyObject *) PyTuple_GetSlice(PyObject *, int, int);
  37. extern DL_IMPORT(int) _PyTuple_Resize(PyObject **, int);
  38.  
  39. /* Macro, trading safety for speed */
  40. #define PyTuple_GET_ITEM(op, i) (((PyTupleObject *)(op))->ob_item[i])
  41. #define PyTuple_GET_SIZE(op)    (((PyTupleObject *)(op))->ob_size)
  42.  
  43. /* Macro, *only* to be used to fill in brand new tuples */
  44. #define PyTuple_SET_ITEM(op, i, v) (((PyTupleObject *)(op))->ob_item[i] = v)
  45.  
  46. #ifdef __cplusplus
  47. }
  48. #endif
  49. #endif /* !Py_TUPLEOBJECT_H */
  50.