KrisLibrary  1.0.0
KrisLibrary

Basic C++ math, geometry, robotics, I/O, and other routines used in projects from Kris Hauser's lab.

Authors:

Building

Requirements

Optional

To build, run:

cmake . make

or for debug information, run

cmake . -DCMAKE_BUILD_TYPE=debug make

If you observe that any packages on your system are not identified in the first step, run

cmake-gui .

to set the appropriate paths manually. These are variables in the form of X_ROOT. You may also disable certain packages by turning off the USE_X variables. Please submit an issue on Github if you have trouble building on your system.

Packages

Features

Known "cruft"

Contribution guidelines

We welcome fixes and contributions to KrisLibrary. Please follow these guidelines when adding to the library.

File Formatting

Encapsulate the file with the standard #ifndef CATEGORY_FILENAME_H ... #endif where CATEGORY is the folder name, FILENAME is the file name, translated into capitals and _ inserted between words.

If a file belongs to a coherent library, the entire body (minus preprocessor commands) should be enclosed in a namespace. Only use `using namespace' in .h files if it's enclosed in a namespace (e.g. Math3D inherits the Math namespace).

Class Formatting

3 main types of classes

Classes are always capitalized camel-case (e.g. ClassName).

Methods are:

Member variables are always lowercase.

Global Formatting:

Non-inlined functions are always capitalized. Inlined functions may be lowercase (usually reserved for very primitive operations, like dot products). Macros are either all caps or capitalized. Variables are lowercase.

Serialization

Whenever possible, objects should be able to be loaded from/saved to disk using the << and >> operators of the standard iostream objects. For binary I/O, you can implement the WriteFile(object,File&) and ReadFile(object,File&) methods.

History

... prior to that, there is a long and undocumented history stretching back over a decade!

Questions for future development