Skip to content

Commit

Permalink
LinkedList as common storage interface
Browse files Browse the repository at this point in the history
  • Loading branch information
youknowone committed Feb 2, 2016
1 parent 5b7a86f commit 65b3c1f
Showing 1 changed file with 56 additions and 34 deletions.
90 changes: 56 additions & 34 deletions aheui/aheui.py
Expand Up @@ -38,18 +38,11 @@ def __init__(self, next, value=bigint.fromlong(-1)):
self.next = next


class Stack(object):
"""Base data storage for Aheui, except for ieung and hieuh."""

def __init__(self):
self.head = None
self.size = 0
class LinkedList(object):
"""Common linked list for storages"""

def push(self, value):
# assert(isinstance(value, int))
node = Link(self.head, value)
self.head = node
self.size += 1
def __len__(self):
return self.size

def pop(self):
node = self.head
Expand All @@ -59,31 +52,15 @@ def pop(self):
self.size -= 1
return value

def pop_longlong(self):
big_r = self.pop()
r = bigint.tolonglong(big_r)
return r

def dup(self):
self.push(self.head.value)

def swap(self):
node1 = self.head
node2 = node1.next
node1.value, node2.value = node2.value, node1.value

# Tools for common methods. inline?

def _get_2_values(self):
return self.pop(), self.head.value

def _put_value(self, value):
self.head.value = value

# Common methods from here

def __len__(self):
return self.size
def pop_longlong(self):
big_r = self.pop()
r = bigint.tolonglong(big_r)
return r

def add(self):
r1, r2 = self._get_2_values()
Expand Down Expand Up @@ -117,7 +94,32 @@ def cmp(self):
self._put_value(big_r)


class Queue(Stack):
class Stack(LinkedList):
"""Base data storage for Aheui, except for ieung and hieuh."""

def __init__(self):
self.head = None
self.size = 0

def push(self, value):
# assert(isinstance(value, int))
node = Link(self.head, value)
self.head = node
self.size += 1

def dup(self):
self.push(self.head.value)

# Tools for common methods. inline?

def _get_2_values(self):
return self.pop(), self.head.value

def _put_value(self, value):
self.head.value = value


class Queue(LinkedList):

def __init__(self):
self.tail = Link(None)
Expand Down Expand Up @@ -145,8 +147,28 @@ def _put_value(self, value):
self.push(value)


class Port(Stack):
pass
class Port(LinkedList):

def __init__(self):
self.head = None
self.size = 0
self.last_push = 0

def push(self, value):
# assert(isinstance(value, int))
node = Link(self.head, value)
self.head = node
self.size += 1
self.last_push = value

def dup(self):
self.push(self.last_push)

def _get_2_values(self):
return self.pop(), self.head.value

def _put_value(self, value):
self.head.value = value


class Storage(object):
Expand Down

0 comments on commit 65b3c1f

Please sign in to comment.