MCPcopy Create free account
hub / github.com/codemistic/Data-Structures-and-Algorithms / Tbuffer

Class Tbuffer

Python/Turtle.py:816–850  ·  view source on GitHub ↗

Ring buffer used as undobuffer for RawTurtle objects.

Source from the content-addressed store, hash-verified

814
815
816class Tbuffer(object):
817 """Ring buffer used as undobuffer for RawTurtle objects."""
818 def __init__(self, bufsize=10):
819 self.bufsize = bufsize
820 self.buffer = [[None]] * bufsize
821 self.ptr = -1
822 self.cumulate = False
823 def reset(self, bufsize=None):
824 if bufsize is None:
825 for i in range(self.bufsize):
826 self.buffer[i] = [None]
827 else:
828 self.bufsize = bufsize
829 self.buffer = [[None]] * bufsize
830 self.ptr = -1
831 def push(self, item):
832 if self.bufsize > 0:
833 if not self.cumulate:
834 self.ptr = (self.ptr + 1) % self.bufsize
835 self.buffer[self.ptr] = item
836 else:
837 self.buffer[self.ptr].append(item)
838 def pop(self):
839 if self.bufsize > 0:
840 item = self.buffer[self.ptr]
841 if item is None:
842 return None
843 else:
844 self.buffer[self.ptr] = [None]
845 self.ptr = (self.ptr - 1) % self.bufsize
846 return (item)
847 def nr_of_items(self):
848 return self.bufsize - self.buffer.count([None])
849 def __repr__(self):
850 return str(self.buffer) + " " + str(self.ptr)
851
852
853

Callers 2

__init__Method · 0.85
setundobufferMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected