Module ClassLoader

module ClassLoader: sig .. end
Class loaders that allows easy access and loading of classes, packages, and modules.

type t 
Represents a class loader, that is barely a map from names (in external form) to their definitions.
type error = 
| Unable_to_load of Utils.UTF8.t * string
| Already_defined of Utils.UTF8.t
exception Exception of error
val string_of_error : error -> string
val make : ClassPath.t -> t
Constructs a class loader from a class path that will be used to load elements. The returned class loader contains no definition.
val find_class : t -> Utils.UTF8.t -> ClassDefinition.t
find_class cl cn returns the class definition for the class named cn (in external form) using class loader cl. Raises Exception if such a class has not alredy been loaded and cannot be loaded.
val find_package : t -> Utils.UTF8.t -> PackageDefinition.t
find_package cl pn returns the package definition for the package named pn (in external form) using class loader cl. Raises Exception if such a package has not alredy been loaded and cannot be loaded.
val find_module : t -> Utils.UTF8.t -> ModuleDefinition.t
find_module cl pn returns the module definition for the module named mn (in external form) using class loader cl. Raises Exception if such a module has not alredy been loaded and cannot be loaded.
val add_class : t -> ClassDefinition.t -> unit
add_class cl cd adds the class cd to the class loader cl. Raises Exception if a class with the same name has already been loaded.
val add_package : t -> PackageDefinition.t -> unit
add_package cl pd adds the package pd to the class loader cl. Raises Exception if a package with the same name has already been loaded.
val add_module : t -> ModuleDefinition.t -> unit
add_module cl md adds the module md to the class loader cl. Raises Exception if a module with the same name has already been loaded.
val mem_class : t -> Utils.UTF8.t -> bool
mem_class cl cn tests whether the class named cn has been loaded by the class loader cl.
val mem_package : t -> Utils.UTF8.t -> bool
mem_package cl pn tests whether the package named pn has been loaded by the class loader cl.
val mem_module : t -> Utils.UTF8.t -> bool
mem_module cl mn tests whether the module named mn has been loaded by the class loader cl.
val remove_class : t -> Utils.UTF8.t -> unit
remove_class cl cn removes the definition for class cn from class loader cl.
val remove_package : t -> Utils.UTF8.t -> unit
remove_package cl pn removes the definition for package pn from class loader cl.
val remove_module : t -> Utils.UTF8.t -> unit
remove_module cl mn removes the definition for module mn from class loader cl.
val replace_class : t -> ClassDefinition.t -> unit
Equivalent to add_class except that a previous definition is replaced.
val replace_package : t -> PackageDefinition.t -> unit
Equivalent to add_package except that a previous definition is replaced.
val replace_module : t -> ModuleDefinition.t -> unit
Equivalent to add_module except that a previous definition is replaced.