kmy.jint.reflect
Class JintClassTable

java.lang.Object
  |
  +--kmy.jint.reflect.JintClassTable

public class JintClassTable
extends java.lang.Object
implements DefinitionConst, ErrorCodes


Inner Class Summary
(package private)  class JintClassTable.JintClassConsumer
           
 
Field Summary
 AbstractClass abstractContainerClass
           
 AbstractClass abstractListClass
           
(package private)  boolean alreadyCompleting
           
 AbstractClass anyClass
           
 AbstractClass arglistClass
           
 AbstractClass booleanClass
           
 AbstractClass booleanType
           
 AbstractClass byteClass
           
 AbstractClass byteType
           
private  boolean canListPackages
           
 AbstractClass caseInsensitiveRegexClass
           
 AbstractClass characterClass
           
 AbstractClass charStringClass
           
 AbstractClass charType
           
 AbstractClass charTypeArray
           
 AbstractClass classClass
           
(package private)  java.util.Hashtable classNodeTable
           
 AbstractClass cloneableClass
           
 AbstractClass dictionaryClass
           
 AbstractClass doubleClass
           
 AbstractClass doubleType
           
 AbstractClass errorClass
           
 AbstractClass exceptionClass
           
 AbstractClass[] exceptionClassArr
           
 AbstractClass floatClass
           
 AbstractClass floatType
           
 AbstractClass formatterClass
           
private  java.util.Hashtable importCaches
          maps import IdentifierNodes to their cache tables
 Identifier INIT
           
 AbstractClass integerClass
           
 AbstractClass intType
           
private  java.util.Hashtable javaLangCache
           
(package private)  IdentifierNode javaLangImport
           
private  boolean javaOnlyClasses
           
private  boolean jvmClassesEnabled
           
(package private)  IdentifierNode kmyJintLangImport
           
private  java.lang.Object lock
           
 AbstractClass longClass
           
 AbstractClass longType
           
private  boolean looseExceptionCheck
           
(package private)  NameTable nameTable
           
(package private)  boolean noLongTypes
           
private static java.lang.Object NOT_THERE
           
 AbstractClass numberClass
           
 AbstractClass objectClass
           
 AbstractClass regexClass
           
 AbstractClass regexStubClass
           
 AbstractClass replacerClass
           
 AbstractClass runtimeExceptionClass
           
(package private)  boolean scopeMode
           
 AbstractClass serializableClass
           
 AbstractClass shortClass
           
 AbstractClass shortType
           
(package private)  SourceFactory sourceFactory
           
(package private)  SourceFactory sourceFactry
           
(package private)  java.util.Stack startStack
           
private  boolean startUp
           
 AbstractClass stringClass
           
(package private)  java.util.Hashtable table
           
 AbstractClass throwableClass
           
 ClassUtilities utilities
           
 AbstractClass vectorClass
           
 AbstractClass voidType
           
(package private)  AbstractClass worldClass
           
 
Fields inherited from interface kmy.jint.constants.DefinitionConst
ABSTRACT_FLAG, ACC_ABSTRACT, ACC_FINAL, ACC_INTERFACE, ACC_MASK, ACC_NATIVE, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_STATIC, ACC_SUPER, ACC_SYNCHRONIZED, ACC_TRANSIENT, ACC_VOLATILE, CONST_FLAG, EXPLICIT_FLAG, FINAL_FLAG, INTERFACE_FLAG, METHOD_SCOPE_FLAG, MUST_BE_CLASS_FLAG, NATIVE_FLAG, PACKAGE_PRIVATE_FLAG, PRIVATE_FLAG, PROTECTED_FLAG, PUBLIC_FLAG, SCRIPT_STYLE_FLAG, SELF_USED_FLAG, STATIC_FLAG, STRICT_FLAG, SYNCHRONIZED_FLAG, TRANSIENT_FLAG, VOLATILE_FLAG, WHERE_FLAG, WORLD_FLAG
 
Fields inherited from interface kmy.jint.constants.ErrorCodes
ERR_A_ARREMPTY, ERR_A_ARRNOTEMPTY, ERR_A_BADDCL, ERR_A_BADMETHODNAME, ERR_A_BADOP, ERR_A_BADSWITCHTYPE, ERR_A_BOOLCAST, ERR_A_CANTACCLABEL, ERR_A_CANTCAST, ERR_A_CANTMAKEARR, ERR_A_CANTRESOLVE, ERR_A_CONSTERROR, ERR_A_EXPLCONTEXT, ERR_A_FIELDNOTIDENT, ERR_A_FIELDNOTSTAT, ERR_A_IMPLICITDCL, ERR_A_INSTOFPRIM1, ERR_A_INSTOFPRIM2, ERR_A_INTERNAL, ERR_A_LABELREDEF, ERR_A_MATCHARG1, ERR_A_MATCHARG2, ERR_A_MUSTBEBOOL, ERR_A_NEVER, ERR_A_NEWARRARGS, ERR_A_NOBESTMATCH, ERR_A_NOCONSTRUCTOR, ERR_A_NOFIELD, ERR_A_NOMETHOD, ERR_A_NONSTATICACC, ERR_A_NOOUTERCLASS, ERR_A_NOTCAUGHT, ERR_A_NOTINDEXABLE, ERR_A_NOTINTARGS, ERR_A_NOTINTEGER, ERR_A_NOTLVALUE, ERR_A_NOTNUMBER, ERR_A_NOTSIMPLEID, ERR_A_NOTTHROWABLE, ERR_A_NOTTHROWN, ERR_A_NOVAR, ERR_A_OBJTOPRIMCAST, ERR_A_PARAMUNRES, ERR_A_PRIMSYNC, ERR_A_PRIMTOOBJCAST, ERR_A_REGEXTE, ERR_A_STATICTHIS, ERR_A_TOBOOLCAST, ERR_A_TOVOIDCAST, ERR_A_TYPEMISMATCH, ERR_A_TYPENOTFOUND, ERR_A_VARREDECL, ERR_A_VOIDCAST, ERR_C_BADOP, ERR_C_CANTASSIGN, ERR_C_CASEMISMATCH, ERR_C_CVTNULLTOPRIM, ERR_C_DUPCASE, ERR_C_GENERIC, ERR_C_INTERFCONSTR, ERR_C_INTERNAL, ERR_C_MATCHARG1, ERR_C_NESTING, ERR_C_NEVER, ERR_C_NOCNSTRWOPRM, ERR_C_NOENCLOSING, ERR_C_NONSTATINIT, ERR_C_NOTBOOL, ERR_C_PICKEDNONSTR, ERR_C_PRIMELEM, ERR_C_RETURNREQ, ERR_C_THISASSIGN, ERR_C_TWODEFAULT, ERR_L_BACKSLASHEOF, ERR_L_CHAREND, ERR_L_COMMENTEND, ERR_L_EMPTYCHAR, ERR_L_EOFINCHAR, ERR_L_EOFINREGEX, ERR_L_EOFINSTRING, ERR_L_ILLEGALCHAR, ERR_L_IOERROR, ERR_L_NEVER, ERR_L_NUMFORMAT, ERR_L_REGEXEND, ERR_L_STRINGEND, ERR_P_ARRNOTEMPTY, ERR_P_CASEEXPECTED, ERR_P_CATCHEXPECTED, ERR_P_CLASSKEYWORD, ERR_P_DUPEXTENDS, ERR_P_DUPIMPLEMENTS, ERR_P_IDENTEXPECTED, ERR_P_NOTIMPL, ERR_P_NOTSTANDALONE, ERR_P_OPEXPECTED, ERR_P_REGEXEXPECTED, ERR_P_TOKENEXPECTED, ERR_P_TOKENINSERTED, ERR_P_TYPEEXPECTED, ERR_P_UNEXPECTED, ERR_P_VALUEEXPECTED, ERR_P_VAREXPECTED, ERR_T_ARRNOTEMPTY, ERR_T_CANTRESOLVE, ERR_T_IDEXPECTED, ERR_T_INTERNAL, ERR_T_MULTIINHERIT, ERR_T_NOTLIST, ERR_T_NOTSIMPLEID, ERR_T_ONFINISH
 
Fields inherited from interface kmy.jint.constants.MiniErrorCodes
ERR_F_BADEND, ERR_F_BADFORMATCHAR, ERR_F_GENERIC, ERR_F_INCOMPLETE, ERR_F_NOCURLBRACKET, ERR_F_NOTWITHJAVA, ERR_F_NOVARNAME, ERR_MASK_CLASSTABLE, ERR_MASK_COMPILER, ERR_MASK_ERROR, ERR_MASK_FATAL, ERR_MASK_FORMAT, ERR_MASK_GENERATOR, ERR_MASK_INFO, ERR_MASK_INTERNAL, ERR_MASK_LEXER, ERR_MASK_MODULE, ERR_MASK_PARSER, ERR_MASK_REGEX, ERR_MASK_SEVERITY, ERR_MASK_TYPER, ERR_MASK_VERBOSE, ERR_MASK_WARNING, ERR_R_BADBACKREF, ERR_R_BADSTART, ERR_R_BQBAD, ERR_R_BQUNFINISHED, ERR_R_CTLINVALID, ERR_R_CTLUNFINISHED, ERR_R_EXTRABRACKET, ERR_R_GENERIC, ERR_R_HEXBADNUMBER, ERR_R_HEXUNFINISHED, ERR_R_INTERNAL, ERR_R_NOBRACKET, ERR_R_NOCURLBRACKET, ERR_R_NOSQBRACKET, ERR_R_NOVAREXPR, ERR_R_NOVARNAME, ERR_R_STRAYBSLASH
 
Constructor Summary
JintClassTable(NameTable nameTable)
           
JintClassTable(NameTable nameTable, boolean canListPackages, boolean javaOnlyClasses, SourceFactory sourceFactory)
           
 
Method Summary
 boolean canAssign(AbstractClass value, AbstractClass var)
           
 void completeAllScopes()
           
 void completeScope(BasicNode baseNode)
           
protected  AbstractClass createClass(QualifiedIdentifier name, java.lang.Class clazz)
          Called when someone wants to find some new class
 JintClass createEmptyClass(AbstractClass outer, QualifiedIdentifier fullName)
           
protected  AbstractClass createJVMClass(QualifiedIdentifier name, java.lang.Class clazz)
           
 void finishStartUp()
           
 AbstractClass getClass(AbstractClass scope, Identifier[] idList, IdentifierNode[] imports)
           
 AbstractClass getClass(AbstractClass scope, Identifier[] idList, int off, int length, IdentifierNode[] imports)
           
(package private)  AbstractClass getClass(AbstractClass scope, IdentifierNode[] imports, java.util.Hashtable importCache, IdentifierNode ident)
           
 AbstractClass getClass(java.lang.Class clazz)
           
 AbstractClass getClass(Identifier shortName, IdentifierNode[] imports)
           
 AbstractClass getClass(QualifiedIdentifier name)
           
 AbstractClass getClass(QualifiedIdentifier name, java.lang.Class clazz)
           
 AbstractClass getClass(java.lang.String descriptor)
           
 AbstractClass getClass(java.lang.String descriptor, java.lang.Class clazz)
           
 ClassConsumer getClassConsumer()
           
private  java.util.Hashtable getImportCache(IdentifierNode imp)
           
 boolean getLooseExceptionCheck()
           
 NameTable getNameTable()
           
 boolean getNoLongTypes()
           
 int getSize(AbstractClass ac)
           
 AbstractClass getWorld()
           
 AbstractClass getWrappedType(AbstractClass clazz)
           
 AbstractClass getWrapper(AbstractClass clazz)
           
 void init()
           
 boolean isStartUp()
           
(package private)  QualifiedIdentifier locateClass(AbstractClass scope, IdentifierNode[] imports, java.util.Hashtable importCache, IdentifierNode ident, JintClassTable.JintClassConsumer consumer)
           
(package private)  QualifiedIdentifier[] locateClassList(AbstractClass scope, IdentifierNode[] imports, java.util.Hashtable importCache, IdentifierNode[] ident, JintClassTable.JintClassConsumer consumer, ErrorStorage errorStorage)
           
(package private)  QualifiedIdentifier[] locateClassList(AbstractClass scope, IdentifierNode[] imports, java.util.Hashtable importCache, ParameterNode[] params, JintClassTable.JintClassConsumer consumer, ErrorStorage errorStorage)
           
(package private)  QualifiedIdentifier locateSimpleClass(AbstractClass scope, IdentifierNode[] imports, java.util.Hashtable importCache, IdentifierNode ident, JintClassTable.JintClassConsumer consumer)
           
protected  AbstractClass lookupClass(QualifiedIdentifier name)
           
private  AbstractClass lookupInImport(IdentifierNode imp, Identifier shortName)
           
private  void processDefs(JintClass newClass, int modifiers, QualifiedIdentifier type, ExpressionNode[] defs)
           
private  boolean processMethod(Identifier className, JintClass newClass, Identifier methodName, MethodNode methodNode, java.util.Hashtable importCache, IdentifierNode[] imports)
           
 void registerClass(AbstractClass aClass)
           
protected  void registerClass(AbstractClass aClass, boolean force)
           
 void setJVMClassesEnabled(boolean jvmClassesEnabled)
           
 void setLooseExceptionCheck(boolean t)
           
 void setNoLongTypes(boolean noLongTypes)
           
 void setSourceFactory(SourceFactory sf)
           
 void setWorld(AbstractClass world)
           
(package private)  void throwCantResolve(IdentifierNode ident, AbstractClass scope)
           
 
Methods inherited from class java.lang.Object
, clone, equals, finalize, getClass, hashCode, notify, notifyAll, registerNatives, toString, wait, wait, wait
 

Field Detail

table

java.util.Hashtable table

nameTable

NameTable nameTable

noLongTypes

boolean noLongTypes

NOT_THERE

private static java.lang.Object NOT_THERE

lock

private java.lang.Object lock

jvmClassesEnabled

private boolean jvmClassesEnabled

canListPackages

private boolean canListPackages

javaOnlyClasses

private boolean javaOnlyClasses

looseExceptionCheck

private boolean looseExceptionCheck

importCaches

private java.util.Hashtable importCaches
maps import IdentifierNodes to their cache tables

javaLangCache

private java.util.Hashtable javaLangCache

startUp

private boolean startUp

INIT

public Identifier INIT

intType

public AbstractClass intType

byteType

public AbstractClass byteType

charType

public AbstractClass charType

shortType

public AbstractClass shortType

doubleType

public AbstractClass doubleType

floatType

public AbstractClass floatType

longType

public AbstractClass longType

booleanType

public AbstractClass booleanType

voidType

public AbstractClass voidType

numberClass

public AbstractClass numberClass

integerClass

public AbstractClass integerClass

byteClass

public AbstractClass byteClass

characterClass

public AbstractClass characterClass

shortClass

public AbstractClass shortClass

doubleClass

public AbstractClass doubleClass

floatClass

public AbstractClass floatClass

longClass

public AbstractClass longClass

booleanClass

public AbstractClass booleanClass

objectClass

public AbstractClass objectClass

cloneableClass

public AbstractClass cloneableClass

serializableClass

public AbstractClass serializableClass

stringClass

public AbstractClass stringClass

throwableClass

public AbstractClass throwableClass

exceptionClass

public AbstractClass exceptionClass

errorClass

public AbstractClass errorClass

runtimeExceptionClass

public AbstractClass runtimeExceptionClass

arglistClass

public AbstractClass arglistClass

classClass

public AbstractClass classClass

anyClass

public AbstractClass anyClass

regexClass

public AbstractClass regexClass

regexStubClass

public AbstractClass regexStubClass

replacerClass

public AbstractClass replacerClass

formatterClass

public AbstractClass formatterClass

charStringClass

public AbstractClass charStringClass

charTypeArray

public AbstractClass charTypeArray

abstractContainerClass

public AbstractClass abstractContainerClass

caseInsensitiveRegexClass

public AbstractClass caseInsensitiveRegexClass

abstractListClass

public AbstractClass abstractListClass

vectorClass

public AbstractClass vectorClass

dictionaryClass

public AbstractClass dictionaryClass

exceptionClassArr

public AbstractClass[] exceptionClassArr

utilities

public ClassUtilities utilities

sourceFactry

SourceFactory sourceFactry

scopeMode

boolean scopeMode

worldClass

AbstractClass worldClass

sourceFactory

SourceFactory sourceFactory

classNodeTable

java.util.Hashtable classNodeTable

startStack

java.util.Stack startStack

javaLangImport

IdentifierNode javaLangImport

kmyJintLangImport

IdentifierNode kmyJintLangImport

alreadyCompleting

boolean alreadyCompleting
Constructor Detail

JintClassTable

public JintClassTable(NameTable nameTable)

JintClassTable

public JintClassTable(NameTable nameTable,
                      boolean canListPackages,
                      boolean javaOnlyClasses,
                      SourceFactory sourceFactory)
Method Detail

init

public void init()

setLooseExceptionCheck

public void setLooseExceptionCheck(boolean t)

getLooseExceptionCheck

public boolean getLooseExceptionCheck()

isStartUp

public boolean isStartUp()

setJVMClassesEnabled

public void setJVMClassesEnabled(boolean jvmClassesEnabled)

finishStartUp

public void finishStartUp()

setNoLongTypes

public void setNoLongTypes(boolean noLongTypes)

getNoLongTypes

public boolean getNoLongTypes()

getSize

public int getSize(AbstractClass ac)

getNameTable

public NameTable getNameTable()

canAssign

public boolean canAssign(AbstractClass value,
                         AbstractClass var)

getClass

public AbstractClass getClass(java.lang.Class clazz)

getClass

public AbstractClass getClass(java.lang.String descriptor)

getClass

public AbstractClass getClass(QualifiedIdentifier name)

getClass

public AbstractClass getClass(java.lang.String descriptor,
                              java.lang.Class clazz)

getClass

public AbstractClass getClass(QualifiedIdentifier name,
                              java.lang.Class clazz)

getClass

public AbstractClass getClass(Identifier shortName,
                              IdentifierNode[] imports)

getClass

public AbstractClass getClass(AbstractClass scope,
                              Identifier[] idList,
                              IdentifierNode[] imports)

getClass

public AbstractClass getClass(AbstractClass scope,
                              Identifier[] idList,
                              int off,
                              int length,
                              IdentifierNode[] imports)

lookupClass

protected AbstractClass lookupClass(QualifiedIdentifier name)

registerClass

public void registerClass(AbstractClass aClass)

registerClass

protected void registerClass(AbstractClass aClass,
                             boolean force)

createJVMClass

protected AbstractClass createJVMClass(QualifiedIdentifier name,
                                       java.lang.Class clazz)

getWrapper

public AbstractClass getWrapper(AbstractClass clazz)

getWrappedType

public AbstractClass getWrappedType(AbstractClass clazz)

setSourceFactory

public void setSourceFactory(SourceFactory sf)

setWorld

public void setWorld(AbstractClass world)

getWorld

public AbstractClass getWorld()

getClassConsumer

public ClassConsumer getClassConsumer()

createClass

protected AbstractClass createClass(QualifiedIdentifier name,
                                    java.lang.Class clazz)
Called when someone wants to find some new class

createEmptyClass

public JintClass createEmptyClass(AbstractClass outer,
                                  QualifiedIdentifier fullName)

throwCantResolve

void throwCantResolve(IdentifierNode ident,
                      AbstractClass scope)

processMethod

private boolean processMethod(Identifier className,
                              JintClass newClass,
                              Identifier methodName,
                              MethodNode methodNode,
                              java.util.Hashtable importCache,
                              IdentifierNode[] imports)

processDefs

private void processDefs(JintClass newClass,
                         int modifiers,
                         QualifiedIdentifier type,
                         ExpressionNode[] defs)

completeScope

public void completeScope(BasicNode baseNode)

completeAllScopes

public void completeAllScopes()

locateClassList

QualifiedIdentifier[] locateClassList(AbstractClass scope,
                                      IdentifierNode[] imports,
                                      java.util.Hashtable importCache,
                                      IdentifierNode[] ident,
                                      JintClassTable.JintClassConsumer consumer,
                                      ErrorStorage errorStorage)

locateClassList

QualifiedIdentifier[] locateClassList(AbstractClass scope,
                                      IdentifierNode[] imports,
                                      java.util.Hashtable importCache,
                                      ParameterNode[] params,
                                      JintClassTable.JintClassConsumer consumer,
                                      ErrorStorage errorStorage)

locateSimpleClass

QualifiedIdentifier locateSimpleClass(AbstractClass scope,
                                      IdentifierNode[] imports,
                                      java.util.Hashtable importCache,
                                      IdentifierNode ident,
                                      JintClassTable.JintClassConsumer consumer)

locateClass

QualifiedIdentifier locateClass(AbstractClass scope,
                                IdentifierNode[] imports,
                                java.util.Hashtable importCache,
                                IdentifierNode ident,
                                JintClassTable.JintClassConsumer consumer)

getClass

AbstractClass getClass(AbstractClass scope,
                       IdentifierNode[] imports,
                       java.util.Hashtable importCache,
                       IdentifierNode ident)

getImportCache

private java.util.Hashtable getImportCache(IdentifierNode imp)

lookupInImport

private AbstractClass lookupInImport(IdentifierNode imp,
                                     Identifier shortName)