./ (directory)    <<    < back      Search      < sponsored: Stanovanje v Ljubljani >
  Selected Documents    Igor Grešovnik    Inverse     


  This page provides some information about the IGLib.NET (Investigative Generic Library), a base library for efficient development of technical and other applications on .NET framework or its alternatives.
Currently, IGLib is used by the author and his partner institutions for their projects, but there is an intention to release it as free open source library when it reaches sufficient maturity level

   Dragonfly Server




About the library


  IGLib (Investigative Generic Library) is a base utility library for efficient development of cross-platform technical and other applications. It is developed for the .NET framework and its alternatives (such as Mono).

  The library has been designed and developed by Igor Grešovnik. It contains various general utilities such as those for parsing of strings, auxiliary utilities for building GUI, a numerical library, I/O utilities, 2D and 3D graphics modules, parallel computing module, command-line and fully object-oriented interpreters, application framework, etc. It aims at providing a well designed base library for development of complex numerical and other technical applications. Parts of the library have also been used in other areas such as a system for managing a histological laboratory or large scale invoicing support system. 

  Historically, the initial motivation for development of the library arose from the needs to have a good base library for development of complex optimization software. One of the goals was to take utilities and standards from the IOptLib C library and transfer them to an expressively object object oriented C# library, in order to elaborate, extend and implement ideas about how an environment for efficient development of industrial scale optimization software can be established. However, the library has been developed in a much broader sense since the very beginning of its development.

  The library depends on several external libraries, of which majority are open source (see the Readme file for more details). It is structured in hierarchic layers that are arranged according to the dependence on different types of libraries with respect to permissiveness of their licenses and according to cross-platform transferability. The extensive base layer is allowed to depend only on free open source libraries whose licenses does not impose any restrictions neither on commercial nor on research use of the libraries or distribution of the derived products. The IGLib itself has not yet been publicly released under free license. Prior to doing so, its author would like to establish stable enough development conditions with enough interested parties to enable sustainable development. However, the author welcomes initiatives for development partnership based on technical or research projects, especially those with ambitious and exciting goals.

System Requirements

  IGLib is developed in C# and it targets the 64 bit .NET framework and its alternative implementations such as Mono. It is intended as higher level utility library for development of cross-platform applications.
  Currently, the target platform is .NET 4.0, which is commonly available across the main computing platforms (e.g. in form of the open source Mono implementation).  The source code of substantial portions of code can be compiled for lower versions of the framework, however the official recommendation is to stick with .NET 4 or higher.

  It is straight forward to port the library to any modern computing platform. The only requirement is that a .NET 4 or compatible framework is installed on the computer. Many operating systems already include the framework, but if not then you will have to download and install the .NET framework (for Widows operating systems) or Mono (cross-platform) before using the library.
  It might not be completely straight forward to install the framework on older operating systems. For example, on Windows XP, you will need to install the Service pack 3 before installing the .NET 4 or later. We have not checked whether the service pack is also required when using the Mono framework instead of .NET.

  There are some specialized portions of the library that are difficult to use on some older operating systems. This is true e.g. on 32 bit Windows XP for the 3D graphics modules that are based on the ActiViz, C# wrappers for the VTK library (used e.g. in NeurApp, AnnApp, IGShell, and some other applications). In these applications, all functionality that does not use the problamatic libraries should still work correctly. For example, with some applications for ANN modelling, one can do everything except showing 3D plots of 2-parametric studies. When launching such a plot, an error message is launched, but one can continue to use the application for other tasks.
  In the case of VTK-based 3D plots, the problem is because 64 bit native libraries are linked with the code, and these can not be loaded on a 32 bit system. Due to just in time compiler (JIT), this is not an issue with managed libraries, but linking with native libraries is different. In order to use 3D modules on 32 bit Windows XP, one must use the code that is specifically compiled for 32 bit windows. Such code would also work on all 64 bit windows systems, but it would the applications would be limited to use up to 2 GB RAM. Therefore, downloadable applications are usually prepared for 64 bit windows. If you would like to use full functionality of such applications on 32 bit Windows, check the web site if there is also a 32 bit version.


  The library source code is currently available only upon special agreement with the author. Author's interest is that the library is used and/or developed under a limited number of partner agreements until it reaches a sufficient maturity level. Te intention is that the library is released under a free open source license when it reaches sufficient maturity level and a solid user base.

  A number of applications base on the IGLib have been developed by the author of the library or under partner agreement. Library binaries are currently available with a simple application that very briefly demonstrates a possible use of the library for developing an interpreter-based application. You can check it out here and download the demo. The demo contains a Visual Studio project for building the application. It is basically just a framework of a command-line interpreter based application whose architecture follows the simple application framework rules that are used for some development projects, student projects, small research projects and alike.

  The IGLib binaries are currently available as part of several applications, some of which are available on the internet and can be downloaded together with the library dll-s. Some of these applications are listed below. 

IGShell - A command-line shell aplication built on IGLib

  This is a simple shell application created to demonstrate the use of the IGLib libraries in the shell applications. A Visual Studio (or MonoDevelop) project is attached that demonstrates how a simple shell application is created according to the IGLib Standards.
  The project also includes two hosted applications, the HashForm and HashShell. HaskForm is a simple but useful application for calculation and verification of hash values, and can thus be used as file verification software. HashShell includes utilities for performing common cryptographic tasks such as calculation and verification of cryptographic hash functions, symmetric encryption and decryption, asymmetric encryption, generation and manipulation of keys, digital signatures, and others.

NeurApp - Exploring Approximation by Artificial Neural Networks

  A simple application for learning and exploring some features of approximation by artificial neural networks. NeurApp is a free software that can be downloaded from the links below.


   A GUI-based application for creating ANN-based models by training neural networks on provided data, compatible with the NeuralShell. The software contains modules for graphical representation of model results, which enable to extract, with minimal effort, as much useful information as possible from complex models. It will also be useful for modeling professionals in order to quickly grasp model features and doing some simple analytics.

Oscillator Modeller

  A small application for modeling various kinds of linear and nonlinear driven oscillators. It vas created by Marko Petek in the scope of his graduate thesis (under my supervision) and will soon be available on the internet.

NeuralShell - Development of Complex Models Based on Artificial Neural Networks

   This is a professional application for industrial-scale modelling of and for conducting research on artificial neural networks. It is being developed in the scope of COBIK projects by Igor Grešovnik and Tadej Kodelja (who is also preparing his Ph.D. thesis on basis of the software). This versatile software is driven by a two level interpreter system, which enables high flexibility and extensibility through C# scripting engine. Demonstrative examples will be prepared for download in the future.


   A GUI-based application for exploring results of ANN modeling, compatible with the NeuralShell. It is primarily intended for use by the people who are not skilled in using computers, in order to interactively extract as much useful information as possible from complex models in a short time and with minimal effort. It will also be useful for modeling professionals in order to quickly grasp model features and doing some simple analytics.


  IGLib Code Documentation (base index, classes, members). Code documentation for the library, automatically generated from documentation comments by Doxygen, a remarkable documentation generation tool. Only a part of the library is currently documented, since the majority of code is scattered between various projects and in testing areas.

  See also:


  To be added...


  Archive of documentation and downloads for older version of IGLib and related software is maintained here. In this way, you can find and download older versions of software in order to investigate and resolve compatibility issues, or use discontinued features. This is a central location for searching for older versions, but some software pages may maintain their own archives of older versions, such as IGShell, for example (which also includes distributions of HashForm and HashShell).

Archive home. Contains links to archived documentation and downloads.
IGShell archive. Contains older versions of IGShell, which include HashForm and HashShell.

See Also

A How-to Guide on Creating Bootable Media (=>, PDF). Details procedures and tools for creating bootable media for various scenarios. These procedures were used for testing and the IGLib-based software, although the described procedures are general and useful in many situations. Document is composed in form of a how-to guide with additional explanations to make things clearer and more understandable.  By Igor Grešovnik, April 2016.

This site was partially sponsored by ITAIA electronics.

Search within this site:

  Maintained by Igor Grešovnik 
  Updated in April 2016