Remove Boost dependency
From FIFE development wiki
Contents |
Introduction
This article evaluates if and how we could / should remove the Boost dependency from FIFE.
Boost features we use
What Boost functionality do we use?
grep -h -r boost *|grep include|sort -u #include <boost/algorithm/string/predicate.hpp> #include <boost/bind.hpp> #include <boost/filesystem/convenience.hpp> #include <boost/filesystem/operations.hpp> #include <boost/filesystem/path.hpp> #include <boost/functional.hpp> #include <boost/function.hpp> #include <boost/intrusive_ptr.hpp> #include <boost/lexical_cast.hpp> #include <boost/regex.hpp> #include <boost/scoped_array.hpp> #include <boost/shared_ptr.hpp> #include <boost/tokenizer.hpp> #include <boost/variant.hpp> #include <boost/weak_ptr.hpp>
Without checking the actual code I assume the boost functionality (we use) can be grouped as:
- filesystem
- several kinds of (smart) pointers
- the variant type
- stuff that works on strings (regex, tokenizer)
- function pointers (aka functors)
Places where we use it
In which engine modules do we use Boost?
Alternatives to Boost
Alternatives for certain functionality that is currently provided by Boost should be listed here.
- List of possible alternatives to the boost unit test framework: http://www.gamesfromwithin.com/articles/0412/000061.html
- Physfs, a possible alternative to the boost cross platform fs functionality: http://icculus.org/physfs/
- Using physfs would give us the advantage of having ZIP support without needing to use minizip. That would get rid of another dependency.
- http://tinytl.sourceforge.net/ - Tiny Template Library: could provide functors and a variant-type
- http://loki-lib.sourceforge.net/ - Loki is a C++ library of designs, containing flexible implementations of common design patterns and idioms