inlib / exlib

The "inlib" and the "exlib" are two sets of C/C++ code which is used to build our applications.

The inlib gathers code that may use the C and STL standard libraries, along few UNIX/Windows system functions, but only these. In it can be found very general code as histogram and ntuple classes, a fitter, a scene graph manager, plotting facilities, an aida file reader, cern-root writer and reader, etc... The exlib gathers code that moreover use various "external" packages as OpenGL-ES, Android, iOS, Cocoa, X11, Windows, jpeg, png, freetype, cfitsio, hdf5, graphvis, dcmtk, Geant4, etc... The exlib relies also on the inlib.

Straight C++

One strong feature of these sets is that it is not needed to build some library (archive or shared) to use them. In inlib/exlib all the code is "header only", that is to say there is no need to "build and install" inlib/exlib to use them. (This is similar to some parts of the boost library which are also "headers only"). This way of doing simplify a lot the way to work on the iPhone and Android versions of interactive apps since, for them, we are more or less compelled to use a specific build system (for example Xcode) in order to create a packaging (for exa a <app>-releas.apk for Android) ready for submission on the Apple AppStore or GooglePlay. We have choosen also this way of doing by having observed that the "build and install" is the number one source of problems with users when delivering a package "with libraries". Then we have decided to simply eliminate these steps. Have a look at Using inlib and Examples to see, for example, how to book, fill, plot an histogram by "staying cool" with C++ (and then without having to jump in a nightmare of complexity).