A fuzzy logic C++ library
Developper information

This page holds information useful for those who want to build the software or dive inside the code. More...

This page holds information useful for those who want to build the software or dive inside the code.

For library usage, you better check out the Users guide.

Page content:

  1. Software content
  2. Building the software
  3. Release history
  4. Source tree organization
  5. Coding style and misc.
  6. Doc generation
  7. Unit testing

Software content

At present, this software package is made of:

Building the software

This section has been moved to Building the software.

Release history

NEXT RELEASE (roadmap)

Source tree organization

Coding style and misc.

A strong focus has been put on readability an documentation through doxygen-style comments, as opposed to a more compact coding style.


The following conventions are used here, for personal and probably bad reasons.

String handling

With C++, and due to legacy reasons, there are two ways to handle strings:

Many codebases around use reference passing (const std::string&) to avoid passing by value. However, this removes the ability to pass a hard-coded const string. This can be workarounded by creating two functions: one with a const char* and the other with a const std::string&. Here, choice has been made to stay with a passing-by-value strategy for all the public functions of the API.

Doc generation

Besides the Users guide, all the code is strongly documented. Many figures are included, most of them are generated at build time with generate-doc-plots.cpp. Documentation is produced with doxygen.

Some comments on doxygen processing:

The bad thing about this approach is that lots of warnings get issued in the doxygen log file...

Unit testing

A small unit test framework is used (kut), included here in the 'other' folder. It only provides a set of macros used to implement some unit testing. Each class has a member function that takes care of testing it's functionality. These functions are called in the program testfile.cpp. It is build and run with 'make test'.

This target also runs a set of commands using the binaries generated, to make sure they terminate normally (with return 0).