summaryrefslogtreecommitdiff
path: root/docs/examples/userguide/early_binding_for_speed
diff options
context:
space:
mode:
Diffstat (limited to 'docs/examples/userguide/early_binding_for_speed')
-rw-r--r--docs/examples/userguide/early_binding_for_speed/rectangle.py22
-rw-r--r--docs/examples/userguide/early_binding_for_speed/rectangle.pyx3
-rw-r--r--docs/examples/userguide/early_binding_for_speed/rectangle_cdef.py26
-rw-r--r--docs/examples/userguide/early_binding_for_speed/rectangle_cdef.pyx4
-rw-r--r--docs/examples/userguide/early_binding_for_speed/rectangle_cpdef.py23
-rw-r--r--docs/examples/userguide/early_binding_for_speed/rectangle_cpdef.pyx6
6 files changed, 83 insertions, 1 deletions
diff --git a/docs/examples/userguide/early_binding_for_speed/rectangle.py b/docs/examples/userguide/early_binding_for_speed/rectangle.py
new file mode 100644
index 000000000..cd534d051
--- /dev/null
+++ b/docs/examples/userguide/early_binding_for_speed/rectangle.py
@@ -0,0 +1,22 @@
+@cython.cclass
+class Rectangle:
+ x0: cython.int
+ y0: cython.int
+ x1: cython.int
+ y1: cython.int
+
+ def __init__(self, x0: cython.int, y0: cython.int, x1: cython.int, y1: cython.int):
+ self.x0 = x0
+ self.y0 = y0
+ self.x1 = x1
+ self.y1 = y1
+
+ def area(self):
+ area = (self.x1 - self.x0) * (self.y1 - self.y0)
+ if area < 0:
+ area = -area
+ return area
+
+def rectArea(x0, y0, x1, y1):
+ rect = Rectangle(x0, y0, x1, y1)
+ return rect.area()
diff --git a/docs/examples/userguide/early_binding_for_speed/rectangle.pyx b/docs/examples/userguide/early_binding_for_speed/rectangle.pyx
index de70b0263..b58f6534b 100644
--- a/docs/examples/userguide/early_binding_for_speed/rectangle.pyx
+++ b/docs/examples/userguide/early_binding_for_speed/rectangle.pyx
@@ -1,7 +1,10 @@
+
cdef class Rectangle:
cdef int x0, y0
cdef int x1, y1
+
+
def __init__(self, int x0, int y0, int x1, int y1):
self.x0 = x0
self.y0 = y0
diff --git a/docs/examples/userguide/early_binding_for_speed/rectangle_cdef.py b/docs/examples/userguide/early_binding_for_speed/rectangle_cdef.py
new file mode 100644
index 000000000..ee2a14fb8
--- /dev/null
+++ b/docs/examples/userguide/early_binding_for_speed/rectangle_cdef.py
@@ -0,0 +1,26 @@
+@cython.cclass
+class Rectangle:
+ x0: cython.int
+ y0: cython.int
+ x1: cython.int
+ y1: cython.int
+
+ def __init__(self, x0: cython.int, y0: cython.int, x1: cython.int, y1: cython.int):
+ self.x0 = x0
+ self.y0 = y0
+ self.x1 = x1
+ self.y1 = y1
+
+ @cython.cfunc
+ def _area(self) -> cython.int:
+ area: cython.int = (self.x1 - self.x0) * (self.y1 - self.y0)
+ if area < 0:
+ area = -area
+ return area
+
+ def area(self):
+ return self._area()
+
+def rectArea(x0, y0, x1, y1):
+ rect: Rectangle = Rectangle(x0, y0, x1, y1)
+ return rect._area()
diff --git a/docs/examples/userguide/early_binding_for_speed/rectangle_cdef.pyx b/docs/examples/userguide/early_binding_for_speed/rectangle_cdef.pyx
index 1933326d2..3b64d766b 100644
--- a/docs/examples/userguide/early_binding_for_speed/rectangle_cdef.pyx
+++ b/docs/examples/userguide/early_binding_for_speed/rectangle_cdef.pyx
@@ -1,13 +1,17 @@
+
cdef class Rectangle:
cdef int x0, y0
cdef int x1, y1
+
+
def __init__(self, int x0, int y0, int x1, int y1):
self.x0 = x0
self.y0 = y0
self.x1 = x1
self.y1 = y1
+
cdef int _area(self):
cdef int area = (self.x1 - self.x0) * (self.y1 - self.y0)
if area < 0:
diff --git a/docs/examples/userguide/early_binding_for_speed/rectangle_cpdef.py b/docs/examples/userguide/early_binding_for_speed/rectangle_cpdef.py
new file mode 100644
index 000000000..670f340a4
--- /dev/null
+++ b/docs/examples/userguide/early_binding_for_speed/rectangle_cpdef.py
@@ -0,0 +1,23 @@
+@cython.cclass
+class Rectangle:
+ x0: cython.int
+ y0: cython.int
+ x1: cython.int
+ y1: cython.int
+
+ def __init__(self, x0: cython.int, y0: cython.int, x1: cython.int, y1: cython.int):
+ self.x0 = x0
+ self.y0 = y0
+ self.x1 = x1
+ self.y1 = y1
+
+ @cython.ccall
+ def area(self)-> cython.int:
+ area: cython.int = (self.x1 - self.x0) * (self.y1 - self.y0)
+ if area < 0:
+ area = -area
+ return area
+
+def rectArea(x0, y0, x1, y1):
+ rect: Rectangle = Rectangle(x0, y0, x1, y1)
+ return rect.area()
diff --git a/docs/examples/userguide/early_binding_for_speed/rectangle_cpdef.pyx b/docs/examples/userguide/early_binding_for_speed/rectangle_cpdef.pyx
index f8b7d86a8..53f2a8ad2 100644
--- a/docs/examples/userguide/early_binding_for_speed/rectangle_cpdef.pyx
+++ b/docs/examples/userguide/early_binding_for_speed/rectangle_cpdef.pyx
@@ -1,15 +1,19 @@
+
cdef class Rectangle:
cdef int x0, y0
cdef int x1, y1
+
+
def __init__(self, int x0, int y0, int x1, int y1):
self.x0 = x0
self.y0 = y0
self.x1 = x1
self.y1 = y1
+
cpdef int area(self):
- area = (self.x1 - self.x0) * (self.y1 - self.y0)
+ cdef int area = (self.x1 - self.x0) * (self.y1 - self.y0)
if area < 0:
area = -area
return area