cython

Форк
0
/
ptrdiff_t.pyx 
55 строк · 1.1 Кб
1
from cython cimport typeof
2

3
def test(ptrdiff_t i):
4
    """
5
    >>> int(test(0))
6
    0
7
    >>> int(test(1))
8
    1
9
    >>> int(test(2))
10
    2
11
    >>> int(test(-1))
12
    -1
13
    >>> int(test(-2))
14
    -2
15
    >>> int(test((1<<31)-1))
16
    2147483647
17
    """
18
    return i
19

20
cdef class A:
21
    """
22
    >>> try: test(1<<200)
23
    ... except (OverflowError, TypeError): print("ERROR")
24
    ERROR
25

26
    >>> a = A(1,2)
27
    >>> a.a == 1
28
    True
29
    >>> a.b == 2
30
    True
31
    >>> print(a.foo(5))
32
    5
33
    >>> try: a.foo(1<<200)
34
    ... except (OverflowError, TypeError): print("ERROR")
35
    ERROR
36
    """
37
    cdef public ptrdiff_t a
38
    cdef readonly ptrdiff_t b
39

40
    def __init__(self, ptrdiff_t a, object b):
41
        self.a = a
42
        self.b = b
43

44
    cpdef ptrdiff_t foo(self, ptrdiff_t x):
45
        cdef object o = x
46
        return o
47

48
def test_types():
49
    """
50
    >>> test_types()
51
    """
52
    cdef int a = 1, b = 2
53
    assert typeof(&a - &b) == "ptrdiff_t", typeof(&a - &b)
54
    assert typeof((&a - &b) + 1) == "ptrdiff_t", typeof((&a - &b) + 1)
55
    assert typeof(&a + (&b - &a)) == "int *", typeof(&a + (&b - &a))
56

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

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

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

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