1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 """C{tail N}
19
20 The last N items of the input sequence are passed on as output. All other input
21 is ignored. N must be an integer.
22
23 """
24
25 import osh.core
26
27
30
31
33 """The last N items of the input sequence are passed on as output. All other input
34 is ignored. N must be an integer.
35 """
36 return _Tail().process_args(n)
37
39
40 _n = None
41 _tail = None
42 _p = None
43 _full = None
44
45
46
47
50
51
52
53
56
58 args = self.args()
59 self._n = args.next_int()
60 self._tail = [None for i in xrange(self._n)]
61 self._p = 0
62 self._full = False
63
65 if self._n > 0:
66 self._tail[self._p] = object
67 self._p += 1
68 if self._p == self._n:
69 self._full = True
70 self._p = 0
71
73 tail = self._tail
74 if self._full:
75 for i in xrange(self._p, self._n):
76 self.send(tail[i])
77 for i in xrange(self._p):
78 self.send(tail[i])
79 self.send_complete()
80