Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / third_party / cython / src / Cython / Includes / cpython / number.pxd
blobc41225d6732a610d31f0c75b831ce1eb5ab1c960
1 from cpython.ref cimport PyObject
3 cdef extern from "Python.h":
5     #####################################################################
6     # 6.2 Number Protocol
7     #####################################################################
9     bint PyNumber_Check(object o)
10     # Returns 1 if the object o provides numeric protocols, and false
11     # otherwise. This function always succeeds.
13     object PyNumber_Add(object o1, object o2)
14     # Return value: New reference.
15     # Returns the result of adding o1 and o2, or NULL on failure. This
16     # is the equivalent of the Python expression "o1 + o2".
18     object PyNumber_Subtract(object o1, object o2)
19     # Return value: New reference.
20     # Returns the result of subtracting o2 from o1, or NULL on
21     # failure. This is the equivalent of the Python expression "o1 -
22     # o2".
24     object PyNumber_Multiply(object o1, object o2)
25     # Return value: New reference.
26     # Returns the result of multiplying o1 and o2, or NULL on
27     # failure. This is the equivalent of the Python expression "o1 *
28     # o2".
30     object PyNumber_Divide(object o1, object o2)
31     # Return value: New reference.
32     # Returns the result of dividing o1 by o2, or NULL on
33     # failure. This is the equivalent of the Python expression "o1 /
34     # o2".
36     object PyNumber_FloorDivide(object o1, object o2)
37     # Return value: New reference.
38     # Return the floor of o1 divided by o2, or NULL on failure. This
39     # is equivalent to the ``classic'' division of integers.
41     object PyNumber_TrueDivide(object o1, object o2)
42     # Return value: New reference.
43     # Return a reasonable approximation for the mathematical value of
44     # o1 divided by o2, or NULL on failure. The return value is
45     # ``approximate'' because binary floating point numbers are
46     # approximate; it is not possible to represent all real numbers in
47     # base two. This function can return a floating point value when
48     # passed two integers.
50     object PyNumber_Remainder(object o1, object o2)
51     # Return value: New reference.
52     # Returns the remainder of dividing o1 by o2, or NULL on
53     # failure. This is the equivalent of the Python expression "o1 %
54     # o2".
56     object PyNumber_Divmod(object o1, object o2)
57     # Return value: New reference.
58     # See the built-in function divmod(). Returns NULL on
59     # failure. This is the equivalent of the Python expression
60     # "divmod(o1, o2)".
62     object PyNumber_Power(object o1, object o2, object o3)
63     # Return value: New reference.
64     # See the built-in function pow(). Returns NULL on failure. This
65     # is the equivalent of the Python expression "pow(o1, o2, o3)",
66     # where o3 is optional. If o3 is to be ignored, pass Py_None in
67     # its place (passing NULL for o3 would cause an illegal memory
68     # access).
70     object PyNumber_Negative(object o)
71     # Return value: New reference.
72     # Returns the negation of o on success, or NULL on failure. This
73     # is the equivalent of the Python expression "-o".
75     object PyNumber_Positive(object o)
76     # Return value: New reference.
77     # Returns o on success, or NULL on failure. This is the equivalent
78     # of the Python expression "+o".
80     object PyNumber_Absolute(object o)
81     # Return value: New reference.
82     # Returns the absolute value of o, or NULL on failure. This is the
83     # equivalent of the Python expression "abs(o)".
85     object PyNumber_Invert(object o)
86     # Return value: New reference.
87     # Returns the bitwise negation of o on success, or NULL on
88     # failure. This is the equivalent of the Python expression "~o".
90     object PyNumber_Lshift(object o1, object o2)
91     # Return value: New reference.
92     # Returns the result of left shifting o1 by o2 on success, or NULL
93     # on failure. This is the equivalent of the Python expression "o1
94     # << o2".
96     object PyNumber_Rshift(object o1, object o2)
97     # Return value: New reference.
98     # Returns the result of right shifting o1 by o2 on success, or
99     # NULL on failure. This is the equivalent of the Python expression
100     # "o1 >> o2".
102     object PyNumber_And(object o1, object o2)
103     # Return value: New reference.
104     # Returns the ``bitwise and'' of o1 and o2 on success and NULL on
105     # failure. This is the equivalent of the Python expression "o1 &
106     # o2".
108     object PyNumber_Xor(object o1, object o2)
109     # Return value: New reference.
110     # Returns the ``bitwise exclusive or'' of o1 by o2 on success, or
111     # NULL on failure. This is the equivalent of the Python expression
112     # "o1 ^ o2".
114     object PyNumber_Or(object o1, object o2)
115     # Return value: New reference.
116     # Returns the ``bitwise or'' of o1 and o2 on success, or NULL on failure. This is the equivalent of the Python expression "o1 | o2".
118     object PyNumber_InPlaceAdd(object o1, object o2)
119     # Return value: New reference.
120     # Returns the result of adding o1 and o2, or NULL on failure. The
121     # operation is done in-place when o1 supports it. This is the
122     # equivalent of the Python statement "o1 += o2".
124     object PyNumber_InPlaceSubtract(object o1, object o2)
125     # Return value: New reference.
126     # Returns the result of subtracting o2 from o1, or NULL on
127     # failure. The operation is done in-place when o1 supports
128     # it. This is the equivalent of the Python statement "o1 -= o2".
130     object PyNumber_InPlaceMultiply(object o1, object o2)
131     # Return value: New reference.
132     # Returns the result of multiplying o1 and o2, or NULL on
133     # failure. The operation is done in-place when o1 supports
134     # it. This is the equivalent of the Python statement "o1 *= o2".
136     object PyNumber_InPlaceDivide(object o1, object o2)
137     # Return value: New reference.
138     # Returns the result of dividing o1 by o2, or NULL on failure. The
139     # operation is done in-place when o1 supports it. This is the
140     # equivalent of the Python statement "o1 /= o2".
142     object PyNumber_InPlaceFloorDivide(object o1, object o2)
143     # Return value: New reference.
144     # Returns the mathematical floor of dividing o1 by o2, or NULL on
145     # failure. The operation is done in-place when o1 supports
146     # it. This is the equivalent of the Python statement "o1 //=
147     # o2".
149     object PyNumber_InPlaceTrueDivide(object o1, object o2)
150     # Return value: New reference.
151     # Return a reasonable approximation for the mathematical value of
152     # o1 divided by o2, or NULL on failure. The return value is
153     # ``approximate'' because binary floating point numbers are
154     # approximate; it is not possible to represent all real numbers in
155     # base two. This function can return a floating point value when
156     # passed two integers. The operation is done in-place when o1
157     # supports it.
159     object PyNumber_InPlaceRemainder(object o1, object o2)
160     # Return value: New reference.
161     # Returns the remainder of dividing o1 by o2, or NULL on
162     # failure. The operation is done in-place when o1 supports
163     # it. This is the equivalent of the Python statement "o1 %= o2".
165     object PyNumber_InPlacePower(object o1, object o2, object o3)
166     # Return value: New reference.
167     # See the built-in function pow(). Returns NULL on failure. The
168     # operation is done in-place when o1 supports it. This is the
169     # equivalent of the Python statement "o1 **= o2" when o3 is
170     # Py_None, or an in-place variant of "pow(o1, o2, o3)"
171     # otherwise. If o3 is to be ignored, pass Py_None in its place
172     # (passing NULL for o3 would cause an illegal memory access).
174     object PyNumber_InPlaceLshift(object o1, object o2)
175     # Return value: New reference.
176     # Returns the result of left shifting o1 by o2 on success, or NULL
177     # on failure. The operation is done in-place when o1 supports
178     # it. This is the equivalent of the Python statement "o1 <<= o2".
180     object PyNumber_InPlaceRshift(object o1, object o2)
181     # Return value: New reference.
182     # Returns the result of right shifting o1 by o2 on success, or
183     # NULL on failure. The operation is done in-place when o1 supports
184     # it. This is the equivalent of the Python statement "o1 >>= o2".
186     object PyNumber_InPlaceAnd(object o1, object o2)
187     # Return value: New reference.
188     # Returns the ``bitwise and'' of o1 and o2 on success and NULL on
189     # failure. The operation is done in-place when o1 supports
190     # it. This is the equivalent of the Python statement "o1 &= o2".
192     object PyNumber_InPlaceXor(object o1, object o2)
193     # Return value: New reference.
194     # Returns the ``bitwise exclusive or'' of o1 by o2 on success, or
195     # NULL on failure. The operation is done in-place when o1 supports
196     # it. This is the equivalent of the Python statement "o1 ^= o2".
198     object PyNumber_InPlaceOr(object o1, object o2)
199     # Return value: New reference.
200     # Returns the ``bitwise or'' of o1 and o2 on success, or NULL on
201     # failure. The operation is done in-place when o1 supports
202     # it. This is the equivalent of the Python statement "o1 |= o2".
204     int PyNumber_Coerce(PyObject **p1, PyObject **p2) except -1
205     # This function takes the addresses of two variables of type
206     # PyObject*. If the objects pointed to by *p1 and *p2 have the
207     # same type, increment their reference count and return 0
208     # (success). If the objects can be converted to a common numeric
209     # type, replace *p1 and *p2 by their converted value (with 'new'
210     # reference counts), and return 0. If no conversion is possible,
211     # or if some other error occurs, return -1 (failure) and don't
212     # increment the reference counts. The call PyNumber_Coerce(&o1,
213     # &o2) is equivalent to the Python statement "o1, o2 = coerce(o1,
214     # o2)".
216     object PyNumber_Int(object o)
217     # Return value: New reference.
218     # Returns the o converted to an integer object on success, or NULL
219     # on failure. If the argument is outside the integer range a long
220     # object will be returned instead. This is the equivalent of the
221     # Python expression "int(o)".
223     object PyNumber_Long(object o)
224     # Return value: New reference.
225     # Returns the o converted to a long integer object on success, or
226     # NULL on failure. This is the equivalent of the Python expression
227     # "long(o)".
229     object PyNumber_Float(object o)
230     # Return value: New reference.
231     # Returns the o converted to a float object on success, or NULL on
232     # failure. This is the equivalent of the Python expression
233     # "float(o)".
235     object PyNumber_Index(object o)
236     # Returns the o converted to a Python int or long on success or
237     # NULL with a TypeError exception raised on failure.
239     Py_ssize_t PyNumber_AsSsize_t(object o, object exc) except? -1
240     # Returns o converted to a Py_ssize_t value if o can be
241     # interpreted as an integer. If o can be converted to a Python int
242     # or long but the attempt to convert to a Py_ssize_t value would
243     # raise an OverflowError, then the exc argument is the type of
244     # exception that will be raised (usually IndexError or
245     # OverflowError). If exc is NULL, then the exception is cleared
246     # and the value is clipped to PY_SSIZE_T_MIN for a negative
247     # integer or PY_SSIZE_T_MAX for a positive integer.
249     bint PyIndex_Check "__Pyx_PyIndex_Check" (object)
250     # Returns True if o is an index integer (has the nb_index slot of
251     # the tp_as_number structure filled in).