Mercurial > fife-parpg
changeset 689:f67e9f47526d
Fixed the VFSDirectory so that it is compatible with the different versions of boost::filesystem. It chooses the correct functions based on the boost version being used.
fixes[t:529]
author | vtchill@33b003aa-7bff-0310-803a-e67f0ece8222 |
---|---|
date | Thu, 31 Mar 2011 02:56:16 +0000 |
parents | ae479ce3f762 |
children | 9dce3dbd4fa9 |
files | engine/core/vfs/vfsdirectory.cpp |
diffstat | 1 files changed, 40 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/engine/core/vfs/vfsdirectory.cpp Sun Jan 23 17:19:00 2011 +0000 +++ b/engine/core/vfs/vfsdirectory.cpp Thu Mar 31 02:56:16 2011 +0000 @@ -25,6 +25,7 @@ // 3rd party library includes #include <boost/filesystem/operations.hpp> #include <boost/filesystem/path.hpp> +#include <boost/version.hpp> // FIFE includes // These includes are split up in two parts, separated by one empty line @@ -37,6 +38,27 @@ #include "vfsdirectory.h" namespace bfs = boost::filesystem; + +namespace +{ + // grab the major and minor version of boost, + // calculations taken from boost/version.hpp + #define BOOST_MAJOR_VERSION BOOST_VERSION / 100000 + #define BOOST_MINOR_VERSION BOOST_VERSION / 100 % 1000 + +#if (BOOST_MAJOR_VERSION >= 1 && BOOST_MINOR_VERSION >= 46) + // this define will tell us to use boost filesystem + // version 3 since this is the default version of the library + // starting in boost version 1.46 and above + #define USE_BOOST_FILESYSTEM_V3 +#elif (BOOST_MAJOR_VERSION >= 1 && BOOST_MINOR_VERSION >= 36) + // this define will tell us not to use the deprecated functions + // in boost filesystem version 2 library which were introduced + // in boost version 1.36 and above + #define USE_NON_DEPRECATED_BOOST_FILESYSTEM_V2 +#endif +} + namespace FIFE { static Logger _log(LM_VFS); @@ -94,10 +116,24 @@ if (bfs::is_directory(*i) != directorys) continue; - // This only works with boost 1.34 and up - // list.insert(i->path().leaf()); - // This one should be ok with both 1.33 and above - list.insert(i->leaf()); +#if defined(USE_BOOST_FILESYSTEM_V3) + // boost version 1.46 and above uses + // boost filesystem version 3 as the default + // which has yet a different way of getting + // a filename string + bfs::path filenamePath = i->path().filename(); + list.insert(filenamePath.string()); +#elif defined(USE_NON_DEPRECATED_BOOST_FILESYSTEM_V2) + // the new way in boost filesystem version 2 + // to get a filename string + //(this is for boost version 1.36 and above) + list.insert(i->path().filename()); +#else + // the old way in boost filesystem version 2 + // to get a filename string + //(this is for boost version 1.35 and below) + list.insert(i->leaf()); +#endif } } catch (const bfs::filesystem_error& ex) {