You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

108 lines
3.3 KiB

Merged revisions 60383-60407 via svnmerge from svn+ssh://pythondev@svn.python.org/python/trunk ........ r60388 | thomas.heller | 2008-01-28 09:44:13 +0100 (Mon, 28 Jan 2008) | 1 line Revert rev. 59925, it breaks comtypes (I need to further examine this). ........ r60397 | raymond.hettinger | 2008-01-28 21:34:33 +0100 (Mon, 28 Jan 2008) | 5 lines Make PySet_Add() work with frozensets. Works like PyTuple_SetItem() to build-up values in a brand new frozenset. Also, PyFrozenSet_New() is now guaranteed to produce a distinct new frozenset. ........ r60398 | raymond.hettinger | 2008-01-28 22:34:30 +0100 (Mon, 28 Jan 2008) | 1 line Let marshal built-up sets and frozensets one element at a time (without creating an intermediate tuple). ........ r60399 | raymond.hettinger | 2008-01-28 22:47:42 +0100 (Mon, 28 Jan 2008) | 1 line Factor-out common code with a new macro ........ r60400 | raymond.hettinger | 2008-01-28 22:48:07 +0100 (Mon, 28 Jan 2008) | 1 line Factor-out common code with a new macro ........ r60401 | raymond.hettinger | 2008-01-28 22:51:25 +0100 (Mon, 28 Jan 2008) | 1 line Removed unnecessary conditional (spotted by Neal Norwitz). ........ r60403 | gregory.p.smith | 2008-01-29 00:21:00 +0100 (Tue, 29 Jan 2008) | 4 lines Disable use of BerkeleyDB 4.6.x to see what the odd platform buildbots think. In particular, neal norwitz has traced an Ubuntu sparc64 crash to the Lib/test/bsddb/test_basics.py test when opening a db with DB_THREAD. ........ r60405 | brett.cannon | 2008-01-29 05:13:07 +0100 (Tue, 29 Jan 2008) | 2 lines Fix the reindent rule to use $(BUILDPYTHON). ........ r60406 | brett.cannon | 2008-01-29 05:18:04 +0100 (Tue, 29 Jan 2008) | 3 lines Update Vim syntax highlighting to specify what revision was used to generate the file. ........ r60407 | brett.cannon | 2008-01-29 05:20:56 +0100 (Tue, 29 Jan 2008) | 2 lines Ignore .pyc and .pyo files. ........
18 years ago
Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552-60567 via svnmerge from svn+ssh://pythondev@svn.python.org/python/trunk ........ r60553 | neal.norwitz | 2008-02-03 17:53:09 +0100 (Sun, 03 Feb 2008) | 1 line Ignore leaky warnings from test_asynchat ........ r60555 | christian.heimes | 2008-02-03 20:51:13 +0100 (Sun, 03 Feb 2008) | 1 line Another int -> pid_t case ........ r60560 | amaury.forgeotdarc | 2008-02-03 23:51:43 +0100 (Sun, 03 Feb 2008) | 6 lines Ensure that PySet_Add() operates on a newly created frozenset, like PyTuple_SetItem does. Add PyFrozenSet_Check(), which was not needed before; The list of Py*Set_Check* macros seems to be complete now. Add missing NEWS entries about all this. ........ r60563 | amaury.forgeotdarc | 2008-02-04 00:14:32 +0100 (Mon, 04 Feb 2008) | 2 lines Nasty typo in setobject.h ........ r60564 | amaury.forgeotdarc | 2008-02-04 00:15:32 +0100 (Mon, 04 Feb 2008) | 3 lines Correct test_mailbox on win32: since the test sets a custom 'colon' attribute to the main mailbox, copy it to secondary mailbox instances. ........ r60565 | amaury.forgeotdarc | 2008-02-04 00:57:24 +0100 (Mon, 04 Feb 2008) | 2 lines Let test_socketserver pass on win32, which does not have AF_UNIX sockets. ........ r60566 | jeffrey.yasskin | 2008-02-04 02:04:35 +0100 (Mon, 04 Feb 2008) | 2 lines Make int() and long() fall back to __trunc__(). See issue 2002. ........ r60567 | christian.heimes | 2008-02-04 19:00:12 +0100 (Mon, 04 Feb 2008) | 3 lines Patch #1953 I implemented the function sys._compact_freelists() and C API functions PyInt_/PyFloat_CompactFreeList() to compact the pre-allocated blocks of ints and floats. They allow the user to reduce the memory usage of a Python process that deals with lots of numbers. The patch also renames sys._cleartypecache to sys._clear_type_cache ........
18 years ago
  1. /* Set object interface */
  2. #ifndef Py_SETOBJECT_H
  3. #define Py_SETOBJECT_H
  4. #ifdef __cplusplus
  5. extern "C" {
  6. #endif
  7. #ifndef Py_LIMITED_API
  8. /* There are three kinds of entries in the table:
  9. 1. Unused: key == NULL and hash == 0
  10. 2. Dummy: key == dummy and hash == -1
  11. 3. Active: key != NULL and key != dummy and hash != -1
  12. The hash field of Unused slots is always zero.
  13. The hash field of Dummy slots are set to -1
  14. meaning that dummy entries can be detected by
  15. either entry->key==dummy or by entry->hash==-1.
  16. */
  17. #define PySet_MINSIZE 8
  18. typedef struct {
  19. PyObject *key;
  20. Py_hash_t hash; /* Cached hash code of the key */
  21. } setentry;
  22. /* The SetObject data structure is shared by set and frozenset objects.
  23. Invariant for sets:
  24. - hash is -1
  25. Invariants for frozensets:
  26. - data is immutable.
  27. - hash is the hash of the frozenset or -1 if not computed yet.
  28. */
  29. typedef struct {
  30. PyObject_HEAD
  31. Py_ssize_t fill; /* Number active and dummy entries*/
  32. Py_ssize_t used; /* Number active entries */
  33. /* The table contains mask + 1 slots, and that's a power of 2.
  34. * We store the mask instead of the size because the mask is more
  35. * frequently needed.
  36. */
  37. Py_ssize_t mask;
  38. /* The table points to a fixed-size smalltable for small tables
  39. * or to additional malloc'ed memory for bigger tables.
  40. * The table pointer is never NULL which saves us from repeated
  41. * runtime null-tests.
  42. */
  43. setentry *table;
  44. Py_hash_t hash; /* Only used by frozenset objects */
  45. Py_ssize_t finger; /* Search finger for pop() */
  46. setentry smalltable[PySet_MINSIZE];
  47. PyObject *weakreflist; /* List of weak references */
  48. } PySetObject;
  49. #define PySet_GET_SIZE(so) (((PySetObject *)(so))->used)
  50. PyAPI_DATA(PyObject *) _PySet_Dummy;
  51. PyAPI_FUNC(int) _PySet_NextEntry(PyObject *set, Py_ssize_t *pos, PyObject **key, Py_hash_t *hash);
  52. PyAPI_FUNC(int) _PySet_Update(PyObject *set, PyObject *iterable);
  53. PyAPI_FUNC(int) PySet_ClearFreeList(void);
  54. #endif /* Section excluded by Py_LIMITED_API */
  55. PyAPI_DATA(PyTypeObject) PySet_Type;
  56. PyAPI_DATA(PyTypeObject) PyFrozenSet_Type;
  57. PyAPI_DATA(PyTypeObject) PySetIter_Type;
  58. PyAPI_FUNC(PyObject *) PySet_New(PyObject *);
  59. PyAPI_FUNC(PyObject *) PyFrozenSet_New(PyObject *);
  60. PyAPI_FUNC(int) PySet_Add(PyObject *set, PyObject *key);
  61. PyAPI_FUNC(int) PySet_Clear(PyObject *set);
  62. PyAPI_FUNC(int) PySet_Contains(PyObject *anyset, PyObject *key);
  63. PyAPI_FUNC(int) PySet_Discard(PyObject *set, PyObject *key);
  64. PyAPI_FUNC(PyObject *) PySet_Pop(PyObject *set);
  65. PyAPI_FUNC(Py_ssize_t) PySet_Size(PyObject *anyset);
  66. #define PyFrozenSet_CheckExact(ob) (Py_TYPE(ob) == &PyFrozenSet_Type)
  67. #define PyAnySet_CheckExact(ob) \
  68. (Py_TYPE(ob) == &PySet_Type || Py_TYPE(ob) == &PyFrozenSet_Type)
  69. #define PyAnySet_Check(ob) \
  70. (Py_TYPE(ob) == &PySet_Type || Py_TYPE(ob) == &PyFrozenSet_Type || \
  71. PyType_IsSubtype(Py_TYPE(ob), &PySet_Type) || \
  72. PyType_IsSubtype(Py_TYPE(ob), &PyFrozenSet_Type))
  73. #define PySet_Check(ob) \
  74. (Py_TYPE(ob) == &PySet_Type || \
  75. PyType_IsSubtype(Py_TYPE(ob), &PySet_Type))
  76. #define PyFrozenSet_Check(ob) \
  77. (Py_TYPE(ob) == &PyFrozenSet_Type || \
  78. PyType_IsSubtype(Py_TYPE(ob), &PyFrozenSet_Type))
  79. #ifdef __cplusplus
  80. }
  81. #endif
  82. #endif /* !Py_SETOBJECT_H */