Boost logo

Boost :

From: Beman Dawes (bdawes_at_[hidden])
Date: 2004-11-11 12:20:23


I'm currently working on a major revision of the Boost filesystem library
aimed at getting it ready to be proposed to the C++ committee for the next
Library TR.

The critical technical change required is internationalization. The plan is
to provide a templated basic_path class, with typedefs for path and wpath.
In other words, an approach very similar to the current std::basic_string,
std::string, and std::wstring.

Doing this adds a certain amount of complexity compared to the current path
class. For example, a path_traits class has to be introduced to give
basic_paths on user defined types a way to import the conversions,
delimiters, and other traits.

To offset the added complexity, I'd like to reduce some of the complexities
in the current design:

* Eliminate the distinction between native and generic grammars; either
would be permitted in all contexts. As well as simplifying the class
interface a bit, this will also eliminate a source of user confusion.

* Move the name error checking from the basic_path class into stand alone
functions. Although the current error checking could be further improved by
Peter Dimov's suggested change allowing failure to be treated as either a
warning or a hard error, moving it out of the class simplifies the
interface, allows full path (rather than name-by-name) error checks, and
eases internationalization.

The primary downside of these changes will be that users who want path
portability checks will have to code calls to checking functions that are
currently being called automatically.

The internationalization of the library is a big enough change that we will
probably want to have at least a mini-review once the changes are complete.

Comments?

--Beman


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk