Hi,

This message is mostly for people who are interested in the string algorithm library.
New version is in the sandbox.

I have redesigned major part of the library, and I think that now its structure is
in quite stable state. I want to start writing the documentation, but first I'd like
to be sure, that the library will not change too much. ( I'm not very good documenter,
and I hate to do this kind of things twice if I don't have to :)  )

So I kindly ask you again, to post any comments, additions and proposals.

Summary of changes:

(i)     General naming conventions have changed to be more compliant with STL naming 
scheme.
                It means that:
                - Non-mutable version of algorithm have suffix _copy. 
                - Variants which take a predicate as a selector ( f.e. trim ) have 
suffix _if.
                - Find, replace and erase algorithm can have suffix _first, _last or  
_nth depending
                  on the find functor thay you ( will be explained later ) 

                Convention is that a semantic specification have precendece over 
parameters. so
                there is for example erase_first_copy and trim_left_copy_if.

(ii)  All trim functions have now _if variant which take a selection predicate as a 
parameter.
                There are 3 predefined functors available through contruct functions. 
Function names
                ar if_isclassified, if_isspace, if_isfrom. ( Check string_funct.hpp 
for details )

                Standard version without suffix map to isspace predicate which I found 
most common.

(iii) find-replace algorithms have been wholy redesigned. 
                - string_algo::compare_traits and string_algo::search_traits has added.
                  Element comparison predicate is now part of traits instead of being 
a parameter
                  in algorithms.
                  search_traits is a template defined over iterators and provides 
compare_function_type (
                  from compare_traits ) and range_type used as a return value for find 
functions.
                - all algorithms ( except for _all versions ) has been generalized. 
They now accept a
                  find algorith as a parameter. There are 3 functors provided for 
this: find_firstF,
                  find_lastF and find_nthF. User can write his own find function which 
is supposed
                  to find range representin a subsequence in the given input sequence.
                  For each algorithm there are wrappers for all default find functors. 
( f.e there is
                  replace - generic and replace_first, replace_last, replace_nth )

Algorithms included:

(i)     Trimming: 
                        trim, trim_left, trim_right. All in interator, sequence, 
mutable and non-mutable
                        variants. There are also _if variants for all.

(ii)  Case conversion:
                        to_lower, to_lower_copy, to_upper and to_upper_copy.

(iii) Predicates:
                        start_with (both iterator and sequence version), end_with 
(sequence version only),
                        contains (both versions)

(iv)    Find algorithms:
                        find, find_first, find_last, find_nth in iterator and sequence 
versions

(v)     Replace algorithms
                        replace, replace_first, replace_last, replace_nth in iterator 
and sequence version.
                        sequence version in mutable and non-mutable variant

(vi)    Erase algorithms
                        Same as replace.

Please check sources and test code in the sandbox for more datails and usage scenario.

Last but not least, I'd like to ask what is needed for library to be commited for 
submission rewiev?

Thats all folks.

Regards,

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

Reply via email to