cython

Форк
0
/
ssize_t_T399.pyx 
72 строки · 1.2 Кб
1
# ticket: t399
2

3
__doc__ = u"""
4
>>> test(-2)
5
-2
6
>>> test(-1)
7
-1
8
>>> test(0)
9
0
10
>>> test(1)
11
1
12
>>> test(2)
13
2
14

15
>>> test(SSIZE_T_MAX) == SSIZE_T_MAX
16
True
17
>>> test(SSIZE_T_MIN) == SSIZE_T_MIN
18
True
19

20
>>> test(SSIZE_T_MAX+1) #doctest: +ELLIPSIS
21
Traceback (most recent call last):
22
    ...
23
OverflowError: ...
24
>>> test(SSIZE_T_MIN-1) #doctest: +ELLIPSIS
25
Traceback (most recent call last):
26
    ...
27
OverflowError: ...
28

29
>>> test(1<<128) #doctest: +ELLIPSIS
30
Traceback (most recent call last):
31
    ...
32
OverflowError: ...
33
>>> test(-(1<<128)) #doctest: +ELLIPSIS
34
Traceback (most recent call last):
35
    ...
36
OverflowError: ...
37

38
>>> a = A(1,2)
39
>>> a.a == 1
40
True
41
>>> a.b == 2
42
True
43
>>> a.foo(5)
44
5
45
>>> a.foo(1 << 180) #doctest: +ELLIPSIS
46
Traceback (most recent call last):
47
    ...
48
OverflowError: ...
49
"""
50

51
cdef extern from *:
52
    ctypedef long ssize_t # XXX This should generate a warning !!!
53
    ssize_t PY_SSIZE_T_MAX
54
    ssize_t PY_SSIZE_T_MIN
55

56
SSIZE_T_MAX = PY_SSIZE_T_MAX
57
SSIZE_T_MIN = PY_SSIZE_T_MIN
58

59
def test(ssize_t i):
60
    return i
61

62
cdef class A:
63
    cdef public ssize_t a
64
    cdef readonly ssize_t b
65

66
    def __init__(self, ssize_t a, object b):
67
        self.a = a
68
        self.b = b
69

70
    cpdef ssize_t foo(self, ssize_t x):
71
        cdef object o = x
72
        return o
73

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.