6.2.2. Stack

6.2.2. Stack

Simple stack class.
Start python section to interscript/core/stacks.py[1]
     1: #line 5 "stacks.ipk"
     2: class stack:
     3:   __class_protocols__ = ['sequence','mutable']
     4:   def __init__(self, *args): self.s = list(args)
     5:   def pop(self):
     6:     tmp = self.s[-1]
     7:     del self.s[-1]
     8:     return tmp
     9:   def push(self,x): self.s.append(x)
    10:   def append(self,x): self.s.append(x)
    11:   def __len__(self): return len(self.s)
    12:   def __nonzero__(self): return len(self.s)!=0
    13:   def __getitem__(self,index): return self.s[index]
    14:   def __setitem__(self,index,value): self.s[index]=value
    15:   def __delitem__(self,index): del self.s[index]
    16:   def __getslice__(self,i,j): return self.s[i:j]
    17:   def __setslice__(self,i,j,seq): self.s[i:j]=seq
    18:   def __delslice__(self,i,j): del self.s[i:j]
    19:   def __mul__(self,i): return apply(stack, tuple(self.s * i))
    20:   def __rmul__(self,i): return apply(stack, tuple(self.s * i))
    21:   def __add__(self,s): return apply(stack, tuple(self.s + s.s))
    22:   def __cmp__(self, other): return cmp(self.s,other.s)
    23:   def __repr__(self):
    24:     s = 'stack('
    25:     if self.s: s = s + repr(self.s[0])
    26:     for i in self.s[1:]: s = s + ', '+repr(i)
    27:     return s+')'
    28: 
    29:   def __setattr__(self,attr,value):
    30:     if attr == 'top':
    31:       self.s[-1]=value
    32:     else:
    33:       self.__dict__[attr]=value
    34: 
    35:   def __getattr__(self,attr):
    36:     if attr=='top':
    37:       return self.s[-1]
    38:     else:
    39:       raise AttributeError,attr
    40: 
    41:   def __delattr__(self,attr):
    42:     if attr=='top':
    43:       del self.s[-1]
    44:     else:
    45:       raise AttributeError,attr
    46: 
    47:   def copy(self): return apply(stack,tuple(self.s))
    48:   def count(self, item): return self.s.count(item)
    49:   def index(self, item): return self.s.index(item)
    50:   def sort(self, order=None):
    51:     if order == None:
    52:       self.s.sort()
    53:     else:
    54:       self.s.sort(order)
    55:   def insert(self,index,item): self.s.insert(index,item)
    56:   def remove(self,item): self.s.remove(item)
    57:   def reverse(self): self.s.reverse()
    58: 
End python section to interscript/core/stacks.py[1]