alvinalexander.com | career | drupal | java | mac | mysql | perl | scala | uml | unix  

Scala example source code file (Module.java)

This example Scala source code file (Module.java) is included in the DevDaily.com "Java Source Code Warehouse" project. The intent of this project is to help you "Learn Java by Example" TM.

Java - Scala tags/keywords

assembly, fieldinfo, fieldinfo, hashmap, map, methodinfo, methodinfo, module, name, scopename, string, string, type, type, util

The Scala Module.java source code

/*
 * System.Reflection-like API for access to .NET assemblies (DLL & EXE)
 */


package ch.epfl.lamp.compiler.msil;

import java.util.Map;
import java.util.HashMap;

/**
 * Defines and represents a module. Get an instance of ModuleBuilder
 * by calling DefineDynamicModule
 * A module is a portable executable file of type .dll or .exe consisting
 * of one or more classes and interfaces. There may be multiple namespaces
 * contained in a single module, and a namespace may span multiple modules.
 * One or more modules deployed as a unit compose an assembly.
 *
 * @author Nikolay Mihaylov
 * @version 1.0
 */
public abstract class Module extends CustomAttributeProvider {

    //##########################################################################
    // public fields

    /** String representing the name of the module with the path removed. */
    public final String Name;

    /** String representing the fully qualified name and path to this module. */
    public final String FullyQualifiedName;

    /** String representing the name of the module. */
    public String ScopeName;

    /** The Assembly the Module belongs to. */
    public final Assembly Assembly;

    //##########################################################################
    // constructor

    protected Module(String name, String filename,
		     String scopeName, Assembly assembly)
    {
	this.Name = name;
	this.FullyQualifiedName = filename;
	this.ScopeName = scopeName;
	this.Assembly = assembly;
    }

    //##########################################################################
    // public methods

    /** Returns the specified class, performing a case-sensitive search. */
    public Type GetType(String name) {
        initTypes();
	return (Type) typesMap.get(name);
    }

    /**
     * @return all the classes defined within this module.
     */
    public Type[] GetTypes() {
        initTypes();
	return (Type[]) types.clone();
    }

    /**
     * @return the global field with the specified name.
     */
    public FieldInfo GetField(String name) {
	for (int i = 0; i < fields.length; i++)
	    if (fields[i].Name.equals(name))
		return fields[i];
	return null;
    }

    /**
     * @return an array of the global fields of the module
     */
    public FieldInfo[] GetFields() {
	return (FieldInfo[]) fields.clone();
    }

    /**
     * @return - the global method with the specified name
     */
    public MethodInfo GetMethod(String name) {
	for (int i = 0; i < methods.length; i++)
	    if (methods[i].Name.equals(name))
		return methods[i];
	return null;
    }

    /**
     * @return - an array of all the global methods defined in this modules.
     */
    public MethodInfo[] GetMethods() {
	return (MethodInfo[]) methods.clone();
    }

    /**
     */
    public String toString() { return Name; }

    //########################################################################
    // protected members

    // all the types defined in this module
    protected final Map typesMap = new HashMap();

    // all the types defined in this module
    protected Type[] types;

    // the global fields of the module
    protected FieldInfo[] fields = FieldInfo.EMPTY_ARRAY;

    // the global methods of the module
    protected MethodInfo[] methods = MethodInfo.EMPTY_ARRAY;

    protected Type addType(Type type) {
	addType(type.FullName, type);
	Assembly.addType(type);
	return type;
    }

    protected Type addType(String name, Type type) {
	assert type!= null;
	typesMap.put(name, type);
	return type;
    }

    private boolean initTypes = true;
    protected final void initTypes() {
        if (initTypes) {
            loadTypes();
            initTypes = false;
        }
    }

    protected void loadTypes() {}

    private boolean initGlobals = true;
    protected final void initGlobals() {
        if (initGlobals) {
            loadGlobals();
            initGlobals = false;
        }
    }

    protected void loadGlobals() {}

    //##########################################################################

}  // class Module

Other Scala examples (source code examples)

Here is a short list of links related to this Scala Module.java source code file:

... this post is sponsored by my books ...

#1 New Release!

FP Best Seller

 

new blog posts

 

Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.

A percentage of advertising revenue from
pages under the /java/jwarehouse URI on this website is
paid back to open source projects.