Package gnu.kawa.functions
Class GetModuleClass
- java.lang.Object
-
- gnu.mapping.PropertySet
-
- gnu.mapping.Procedure
-
- gnu.mapping.ProcedureN
-
- gnu.kawa.functions.GetModuleClass
-
- All Implemented Interfaces:
Inlineable
,Named
public class GetModuleClass extends ProcedureN implements Inlineable
Special procedure to get the Class of the current module. Since "current module" is defined by lexical scope, this isn't a first-class procedure - it has to be inlined.
-
-
Field Summary
Fields Modifier and Type Field Description static GetModuleClass
getModuleClass
A function that returns the class of the current module.static GetModuleClass
getModuleUri
A function that returns the URLPath of the current module.static GetModuleClass
getModuleUriDummy
A dummy 1-argument functions used in implementing getModuleUri.-
Fields inherited from class gnu.mapping.ProcedureN
applyToObject, noArgs
-
Fields inherited from class gnu.mapping.Procedure
applyMethodType, applyToConsumerDefault, applyToConsumerMethod, applyToObjectDefault, applyToObjectMethod, compilerKey, compilerXKey, inlineIfConstantSymbol, validateApplyKey, validateXApplyKey
-
Fields inherited from class gnu.mapping.PropertySet
nameKey
-
-
Constructor Summary
Constructors Constructor Description GetModuleClass()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description Object
applyN(Object[] args)
static gnu.kawa.io.URLPath
classResourcePath(Class clas)
void
compile(ApplyExp exp, Compilation comp, Target target)
static Expression
getModuleClassExp()
static Expression
getModuleClassURI(Compilation comp)
Return an expression that evaluates to a module-relative URL.Type
getReturnType(Expression[] args)
Semi-deprecated - instead should be set at Inline time.int
numArgs()
ReturnminArgs()|(maxArgs<<12)
.-
Methods inherited from class gnu.mapping.ProcedureN
applyToObject
-
Methods inherited from class gnu.mapping.Procedure
apply0, apply1, apply2, apply3, apply4, applyL, applyToConsumerDefault, applyToObjectDefault, checkArgCount, checkBadCode, getApplyMethod, getApplyToConsumerMethod, getApplyToObjectMethod, getSetter, getSourceLocation, isSideEffectFree, lookupApplyHandle, maxArgs, maxArgs, minArgs, minArgs, set0, set1, setN, setSetter, setSourceLocation, toString
-
Methods inherited from class gnu.mapping.PropertySet
getName, getProperty, getSymbol, removeProperty, setName, setProperty, setProperty, setSymbol
-
-
-
-
Field Detail
-
getModuleClass
public static final GetModuleClass getModuleClass
A function that returns the class of the current module.
-
getModuleUri
public static final GetModuleClass getModuleUri
A function that returns the URLPath of the current module. This is"class-resource:"
URL (seeResourceStreamHandler
), though in immediate mode it gets optimized to a"file:"
URL.
-
getModuleUriDummy
public static final GetModuleClass getModuleUriDummy
A dummy 1-argument functions used in implementing getModuleUri. It takes one argument - a reference to a declaration containing the intended result, with a value to initialize it. The compile method sets up the needed static initialization.
-
-
Method Detail
-
numArgs
public int numArgs()
Description copied from class:Procedure
ReturnminArgs()|(maxArgs<<12)
. We use a single virtual function to reduce the number of methods in the system, as well as the number of virtual method table entries. We shift by 12 so the number can normally be represented using a sipush instruction, without requiring a constant pool entry.
-
compile
public void compile(ApplyExp exp, Compilation comp, Target target)
- Specified by:
compile
in interfaceInlineable
-
getReturnType
public Type getReturnType(Expression[] args)
Description copied from class:Procedure
Semi-deprecated - instead should be set at Inline time. FIXME- Overrides:
getReturnType
in classProcedure
-
getModuleClassExp
public static Expression getModuleClassExp()
-
getModuleClassURI
public static Expression getModuleClassURI(Compilation comp)
Return an expression that evaluates to a module-relative URL. This has the Kawa-specific URL scheme "class-resource:" and an associated ClassLoader (using a WeakHashMap). It's used to reference resources located using the compiled class's ClassLoader.
-
classResourcePath
public static gnu.kawa.io.URLPath classResourcePath(Class clas)
-
-