Class 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 Details

    • 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 (see ResourceStreamHandler), 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.
  • Constructor Details

    • GetModuleClass

      public GetModuleClass()
  • Method Details

    • applyN

      public Object applyN(Object[] args)
      Overrides:
      applyN in class Procedure
    • numArgs

      public int numArgs()
      Description copied from class: Procedure
      Return minArgs()|(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.
      Overrides:
      numArgs in class Procedure
    • compile

      public void compile(ApplyExp exp, Compilation comp, Target target)
      Specified by:
      compile in interface Inlineable
    • getReturnType

      public Type getReturnType(Expression[] args)
      Description copied from class: Procedure
      Semi-deprecated - instead should be set at Inline time. FIXME
      Overrides:
      getReturnType in class Procedure
    • 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)