- Rough First Pass implementation for format.h
- Started 2D Transform Component and relevant math extensions - Switched sequence to use pointers instead of arrays
This commit is contained in:
@@ -524,6 +524,65 @@ class BinTreePrinter:
|
||||
return self.Iterator(self.tree, self.root, self.capacity)
|
||||
|
||||
|
||||
# SEQUENCE =============================================================================================================
|
||||
|
||||
class SequencePrinter:
|
||||
"""Print a fennec::sequence"""
|
||||
|
||||
class Iterator:
|
||||
def __init__(self, node):
|
||||
self.visit = deque()
|
||||
|
||||
if node is not None:
|
||||
self.visit.append((node, 0, 0))
|
||||
|
||||
def __iter__(self):
|
||||
return self
|
||||
|
||||
def __next__(self):
|
||||
if len(self.visit) == 0:
|
||||
raise StopIteration
|
||||
|
||||
node = self.visit[0][0]
|
||||
i = self.visit[0][1]
|
||||
depth = self.visit[0][2]
|
||||
self.visit.popleft()
|
||||
|
||||
value = node['key']
|
||||
left = node['child'][0]
|
||||
right = node['child'][1]
|
||||
print("it: ", node, " ", left, " ", right);
|
||||
|
||||
if right != 0:
|
||||
self.visit.appendleft((right, 1, depth + 1))
|
||||
if left != 0:
|
||||
self.visit.appendleft((left, 0, depth + 1))
|
||||
|
||||
index = '⠀' * depth * 2 # Uses Braille Space, otherwise it would get eaten as whitespace by parsers
|
||||
if i == 0:
|
||||
index += '├'
|
||||
else:
|
||||
index += '└'
|
||||
|
||||
index += '─'
|
||||
index += '[{}]'.format(node)
|
||||
return index, value
|
||||
|
||||
|
||||
def __init__(self, val):
|
||||
self.size = val['_size']
|
||||
self.root = val['_root']
|
||||
|
||||
def to_string(self):
|
||||
if self.size == 0:
|
||||
return "{ empty }"
|
||||
return "{ size = " + str(self.size) + " }"
|
||||
|
||||
def children(self):
|
||||
print("root: ", self.root)
|
||||
return self.Iterator(self.root)
|
||||
|
||||
|
||||
# Graph ================================================================================================================
|
||||
|
||||
class GraphPrinter:
|
||||
@@ -611,7 +670,7 @@ def register_printers():
|
||||
pp.add_printer('fennec::set', '^fennec::set<.*>$', SetPrinter)
|
||||
pp.add_printer('fennec::rdtree', '^fennec::rdtree<.*>$', RDTreePrinter)
|
||||
pp.add_printer('fennec::bintree', '^fennec::bintree<.*>$', BinTreePrinter)
|
||||
pp.add_printer('fennec::sequence', '^fennec::sequence<.*>$', BinTreePrinter)
|
||||
pp.add_printer('fennec::sequence', '^fennec::sequence<.*>$', SequencePrinter)
|
||||
pp.add_printer('fennec::priority_queue', '^fennec::priority_queue<.*>$', PriorityQueuePrinter)
|
||||
pp.add_printer('fennec::tuple', '^fennec::tuple<.*>$', TuplePrinter)
|
||||
return pp
|
||||
|
||||
Reference in New Issue
Block a user