# HG changeset patch # User Paul Boddie # Date 1105315515 -3600 # Node ID 7c84cbd6155b0d2bac5775276444b28b3c01c76b # Parent 0f97eefa94ea00d7301d145da2c7bb21c2fd2955 Added various collections, iterators and maps. diff -r 0f97eefa94ea -r 7c84cbd6155b java/util.py --- a/java/util.py Mon Jan 10 01:04:50 2005 +0100 +++ b/java/util.py Mon Jan 10 01:05:15 2005 +0100 @@ -5,9 +5,56 @@ class Collection(object): pass +class Iterator(object): + pass + class List(object): pass +class Map(object): + pass + +class Set(Collection): + pass + +# Abstract classes. + +class AbstractMap(Map): + pass + +class Dictionary(object): + pass + +# Exceptions. + +class NoSuchElementException(object): + pass + +# Special Python classes. + +class _Iterator(Iterator): + def __init__(self, iterator): + self.iterator = iterator + self.current = None + + def hasNext(self): + if self.current is None: + try: + self.current = self.iterator.next() + except StopIteration: + self.current = None + return 0 + return 1 + hasNext___ = hasNext + + def next(self): + if self.hasNext(): + current = self.current + self.current = None + return current + raise Exception, NoSuchElementException() + next___ = next + # Classes. class EventObject(object): @@ -19,13 +66,67 @@ # NOTE: Use Python conventions. return str(self) -class Hashtable(object): +class Hashtable(Dictionary): def __init__(self, *args): # NOTE: To be implemented. pass setattr(Hashtable, "__init_____", Hashtable.__init__) +class HashMap(AbstractMap): + def __init__(self, *args): + self.d = {} + + def init_____java__util__Map(self, map): + self.d = {} + iterator = map.keySet().iterator() + while iterator.hasNext(): + key = iterator.next() + value = map.get(key) + self.d[key] = value + + def get(self, key): + return self.d[key] + get___java__lang__Object = get + + def keySet(self): + return HashSet(self.d.keys()) + keySet___ = keySet + + def put(self, key, value): + self.d[key] = value + put___java__lang__Object___java__lang__Object = put + + # Python helper methods. + + def __getitem__(self, key): + return self.d[key] + + def __setitem__(self, key, value): + self.d[key] = value + + def keys(self): + return self.d.keys() + + def values(self): + return self.d.values() + + def items(self): + return self.d.items() + +setattr(HashMap, "__init_____", HashMap.__init__) +setattr(HashMap, "__init_____java__util__Map", HashMap.init_____java__util__Map) + +class HashSet(Set): + def __init__(self): + self.s = [] + + def iterator(self): + return _Iterator(iter(self.s)) + iterator___ = iterator + +setattr(HashSet, "__init_____", HashSet.__init__) + class ResourceBundle(object): def __init__(self, *args): # NOTE: To be implemented.