summaryrefslogtreecommitdiffstats
path: root/Include/object.h
Commit message (Collapse)AuthorAgeFilesLines
* At Guido's suggestion, here's a new C API function, PyObject_Dir(), likeTim Peters2001-09-041-0/+8
| | | | __builtin__.dir(). Moved the guts from bltinmodule.c to object.c.
* Change the GC type flag since the API has changed. Allow types usingNeil Schemenauer2001-08-291-6/+10
| | | | the old flag to still compile.
* Add decl of PySuper_Type; fixup comments for the two other types.Guido van Rossum2001-08-241-2/+3
|
* Patch #445762: Support --disable-unicodeMartin v. Löwis2001-08-171-0/+2
| | | | | | | | - Do not compile unicodeobject, unicodectype, and unicodedata if Unicode is disabled - check for Py_USING_UNICODE in all places that use Unicode functions - disables unicode literals, and the builtin functions - add the types.StringTypes list - remove Unicode literals from most tests.
* Added comments before recently added/assigned slots in the type object,Fred Drake2001-08-151-0/+6
| | | | | so the backward compatibility issues will be easier to understand. I only added comments indicating additions and assignments back to Python 2.0.
* Add new flags for PyType_Ready(): READY to explicitly indicate theGuido van Rossum2001-08-101-0/+6
| | | | | | type is ready, and READYING to indicate that it is busy with the type. A recursive call is a fatal error.
* Implement PEP 238 in its (almost) full glory.Guido van Rossum2001-08-081-1/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | This introduces: - A new operator // that means floor division (the kind of division where 1/2 is 0). - The "future division" statement ("from __future__ import division) which changes the meaning of the / operator to implement "true division" (where 1/2 is 0.5). - New overloadable operators __truediv__ and __floordiv__. - New slots in the PyNumberMethods struct for true and floor division, new abstract APIs for them, new opcodes, and so on. I emphasize that without the future division statement, the semantics of / will remain unchanged until Python 3.0. Not yet implemented are warnings (default off) when / is used with int or long arguments. This has been on display since 7/31 as SF patch #443474. Flames to /dev/null.
* - Rename PyType_InitDict() to PyType_Ready().Guido van Rossum2001-08-071-1/+1
| | | | | | - Add an explicit call to PyType_Ready(&PyList_Type) to pythonrun.c (just for the heck of it, really -- we should either explicitly ready all types, or none).
* Patch #448194: Debuging negative reference counts.Martin v. Löwis2001-08-051-5/+6
|
* Merge of descr-branch back into trunk.Tim Peters2001-08-021-6/+58
|
* Mondo changes to the iterator stuff, without changing how Python codeGuido van Rossum2001-04-231-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | sees it (test_iter.py is unchanged). - Added a tp_iternext slot, which calls the iterator's next() method; this is much faster for built-in iterators over built-in types such as lists and dicts, speeding up pybench's ForLoop with about 25% compared to Python 2.1. (Now there's a good argument for iterators. ;-) - Renamed the built-in sequence iterator SeqIter, affecting the C API functions for it. (This frees up the PyIter prefix for generic iterator operations.) - Added PyIter_Check(obj), which checks that obj's type has a tp_iternext slot and that the proper feature flag is set. - Added PyIter_Next(obj) which calls the tp_iternext slot. It has a somewhat complex return condition due to the need for speed: when it returns NULL, it may not have set an exception condition, meaning the iterator is exhausted; when the exception StopIteration is set (or a derived exception class), it means the same thing; any other exception means some other error occurred.
* Iterators phase 1. This comprises:Guido van Rossum2001-04-201-4/+10
| | | | | | | | | | | | | | | | | | | | | | new slot tp_iter in type object, plus new flag Py_TPFLAGS_HAVE_ITER new C API PyObject_GetIter(), calls tp_iter new builtin iter(), with two forms: iter(obj), and iter(function, sentinel) new internal object types iterobject and calliterobject new exception StopIteration new opcodes for "for" loops, GET_ITER and FOR_ITER (also supported by dis.py) new magic number for .pyc files new special method for instances: __iter__() returns an iterator iteration over dictionaries: "for x in dict" iterates over the keys iteration over files: "for x in file" iterates over lines TODO: documentation test suite decide whether to use a different way to spell iter(function, sentinal) decide whether "for key in dict" is a good idea use iterators in map/filter/reduce, min/max, and elsewhere (in/not in?) speed tuning (make next() a slot tp_next???)
* The return value from PyObject_ClearWeakRefs() is no longer meaningful,Fred Drake2001-02-261-1/+1
| | | | so make it void.
* Use a type flag to determine the applicability of the tp_weaklistoffsetFred Drake2001-02-021-0/+7
| | | | | field. This should avoid binary incompatibility problems with older modules that have not been recompiled.
* Undo recent change that banned using import to bind a global, as perJeremy Hylton2001-02-011-0/+3
| | | | | | | | | | | discussion on python-dev. 'from mod import *' is still banned except at the module level. Fix value for special NOOPT entry in symtable. Initialze to 0 instead of None, so that later uses of PyInt_AS_LONG() are valid. (Bug reported by Donn Cave.) replace local REPR macros with PyObject_REPR in object.h
* PEP 205, Weak References -- initial checkin.Fred Drake2001-02-011-3/+5
|
* Add a flag to indicate the presence of the tp_richcompare field, andGuido van Rossum2001-01-241-2/+7
| | | | add it to the default flags.
* PyObject_Dump() -> _PyObject_Dump()Barry Warsaw2001-01-241-1/+1
|
* Add prototype for PyObject_Dump().Barry Warsaw2001-01-231-0/+1
|
* Get rid of the declaration for _PyCompareState_Key.Guido van Rossum2001-01-171-3/+0
|
* This patch adds a new builtin unistr() which behaves like str()Marc-André Lemburg2001-01-171-0/+1
| | | | | | | | | | except that it always returns Unicode objects. A new C API PyObject_Unicode() is also provided. This closes patch #101664. Written by Marc-Andre Lemburg. Copyright assigned to Guido van Rossum.
* Introduction to rich comparisons:Guido van Rossum2001-01-171-12/+22
| | | | | | | | | | | | | | - Removed the nb_add slot from the PyNumberMethods struct. - Renamed Py_TPFLAGS_NEWSTYLENUMBER to Py_TPFLAGS_CHECKTYPES. - Added typedef richcmpfunc. - Added tp_richcompare slot to PyTypeObject (replacing spare tp_xxx7). - Added APIs PyObject_RichCompare() and PyObject_RichCompareBool(). - Added rich comparison operators Py_LT through Py_GE.
* - Add nb_cmp slot for new style nubmers.Neil Schemenauer2001-01-041-0/+22
| | | | | - Define type flag for new style numbers. - Add Py_NotImplemented.
* Close SF bug 110826: a complaint about the way Python #define'd NULL.Tim Peters2000-09-101-7/+0
| | | | | | | | | | | | | | | It's hard to sort out what the bug was, exactly. So, Big Hammer: 1. Python shouldn't be in the business of #define'ing NULL, period. 2. Users of the Python C API shouldn't be in the business of not including Python.h, period. Hence: 1. Removed all #define's of NULL in Python source code (pyport.h and object.h). 2. Since we're *relying* on stdio.h defining NULL, put an #error in Python.h after its #include of stdio.h if NULL isn't defined then.
* REMOVED all CWI, CNRI and BeOpen copyright markings.Guido van Rossum2000-09-011-9/+0
| | | | This should match the situation in the 1.6b1 tree.
* The real suport for augmented assignment: new opcodes, new PyNumber andThomas Wouters2000-08-241-1/+18
| | | | PySequence methods and functions, new tokens.
* Spelling fixes supplied by Rob W. W. Hooft. All these are fixes in eitherThomas Wouters2000-07-161-3/+3
| | | | | | | | | | comments, docstrings or error messages. I fixed two minor things in test_winreg.py ("didn't" -> "Didn't" and "Didnt" -> "Didn't"). There is a minor style issue involved: Guido seems to have preferred English grammar (behaviour, honour) in a couple places. This patch changes that to American, which is the more prominent style in the source. I prefer English myself, so if English is preferred, I'd be happy to supply a patch myself ;)
* Remove legacy use of __SC__; no longer needed now that ANSI source isFred Drake2000-07-091-4/+0
| | | | the standard for Python implementation.
* One of the new prototypes was missing the "void" args.Greg Stein2000-07-081-1/+1
|
* Got RID of redundant coercions in longobject.c (as spotted by GregTim Peters2000-07-081-54/+54
| | | | | | | Stein -- thanks!). Incidentally removed all the Py_PROTO macros from object.h, as they prevented my editor from magically finding the definitions of the "coercion", "cmpfunc" and "reprfunc" typedefs that were being redundantly applied in longobject.c.
* Change copyright notice - 2nd try.Guido van Rossum2000-06-301-6/+0
|
* Change copyright notice.Guido van Rossum2000-06-301-22/+7
|
* This patch addresses two main issues: (1) There exist some non-fatalFred Drake2000-06-291-0/+4
| | | | | | | | | | | | | | | | | | | | errors in some of the hash algorithms. For exmaple, in float_hash and complex_hash a certain part of the value is not included in the hash calculation. See Tim's, Guido's, and my discussion of this on python-dev in May under the title "fix float_hash and complex_hash for 64-bit *nix" (2) The hash algorithms that use pointers (e.g. func_hash, code_hash) are universally not correct on Win64 (they assume that sizeof(long) == sizeof(void*)) As well, this patch significantly cleans up the hash code. It adds the two function _Py_HashDouble and _PyHash_VoidPtr that the various hashing routine are changed to use. These help maintain the hash function invariant: (a==b) => (hash(a)==hash(b))) I have added Lib/test/test_hash.py and Lib/test/output/test_hash to test this for some cases.
* part 2 of Neil Schemenauer's GC patches:Jeremy Hylton2000-06-231-0/+7
| | | | | | | | This patch modifies the type structures of objects that participate in GC. The object's tp_basicsize is increased when GC is enabled. GC information is prefixed to the object to maintain binary compatibility. GC objects also define the tp_flag Py_TPFLAGS_GC.
* Round 1 of Neil Schemenauer's GC patches:Jeremy Hylton2000-06-231-2/+8
| | | | | This patch adds the type methods traverse and clear necessary for GC implementation.
* Christian Tismer -- total rewrite on trashcan code.Guido van Rossum2000-04-241-2/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Improvements: - does no longer need any extra memory - has no relationship to tstate - works in debug mode - can easily be modified for free threading (hi Greg:) Side effects: Trashcan does change the order of object destruction. Prevending that would be quite an immense effort, as my attempts have shown. This version works always the same, with debug mode or not. The slightly changed destruction order should therefore be no problem. Algorithm: While the old idea of delaying the destruction of some obejcts at a certain recursion level was kept, we now no longer aloocate an object to hold these objects. The delayed objects are instead chained together via their ob_type field. The type is encoded via ob_refcnt. When it comes to the destruction of the chain of waiting objects, the topmost object is popped off the chain and revived with type and refcount 1, then it gets a normal Py_DECREF. I am confident that this solution is near optimum for minimizing side effects and code bloat.
* Fix PR#7 comparisons of recursive objectsJeremy Hylton2000-04-141-0/+3
| | | | | Note that comparisons of deeply nested objects can still dump core in extreme cases.
* Updated comment: in PyTypeObject:Fred Drake2000-03-211-1/+1
| | | | | | | | | | /* More standard operations (at end for binary compatibility) */ should now be: /* More standard operations (here for binary compatibility) */ since they're no longer at the end!
* Christian Tismer's "trashcan" patch:Guido van Rossum2000-03-131-0/+47
| | | | | | | | Added wrapping macros to dictobject.c, listobject.c, tupleobject.c, frameobject.c, traceback.c that safely prevends core dumps on stack overflow. Macros and functions in object.c, object.h. The method is an "elevator destructor" that turns cascading deletes into tail recursive behavior when some limit is hit.
* Got rid of silly "123456789-..." lines in comments.Guido van Rossum2000-03-011-12/+0
|
* Patch by Mozhe Zadka, for __contains__ (overloading 'in'). This addsGuido van Rossum2000-02-281-1/+7
| | | | | | a new proc type (objobjproc), a new slot sq_contains to PySequenceMethods, and a new flag Py_TPFLAGS_HAVE_SEQUENCE_IN to Py_TPFLAGS_DEFAULT. More to follow.
* The rest of the changes by Trent Mick and Dale Nagata for warning-freeGuido van Rossum2000-01-201-0/+1
| | | | compilation on NT Alpha. Mostly added casts etc.
* Add DL_IMPORT(returntype) for all officially exported functions.Guido van Rossum1998-12-041-24/+24
|
* Changes by Greg Stein (code) and GvR (design).Guido van Rossum1998-10-081-2/+35
| | | | | | | | | | | | | | | | | | | | | | | | Add a new member to the PyBufferProcs struct, bf_getcharbuffer. For backward compatibility, this member should only be used (this includes testing for NULL!) when the flag Py_TPFLAGS_HAVE_GETCHARBUFFER is set in the type structure, below. Note that if its flag is not set, we may be looking at an extension module compiled for 1.5.1, which will have garbage at the bf_getcharbuffer member (because the struct wasn't as long then). If the flag is one, the pointer may still be NULL. The function found at this member is used in a similar manner as bf_getreadbuffer, but it is known to point to 8-bit character data. (See discussion in getargs.c checked in later.) As a general feature for extending the type structure and the various structures that (may) hang off it in a backwards compatible way, we rename the tp_xxx4 "spare" slot to tp_flags. In 1.5.1 and before, this slot was always zero. In 1.5.1, it may contain various flags indicating extra fields that weren't present in 1.5.1. The only flag defined so far is for the bf_getcharbuffer member of the PyBufferProcs struct. Note that the new spares (tp_xxx5 - tp_xxx8), once they become used, should also be protected by a flag (or flags) in tp_flags.
* Add new spares to the end of the type object struct.Guido van Rossum1998-04-231-0/+6
|
* Add prototypes for Py_Repr{Enter,Leave}.Guido van Rossum1998-04-101-0/+4
| | | | (Jeremy will hardly recognize his patch :-)
* Add PyObject_Not().Guido van Rossum1998-04-091-0/+1
|
* Add declaration for PyNumber_CoerceEx().Guido van Rossum1997-11-191-0/+1
|
* #Added prototype for PyObject_HasAttr() -- must've been an oversight.Guido van Rossum1997-09-061-0/+1
|
* Fix in trailing comment: PyDict_SetItemString() does *not* consume a referenceFred Drake1997-09-051-3/+2
| | | | count, PyList_SetItem() does. Very confusing!