Skip to content

vancegroup/util-headers

Repository files navigation

Utility Headers for C++

Maintained at https://github.com/vancegroup/util-headers

Even when using the STL and libraries of best practices (like Boost, Eigen, and Loki), a C++ coder sometimes requires utility functionality that can be relatively neatly developed and tested in isolation. Rather than give each small header its own project, we collected such utility functionality, along with associated tests, in this project.

The headers in util/ provide small nuggets of functionality. The headers are effectively independent: you can use one or all of them, without worrying about dependencies. (The exception is BlockingInvokeFunctor and its implementation(s), which depend on each other but which should be self-explanatory.)

Namespaces

Everything that is intended to be "public" is in the util namespace. Code in util::detail is considered to be "implementation details" and not necessarily for direct use.

Building

Since these are only headers, a build system isn't strictly necessary: just include them in your project. The build system included in this repository (uses CMake to generate makefiles or project files) does four things:

  • provides a way to easily edit the headers in a project-oriented IDE
  • provides a doc target that runs Doxygen
  • verifies that each header can cleanly build in a translation unit of its own
  • builds unit tests (and allows running them easily with CTest)

The following dependencies are all optional, but their presence will enable whatever testing exists in the build system for the associated headers:

  • Boost:

    • boost::test required to build unit tests

    • boost::function headers required by util/BlockingInvokeFunctor*.h

  • Eigen: header-only library (snapshot included in repository), used by:

    • util/EigenTie.h

    • util/Saturate.h

  • GMTL: header-only library (often used with VR Juggler) used by:

    • gmtlToOsgMatrix.h
  • OpenSceneGraph: used by:

    • gmtlToOsgMatrix.h

    • osgFindNamedNode.h

  • VPR (part of VR Juggler) used by:

    • util/BlockingInvokeFunctorVPR.h

Licenses

The headers in util/ are free and open-source software. They may be distributed under the following license:

Copyright Iowa State University 2009-2011.

Distributed under the Boost Software License, Version 1.0.

(See accompanying file util/LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

A few headers extend Eigen, which is bundled in the third-party directory for testing purposes. It has its own license.

A copy of the Loki library is bundled in the third-party directory. It has its own license.

Some headers extend or interact with other libraries. Each of these libraries is of course goverened by its own license.

Acknowledgement

If you find this useful, we would appreciate hearing from you. If you use this for academic work, we would also appreciate a copy of the publication and a citation: this helps make a case for our work. You may contact the main developer, Ryan Pavlik (Iowa State University), by email at [email protected] or [email protected].

Paper materials and copies of publications may be mailed to:

Ryan Pavlik

Virtual Reality Applications Center

1620 Howe Hall

Ames, Iowa 50011-2274

USA