This is a list of some development goals and guidelines used for developing this utility collection.


  • Must be usable with both C and C++.
  • Must work on Windows and Linux.
  • Should work on Mac OSX.
  • As identical behaviour across platforms as possible.


  • Comment using Natural Docs format
  • When creating global, overridable #defines or typedefs, prefix them with RLUTIL_ and use CAPS in the name.
  • Use tabs instead of spaces for intendation.
  • Prefer compact code (though not unclear).
  • C++ stuff inside rlutil namespace.
  • Use RLUTIL_STRING_T for string type and RLUTIL_PRINT for outputting.
  • If something cannot be implemented in both C and C++, it must be #ifdef’ed out so that the code still compiles even though the function is not present.  These kind of functions must be documented.