# neSmiK > Noch eine Schicht mehr im Kuchen which translates roughly into: "Una altra capa al pastís" or "Yet another layer in the cake". Its main use case is to provide an interface to annotate code regions. These annotated regions then can be used with multiple backends to gain insight in application behavior. ## Bindings To make neSmiK easily usable, we provide Fortran, C, C++ bindings to the library. ### CXX bindings ```cpp #include "nesmik/nesmik.hpp" int main() { nesmik::Init("ProperlyNested","Default"); // inits the nesmik library nesmik::RegionStart("peter"); nesmik::RegionStart("marie"); nesmik::RegionStop("marie"); nesmik::RegionStop("peter"); nesmik::Finalize(); } ``` ### Fortran To enable the Fortran module to be built please add `-DBUILD_C_FORTRAN=ON` to the cmake flags. ```fortran program test use nesmik_mod call Init("ProperlyNested","Default") call RegionStart("test") call RegionStop("test") call Finalize() end program test ``` Please consider having a look into the documentation (which will be available soon) for further details. ## Backends | Nesting | Backend | Description | |-------------------|-------------------|----------------------------------------------------------------| | ProperlyNested | Default | Default Backend, just prints the regions | | NotProperlyNested | Default | Default Backend, just prints the regions | | ProperlyNested | Extrae::TypeStack | Extrae backend using different Types for the levels of nesting | | ProperlyNested | TALP::Tree | DLB-TALP backend printing a tree to visualize the nesting | | NotProperlyNested | TALP | DLB-TALP backend to register the monitoring regions |