polyglot.types
Class CachingResolver

java.lang.Object
  extended by polyglot.types.CachingResolver
All Implemented Interfaces:
Resolver, TopLevelResolver

public class CachingResolver
extends java.lang.Object
implements TopLevelResolver

An CachingResolver memoizes another Resolver


Field Summary
protected  java.util.Map cache
           
protected  ExtensionInfo extInfo
           
protected  TopLevelResolver inner
           
protected static java.lang.Object NOT_FOUND
           
protected  java.util.Map packageCache
           
protected static java.util.Collection TOPICS
           
 
Constructor Summary
CachingResolver(TopLevelResolver inner, ExtensionInfo extInfo)
          Create a caching resolver.
 
Method Summary
 void addNamed(java.lang.String name, Named q)
          Install a qualifier in the cache.
protected  void cachePackage(Package p)
           
 Named check(java.lang.String name)
          Check if a type object is in the cache, returning null if not.
 Type checkType(java.lang.String name)
          Check if a type is in the cache, returning null if not.
 Named find(java.lang.String name)
          Find a type object by name.
 TopLevelResolver inner()
          The resolver whose results this resolver caches.
 void install(java.lang.String name, Named q)
          Install a qualifier in the cache.
 boolean packageExists(java.lang.String name)
          Check if a package exists.
 java.lang.String toString()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

inner

protected TopLevelResolver inner

cache

protected java.util.Map cache

packageCache

protected java.util.Map packageCache

extInfo

protected ExtensionInfo extInfo

NOT_FOUND

protected static final java.lang.Object NOT_FOUND

TOPICS

protected static final java.util.Collection TOPICS
Constructor Detail

CachingResolver

public CachingResolver(TopLevelResolver inner,
                       ExtensionInfo extInfo)
Create a caching resolver.

Parameters:
inner - The resolver whose results this resolver caches.
Method Detail

inner

public TopLevelResolver inner()
The resolver whose results this resolver caches.


toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object

packageExists

public boolean packageExists(java.lang.String name)
Check if a package exists.

Specified by:
packageExists in interface TopLevelResolver

cachePackage

protected void cachePackage(Package p)

find

public Named find(java.lang.String name)
           throws SemanticException
Find a type object by name.

Specified by:
find in interface Resolver
Parameters:
name - The name to search for.
Throws:
SemanticException

checkType

public Type checkType(java.lang.String name)
Check if a type is in the cache, returning null if not.

Parameters:
name - The name to search for.

check

public Named check(java.lang.String name)
Check if a type object is in the cache, returning null if not.

Parameters:
name - The name to search for.

install

public void install(java.lang.String name,
                    Named q)
Install a qualifier in the cache.

Parameters:
name - The name of the qualifier to insert.
q - The qualifier to insert.

addNamed

public void addNamed(java.lang.String name,
                     Named q)
              throws SemanticException
Install a qualifier in the cache.

Parameters:
name - The name of the qualifier to insert.
q - The qualifier to insert.
Throws:
SemanticException