edu.vub.at.objects.natives
Class MethodDictionary

java.lang.Object
  extended byedu.vub.at.objects.natives.MethodDictionary
All Implemented Interfaces:
java.lang.Cloneable, java.util.Map, java.io.Serializable

public class MethodDictionary
extends java.lang.Object
implements java.util.Map, java.lang.Cloneable, java.io.Serializable

Instances of this class implement a dictionary mapping selectors to AmbientTalk methods. These method dictionaries are a traditional candidate for being shared among different clones of an object, improving the space efficiency of the language. The advantage of maps lies in the fact that they can be used implicitly to keep track of which objects were cloned from one another. As said above clones share the dictionaries. To ensure that this relation is upheld when one clone makes an idiosyncratic change, we store from which method dictionary the altered copy was created.

Author:
smostinc
See Also:
Serialized Form

Nested Class Summary
 
Nested classes inherited from class java.util.Map
java.util.Map.Entry
 
Field Summary
private static int _DEFAULT_SIZE_
           
private  java.util.HashMap methods_
           
private  MethodDictionary parent_
           
 
Constructor Summary
  MethodDictionary()
           
private MethodDictionary(java.util.HashMap methods, MethodDictionary parent)
           
 
Method Summary
 void clear()
           
protected  java.lang.Object clone()
           
 boolean containsKey(java.lang.Object key)
           
 boolean containsValue(java.lang.Object value)
           
 java.util.Set entrySet()
           
 java.lang.Object get(java.lang.Object key)
           
 boolean isDerivedFrom(MethodDictionary aMethodDictionary)
          Checks whether both MethodDictionaries are equal or whether the passed object is a MethodDictionary from which this one (indirectly) originates.
 boolean isEmpty()
           
 java.util.Set keySet()
           
 java.lang.Object put(java.lang.Object key, java.lang.Object value)
           
 void putAll(java.util.Map keyValuePairs)
           
 java.lang.Object remove(java.lang.Object key)
           
 int size()
           
 java.util.Collection values()
           
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface java.util.Map
equals, hashCode
 

Field Detail

_DEFAULT_SIZE_

private static final int _DEFAULT_SIZE_
See Also:
Constant Field Values

parent_

private MethodDictionary parent_

methods_

private java.util.HashMap methods_
Constructor Detail

MethodDictionary

public MethodDictionary()

MethodDictionary

private MethodDictionary(java.util.HashMap methods,
                         MethodDictionary parent)
Method Detail

clear

public void clear()
Specified by:
clear in interface java.util.Map

containsKey

public boolean containsKey(java.lang.Object key)
Specified by:
containsKey in interface java.util.Map

containsValue

public boolean containsValue(java.lang.Object value)
Specified by:
containsValue in interface java.util.Map

entrySet

public java.util.Set entrySet()
Specified by:
entrySet in interface java.util.Map

get

public java.lang.Object get(java.lang.Object key)
Specified by:
get in interface java.util.Map

isEmpty

public boolean isEmpty()
Specified by:
isEmpty in interface java.util.Map

keySet

public java.util.Set keySet()
Specified by:
keySet in interface java.util.Map

put

public java.lang.Object put(java.lang.Object key,
                            java.lang.Object value)
Specified by:
put in interface java.util.Map

putAll

public void putAll(java.util.Map keyValuePairs)
Specified by:
putAll in interface java.util.Map

remove

public java.lang.Object remove(java.lang.Object key)
Specified by:
remove in interface java.util.Map

size

public int size()
Specified by:
size in interface java.util.Map

values

public java.util.Collection values()
Specified by:
values in interface java.util.Map

clone

protected java.lang.Object clone()

isDerivedFrom

public boolean isDerivedFrom(MethodDictionary aMethodDictionary)
Checks whether both MethodDictionaries are equal or whether the passed object is a MethodDictionary from which this one (indirectly) originates.