# Class: Module

Modules are luascripts that are part of the official Luxinia distribution. Modules are extending the luxinia API with addtitional scripts for simplified use. In difference to the native API of Luxinia, modules are implemented within the scripting of Luxinia. Modules extend Luxinia with functions and classes that are simpler to use than the native API functions. This means that you can modify the modules, but you should always keep in mind that Luxinia can and should be used for different projects and maybe not only for your own projects. Changing the official scripts may cause problems with other projects that are not written by you into. Even worse, changes on the official scripts can will need you to update your modified scripts, too.
However, you may write your own modules that fits into the modulestructure of Luxinia. By doing so, you can extend Luxinia in a way that other can easily use, too.

## Functions:

getclasses (string modulename)
  returns: (table classes)
  Returns the classes as a table. This prevents overriding previously defined global variables as described in 'load'. I.e. if a Module named 'foo' is loaded and it contains the classes 'a' and 'b', the returned table contains the two classes 'a' and 'b'.
getclasshierarchy (string modulename)
  returns: (table hierarchy, table allclasses)
  returns a hierarchy in a datastructure that is compatible to the used format in the autodoc.lua file.
getclassinfo (table class, string description, string parent, table interfaces, boolean isthreadsafe, table threadsafefunctions)
  returns: ()
  returns all known information on a class of a Module
load (string modulename)
  returns: ()
  Puts all the classes that belong to the Module into the global variable space. I.e. if a Module has a certain class that's name is 'foo', the class can be used from now on by simply using the name 'foo'. This can of course override your own tables or even classes of other modules. If this is a problem to you, you can use getclasses instead, which returns a table of classes.
moduledescription (string modulename)
  returns: ([string])
  return description of Module
modulenames ()
  returns: (table modulenames, int count)
  returns names and number of known modules.
register (string modulename, string description)
  returns: ()
  Registers a modulename as Module. The description should explain what the whole Module is good for.
registerclass (string modulename,string name, string description, table class, table help, [string parent],[table interfaces], [boolean isthreadsafe],[table threadsafefunctions])
  returns: ()
  registers a class that is part of a certain Module with a certain name. The help table should describe each function of the class with the functionname as key and a descriptionstring that describes the arguments and functiondetails. You can optionally define the name of the parentclass and the names of the interfaces. This has only a hierachical purpose for the documentation.
registerclassfunction (string modulename,string classname,string functionname,string description)
  returns: ()
  sets a functiondescription for a function of a class.