Hi Robert, hi everyone,
Abstract (If you don't have time to read all the mail!): Some dependencies may
be added to OSG when users manually compile OSG with CMake. This would be a
strictly optional feature that would not be included in precompiled packages.
Examples: boost ref pointers, boost paths, etc.
Detail:
I know core OSG should not have dependencies other than critical ones, but what
about *optional* dependencies?
I explain myself... I mainly think about boost, but this may be applied to
more. The idea is that some portions of code *may* use dependencies that the
user chooses while executing the CMake script. But precompiled packackes would
*NEVER* use such dependencies (or else this would be a custom package).
Take this example: file and directories paths. All methods using paths should
be written like this:
void readNodeFile(osg::Path & filePath);
Then, in <osg/Path> header would be found something like:
#ifdef OSG_USE_BOOST_FILESYSTEM
#include <boost/filesystem/path.hpp>
namespace osg {
typedef boost::filesystem::path Path;
}
#else
#include <string>
namespace osg {
typedef std::string Path;
}
#endif // OSG_USE_BOOST_FILESYSTEM
An option that defines "OSG_USE_BOOST_FILESYSTEM" may then be found in the
CMake, and should be turned OFF by default (and marked as "advanced"). Of
course we would also have "BOOST_INCLUDE" and "BOOST_LIB"-like variables,
created by the FindBoost standard module.
Advantages:
- Users using use boost::filesystem in their project would benefit from it into
OSG.
- It increases the interoperability with other libraries, since the user would
not have to write method overloads that might create compile errors (try
calling an osgDB::readNodeFile(boost::filesystem::path &) overload giving it a
std::string and and you'll get a "ambiguous call" error).
- Methods using paths would be clearer (as a path is not necessarily a string).
Drawbacks:
- It needs a little tweak in the CMake.
- Well, I don't see more drawbacks (As this would be a strictly optional
feature, used and maintained by those who use it).
Other options like these may be included by users that want to use some
dependencies, such as boost ref pointers (As it has been discussed before).
These optional features would benefit other users.
About using boost::filesystem, I can write the code and send it to
osg-submissions. I just wait for authorization.
All users are invited to post suggestions about this!
Thanks for reading!
Sukender
PVLE - Lightweight cross-platform game engine - http://pvle.sourceforge.net/
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org