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: