> The current approach is clearly too restrictive and isn't satisfactory.
> Beyond the problems you mention, there really isn't a single standard for
> portability. Even 8.3 names aren't portable to systems which don't allow
> periods in names. A whole family of checkers is needed, giving various
> degrees of portability. Some should be supplied with the library, but
users
> also need to be able to provide their own.
> [...]

> <boost/filesystem/path.hpp> added this:
>
>     typedef bool (*is_portable_test)( string & candidate );
>
>     class scoped_portability_policy : noncopyable
>     {
>     public:
>       explicit scoped_portabiity_policy( is_portable_test f );
>       ~scoped_portabiity_policy();
>      };
>

I'm not sure 'portability' is the right word here.

Since it can be overridden by the user, maybe a better name would be:
is_legal_name_test - and the user can override it to suit its needs.

I don't quite like is_portable_test, since I assume there is only
one 'portability', not more (at least, this is what I think, when
discussing portability). For instance, when talking about a portable name,
I assume there is a clear definition of what that means to everybody
(and I don't assume users could/should override that ;).


That said, instead of a scoped portability policy, which will go rather
bad with thread-safety, maybe, just a simple
set_legal_name_policy( is_legal_name_test f); would look better.

Users would (should) set this in main(), while there are no more threads,
and it could play nicely with thread-safety as well.


Best,
John


_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost

Reply via email to