Boost logo

Boost-Commit :

From: hughwimberly_at_[hidden]
Date: 2007-06-09 15:20:00


Author: hughwimberly
Date: 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
New Revision: 4513
URL: http://svn.boost.org/trac/boost/changeset/4513

Log:
restructuring directories

Added:
   sandbox/SOC/2007/regex/named-captures/
   sandbox/SOC/2007/regex/named-captures/boost/
   sandbox/SOC/2007/regex/named-captures/boost/regex/
   sandbox/SOC/2007/regex/named-captures/boost/regex/concepts.hpp
   sandbox/SOC/2007/regex/named-captures/boost/regex/config/
   sandbox/SOC/2007/regex/named-captures/boost/regex/config.hpp
   sandbox/SOC/2007/regex/named-captures/boost/regex/config/borland.hpp
   sandbox/SOC/2007/regex/named-captures/boost/regex/config/cwchar.hpp
   sandbox/SOC/2007/regex/named-captures/boost/regex/icu.hpp
   sandbox/SOC/2007/regex/named-captures/boost/regex/mfc.hpp
   sandbox/SOC/2007/regex/named-captures/boost/regex/pattern_except.hpp
   sandbox/SOC/2007/regex/named-captures/boost/regex/pending/
   sandbox/SOC/2007/regex/named-captures/boost/regex/pending/object_cache.hpp
   sandbox/SOC/2007/regex/named-captures/boost/regex/pending/static_mutex.hpp
   sandbox/SOC/2007/regex/named-captures/boost/regex/pending/unicode_iterator.hpp
   sandbox/SOC/2007/regex/named-captures/boost/regex/regex_traits.hpp
   sandbox/SOC/2007/regex/named-captures/boost/regex/user.hpp
   sandbox/SOC/2007/regex/named-captures/boost/regex/v4/
   sandbox/SOC/2007/regex/named-captures/boost/regex/v4/basic_regex.hpp
   sandbox/SOC/2007/regex/named-captures/boost/regex/v4/basic_regex_creator.hpp
   sandbox/SOC/2007/regex/named-captures/boost/regex/v4/basic_regex_parser.hpp
   sandbox/SOC/2007/regex/named-captures/boost/regex/v4/c_regex_traits.hpp
   sandbox/SOC/2007/regex/named-captures/boost/regex/v4/char_regex_traits.hpp
   sandbox/SOC/2007/regex/named-captures/boost/regex/v4/cpp_regex_traits.hpp
   sandbox/SOC/2007/regex/named-captures/boost/regex/v4/cregex.hpp
   sandbox/SOC/2007/regex/named-captures/boost/regex/v4/error_type.hpp
   sandbox/SOC/2007/regex/named-captures/boost/regex/v4/fileiter.hpp
   sandbox/SOC/2007/regex/named-captures/boost/regex/v4/instances.hpp
   sandbox/SOC/2007/regex/named-captures/boost/regex/v4/iterator_category.hpp
   sandbox/SOC/2007/regex/named-captures/boost/regex/v4/iterator_traits.hpp
   sandbox/SOC/2007/regex/named-captures/boost/regex/v4/match_flags.hpp
   sandbox/SOC/2007/regex/named-captures/boost/regex/v4/match_results.hpp
   sandbox/SOC/2007/regex/named-captures/boost/regex/v4/mem_block_cache.hpp
   sandbox/SOC/2007/regex/named-captures/boost/regex/v4/perl_matcher.hpp
   sandbox/SOC/2007/regex/named-captures/boost/regex/v4/perl_matcher_common.hpp
   sandbox/SOC/2007/regex/named-captures/boost/regex/v4/perl_matcher_non_recursive.hpp
   sandbox/SOC/2007/regex/named-captures/boost/regex/v4/perl_matcher_recursive.hpp
   sandbox/SOC/2007/regex/named-captures/boost/regex/v4/primary_transform.hpp
   sandbox/SOC/2007/regex/named-captures/boost/regex/v4/protected_call.hpp
   sandbox/SOC/2007/regex/named-captures/boost/regex/v4/regbase.hpp
   sandbox/SOC/2007/regex/named-captures/boost/regex/v4/regex.hpp
   sandbox/SOC/2007/regex/named-captures/boost/regex/v4/regex_cstring.hpp
   sandbox/SOC/2007/regex/named-captures/boost/regex/v4/regex_format.hpp
   sandbox/SOC/2007/regex/named-captures/boost/regex/v4/regex_fwd.hpp
   sandbox/SOC/2007/regex/named-captures/boost/regex/v4/regex_grep.hpp
   sandbox/SOC/2007/regex/named-captures/boost/regex/v4/regex_iterator.hpp
   sandbox/SOC/2007/regex/named-captures/boost/regex/v4/regex_kmp.hpp
   sandbox/SOC/2007/regex/named-captures/boost/regex/v4/regex_match.hpp
   sandbox/SOC/2007/regex/named-captures/boost/regex/v4/regex_merge.hpp
   sandbox/SOC/2007/regex/named-captures/boost/regex/v4/regex_raw_buffer.hpp
   sandbox/SOC/2007/regex/named-captures/boost/regex/v4/regex_replace.hpp
   sandbox/SOC/2007/regex/named-captures/boost/regex/v4/regex_search.hpp
   sandbox/SOC/2007/regex/named-captures/boost/regex/v4/regex_split.hpp
   sandbox/SOC/2007/regex/named-captures/boost/regex/v4/regex_stack.hpp
   sandbox/SOC/2007/regex/named-captures/boost/regex/v4/regex_token_iterator.hpp
   sandbox/SOC/2007/regex/named-captures/boost/regex/v4/regex_traits.hpp
   sandbox/SOC/2007/regex/named-captures/boost/regex/v4/regex_traits_defaults.hpp
   sandbox/SOC/2007/regex/named-captures/boost/regex/v4/regex_workaround.hpp
   sandbox/SOC/2007/regex/named-captures/boost/regex/v4/states.hpp
   sandbox/SOC/2007/regex/named-captures/boost/regex/v4/sub_match.hpp
   sandbox/SOC/2007/regex/named-captures/boost/regex/v4/syntax_type.hpp
   sandbox/SOC/2007/regex/named-captures/boost/regex/v4/u32regex_iterator.hpp
   sandbox/SOC/2007/regex/named-captures/boost/regex/v4/u32regex_token_iterator.hpp
   sandbox/SOC/2007/regex/named-captures/boost/regex/v4/w32_regex_traits.hpp
   sandbox/SOC/2007/regex/named-captures/libs/
   sandbox/SOC/2007/regex/named-captures/libs/regex/
   sandbox/SOC/2007/regex/named-captures/libs/regex/build/
   sandbox/SOC/2007/regex/named-captures/libs/regex/build/Jamfile.v2
   sandbox/SOC/2007/regex/named-captures/libs/regex/build/bc_gen.sh
   sandbox/SOC/2007/regex/named-captures/libs/regex/build/bcb6.mak
   sandbox/SOC/2007/regex/named-captures/libs/regex/build/common.sh
   sandbox/SOC/2007/regex/named-captures/libs/regex/build/gcc/
   sandbox/SOC/2007/regex/named-captures/libs/regex/build/gcc-shared.mak
   sandbox/SOC/2007/regex/named-captures/libs/regex/build/gcc.mak
   sandbox/SOC/2007/regex/named-captures/libs/regex/build/gcc/boost_regex-gcc-1_34/
   sandbox/SOC/2007/regex/named-captures/libs/regex/build/gcc/boost_regex-gcc-d-1_34/
   sandbox/SOC/2007/regex/named-captures/libs/regex/build/gcc/libboost_regex-gcc-1_34.a (contents, props changed)
   sandbox/SOC/2007/regex/named-captures/libs/regex/build/gcc/libboost_regex-gcc-d-1_34.a (contents, props changed)
   sandbox/SOC/2007/regex/named-captures/libs/regex/build/gcc_gen.sh
   sandbox/SOC/2007/regex/named-captures/libs/regex/build/generic.mak
   sandbox/SOC/2007/regex/named-captures/libs/regex/build/generic_gen.sh
   sandbox/SOC/2007/regex/named-captures/libs/regex/build/sun_gen.sh
   sandbox/SOC/2007/regex/named-captures/libs/regex/build/sunpro.mak
   sandbox/SOC/2007/regex/named-captures/libs/regex/build/vc6-stlport.mak
   sandbox/SOC/2007/regex/named-captures/libs/regex/build/vc6.mak
   sandbox/SOC/2007/regex/named-captures/libs/regex/build/vc7-stlport.mak
   sandbox/SOC/2007/regex/named-captures/libs/regex/build/vc7.mak
   sandbox/SOC/2007/regex/named-captures/libs/regex/build/vc71-stlport.mak
   sandbox/SOC/2007/regex/named-captures/libs/regex/build/vc71.mak
   sandbox/SOC/2007/regex/named-captures/libs/regex/build/vc8.mak
   sandbox/SOC/2007/regex/named-captures/libs/regex/build/vc_gen.sh
   sandbox/SOC/2007/regex/named-captures/libs/regex/doc/
   sandbox/SOC/2007/regex/named-captures/libs/regex/doc/bad_expression.html
   sandbox/SOC/2007/regex/named-captures/libs/regex/doc/basic_regex.html
   sandbox/SOC/2007/regex/named-captures/libs/regex/doc/captures.html
   sandbox/SOC/2007/regex/named-captures/libs/regex/doc/character_class_names.html
   sandbox/SOC/2007/regex/named-captures/libs/regex/doc/collating_names.html
   sandbox/SOC/2007/regex/named-captures/libs/regex/doc/concepts.html
   sandbox/SOC/2007/regex/named-captures/libs/regex/doc/configuration.html
   sandbox/SOC/2007/regex/named-captures/libs/regex/doc/contacts.html
   sandbox/SOC/2007/regex/named-captures/libs/regex/doc/error_type.html
   sandbox/SOC/2007/regex/named-captures/libs/regex/doc/examples.html
   sandbox/SOC/2007/regex/named-captures/libs/regex/doc/faq.html
   sandbox/SOC/2007/regex/named-captures/libs/regex/doc/format_boost_syntax.html
   sandbox/SOC/2007/regex/named-captures/libs/regex/doc/format_perl_syntax.html
   sandbox/SOC/2007/regex/named-captures/libs/regex/doc/format_sed_syntax.html
   sandbox/SOC/2007/regex/named-captures/libs/regex/doc/format_syntax.html
   sandbox/SOC/2007/regex/named-captures/libs/regex/doc/gcc-performance.html
   sandbox/SOC/2007/regex/named-captures/libs/regex/doc/headers.html
   sandbox/SOC/2007/regex/named-captures/libs/regex/doc/history.html
   sandbox/SOC/2007/regex/named-captures/libs/regex/doc/icu_strings.html
   sandbox/SOC/2007/regex/named-captures/libs/regex/doc/implementation.html
   sandbox/SOC/2007/regex/named-captures/libs/regex/doc/index.html
   sandbox/SOC/2007/regex/named-captures/libs/regex/doc/install.html
   sandbox/SOC/2007/regex/named-captures/libs/regex/doc/introduction.html
   sandbox/SOC/2007/regex/named-captures/libs/regex/doc/localisation.html
   sandbox/SOC/2007/regex/named-captures/libs/regex/doc/match_flag_type.html
   sandbox/SOC/2007/regex/named-captures/libs/regex/doc/match_results.html
   sandbox/SOC/2007/regex/named-captures/libs/regex/doc/mfc_strings.html
   sandbox/SOC/2007/regex/named-captures/libs/regex/doc/non_standard_strings.html
   sandbox/SOC/2007/regex/named-captures/libs/regex/doc/partial_matches.html
   sandbox/SOC/2007/regex/named-captures/libs/regex/doc/performance.html
   sandbox/SOC/2007/regex/named-captures/libs/regex/doc/posix_api.html
   sandbox/SOC/2007/regex/named-captures/libs/regex/doc/redistributables.html
   sandbox/SOC/2007/regex/named-captures/libs/regex/doc/reg_expression.html
   sandbox/SOC/2007/regex/named-captures/libs/regex/doc/regbase.html
   sandbox/SOC/2007/regex/named-captures/libs/regex/doc/regex.html
   sandbox/SOC/2007/regex/named-captures/libs/regex/doc/regex_format.html
   sandbox/SOC/2007/regex/named-captures/libs/regex/doc/regex_grep.html
   sandbox/SOC/2007/regex/named-captures/libs/regex/doc/regex_iterator.html
   sandbox/SOC/2007/regex/named-captures/libs/regex/doc/regex_match.html
   sandbox/SOC/2007/regex/named-captures/libs/regex/doc/regex_merge.html
   sandbox/SOC/2007/regex/named-captures/libs/regex/doc/regex_replace.html
   sandbox/SOC/2007/regex/named-captures/libs/regex/doc/regex_search.html
   sandbox/SOC/2007/regex/named-captures/libs/regex/doc/regex_split.html
   sandbox/SOC/2007/regex/named-captures/libs/regex/doc/regex_token_iterator.html
   sandbox/SOC/2007/regex/named-captures/libs/regex/doc/regex_traits.html
   sandbox/SOC/2007/regex/named-captures/libs/regex/doc/standards.html
   sandbox/SOC/2007/regex/named-captures/libs/regex/doc/sub_match.html
   sandbox/SOC/2007/regex/named-captures/libs/regex/doc/syntax.html
   sandbox/SOC/2007/regex/named-captures/libs/regex/doc/syntax_basic.html
   sandbox/SOC/2007/regex/named-captures/libs/regex/doc/syntax_extended.html
   sandbox/SOC/2007/regex/named-captures/libs/regex/doc/syntax_leftmost_longest.html
   sandbox/SOC/2007/regex/named-captures/libs/regex/doc/syntax_option_type.html
   sandbox/SOC/2007/regex/named-captures/libs/regex/doc/syntax_perl.html
   sandbox/SOC/2007/regex/named-captures/libs/regex/doc/thread_safety.html
   sandbox/SOC/2007/regex/named-captures/libs/regex/doc/uarrow.gif (contents, props changed)
   sandbox/SOC/2007/regex/named-captures/libs/regex/doc/unicode.html
   sandbox/SOC/2007/regex/named-captures/libs/regex/doc/vc71-performance.html
   sandbox/SOC/2007/regex/named-captures/libs/regex/example/
   sandbox/SOC/2007/regex/named-captures/libs/regex/example/Jamfile.v2
   sandbox/SOC/2007/regex/named-captures/libs/regex/example/grep/
   sandbox/SOC/2007/regex/named-captures/libs/regex/example/grep/grep.cpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/example/snippets/
   sandbox/SOC/2007/regex/named-captures/libs/regex/example/snippets/captures_example.cpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/example/snippets/credit_card_example.cpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/example/snippets/icu_example.cpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/example/snippets/mfc_example.cpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/example/snippets/partial_regex_grep.cpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/example/snippets/partial_regex_match.cpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/example/snippets/regex_grep_example_1.cpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/example/snippets/regex_grep_example_2.cpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/example/snippets/regex_grep_example_3.cpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/example/snippets/regex_grep_example_4.cpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/example/snippets/regex_iterator_example.cpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/example/snippets/regex_match_example.cpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/example/snippets/regex_merge_example.cpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/example/snippets/regex_replace_example.cpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/example/snippets/regex_search_example.cpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/example/snippets/regex_split_example_1.cpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/example/snippets/regex_split_example_2.cpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/example/snippets/regex_token_iterator_eg_1.cpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/example/snippets/regex_token_iterator_eg_2.cpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/example/timer/
   sandbox/SOC/2007/regex/named-captures/libs/regex/example/timer/bc55.mak
   sandbox/SOC/2007/regex/named-captures/libs/regex/example/timer/bcb4.mak
   sandbox/SOC/2007/regex/named-captures/libs/regex/example/timer/bcb5.mak
   sandbox/SOC/2007/regex/named-captures/libs/regex/example/timer/gcc.mak
   sandbox/SOC/2007/regex/named-captures/libs/regex/example/timer/input_script.txt
   sandbox/SOC/2007/regex/named-captures/libs/regex/example/timer/regex_timer.cpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/example/timer/vc6-stlport.mak
   sandbox/SOC/2007/regex/named-captures/libs/regex/example/timer/vc6.mak
   sandbox/SOC/2007/regex/named-captures/libs/regex/index.html
   sandbox/SOC/2007/regex/named-captures/libs/regex/performance/
   sandbox/SOC/2007/regex/named-captures/libs/regex/performance/Jamfile.v2
   sandbox/SOC/2007/regex/named-captures/libs/regex/performance/command_line.cpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/performance/input.html
   sandbox/SOC/2007/regex/named-captures/libs/regex/performance/main.cpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/performance/regex_comparison.hpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/performance/time_boost.cpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/performance/time_dynamic_xpressive.cpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/performance/time_greta.cpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/performance/time_localised_boost.cpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/performance/time_pcre.cpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/performance/time_posix.cpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/performance/time_safe_greta.cpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/readme.txt
   sandbox/SOC/2007/regex/named-captures/libs/regex/src/
   sandbox/SOC/2007/regex/named-captures/libs/regex/src/c_regex_traits.cpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/src/cpp_regex_traits.cpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/src/cregex.cpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/src/fileiter.cpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/src/icu.cpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/src/instances.cpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/src/posix_api.cpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/src/regex.cpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/src/regex_debug.cpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/src/regex_raw_buffer.cpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/src/regex_traits_defaults.cpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/src/static_mutex.cpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/src/usinstances.cpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/src/w32_regex_traits.cpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/src/wc_regex_traits.cpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/src/wide_posix_api.cpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/src/winstances.cpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/test/
   sandbox/SOC/2007/regex/named-captures/libs/regex/test/Jamfile.v2
   sandbox/SOC/2007/regex/named-captures/libs/regex/test/c_compiler_checks/
   sandbox/SOC/2007/regex/named-captures/libs/regex/test/c_compiler_checks/posix_api_check.c
   sandbox/SOC/2007/regex/named-captures/libs/regex/test/c_compiler_checks/posix_api_check.cpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/test/c_compiler_checks/wide_posix_api_check.c
   sandbox/SOC/2007/regex/named-captures/libs/regex/test/c_compiler_checks/wide_posix_api_check.cpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/test/captures/
   sandbox/SOC/2007/regex/named-captures/libs/regex/test/captures/Jamfile.v2
   sandbox/SOC/2007/regex/named-captures/libs/regex/test/captures/captures_test.cpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/test/collate_info/
   sandbox/SOC/2007/regex/named-captures/libs/regex/test/collate_info/collate_info.cpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/test/concepts/
   sandbox/SOC/2007/regex/named-captures/libs/regex/test/concepts/concept_check.cpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/test/concepts/icu_concept_check.cpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/test/config_info/
   sandbox/SOC/2007/regex/named-captures/libs/regex/test/config_info/regex_config_info.cpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/test/object_cache/
   sandbox/SOC/2007/regex/named-captures/libs/regex/test/object_cache/object_cache_test.cpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/test/pathology/
   sandbox/SOC/2007/regex/named-captures/libs/regex/test/pathology/bad_expression_test.cpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/test/pathology/recursion_test.cpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/test/profile/
   sandbox/SOC/2007/regex/named-captures/libs/regex/test/profile/Makefile
   sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/
   sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/basic_tests.cpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/bcb6.mak
   sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/gcc.mak
   sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/info.hpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/main.cpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/sunpro.mak
   sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test.hpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_alt.cpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_anchors.cpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_asserts.cpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_backrefs.cpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_deprecated.cpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_deprecated.hpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_emacs.cpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_escapes.cpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_grep.cpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_icu.cpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_icu.hpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_locale.cpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_locale.hpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_mfc.cpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_mfc.hpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_non_greedy_repeats.cpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_not_regex.hpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_operators.cpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_overloads.cpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_partial_match.hpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_perl_ex.cpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_regex_replace.hpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_regex_search.hpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_replace.cpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_sets.cpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_simple_repeats.cpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_tricky_cases.cpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_unicode.cpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/vc6-stlport.mak
   sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/vc6.mak
   sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/vc7.mak
   sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/vc71.mak
   sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/vc8.mak
   sandbox/SOC/2007/regex/named-captures/libs/regex/test/static_mutex/
   sandbox/SOC/2007/regex/named-captures/libs/regex/test/static_mutex/static_mutex_test.cpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/test/unicode/
   sandbox/SOC/2007/regex/named-captures/libs/regex/test/unicode/unicode_iterator_test.cpp
   sandbox/SOC/2007/regex/named-captures/libs/regex/tools/
   sandbox/SOC/2007/regex/named-captures/libs/regex/tools/generate/
   sandbox/SOC/2007/regex/named-captures/libs/regex/tools/generate/tables.cpp

Added: sandbox/SOC/2007/regex/named-captures/boost/regex/concepts.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/boost/regex/concepts.hpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,870 @@
+/*
+ *
+ * Copyright (c) 2004
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE concepts.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Declares regular expression concepts.
+ */
+
+#ifndef BOOST_REGEX_CONCEPTS_HPP_INCLUDED
+#define BOOST_REGEX_CONCEPTS_HPP_INCLUDED
+
+#include <boost/concept_archetype.hpp>
+#include <boost/concept_check.hpp>
+#include <boost/type_traits/is_enum.hpp>
+#include <boost/type_traits/is_base_and_derived.hpp>
+#include <boost/static_assert.hpp>
+#ifndef BOOST_TEST_TR1_REGEX
+#include <boost/regex.hpp>
+#endif
+#include <bitset>
+#include <vector>
+#include <iostream>
+
+namespace boost{
+
+//
+// bitmask_archetype:
+// this can be either an integer type, an enum, or a std::bitset,
+// we use the latter as the architype as it offers the "strictest"
+// of the possible interfaces:
+//
+typedef std::bitset<512> bitmask_archetype;
+//
+// char_architype:
+// A strict model for the character type interface.
+//
+struct char_architype
+{
+ // default constructable:
+ char_architype();
+ // copy constructable / assignable:
+ char_architype(const char_architype&);
+ char_architype& operator=(const char_architype&);
+ // constructable from an integral value:
+ char_architype(unsigned long val);
+ // comparable:
+ bool operator==(const char_architype&)const;
+ bool operator!=(const char_architype&)const;
+ bool operator<(const char_architype&)const;
+ bool operator<=(const char_architype&)const;
+ bool operator>=(const char_architype&)const;
+ bool operator>(const char_architype&)const;
+ // conversion to integral type:
+ operator long()const;
+};
+//
+// char_architype can not be used with basic_string:
+//
+} // namespace boost
+namespace std{
+ template<> struct char_traits<boost::char_architype>
+ {
+ // The intent is that this template is not instantiated,
+ // but this typedef gives us a chance of compilation in
+ // case it is:
+ typedef boost::char_architype char_type;
+ };
+}
+namespace boost{
+//
+// regex_traits_architype:
+// A strict interpretation of the regular expression traits class requirements.
+//
+template <class charT>
+struct regex_traits_architype
+{
+public:
+ regex_traits_architype();
+ typedef charT char_type;
+ typedef std::size_t size_type;
+ typedef std::vector<char_type> string_type;
+ typedef copy_constructible_archetype<assignable_archetype<> > locale_type;
+ typedef bitmask_archetype char_class_type;
+
+ static size_type length(const char_type* ) { return 0; }
+
+ charT translate(charT ) const { return charT(); }
+ charT translate_nocase(charT ) const { return static_object<charT>::get(); }
+
+ template <class ForwardIterator>
+ string_type transform(ForwardIterator , ForwardIterator ) const
+ { return static_object<string_type>::get(); }
+ template <class ForwardIterator>
+ string_type transform_primary(ForwardIterator , ForwardIterator ) const
+ { return static_object<string_type>::get(); }
+
+ template <class ForwardIterator>
+ char_class_type lookup_classname(ForwardIterator , ForwardIterator ) const
+ { return static_object<char_class_type>::get(); }
+ template <class ForwardIterator>
+ string_type lookup_collatename(ForwardIterator , ForwardIterator ) const
+ { return static_object<string_type>::get(); }
+
+ bool isctype(charT, char_class_type) const
+ { return false; }
+ int value(charT, int) const
+ { return 0; }
+
+ locale_type imbue(locale_type l)
+ { return l; }
+ locale_type getloc()const
+ { return static_object<locale_type>::get(); }
+
+private:
+ // this type is not copyable:
+ regex_traits_architype(const regex_traits_architype&);
+ regex_traits_architype& operator=(const regex_traits_architype&);
+};
+
+//
+// alter this to std::tr1, to test a std implementation:
+//
+#ifndef BOOST_TEST_TR1_REGEX
+namespace global_regex_namespace = ::boost;
+#else
+namespace global_regex_namespace = ::std::tr1;
+#endif
+
+template <class Bitmask>
+struct BitmaskConcept
+{
+ void constraints()
+ {
+ function_requires<CopyConstructibleConcept<Bitmask> >();
+ function_requires<AssignableConcept<Bitmask> >();
+
+ m_mask1 = m_mask2 | m_mask3;
+ m_mask1 = m_mask2 & m_mask3;
+ m_mask1 = m_mask2 ^ m_mask3;
+
+ m_mask1 = ~m_mask2;
+
+ m_mask1 |= m_mask2;
+ m_mask1 &= m_mask2;
+ m_mask1 ^= m_mask2;
+ }
+ Bitmask m_mask1, m_mask2, m_mask3;
+};
+
+template <class traits>
+struct RegexTraitsConcept
+{
+ RegexTraitsConcept();
+ // required typedefs:
+ typedef typename traits::char_type char_type;
+ typedef typename traits::size_type size_type;
+ typedef typename traits::string_type string_type;
+ typedef typename traits::locale_type locale_type;
+ typedef typename traits::char_class_type char_class_type;
+
+ void constraints()
+ {
+ function_requires<UnsignedIntegerConcept<size_type> >();
+ function_requires<RandomAccessContainerConcept<string_type> >();
+ function_requires<DefaultConstructibleConcept<locale_type> >();
+ function_requires<CopyConstructibleConcept<locale_type> >();
+ function_requires<AssignableConcept<locale_type> >();
+ function_requires<BitmaskConcept<char_class_type> >();
+
+ size_type n = traits::length(m_pointer);
+ ignore_unused_variable_warning(n);
+
+ char_type c = m_ctraits.translate(m_char);
+ ignore_unused_variable_warning(c);
+ c = m_ctraits.translate_nocase(m_char);
+
+ //string_type::foobar bar;
+ string_type s1 = m_ctraits.transform(m_pointer, m_pointer);
+ ignore_unused_variable_warning(s1);
+
+ string_type s2 = m_ctraits.transform_primary(m_pointer, m_pointer);
+ ignore_unused_variable_warning(s2);
+
+ char_class_type cc = m_ctraits.lookup_classname(m_pointer, m_pointer);
+ ignore_unused_variable_warning(cc);
+
+ string_type s3 = m_ctraits.lookup_collatename(m_pointer, m_pointer);
+ ignore_unused_variable_warning(s3);
+
+ bool b = m_ctraits.isctype(m_char, cc);
+ ignore_unused_variable_warning(b);
+
+ int v = m_ctraits.value(m_char, 16);
+ ignore_unused_variable_warning(v);
+
+ locale_type l(m_ctraits.getloc());
+ m_traits.imbue(l);
+ ignore_unused_variable_warning(l);
+ }
+ traits m_traits;
+ const traits m_ctraits;
+ const char_type* m_pointer;
+ char_type m_char;
+private:
+ RegexTraitsConcept& operator=(RegexTraitsConcept&);
+};
+
+//
+// helper class to compute what traits class a regular expression type is using:
+//
+template <class Regex>
+struct regex_traits_computer;
+
+template <class charT, class traits>
+struct regex_traits_computer< global_regex_namespace::basic_regex<charT, traits> >
+{
+ typedef traits type;
+};
+
+//
+// BaseRegexConcept does not test anything dependent on basic_string,
+// in case our charT does not have an associated char_traits:
+//
+template <class Regex>
+struct BaseRegexConcept
+{
+ typedef typename Regex::value_type value_type;
+ typedef typename Regex::size_type size_type;
+ typedef typename Regex::flag_type flag_type;
+ typedef typename Regex::locale_type locale_type;
+ typedef input_iterator_archetype<value_type> input_iterator_type;
+
+ // derived test types:
+ typedef const value_type* pointer_type;
+ typedef bidirectional_iterator_archetype<value_type> BidiIterator;
+ typedef global_regex_namespace::sub_match<BidiIterator> sub_match_type;
+ typedef global_regex_namespace::match_results<BidiIterator> match_results_type;
+ typedef output_iterator_archetype<value_type> OutIterator;
+ typedef typename regex_traits_computer<Regex>::type traits_type;
+ typedef global_regex_namespace::regex_iterator<BidiIterator, value_type, traits_type> regex_iterator_type;
+ typedef global_regex_namespace::regex_token_iterator<BidiIterator, value_type, traits_type> regex_token_iterator_type;
+
+ void global_constraints()
+ {
+ //
+ // test non-template components:
+ //
+ function_requires<BitmaskConcept<global_regex_namespace::regex_constants::syntax_option_type> >();
+ global_regex_namespace::regex_constants::syntax_option_type opts
+ = global_regex_namespace::regex_constants::icase
+ | global_regex_namespace::regex_constants::nosubs
+ | global_regex_namespace::regex_constants::optimize
+ | global_regex_namespace::regex_constants::collate
+ | global_regex_namespace::regex_constants::ECMAScript
+ | global_regex_namespace::regex_constants::basic
+ | global_regex_namespace::regex_constants::extended
+ | global_regex_namespace::regex_constants::awk
+ | global_regex_namespace::regex_constants::grep
+ | global_regex_namespace::regex_constants::egrep;
+ ignore_unused_variable_warning(opts);
+
+ function_requires<BitmaskConcept<global_regex_namespace::regex_constants::match_flag_type> >();
+ global_regex_namespace::regex_constants::match_flag_type mopts
+ = global_regex_namespace::regex_constants::match_default
+ | global_regex_namespace::regex_constants::match_not_bol
+ | global_regex_namespace::regex_constants::match_not_eol
+ | global_regex_namespace::regex_constants::match_not_bow
+ | global_regex_namespace::regex_constants::match_not_eow
+ | global_regex_namespace::regex_constants::match_any
+ | global_regex_namespace::regex_constants::match_not_null
+ | global_regex_namespace::regex_constants::match_continuous
+ | global_regex_namespace::regex_constants::match_prev_avail
+ | global_regex_namespace::regex_constants::format_default
+ | global_regex_namespace::regex_constants::format_sed
+ | global_regex_namespace::regex_constants::format_no_copy
+ | global_regex_namespace::regex_constants::format_first_only;
+ ignore_unused_variable_warning(mopts);
+
+ BOOST_STATIC_ASSERT((::boost::is_enum<global_regex_namespace::regex_constants::error_type>::value));
+ global_regex_namespace::regex_constants::error_type e1 = global_regex_namespace::regex_constants::error_collate;
+ ignore_unused_variable_warning(e1);
+ e1 = global_regex_namespace::regex_constants::error_ctype;
+ ignore_unused_variable_warning(e1);
+ e1 = global_regex_namespace::regex_constants::error_escape;
+ ignore_unused_variable_warning(e1);
+ e1 = global_regex_namespace::regex_constants::error_backref;
+ ignore_unused_variable_warning(e1);
+ e1 = global_regex_namespace::regex_constants::error_brack;
+ ignore_unused_variable_warning(e1);
+ e1 = global_regex_namespace::regex_constants::error_paren;
+ ignore_unused_variable_warning(e1);
+ e1 = global_regex_namespace::regex_constants::error_brace;
+ ignore_unused_variable_warning(e1);
+ e1 = global_regex_namespace::regex_constants::error_badbrace;
+ ignore_unused_variable_warning(e1);
+ e1 = global_regex_namespace::regex_constants::error_range;
+ ignore_unused_variable_warning(e1);
+ e1 = global_regex_namespace::regex_constants::error_space;
+ ignore_unused_variable_warning(e1);
+ e1 = global_regex_namespace::regex_constants::error_badrepeat;
+ ignore_unused_variable_warning(e1);
+ e1 = global_regex_namespace::regex_constants::error_complexity;
+ ignore_unused_variable_warning(e1);
+ e1 = global_regex_namespace::regex_constants::error_stack;
+ ignore_unused_variable_warning(e1);
+
+ BOOST_STATIC_ASSERT((::boost::is_base_and_derived<std::runtime_error, global_regex_namespace::regex_error>::value ));
+ const global_regex_namespace::regex_error except(e1);
+ e1 = except.code();
+
+ typedef typename Regex::value_type value_type;
+ function_requires< RegexTraitsConcept<global_regex_namespace::regex_traits<char> > >();
+ function_requires< BaseRegexConcept<global_regex_namespace::basic_regex<char> > >();
+ }
+ void constraints()
+ {
+ global_constraints();
+
+ BOOST_STATIC_ASSERT((::boost::is_same< flag_type, global_regex_namespace::regex_constants::syntax_option_type>::value));
+ flag_type opts
+ = Regex::icase
+ | Regex::nosubs
+ | Regex::optimize
+ | Regex::collate
+ | Regex::ECMAScript
+ | Regex::basic
+ | Regex::extended
+ | Regex::awk
+ | Regex::grep
+ | Regex::egrep;
+ ignore_unused_variable_warning(opts);
+
+ function_requires<DefaultConstructibleConcept<Regex> >();
+ function_requires<CopyConstructibleConcept<Regex> >();
+
+ // Regex constructors:
+ Regex e1(m_pointer);
+ ignore_unused_variable_warning(e1);
+ Regex e2(m_pointer, m_flags);
+ ignore_unused_variable_warning(e2);
+ Regex e3(m_pointer, m_size, m_flags);
+ ignore_unused_variable_warning(e3);
+ Regex e4(in1, in2);
+ ignore_unused_variable_warning(e4);
+ Regex e5(in1, in2, m_flags);
+ ignore_unused_variable_warning(e5);
+
+ // assign etc:
+ Regex e;
+ e = m_pointer;
+ e = e1;
+ e.assign(e1);
+ e.assign(m_pointer);
+ e.assign(m_pointer, m_flags);
+ e.assign(m_pointer, m_size, m_flags);
+ e.assign(in1, in2);
+ e.assign(in1, in2, m_flags);
+
+ // access:
+ const Regex ce;
+ bool b = ce.empty();
+ ignore_unused_variable_warning(b);
+ size_type i = ce.mark_count();
+ ignore_unused_variable_warning(i);
+ m_flags = ce.flags();
+ e.imbue(ce.getloc());
+ e.swap(e1);
+
+ global_regex_namespace::swap(e, e1);
+
+ // sub_match:
+ BOOST_STATIC_ASSERT((::boost::is_base_and_derived<std::pair<BidiIterator, BidiIterator>, sub_match_type>::value));
+ typedef typename sub_match_type::value_type sub_value_type;
+ typedef typename sub_match_type::difference_type sub_diff_type;
+ typedef typename sub_match_type::iterator sub_iter_type;
+ BOOST_STATIC_ASSERT((::boost::is_same<sub_value_type, value_type>::value));
+ BOOST_STATIC_ASSERT((::boost::is_same<sub_iter_type, BidiIterator>::value));
+ b = m_sub.matched;
+ ignore_unused_variable_warning(b);
+ BidiIterator bi = m_sub.first;
+ ignore_unused_variable_warning(bi);
+ bi = m_sub.second;
+ ignore_unused_variable_warning(bi);
+ sub_diff_type diff = m_sub.length();
+ ignore_unused_variable_warning(diff);
+ // match_results tests:
+ typedef typename match_results_type::value_type mr_value_type;
+ typedef typename match_results_type::const_reference mr_const_reference;
+ typedef typename match_results_type::reference mr_reference;
+ typedef typename match_results_type::const_iterator mr_const_iterator;
+ typedef typename match_results_type::iterator mr_iterator;
+ typedef typename match_results_type::difference_type mr_difference_type;
+ typedef typename match_results_type::size_type mr_size_type;
+ typedef typename match_results_type::allocator_type mr_allocator_type;
+ typedef typename match_results_type::char_type mr_char_type;
+ typedef typename match_results_type::string_type mr_string_type;
+
+ match_results_type m1;
+ mr_allocator_type at;
+ match_results_type m2(at);
+ match_results_type m3(m1);
+ m1 = m2;
+
+ int ival = 0;
+
+ mr_size_type mrs = m_cresults.size();
+ ignore_unused_variable_warning(mrs);
+ mrs = m_cresults.max_size();
+ ignore_unused_variable_warning(mrs);
+ b = m_cresults.empty();
+ ignore_unused_variable_warning(b);
+ mr_difference_type mrd = m_cresults.length();
+ ignore_unused_variable_warning(mrd);
+ mrd = m_cresults.length(ival);
+ ignore_unused_variable_warning(mrd);
+ mrd = m_cresults.position();
+ ignore_unused_variable_warning(mrd);
+ mrd = m_cresults.position(mrs);
+ ignore_unused_variable_warning(mrd);
+
+ mr_const_reference mrcr = m_cresults[ival];
+ ignore_unused_variable_warning(mrcr);
+ mr_const_reference mrcr2 = m_cresults.prefix();
+ ignore_unused_variable_warning(mrcr2);
+ mr_const_reference mrcr3 = m_cresults.suffix();
+ ignore_unused_variable_warning(mrcr3);
+ mr_const_iterator mrci = m_cresults.begin();
+ ignore_unused_variable_warning(mrci);
+ mrci = m_cresults.end();
+ ignore_unused_variable_warning(mrci);
+
+ mr_allocator_type at2 = m_cresults.get_allocator();
+ m_results.swap(m_results);
+ global_regex_namespace::swap(m_results, m_results);
+
+ // regex_match:
+ b = global_regex_namespace::regex_match(m_in, m_in, m_results, e);
+ ignore_unused_variable_warning(b);
+ b = global_regex_namespace::regex_match(m_in, m_in, m_results, e, m_mft);
+ ignore_unused_variable_warning(b);
+ b = global_regex_namespace::regex_match(m_in, m_in, e);
+ ignore_unused_variable_warning(b);
+ b = global_regex_namespace::regex_match(m_in, m_in, e, m_mft);
+ ignore_unused_variable_warning(b);
+ b = global_regex_namespace::regex_match(m_pointer, m_pmatch, e);
+ ignore_unused_variable_warning(b);
+ b = global_regex_namespace::regex_match(m_pointer, m_pmatch, e, m_mft);
+ ignore_unused_variable_warning(b);
+ b = global_regex_namespace::regex_match(m_pointer, e);
+ ignore_unused_variable_warning(b);
+ b = global_regex_namespace::regex_match(m_pointer, e, m_mft);
+ ignore_unused_variable_warning(b);
+ // regex_search:
+ b = global_regex_namespace::regex_search(m_in, m_in, m_results, e);
+ ignore_unused_variable_warning(b);
+ b = global_regex_namespace::regex_search(m_in, m_in, m_results, e, m_mft);
+ ignore_unused_variable_warning(b);
+ b = global_regex_namespace::regex_search(m_in, m_in, e);
+ ignore_unused_variable_warning(b);
+ b = global_regex_namespace::regex_search(m_in, m_in, e, m_mft);
+ ignore_unused_variable_warning(b);
+ b = global_regex_namespace::regex_search(m_pointer, m_pmatch, e);
+ ignore_unused_variable_warning(b);
+ b = global_regex_namespace::regex_search(m_pointer, m_pmatch, e, m_mft);
+ ignore_unused_variable_warning(b);
+ b = global_regex_namespace::regex_search(m_pointer, e);
+ ignore_unused_variable_warning(b);
+ b = global_regex_namespace::regex_search(m_pointer, e, m_mft);
+ ignore_unused_variable_warning(b);
+
+ // regex_iterator:
+ typedef typename regex_iterator_type::regex_type rit_regex_type;
+ typedef typename regex_iterator_type::value_type rit_value_type;
+ typedef typename regex_iterator_type::difference_type rit_difference_type;
+ typedef typename regex_iterator_type::pointer rit_pointer;
+ typedef typename regex_iterator_type::reference rit_reference;
+ typedef typename regex_iterator_type::iterator_category rit_iterator_category;
+ BOOST_STATIC_ASSERT((::boost::is_same<rit_regex_type, Regex>::value));
+ BOOST_STATIC_ASSERT((::boost::is_same<rit_value_type, match_results_type>::value));
+ BOOST_STATIC_ASSERT((::boost::is_same<rit_difference_type, std::ptrdiff_t>::value));
+ BOOST_STATIC_ASSERT((::boost::is_same<rit_pointer, const match_results_type*>::value));
+ BOOST_STATIC_ASSERT((::boost::is_same<rit_reference, const match_results_type&>::value));
+ BOOST_STATIC_ASSERT((::boost::is_convertible<rit_iterator_category*, std::forward_iterator_tag*>::value));
+ // this takes care of most of the checks needed:
+ function_requires<ForwardIteratorConcept<regex_iterator_type> >();
+ regex_iterator_type iter1(m_in, m_in, e);
+ ignore_unused_variable_warning(iter1);
+ regex_iterator_type iter2(m_in, m_in, e, m_mft);
+ ignore_unused_variable_warning(iter2);
+
+ // regex_token_iterator:
+ typedef typename regex_token_iterator_type::regex_type rtit_regex_type;
+ typedef typename regex_token_iterator_type::value_type rtit_value_type;
+ typedef typename regex_token_iterator_type::difference_type rtit_difference_type;
+ typedef typename regex_token_iterator_type::pointer rtit_pointer;
+ typedef typename regex_token_iterator_type::reference rtit_reference;
+ typedef typename regex_token_iterator_type::iterator_category rtit_iterator_category;
+ BOOST_STATIC_ASSERT((::boost::is_same<rtit_regex_type, Regex>::value));
+ BOOST_STATIC_ASSERT((::boost::is_same<rtit_value_type, sub_match_type>::value));
+ BOOST_STATIC_ASSERT((::boost::is_same<rtit_difference_type, std::ptrdiff_t>::value));
+ BOOST_STATIC_ASSERT((::boost::is_same<rtit_pointer, const sub_match_type*>::value));
+ BOOST_STATIC_ASSERT((::boost::is_same<rtit_reference, const sub_match_type&>::value));
+ BOOST_STATIC_ASSERT((::boost::is_convertible<rtit_iterator_category*, std::forward_iterator_tag*>::value));
+ // this takes care of most of the checks needed:
+ function_requires<ForwardIteratorConcept<regex_token_iterator_type> >();
+ regex_token_iterator_type ti1(m_in, m_in, e);
+ ignore_unused_variable_warning(ti1);
+ regex_token_iterator_type ti2(m_in, m_in, e, 0);
+ ignore_unused_variable_warning(ti2);
+ regex_token_iterator_type ti3(m_in, m_in, e, 0, m_mft);
+ ignore_unused_variable_warning(ti3);
+ std::vector<int> subs;
+ regex_token_iterator_type ti4(m_in, m_in, e, subs);
+ ignore_unused_variable_warning(ti4);
+ regex_token_iterator_type ti5(m_in, m_in, e, subs, m_mft);
+ ignore_unused_variable_warning(ti5);
+ static const int i_array[3] = { 1, 2, 3, };
+ regex_token_iterator_type ti6(m_in, m_in, e, i_array);
+ ignore_unused_variable_warning(ti6);
+ regex_token_iterator_type ti7(m_in, m_in, e, i_array, m_mft);
+ ignore_unused_variable_warning(ti7);
+ }
+
+ pointer_type m_pointer;
+ flag_type m_flags;
+ size_type m_size;
+ input_iterator_type in1, in2;
+ const sub_match_type m_sub;
+ const value_type m_char;
+ match_results_type m_results;
+ const match_results_type m_cresults;
+ OutIterator m_out;
+ BidiIterator m_in;
+ global_regex_namespace::regex_constants::match_flag_type m_mft;
+ global_regex_namespace::match_results<pointer_type> m_pmatch;
+
+ BaseRegexConcept();
+ BaseRegexConcept(const BaseRegexConcept&);
+ BaseRegexConcept& operator=(const BaseRegexConcept&);
+};
+
+//
+// RegexConcept:
+// Test every interface in the std:
+//
+template <class Regex>
+struct RegexConcept
+{
+ typedef typename Regex::value_type value_type;
+ typedef typename Regex::size_type size_type;
+ typedef typename Regex::flag_type flag_type;
+ typedef typename Regex::locale_type locale_type;
+
+ // derived test types:
+ typedef const value_type* pointer_type;
+ typedef std::basic_string<value_type> string_type;
+ typedef boost::bidirectional_iterator_archetype<value_type> BidiIterator;
+ typedef global_regex_namespace::sub_match<BidiIterator> sub_match_type;
+ typedef global_regex_namespace::match_results<BidiIterator> match_results_type;
+ typedef output_iterator_archetype<value_type> OutIterator;
+
+
+ void constraints()
+ {
+ function_requires<BaseRegexConcept<Regex> >();
+ // string based construct:
+ Regex e1(m_string);
+ ignore_unused_variable_warning(e1);
+ Regex e2(m_string, m_flags);
+ ignore_unused_variable_warning(e2);
+
+ // assign etc:
+ Regex e;
+ e = m_string;
+ e.assign(m_string);
+ e.assign(m_string, m_flags);
+
+ // sub_match:
+ string_type s(m_sub);
+ ignore_unused_variable_warning(s);
+ s = m_sub.str();
+ ignore_unused_variable_warning(s);
+ int i = m_sub.compare(m_string);
+ ignore_unused_variable_warning(i);
+
+ int i2 = m_sub.compare(m_sub);
+ ignore_unused_variable_warning(i2);
+ i2 = m_sub.compare(m_pointer);
+ ignore_unused_variable_warning(i2);
+
+ bool b = m_sub == m_sub;
+ ignore_unused_variable_warning(b);
+ b = m_sub != m_sub;
+ ignore_unused_variable_warning(b);
+ b = m_sub <= m_sub;
+ ignore_unused_variable_warning(b);
+ b = m_sub <= m_sub;
+ ignore_unused_variable_warning(b);
+ b = m_sub > m_sub;
+ ignore_unused_variable_warning(b);
+ b = m_sub >= m_sub;
+ ignore_unused_variable_warning(b);
+
+ b = m_sub == m_pointer;
+ ignore_unused_variable_warning(b);
+ b = m_sub != m_pointer;
+ ignore_unused_variable_warning(b);
+ b = m_sub <= m_pointer;
+ ignore_unused_variable_warning(b);
+ b = m_sub <= m_pointer;
+ ignore_unused_variable_warning(b);
+ b = m_sub > m_pointer;
+ ignore_unused_variable_warning(b);
+ b = m_sub >= m_pointer;
+ ignore_unused_variable_warning(b);
+
+ b = m_pointer == m_sub;
+ ignore_unused_variable_warning(b);
+ b = m_pointer != m_sub;
+ ignore_unused_variable_warning(b);
+ b = m_pointer <= m_sub;
+ ignore_unused_variable_warning(b);
+ b = m_pointer <= m_sub;
+ ignore_unused_variable_warning(b);
+ b = m_pointer > m_sub;
+ ignore_unused_variable_warning(b);
+ b = m_pointer >= m_sub;
+ ignore_unused_variable_warning(b);
+
+ b = m_sub == m_char;
+ ignore_unused_variable_warning(b);
+ b = m_sub != m_char;
+ ignore_unused_variable_warning(b);
+ b = m_sub <= m_char;
+ ignore_unused_variable_warning(b);
+ b = m_sub <= m_char;
+ ignore_unused_variable_warning(b);
+ b = m_sub > m_char;
+ ignore_unused_variable_warning(b);
+ b = m_sub >= m_char;
+ ignore_unused_variable_warning(b);
+
+ b = m_char == m_sub;
+ ignore_unused_variable_warning(b);
+ b = m_char != m_sub;
+ ignore_unused_variable_warning(b);
+ b = m_char <= m_sub;
+ ignore_unused_variable_warning(b);
+ b = m_char <= m_sub;
+ ignore_unused_variable_warning(b);
+ b = m_char > m_sub;
+ ignore_unused_variable_warning(b);
+ b = m_char >= m_sub;
+ ignore_unused_variable_warning(b);
+
+ b = m_sub == m_string;
+ ignore_unused_variable_warning(b);
+ b = m_sub != m_string;
+ ignore_unused_variable_warning(b);
+ b = m_sub <= m_string;
+ ignore_unused_variable_warning(b);
+ b = m_sub <= m_string;
+ ignore_unused_variable_warning(b);
+ b = m_sub > m_string;
+ ignore_unused_variable_warning(b);
+ b = m_sub >= m_string;
+ ignore_unused_variable_warning(b);
+
+ b = m_string == m_sub;
+ ignore_unused_variable_warning(b);
+ b = m_string != m_sub;
+ ignore_unused_variable_warning(b);
+ b = m_string <= m_sub;
+ ignore_unused_variable_warning(b);
+ b = m_string <= m_sub;
+ ignore_unused_variable_warning(b);
+ b = m_string > m_sub;
+ ignore_unused_variable_warning(b);
+ b = m_string >= m_sub;
+ ignore_unused_variable_warning(b);
+
+ // match results:
+ m_string = m_results.str();
+ ignore_unused_variable_warning(m_string);
+ m_string = m_results.str(0);
+ ignore_unused_variable_warning(m_string);
+ m_out = m_cresults.format(m_out, m_string);
+ m_out = m_cresults.format(m_out, m_string, m_mft);
+ m_string = m_cresults.format(m_string);
+ ignore_unused_variable_warning(m_string);
+ m_string = m_cresults.format(m_string, m_mft);
+ ignore_unused_variable_warning(m_string);
+
+ // regex_match:
+ b = global_regex_namespace::regex_match(m_string, m_smatch, e);
+ ignore_unused_variable_warning(b);
+ b = global_regex_namespace::regex_match(m_string, m_smatch, e, m_mft);
+ ignore_unused_variable_warning(b);
+ b = global_regex_namespace::regex_match(m_string, e);
+ ignore_unused_variable_warning(b);
+ b = global_regex_namespace::regex_match(m_string, e, m_mft);
+ ignore_unused_variable_warning(b);
+
+ // regex_search:
+ b = global_regex_namespace::regex_search(m_string, m_smatch, e);
+ ignore_unused_variable_warning(b);
+ b = global_regex_namespace::regex_search(m_string, m_smatch, e, m_mft);
+ ignore_unused_variable_warning(b);
+ b = global_regex_namespace::regex_search(m_string, e);
+ ignore_unused_variable_warning(b);
+ b = global_regex_namespace::regex_search(m_string, e, m_mft);
+ ignore_unused_variable_warning(b);
+
+ // regex_replace:
+ m_out = global_regex_namespace::regex_replace(m_out, m_in, m_in, e, m_string, m_mft);
+ m_out = global_regex_namespace::regex_replace(m_out, m_in, m_in, e, m_string);
+ m_string = global_regex_namespace::regex_replace(m_string, e, m_string, m_mft);
+ ignore_unused_variable_warning(m_string);
+ m_string = global_regex_namespace::regex_replace(m_string, e, m_string);
+ ignore_unused_variable_warning(m_string);
+
+ }
+
+ flag_type m_flags;
+ string_type m_string;
+ const sub_match_type m_sub;
+ match_results_type m_results;
+ pointer_type m_pointer;
+ value_type m_char;
+ const match_results_type m_cresults;
+ OutIterator m_out;
+ BidiIterator m_in;
+ global_regex_namespace::regex_constants::match_flag_type m_mft;
+ global_regex_namespace::match_results<typename string_type::const_iterator> m_smatch;
+
+ RegexConcept();
+ RegexConcept(const RegexConcept&);
+ RegexConcept& operator=(const RegexConcept&);
+};
+
+#ifndef BOOST_REGEX_TEST_STD
+//
+// BoostRegexConcept:
+// Test every interface in the Boost implementation:
+//
+template <class Regex>
+struct BoostRegexConcept
+{
+ typedef typename Regex::value_type value_type;
+ typedef typename Regex::size_type size_type;
+ typedef typename Regex::flag_type flag_type;
+ typedef typename Regex::locale_type locale_type;
+
+ // derived test types:
+ typedef const value_type* pointer_type;
+ typedef std::basic_string<value_type> string_type;
+ typedef typename Regex::const_iterator const_iterator;
+ typedef bidirectional_iterator_archetype<value_type> BidiIterator;
+ typedef global_regex_namespace::sub_match<BidiIterator> sub_match_type;
+ typedef global_regex_namespace::match_results<BidiIterator> match_results_type;
+
+ void constraints()
+ {
+ global_regex_namespace::regex_constants::match_flag_type mopts
+ = global_regex_namespace::regex_constants::match_default
+ | global_regex_namespace::regex_constants::match_not_bol
+ | global_regex_namespace::regex_constants::match_not_eol
+ | global_regex_namespace::regex_constants::match_not_bow
+ | global_regex_namespace::regex_constants::match_not_eow
+ | global_regex_namespace::regex_constants::match_any
+ | global_regex_namespace::regex_constants::match_not_null
+ | global_regex_namespace::regex_constants::match_continuous
+ | global_regex_namespace::regex_constants::match_partial
+ | global_regex_namespace::regex_constants::match_prev_avail
+ | global_regex_namespace::regex_constants::format_default
+ | global_regex_namespace::regex_constants::format_sed
+ | global_regex_namespace::regex_constants::format_perl
+ | global_regex_namespace::regex_constants::format_no_copy
+ | global_regex_namespace::regex_constants::format_first_only;
+
+ (void)mopts;
+
+ function_requires<RegexConcept<Regex> >();
+ const global_regex_namespace::regex_error except(global_regex_namespace::regex_constants::error_collate);
+ std::ptrdiff_t pt = except.position();
+ ignore_unused_variable_warning(pt);
+ const Regex ce, ce2;
+#ifndef BOOST_NO_STD_LOCALE
+ m_stream << ce;
+#endif
+ unsigned i = ce.error_code();
+ ignore_unused_variable_warning(i);
+ pointer_type p = ce.expression();
+ ignore_unused_variable_warning(p);
+ int i2 = ce.compare(ce2);
+ ignore_unused_variable_warning(i2);
+ bool b = ce == ce2;
+ ignore_unused_variable_warning(b);
+ b = ce != ce2;
+ ignore_unused_variable_warning(b);
+ b = ce < ce2;
+ ignore_unused_variable_warning(b);
+ b = ce > ce2;
+ ignore_unused_variable_warning(b);
+ b = ce <= ce2;
+ ignore_unused_variable_warning(b);
+ b = ce >= ce2;
+ ignore_unused_variable_warning(b);
+ i = ce.status();
+ ignore_unused_variable_warning(i);
+ size_type s = ce.max_size();
+ ignore_unused_variable_warning(s);
+ s = ce.size();
+ ignore_unused_variable_warning(s);
+ const_iterator pi = ce.begin();
+ ignore_unused_variable_warning(pi);
+ pi = ce.end();
+ ignore_unused_variable_warning(pi);
+ string_type s2 = ce.str();
+ ignore_unused_variable_warning(s2);
+
+ m_string = m_sub + m_sub;
+ ignore_unused_variable_warning(m_string);
+ m_string = m_sub + m_pointer;
+ ignore_unused_variable_warning(m_string);
+ m_string = m_pointer + m_sub;
+ ignore_unused_variable_warning(m_string);
+ m_string = m_sub + m_string;
+ ignore_unused_variable_warning(m_string);
+ m_string = m_string + m_sub;
+ ignore_unused_variable_warning(m_string);
+ m_string = m_sub + m_char;
+ ignore_unused_variable_warning(m_string);
+ m_string = m_char + m_sub;
+ ignore_unused_variable_warning(m_string);
+
+#ifndef BOOST_NO_STD_LOCALE
+ m_stream << m_sub;
+ m_stream << m_cresults;
+#endif
+ }
+
+ std::basic_ostream<value_type> m_stream;
+ sub_match_type m_sub;
+ pointer_type m_pointer;
+ string_type m_string;
+ const value_type m_char;
+ match_results_type m_results;
+ const match_results_type m_cresults;
+
+ BoostRegexConcept();
+ BoostRegexConcept(const BoostRegexConcept&);
+ BoostRegexConcept& operator=(const BoostRegexConcept&);
+};
+
+#endif // BOOST_REGEX_TEST_STD
+
+}
+
+#endif

Added: sandbox/SOC/2007/regex/named-captures/boost/regex/config.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/boost/regex/config.hpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,411 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE config.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: regex extended config setup.
+ */
+
+#ifndef BOOST_REGEX_CONFIG_HPP
+#define BOOST_REGEX_CONFIG_HPP
+/*
+ * Borland C++ Fix/error check
+ * this has to go *before* we include any std lib headers:
+ */
+#if defined(__BORLANDC__)
+# include <boost/regex/config/borland.hpp>
+#endif
+
+/*****************************************************************************
+ *
+ * Include all the headers we need here:
+ *
+ ****************************************************************************/
+
+#ifdef __cplusplus
+
+# ifndef BOOST_REGEX_USER_CONFIG
+# define BOOST_REGEX_USER_CONFIG <boost/regex/user.hpp>
+# endif
+
+# include BOOST_REGEX_USER_CONFIG
+
+# include <boost/config.hpp>
+
+#else
+ /*
+ * C build,
+ * don't include <boost/config.hpp> because that may
+ * do C++ specific things in future...
+ */
+# include <stdlib.h>
+# include <stddef.h>
+# ifdef _MSC_VER
+# define BOOST_MSVC _MSC_VER
+# endif
+#endif
+
+/*****************************************************************************
+ *
+ * Boilerplate regex config options:
+ *
+ ****************************************************************************/
+
+/* Obsolete macro, use BOOST_VERSION instead: */
+#define BOOST_RE_VERSION 320
+
+/* fix: */
+#if defined(_UNICODE) && !defined(UNICODE)
+#define UNICODE
+#endif
+
+/*
+ * Fix for gcc prior to 3.4: std::ctype<wchar_t> doesn't allow
+ * masks to be combined, for example:
+ * std::use_facet<std::ctype<wchar_t> >.is(std::ctype_base::lower|std::ctype_base::upper, L'a');
+ * returns *false*.
+ */
+#ifdef __GLIBCPP__
+# define BOOST_REGEX_BUGGY_CTYPE_FACET
+#endif
+
+/*
+ * Intel C++ before 8.0 ends up with unresolved externals unless we turn off
+ * extern template support:
+ */
+#if defined(BOOST_INTEL) && defined(__cplusplus) && (BOOST_INTEL <= 800)
+# define BOOST_REGEX_NO_EXTERNAL_TEMPLATES
+#endif
+
+/*
+ * If there isn't good enough wide character support then there will
+ * be no wide character regular expressions:
+ */
+#if (defined(BOOST_NO_CWCHAR) || defined(BOOST_NO_CWCTYPE) || defined(BOOST_NO_STD_WSTRING))
+# if !defined(BOOST_NO_WREGEX)
+# define BOOST_NO_WREGEX
+# endif
+#else
+# if defined(__sgi) && (defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION))
+ /* STLPort on IRIX is misconfigured: <cwctype> does not compile
+ * as a temporary fix include <wctype.h> instead and prevent inclusion
+ * of STLPort version of <cwctype> */
+# include <wctype.h>
+# define __STLPORT_CWCTYPE
+# define _STLP_CWCTYPE
+# endif
+
+#ifdef __cplusplus
+# include <boost/regex/config/cwchar.hpp>
+#endif
+
+#endif
+
+/*
+ * If Win32 support has been disabled for boost in general, then
+ * it is for regex in particular:
+ */
+#if defined(BOOST_DISABLE_WIN32) && !defined(BOOST_REGEX_NO_W32)
+# define BOOST_REGEX_NO_W32
+#endif
+
+/* disable our own file-iterators and mapfiles if we can't
+ * support them: */
+#if !defined(BOOST_HAS_DIRENT_H) && !(defined(_WIN32) && !defined(BOOST_REGEX_NO_W32))
+# define BOOST_REGEX_NO_FILEITER
+#endif
+
+/* backwards compatibitity: */
+#if defined(BOOST_RE_NO_LIB)
+# define BOOST_REGEX_NO_LIB
+#endif
+
+#if defined(__GNUC__) && (defined(_WIN32) || defined(__CYGWIN__))
+/* gcc on win32 has problems if you include <windows.h>
+ (sporadically generates bad code). */
+# define BOOST_REGEX_NO_W32
+#endif
+#if defined(__COMO__) && !defined(BOOST_REGEX_NO_W32) && !defined(_MSC_EXTENSIONS)
+# define BOOST_REGEX_NO_W32
+#endif
+
+/*****************************************************************************
+ *
+ * Wide character workarounds:
+ *
+ ****************************************************************************/
+
+/*
+ * define BOOST_REGEX_HAS_OTHER_WCHAR_T when wchar_t is a native type, but the users
+ * code may be built with wchar_t as unsigned short: basically when we're building
+ * with MSVC and the /Zc:wchar_t option we place some extra unsigned short versions
+ * of the non-inline functions in the library, so that users can still link to the lib,
+ * irrespective of whether their own code is built with /Zc:wchar_t.
+ */
+#if defined(__cplusplus) && (defined(BOOST_MSVC) || defined(__ICL)) && !defined(BOOST_NO_INTRINSIC_WCHAR_T) && defined(BOOST_WINDOWS) && !defined(__SGI_STL_PORT) && !defined(_STLPORT_VERSION)
+# define BOOST_REGEX_HAS_OTHER_WCHAR_T
+# ifdef BOOST_MSVC
+# pragma warning(push)
+# pragma warning(disable : 4251 4231 4660)
+# endif
+# ifdef _DLL
+# include <string>
+ extern template class __declspec(dllimport) std::basic_string<unsigned short>;
+# endif
+# ifdef BOOST_MSVC
+# pragma warning(pop)
+# endif
+#endif
+
+
+/*****************************************************************************
+ *
+ * Set up dll import/export options:
+ *
+ ****************************************************************************/
+
+#if defined(BOOST_HAS_DECLSPEC) && (defined(BOOST_REGEX_DYN_LINK) || defined(BOOST_ALL_DYN_LINK)) && !defined(BOOST_REGEX_STATIC_LINK)
+# if defined(BOOST_REGEX_SOURCE)
+# define BOOST_REGEX_DECL __declspec(dllexport)
+# define BOOST_REGEX_BUILD_DLL
+# else
+# define BOOST_REGEX_DECL __declspec(dllimport)
+# endif
+#endif
+
+#ifndef BOOST_REGEX_DECL
+# define BOOST_REGEX_DECL
+#endif
+
+#if !defined(BOOST_REGEX_NO_LIB) && !defined(BOOST_REGEX_SOURCE) && !defined(BOOST_ALL_NO_LIB) && defined(__cplusplus)
+# define BOOST_LIB_NAME boost_regex
+# if defined(BOOST_REGEX_DYN_LINK) || defined(BOOST_ALL_DYN_LINK)
+# define BOOST_DYN_LINK
+# endif
+# ifdef BOOST_REGEX_DIAG
+# define BOOST_LIB_DIAGNOSTIC
+# endif
+# include <boost/config/auto_link.hpp>
+#endif
+
+/*****************************************************************************
+ *
+ * Set up function call type:
+ *
+ ****************************************************************************/
+
+#if defined(BOOST_MSVC) && (BOOST_MSVC >= 1200) && defined(_MSC_EXTENSIONS)
+#if defined(_DEBUG) || defined(__MSVC_RUNTIME_CHECKS) || defined(_MANAGED)
+# define BOOST_REGEX_CALL __cdecl
+#else
+# define BOOST_REGEX_CALL __fastcall
+#endif
+# define BOOST_REGEX_CCALL __cdecl
+#endif
+
+#if defined(__BORLANDC__) && !defined(BOOST_DISABLE_WIN32)
+# define BOOST_REGEX_CALL __fastcall
+# define BOOST_REGEX_CCALL __stdcall
+#endif
+
+#ifndef BOOST_REGEX_CALL
+# define BOOST_REGEX_CALL
+#endif
+#ifndef BOOST_REGEX_CCALL
+#define BOOST_REGEX_CCALL
+#endif
+
+/*****************************************************************************
+ *
+ * Set up localisation model:
+ *
+ ****************************************************************************/
+
+/* backwards compatibility: */
+#ifdef BOOST_RE_LOCALE_C
+# define BOOST_REGEX_USE_C_LOCALE
+#endif
+
+#ifdef BOOST_RE_LOCALE_CPP
+# define BOOST_REGEX_USE_CPP_LOCALE
+#endif
+
+/* Win32 defaults to native Win32 locale: */
+#if defined(_WIN32) && !defined(BOOST_REGEX_USE_WIN32_LOCALE) && !defined(BOOST_REGEX_USE_C_LOCALE) && !defined(BOOST_REGEX_USE_CPP_LOCALE) && !defined(BOOST_REGEX_NO_W32)
+# define BOOST_REGEX_USE_WIN32_LOCALE
+#endif
+/* otherwise use C++ locale if supported: */
+#if !defined(BOOST_REGEX_USE_WIN32_LOCALE) && !defined(BOOST_REGEX_USE_C_LOCALE) && !defined(BOOST_REGEX_USE_CPP_LOCALE) && !defined(BOOST_NO_STD_LOCALE)
+# define BOOST_REGEX_USE_CPP_LOCALE
+#endif
+/* otherwise use C+ locale: */
+#if !defined(BOOST_REGEX_USE_WIN32_LOCALE) && !defined(BOOST_REGEX_USE_C_LOCALE) && !defined(BOOST_REGEX_USE_CPP_LOCALE)
+# define BOOST_REGEX_USE_C_LOCALE
+#endif
+
+#ifndef BOOST_REGEX_MAX_STATE_COUNT
+# define BOOST_REGEX_MAX_STATE_COUNT 100000000
+#endif
+
+
+/*****************************************************************************
+ *
+ * Error Handling for exception free compilers:
+ *
+ ****************************************************************************/
+
+#ifdef BOOST_NO_EXCEPTIONS
+/*
+ * If there are no exceptions then we must report critical-errors
+ * the only way we know how; by terminating.
+ */
+#include <stdexcept>
+#include <string>
+#include <boost/throw_exception.hpp>
+
+# define BOOST_REGEX_NOEH_ASSERT(x)\
+if(0 == (x))\
+{\
+ std::string s("Error: critical regex++ failure in: ");\
+ s.append(#x);\
+ std::runtime_error e(s);\
+ boost::throw_exception(e);\
+}
+#else
+/*
+ * With exceptions then error handling is taken care of and
+ * there is no need for these checks:
+ */
+# define BOOST_REGEX_NOEH_ASSERT(x)
+#endif
+
+
+/*****************************************************************************
+ *
+ * Stack protection under MS Windows:
+ *
+ ****************************************************************************/
+
+#if !defined(BOOST_REGEX_NO_W32) && !defined(BOOST_REGEX_V3)
+# if(defined(_WIN32) || defined(_WIN64) || defined(_WINCE)) \
+ && !defined(__GNUC__) \
+ && !(defined(__BORLANDC__) && (__BORLANDC__ >= 0x600)) \
+ && !(defined(__MWERKS__) && (__MWERKS__ <= 0x3003))
+# define BOOST_REGEX_HAS_MS_STACK_GUARD
+# endif
+#elif defined(BOOST_REGEX_HAS_MS_STACK_GUARD)
+# undef BOOST_REGEX_HAS_MS_STACK_GUARD
+#endif
+
+#if defined(__cplusplus) && defined(BOOST_REGEX_HAS_MS_STACK_GUARD)
+
+namespace boost{
+namespace re_detail{
+
+BOOST_REGEX_DECL void BOOST_REGEX_CALL reset_stack_guard_page();
+
+}
+}
+
+#endif
+
+
+/*****************************************************************************
+ *
+ * Algorithm selection and configuration:
+ *
+ ****************************************************************************/
+
+#if !defined(BOOST_REGEX_RECURSIVE) && !defined(BOOST_REGEX_NON_RECURSIVE)
+# if defined(BOOST_REGEX_HAS_MS_STACK_GUARD) && !defined(_STLP_DEBUG) && !defined(__STL_DEBUG) && !(defined(BOOST_MSVC) && (BOOST_MSVC >= 1400))
+# define BOOST_REGEX_RECURSIVE
+# else
+# define BOOST_REGEX_NON_RECURSIVE
+# endif
+#endif
+
+#ifdef BOOST_REGEX_NON_RECURSIVE
+# ifdef BOOST_REGEX_RECURSIVE
+# error "Can't set both BOOST_REGEX_RECURSIVE and BOOST_REGEX_NON_RECURSIVE"
+# endif
+# ifndef BOOST_REGEX_BLOCKSIZE
+# define BOOST_REGEX_BLOCKSIZE 4096
+# endif
+# if BOOST_REGEX_BLOCKSIZE < 512
+# error "BOOST_REGEX_BLOCKSIZE must be at least 512"
+# endif
+# ifndef BOOST_REGEX_MAX_BLOCKS
+# define BOOST_REGEX_MAX_BLOCKS 1024
+# endif
+# ifdef BOOST_REGEX_HAS_MS_STACK_GUARD
+# undef BOOST_REGEX_HAS_MS_STACK_GUARD
+# endif
+# ifndef BOOST_REGEX_MAX_CACHE_BLOCKS
+# define BOOST_REGEX_MAX_CACHE_BLOCKS 16
+# endif
+#endif
+
+
+/*****************************************************************************
+ *
+ * helper memory allocation functions:
+ *
+ ****************************************************************************/
+
+#if defined(__cplusplus) && defined(BOOST_REGEX_NON_RECURSIVE)
+namespace boost{ namespace re_detail{
+
+BOOST_REGEX_DECL void* BOOST_REGEX_CALL get_mem_block();
+BOOST_REGEX_DECL void BOOST_REGEX_CALL put_mem_block(void*);
+
+}} /* namespaces */
+#endif
+
+/*****************************************************************************
+ *
+ * Diagnostics:
+ *
+ ****************************************************************************/
+
+#ifdef BOOST_REGEX_CONFIG_INFO
+BOOST_REGEX_DECL void BOOST_REGEX_CALL print_regex_library_info();
+#endif
+
+#if defined(BOOST_REGEX_DIAG)
+# pragma message ("BOOST_REGEX_DECL" BOOST_STRINGIZE(=BOOST_REGEX_DECL))
+# pragma message ("BOOST_REGEX_CALL" BOOST_STRINGIZE(=BOOST_REGEX_CALL))
+# pragma message ("BOOST_REGEX_CCALL" BOOST_STRINGIZE(=BOOST_REGEX_CCALL))
+#ifdef BOOST_REGEX_USE_C_LOCALE
+# pragma message ("Using C locale in regex traits class")
+#elif BOOST_REGEX_USE_CPP_LOCALE
+# pragma message ("Using C++ locale in regex traits class")
+#else
+# pragma message ("Using Win32 locale in regex traits class")
+#endif
+#if defined(BOOST_REGEX_DYN_LINK) || defined(BOOST_ALL_DYN_LINK)
+# pragma message ("Dynamic linking enabled")
+#endif
+#if defined(BOOST_REGEX_NO_LIB) || defined(BOOST_ALL_NO_LIB)
+# pragma message ("Auto-linking disabled")
+#endif
+#ifdef BOOST_REGEX_NO_EXTERNAL_TEMPLATES
+# pragma message ("Extern templates disabled")
+#endif
+
+#endif
+
+#endif
+
+
+
+

Added: sandbox/SOC/2007/regex/named-captures/boost/regex/config/borland.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/boost/regex/config/borland.hpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,72 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE boost/regex/config/borland.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: regex borland-specific config setup.
+ */
+
+
+#if defined(__BORLANDC__)
+# if (__BORLANDC__ == 0x550) || (__BORLANDC__ == 0x551)
+ // problems with std::basic_string and dll RTL:
+# if defined(_RTLDLL) && defined(_RWSTD_COMPILE_INSTANTIATE)
+# ifdef BOOST_REGEX_BUILD_DLL
+# error _RWSTD_COMPILE_INSTANTIATE must not be defined when building regex++ as a DLL
+# else
+# pragma message("Defining _RWSTD_COMPILE_INSTANTIATE when linking to the DLL version of the RTL may produce memory corruption problems in std::basic_string, as a result of separate versions of basic_string's static data in the RTL and you're exe/dll: be warned!!")
+# endif
+# endif
+# ifndef _RTLDLL
+ // this is harmless for a staic link:
+# define _RWSTD_COMPILE_INSTANTIATE
+# endif
+ // external templates cause problems for some reason:
+# define BOOST_REGEX_NO_EXTERNAL_TEMPLATES
+# endif
+# if (__BORLANDC__ <= 0x540) && !defined(BOOST_REGEX_NO_LIB) && !defined(_NO_VCL)
+ // C++ Builder 4 and earlier, we can't tell whether we should be using
+ // the VCL runtime or not, do a static link instead:
+# define BOOST_REGEX_STATIC_LINK
+# endif
+ //
+ // VCL support:
+ // if we're building a console app then there can't be any VCL (can there?)
+# if !defined(__CONSOLE__) && !defined(_NO_VCL)
+# define BOOST_REGEX_USE_VCL
+# endif
+ //
+ // if this isn't Win32 then don't automatically select link
+ // libraries:
+ //
+# ifndef _Windows
+# ifndef BOOST_REGEX_NO_LIB
+# define BOOST_REGEX_NO_LIB
+# endif
+# ifndef BOOST_REGEX_STATIC_LINK
+# define BOOST_REGEX_STATIC_LINK
+# endif
+# endif
+
+#if __BORLANDC__ < 0x600
+//
+// string workarounds:
+//
+#include <cstring>
+#undef strcmp
+#undef strcpy
+#endif
+
+#endif
+
+

Added: sandbox/SOC/2007/regex/named-captures/boost/regex/config/cwchar.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/boost/regex/config/cwchar.hpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,207 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE boost/regex/config/cwchar.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: regex wide character string fixes.
+ */
+
+#ifndef BOOST_REGEX_CONFIG_CWCHAR_HPP
+#define BOOST_REGEX_CONFIG_CWCHAR_HPP
+
+#include <cwchar>
+#include <cwctype>
+#include <boost/config.hpp>
+
+#if defined(__STD_RWCOMPILER_H__) || defined(_RWSTD_VER)
+// apparently this is required for the RW STL on Linux:
+#undef iswalnum
+#undef iswalpha
+#undef iswblank
+#undef iswcntrl
+#undef iswdigit
+#undef iswgraph
+#undef iswlower
+#undef iswprint
+#undef iswprint
+#undef iswpunct
+#undef iswspace
+#undef iswupper
+#undef iswxdigit
+#undef iswctype
+#undef towlower
+#undef towupper
+#undef towctrans
+#undef wctrans
+#undef wctype
+#endif
+
+namespace std{
+
+#ifndef BOOST_NO_STDC_NAMESPACE
+extern "C"{
+#endif
+
+#ifdef iswalnum
+inline int (iswalnum)(wint_t i)
+{ return iswalnum(i); }
+#undef iswalnum
+#elif defined(BOOST_NO_STDC_NAMESPACE)
+using ::iswalnum;
+#endif
+
+#ifdef iswalpha
+inline int (iswalpha)(wint_t i)
+{ return iswalpha(i); }
+#undef iswalpha
+#elif defined(BOOST_NO_STDC_NAMESPACE)
+using ::iswalpha;
+#endif
+
+#ifdef iswcntrl
+inline int (iswcntrl)(wint_t i)
+{ return iswcntrl(i); }
+#undef iswcntrl
+#elif defined(BOOST_NO_STDC_NAMESPACE)
+using ::iswcntrl;
+#endif
+
+#ifdef iswdigit
+inline int (iswdigit)(wint_t i)
+{ return iswdigit(i); }
+#undef iswdigit
+#elif defined(BOOST_NO_STDC_NAMESPACE)
+using ::iswdigit;
+#endif
+
+#ifdef iswgraph
+inline int (iswgraph)(wint_t i)
+{ return iswgraph(i); }
+#undef iswgraph
+#elif defined(BOOST_NO_STDC_NAMESPACE)
+using ::iswgraph;
+#endif
+
+#ifdef iswlower
+inline int (iswlower)(wint_t i)
+{ return iswlower(i); }
+#undef iswlower
+#elif defined(BOOST_NO_STDC_NAMESPACE)
+using ::iswlower;
+#endif
+
+#ifdef iswprint
+inline int (iswprint)(wint_t i)
+{ return iswprint(i); }
+#undef iswprint
+#elif defined(BOOST_NO_STDC_NAMESPACE)
+using ::iswprint;
+#endif
+
+#ifdef iswpunct
+inline int (iswpunct)(wint_t i)
+{ return iswpunct(i); }
+#undef iswpunct
+#elif defined(BOOST_NO_STDC_NAMESPACE)
+using ::iswpunct;
+#endif
+
+#ifdef iswspace
+inline int (iswspace)(wint_t i)
+{ return iswspace(i); }
+#undef iswspace
+#elif defined(BOOST_NO_STDC_NAMESPACE)
+using ::iswspace;
+#endif
+
+#ifdef iswupper
+inline int (iswupper)(wint_t i)
+{ return iswupper(i); }
+#undef iswupper
+#elif defined(BOOST_NO_STDC_NAMESPACE)
+using ::iswupper;
+#endif
+
+#ifdef iswxdigit
+inline int (iswxdigit)(wint_t i)
+{ return iswxdigit(i); }
+#undef iswxdigit
+#elif defined(BOOST_NO_STDC_NAMESPACE)
+using ::iswxdigit;
+#endif
+
+#ifdef towlower
+inline wint_t (towlower)(wint_t i)
+{ return towlower(i); }
+#undef towlower
+#elif defined(BOOST_NO_STDC_NAMESPACE)
+using ::towlower;
+#endif
+
+#ifdef towupper
+inline wint_t (towupper)(wint_t i)
+{ return towupper(i); }
+#undef towupper
+#elif defined(BOOST_NO_STDC_NAMESPACE)
+using :: towupper;
+#endif
+
+#ifdef wcscmp
+inline int (wcscmp)(const wchar_t *p1, const wchar_t *p2)
+{ return wcscmp(p1,p2); }
+#undef wcscmp
+#elif defined(BOOST_NO_STDC_NAMESPACE)
+using ::wcscmp;
+#endif
+
+#ifdef wcscoll
+inline int (wcscoll)(const wchar_t *p1, const wchar_t *p2)
+{ return wcscoll(p1,p2); }
+#undef wcscoll
+#elif defined(BOOST_NO_STDC_NAMESPACE)
+using ::wcscoll;
+#endif
+
+#ifdef wcscpy
+inline wchar_t *(wcscpy)(wchar_t *p1, const wchar_t *p2)
+{ return wcscpy(p1,p2); }
+#undef wcscpy
+#elif defined(BOOST_NO_STDC_NAMESPACE)
+using ::wcscpy;
+#endif
+
+#ifdef wcslen
+inline size_t (wcslen)(const wchar_t *p)
+{ return wcslen(p); }
+#undef wcslen
+#elif defined(BOOST_NO_STDC_NAMESPACE)
+using ::wcslen;
+#endif
+
+#ifdef wcsxfrm
+size_t wcsxfrm(wchar_t *p1, const wchar_t *p2, size_t s)
+{ return wcsxfrm(p1,p2,s); }
+#undef wcsxfrm
+#elif defined(BOOST_NO_STDC_NAMESPACE)
+using ::wcsxfrm;
+#endif
+
+
+#ifndef BOOST_NO_STDC_NAMESPACE
+} // extern "C"
+#endif
+
+} // namespace std
+
+#endif
+

Added: sandbox/SOC/2007/regex/named-captures/boost/regex/icu.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/boost/regex/icu.hpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,1017 @@
+/*
+ *
+ * Copyright (c) 2004
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE icu.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Unicode regular expressions on top of the ICU Library.
+ */
+
+#ifndef BOOST_REGEX_ICU_HPP
+#define BOOST_REGEX_ICU_HPP
+
+#include <unicode/utypes.h>
+#include <unicode/uchar.h>
+#include <unicode/coll.h>
+#include <boost/regex.hpp>
+#include <boost/regex/pending/unicode_iterator.hpp>
+#include <boost/mpl/int_fwd.hpp>
+#include <bitset>
+
+
+namespace boost{
+
+namespace re_detail{
+
+//
+// Implementation details:
+//
+class BOOST_REGEX_DECL icu_regex_traits_implementation
+{
+ typedef UChar32 char_type;
+ typedef std::size_t size_type;
+ typedef std::vector<char_type> string_type;
+ typedef U_NAMESPACE_QUALIFIER Locale locale_type;
+ typedef boost::uint_least32_t char_class_type;
+public:
+ icu_regex_traits_implementation(const U_NAMESPACE_QUALIFIER Locale& l)
+ : m_locale(l)
+ {
+ UErrorCode success = U_ZERO_ERROR;
+ m_collator.reset(U_NAMESPACE_QUALIFIER Collator::createInstance(l, success));
+ if(U_SUCCESS(success) == 0)
+ init_error();
+ m_collator->setStrength(U_NAMESPACE_QUALIFIER Collator::IDENTICAL);
+ success = U_ZERO_ERROR;
+ m_primary_collator.reset(U_NAMESPACE_QUALIFIER Collator::createInstance(l, success));
+ if(U_SUCCESS(success) == 0)
+ init_error();
+ m_primary_collator->setStrength(U_NAMESPACE_QUALIFIER Collator::PRIMARY);
+ }
+ U_NAMESPACE_QUALIFIER Locale getloc()const
+ {
+ return m_locale;
+ }
+ string_type do_transform(const char_type* p1, const char_type* p2, const U_NAMESPACE_QUALIFIER Collator* pcoll) const;
+ string_type transform(const char_type* p1, const char_type* p2) const
+ {
+ return do_transform(p1, p2, m_collator.get());
+ }
+ string_type transform_primary(const char_type* p1, const char_type* p2) const
+ {
+ return do_transform(p1, p2, m_primary_collator.get());
+ }
+private:
+ void init_error()
+ {
+ std::runtime_error e("Could not initialize ICU resources");
+ boost::throw_exception(e);
+ }
+ U_NAMESPACE_QUALIFIER Locale m_locale; // The ICU locale that we're using
+ boost::scoped_ptr< U_NAMESPACE_QUALIFIER Collator> m_collator; // The full collation object
+ boost::scoped_ptr< U_NAMESPACE_QUALIFIER Collator> m_primary_collator; // The primary collation object
+};
+
+inline boost::shared_ptr<icu_regex_traits_implementation> get_icu_regex_traits_implementation(const U_NAMESPACE_QUALIFIER Locale& loc)
+{
+ return boost::shared_ptr<icu_regex_traits_implementation>(new icu_regex_traits_implementation(loc));
+}
+
+}
+
+class BOOST_REGEX_DECL icu_regex_traits
+{
+public:
+ typedef UChar32 char_type;
+ typedef std::size_t size_type;
+ typedef std::vector<char_type> string_type;
+ typedef U_NAMESPACE_QUALIFIER Locale locale_type;
+#ifdef BOOST_NO_INT64_T
+ typedef std::bitset<64> char_class_type;
+#else
+ typedef boost::uint64_t char_class_type;
+#endif
+
+ struct boost_extensions_tag{};
+
+ icu_regex_traits()
+ : m_pimpl(re_detail::get_icu_regex_traits_implementation(U_NAMESPACE_QUALIFIER Locale()))
+ {
+ }
+ static size_type length(const char_type* p);
+
+ ::boost::regex_constants::syntax_type syntax_type(char_type c)const
+ {
+ return ((c < 0x7f) && (c > 0)) ? re_detail::get_default_syntax_type(static_cast<char>(c)) : regex_constants::syntax_char;
+ }
+ ::boost::regex_constants::escape_syntax_type escape_syntax_type(char_type c) const
+ {
+ return ((c < 0x7f) && (c > 0)) ? re_detail::get_default_escape_syntax_type(static_cast<char>(c)) : regex_constants::syntax_char;
+ }
+ char_type translate(char_type c) const
+ {
+ return c;
+ }
+ char_type translate_nocase(char_type c) const
+ {
+ return ::u_tolower(c);
+ }
+ char_type translate(char_type c, bool icase) const
+ {
+ return icase ? translate_nocase(c) : translate(c);
+ }
+ char_type tolower(char_type c) const
+ {
+ return ::u_tolower(c);
+ }
+ char_type toupper(char_type c) const
+ {
+ return ::u_toupper(c);
+ }
+ string_type transform(const char_type* p1, const char_type* p2) const
+ {
+ return m_pimpl->transform(p1, p2);
+ }
+ string_type transform_primary(const char_type* p1, const char_type* p2) const
+ {
+ return m_pimpl->transform_primary(p1, p2);
+ }
+ char_class_type lookup_classname(const char_type* p1, const char_type* p2) const;
+ string_type lookup_collatename(const char_type* p1, const char_type* p2) const;
+ bool isctype(char_type c, char_class_type f) const;
+ int toi(const char_type*& p1, const char_type* p2, int radix)const
+ {
+ return re_detail::global_toi(p1, p2, radix, *this);
+ }
+ int value(char_type c, int radix)const
+ {
+ return u_digit(c, static_cast< ::int8_t>(radix));
+ }
+ locale_type imbue(locale_type l)
+ {
+ locale_type result(m_pimpl->getloc());
+ m_pimpl = re_detail::get_icu_regex_traits_implementation(l);
+ return result;
+ }
+ locale_type getloc()const
+ {
+ return locale_type();
+ }
+ std::string error_string(::boost::regex_constants::error_type n) const
+ {
+ return re_detail::get_default_error_string(n);
+ }
+private:
+ icu_regex_traits(const icu_regex_traits&);
+ icu_regex_traits& operator=(const icu_regex_traits&);
+
+ //
+ // define the bitmasks offsets we need for additional character properties:
+ //
+ enum{
+ offset_blank = U_CHAR_CATEGORY_COUNT,
+ offset_space = U_CHAR_CATEGORY_COUNT+1,
+ offset_xdigit = U_CHAR_CATEGORY_COUNT+2,
+ offset_underscore = U_CHAR_CATEGORY_COUNT+3,
+ offset_unicode = U_CHAR_CATEGORY_COUNT+4,
+ offset_any = U_CHAR_CATEGORY_COUNT+5,
+ offset_ascii = U_CHAR_CATEGORY_COUNT+6
+ };
+
+ //
+ // and now the masks:
+ //
+ static const char_class_type mask_blank;
+ static const char_class_type mask_space;
+ static const char_class_type mask_xdigit;
+ static const char_class_type mask_underscore;
+ static const char_class_type mask_unicode;
+ static const char_class_type mask_any;
+ static const char_class_type mask_ascii;
+
+ static char_class_type lookup_icu_mask(const ::UChar32* p1, const ::UChar32* p2);
+
+ boost::shared_ptr< ::boost::re_detail::icu_regex_traits_implementation> m_pimpl;
+};
+
+} // namespace boost
+
+//
+// template instances:
+//
+#define BOOST_REGEX_CHAR_T UChar32
+#undef BOOST_REGEX_TRAITS_T
+#define BOOST_REGEX_TRAITS_T , icu_regex_traits
+#define BOOST_REGEX_ICU_INSTANCES
+#ifdef BOOST_REGEX_ICU_INSTANTIATE
+# define BOOST_REGEX_INSTANTIATE
+#endif
+#include <boost/regex/v4/instances.hpp>
+#undef BOOST_REGEX_CHAR_T
+#undef BOOST_REGEX_TRAITS_T
+#undef BOOST_REGEX_ICU_INSTANCES
+#ifdef BOOST_REGEX_INSTANTIATE
+# undef BOOST_REGEX_INSTANTIATE
+#endif
+
+namespace boost{
+
+// types:
+typedef basic_regex< ::UChar32, icu_regex_traits> u32regex;
+typedef match_results<const ::UChar32*> u32match;
+typedef match_results<const ::UChar*> u16match;
+
+//
+// Construction of 32-bit regex types from UTF-8 and UTF-16 primitives:
+//
+namespace re_detail{
+
+#if !defined(BOOST_NO_MEMBER_TEMPLATES) && !defined(__IBMCPP__)
+template <class InputIterator>
+inline u32regex do_make_u32regex(InputIterator i,
+ InputIterator j,
+ boost::regex_constants::syntax_option_type opt,
+ const boost::mpl::int_<1>*)
+{
+ typedef boost::u8_to_u32_iterator<InputIterator, UChar32> conv_type;
+ return u32regex(conv_type(i), conv_type(j), opt);
+}
+
+template <class InputIterator>
+inline u32regex do_make_u32regex(InputIterator i,
+ InputIterator j,
+ boost::regex_constants::syntax_option_type opt,
+ const boost::mpl::int_<2>*)
+{
+ typedef boost::u16_to_u32_iterator<InputIterator, UChar32> conv_type;
+ return u32regex(conv_type(i), conv_type(j), opt);
+}
+
+template <class InputIterator>
+inline u32regex do_make_u32regex(InputIterator i,
+ InputIterator j,
+ boost::regex_constants::syntax_option_type opt,
+ const boost::mpl::int_<4>*)
+{
+ return u32regex(i, j, opt);
+}
+#else
+template <class InputIterator>
+inline u32regex do_make_u32regex(InputIterator i,
+ InputIterator j,
+ boost::regex_constants::syntax_option_type opt,
+ const boost::mpl::int_<1>*)
+{
+ typedef boost::u8_to_u32_iterator<InputIterator, UChar32> conv_type;
+ typedef std::vector<UChar32> vector_type;
+ vector_type v;
+ conv_type a(i), b(j);
+ while(a != b)
+ {
+ v.push_back(*a);
+ ++a;
+ }
+ if(v.size())
+ return u32regex(&*v.begin(), v.size(), opt);
+ return u32regex(static_cast<UChar32 const*>(0), static_cast<u32regex::size_type>(0), opt);
+}
+
+template <class InputIterator>
+inline u32regex do_make_u32regex(InputIterator i,
+ InputIterator j,
+ boost::regex_constants::syntax_option_type opt,
+ const boost::mpl::int_<2>*)
+{
+ typedef boost::u16_to_u32_iterator<InputIterator, UChar32> conv_type;
+ typedef std::vector<UChar32> vector_type;
+ vector_type v;
+ conv_type a(i), b(j);
+ while(a != b)
+ {
+ v.push_back(*a);
+ ++a;
+ }
+ if(v.size())
+ return u32regex(&*v.begin(), v.size(), opt);
+ return u32regex(static_cast<UChar32 const*>(0), static_cast<u32regex::size_type>(0), opt);
+}
+
+template <class InputIterator>
+inline u32regex do_make_u32regex(InputIterator i,
+ InputIterator j,
+ boost::regex_constants::syntax_option_type opt,
+ const boost::mpl::int_<4>*)
+{
+ typedef std::vector<UCHAR32> vector_type;
+ vector_type v;
+ while(i != j)
+ {
+ v.push_back((UCHAR32)(*i));
+ ++a;
+ }
+ if(v.size())
+ return u32regex(&*v.begin(), v.size(), opt);
+ return u32regex(static_cast<UChar32 const*>(0), static_cast<u32regex::size_type>(0), opt);
+}
+#endif
+}
+
+//
+// Construction from an iterator pair:
+//
+template <class InputIterator>
+inline u32regex make_u32regex(InputIterator i,
+ InputIterator j,
+ boost::regex_constants::syntax_option_type opt)
+{
+ return re_detail::do_make_u32regex(i, j, opt, static_cast<boost::mpl::int_<sizeof(*i)> const*>(0));
+}
+//
+// construction from UTF-8 nul-terminated strings:
+//
+inline u32regex make_u32regex(const char* p, boost::regex_constants::syntax_option_type opt = boost::regex_constants::perl)
+{
+ return re_detail::do_make_u32regex(p, p + std::strlen(p), opt, static_cast<boost::mpl::int_<1> const*>(0));
+}
+inline u32regex make_u32regex(const unsigned char* p, boost::regex_constants::syntax_option_type opt = boost::regex_constants::perl)
+{
+ return re_detail::do_make_u32regex(p, p + std::strlen(reinterpret_cast<const char*>(p)), opt, static_cast<boost::mpl::int_<1> const*>(0));
+}
+//
+// construction from UTF-16 nul-terminated strings:
+//
+#ifndef BOOST_NO_WREGEX
+inline u32regex make_u32regex(const wchar_t* p, boost::regex_constants::syntax_option_type opt = boost::regex_constants::perl)
+{
+ return re_detail::do_make_u32regex(p, p + std::wcslen(p), opt, static_cast<boost::mpl::int_<sizeof(wchar_t)> const*>(0));
+}
+#endif
+#ifndef U_WCHAR_IS_UTF16
+inline u32regex make_u32regex(const UChar* p, boost::regex_constants::syntax_option_type opt = boost::regex_constants::perl)
+{
+ return re_detail::do_make_u32regex(p, p + u_strlen(p), opt, static_cast<boost::mpl::int_<2> const*>(0));
+}
+#endif
+//
+// construction from basic_string class-template:
+//
+template<class C, class T, class A>
+inline u32regex make_u32regex(const std::basic_string<C, T, A>& s, boost::regex_constants::syntax_option_type opt = boost::regex_constants::perl)
+{
+ return re_detail::do_make_u32regex(s.begin(), s.end(), opt, static_cast<boost::mpl::int_<sizeof(C)> const*>(0));
+}
+//
+// Construction from ICU string type:
+//
+inline u32regex make_u32regex(const UnicodeString& s, boost::regex_constants::syntax_option_type opt = boost::regex_constants::perl)
+{
+ return re_detail::do_make_u32regex(s.getBuffer(), s.getBuffer() + s.length(), opt, static_cast<boost::mpl::int_<2> const*>(0));
+}
+
+//
+// regex_match overloads that widen the character type as appropriate:
+//
+namespace re_detail{
+template<class MR1, class MR2>
+void copy_results(MR1& out, MR2 const& in)
+{
+ // copy results from an adapted MR2 match_results:
+ out.set_size(in.size(), in.prefix().first.base(), in.suffix().second.base());
+ out.set_base(in.base().base());
+ for(int i = 0; i < (int)in.size(); ++i)
+ {
+ if(in[i].matched)
+ {
+ out.set_first(in[i].first.base(), i);
+ out.set_second(in[i].second.base(), i);
+ }
+ }
+}
+
+template <class BidiIterator, class Allocator>
+inline bool do_regex_match(BidiIterator first, BidiIterator last,
+ match_results<BidiIterator, Allocator>& m,
+ const u32regex& e,
+ match_flag_type flags,
+ boost::mpl::int_<4> const*)
+{
+ return ::boost::regex_match(first, last, m, e, flags);
+}
+template <class BidiIterator, class Allocator>
+bool do_regex_match(BidiIterator first, BidiIterator last,
+ match_results<BidiIterator, Allocator>& m,
+ const u32regex& e,
+ match_flag_type flags,
+ boost::mpl::int_<2> const*)
+{
+ typedef u16_to_u32_iterator<BidiIterator, UChar32> conv_type;
+ typedef match_results<conv_type> match_type;
+ typedef typename match_type::allocator_type alloc_type;
+ match_type what;
+ bool result = ::boost::regex_match(conv_type(first), conv_type(last), what, e, flags);
+ // copy results across to m:
+ if(result) copy_results(m, what);
+ return result;
+}
+template <class BidiIterator, class Allocator>
+bool do_regex_match(BidiIterator first, BidiIterator last,
+ match_results<BidiIterator, Allocator>& m,
+ const u32regex& e,
+ match_flag_type flags,
+ boost::mpl::int_<1> const*)
+{
+ typedef u8_to_u32_iterator<BidiIterator, UChar32> conv_type;
+ typedef match_results<conv_type> match_type;
+ typedef typename match_type::allocator_type alloc_type;
+ match_type what;
+ bool result = ::boost::regex_match(conv_type(first), conv_type(last), what, e, flags);
+ // copy results across to m:
+ if(result) copy_results(m, what);
+ return result;
+}
+} // namespace re_detail
+
+template <class BidiIterator, class Allocator>
+inline bool u32regex_match(BidiIterator first, BidiIterator last,
+ match_results<BidiIterator, Allocator>& m,
+ const u32regex& e,
+ match_flag_type flags = match_default)
+{
+ return re_detail::do_regex_match(first, last, m, e, flags, static_cast<mpl::int_<sizeof(*first)> const*>(0));
+}
+inline bool u32regex_match(const UChar* p,
+ match_results<const UChar*>& m,
+ const u32regex& e,
+ match_flag_type flags = match_default)
+{
+ return re_detail::do_regex_match(p, p+u_strlen(p), m, e, flags, static_cast<mpl::int_<2> const*>(0));
+}
+#if !defined(U_WCHAR_IS_UTF16) && !defined(BOOST_NO_WREGEX)
+inline bool u32regex_match(const wchar_t* p,
+ match_results<const wchar_t*>& m,
+ const u32regex& e,
+ match_flag_type flags = match_default)
+{
+ return re_detail::do_regex_match(p, p+std::wcslen(p), m, e, flags, static_cast<mpl::int_<sizeof(wchar_t)> const*>(0));
+}
+#endif
+inline bool u32regex_match(const char* p,
+ match_results<const char*>& m,
+ const u32regex& e,
+ match_flag_type flags = match_default)
+{
+ return re_detail::do_regex_match(p, p+std::strlen(p), m, e, flags, static_cast<mpl::int_<1> const*>(0));
+}
+inline bool u32regex_match(const unsigned char* p,
+ match_results<const unsigned char*>& m,
+ const u32regex& e,
+ match_flag_type flags = match_default)
+{
+ return re_detail::do_regex_match(p, p+std::strlen((const char*)p), m, e, flags, static_cast<mpl::int_<1> const*>(0));
+}
+inline bool u32regex_match(const std::string& s,
+ match_results<std::string::const_iterator>& m,
+ const u32regex& e,
+ match_flag_type flags = match_default)
+{
+ return re_detail::do_regex_match(s.begin(), s.end(), m, e, flags, static_cast<mpl::int_<1> const*>(0));
+}
+#ifndef BOOST_NO_STD_WSTRING
+inline bool u32regex_match(const std::wstring& s,
+ match_results<std::wstring::const_iterator>& m,
+ const u32regex& e,
+ match_flag_type flags = match_default)
+{
+ return re_detail::do_regex_match(s.begin(), s.end(), m, e, flags, static_cast<mpl::int_<sizeof(wchar_t)> const*>(0));
+}
+#endif
+inline bool u32regex_match(const UnicodeString& s,
+ match_results<const UChar*>& m,
+ const u32regex& e,
+ match_flag_type flags = match_default)
+{
+ return re_detail::do_regex_match(s.getBuffer(), s.getBuffer() + s.length(), m, e, flags, static_cast<mpl::int_<sizeof(wchar_t)> const*>(0));
+}
+//
+// regex_match overloads that do not return what matched:
+//
+template <class BidiIterator>
+inline bool u32regex_match(BidiIterator first, BidiIterator last,
+ const u32regex& e,
+ match_flag_type flags = match_default)
+{
+ match_results<BidiIterator> m;
+ return re_detail::do_regex_match(first, last, m, e, flags, static_cast<mpl::int_<sizeof(*first)> const*>(0));
+}
+inline bool u32regex_match(const UChar* p,
+ const u32regex& e,
+ match_flag_type flags = match_default)
+{
+ match_results<const UChar*> m;
+ return re_detail::do_regex_match(p, p+u_strlen(p), m, e, flags, static_cast<mpl::int_<2> const*>(0));
+}
+#if !defined(U_WCHAR_IS_UTF16) && !defined(BOOST_NO_WREGEX)
+inline bool u32regex_match(const wchar_t* p,
+ const u32regex& e,
+ match_flag_type flags = match_default)
+{
+ match_results<const wchar_t*> m;
+ return re_detail::do_regex_match(p, p+std::wcslen(p), m, e, flags, static_cast<mpl::int_<sizeof(wchar_t)> const*>(0));
+}
+#endif
+inline bool u32regex_match(const char* p,
+ const u32regex& e,
+ match_flag_type flags = match_default)
+{
+ match_results<const char*> m;
+ return re_detail::do_regex_match(p, p+std::strlen(p), m, e, flags, static_cast<mpl::int_<1> const*>(0));
+}
+inline bool u32regex_match(const unsigned char* p,
+ const u32regex& e,
+ match_flag_type flags = match_default)
+{
+ match_results<const unsigned char*> m;
+ return re_detail::do_regex_match(p, p+std::strlen((const char*)p), m, e, flags, static_cast<mpl::int_<1> const*>(0));
+}
+inline bool u32regex_match(const std::string& s,
+ const u32regex& e,
+ match_flag_type flags = match_default)
+{
+ match_results<std::string::const_iterator> m;
+ return re_detail::do_regex_match(s.begin(), s.end(), m, e, flags, static_cast<mpl::int_<1> const*>(0));
+}
+#ifndef BOOST_NO_STD_WSTRING
+inline bool u32regex_match(const std::wstring& s,
+ const u32regex& e,
+ match_flag_type flags = match_default)
+{
+ match_results<std::wstring::const_iterator> m;
+ return re_detail::do_regex_match(s.begin(), s.end(), m, e, flags, static_cast<mpl::int_<sizeof(wchar_t)> const*>(0));
+}
+#endif
+inline bool u32regex_match(const UnicodeString& s,
+ const u32regex& e,
+ match_flag_type flags = match_default)
+{
+ match_results<const UChar*> m;
+ return re_detail::do_regex_match(s.getBuffer(), s.getBuffer() + s.length(), m, e, flags, static_cast<mpl::int_<sizeof(wchar_t)> const*>(0));
+}
+
+//
+// regex_search overloads that widen the character type as appropriate:
+//
+namespace re_detail{
+template <class BidiIterator, class Allocator>
+inline bool do_regex_search(BidiIterator first, BidiIterator last,
+ match_results<BidiIterator, Allocator>& m,
+ const u32regex& e,
+ match_flag_type flags,
+ BidiIterator base,
+ boost::mpl::int_<4> const*)
+{
+ return ::boost::regex_search(first, last, m, e, flags, base);
+}
+template <class BidiIterator, class Allocator>
+bool do_regex_search(BidiIterator first, BidiIterator last,
+ match_results<BidiIterator, Allocator>& m,
+ const u32regex& e,
+ match_flag_type flags,
+ BidiIterator base,
+ boost::mpl::int_<2> const*)
+{
+ typedef u16_to_u32_iterator<BidiIterator, UChar32> conv_type;
+ typedef match_results<conv_type> match_type;
+ typedef typename match_type::allocator_type alloc_type;
+ match_type what;
+ bool result = ::boost::regex_search(conv_type(first), conv_type(last), what, e, flags, conv_type(base));
+ // copy results across to m:
+ if(result) copy_results(m, what);
+ return result;
+}
+template <class BidiIterator, class Allocator>
+bool do_regex_search(BidiIterator first, BidiIterator last,
+ match_results<BidiIterator, Allocator>& m,
+ const u32regex& e,
+ match_flag_type flags,
+ BidiIterator base,
+ boost::mpl::int_<1> const*)
+{
+ typedef u8_to_u32_iterator<BidiIterator, UChar32> conv_type;
+ typedef match_results<conv_type> match_type;
+ typedef typename match_type::allocator_type alloc_type;
+ match_type what;
+ bool result = ::boost::regex_search(conv_type(first), conv_type(last), what, e, flags, conv_type(base));
+ // copy results across to m:
+ if(result) copy_results(m, what);
+ return result;
+}
+}
+
+template <class BidiIterator, class Allocator>
+inline bool u32regex_search(BidiIterator first, BidiIterator last,
+ match_results<BidiIterator, Allocator>& m,
+ const u32regex& e,
+ match_flag_type flags = match_default)
+{
+ return re_detail::do_regex_search(first, last, m, e, flags, first, static_cast<mpl::int_<sizeof(*first)> const*>(0));
+}
+template <class BidiIterator, class Allocator>
+inline bool u32regex_search(BidiIterator first, BidiIterator last,
+ match_results<BidiIterator, Allocator>& m,
+ const u32regex& e,
+ match_flag_type flags,
+ BidiIterator base)
+{
+ return re_detail::do_regex_search(first, last, m, e, flags, base, static_cast<mpl::int_<sizeof(*first)> const*>(0));
+}
+inline bool u32regex_search(const UChar* p,
+ match_results<const UChar*>& m,
+ const u32regex& e,
+ match_flag_type flags = match_default)
+{
+ return re_detail::do_regex_search(p, p+u_strlen(p), m, e, flags, p, static_cast<mpl::int_<2> const*>(0));
+}
+#if !defined(U_WCHAR_IS_UTF16) && !defined(BOOST_NO_WREGEX)
+inline bool u32regex_search(const wchar_t* p,
+ match_results<const wchar_t*>& m,
+ const u32regex& e,
+ match_flag_type flags = match_default)
+{
+ return re_detail::do_regex_search(p, p+std::wcslen(p), m, e, flags, p, static_cast<mpl::int_<sizeof(wchar_t)> const*>(0));
+}
+#endif
+inline bool u32regex_search(const char* p,
+ match_results<const char*>& m,
+ const u32regex& e,
+ match_flag_type flags = match_default)
+{
+ return re_detail::do_regex_search(p, p+std::strlen(p), m, e, flags, p, static_cast<mpl::int_<1> const*>(0));
+}
+inline bool u32regex_search(const unsigned char* p,
+ match_results<const unsigned char*>& m,
+ const u32regex& e,
+ match_flag_type flags = match_default)
+{
+ return re_detail::do_regex_search(p, p+std::strlen((const char*)p), m, e, flags, p, static_cast<mpl::int_<1> const*>(0));
+}
+inline bool u32regex_search(const std::string& s,
+ match_results<std::string::const_iterator>& m,
+ const u32regex& e,
+ match_flag_type flags = match_default)
+{
+ return re_detail::do_regex_search(s.begin(), s.end(), m, e, flags, s.begin(), static_cast<mpl::int_<1> const*>(0));
+}
+#ifndef BOOST_NO_STD_WSTRING
+inline bool u32regex_search(const std::wstring& s,
+ match_results<std::wstring::const_iterator>& m,
+ const u32regex& e,
+ match_flag_type flags = match_default)
+{
+ return re_detail::do_regex_search(s.begin(), s.end(), m, e, flags, s.begin(), static_cast<mpl::int_<sizeof(wchar_t)> const*>(0));
+}
+#endif
+inline bool u32regex_search(const UnicodeString& s,
+ match_results<const UChar*>& m,
+ const u32regex& e,
+ match_flag_type flags = match_default)
+{
+ return re_detail::do_regex_search(s.getBuffer(), s.getBuffer() + s.length(), m, e, flags, s.getBuffer(), static_cast<mpl::int_<sizeof(wchar_t)> const*>(0));
+}
+template <class BidiIterator>
+inline bool u32regex_search(BidiIterator first, BidiIterator last,
+ const u32regex& e,
+ match_flag_type flags = match_default)
+{
+ match_results<BidiIterator> m;
+ return re_detail::do_regex_search(first, last, m, e, flags, first, static_cast<mpl::int_<sizeof(*first)> const*>(0));
+}
+inline bool u32regex_search(const UChar* p,
+ const u32regex& e,
+ match_flag_type flags = match_default)
+{
+ match_results<const UChar*> m;
+ return re_detail::do_regex_search(p, p+u_strlen(p), m, e, flags, p, static_cast<mpl::int_<2> const*>(0));
+}
+#if !defined(U_WCHAR_IS_UTF16) && !defined(BOOST_NO_WREGEX)
+inline bool u32regex_search(const wchar_t* p,
+ const u32regex& e,
+ match_flag_type flags = match_default)
+{
+ match_results<const wchar_t*> m;
+ return re_detail::do_regex_search(p, p+std::wcslen(p), m, e, flags, p, static_cast<mpl::int_<sizeof(wchar_t)> const*>(0));
+}
+#endif
+inline bool u32regex_search(const char* p,
+ const u32regex& e,
+ match_flag_type flags = match_default)
+{
+ match_results<const char*> m;
+ return re_detail::do_regex_search(p, p+std::strlen(p), m, e, flags, p, static_cast<mpl::int_<1> const*>(0));
+}
+inline bool u32regex_search(const unsigned char* p,
+ const u32regex& e,
+ match_flag_type flags = match_default)
+{
+ match_results<const unsigned char*> m;
+ return re_detail::do_regex_search(p, p+std::strlen((const char*)p), m, e, flags, p, static_cast<mpl::int_<1> const*>(0));
+}
+inline bool u32regex_search(const std::string& s,
+ const u32regex& e,
+ match_flag_type flags = match_default)
+{
+ match_results<std::string::const_iterator> m;
+ return re_detail::do_regex_search(s.begin(), s.end(), m, e, flags, s.begin(), static_cast<mpl::int_<1> const*>(0));
+}
+#ifndef BOOST_NO_STD_WSTRING
+inline bool u32regex_search(const std::wstring& s,
+ const u32regex& e,
+ match_flag_type flags = match_default)
+{
+ match_results<std::wstring::const_iterator> m;
+ return re_detail::do_regex_search(s.begin(), s.end(), m, e, flags, s.begin(), static_cast<mpl::int_<sizeof(wchar_t)> const*>(0));
+}
+#endif
+inline bool u32regex_search(const UnicodeString& s,
+ const u32regex& e,
+ match_flag_type flags = match_default)
+{
+ match_results<const UChar*> m;
+ return re_detail::do_regex_search(s.getBuffer(), s.getBuffer() + s.length(), m, e, flags, s.getBuffer(), static_cast<mpl::int_<sizeof(wchar_t)> const*>(0));
+}
+
+//
+// overloads for regex_replace with utf-8 and utf-16 data types:
+//
+namespace re_detail{
+template <class I>
+inline std::pair< boost::u8_to_u32_iterator<I>, boost::u8_to_u32_iterator<I> >
+ make_utf32_seq(I i, I j, mpl::int_<1> const*)
+{
+ return std::pair< boost::u8_to_u32_iterator<I>, boost::u8_to_u32_iterator<I> >(boost::u8_to_u32_iterator<I>(i), boost::u8_to_u32_iterator<I>(j));
+}
+template <class I>
+inline std::pair< boost::u16_to_u32_iterator<I>, boost::u16_to_u32_iterator<I> >
+ make_utf32_seq(I i, I j, mpl::int_<2> const*)
+{
+ return std::pair< boost::u16_to_u32_iterator<I>, boost::u16_to_u32_iterator<I> >(boost::u16_to_u32_iterator<I>(i), boost::u16_to_u32_iterator<I>(j));
+}
+template <class I>
+inline std::pair< I, I >
+ make_utf32_seq(I i, I j, mpl::int_<4> const*)
+{
+ return std::pair< I, I >(i, j);
+}
+template <class charT>
+inline std::pair< boost::u8_to_u32_iterator<const charT*>, boost::u8_to_u32_iterator<const charT*> >
+ make_utf32_seq(const charT* p, mpl::int_<1> const*)
+{
+ return std::pair< boost::u8_to_u32_iterator<const charT*>, boost::u8_to_u32_iterator<const charT*> >(boost::u8_to_u32_iterator<const charT*>(p), boost::u8_to_u32_iterator<const charT*>(p+std::strlen((const char*)p)));
+}
+template <class charT>
+inline std::pair< boost::u16_to_u32_iterator<const charT*>, boost::u16_to_u32_iterator<const charT*> >
+ make_utf32_seq(const charT* p, mpl::int_<2> const*)
+{
+ return std::pair< boost::u16_to_u32_iterator<const charT*>, boost::u16_to_u32_iterator<const charT*> >(boost::u16_to_u32_iterator<const charT*>(p), boost::u16_to_u32_iterator<const charT*>(p+u_strlen((const UChar*)p)));
+}
+template <class charT>
+inline std::pair< const charT*, const charT* >
+ make_utf32_seq(const charT* p, mpl::int_<4> const*)
+{
+ return std::pair< const charT*, const charT* >(p, p+icu_regex_traits::length((UChar32 const*)p));
+}
+template <class OutputIterator>
+inline OutputIterator make_utf32_out(OutputIterator o, mpl::int_<4> const*)
+{
+ return o;
+}
+template <class OutputIterator>
+inline utf16_output_iterator<OutputIterator> make_utf32_out(OutputIterator o, mpl::int_<2> const*)
+{
+ return o;
+}
+template <class OutputIterator>
+inline utf8_output_iterator<OutputIterator> make_utf32_out(OutputIterator o, mpl::int_<1> const*)
+{
+ return o;
+}
+
+template <class OutputIterator, class I1, class I2>
+OutputIterator do_regex_replace(OutputIterator out,
+ std::pair<I1, I1> const& in,
+ const u32regex& e,
+ const std::pair<I2, I2>& fmt,
+ match_flag_type flags
+ )
+{
+ // unfortunately we have to copy the format string in order to pass in onward:
+ std::vector<UChar32> f;
+#ifndef BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
+ f.assign(fmt.first, fmt.second);
+#else
+ f.clear();
+ I2 pos = fmt.first;
+ while(pos != fmt.second)
+ f.push_back(*pos++);
+#endif
+
+ regex_iterator<I1, UChar32, icu_regex_traits> i(in.first, in.second, e, flags);
+ regex_iterator<I1, UChar32, icu_regex_traits> j;
+ if(i == j)
+ {
+ if(!(flags & regex_constants::format_no_copy))
+ out = re_detail::copy(in.first, in.second, out);
+ }
+ else
+ {
+ I1 last_m = in.first;
+ while(i != j)
+ {
+ if(!(flags & regex_constants::format_no_copy))
+ out = re_detail::copy(i->prefix().first, i->prefix().second, out);
+ if(f.size())
+ out = ::boost::re_detail::regex_format_imp(out, *i, &*f.begin(), &*f.begin() + f.size(), flags, e.get_traits());
+ else
+ out = ::boost::re_detail::regex_format_imp(out, *i, static_cast<UChar32 const*>(0), static_cast<UChar32 const*>(0), flags, e.get_traits());
+ last_m = (*i)[0].second;
+ if(flags & regex_constants::format_first_only)
+ break;
+ ++i;
+ }
+ if(!(flags & regex_constants::format_no_copy))
+ out = re_detail::copy(last_m, in.second, out);
+ }
+ return out;
+}
+template <class BaseIterator>
+inline const BaseIterator& extract_output_base(const BaseIterator& b)
+{
+ return b;
+}
+template <class BaseIterator>
+inline BaseIterator extract_output_base(const utf8_output_iterator<BaseIterator>& b)
+{
+ return b.base();
+}
+template <class BaseIterator>
+inline BaseIterator extract_output_base(const utf16_output_iterator<BaseIterator>& b)
+{
+ return b.base();
+}
+} // re_detail
+
+template <class OutputIterator, class BidirectionalIterator, class charT>
+inline OutputIterator u32regex_replace(OutputIterator out,
+ BidirectionalIterator first,
+ BidirectionalIterator last,
+ const u32regex& e,
+ const charT* fmt,
+ match_flag_type flags = match_default)
+{
+ return re_detail::extract_output_base
+#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
+ <OutputIterator>
+#endif
+ (
+ re_detail::do_regex_replace(
+ re_detail::make_utf32_out(out, static_cast<mpl::int_<sizeof(*first)> const*>(0)),
+ re_detail::make_utf32_seq(first, last, static_cast<mpl::int_<sizeof(*first)> const*>(0)),
+ e,
+ re_detail::make_utf32_seq(fmt, static_cast<mpl::int_<sizeof(*fmt)> const*>(0)),
+ flags)
+ );
+}
+
+template <class OutputIterator, class Iterator, class charT>
+inline OutputIterator u32regex_replace(OutputIterator out,
+ Iterator first,
+ Iterator last,
+ const u32regex& e,
+ const std::basic_string<charT>& fmt,
+ match_flag_type flags = match_default)
+{
+ return re_detail::extract_output_base
+#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
+ <OutputIterator>
+#endif
+ (
+ re_detail::do_regex_replace(
+ re_detail::make_utf32_out(out, static_cast<mpl::int_<sizeof(*first)> const*>(0)),
+ re_detail::make_utf32_seq(first, last, static_cast<mpl::int_<sizeof(*first)> const*>(0)),
+ e,
+ re_detail::make_utf32_seq(fmt.begin(), fmt.end(), static_cast<mpl::int_<sizeof(charT)> const*>(0)),
+ flags)
+ );
+}
+
+template <class OutputIterator, class Iterator>
+inline OutputIterator u32regex_replace(OutputIterator out,
+ Iterator first,
+ Iterator last,
+ const u32regex& e,
+ const UnicodeString& fmt,
+ match_flag_type flags = match_default)
+{
+ return re_detail::extract_output_base
+#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
+ <OutputIterator>
+#endif
+ (
+ re_detail::do_regex_replace(
+ re_detail::make_utf32_out(out, static_cast<mpl::int_<sizeof(*first)> const*>(0)),
+ re_detail::make_utf32_seq(first, last, static_cast<mpl::int_<sizeof(*first)> const*>(0)),
+ e,
+ re_detail::make_utf32_seq(fmt.getBuffer(), fmt.getBuffer() + fmt.length(), static_cast<mpl::int_<2> const*>(0)),
+ flags)
+ );
+}
+
+template <class charT>
+std::basic_string<charT> u32regex_replace(const std::basic_string<charT>& s,
+ const u32regex& e,
+ const charT* fmt,
+ match_flag_type flags = match_default)
+{
+ std::basic_string<charT> result;
+ re_detail::string_out_iterator<std::basic_string<charT> > i(result);
+ u32regex_replace(i, s.begin(), s.end(), e, fmt, flags);
+ return result;
+}
+
+template <class charT>
+std::basic_string<charT> u32regex_replace(const std::basic_string<charT>& s,
+ const u32regex& e,
+ const std::basic_string<charT>& fmt,
+ match_flag_type flags = match_default)
+{
+ std::basic_string<charT> result;
+ re_detail::string_out_iterator<std::basic_string<charT> > i(result);
+ u32regex_replace(i, s.begin(), s.end(), e, fmt.c_str(), flags);
+ return result;
+}
+
+namespace re_detail{
+
+class unicode_string_out_iterator
+{
+ UnicodeString* out;
+public:
+ unicode_string_out_iterator(UnicodeString& s) : out(&s) {}
+ unicode_string_out_iterator& operator++() { return *this; }
+ unicode_string_out_iterator& operator++(int) { return *this; }
+ unicode_string_out_iterator& operator*() { return *this; }
+ unicode_string_out_iterator& operator=(UChar v)
+ {
+ *out += v;
+ return *this;
+ }
+ typedef std::ptrdiff_t difference_type;
+ typedef UChar value_type;
+ typedef value_type* pointer;
+ typedef value_type& reference;
+ typedef std::output_iterator_tag iterator_category;
+};
+
+}
+
+inline UnicodeString u32regex_replace(const UnicodeString& s,
+ const u32regex& e,
+ const UChar* fmt,
+ match_flag_type flags = match_default)
+{
+ UnicodeString result;
+ re_detail::unicode_string_out_iterator i(result);
+ u32regex_replace(i, s.getBuffer(), s.getBuffer()+s.length(), e, fmt, flags);
+ return result;
+}
+
+inline UnicodeString u32regex_replace(const UnicodeString& s,
+ const u32regex& e,
+ const UnicodeString& fmt,
+ match_flag_type flags = match_default)
+{
+ UnicodeString result;
+ re_detail::unicode_string_out_iterator i(result);
+ re_detail::do_regex_replace(
+ re_detail::make_utf32_out(i, static_cast<mpl::int_<2> const*>(0)),
+ re_detail::make_utf32_seq(s.getBuffer(), s.getBuffer()+s.length(), static_cast<mpl::int_<2> const*>(0)),
+ e,
+ re_detail::make_utf32_seq(fmt.getBuffer(), fmt.getBuffer() + fmt.length(), static_cast<mpl::int_<2> const*>(0)),
+ flags);
+ return result;
+}
+
+} // namespace boost.
+
+#include <boost/regex/v4/u32regex_iterator.hpp>
+#include <boost/regex/v4/u32regex_token_iterator.hpp>
+
+#endif

Added: sandbox/SOC/2007/regex/named-captures/boost/regex/mfc.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/boost/regex/mfc.hpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,190 @@
+/*
+ *
+ * Copyright (c) 2004
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE mfc.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Overloads and helpers for using MFC/ATL string types with Boost.Regex.
+ */
+
+#ifndef BOOST_REGEX_MFC_HPP
+#define BOOST_REGEX_MFC_HPP
+
+#include <atlsimpstr.h>
+#include <boost/regex.hpp>
+
+namespace boost{
+
+//
+// define the types used for TCHAR's:
+typedef basic_regex<TCHAR> tregex;
+typedef match_results<TCHAR const*> tmatch;
+typedef regex_iterator<TCHAR const*> tregex_iterator;
+typedef regex_token_iterator<TCHAR const*> tregex_token_iterator;
+
+#if _MSC_VER >= 1310
+#define SIMPLE_STRING_PARAM class B, bool b
+#define SIMPLE_STRING_ARG_LIST B, b
+#else
+#define SIMPLE_STRING_PARAM class B
+#define SIMPLE_STRING_ARG_LIST B
+#endif
+
+//
+// define regex creation functions:
+//
+template <SIMPLE_STRING_PARAM>
+inline basic_regex<B>
+make_regex(const ATL::CSimpleStringT<SIMPLE_STRING_ARG_LIST>& s, ::boost::regex_constants::syntax_option_type f = boost::regex_constants::normal)
+{
+ basic_regex<B> result(s.GetString(), s.GetString() + s.GetLength(), f);
+ return result;
+}
+//
+// regex_match overloads:
+//
+template <SIMPLE_STRING_PARAM, class A, class T>
+inline bool regex_match(const ATL::CSimpleStringT<SIMPLE_STRING_ARG_LIST>& s,
+ match_results<const B*, A>& what,
+ const basic_regex<B, T>& e,
+ boost::regex_constants::match_flag_type f = boost::regex_constants::match_default)
+{
+ return ::boost::regex_match(s.GetString(),
+ s.GetString() + s.GetLength(),
+ what,
+ e,
+ f);
+}
+
+template <SIMPLE_STRING_PARAM, class T>
+inline bool regex_match(const ATL::CSimpleStringT<SIMPLE_STRING_ARG_LIST>& s,
+ const basic_regex<B, T>& e,
+ boost::regex_constants::match_flag_type f = boost::regex_constants::match_default)
+{
+ return ::boost::regex_match(s.GetString(),
+ s.GetString() + s.GetLength(),
+ e,
+ f);
+}
+//
+// regex_search overloads:
+//
+template <SIMPLE_STRING_PARAM, class A, class T>
+inline bool regex_search(const ATL::CSimpleStringT<SIMPLE_STRING_ARG_LIST>& s,
+ match_results<const B*, A>& what,
+ const basic_regex<B, T>& e,
+ boost::regex_constants::match_flag_type f = boost::regex_constants::match_default)
+{
+ return ::boost::regex_search(s.GetString(),
+ s.GetString() + s.GetLength(),
+ what,
+ e,
+ f);
+}
+
+template <SIMPLE_STRING_PARAM, class T>
+inline bool regex_search(const ATL::CSimpleStringT<SIMPLE_STRING_ARG_LIST>& s,
+ const basic_regex<B, T>& e,
+ boost::regex_constants::match_flag_type f = boost::regex_constants::match_default)
+{
+ return ::boost::regex_search(s.GetString(),
+ s.GetString() + s.GetLength(),
+ e,
+ f);
+}
+//
+// regex_iterator creation:
+//
+template <SIMPLE_STRING_PARAM>
+inline regex_iterator<B const*>
+make_regex_iterator(const ATL::CSimpleStringT<SIMPLE_STRING_ARG_LIST>& s, const basic_regex<B>& e, ::boost::regex_constants::match_flag_type f = boost::regex_constants::match_default)
+{
+ regex_iterator<B const*> result(s.GetString(), s.GetString() + s.GetLength(), e, f);
+ return result;
+}
+
+template <SIMPLE_STRING_PARAM>
+inline regex_token_iterator<B const*>
+ make_regex_token_iterator(const ATL::CSimpleStringT<SIMPLE_STRING_ARG_LIST>& s, const basic_regex<B>& e, int sub = 0, ::boost::regex_constants::match_flag_type f = boost::regex_constants::match_default)
+{
+ regex_token_iterator<B const*> result(s.GetString(), s.GetString() + s.GetLength(), e, sub, f);
+ return result;
+}
+
+template <SIMPLE_STRING_PARAM>
+inline regex_token_iterator<B const*>
+make_regex_token_iterator(const ATL::CSimpleStringT<SIMPLE_STRING_ARG_LIST>& s, const basic_regex<B>& e, const std::vector<int>& subs, ::boost::regex_constants::match_flag_type f = boost::regex_constants::match_default)
+{
+ regex_token_iterator<B const*> result(s.GetString(), s.GetString() + s.GetLength(), e, subs, f);
+ return result;
+}
+
+template <SIMPLE_STRING_PARAM, std::size_t N>
+inline regex_token_iterator<B const*>
+make_regex_token_iterator(const ATL::CSimpleStringT<SIMPLE_STRING_ARG_LIST>& s, const basic_regex<B>& e, const int (& subs)[N], ::boost::regex_constants::match_flag_type f = boost::regex_constants::match_default)
+{
+ regex_token_iterator<B const*> result(s.GetString(), s.GetString() + s.GetLength(), e, subs, f);
+ return result;
+}
+
+template <class OutputIterator, class BidirectionalIterator, class traits,
+ SIMPLE_STRING_PARAM>
+OutputIterator regex_replace(OutputIterator out,
+ BidirectionalIterator first,
+ BidirectionalIterator last,
+ const basic_regex<B, traits>& e,
+ const ATL::CSimpleStringT<SIMPLE_STRING_ARG_LIST>& fmt,
+ match_flag_type flags = match_default)
+{
+ return ::boost::regex_replace(out, first, last, e, fmt.GetString(), flags);
+}
+
+namespace re_detail{
+
+template <SIMPLE_STRING_PARAM>
+class mfc_string_out_iterator
+{
+ ATL::CSimpleStringT<SIMPLE_STRING_ARG_LIST>* out;
+public:
+ mfc_string_out_iterator(ATL::CSimpleStringT<SIMPLE_STRING_ARG_LIST>& s) : out(&s) {}
+ mfc_string_out_iterator& operator++() { return *this; }
+ mfc_string_out_iterator& operator++(int) { return *this; }
+ mfc_string_out_iterator& operator*() { return *this; }
+ mfc_string_out_iterator& operator=(B v)
+ {
+ out->AppendChar(v);
+ return *this;
+ }
+ typedef std::ptrdiff_t difference_type;
+ typedef B value_type;
+ typedef value_type* pointer;
+ typedef value_type& reference;
+ typedef std::output_iterator_tag iterator_category;
+};
+
+}
+
+template <class traits, SIMPLE_STRING_PARAM>
+ATL::CSimpleStringT<SIMPLE_STRING_ARG_LIST> regex_replace(const ATL::CSimpleStringT<SIMPLE_STRING_ARG_LIST>& s,
+ const basic_regex<B, traits>& e,
+ const ATL::CSimpleStringT<SIMPLE_STRING_ARG_LIST>& fmt,
+ match_flag_type flags = match_default)
+{
+ ATL::CSimpleStringT<SIMPLE_STRING_ARG_LIST> result(s.GetManager());
+ re_detail::mfc_string_out_iterator<SIMPLE_STRING_ARG_LIST> i(result);
+ regex_replace(i, s.GetString(), s.GetString() + s.GetLength(), e, fmt.GetString(), flags);
+ return result;
+}
+
+} // namespace boost.
+
+#endif

Added: sandbox/SOC/2007/regex/named-captures/boost/regex/pattern_except.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/boost/regex/pattern_except.hpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,83 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE pattern_except.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Declares pattern-matching exception classes.
+ */
+
+#ifndef BOOST_RE_PAT_EXCEPT_HPP
+#define BOOST_RE_PAT_EXCEPT_HPP
+
+#ifndef BOOST_REGEX_CONFIG_HPP
+#include <boost/regex/config.hpp>
+#endif
+
+#include <stdexcept>
+#include <cstddef>
+#include <boost/regex/v4/error_type.hpp>
+
+namespace boost{
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable : 4275)
+#endif
+ class BOOST_REGEX_DECL regex_error : public std::runtime_error
+{
+public:
+ explicit regex_error(const std::string& s, regex_constants::error_type err = regex_constants::error_unknown, std::ptrdiff_t pos = 0);
+ explicit regex_error(regex_constants::error_type err);
+ ~regex_error() throw();
+ regex_constants::error_type code()const
+ { return m_error_code; }
+ std::ptrdiff_t position()const
+ { return m_position; }
+ void raise()const;
+private:
+ regex_constants::error_type m_error_code;
+ std::ptrdiff_t m_position;
+};
+
+typedef regex_error bad_pattern;
+typedef regex_error bad_expression;
+
+namespace re_detail{
+
+BOOST_REGEX_DECL void BOOST_REGEX_CALL raise_runtime_error(const std::runtime_error& ex);
+
+template <class traits>
+void raise_error(const traits& t, regex_constants::error_type code)
+{
+ (void)t; // warning suppression
+ std::runtime_error e(t.error_string(code));
+ ::boost::re_detail::raise_runtime_error(e);
+}
+
+}
+
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+
+} // namespace boost
+
+#endif
+
+
+

Added: sandbox/SOC/2007/regex/named-captures/boost/regex/pending/object_cache.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/boost/regex/pending/object_cache.hpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,163 @@
+/*
+ *
+ * Copyright (c) 2004
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE object_cache.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Implements a generic object cache.
+ */
+
+#ifndef BOOST_REGEX_OBJECT_CACHE_HPP
+#define BOOST_REGEX_OBJECT_CACHE_HPP
+
+#include <map>
+#include <list>
+#include <stdexcept>
+#include <string>
+#include <boost/config.hpp>
+#include <boost/shared_ptr.hpp>
+#ifdef BOOST_HAS_THREADS
+#include <boost/regex/pending/static_mutex.hpp>
+#endif
+
+namespace boost{
+
+template <class Key, class Object>
+class object_cache
+{
+public:
+ typedef std::pair< ::boost::shared_ptr<Object const>, Key const*> value_type;
+ typedef std::list<value_type> list_type;
+ typedef typename list_type::iterator list_iterator;
+ typedef std::map<Key, list_iterator> map_type;
+ typedef typename map_type::iterator map_iterator;
+ typedef typename list_type::size_type size_type;
+ static boost::shared_ptr<Object const> get(const Key& k, size_type max_cache_size);
+
+private:
+ static boost::shared_ptr<Object const> do_get(const Key& k, size_type max_cache_size);
+
+ struct data
+ {
+ list_type cont;
+ map_type index;
+ };
+
+ // Needed by compilers not implementing the resolution to DR45. For reference,
+ // see http://www.open-std.org/JTC1/SC22/WG21/docs/cwg_defects.html#45.
+ friend struct data;
+};
+
+template <class Key, class Object>
+boost::shared_ptr<Object const> object_cache<Key, Object>::get(const Key& k, size_type max_cache_size)
+{
+#ifdef BOOST_HAS_THREADS
+ static boost::static_mutex mut = BOOST_STATIC_MUTEX_INIT;
+
+ boost::static_mutex::scoped_lock l(mut);
+ if(l)
+ {
+ return do_get(k, max_cache_size);
+ }
+ //
+ // what do we do if the lock fails?
+ // for now just throw, but we should never really get here...
+ //
+ ::boost::throw_exception(std::runtime_error("Error in thread safety code: could not acquire a lock"));
+ return boost::shared_ptr<Object>();
+#else
+ return do_get(k, max_cache_size);
+#endif
+}
+
+template <class Key, class Object>
+boost::shared_ptr<Object const> object_cache<Key, Object>::do_get(const Key& k, size_type max_cache_size)
+{
+ typedef typename object_cache<Key, Object>::data object_data;
+ typedef typename map_type::size_type map_size_type;
+ static object_data s_data;
+
+ //
+ // see if the object is already in the cache:
+ //
+ map_iterator mpos = s_data.index.find(k);
+ if(mpos != s_data.index.end())
+ {
+ //
+ // Eureka!
+ // We have a cached item, bump it up the list and return it:
+ //
+ if(--(s_data.cont.end()) != mpos->second)
+ {
+ // splice out the item we want to move:
+ list_type temp;
+ temp.splice(temp.end(), s_data.cont, mpos->second);
+ // and now place it at the end of the list:
+ s_data.cont.splice(s_data.cont.end(), temp, temp.begin());
+ BOOST_ASSERT(*(s_data.cont.back().second) == k);
+ // update index with new position:
+ mpos->second = --(s_data.cont.end());
+ BOOST_ASSERT(&(mpos->first) == mpos->second->second);
+ BOOST_ASSERT(&(mpos->first) == s_data.cont.back().second);
+ }
+ return s_data.cont.back().first;
+ }
+ //
+ // if we get here then the item is not in the cache,
+ // so create it:
+ //
+ boost::shared_ptr<Object const> result(new Object(k));
+ //
+ // Add it to the list, and index it:
+ //
+ s_data.cont.push_back(value_type(result, 0));
+ s_data.index.insert(std::make_pair(k, --(s_data.cont.end())));
+ s_data.cont.back().second = &(s_data.index.find(k)->first);
+ map_size_type s = s_data.index.size();
+ BOOST_ASSERT(s_data.index[k]->first.get() == result.get());
+ BOOST_ASSERT(&(s_data.index.find(k)->first) == s_data.cont.back().second);
+ BOOST_ASSERT(s_data.index.find(k)->first == k);
+ if(s > max_cache_size)
+ {
+ //
+ // We have too many items in the list, so we need to start
+ // popping them off the back of the list, but only if they're
+ // being held uniquely by us:
+ //
+ list_iterator pos = s_data.cont.begin();
+ list_iterator last = s_data.cont.end();
+ while((pos != last) && (s > max_cache_size))
+ {
+ if(pos->first.unique())
+ {
+ list_iterator condemmed(pos);
+ ++pos;
+ // now remove the items from our containers,
+ // then order has to be as follows:
+ BOOST_ASSERT(s_data.index.find(*(condemmed->second)) != s_data.index.end());
+ s_data.index.erase(*(condemmed->second));
+ s_data.cont.erase(condemmed);
+ --s;
+ }
+ else
+ --pos;
+ }
+ BOOST_ASSERT(s_data.index[k]->first.get() == result.get());
+ BOOST_ASSERT(&(s_data.index.find(k)->first) == s_data.cont.back().second);
+ BOOST_ASSERT(s_data.index.find(k)->first == k);
+ }
+ return result;
+}
+
+}
+
+#endif

Added: sandbox/SOC/2007/regex/named-captures/boost/regex/pending/static_mutex.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/boost/regex/pending/static_mutex.hpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,177 @@
+/*
+ *
+ * Copyright (c) 2004
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE static_mutex.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Declares static_mutex lock type, there are three different
+ * implementations: POSIX pthreads, WIN32 threads, and portable,
+ * these are described in more detail below.
+ */
+
+#ifndef BOOST_REGEX_STATIC_MUTEX_HPP
+#define BOOST_REGEX_STATIC_MUTEX_HPP
+
+#include <boost/config.hpp>
+#include <boost/regex/config.hpp> // dll import/export options.
+
+#ifdef BOOST_HAS_PTHREADS
+#include <pthread.h>
+#endif
+
+#if defined(BOOST_HAS_PTHREADS) && defined(PTHREAD_MUTEX_INITIALIZER)
+//
+// pthreads version:
+// simple wrap around a pthread_mutex_t initialized with
+// PTHREAD_MUTEX_INITIALIZER.
+//
+namespace boost{
+
+class BOOST_REGEX_DECL scoped_static_mutex_lock;
+
+class static_mutex
+{
+public:
+ typedef scoped_static_mutex_lock scoped_lock;
+ pthread_mutex_t m_mutex;
+};
+
+#define BOOST_STATIC_MUTEX_INIT { PTHREAD_MUTEX_INITIALIZER, }
+
+class BOOST_REGEX_DECL scoped_static_mutex_lock
+{
+public:
+ scoped_static_mutex_lock(static_mutex& mut, bool lk = true);
+ ~scoped_static_mutex_lock();
+ inline bool locked()const
+ {
+ return m_have_lock;
+ }
+ inline operator void const*()const
+ {
+ return locked() ? this : 0;
+ }
+ void lock();
+ void unlock();
+private:
+ static_mutex& m_mutex;
+ bool m_have_lock;
+};
+
+
+} // namespace boost
+#elif defined(BOOST_HAS_WINTHREADS)
+//
+// Win32 version:
+// Use a 32-bit int as a lock, along with a test-and-set
+// implementation using InterlockedCompareExchange.
+//
+
+#include <boost/cstdint.hpp>
+
+namespace boost{
+
+class BOOST_REGEX_DECL scoped_static_mutex_lock;
+
+class static_mutex
+{
+public:
+ typedef scoped_static_mutex_lock scoped_lock;
+ boost::int32_t m_mutex;
+};
+
+#define BOOST_STATIC_MUTEX_INIT { 0, }
+
+class BOOST_REGEX_DECL scoped_static_mutex_lock
+{
+public:
+ scoped_static_mutex_lock(static_mutex& mut, bool lk = true);
+ ~scoped_static_mutex_lock();
+ operator void const*()const;
+ bool locked()const;
+ void lock();
+ void unlock();
+private:
+ static_mutex& m_mutex;
+ bool m_have_lock;
+ scoped_static_mutex_lock(const scoped_static_mutex_lock&);
+ scoped_static_mutex_lock& operator=(const scoped_static_mutex_lock&);
+};
+
+inline scoped_static_mutex_lock::operator void const*()const
+{
+ return locked() ? this : 0;
+}
+
+inline bool scoped_static_mutex_lock::locked()const
+{
+ return m_have_lock;
+}
+
+} // namespace
+
+#else
+//
+// Portable version of a static mutex based on Boost.Thread library:
+// This has to use a single mutex shared by all instances of static_mutex
+// because boost::call_once doesn't alow us to pass instance information
+// down to the initialisation proceedure. In fact the initialisation routine
+// may need to be called more than once - but only once per instance.
+//
+#include <boost/thread/once.hpp>
+#include <boost/thread/recursive_mutex.hpp>
+
+namespace boost{
+
+class BOOST_REGEX_DECL scoped_static_mutex_lock;
+extern "C" BOOST_REGEX_DECL void free_static_mutex();
+
+class BOOST_REGEX_DECL static_mutex
+{
+public:
+ typedef scoped_static_mutex_lock scoped_lock;
+ static void init();
+ static boost::recursive_mutex* m_pmutex;
+ static boost::once_flag m_once;
+};
+
+#define BOOST_STATIC_MUTEX_INIT { }
+
+class BOOST_REGEX_DECL scoped_static_mutex_lock
+{
+public:
+ scoped_static_mutex_lock(static_mutex& mut, bool lk = true);
+ ~scoped_static_mutex_lock();
+ operator void const*()const;
+ bool locked()const;
+ void lock();
+ void unlock();
+private:
+ boost::recursive_mutex::scoped_lock* m_plock;
+ bool m_have_lock;
+};
+
+inline scoped_static_mutex_lock::operator void const*()const
+{
+ return locked() ? this : 0;
+}
+
+inline bool scoped_static_mutex_lock::locked()const
+{
+ return m_have_lock;
+}
+
+} // namespace
+
+#endif
+
+#endif

Added: sandbox/SOC/2007/regex/named-captures/boost/regex/pending/unicode_iterator.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/boost/regex/pending/unicode_iterator.hpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,691 @@
+/*
+ *
+ * Copyright (c) 2004
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE unicode_iterator.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Iterator adapters for converting between different Unicode encodings.
+ */
+
+/****************************************************************************
+
+Contents:
+~~~~~~~~~
+
+1) Read Only, Input Adapters:
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+template <class BaseIterator, class U8Type = ::boost::uint8_t>
+class u32_to_u8_iterator;
+
+Adapts sequence of UTF-32 code points to "look like" a sequence of UTF-8.
+
+template <class BaseIterator, class U32Type = ::boost::uint32_t>
+class u8_to_u32_iterator;
+
+Adapts sequence of UTF-8 code points to "look like" a sequence of UTF-32.
+
+template <class BaseIterator, class U16Type = ::boost::uint16_t>
+class u32_to_u16_iterator;
+
+Adapts sequence of UTF-32 code points to "look like" a sequence of UTF-16.
+
+template <class BaseIterator, class U32Type = ::boost::uint32_t>
+class u16_to_u32_iterator;
+
+Adapts sequence of UTF-16 code points to "look like" a sequence of UTF-32.
+
+2) Single pass output iterator adapters:
+
+template <class BaseIterator>
+class utf8_output_iterator;
+
+Accepts UTF-32 code points and forwards them on as UTF-8 code points.
+
+template <class BaseIterator>
+class utf16_output_iterator;
+
+Accepts UTF-32 code points and forwards them on as UTF-16 code points.
+
+****************************************************************************/
+
+#ifndef BOOST_REGEX_UNICODE_ITERATOR_HPP
+#define BOOST_REGEX_UNICODE_ITERATOR_HPP
+#include <boost/cstdint.hpp>
+#include <boost/assert.hpp>
+#include <boost/iterator/iterator_facade.hpp>
+#include <boost/static_assert.hpp>
+#include <boost/throw_exception.hpp>
+#include <stdexcept>
+#ifndef BOOST_NO_STD_LOCALE
+#include <sstream>
+#endif
+#include <limits.h> // CHAR_BIT
+
+namespace boost{
+
+namespace detail{
+
+static const ::boost::uint16_t high_surrogate_base = 0xD7C0u;
+static const ::boost::uint16_t low_surrogate_base = 0xDC00u;
+static const ::boost::uint32_t ten_bit_mask = 0x3FFu;
+
+inline bool is_high_surrogate(::boost::uint16_t v)
+{
+ return (v & 0xFC00u) == 0xd800u;
+}
+inline bool is_low_surrogate(::boost::uint16_t v)
+{
+ return (v & 0xFC00u) == 0xdc00u;
+}
+template <class T>
+inline bool is_surrogate(T v)
+{
+ return (v & 0xF800u) == 0xd800;
+}
+
+inline unsigned utf8_byte_count(boost::uint8_t c)
+{
+ // if the most significant bit with a zero in it is in position
+ // 8-N then there are N bytes in this UTF-8 sequence:
+ boost::uint8_t mask = 0x80u;
+ unsigned result = 0;
+ while(c & mask)
+ {
+ ++result;
+ mask >>= 1;
+ }
+ return (result == 0) ? 1 : ((result > 4) ? 4 : result);
+}
+
+inline unsigned utf8_trailing_byte_count(boost::uint8_t c)
+{
+ return utf8_byte_count(c) - 1;
+}
+
+inline void invalid_utf32_code_point(::boost::uint32_t val)
+{
+#ifndef BOOST_NO_STD_LOCALE
+ std::stringstream ss;
+ ss << "Invalid UTF-32 code point U+" << std::showbase << std::hex << val << " encountered while trying to encode UTF-16 sequence";
+ std::out_of_range e(ss.str());
+#else
+ std::out_of_range e("Invalid UTF-32 code point encountered while trying to encode UTF-16 sequence");
+#endif
+ boost::throw_exception(e);
+}
+
+
+} // namespace detail
+
+template <class BaseIterator, class U16Type = ::boost::uint16_t>
+class u32_to_u16_iterator
+ : public boost::iterator_facade<u32_to_u16_iterator<BaseIterator, U16Type>, U16Type, std::bidirectional_iterator_tag, const U16Type>
+{
+ typedef boost::iterator_facade<u32_to_u16_iterator<BaseIterator, U16Type>, U16Type, std::bidirectional_iterator_tag, const U16Type> base_type;
+
+#if !defined(BOOST_NO_STD_ITERATOR_TRAITS) && !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+ typedef typename std::iterator_traits<BaseIterator>::value_type base_value_type;
+
+ BOOST_STATIC_ASSERT(sizeof(base_value_type)*CHAR_BIT == 32);
+ BOOST_STATIC_ASSERT(sizeof(U16Type)*CHAR_BIT == 16);
+#endif
+
+public:
+ typename base_type::reference
+ dereference()const
+ {
+ if(m_current == 2)
+ extract_current();
+ return m_values[m_current];
+ }
+ bool equal(const u32_to_u16_iterator& that)const
+ {
+ if(m_position == that.m_position)
+ {
+ // Both m_currents must be equal, or both even
+ // this is the same as saying their sum must be even:
+ return (m_current + that.m_current) & 1u ? false : true;
+ }
+ return false;
+ }
+ void increment()
+ {
+ // if we have a pending read then read now, so that we know whether
+ // to skip a position, or move to a low-surrogate:
+ if(m_current == 2)
+ {
+ // pending read:
+ extract_current();
+ }
+ // move to the next surrogate position:
+ ++m_current;
+ // if we've reached the end skip a position:
+ if(m_values[m_current] == 0)
+ {
+ m_current = 2;
+ ++m_position;
+ }
+ }
+ void decrement()
+ {
+ if(m_current != 1)
+ {
+ // decrementing an iterator always leads to a valid position:
+ --m_position;
+ extract_current();
+ m_current = m_values[1] ? 1 : 0;
+ }
+ else
+ {
+ m_current = 0;
+ }
+ }
+ BaseIterator base()const
+ {
+ return m_position;
+ }
+ // construct:
+ u32_to_u16_iterator() : m_position(), m_current(0)
+ {
+ m_values[0] = 0;
+ m_values[1] = 0;
+ m_values[2] = 0;
+ }
+ u32_to_u16_iterator(BaseIterator b) : m_position(b), m_current(2)
+ {
+ m_values[0] = 0;
+ m_values[1] = 0;
+ m_values[2] = 0;
+ }
+private:
+
+ void extract_current()const
+ {
+ // begin by checking for a code point out of range:
+ ::boost::uint32_t v = *m_position;
+ if(v >= 0x10000u)
+ {
+ if(v > 0x10FFFFu)
+ detail::invalid_utf32_code_point(*m_position);
+ // split into two surrogates:
+ m_values[0] = static_cast<U16Type>(v >> 10) + detail::high_surrogate_base;
+ m_values[1] = static_cast<U16Type>(v & detail::ten_bit_mask) + detail::low_surrogate_base;
+ m_current = 0;
+ BOOST_ASSERT(detail::is_high_surrogate(m_values[0]));
+ BOOST_ASSERT(detail::is_low_surrogate(m_values[1]));
+ }
+ else
+ {
+ // 16-bit code point:
+ m_values[0] = static_cast<U16Type>(*m_position);
+ m_values[1] = 0;
+ m_current = 0;
+ // value must not be a surrogate:
+ if(detail::is_surrogate(m_values[0]))
+ detail::invalid_utf32_code_point(*m_position);
+ }
+ }
+ BaseIterator m_position;
+ mutable U16Type m_values[3];
+ mutable unsigned m_current;
+};
+
+template <class BaseIterator, class U32Type = ::boost::uint32_t>
+class u16_to_u32_iterator
+ : public boost::iterator_facade<u16_to_u32_iterator<BaseIterator, U32Type>, U32Type, std::bidirectional_iterator_tag, const U32Type>
+{
+ typedef boost::iterator_facade<u16_to_u32_iterator<BaseIterator, U32Type>, U32Type, std::bidirectional_iterator_tag, const U32Type> base_type;
+ // special values for pending iterator reads:
+ BOOST_STATIC_CONSTANT(U32Type, pending_read = 0xffffffffu);
+
+#if !defined(BOOST_NO_STD_ITERATOR_TRAITS) && !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+ typedef typename std::iterator_traits<BaseIterator>::value_type base_value_type;
+
+ BOOST_STATIC_ASSERT(sizeof(base_value_type)*CHAR_BIT == 16);
+ BOOST_STATIC_ASSERT(sizeof(U32Type)*CHAR_BIT == 32);
+#endif
+
+public:
+ typename base_type::reference
+ dereference()const
+ {
+ if(m_value == pending_read)
+ extract_current();
+ return m_value;
+ }
+ bool equal(const u16_to_u32_iterator& that)const
+ {
+ return m_position == that.m_position;
+ }
+ void increment()
+ {
+ // skip high surrogate first if there is one:
+ if(detail::is_high_surrogate(*m_position)) ++m_position;
+ ++m_position;
+ m_value = pending_read;
+ }
+ void decrement()
+ {
+ --m_position;
+ // if we have a low surrogate then go back one more:
+ if(detail::is_low_surrogate(*m_position))
+ --m_position;
+ m_value = pending_read;
+ }
+ BaseIterator base()const
+ {
+ return m_position;
+ }
+ // construct:
+ u16_to_u32_iterator() : m_position()
+ {
+ m_value = pending_read;
+ }
+ u16_to_u32_iterator(BaseIterator b) : m_position(b)
+ {
+ m_value = pending_read;
+ }
+private:
+ static void invalid_code_point(::boost::uint16_t val)
+ {
+#ifndef BOOST_NO_STD_LOCALE
+ std::stringstream ss;
+ ss << "Misplaced UTF-16 surrogate U+" << std::showbase << std::hex << val << " encountered while trying to encode UTF-32 sequence";
+ std::out_of_range e(ss.str());
+#else
+ std::out_of_range e("Misplaced UTF-16 surrogate encountered while trying to encode UTF-32 sequence");
+#endif
+ boost::throw_exception(e);
+ }
+ void extract_current()const
+ {
+ m_value = static_cast<U32Type>(static_cast< ::boost::uint16_t>(*m_position));
+ // if the last value is a high surrogate then adjust m_position and m_value as needed:
+ if(detail::is_high_surrogate(*m_position))
+ {
+ // precondition; next value must have be a low-surrogate:
+ BaseIterator next(m_position);
+ ::boost::uint16_t t = *++next;
+ if((t & 0xFC00u) != 0xDC00u)
+ invalid_code_point(t);
+ m_value = (m_value - detail::high_surrogate_base) << 10;
+ m_value |= (static_cast<U32Type>(static_cast< ::boost::uint16_t>(t)) & detail::ten_bit_mask);
+ }
+ // postcondition; result must not be a surrogate:
+ if(detail::is_surrogate(m_value))
+ invalid_code_point(static_cast< ::boost::uint16_t>(m_value));
+ }
+ BaseIterator m_position;
+ mutable U32Type m_value;
+};
+
+template <class BaseIterator, class U8Type = ::boost::uint8_t>
+class u32_to_u8_iterator
+ : public boost::iterator_facade<u32_to_u8_iterator<BaseIterator, U8Type>, U8Type, std::bidirectional_iterator_tag, const U8Type>
+{
+ typedef boost::iterator_facade<u32_to_u8_iterator<BaseIterator, U8Type>, U8Type, std::bidirectional_iterator_tag, const U8Type> base_type;
+
+#if !defined(BOOST_NO_STD_ITERATOR_TRAITS) && !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+ typedef typename std::iterator_traits<BaseIterator>::value_type base_value_type;
+
+ BOOST_STATIC_ASSERT(sizeof(base_value_type)*CHAR_BIT == 32);
+ BOOST_STATIC_ASSERT(sizeof(U8Type)*CHAR_BIT == 8);
+#endif
+
+public:
+ typename base_type::reference
+ dereference()const
+ {
+ if(m_current == 4)
+ extract_current();
+ return m_values[m_current];
+ }
+ bool equal(const u32_to_u8_iterator& that)const
+ {
+ if(m_position == that.m_position)
+ {
+ // either the m_current's must be equal, or one must be 0 and
+ // the other 4: which means neither must have bits 1 or 2 set:
+ return (m_current == that.m_current)
+ || (((m_current | that.m_current) & 3) == 0);
+ }
+ return false;
+ }
+ void increment()
+ {
+ // if we have a pending read then read now, so that we know whether
+ // to skip a position, or move to a low-surrogate:
+ if(m_current == 4)
+ {
+ // pending read:
+ extract_current();
+ }
+ // move to the next surrogate position:
+ ++m_current;
+ // if we've reached the end skip a position:
+ if(m_values[m_current] == 0)
+ {
+ m_current = 4;
+ ++m_position;
+ }
+ }
+ void decrement()
+ {
+ if((m_current & 3) == 0)
+ {
+ --m_position;
+ extract_current();
+ m_current = 3;
+ while(m_current && (m_values[m_current] == 0))
+ --m_current;
+ }
+ else
+ --m_current;
+ }
+ BaseIterator base()const
+ {
+ return m_position;
+ }
+ // construct:
+ u32_to_u8_iterator() : m_position(), m_current(0)
+ {
+ m_values[0] = 0;
+ m_values[1] = 0;
+ m_values[2] = 0;
+ m_values[3] = 0;
+ m_values[4] = 0;
+ }
+ u32_to_u8_iterator(BaseIterator b) : m_position(b), m_current(4)
+ {
+ m_values[0] = 0;
+ m_values[1] = 0;
+ m_values[2] = 0;
+ m_values[3] = 0;
+ m_values[4] = 0;
+ }
+private:
+
+ void extract_current()const
+ {
+ boost::uint32_t c = *m_position;
+ if(c > 0x10FFFFu)
+ detail::invalid_utf32_code_point(c);
+ if(c < 0x80u)
+ {
+ m_values[0] = static_cast<unsigned char>(c);
+ m_values[1] = static_cast<unsigned char>(0u);
+ m_values[2] = static_cast<unsigned char>(0u);
+ m_values[3] = static_cast<unsigned char>(0u);
+ }
+ else if(c < 0x800u)
+ {
+ m_values[0] = static_cast<unsigned char>(0xC0u + (c >> 6));
+ m_values[1] = static_cast<unsigned char>(0x80u + (c & 0x3Fu));
+ m_values[2] = static_cast<unsigned char>(0u);
+ m_values[3] = static_cast<unsigned char>(0u);
+ }
+ else if(c < 0x10000u)
+ {
+ m_values[0] = static_cast<unsigned char>(0xE0u + (c >> 12));
+ m_values[1] = static_cast<unsigned char>(0x80u + ((c >> 6) & 0x3Fu));
+ m_values[2] = static_cast<unsigned char>(0x80u + (c & 0x3Fu));
+ m_values[3] = static_cast<unsigned char>(0u);
+ }
+ else
+ {
+ m_values[0] = static_cast<unsigned char>(0xF0u + (c >> 18));
+ m_values[1] = static_cast<unsigned char>(0x80u + ((c >> 12) & 0x3Fu));
+ m_values[2] = static_cast<unsigned char>(0x80u + ((c >> 6) & 0x3Fu));
+ m_values[3] = static_cast<unsigned char>(0x80u + (c & 0x3Fu));
+ }
+ m_current= 0;
+ }
+ BaseIterator m_position;
+ mutable U8Type m_values[5];
+ mutable unsigned m_current;
+};
+
+template <class BaseIterator, class U32Type = ::boost::uint32_t>
+class u8_to_u32_iterator
+ : public boost::iterator_facade<u8_to_u32_iterator<BaseIterator, U32Type>, U32Type, std::bidirectional_iterator_tag, const U32Type>
+{
+ typedef boost::iterator_facade<u8_to_u32_iterator<BaseIterator, U32Type>, U32Type, std::bidirectional_iterator_tag, const U32Type> base_type;
+ // special values for pending iterator reads:
+ BOOST_STATIC_CONSTANT(U32Type, pending_read = 0xffffffffu);
+
+#if !defined(BOOST_NO_STD_ITERATOR_TRAITS) && !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+ typedef typename std::iterator_traits<BaseIterator>::value_type base_value_type;
+
+ BOOST_STATIC_ASSERT(sizeof(base_value_type)*CHAR_BIT == 8);
+ BOOST_STATIC_ASSERT(sizeof(U32Type)*CHAR_BIT == 32);
+#endif
+
+public:
+ typename base_type::reference
+ dereference()const
+ {
+ if(m_value == pending_read)
+ extract_current();
+ return m_value;
+ }
+ bool equal(const u8_to_u32_iterator& that)const
+ {
+ return m_position == that.m_position;
+ }
+ void increment()
+ {
+ // skip high surrogate first if there is one:
+ unsigned c = detail::utf8_byte_count(*m_position);
+ std::advance(m_position, c);
+ m_value = pending_read;
+ }
+ void decrement()
+ {
+ // Keep backtracking until we don't have a trailing character:
+ unsigned count = 0;
+ while((*--m_position & 0xC0u) == 0x80u) ++count;
+ // now check that the sequence was valid:
+ if(count != detail::utf8_trailing_byte_count(*m_position))
+ invalid_sequnce();
+ m_value = pending_read;
+ }
+ BaseIterator base()const
+ {
+ return m_position;
+ }
+ // construct:
+ u8_to_u32_iterator() : m_position()
+ {
+ m_value = pending_read;
+ }
+ u8_to_u32_iterator(BaseIterator b) : m_position(b)
+ {
+ m_value = pending_read;
+ }
+private:
+ static void invalid_sequnce()
+ {
+ std::out_of_range e("Invalid UTF-8 sequence encountered while trying to encode UTF-32 character");
+ boost::throw_exception(e);
+ }
+ void extract_current()const
+ {
+ m_value = static_cast<U32Type>(static_cast< ::boost::uint8_t>(*m_position));
+ // we must not have a continuation character:
+ if((m_value & 0xC0u) == 0x80u)
+ invalid_sequnce();
+ // see how many extra byts we have:
+ unsigned extra = detail::utf8_trailing_byte_count(*m_position);
+ // extract the extra bits, 6 from each extra byte:
+ BaseIterator next(m_position);
+ for(unsigned c = 0; c < extra; ++c)
+ {
+ ++next;
+ m_value <<= 6;
+ m_value += static_cast<boost::uint8_t>(*next) & 0x3Fu;
+ }
+ // we now need to remove a few of the leftmost bits, but how many depends
+ // upon how many extra bytes we've extracted:
+ static const boost::uint32_t masks[4] =
+ {
+ 0x7Fu,
+ 0x7FFu,
+ 0xFFFFu,
+ 0x1FFFFFu,
+ };
+ m_value &= masks[extra];
+ // check the result:
+ if(m_value > static_cast<U32Type>(0x10FFFFu))
+ invalid_sequnce();
+ }
+ BaseIterator m_position;
+ mutable U32Type m_value;
+};
+
+template <class BaseIterator>
+class utf16_output_iterator
+{
+public:
+ typedef void difference_type;
+ typedef void value_type;
+ typedef boost::uint32_t* pointer;
+ typedef boost::uint32_t& reference;
+ typedef std::output_iterator_tag iterator_category;
+
+ utf16_output_iterator(const BaseIterator& b)
+ : m_position(b){}
+ utf16_output_iterator(const utf16_output_iterator& that)
+ : m_position(that.m_position){}
+ utf16_output_iterator& operator=(const utf16_output_iterator& that)
+ {
+ m_position = that.m_position;
+ return *this;
+ }
+ const utf16_output_iterator& operator*()const
+ {
+ return *this;
+ }
+ void operator=(boost::uint32_t val)const
+ {
+ push(val);
+ }
+ utf16_output_iterator& operator++()
+ {
+ return *this;
+ }
+ utf16_output_iterator& operator++(int)
+ {
+ return *this;
+ }
+ BaseIterator base()const
+ {
+ return m_position;
+ }
+private:
+ void push(boost::uint32_t v)const
+ {
+ if(v >= 0x10000u)
+ {
+ // begin by checking for a code point out of range:
+ if(v > 0x10FFFFu)
+ detail::invalid_utf32_code_point(v);
+ // split into two surrogates:
+ *m_position++ = static_cast<boost::uint16_t>(v >> 10) + detail::high_surrogate_base;
+ *m_position++ = static_cast<boost::uint16_t>(v & detail::ten_bit_mask) + detail::low_surrogate_base;
+ }
+ else
+ {
+ // 16-bit code point:
+ // value must not be a surrogate:
+ if(detail::is_surrogate(v))
+ detail::invalid_utf32_code_point(v);
+ *m_position++ = static_cast<boost::uint16_t>(v);
+ }
+ }
+ mutable BaseIterator m_position;
+};
+
+template <class BaseIterator>
+class utf8_output_iterator
+{
+public:
+ typedef void difference_type;
+ typedef void value_type;
+ typedef boost::uint32_t* pointer;
+ typedef boost::uint32_t& reference;
+ typedef std::output_iterator_tag iterator_category;
+
+ utf8_output_iterator(const BaseIterator& b)
+ : m_position(b){}
+ utf8_output_iterator(const utf8_output_iterator& that)
+ : m_position(that.m_position){}
+ utf8_output_iterator& operator=(const utf8_output_iterator& that)
+ {
+ m_position = that.m_position;
+ return *this;
+ }
+ const utf8_output_iterator& operator*()const
+ {
+ return *this;
+ }
+ void operator=(boost::uint32_t val)const
+ {
+ push(val);
+ }
+ utf8_output_iterator& operator++()
+ {
+ return *this;
+ }
+ utf8_output_iterator& operator++(int)
+ {
+ return *this;
+ }
+ BaseIterator base()const
+ {
+ return m_position;
+ }
+private:
+ void push(boost::uint32_t c)const
+ {
+ if(c > 0x10FFFFu)
+ detail::invalid_utf32_code_point(c);
+ if(c < 0x80u)
+ {
+ *m_position++ = static_cast<unsigned char>(c);
+ }
+ else if(c < 0x800u)
+ {
+ *m_position++ = static_cast<unsigned char>(0xC0u + (c >> 6));
+ *m_position++ = static_cast<unsigned char>(0x80u + (c & 0x3Fu));
+ }
+ else if(c < 0x10000u)
+ {
+ *m_position++ = static_cast<unsigned char>(0xE0u + (c >> 12));
+ *m_position++ = static_cast<unsigned char>(0x80u + ((c >> 6) & 0x3Fu));
+ *m_position++ = static_cast<unsigned char>(0x80u + (c & 0x3Fu));
+ }
+ else
+ {
+ *m_position++ = static_cast<unsigned char>(0xF0u + (c >> 18));
+ *m_position++ = static_cast<unsigned char>(0x80u + ((c >> 12) & 0x3Fu));
+ *m_position++ = static_cast<unsigned char>(0x80u + ((c >> 6) & 0x3Fu));
+ *m_position++ = static_cast<unsigned char>(0x80u + (c & 0x3Fu));
+ }
+ }
+ mutable BaseIterator m_position;
+};
+
+} // namespace boost
+
+#endif // BOOST_REGEX_UNICODE_ITERATOR_HPP
+

Added: sandbox/SOC/2007/regex/named-captures/boost/regex/regex_traits.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/boost/regex/regex_traits.hpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,35 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE regex_traits.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Declares regular expression traits classes.
+ */
+
+#ifndef BOOST_REGEX_TRAITS_HPP
+#define BOOST_REGEX_TRAITS_HPP
+
+#ifndef BOOST_REGEX_CONFIG_HPP
+# include <boost/regex/config.hpp>
+#endif
+
+# ifndef BOOST_REGEX_TRAITS_HPP_INCLUDED
+# include <boost/regex/v4/regex_traits.hpp>
+# endif
+
+#endif // include
+
+
+
+
+

Added: sandbox/SOC/2007/regex/named-captures/boost/regex/user.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/boost/regex/user.hpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,90 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE user.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: User settable options.
+ */
+
+// define if you want the regex library to use the C locale
+// even on Win32:
+// #define BOOST_REGEX_USE_C_LOCALE
+
+// define this is you want the regex library to use the C++
+// locale:
+// #define BOOST_REGEX_USE_CPP_LOCALE
+
+// define this if the runtime library is a dll, and you
+// want BOOST_REGEX_DYN_LINK to set up dll exports/imports
+// with __declspec(dllexport)/__declspec(dllimport.)
+// #define BOOST_REGEX_HAS_DLL_RUNTIME
+
+// define this if you want to dynamically link to regex,
+// if the runtime library is also a dll (Probably Win32 specific,
+// and has no effect unless BOOST_REGEX_HAS_DLL_RUNTIME is set):
+// #define BOOST_REGEX_DYN_LINK
+
+// define this if you don't want the lib to automatically
+// select its link libraries:
+// #define BOOST_REGEX_NO_LIB
+
+// define this if templates with switch statements cause problems:
+// #define BOOST_REGEX_NO_TEMPLATE_SWITCH_MERGE
+
+// define this to disable Win32 support when available:
+// #define BOOST_REGEX_NO_W32
+
+// define this if bool is not a real type:
+// #define BOOST_REGEX_NO_BOOL
+
+// define this if no template instances are to be placed in
+// the library rather than users object files:
+// #define BOOST_REGEX_NO_EXTERNAL_TEMPLATES
+
+// define this if the forward declarations in regex_fwd.hpp
+// cause more problems than they are worth:
+// #define BOOST_REGEX_NO_FWD
+
+// define this if your compiler supports MS Windows structured
+// exception handling.
+// #define BOOST_REGEX_HAS_MS_STACK_GUARD
+
+// define this if you want to use the recursive algorithm
+// even if BOOST_REGEX_HAS_MS_STACK_GUARD is not defined.
+// #define BOOST_REGEX_RECURSIVE
+
+// define this if you want to use the non-recursive
+// algorithm, even if the recursive version would be the default.
+// #define BOOST_REGEX_NON_RECURSIVE
+
+// define this if you want to set the size of the memory blocks
+// used by the non-recursive algorithm.
+// #define BOOST_REGEX_BLOCKSIZE 4096
+
+// define this if you want to set the maximum number of memory blocks
+// used by the non-recursive algorithm.
+// #define BOOST_REGEX_MAX_BLOCKS 1024
+
+// define this if you want to set the maximum number of memory blocks
+// cached by the non-recursive algorithm: Normally this is 16, but can be
+// higher if you have multiple threads all using boost.regex, or lower
+// if you don't want boost.regex to cache memory.
+// #define BOOST_REGEX_MAX_CACHE_BLOCKS 16
+
+// define this if you want to be able to access extended capture
+// information in your sub_match's (caution this will slow things
+// down quite a bit).
+// #define BOOST_REGEX_MATCH_EXTRA
+
+// define this if you want to enable support for Unicode via ICU.
+// #define BOOST_HAS_ICU

Added: sandbox/SOC/2007/regex/named-captures/boost/regex/v4/basic_regex.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/boost/regex/v4/basic_regex.hpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,638 @@
+/*
+ *
+ * Copyright (c) 1998-2004
+ * John Maddock
+ *
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+ * http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org/ for most recent version.
+ * FILE basic_regex.cpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Declares template class basic_regex.
+ */
+
+#ifndef BOOST_REGEX_V4_BASIC_REGEX_HPP
+#define BOOST_REGEX_V4_BASIC_REGEX_HPP
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+
+namespace boost{
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable : 4251 4231 4660)
+#endif
+
+namespace re_detail{
+
+//
+// forward declaration, we will need this one later:
+//
+template <class charT, class traits>
+class basic_regex_parser;
+
+//
+// class regex_data:
+// represents the data we wish to expose to the matching algorithms.
+//
+template <class charT, class traits>
+struct regex_data
+{
+ typedef regex_constants::syntax_option_type flag_type;
+ typedef std::size_t size_type;
+
+ regex_data(const ::boost::shared_ptr<
+ ::boost::regex_traits_wrapper<traits> >& t)
+ : m_ptraits(t), m_expression(0), m_expression_len(0) {}
+ regex_data()
+ : m_ptraits(new ::boost::regex_traits_wrapper<traits>()), m_expression(0), m_expression_len(0) {}
+
+ ::boost::shared_ptr<
+ ::boost::regex_traits_wrapper<traits>
+ > m_ptraits; // traits class instance
+ flag_type m_flags; // flags with which we were compiled
+ int m_status; // error code (0 implies OK).
+ const charT* m_expression; // the original expression
+ std::ptrdiff_t m_expression_len; // the length of the original expression
+ size_type m_mark_count; // the number of marked sub-expressions
+ re_detail::re_syntax_base* m_first_state; // the first state of the machine
+ unsigned m_restart_type; // search optimisation type
+ unsigned char m_startmap[1 << CHAR_BIT]; // which characters can start a match
+ unsigned int m_can_be_null; // whether we can match a null string
+ re_detail::raw_storage m_data; // the buffer in which our states are constructed
+ typename traits::char_class_type m_word_mask; // mask used to determine if a character is a word character
+};
+//
+// class basic_regex_implementation
+// pimpl implementation class for basic_regex.
+//
+template <class charT, class traits>
+class basic_regex_implementation
+ : public regex_data<charT, traits>
+{
+public:
+ typedef regex_constants::syntax_option_type flag_type;
+ typedef std::ptrdiff_t difference_type;
+ typedef std::size_t size_type;
+ typedef typename traits::locale_type locale_type;
+ typedef const charT* const_iterator;
+
+ basic_regex_implementation(){}
+ basic_regex_implementation(const ::boost::shared_ptr<
+ ::boost::regex_traits_wrapper<traits> >& t)
+ : regex_data<charT, traits>(t) {}
+ void assign(const charT* arg_first,
+ const charT* arg_last,
+ flag_type f)
+ {
+ regex_data<charT, traits>* pdat = this;
+ basic_regex_parser<charT, traits> parser(pdat);
+ parser.parse(arg_first, arg_last, f);
+ }
+
+ locale_type BOOST_REGEX_CALL imbue(locale_type l)
+ {
+ return this->m_ptraits->imbue(l);
+ }
+ locale_type BOOST_REGEX_CALL getloc()const
+ {
+ return this->m_ptraits->getloc();
+ }
+ std::basic_string<charT> BOOST_REGEX_CALL str()const
+ {
+ std::basic_string<charT> result;
+ if(this->m_status == 0)
+ result = std::basic_string<charT>(this->m_expression, this->m_expression_len);
+ return result;
+ }
+ const_iterator BOOST_REGEX_CALL expression()const
+ {
+ return this->m_expression;
+ }
+ //
+ // begin, end:
+ const_iterator BOOST_REGEX_CALL begin()const
+ {
+ return (!this->m_status ? 0 : this->m_expression);
+ }
+ const_iterator BOOST_REGEX_CALL end()const
+ {
+ return (!this->m_status ? 0 : this->m_expression + this->m_expression_len);
+ }
+ flag_type BOOST_REGEX_CALL flags()const
+ {
+ return this->m_flags;
+ }
+ size_type BOOST_REGEX_CALL size()const
+ {
+ return this->m_expression_len;
+ }
+ int BOOST_REGEX_CALL status()const
+ {
+ return this->m_status;
+ }
+ size_type BOOST_REGEX_CALL mark_count()const
+ {
+ return this->m_mark_count;
+ }
+ const re_detail::re_syntax_base* get_first_state()const
+ {
+ return this->m_first_state;
+ }
+ unsigned get_restart_type()const
+ {
+ return this->m_restart_type;
+ }
+ const unsigned char* get_map()const
+ {
+ return this->m_startmap;
+ }
+ const ::boost::regex_traits_wrapper<traits>& get_traits()const
+ {
+ return *(this->m_ptraits);
+ }
+ bool can_be_null()const
+ {
+ return this->m_can_be_null;
+ }
+ const regex_data<charT, traits>& get_data()const
+ {
+ basic_regex_implementation<charT, traits> const* p = this;
+ return *static_cast<const regex_data<charT, traits>*>(p);
+ }
+};
+
+} // namespace re_detail
+//
+// class basic_regex:
+// represents the compiled
+// regular expression:
+//
+
+#ifdef BOOST_REGEX_NO_FWD
+template <class charT, class traits = regex_traits<charT> >
+#else
+template <class charT, class traits >
+#endif
+class basic_regex : public regbase
+{
+public:
+ // typedefs:
+ typedef typename traits::size_type traits_size_type;
+ typedef typename traits::string_type traits_string_type;
+ typedef charT char_type;
+ typedef traits traits_type;
+
+ typedef charT value_type;
+ typedef charT& reference;
+ typedef const charT& const_reference;
+ typedef const charT* const_iterator;
+ typedef const_iterator iterator;
+ typedef std::ptrdiff_t difference_type;
+ typedef std::size_t size_type;
+ typedef regex_constants::syntax_option_type flag_type;
+ // locale_type
+ // placeholder for actual locale type used by the
+ // traits class to localise *this.
+ typedef typename traits::locale_type locale_type;
+
+public:
+ explicit basic_regex(){}
+ explicit basic_regex(const charT* p, flag_type f = regex_constants::normal)
+ {
+ assign(p, f);
+ }
+ basic_regex(const charT* p1, const charT* p2, flag_type f = regex_constants::normal)
+ {
+ assign(p1, p2, f);
+ }
+ basic_regex(const charT* p, size_type len, flag_type f)
+ {
+ assign(p, len, f);
+ }
+ basic_regex(const basic_regex& that)
+ : m_pimpl(that.m_pimpl) {}
+ ~basic_regex(){}
+ basic_regex& BOOST_REGEX_CALL operator=(const basic_regex& that)
+ {
+ return assign(that);
+ }
+ basic_regex& BOOST_REGEX_CALL operator=(const charT* ptr)
+ {
+ return assign(ptr);
+ }
+
+ //
+ // assign:
+ basic_regex& assign(const basic_regex& that)
+ {
+ m_pimpl = that.m_pimpl;
+ return *this;
+ }
+ basic_regex& assign(const charT* p, flag_type f = regex_constants::normal)
+ {
+ return assign(p, p + traits::length(p), f);
+ }
+ basic_regex& assign(const charT* p, size_type len, flag_type f)
+ {
+ return assign(p, p + len, f);
+ }
+private:
+ basic_regex& do_assign(const charT* p1,
+ const charT* p2,
+ flag_type f);
+public:
+ basic_regex& assign(const charT* p1,
+ const charT* p2,
+ flag_type f = regex_constants::normal)
+ {
+ return do_assign(p1, p2, f);
+ }
+#if !defined(BOOST_NO_MEMBER_TEMPLATES) && !defined(__IBMCPP__)
+
+ template <class ST, class SA>
+ unsigned int BOOST_REGEX_CALL set_expression(const std::basic_string<charT, ST, SA>& p, flag_type f = regex_constants::normal)
+ {
+ return set_expression(p.data(), p.data() + p.size(), f);
+ }
+
+ template <class ST, class SA>
+ explicit basic_regex(const std::basic_string<charT, ST, SA>& p, flag_type f = regex_constants::normal)
+ {
+ assign(p, f);
+ }
+
+ template <class InputIterator>
+ basic_regex(InputIterator arg_first, InputIterator arg_last, flag_type f = regex_constants::normal)
+ {
+ typedef typename traits::string_type seq_type;
+ seq_type a(arg_first, arg_last);
+ if(a.size())
+ assign(&*a.begin(), &*a.begin() + a.size(), f);
+ else
+ assign(static_cast<const charT*>(0), static_cast<const charT*>(0), f);
+ }
+
+ template <class ST, class SA>
+ basic_regex& BOOST_REGEX_CALL operator=(const std::basic_string<charT, ST, SA>& p)
+ {
+ return assign(p.data(), p.data() + p.size(), regex_constants::normal);
+ }
+
+ template <class string_traits, class A>
+ basic_regex& BOOST_REGEX_CALL assign(
+ const std::basic_string<charT, string_traits, A>& s,
+ flag_type f = regex_constants::normal)
+ {
+ return assign(s.data(), s.data() + s.size(), f);
+ }
+
+ template <class InputIterator>
+ basic_regex& BOOST_REGEX_CALL assign(InputIterator arg_first,
+ InputIterator arg_last,
+ flag_type f = regex_constants::normal)
+ {
+ typedef typename traits::string_type seq_type;
+ seq_type a(arg_first, arg_last);
+ if(a.size())
+ {
+ const charT* p1 = &*a.begin();
+ const charT* p2 = &*a.begin() + a.size();
+ return assign(p1, p2, f);
+ }
+ return assign(static_cast<const charT*>(0), static_cast<const charT*>(0), f);
+ }
+#else
+ unsigned int BOOST_REGEX_CALL set_expression(const std::basic_string<charT>& p, flag_type f = regex_constants::normal)
+ {
+ return set_expression(p.data(), p.data() + p.size(), f);
+ }
+
+ basic_regex(const std::basic_string<charT>& p, flag_type f = regex_constants::normal)
+ {
+ assign(p, f);
+ }
+
+ basic_regex& BOOST_REGEX_CALL operator=(const std::basic_string<charT>& p)
+ {
+ return assign(p.data(), p.data() + p.size(), regex_constants::normal);
+ }
+
+ basic_regex& BOOST_REGEX_CALL assign(
+ const std::basic_string<charT>& s,
+ flag_type f = regex_constants::normal)
+ {
+ return assign(s.data(), s.data() + s.size(), f);
+ }
+
+#endif
+
+ //
+ // locale:
+ locale_type BOOST_REGEX_CALL imbue(locale_type l);
+ locale_type BOOST_REGEX_CALL getloc()const
+ {
+ return m_pimpl.get() ? m_pimpl->getloc() : locale_type();
+ }
+ //
+ // getflags:
+ // retained for backwards compatibility only, "flags"
+ // is now the preferred name:
+ flag_type BOOST_REGEX_CALL getflags()const
+ {
+ return flags();
+ }
+ flag_type BOOST_REGEX_CALL flags()const
+ {
+ return m_pimpl.get() ? m_pimpl->flags() : 0;
+ }
+ //
+ // str:
+ std::basic_string<charT> BOOST_REGEX_CALL str()const
+ {
+ return m_pimpl.get() ? m_pimpl->str() : std::basic_string<charT>();
+ }
+ //
+ // begin, end:
+ const_iterator BOOST_REGEX_CALL begin()const
+ {
+ return (m_pimpl.get() ? m_pimpl->begin() : 0);
+ }
+ const_iterator BOOST_REGEX_CALL end()const
+ {
+ return (m_pimpl.get() ? m_pimpl->end() : 0);
+ }
+ //
+ // swap:
+ void BOOST_REGEX_CALL swap(basic_regex& that)throw()
+ {
+ m_pimpl.swap(that.m_pimpl);
+ }
+ //
+ // size:
+ size_type BOOST_REGEX_CALL size()const
+ {
+ return (m_pimpl.get() ? m_pimpl->size() : 0);
+ }
+ //
+ // max_size:
+ size_type BOOST_REGEX_CALL max_size()const
+ {
+ return UINT_MAX;
+ }
+ //
+ // empty:
+ bool BOOST_REGEX_CALL empty()const
+ {
+ return (m_pimpl.get() ? 0 != m_pimpl->status() : true);
+ }
+
+ size_type BOOST_REGEX_CALL mark_count()const
+ {
+ return (m_pimpl.get() ? m_pimpl->mark_count() : 0);
+ }
+
+ int status()const
+ {
+ return (m_pimpl.get() ? m_pimpl->status() : regex_constants::error_empty);
+ }
+
+ int BOOST_REGEX_CALL compare(const basic_regex& that) const
+ {
+ if(m_pimpl.get() == that.m_pimpl.get())
+ return 0;
+ if(!m_pimpl.get())
+ return -1;
+ if(!that.m_pimpl.get())
+ return 1;
+ if(status() != that.status())
+ return status() - that.status();
+ if(flags() != that.flags())
+ return flags() - that.flags();
+ return str().compare(that.str());
+ }
+ bool BOOST_REGEX_CALL operator==(const basic_regex& e)const
+ {
+ return compare(e) == 0;
+ }
+ bool BOOST_REGEX_CALL operator != (const basic_regex& e)const
+ {
+ return compare(e) != 0;
+ }
+ bool BOOST_REGEX_CALL operator<(const basic_regex& e)const
+ {
+ return compare(e) < 0;
+ }
+ bool BOOST_REGEX_CALL operator>(const basic_regex& e)const
+ {
+ return compare(e) > 0;
+ }
+ bool BOOST_REGEX_CALL operator<=(const basic_regex& e)const
+ {
+ return compare(e) <= 0;
+ }
+ bool BOOST_REGEX_CALL operator>=(const basic_regex& e)const
+ {
+ return compare(e) >= 0;
+ }
+
+ //
+ // The following are deprecated as public interfaces
+ // but are available for compatibility with earlier versions.
+ const charT* BOOST_REGEX_CALL expression()const
+ {
+ return (m_pimpl.get() && !m_pimpl->status() ? m_pimpl->expression() : 0);
+ }
+ unsigned int BOOST_REGEX_CALL set_expression(const charT* p1, const charT* p2, flag_type f = regex_constants::normal)
+ {
+ assign(p1, p2, f | regex_constants::no_except);
+ return status();
+ }
+ unsigned int BOOST_REGEX_CALL set_expression(const charT* p, flag_type f = regex_constants::normal)
+ {
+ assign(p, f | regex_constants::no_except);
+ return status();
+ }
+ unsigned int BOOST_REGEX_CALL error_code()const
+ {
+ return status();
+ }
+ //
+ // private access methods:
+ //
+ const re_detail::re_syntax_base* get_first_state()const
+ {
+ BOOST_ASSERT(0 != m_pimpl.get());
+ return m_pimpl->get_first_state();
+ }
+ unsigned get_restart_type()const
+ {
+ BOOST_ASSERT(0 != m_pimpl.get());
+ return m_pimpl->get_restart_type();
+ }
+ const unsigned char* get_map()const
+ {
+ BOOST_ASSERT(0 != m_pimpl.get());
+ return m_pimpl->get_map();
+ }
+ const ::boost::regex_traits_wrapper<traits>& get_traits()const
+ {
+ BOOST_ASSERT(0 != m_pimpl.get());
+ return m_pimpl->get_traits();
+ }
+ bool can_be_null()const
+ {
+ BOOST_ASSERT(0 != m_pimpl.get());
+ return m_pimpl->can_be_null();
+ }
+ const re_detail::regex_data<charT, traits>& get_data()const
+ {
+ BOOST_ASSERT(0 != m_pimpl.get());
+ return m_pimpl->get_data();
+ }
+
+private:
+ shared_ptr<re_detail::basic_regex_implementation<charT, traits> > m_pimpl;
+};
+
+//
+// out of line members;
+// these are the only members that mutate the basic_regex object,
+// and are designed to provide the strong exception guarentee
+// (in the event of a throw, the state of the object remains unchanged).
+//
+template <class charT, class traits>
+basic_regex<charT, traits>& basic_regex<charT, traits>::do_assign(const charT* p1,
+ const charT* p2,
+ flag_type f)
+{
+ shared_ptr<re_detail::basic_regex_implementation<charT, traits> > temp;
+ if(!m_pimpl.get())
+ {
+ temp = shared_ptr<re_detail::basic_regex_implementation<charT, traits> >(new re_detail::basic_regex_implementation<charT, traits>());
+ }
+ else
+ {
+ temp = shared_ptr<re_detail::basic_regex_implementation<charT, traits> >(new re_detail::basic_regex_implementation<charT, traits>(m_pimpl->m_ptraits));
+ }
+ temp->assign(p1, p2, f);
+ temp.swap(m_pimpl);
+ return *this;
+}
+
+template <class charT, class traits>
+typename basic_regex<charT, traits>::locale_type BOOST_REGEX_CALL basic_regex<charT, traits>::imbue(locale_type l)
+{
+ shared_ptr<re_detail::basic_regex_implementation<charT, traits> > temp(new re_detail::basic_regex_implementation<charT, traits>());
+ locale_type result = temp->imbue(l);
+ temp.swap(m_pimpl);
+ return result;
+}
+
+//
+// non-members:
+//
+template <class charT, class traits>
+void swap(basic_regex<charT, traits>& e1, basic_regex<charT, traits>& e2)
+{
+ e1.swap(e2);
+}
+
+#ifndef BOOST_NO_STD_LOCALE
+template <class charT, class traits, class traits2>
+std::basic_ostream<charT, traits>&
+ operator << (std::basic_ostream<charT, traits>& os,
+ const basic_regex<charT, traits2>& e)
+{
+ return (os << e.str());
+}
+#else
+template <class traits>
+std::ostream& operator << (std::ostream& os, const basic_regex<char, traits>& e)
+{
+ return (os << e.str());
+}
+#endif
+
+//
+// class reg_expression:
+// this is provided for backwards compatibility only,
+// it is deprecated, no not use!
+//
+#ifdef BOOST_REGEX_NO_FWD
+template <class charT, class traits = regex_traits<charT> >
+#else
+template <class charT, class traits >
+#endif
+class reg_expression : public basic_regex<charT, traits>
+{
+public:
+ typedef typename basic_regex<charT, traits>::flag_type flag_type;
+ typedef typename basic_regex<charT, traits>::size_type size_type;
+ explicit reg_expression(){}
+ explicit reg_expression(const charT* p, flag_type f = regex_constants::normal)
+ : basic_regex<charT, traits>(p, f){}
+ reg_expression(const charT* p1, const charT* p2, flag_type f = regex_constants::normal)
+ : basic_regex<charT, traits>(p1, p2, f){}
+ reg_expression(const charT* p, size_type len, flag_type f)
+ : basic_regex<charT, traits>(p, len, f){}
+ reg_expression(const reg_expression& that)
+ : basic_regex<charT, traits>(that) {}
+ ~reg_expression(){}
+ reg_expression& BOOST_REGEX_CALL operator=(const reg_expression& that)
+ {
+ return this->assign(that);
+ }
+
+#if !defined(BOOST_NO_MEMBER_TEMPLATES) && !defined(__IBMCPP__)
+ template <class ST, class SA>
+ explicit reg_expression(const std::basic_string<charT, ST, SA>& p, flag_type f = regex_constants::normal)
+ : basic_regex<charT, traits>(p, f)
+ {
+ }
+
+ template <class InputIterator>
+ reg_expression(InputIterator arg_first, InputIterator arg_last, flag_type f = regex_constants::normal)
+ : basic_regex<charT, traits>(arg_first, arg_last, f)
+ {
+ }
+
+ template <class ST, class SA>
+ reg_expression& BOOST_REGEX_CALL operator=(const std::basic_string<charT, ST, SA>& p)
+ {
+ this->assign(p);
+ return *this;
+ }
+#else
+ explicit reg_expression(const std::basic_string<charT>& p, flag_type f = regex_constants::normal)
+ : basic_regex<charT, traits>(p, f)
+ {
+ }
+
+ reg_expression& BOOST_REGEX_CALL operator=(const std::basic_string<charT>& p)
+ {
+ this->assign(p);
+ return *this;
+ }
+#endif
+
+};
+
+#ifdef BOOST_MSVC
+#pragma warning (pop)
+#endif
+
+} // namespace boost
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+
+#endif
+

Added: sandbox/SOC/2007/regex/named-captures/boost/regex/v4/basic_regex_creator.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/boost/regex/v4/basic_regex_creator.hpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,1296 @@
+/*
+ *
+ * Copyright (c) 2004
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE basic_regex_creator.cpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Declares template class basic_regex_creator which fills in
+ * the data members of a regex_data object.
+ */
+
+#ifndef BOOST_REGEX_V4_BASIC_REGEX_CREATOR_HPP
+#define BOOST_REGEX_V4_BASIC_REGEX_CREATOR_HPP
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+
+namespace boost{
+
+namespace re_detail{
+
+template <class charT>
+struct digraph : public std::pair<charT, charT>
+{
+ digraph() : std::pair<charT, charT>(0, 0){}
+ digraph(charT c1) : std::pair<charT, charT>(c1, 0){}
+ digraph(charT c1, charT c2) : std::pair<charT, charT>(c1, c2)
+ {}
+#if !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+ digraph(const digraph<charT>& d) : std::pair<charT, charT>(d.first, d.second){}
+#endif
+ template <class Seq>
+ digraph(const Seq& s) : std::pair<charT, charT>()
+ {
+ BOOST_ASSERT(s.size() <= 2);
+ BOOST_ASSERT(s.size());
+ this->first = s[0];
+ this->second = (s.size() > 1) ? s[1] : 0;
+ }
+};
+
+template <class charT, class traits>
+class basic_char_set
+{
+public:
+ typedef digraph<charT> digraph_type;
+ typedef typename traits::string_type string_type;
+ typedef typename traits::char_class_type mask_type;
+
+ basic_char_set()
+ {
+ m_negate = false;
+ m_has_digraphs = false;
+ m_classes = 0;
+ m_negated_classes = 0;
+ m_empty = true;
+ }
+
+ void add_single(const digraph_type& s)
+ {
+ m_singles.insert(m_singles.end(), s);
+ if(s.second)
+ m_has_digraphs = true;
+ m_empty = false;
+ }
+ void add_range(const digraph_type& first, const digraph_type& end)
+ {
+ m_ranges.insert(m_ranges.end(), first);
+ m_ranges.insert(m_ranges.end(), end);
+ if(first.second)
+ {
+ m_has_digraphs = true;
+ add_single(first);
+ }
+ if(end.second)
+ {
+ m_has_digraphs = true;
+ add_single(end);
+ }
+ m_empty = false;
+ }
+ void add_class(mask_type m)
+ {
+ m_classes |= m;
+ m_empty = false;
+ }
+ void add_negated_class(mask_type m)
+ {
+ m_negated_classes |= m;
+ m_empty = false;
+ }
+ void add_equivalent(const digraph_type& s)
+ {
+ m_equivalents.insert(m_equivalents.end(), s);
+ if(s.second)
+ {
+ m_has_digraphs = true;
+ add_single(s);
+ }
+ m_empty = false;
+ }
+ void negate()
+ {
+ m_negate = true;
+ //m_empty = false;
+ }
+
+ //
+ // accessor functions:
+ //
+ bool has_digraphs()const
+ {
+ return m_has_digraphs;
+ }
+ bool is_negated()const
+ {
+ return m_negate;
+ }
+ typedef typename std::vector<digraph_type>::const_iterator list_iterator;
+ list_iterator singles_begin()const
+ {
+ return m_singles.begin();
+ }
+ list_iterator singles_end()const
+ {
+ return m_singles.end();
+ }
+ list_iterator ranges_begin()const
+ {
+ return m_ranges.begin();
+ }
+ list_iterator ranges_end()const
+ {
+ return m_ranges.end();
+ }
+ list_iterator equivalents_begin()const
+ {
+ return m_equivalents.begin();
+ }
+ list_iterator equivalents_end()const
+ {
+ return m_equivalents.end();
+ }
+ mask_type classes()const
+ {
+ return m_classes;
+ }
+ mask_type negated_classes()const
+ {
+ return m_negated_classes;
+ }
+ bool empty()const
+ {
+ return m_empty;
+ }
+private:
+ std::vector<digraph_type> m_singles; // a list of single characters to match
+ std::vector<digraph_type> m_ranges; // a list of end points of our ranges
+ bool m_negate; // true if the set is to be negated
+ bool m_has_digraphs; // true if we have digraphs present
+ mask_type m_classes; // character classes to match
+ mask_type m_negated_classes; // negated character classes to match
+ bool m_empty; // whether we've added anything yet
+ std::vector<digraph_type> m_equivalents; // a list of equivalence classes
+};
+
+template <class charT, class traits>
+class basic_regex_creator
+{
+public:
+ basic_regex_creator(regex_data<charT, traits>* data);
+ std::ptrdiff_t getoffset(void* addr)
+ {
+ return getoffset(addr, m_pdata->m_data.data());
+ }
+ std::ptrdiff_t getoffset(const void* addr, const void* base)
+ {
+ return static_cast<const char*>(addr) - static_cast<const char*>(base);
+ }
+ re_syntax_base* getaddress(std::ptrdiff_t off)
+ {
+ return getaddress(off, m_pdata->m_data.data());
+ }
+ re_syntax_base* getaddress(std::ptrdiff_t off, void* base)
+ {
+ return static_cast<re_syntax_base*>(static_cast<void*>(static_cast<char*>(base) + off));
+ }
+ void init(unsigned l_flags)
+ {
+ m_pdata->m_flags = l_flags;
+ m_icase = l_flags & regex_constants::icase;
+ }
+ regbase::flag_type flags()
+ {
+ return m_pdata->m_flags;
+ }
+ void flags(regbase::flag_type f)
+ {
+ m_pdata->m_flags = f;
+ if(m_icase != static_cast<bool>(f & regbase::icase))
+ {
+ m_icase = static_cast<bool>(f & regbase::icase);
+ }
+ }
+ re_syntax_base* append_state(syntax_element_type t, std::size_t s = sizeof(re_syntax_base));
+ re_syntax_base* insert_state(std::ptrdiff_t pos, syntax_element_type t, std::size_t s = sizeof(re_syntax_base));
+ re_literal* append_literal(charT c);
+ re_syntax_base* append_set(const basic_char_set<charT, traits>& char_set);
+ re_syntax_base* append_set(const basic_char_set<charT, traits>& char_set, mpl::false_*);
+ re_syntax_base* append_set(const basic_char_set<charT, traits>& char_set, mpl::true_*);
+ void finalize(const charT* p1, const charT* p2);
+protected:
+ regex_data<charT, traits>* m_pdata; // pointer to the basic_regex_data struct we are filling in
+ const ::boost::regex_traits_wrapper<traits>&
+ m_traits; // convenience reference to traits class
+ re_syntax_base* m_last_state; // the last state we added
+ bool m_icase; // true for case insensitive matches
+ unsigned m_repeater_id; // the id of the next repeater
+ bool m_has_backrefs; // true if there are actually any backrefs
+ unsigned m_backrefs; // bitmask of permitted backrefs
+ boost::uintmax_t m_bad_repeats; // bitmask of repeats we can't deduce a startmap for;
+ typename traits::char_class_type m_word_mask; // mask used to determine if a character is a word character
+ typename traits::char_class_type m_mask_space; // mask used to determine if a character is a word character
+ typename traits::char_class_type m_lower_mask; // mask used to determine if a character is a lowercase character
+ typename traits::char_class_type m_upper_mask; // mask used to determine if a character is an uppercase character
+ typename traits::char_class_type m_alpha_mask; // mask used to determine if a character is an alphabetic character
+private:
+ basic_regex_creator& operator=(const basic_regex_creator&);
+ basic_regex_creator(const basic_regex_creator&);
+
+ void fixup_pointers(re_syntax_base* state);
+ void create_startmaps(re_syntax_base* state);
+ int calculate_backstep(re_syntax_base* state);
+ void create_startmap(re_syntax_base* state, unsigned char* l_map, unsigned int* pnull, unsigned char mask);
+ unsigned get_restart_type(re_syntax_base* state);
+ void set_all_masks(unsigned char* bits, unsigned char);
+ bool is_bad_repeat(re_syntax_base* pt);
+ void set_bad_repeat(re_syntax_base* pt);
+ syntax_element_type get_repeat_type(re_syntax_base* state);
+ void probe_leading_repeat(re_syntax_base* state);
+};
+
+template <class charT, class traits>
+basic_regex_creator<charT, traits>::basic_regex_creator(regex_data<charT, traits>* data)
+ : m_pdata(data), m_traits(*(data->m_ptraits)), m_last_state(0), m_repeater_id(0), m_has_backrefs(false), m_backrefs(0)
+{
+ m_pdata->m_data.clear();
+ m_pdata->m_status = ::boost::regex_constants::error_ok;
+ static const charT w = 'w';
+ static const charT s = 's';
+ static const charT l[5] = { 'l', 'o', 'w', 'e', 'r', };
+ static const charT u[5] = { 'u', 'p', 'p', 'e', 'r', };
+ static const charT a[5] = { 'a', 'l', 'p', 'h', 'a', };
+ m_word_mask = m_traits.lookup_classname(&w, &w +1);
+ m_mask_space = m_traits.lookup_classname(&s, &s +1);
+ m_lower_mask = m_traits.lookup_classname(l, l + 5);
+ m_upper_mask = m_traits.lookup_classname(u, u + 5);
+ m_alpha_mask = m_traits.lookup_classname(a, a + 5);
+ m_pdata->m_word_mask = m_word_mask;
+ BOOST_ASSERT(m_word_mask != 0);
+ BOOST_ASSERT(m_mask_space != 0);
+ BOOST_ASSERT(m_lower_mask != 0);
+ BOOST_ASSERT(m_upper_mask != 0);
+ BOOST_ASSERT(m_alpha_mask != 0);
+}
+
+template <class charT, class traits>
+re_syntax_base* basic_regex_creator<charT, traits>::append_state(syntax_element_type t, std::size_t s)
+{
+ // if the state is a backref then make a note of it:
+ if(t == syntax_element_backref)
+ this->m_has_backrefs = true;
+ // append a new state, start by aligning our last one:
+ m_pdata->m_data.align();
+ // set the offset to the next state in our last one:
+ if(m_last_state)
+ m_last_state->next.i = m_pdata->m_data.size() - getoffset(m_last_state);
+ // now actually extent our data:
+ m_last_state = static_cast<re_syntax_base*>(m_pdata->m_data.extend(s));
+ // fill in boilerplate options in the new state:
+ m_last_state->next.i = 0;
+ m_last_state->type = t;
+ return m_last_state;
+}
+
+template <class charT, class traits>
+re_syntax_base* basic_regex_creator<charT, traits>::insert_state(std::ptrdiff_t pos, syntax_element_type t, std::size_t s)
+{
+ // append a new state, start by aligning our last one:
+ m_pdata->m_data.align();
+ // set the offset to the next state in our last one:
+ if(m_last_state)
+ m_last_state->next.i = m_pdata->m_data.size() - getoffset(m_last_state);
+ // remember the last state position:
+ std::ptrdiff_t off = getoffset(m_last_state) + s;
+ // now actually insert our data:
+ re_syntax_base* new_state = static_cast<re_syntax_base*>(m_pdata->m_data.insert(pos, s));
+ // fill in boilerplate options in the new state:
+ new_state->next.i = s;
+ new_state->type = t;
+ m_last_state = getaddress(off);
+ return new_state;
+}
+
+template <class charT, class traits>
+re_literal* basic_regex_creator<charT, traits>::append_literal(charT c)
+{
+ re_literal* result;
+ // start by seeing if we have an existing re_literal we can extend:
+ if((0 == m_last_state) || (m_last_state->type != syntax_element_literal))
+ {
+ // no existing re_literal, create a new one:
+ result = static_cast<re_literal*>(append_state(syntax_element_literal, sizeof(re_literal) + sizeof(charT)));
+ result->length = 1;
+ *static_cast<charT*>(static_cast<void*>(result+1)) = m_traits.translate(c, m_icase);
+ }
+ else
+ {
+ // we have an existing re_literal, extend it:
+ std::ptrdiff_t off = getoffset(m_last_state);
+ m_pdata->m_data.extend(sizeof(charT));
+ m_last_state = result = static_cast<re_literal*>(getaddress(off));
+ charT* characters = static_cast<charT*>(static_cast<void*>(result+1));
+ characters[result->length] = m_traits.translate(c, m_icase);
+ ++(result->length);
+ }
+ return result;
+}
+
+template <class charT, class traits>
+inline re_syntax_base* basic_regex_creator<charT, traits>::append_set(
+ const basic_char_set<charT, traits>& char_set)
+{
+ typedef mpl::bool_< (sizeof(charT) == 1) > truth_type;
+ return char_set.has_digraphs()
+ ? append_set(char_set, static_cast<mpl::false_*>(0))
+ : append_set(char_set, static_cast<truth_type*>(0));
+}
+
+template <class charT, class traits>
+re_syntax_base* basic_regex_creator<charT, traits>::append_set(
+ const basic_char_set<charT, traits>& char_set, mpl::false_*)
+{
+ typedef typename traits::string_type string_type;
+ typedef typename basic_char_set<charT, traits>::list_iterator item_iterator;
+ typedef typename traits::char_class_type mask_type;
+
+ re_set_long<mask_type>* result = static_cast<re_set_long<mask_type>*>(append_state(syntax_element_long_set, sizeof(re_set_long<mask_type>)));
+ //
+ // fill in the basics:
+ //
+ result->csingles = static_cast<unsigned int>(::boost::re_detail::distance(char_set.singles_begin(), char_set.singles_end()));
+ result->cranges = static_cast<unsigned int>(::boost::re_detail::distance(char_set.ranges_begin(), char_set.ranges_end())) / 2;
+ result->cequivalents = static_cast<unsigned int>(::boost::re_detail::distance(char_set.equivalents_begin(), char_set.equivalents_end()));
+ result->cclasses = char_set.classes();
+ result->cnclasses = char_set.negated_classes();
+ if(flags() & regbase::icase)
+ {
+ // adjust classes as needed:
+ if(((result->cclasses & m_lower_mask) == m_lower_mask) || ((result->cclasses & m_upper_mask) == m_upper_mask))
+ result->cclasses |= m_alpha_mask;
+ if(((result->cnclasses & m_lower_mask) == m_lower_mask) || ((result->cnclasses & m_upper_mask) == m_upper_mask))
+ result->cnclasses |= m_alpha_mask;
+ }
+
+ result->isnot = char_set.is_negated();
+ result->singleton = !char_set.has_digraphs();
+ //
+ // remember where the state is for later:
+ //
+ std::ptrdiff_t offset = getoffset(result);
+ //
+ // now extend with all the singles:
+ //
+ item_iterator first, last;
+ first = char_set.singles_begin();
+ last = char_set.singles_end();
+ while(first != last)
+ {
+ charT* p = static_cast<charT*>(this->m_pdata->m_data.extend(sizeof(charT) * (first->second ? 3 : 2)));
+ p[0] = m_traits.translate(first->first, m_icase);
+ if(first->second)
+ {
+ p[1] = m_traits.translate(first->second, m_icase);
+ p[2] = 0;
+ }
+ else
+ p[1] = 0;
+ ++first;
+ }
+ //
+ // now extend with all the ranges:
+ //
+ first = char_set.ranges_begin();
+ last = char_set.ranges_end();
+ while(first != last)
+ {
+ // first grab the endpoints of the range:
+ digraph<charT> c1 = *first;
+ c1.first = this->m_traits.translate(c1.first, this->m_icase);
+ c1.second = this->m_traits.translate(c1.second, this->m_icase);
+ ++first;
+ digraph<charT> c2 = *first;
+ c2.first = this->m_traits.translate(c2.first, this->m_icase);
+ c2.second = this->m_traits.translate(c2.second, this->m_icase);
+ ++first;
+ string_type s1, s2;
+ // different actions now depending upon whether collation is turned on:
+ if(flags() & regex_constants::collate)
+ {
+ // we need to transform our range into sort keys:
+#if BOOST_WORKAROUND(__GNUC__, < 3)
+ string_type in(3, charT(0));
+ in[0] = c1.first;
+ in[1] = c1.second;
+ s1 = this->m_traits.transform(in.c_str(), (in[1] ? in.c_str()+2 : in.c_str()+1));
+ in[0] = c2.first;
+ in[1] = c2.second;
+ s2 = this->m_traits.transform(in.c_str(), (in[1] ? in.c_str()+2 : in.c_str()+1));
+#else
+ charT a1[3] = { c1.first, c1.second, charT(0), };
+ charT a2[3] = { c2.first, c2.second, charT(0), };
+ s1 = this->m_traits.transform(a1, (a1[1] ? a1+2 : a1+1));
+ s2 = this->m_traits.transform(a2, (a2[1] ? a2+2 : a2+1));
+#endif
+ if(s1.size() == 0)
+ s1 = string_type(1, charT(0));
+ if(s2.size() == 0)
+ s2 = string_type(1, charT(0));
+ }
+ else
+ {
+ if(c1.second)
+ {
+ s1.insert(s1.end(), c1.first);
+ s1.insert(s1.end(), c1.second);
+ }
+ else
+ s1 = string_type(1, c1.first);
+ if(c2.second)
+ {
+ s2.insert(s2.end(), c2.first);
+ s2.insert(s2.end(), c2.second);
+ }
+ else
+ s2.insert(s2.end(), c2.first);
+ }
+ if(s1 > s2)
+ {
+ // Oops error:
+ return 0;
+ }
+ charT* p = static_cast<charT*>(this->m_pdata->m_data.extend(sizeof(charT) * (s1.size() + s2.size() + 2) ) );
+ re_detail::copy(s1.begin(), s1.end(), p);
+ p[s1.size()] = charT(0);
+ p += s1.size() + 1;
+ re_detail::copy(s2.begin(), s2.end(), p);
+ p[s2.size()] = charT(0);
+ }
+ //
+ // now process the equivalence classes:
+ //
+ first = char_set.equivalents_begin();
+ last = char_set.equivalents_end();
+ while(first != last)
+ {
+ string_type s;
+ if(first->second)
+ {
+#if BOOST_WORKAROUND(__GNUC__, < 3)
+ string_type in(3, charT(0));
+ in[0] = first->first;
+ in[1] = first->second;
+ s = m_traits.transform_primary(in.c_str(), in.c_str()+2);
+#else
+ charT cs[3] = { first->first, first->second, charT(0), };
+ s = m_traits.transform_primary(cs, cs+2);
+#endif
+ }
+ else
+ s = m_traits.transform_primary(&first->first, &first->first+1);
+ if(s.empty())
+ return 0; // invalid or unsupported equivalence class
+ charT* p = static_cast<charT*>(this->m_pdata->m_data.extend(sizeof(charT) * (s.size()+1) ) );
+ re_detail::copy(s.begin(), s.end(), p);
+ p[s.size()] = charT(0);
+ ++first;
+ }
+ //
+ // finally reset the address of our last state:
+ //
+ m_last_state = result = static_cast<re_set_long<mask_type>*>(getaddress(offset));
+ return result;
+}
+
+namespace{
+
+template<class T>
+inline bool char_less(T t1, T t2)
+{
+ return t1 < t2;
+}
+template<>
+inline bool char_less<char>(char t1, char t2)
+{
+ return static_cast<unsigned char>(t1) < static_cast<unsigned char>(t2);
+}
+template<>
+inline bool char_less<signed char>(signed char t1, signed char t2)
+{
+ return static_cast<unsigned char>(t1) < static_cast<unsigned char>(t2);
+}
+}
+
+template <class charT, class traits>
+re_syntax_base* basic_regex_creator<charT, traits>::append_set(
+ const basic_char_set<charT, traits>& char_set, mpl::true_*)
+{
+ typedef typename traits::string_type string_type;
+ typedef typename basic_char_set<charT, traits>::list_iterator item_iterator;
+
+ re_set* result = static_cast<re_set*>(append_state(syntax_element_set, sizeof(re_set)));
+ bool negate = char_set.is_negated();
+ std::memset(result->_map, 0, sizeof(result->_map));
+ //
+ // handle singles first:
+ //
+ item_iterator first, last;
+ first = char_set.singles_begin();
+ last = char_set.singles_end();
+ while(first != last)
+ {
+ for(unsigned int i = 0; i < (1 << CHAR_BIT); ++i)
+ {
+ if(this->m_traits.translate(static_cast<charT>(i), this->m_icase)
+ == this->m_traits.translate(first->first, this->m_icase))
+ result->_map[i] = true;
+ }
+ ++first;
+ }
+ //
+ // OK now handle ranges:
+ //
+ first = char_set.ranges_begin();
+ last = char_set.ranges_end();
+ while(first != last)
+ {
+ // first grab the endpoints of the range:
+ charT c1 = this->m_traits.translate(first->first, this->m_icase);
+ ++first;
+ charT c2 = this->m_traits.translate(first->first, this->m_icase);
+ ++first;
+ // different actions now depending upon whether collation is turned on:
+ if(flags() & regex_constants::collate)
+ {
+ // we need to transform our range into sort keys:
+ charT c3[2] = { c1, charT(0), };
+ string_type s1 = this->m_traits.transform(c3, c3+1);
+ c3[0] = c2;
+ string_type s2 = this->m_traits.transform(c3, c3+1);
+ if(s1 > s2)
+ {
+ // Oops error:
+ return 0;
+ }
+ BOOST_ASSERT(c3[1] == charT(0));
+ for(unsigned i = 0; i < (1u << CHAR_BIT); ++i)
+ {
+ c3[0] = static_cast<charT>(i);
+ string_type s3 = this->m_traits.transform(c3, c3 +1);
+ if((s1 <= s3) && (s3 <= s2))
+ result->_map[i] = true;
+ }
+ }
+ else
+ {
+ if(char_less<charT>(c2, c1))
+ {
+ // Oops error:
+ return 0;
+ }
+ // everything in range matches:
+ std::memset(result->_map + static_cast<unsigned char>(c1), true, 1 + static_cast<unsigned char>(c2) - static_cast<unsigned char>(c1));
+ }
+ }
+ //
+ // and now the classes:
+ //
+ typedef typename traits::char_class_type mask_type;
+ mask_type m = char_set.classes();
+ if(flags() & regbase::icase)
+ {
+ // adjust m as needed:
+ if(((m & m_lower_mask) == m_lower_mask) || ((m & m_upper_mask) == m_upper_mask))
+ m |= m_alpha_mask;
+ }
+ if(m != 0)
+ {
+ for(unsigned i = 0; i < (1u << CHAR_BIT); ++i)
+ {
+ if(this->m_traits.isctype(static_cast<charT>(i), m))
+ result->_map[i] = true;
+ }
+ }
+ //
+ // and now the negated classes:
+ //
+ m = char_set.negated_classes();
+ if(flags() & regbase::icase)
+ {
+ // adjust m as needed:
+ if(((m & m_lower_mask) == m_lower_mask) || ((m & m_upper_mask) == m_upper_mask))
+ m |= m_alpha_mask;
+ }
+ if(m != 0)
+ {
+ for(unsigned i = 0; i < (1u << CHAR_BIT); ++i)
+ {
+ if(0 == this->m_traits.isctype(static_cast<charT>(i), m))
+ result->_map[i] = true;
+ }
+ }
+ //
+ // now process the equivalence classes:
+ //
+ first = char_set.equivalents_begin();
+ last = char_set.equivalents_end();
+ while(first != last)
+ {
+ string_type s;
+ BOOST_ASSERT(static_cast<charT>(0) == first->second);
+ s = m_traits.transform_primary(&first->first, &first->first+1);
+ if(s.empty())
+ return 0; // invalid or unsupported equivalence class
+ for(unsigned i = 0; i < (1u << CHAR_BIT); ++i)
+ {
+ charT c[2] = { (static_cast<charT>(i)), charT(0), };
+ string_type s2 = this->m_traits.transform_primary(c, c+1);
+ if(s == s2)
+ result->_map[i] = true;
+ }
+ ++first;
+ }
+ if(negate)
+ {
+ for(unsigned i = 0; i < (1u << CHAR_BIT); ++i)
+ {
+ result->_map[i] = !(result->_map[i]);
+ }
+ }
+ return result;
+}
+
+template <class charT, class traits>
+void basic_regex_creator<charT, traits>::finalize(const charT* p1, const charT* p2)
+{
+ // we've added all the states we need, now finish things off.
+ // start by adding a terminating state:
+ append_state(syntax_element_match);
+ // extend storage to store original expression:
+ std::ptrdiff_t len = p2 - p1;
+ m_pdata->m_expression_len = len;
+ charT* ps = static_cast<charT*>(m_pdata->m_data.extend(sizeof(charT) * (1 + (p2 - p1))));
+ m_pdata->m_expression = ps;
+ re_detail::copy(p1, p2, ps);
+ ps[p2 - p1] = 0;
+ // fill in our other data...
+ // successful parsing implies a zero status:
+ m_pdata->m_status = 0;
+ // get the first state of the machine:
+ m_pdata->m_first_state = static_cast<re_syntax_base*>(m_pdata->m_data.data());
+ // fixup pointers in the machine:
+ fixup_pointers(m_pdata->m_first_state);
+ // create nested startmaps:
+ create_startmaps(m_pdata->m_first_state);
+ // create main startmap:
+ std::memset(m_pdata->m_startmap, 0, sizeof(m_pdata->m_startmap));
+ m_pdata->m_can_be_null = 0;
+
+ m_bad_repeats = 0;
+ create_startmap(m_pdata->m_first_state, m_pdata->m_startmap, &(m_pdata->m_can_be_null), mask_all);
+ // get the restart type:
+ m_pdata->m_restart_type = get_restart_type(m_pdata->m_first_state);
+ // optimise a leading repeat if there is one:
+ probe_leading_repeat(m_pdata->m_first_state);
+}
+
+template <class charT, class traits>
+void basic_regex_creator<charT, traits>::fixup_pointers(re_syntax_base* state)
+{
+ while(state)
+ {
+ switch(state->type)
+ {
+ case syntax_element_rep:
+ case syntax_element_dot_rep:
+ case syntax_element_char_rep:
+ case syntax_element_short_set_rep:
+ case syntax_element_long_set_rep:
+ // set the id of this repeat:
+ static_cast<re_repeat*>(state)->id = m_repeater_id++;
+ // fall through:
+ case syntax_element_alt:
+ std::memset(static_cast<re_alt*>(state)->_map, 0, sizeof(static_cast<re_alt*>(state)->_map));
+ static_cast<re_alt*>(state)->can_be_null = 0;
+ // fall through:
+ case syntax_element_jump:
+ static_cast<re_jump*>(state)->alt.p = getaddress(static_cast<re_jump*>(state)->alt.i, state);
+ // fall through again:
+ default:
+ if(state->next.i)
+ state->next.p = getaddress(state->next.i, state);
+ else
+ state->next.p = 0;
+ }
+ state = state->next.p;
+ }
+}
+
+template <class charT, class traits>
+void basic_regex_creator<charT, traits>::create_startmaps(re_syntax_base* state)
+{
+ // non-recursive implementation:
+ // create the last map in the machine first, so that earlier maps
+ // can make use of the result...
+ //
+ // This was originally a recursive implementation, but that caused stack
+ // overflows with complex expressions on small stacks (think COM+).
+
+ // start by saving the case setting:
+ bool l_icase = m_icase;
+ std::vector<std::pair<bool, re_syntax_base*> > v;
+
+ while(state)
+ {
+ switch(state->type)
+ {
+ case syntax_element_toggle_case:
+ // we need to track case changes here:
+ m_icase = static_cast<re_case*>(state)->icase;
+ state = state->next.p;
+ continue;
+ case syntax_element_alt:
+ case syntax_element_rep:
+ case syntax_element_dot_rep:
+ case syntax_element_char_rep:
+ case syntax_element_short_set_rep:
+ case syntax_element_long_set_rep:
+ // just push the state onto our stack for now:
+ v.push_back(std::pair<bool, re_syntax_base*>(m_icase, state));
+ state = state->next.p;
+ break;
+ case syntax_element_backstep:
+ // we need to calculate how big the backstep is:
+ static_cast<re_brace*>(state)->index
+ = this->calculate_backstep(state->next.p);
+ if(static_cast<re_brace*>(state)->index < 0)
+ {
+ // Oops error:
+ if(0 == this->m_pdata->m_status) // update the error code if not already set
+ this->m_pdata->m_status = boost::regex_constants::error_bad_pattern;
+ //
+ // clear the expression, we should be empty:
+ //
+ this->m_pdata->m_expression = 0;
+ this->m_pdata->m_expression_len = 0;
+ //
+ // and throw if required:
+ //
+ if(0 == (this->flags() & regex_constants::no_except))
+ {
+ std::string message = this->m_pdata->m_ptraits->error_string(boost::regex_constants::error_bad_pattern);
+ boost::regex_error e(message, boost::regex_constants::error_bad_pattern, 0);
+ e.raise();
+ }
+ }
+ // fall through:
+ default:
+ state = state->next.p;
+ }
+ }
+ // now work through our list, building all the maps as we go:
+ while(v.size())
+ {
+ const std::pair<bool, re_syntax_base*>& p = v.back();
+ m_icase = p.first;
+ state = p.second;
+ v.pop_back();
+
+ // Build maps:
+ m_bad_repeats = 0;
+ create_startmap(state->next.p, static_cast<re_alt*>(state)->_map, &static_cast<re_alt*>(state)->can_be_null, mask_take);
+ m_bad_repeats = 0;
+ create_startmap(static_cast<re_alt*>(state)->alt.p, static_cast<re_alt*>(state)->_map, &static_cast<re_alt*>(state)->can_be_null, mask_skip);
+ // adjust the type of the state to allow for faster matching:
+ state->type = this->get_repeat_type(state);
+ }
+ // restore case sensitivity:
+ m_icase = l_icase;
+}
+
+template <class charT, class traits>
+int basic_regex_creator<charT, traits>::calculate_backstep(re_syntax_base* state)
+{
+ typedef typename traits::char_class_type mask_type;
+ int result = 0;
+ while(state)
+ {
+ switch(state->type)
+ {
+ case syntax_element_startmark:
+ if((static_cast<re_brace*>(state)->index == -1)
+ || (static_cast<re_brace*>(state)->index == -2))
+ {
+ state = static_cast<re_jump*>(state->next.p)->alt.p->next.p;
+ continue;
+ }
+ else if(static_cast<re_brace*>(state)->index == -3)
+ {
+ state = state->next.p->next.p;
+ continue;
+ }
+ break;
+ case syntax_element_endmark:
+ if((static_cast<re_brace*>(state)->index == -1)
+ || (static_cast<re_brace*>(state)->index == -2))
+ return result;
+ break;
+ case syntax_element_literal:
+ result += static_cast<re_literal*>(state)->length;
+ break;
+ case syntax_element_wild:
+ case syntax_element_set:
+ result += 1;
+ break;
+ case syntax_element_dot_rep:
+ case syntax_element_char_rep:
+ case syntax_element_short_set_rep:
+ case syntax_element_backref:
+ case syntax_element_rep:
+ case syntax_element_combining:
+ case syntax_element_long_set_rep:
+ case syntax_element_backstep:
+ {
+ re_repeat* rep = static_cast<re_repeat *>(state);
+ // adjust the type of the state to allow for faster matching:
+ state->type = this->get_repeat_type(state);
+ if((state->type == syntax_element_dot_rep)
+ || (state->type == syntax_element_char_rep)
+ || (state->type == syntax_element_short_set_rep))
+ {
+ if(rep->max != rep->min)
+ return -1;
+ result += static_cast<int>(rep->min);
+ state = rep->alt.p;
+ continue;
+ }
+ else if((state->type == syntax_element_long_set_rep))
+ {
+ BOOST_ASSERT(rep->next.p->type == syntax_element_long_set);
+ if(static_cast<re_set_long<mask_type>*>(rep->next.p)->singleton == 0)
+ return -1;
+ if(rep->max != rep->min)
+ return -1;
+ result += static_cast<int>(rep->min);
+ state = rep->alt.p;
+ continue;
+ }
+ }
+ return -1;
+ case syntax_element_long_set:
+ if(static_cast<re_set_long<mask_type>*>(state)->singleton == 0)
+ return -1;
+ result += 1;
+ break;
+ case syntax_element_jump:
+ state = static_cast<re_jump*>(state)->alt.p;
+ continue;
+ default:
+ break;
+ }
+ state = state->next.p;
+ }
+ return -1;
+}
+
+template <class charT, class traits>
+void basic_regex_creator<charT, traits>::create_startmap(re_syntax_base* state, unsigned char* l_map, unsigned int* pnull, unsigned char mask)
+{
+ int not_last_jump = 1;
+
+ // track case sensitivity:
+ bool l_icase = m_icase;
+
+ while(state)
+ {
+ switch(state->type)
+ {
+ case syntax_element_toggle_case:
+ l_icase = static_cast<re_case*>(state)->icase;
+ state = state->next.p;
+ break;
+ case syntax_element_literal:
+ {
+ // don't set anything in *pnull, set each element in l_map
+ // that could match the first character in the literal:
+ if(l_map)
+ {
+ l_map[0] |= mask_init;
+ charT first_char = *static_cast<charT*>(static_cast<void*>(static_cast<re_literal*>(state) + 1));
+ for(unsigned int i = 0; i < (1u << CHAR_BIT); ++i)
+ {
+ if(m_traits.translate(static_cast<charT>(i), l_icase) == first_char)
+ l_map[i] |= mask;
+ }
+ }
+ return;
+ }
+ case syntax_element_end_line:
+ {
+ // next character must be a line separator (if there is one):
+ if(l_map)
+ {
+ l_map[0] |= mask_init;
+ l_map['\n'] |= mask;
+ l_map['\r'] |= mask;
+ l_map['\f'] |= mask;
+ l_map[0x85] |= mask;
+ }
+ // now figure out if we can match a NULL string at this point:
+ if(pnull)
+ create_startmap(state->next.p, 0, pnull, mask);
+ return;
+ }
+ case syntax_element_backref:
+ // can be null, and any character can match:
+ if(pnull)
+ *pnull |= mask;
+ // fall through:
+ case syntax_element_wild:
+ {
+ // can't be null, any character can match:
+ set_all_masks(l_map, mask);
+ return;
+ }
+ case syntax_element_match:
+ {
+ // must be null, any character can match:
+ set_all_masks(l_map, mask);
+ if(pnull)
+ *pnull |= mask;
+ return;
+ }
+ case syntax_element_word_start:
+ {
+ // recurse, then AND with all the word characters:
+ create_startmap(state->next.p, l_map, pnull, mask);
+ if(l_map)
+ {
+ l_map[0] |= mask_init;
+ for(unsigned int i = 0; i < (1u << CHAR_BIT); ++i)
+ {
+ if(!m_traits.isctype(static_cast<charT>(i), m_word_mask))
+ l_map[i] &= static_cast<unsigned char>(~mask);
+ }
+ }
+ return;
+ }
+ case syntax_element_word_end:
+ {
+ // recurse, then AND with all the word characters:
+ create_startmap(state->next.p, l_map, pnull, mask);
+ if(l_map)
+ {
+ l_map[0] |= mask_init;
+ for(unsigned int i = 0; i < (1u << CHAR_BIT); ++i)
+ {
+ if(m_traits.isctype(static_cast<charT>(i), m_word_mask))
+ l_map[i] &= static_cast<unsigned char>(~mask);
+ }
+ }
+ return;
+ }
+ case syntax_element_buffer_end:
+ {
+ // we *must be null* :
+ if(pnull)
+ *pnull |= mask;
+ return;
+ }
+ case syntax_element_long_set:
+ if(l_map)
+ {
+ typedef typename traits::char_class_type mask_type;
+ if(static_cast<re_set_long<mask_type>*>(state)->singleton)
+ {
+ l_map[0] |= mask_init;
+ for(unsigned int i = 0; i < (1u << CHAR_BIT); ++i)
+ {
+ charT c = static_cast<charT>(i);
+ if(&c != re_is_set_member(&c, &c + 1, static_cast<re_set_long<mask_type>*>(state), *m_pdata, m_icase))
+ l_map[i] |= mask;
+ }
+ }
+ else
+ set_all_masks(l_map, mask);
+ }
+ return;
+ case syntax_element_set:
+ if(l_map)
+ {
+ l_map[0] |= mask_init;
+ for(unsigned int i = 0; i < (1u << CHAR_BIT); ++i)
+ {
+ if(static_cast<re_set*>(state)->_map[
+ static_cast<unsigned char>(m_traits.translate(static_cast<charT>(i), l_icase))])
+ l_map[i] |= mask;
+ }
+ }
+ return;
+ case syntax_element_jump:
+ // take the jump:
+ state = static_cast<re_alt*>(state)->alt.p;
+ not_last_jump = -1;
+ break;
+ case syntax_element_alt:
+ case syntax_element_rep:
+ case syntax_element_dot_rep:
+ case syntax_element_char_rep:
+ case syntax_element_short_set_rep:
+ case syntax_element_long_set_rep:
+ {
+ re_alt* rep = static_cast<re_alt*>(state);
+ if(rep->_map[0] & mask_init)
+ {
+ if(l_map)
+ {
+ // copy previous results:
+ l_map[0] |= mask_init;
+ for(unsigned int i = 0; i <= UCHAR_MAX; ++i)
+ {
+ if(rep->_map[i] & mask_any)
+ l_map[i] |= mask;
+ }
+ }
+ if(pnull)
+ {
+ if(rep->can_be_null & mask_any)
+ *pnull |= mask;
+ }
+ }
+ else
+ {
+ // we haven't created a startmap for this alternative yet
+ // so take the union of the two options:
+ if(is_bad_repeat(state))
+ {
+ set_all_masks(l_map, mask);
+ if(pnull)
+ *pnull |= mask;
+ return;
+ }
+ set_bad_repeat(state);
+ create_startmap(state->next.p, l_map, pnull, mask);
+ if((state->type == syntax_element_alt)
+ || (static_cast<re_repeat*>(state)->min == 0)
+ || (not_last_jump == 0))
+ create_startmap(rep->alt.p, l_map, pnull, mask);
+ }
+ }
+ return;
+ case syntax_element_soft_buffer_end:
+ // match newline or null:
+ if(l_map)
+ {
+ l_map[0] |= mask_init;
+ l_map['\n'] |= mask;
+ l_map['\r'] |= mask;
+ }
+ if(pnull)
+ *pnull |= mask;
+ return;
+ case syntax_element_endmark:
+ // need to handle independent subs as a special case:
+ if(static_cast<re_brace*>(state)->index < 0)
+ {
+ // can be null, any character can match:
+ set_all_masks(l_map, mask);
+ if(pnull)
+ *pnull |= mask;
+ return;
+ }
+ else
+ {
+ state = state->next.p;
+ break;
+ }
+
+ case syntax_element_startmark:
+ // need to handle independent subs as a special case:
+ if(static_cast<re_brace*>(state)->index == -3)
+ {
+ state = state->next.p->next.p;
+ break;
+ }
+ // otherwise fall through:
+ default:
+ state = state->next.p;
+ }
+ ++not_last_jump;
+ }
+}
+
+template <class charT, class traits>
+unsigned basic_regex_creator<charT, traits>::get_restart_type(re_syntax_base* state)
+{
+ //
+ // find out how the machine starts, so we can optimise the search:
+ //
+ while(state)
+ {
+ switch(state->type)
+ {
+ case syntax_element_startmark:
+ case syntax_element_endmark:
+ state = state->next.p;
+ continue;
+ case syntax_element_start_line:
+ return regbase::restart_line;
+ case syntax_element_word_start:
+ return regbase::restart_word;
+ case syntax_element_buffer_start:
+ return regbase::restart_buf;
+ case syntax_element_restart_continue:
+ return regbase::restart_continue;
+ default:
+ state = 0;
+ continue;
+ }
+ }
+ return regbase::restart_any;
+}
+
+template <class charT, class traits>
+void basic_regex_creator<charT, traits>::set_all_masks(unsigned char* bits, unsigned char mask)
+{
+ //
+ // set mask in all of bits elements,
+ // if bits[0] has mask_init not set then we can
+ // optimise this to a call to memset:
+ //
+ if(bits)
+ {
+ if(bits[0] == 0)
+ (std::memset)(bits, mask, 1u << CHAR_BIT);
+ else
+ {
+ for(unsigned i = 0; i < (1u << CHAR_BIT); ++i)
+ bits[i] |= mask;
+ }
+ bits[0] |= mask_init;
+ }
+}
+
+template <class charT, class traits>
+bool basic_regex_creator<charT, traits>::is_bad_repeat(re_syntax_base* pt)
+{
+ switch(pt->type)
+ {
+ case syntax_element_rep:
+ case syntax_element_dot_rep:
+ case syntax_element_char_rep:
+ case syntax_element_short_set_rep:
+ case syntax_element_long_set_rep:
+ {
+ unsigned id = static_cast<re_repeat*>(pt)->id;
+ if(id > sizeof(m_bad_repeats) * CHAR_BIT)
+ return true; // run out of bits, assume we can't traverse this one.
+ static const boost::uintmax_t one = 1uL;
+ return m_bad_repeats & (one << id);
+ }
+ default:
+ return false;
+ }
+}
+
+template <class charT, class traits>
+void basic_regex_creator<charT, traits>::set_bad_repeat(re_syntax_base* pt)
+{
+ switch(pt->type)
+ {
+ case syntax_element_rep:
+ case syntax_element_dot_rep:
+ case syntax_element_char_rep:
+ case syntax_element_short_set_rep:
+ case syntax_element_long_set_rep:
+ {
+ unsigned id = static_cast<re_repeat*>(pt)->id;
+ static const boost::uintmax_t one = 1uL;
+ if(id <= sizeof(m_bad_repeats) * CHAR_BIT)
+ m_bad_repeats |= (one << id);
+ }
+ default:
+ break;
+ }
+}
+
+template <class charT, class traits>
+syntax_element_type basic_regex_creator<charT, traits>::get_repeat_type(re_syntax_base* state)
+{
+ typedef typename traits::char_class_type mask_type;
+ if(state->type == syntax_element_rep)
+ {
+ // check to see if we are repeating a single state:
+ if(state->next.p->next.p->next.p == static_cast<re_alt*>(state)->alt.p)
+ {
+ switch(state->next.p->type)
+ {
+ case re_detail::syntax_element_wild:
+ return re_detail::syntax_element_dot_rep;
+ case re_detail::syntax_element_literal:
+ return re_detail::syntax_element_char_rep;
+ case re_detail::syntax_element_set:
+ return re_detail::syntax_element_short_set_rep;
+ case re_detail::syntax_element_long_set:
+ if(static_cast<re_detail::re_set_long<mask_type>*>(state->next.p)->singleton)
+ return re_detail::syntax_element_long_set_rep;
+ break;
+ default:
+ break;
+ }
+ }
+ }
+ return state->type;
+}
+
+template <class charT, class traits>
+void basic_regex_creator<charT, traits>::probe_leading_repeat(re_syntax_base* state)
+{
+ // enumerate our states, and see if we have a leading repeat
+ // for which failed search restarts can be optimised;
+ do
+ {
+ switch(state->type)
+ {
+ case syntax_element_startmark:
+ if(static_cast<re_brace*>(state)->index >= 0)
+ {
+ state = state->next.p;
+ continue;
+ }
+ return;
+ case syntax_element_endmark:
+ case syntax_element_start_line:
+ case syntax_element_end_line:
+ case syntax_element_word_boundary:
+ case syntax_element_within_word:
+ case syntax_element_word_start:
+ case syntax_element_word_end:
+ case syntax_element_buffer_start:
+ case syntax_element_buffer_end:
+ case syntax_element_restart_continue:
+ state = state->next.p;
+ break;
+ case syntax_element_dot_rep:
+ case syntax_element_char_rep:
+ case syntax_element_short_set_rep:
+ case syntax_element_long_set_rep:
+ if(this->m_has_backrefs == 0)
+ static_cast<re_repeat*>(state)->leading = true;
+ // fall through:
+ default:
+ return;
+ }
+ }while(state);
+}
+
+
+} // namespace re_detail
+
+} // namespace boost
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+
+#endif

Added: sandbox/SOC/2007/regex/named-captures/boost/regex/v4/basic_regex_parser.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/boost/regex/v4/basic_regex_parser.hpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,2089 @@
+/*
+ *
+ * Copyright (c) 2004
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE basic_regex_parser.cpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Declares template class basic_regex_parser.
+ */
+
+#ifndef BOOST_REGEX_V4_BASIC_REGEX_PARSER_HPP
+#define BOOST_REGEX_V4_BASIC_REGEX_PARSER_HPP
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+
+namespace boost{
+namespace re_detail{
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4244)
+#endif
+
+template <class charT, class traits>
+class basic_regex_parser : public basic_regex_creator<charT, traits>
+{
+public:
+ basic_regex_parser(regex_data<charT, traits>* data);
+ void parse(const charT* p1, const charT* p2, unsigned flags);
+ void fail(regex_constants::error_type error_code, std::ptrdiff_t position);
+
+ bool parse_all();
+ bool parse_basic();
+ bool parse_extended();
+ bool parse_literal();
+ bool parse_open_paren();
+ bool parse_basic_escape();
+ bool parse_extended_escape();
+ bool parse_match_any();
+ bool parse_repeat(std::size_t low = 0, std::size_t high = (std::numeric_limits<std::size_t>::max)());
+ bool parse_repeat_range(bool isbasic);
+ bool parse_alt();
+ bool parse_set();
+ bool parse_backref();
+ void parse_set_literal(basic_char_set<charT, traits>& char_set);
+ bool parse_inner_set(basic_char_set<charT, traits>& char_set);
+ bool parse_QE();
+ bool parse_perl_extension();
+ bool add_emacs_code(bool negate);
+ bool unwind_alts(std::ptrdiff_t last_paren_start);
+ digraph<charT> get_next_set_literal(basic_char_set<charT, traits>& char_set);
+ charT unescape_character();
+ regex_constants::syntax_option_type parse_options();
+
+private:
+ typedef bool (basic_regex_parser::*parser_proc_type)();
+ typedef typename traits::string_type string_type;
+ typedef typename traits::char_class_type char_class_type;
+ parser_proc_type m_parser_proc; // the main parser to use
+ const charT* m_base; // the start of the string being parsed
+ const charT* m_end; // the end of the string being parsed
+ const charT* m_position; // our current parser position
+ unsigned m_mark_count; // how many sub-expressions we have
+ std::ptrdiff_t m_paren_start; // where the last seen ')' began (where repeats are inserted).
+ std::ptrdiff_t m_alt_insert_point; // where to insert the next alternative
+ bool m_has_case_change; // true if somewhere in the current block the case has changed
+#if defined(BOOST_MSVC) && defined(_M_IX86)
+ // This is an ugly warning suppression workaround (for warnings *inside* std::vector
+ // that can not otherwise be suppressed)...
+ BOOST_STATIC_ASSERT(sizeof(long) >= sizeof(void*));
+ std::vector<long> m_alt_jumps; // list of alternative in the current scope.
+#else
+ std::vector<std::ptrdiff_t> m_alt_jumps; // list of alternative in the current scope.
+#endif
+
+ basic_regex_parser& operator=(const basic_regex_parser&);
+ basic_regex_parser(const basic_regex_parser&);
+};
+
+template <class charT, class traits>
+basic_regex_parser<charT, traits>::basic_regex_parser(regex_data<charT, traits>* data)
+ : basic_regex_creator<charT, traits>(data), m_mark_count(0), m_paren_start(0), m_alt_insert_point(0), m_has_case_change(false)
+{
+}
+
+template <class charT, class traits>
+void basic_regex_parser<charT, traits>::parse(const charT* p1, const charT* p2, unsigned l_flags)
+{
+ // pass l_flags on to base class:
+ this->init(l_flags);
+ // set up pointers:
+ m_position = m_base = p1;
+ m_end = p2;
+ // empty strings are errors:
+ if(p1 == p2)
+ {
+ fail(regex_constants::error_empty, 0);
+ return;
+ }
+ // select which parser to use:
+ switch(l_flags & regbase::main_option_type)
+ {
+ case regbase::perl_syntax_group:
+ m_parser_proc = &basic_regex_parser<charT, traits>::parse_extended;
+ break;
+ case regbase::basic_syntax_group:
+ m_parser_proc = &basic_regex_parser<charT, traits>::parse_basic;
+ break;
+ case regbase::literal:
+ m_parser_proc = &basic_regex_parser<charT, traits>::parse_literal;
+ break;
+ }
+
+ // parse all our characters:
+ bool result = parse_all();
+ //
+ // Unwind our alternatives:
+ //
+ unwind_alts(-1);
+ // reset l_flags as a global scope (?imsx) may have altered them:
+ this->flags(l_flags);
+ // if we haven't gobbled up all the characters then we must
+ // have had an unexpected ')' :
+ if(!result)
+ {
+ fail(regex_constants::error_paren, ::boost::re_detail::distance(m_base, m_position));
+ return;
+ }
+ // if an error has been set then give up now:
+ if(this->m_pdata->m_status)
+ return;
+ // fill in our sub-expression count:
+ this->m_pdata->m_mark_count = 1 + m_mark_count;
+ this->finalize(p1, p2);
+}
+
+template <class charT, class traits>
+void basic_regex_parser<charT, traits>::fail(regex_constants::error_type error_code, std::ptrdiff_t position)
+{
+ if(0 == this->m_pdata->m_status) // update the error code if not already set
+ this->m_pdata->m_status = error_code;
+ m_position = m_end; // don't bother parsing anything else
+ // get the error message:
+ std::string message = this->m_pdata->m_ptraits->error_string(error_code);
+ // and raise the exception, this will do nothing if exceptions are disabled:
+#ifndef BOOST_NO_EXCEPTIONS
+ if(0 == (this->flags() & regex_constants::no_except))
+ {
+ boost::regex_error e(message, error_code, position);
+ e.raise();
+ }
+#else
+ (void)position; // suppress warnings.
+#endif
+}
+
+template <class charT, class traits>
+bool basic_regex_parser<charT, traits>::parse_all()
+{
+ bool result = true;
+ while(result && (m_position != m_end))
+ {
+ result = (this->*m_parser_proc)();
+ }
+ return result;
+}
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4702)
+#endif
+template <class charT, class traits>
+bool basic_regex_parser<charT, traits>::parse_basic()
+{
+ switch(this->m_traits.syntax_type(*m_position))
+ {
+ case regex_constants::syntax_escape:
+ return parse_basic_escape();
+ case regex_constants::syntax_dot:
+ return parse_match_any();
+ case regex_constants::syntax_caret:
+ ++m_position;
+ this->append_state(syntax_element_start_line);
+ break;
+ case regex_constants::syntax_dollar:
+ ++m_position;
+ this->append_state(syntax_element_end_line);
+ break;
+ case regex_constants::syntax_star:
+ if(!(this->m_last_state) || (this->m_last_state->type == syntax_element_start_line))
+ return parse_literal();
+ else
+ {
+ ++m_position;
+ return parse_repeat();
+ }
+ case regex_constants::syntax_plus:
+ if(!(this->m_last_state) || (this->m_last_state->type == syntax_element_start_line) || !(this->flags() & regbase::emacs_ex))
+ return parse_literal();
+ else
+ {
+ ++m_position;
+ return parse_repeat(1);
+ }
+ case regex_constants::syntax_question:
+ if(!(this->m_last_state) || (this->m_last_state->type == syntax_element_start_line) || !(this->flags() & regbase::emacs_ex))
+ return parse_literal();
+ else
+ {
+ ++m_position;
+ return parse_repeat(0, 1);
+ }
+ case regex_constants::syntax_open_set:
+ return parse_set();
+ case regex_constants::syntax_newline:
+ if(this->flags() & regbase::newline_alt)
+ return parse_alt();
+ else
+ return parse_literal();
+ default:
+ return parse_literal();
+ }
+ return true;
+}
+
+template <class charT, class traits>
+bool basic_regex_parser<charT, traits>::parse_extended()
+{
+ bool result = true;
+ switch(this->m_traits.syntax_type(*m_position))
+ {
+ case regex_constants::syntax_open_mark:
+ return parse_open_paren();
+ case regex_constants::syntax_close_mark:
+ return false;
+ case regex_constants::syntax_escape:
+ return parse_extended_escape();
+ case regex_constants::syntax_dot:
+ return parse_match_any();
+ case regex_constants::syntax_caret:
+ ++m_position;
+ this->append_state(
+ (this->flags() & regex_constants::no_mod_m ? syntax_element_buffer_start : syntax_element_start_line));
+ break;
+ case regex_constants::syntax_dollar:
+ ++m_position;
+ this->append_state(
+ (this->flags() & regex_constants::no_mod_m ? syntax_element_buffer_end : syntax_element_end_line));
+ break;
+ case regex_constants::syntax_star:
+ if(m_position == this->m_base)
+ {
+ fail(regex_constants::error_badrepeat, 0);
+ return false;
+ }
+ ++m_position;
+ return parse_repeat();
+ case regex_constants::syntax_question:
+ if(m_position == this->m_base)
+ {
+ fail(regex_constants::error_badrepeat, 0);
+ return false;
+ }
+ ++m_position;
+ return parse_repeat(0,1);
+ case regex_constants::syntax_plus:
+ if(m_position == this->m_base)
+ {
+ fail(regex_constants::error_badrepeat, 0);
+ return false;
+ }
+ ++m_position;
+ return parse_repeat(1);
+ case regex_constants::syntax_open_brace:
+ ++m_position;
+ return parse_repeat_range(false);
+ case regex_constants::syntax_close_brace:
+ fail(regex_constants::error_brace, this->m_position - this->m_end);
+ return false;
+ case regex_constants::syntax_or:
+ return parse_alt();
+ case regex_constants::syntax_open_set:
+ return parse_set();
+ case regex_constants::syntax_newline:
+ if(this->flags() & regbase::newline_alt)
+ return parse_alt();
+ else
+ return parse_literal();
+ case regex_constants::syntax_hash:
+ //
+ // If we have a mod_x flag set, then skip until
+ // we get to a newline character:
+ //
+ if((this->flags()
+ & (regbase::no_perl_ex|regbase::mod_x))
+ == regbase::mod_x)
+ {
+ while((m_position != m_end) && !is_separator(*m_position++)){}
+ return true;
+ }
+ // Otherwise fall through:
+ default:
+ result = parse_literal();
+ break;
+ }
+ return result;
+}
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+template <class charT, class traits>
+bool basic_regex_parser<charT, traits>::parse_literal()
+{
+ // append this as a literal provided it's not a space character
+ // or the perl option regbase::mod_x is not set:
+ if(
+ ((this->flags()
+ & (regbase::main_option_type|regbase::mod_x|regbase::no_perl_ex))
+ != regbase::mod_x)
+ || !this->m_traits.isctype(*m_position, this->m_mask_space))
+ this->append_literal(*m_position);
+ ++m_position;
+ return true;
+}
+
+template <class charT, class traits>
+bool basic_regex_parser<charT, traits>::parse_open_paren()
+{
+ //
+ // skip the '(' and error check:
+ //
+ if(++m_position == m_end)
+ {
+ fail(regex_constants::error_paren, m_position - m_base);
+ return false;
+ }
+ //
+ // begin by checking for a perl-style (?...) extension:
+ //
+ if(
+ ((this->flags() & (regbase::main_option_type | regbase::no_perl_ex)) == 0)
+ || ((this->flags() & (regbase::main_option_type | regbase::emacs_ex)) == (regbase::basic_syntax_group|regbase::emacs_ex))
+ )
+ {
+ if(this->m_traits.syntax_type(*m_position) == regex_constants::syntax_question)
+ return parse_perl_extension();
+ }
+ //
+ // update our mark count, and append the required state:
+ //
+ unsigned markid = 0;
+ if(0 == (this->flags() & regbase::nosubs))
+ markid = ++m_mark_count;
+ re_brace* pb = static_cast<re_brace*>(this->append_state(syntax_element_startmark, sizeof(re_brace)));
+ pb->index = markid;
+ std::ptrdiff_t last_paren_start = this->getoffset(pb);
+ // back up insertion point for alternations, and set new point:
+ std::ptrdiff_t last_alt_point = m_alt_insert_point;
+ this->m_pdata->m_data.align();
+ m_alt_insert_point = this->m_pdata->m_data.size();
+ //
+ // back up the current flags in case we have a nested (?imsx) group:
+ //
+ regex_constants::syntax_option_type opts = this->flags();
+ bool old_case_change = m_has_case_change;
+ m_has_case_change = false; // no changes to this scope as yet...
+ //
+ // now recursively add more states, this will terminate when we get to a
+ // matching ')' :
+ //
+ parse_all();
+ //
+ // Unwind pushed alternatives:
+ //
+ if(0 == unwind_alts(last_paren_start))
+ return false;
+ //
+ // restore flags:
+ //
+ if(m_has_case_change)
+ {
+ // the case has changed in one or more of the alternatives
+ // within the scoped (...) block: we have to add a state
+ // to reset the case sensitivity:
+ static_cast<re_case*>(
+ this->append_state(syntax_element_toggle_case, sizeof(re_case))
+ )->icase = opts & regbase::icase;
+ }
+ this->flags(opts);
+ m_has_case_change = old_case_change;
+ //
+ // we either have a ')' or we have run out of characters prematurely:
+ //
+ if(m_position == m_end)
+ {
+ this->fail(regex_constants::error_paren, ::boost::re_detail::distance(m_base, m_end));
+ return false;
+ }
+ BOOST_ASSERT(this->m_traits.syntax_type(*m_position) == regex_constants::syntax_close_mark);
+ ++m_position;
+ //
+ // append closing parenthesis state:
+ //
+ pb = static_cast<re_brace*>(this->append_state(syntax_element_endmark, sizeof(re_brace)));
+ pb->index = markid;
+ this->m_paren_start = last_paren_start;
+ //
+ // restore the alternate insertion point:
+ //
+ this->m_alt_insert_point = last_alt_point;
+ //
+ // allow backrefs to this mark:
+ //
+ if((markid > 0) && (markid < sizeof(unsigned) * CHAR_BIT))
+ this->m_backrefs |= 1u << (markid - 1);
+
+ return true;
+}
+
+template <class charT, class traits>
+bool basic_regex_parser<charT, traits>::parse_basic_escape()
+{
+ ++m_position;
+ bool result = true;
+ switch(this->m_traits.escape_syntax_type(*m_position))
+ {
+ case regex_constants::syntax_open_mark:
+ return parse_open_paren();
+ case regex_constants::syntax_close_mark:
+ return false;
+ case regex_constants::syntax_plus:
+ if(this->flags() & regex_constants::bk_plus_qm)
+ {
+ ++m_position;
+ return parse_repeat(1);
+ }
+ else
+ return parse_literal();
+ case regex_constants::syntax_question:
+ if(this->flags() & regex_constants::bk_plus_qm)
+ {
+ ++m_position;
+ return parse_repeat(0, 1);
+ }
+ else
+ return parse_literal();
+ case regex_constants::syntax_open_brace:
+ if(this->flags() & regbase::no_intervals)
+ return parse_literal();
+ ++m_position;
+ return parse_repeat_range(true);
+ case regex_constants::syntax_close_brace:
+ if(this->flags() & regbase::no_intervals)
+ return parse_literal();
+ fail(regex_constants::error_brace, this->m_position - this->m_base);
+ return false;
+ case regex_constants::syntax_or:
+ if(this->flags() & regbase::bk_vbar)
+ return parse_alt();
+ else
+ result = parse_literal();
+ break;
+ case regex_constants::syntax_digit:
+ return parse_backref();
+ case regex_constants::escape_type_start_buffer:
+ if(this->flags() & regbase::emacs_ex)
+ {
+ ++m_position;
+ this->append_state(syntax_element_buffer_start);
+ }
+ else
+ result = parse_literal();
+ break;
+ case regex_constants::escape_type_end_buffer:
+ if(this->flags() & regbase::emacs_ex)
+ {
+ ++m_position;
+ this->append_state(syntax_element_buffer_end);
+ }
+ else
+ result = parse_literal();
+ break;
+ case regex_constants::escape_type_word_assert:
+ if(this->flags() & regbase::emacs_ex)
+ {
+ ++m_position;
+ this->append_state(syntax_element_word_boundary);
+ }
+ else
+ result = parse_literal();
+ break;
+ case regex_constants::escape_type_not_word_assert:
+ if(this->flags() & regbase::emacs_ex)
+ {
+ ++m_position;
+ this->append_state(syntax_element_within_word);
+ }
+ else
+ result = parse_literal();
+ break;
+ case regex_constants::escape_type_left_word:
+ if(this->flags() & regbase::emacs_ex)
+ {
+ ++m_position;
+ this->append_state(syntax_element_word_start);
+ }
+ else
+ result = parse_literal();
+ break;
+ case regex_constants::escape_type_right_word:
+ if(this->flags() & regbase::emacs_ex)
+ {
+ ++m_position;
+ this->append_state(syntax_element_word_end);
+ }
+ else
+ result = parse_literal();
+ break;
+ default:
+ if(this->flags() & regbase::emacs_ex)
+ {
+ bool negate = true;
+ switch(*m_position)
+ {
+ case 'w':
+ negate = false;
+ // fall through:
+ case 'W':
+ {
+ basic_char_set<charT, traits> char_set;
+ if(negate)
+ char_set.negate();
+ char_set.add_class(this->m_word_mask);
+ if(0 == this->append_set(char_set))
+ {
+ fail(regex_constants::error_ctype, m_position - m_base);
+ return false;
+ }
+ ++m_position;
+ return true;
+ }
+ case 's':
+ negate = false;
+ // fall through:
+ case 'S':
+ return add_emacs_code(negate);
+ case 'c':
+ case 'C':
+ // not supported yet:
+ fail(regex_constants::error_escape, m_position - m_base);
+ return false;
+ default:
+ break;
+ }
+ }
+ result = parse_literal();
+ break;
+ }
+ return result;
+}
+
+template <class charT, class traits>
+bool basic_regex_parser<charT, traits>::parse_extended_escape()
+{
+ ++m_position;
+ bool negate = false; // in case this is a character class escape: \w \d etc
+ switch(this->m_traits.escape_syntax_type(*m_position))
+ {
+ case regex_constants::escape_type_not_class:
+ negate = true;
+ // fall through:
+ case regex_constants::escape_type_class:
+ {
+ typedef typename traits::char_class_type mask_type;
+ mask_type m = this->m_traits.lookup_classname(m_position, m_position+1);
+ if(m != 0)
+ {
+ basic_char_set<charT, traits> char_set;
+ if(negate)
+ char_set.negate();
+ char_set.add_class(m);
+ if(0 == this->append_set(char_set))
+ {
+ fail(regex_constants::error_ctype, m_position - m_base);
+ return false;
+ }
+ ++m_position;
+ return true;
+ }
+ //
+ // not a class, just a regular unknown escape:
+ //
+ this->append_literal(unescape_character());
+ break;
+ }
+ case regex_constants::syntax_digit:
+ return parse_backref();
+ case regex_constants::escape_type_left_word:
+ ++m_position;
+ this->append_state(syntax_element_word_start);
+ break;
+ case regex_constants::escape_type_right_word:
+ ++m_position;
+ this->append_state(syntax_element_word_end);
+ break;
+ case regex_constants::escape_type_start_buffer:
+ ++m_position;
+ this->append_state(syntax_element_buffer_start);
+ break;
+ case regex_constants::escape_type_end_buffer:
+ ++m_position;
+ this->append_state(syntax_element_buffer_end);
+ break;
+ case regex_constants::escape_type_word_assert:
+ ++m_position;
+ this->append_state(syntax_element_word_boundary);
+ break;
+ case regex_constants::escape_type_not_word_assert:
+ ++m_position;
+ this->append_state(syntax_element_within_word);
+ break;
+ case regex_constants::escape_type_Z:
+ ++m_position;
+ this->append_state(syntax_element_soft_buffer_end);
+ break;
+ case regex_constants::escape_type_Q:
+ return parse_QE();
+ case regex_constants::escape_type_C:
+ return parse_match_any();
+ case regex_constants::escape_type_X:
+ ++m_position;
+ this->append_state(syntax_element_combining);
+ break;
+ case regex_constants::escape_type_G:
+ ++m_position;
+ this->append_state(syntax_element_restart_continue);
+ break;
+ case regex_constants::escape_type_not_property:
+ negate = true;
+ // fall through:
+ case regex_constants::escape_type_property:
+ {
+ ++m_position;
+ char_class_type m;
+ if(m_position == m_end)
+ {
+ fail(regex_constants::error_escape, m_position - m_base);
+ return false;
+ }
+ // maybe have \p{ddd}
+ if(this->m_traits.syntax_type(*m_position) == regex_constants::syntax_open_brace)
+ {
+ const charT* base = m_position;
+ // skip forward until we find enclosing brace:
+ while((m_position != m_end) && (this->m_traits.syntax_type(*m_position) != regex_constants::syntax_close_brace))
+ ++m_position;
+ if(m_position == m_end)
+ {
+ fail(regex_constants::error_escape, m_position - m_base);
+ return false;
+ }
+ m = this->m_traits.lookup_classname(++base, m_position++);
+ }
+ else
+ {
+ m = this->m_traits.lookup_classname(m_position, m_position+1);
+ ++m_position;
+ }
+ if(m != 0)
+ {
+ basic_char_set<charT, traits> char_set;
+ if(negate)
+ char_set.negate();
+ char_set.add_class(m);
+ if(0 == this->append_set(char_set))
+ {
+ fail(regex_constants::error_ctype, m_position - m_base);
+ return false;
+ }
+ return true;
+ }
+ fail(regex_constants::error_ctype, m_position - m_base);
+ }
+ default:
+ this->append_literal(unescape_character());
+ break;
+ }
+ return true;
+}
+
+template <class charT, class traits>
+bool basic_regex_parser<charT, traits>::parse_match_any()
+{
+ //
+ // we have a '.' that can match any character:
+ //
+ ++m_position;
+ static_cast<re_dot*>(
+ this->append_state(syntax_element_wild, sizeof(re_dot))
+ )->mask = static_cast<unsigned char>(this->flags() & regbase::no_mod_s
+ ? re_detail::force_not_newline
+ : this->flags() & regbase::mod_s ?
+ re_detail::force_newline : re_detail::dont_care);
+ return true;
+}
+
+template <class charT, class traits>
+bool basic_regex_parser<charT, traits>::parse_repeat(std::size_t low, std::size_t high)
+{
+ bool greedy = true;
+ std::size_t insert_point;
+ //
+ // when we get to here we may have a non-greedy ? mark still to come:
+ //
+ if((m_position != m_end)
+ && (
+ (0 == (this->flags() & (regbase::main_option_type | regbase::no_perl_ex)))
+ || ((regbase::basic_syntax_group|regbase::emacs_ex) == (this->flags() & (regbase::main_option_type | regbase::emacs_ex)))
+ )
+ )
+ {
+ // OK we have a perl regex, check for a '?':
+ if(this->m_traits.syntax_type(*m_position) == regex_constants::syntax_question)
+ {
+ greedy = false;
+ ++m_position;
+ }
+ }
+ if(0 == this->m_last_state)
+ {
+ fail(regex_constants::error_badrepeat, ::boost::re_detail::distance(m_base, m_position));
+ return false;
+ }
+ if(this->m_last_state->type == syntax_element_endmark)
+ {
+ // insert a repeat before the '(' matching the last ')':
+ insert_point = this->m_paren_start;
+ }
+ else if((this->m_last_state->type == syntax_element_literal) && (static_cast<re_literal*>(this->m_last_state)->length > 1))
+ {
+ // the last state was a literal with more than one character, split it in two:
+ re_literal* lit = static_cast<re_literal*>(this->m_last_state);
+ charT c = (static_cast<charT*>(static_cast<void*>(lit+1)))[lit->length - 1];
+ --(lit->length);
+ // now append new state:
+ lit = static_cast<re_literal*>(this->append_state(syntax_element_literal, sizeof(re_literal) + sizeof(charT)));
+ lit->length = 1;
+ (static_cast<charT*>(static_cast<void*>(lit+1)))[0] = c;
+ insert_point = this->getoffset(this->m_last_state);
+ }
+ else
+ {
+ // repeat the last state whatever it was, need to add some error checking here:
+ switch(this->m_last_state->type)
+ {
+ case syntax_element_start_line:
+ case syntax_element_end_line:
+ case syntax_element_word_boundary:
+ case syntax_element_within_word:
+ case syntax_element_word_start:
+ case syntax_element_word_end:
+ case syntax_element_buffer_start:
+ case syntax_element_buffer_end:
+ case syntax_element_alt:
+ case syntax_element_soft_buffer_end:
+ case syntax_element_restart_continue:
+ case syntax_element_jump:
+ case syntax_element_startmark:
+ // can't legally repeat any of the above:
+ fail(regex_constants::error_badrepeat, m_position - m_base);
+ return false;
+ default:
+ // do nothing...
+ break;
+ }
+ insert_point = this->getoffset(this->m_last_state);
+ }
+ //
+ // OK we now know what to repeat, so insert the repeat around it:
+ //
+ re_repeat* rep = static_cast<re_repeat*>(this->insert_state(insert_point, syntax_element_rep, re_repeater_size));
+ rep->min = low;
+ rep->max = high;
+ rep->greedy = greedy;
+ rep->leading = false;
+ // store our repeater position for later:
+ std::ptrdiff_t rep_off = this->getoffset(rep);
+ // and append a back jump to the repeat:
+ re_jump* jmp = static_cast<re_jump*>(this->append_state(syntax_element_jump, sizeof(re_jump)));
+ jmp->alt.i = rep_off - this->getoffset(jmp);
+ this->m_pdata->m_data.align();
+ // now fill in the alt jump for the repeat:
+ rep = static_cast<re_repeat*>(this->getaddress(rep_off));
+ rep->alt.i = this->m_pdata->m_data.size() - rep_off;
+ return true;
+}
+
+template <class charT, class traits>
+bool basic_regex_parser<charT, traits>::parse_repeat_range(bool isbasic)
+{
+ //
+ // parse a repeat-range:
+ //
+ std::size_t min, max;
+ int v;
+ // skip whitespace:
+ while((m_position != m_end) && this->m_traits.isctype(*m_position, this->m_mask_space))
+ ++m_position;
+ // fail if at end:
+ if(this->m_position == this->m_end)
+ {
+ fail(regex_constants::error_brace, this->m_position - this->m_base);
+ return false;
+ }
+ // get min:
+ v = this->m_traits.toi(m_position, m_end, 10);
+ // skip whitespace:
+ while((m_position != m_end) && this->m_traits.isctype(*m_position, this->m_mask_space))
+ ++m_position;
+ if(v < 0)
+ {
+ fail(regex_constants::error_badbrace, this->m_position - this->m_base);
+ return false;
+ }
+ else if(this->m_position == this->m_end)
+ {
+ fail(regex_constants::error_brace, this->m_position - this->m_base);
+ return false;
+ }
+ min = v;
+ // see if we have a comma:
+ if(this->m_traits.syntax_type(*m_position) == regex_constants::syntax_comma)
+ {
+ // move on and error check:
+ ++m_position;
+ // skip whitespace:
+ while((m_position != m_end) && this->m_traits.isctype(*m_position, this->m_mask_space))
+ ++m_position;
+ if(this->m_position == this->m_end)
+ {
+ fail(regex_constants::error_brace, this->m_position - this->m_base);
+ return false;
+ }
+ // get the value if any:
+ v = this->m_traits.toi(m_position, m_end, 10);
+ max = (v >= 0) ? v : (std::numeric_limits<std::size_t>::max)();
+ }
+ else
+ {
+ // no comma, max = min:
+ max = min;
+ }
+ // skip whitespace:
+ while((m_position != m_end) && this->m_traits.isctype(*m_position, this->m_mask_space))
+ ++m_position;
+ // OK now check trailing }:
+ if(this->m_position == this->m_end)
+ {
+ fail(regex_constants::error_brace, this->m_position - this->m_base);
+ return false;
+ }
+ if(isbasic)
+ {
+ if(this->m_traits.syntax_type(*m_position) == regex_constants::syntax_escape)
+ {
+ ++m_position;
+ if(this->m_position == this->m_end)
+ {
+ fail(regex_constants::error_brace, this->m_position - this->m_base);
+ return false;
+ }
+ }
+ else
+ {
+ fail(regex_constants::error_badbrace, this->m_position - this->m_base);
+ return false;
+ }
+ }
+ if(this->m_traits.syntax_type(*m_position) == regex_constants::syntax_close_brace)
+ ++m_position;
+ else
+ {
+ fail(regex_constants::error_badbrace, this->m_position - this->m_base);
+ return false;
+ }
+ //
+ // finally go and add the repeat, unless error:
+ //
+ if(min > max)
+ {
+ fail(regex_constants::error_badbrace, this->m_position - this->m_base);
+ return false;
+ }
+ return parse_repeat(min, max);
+}
+
+template <class charT, class traits>
+bool basic_regex_parser<charT, traits>::parse_alt()
+{
+ //
+ // error check: if there have been no previous states,
+ // or if the last state was a '(' then error:
+ //
+ if((this->m_last_state == 0) || (this->m_last_state->type == syntax_element_startmark))
+ {
+ fail(regex_constants::error_empty, this->m_position - this->m_base);
+ return false;
+ }
+ ++m_position;
+ //
+ // we need to append a trailing jump:
+ //
+ re_syntax_base* pj = this->append_state(re_detail::syntax_element_jump, sizeof(re_jump));
+ std::ptrdiff_t jump_offset = this->getoffset(pj);
+ //
+ // now insert the alternative:
+ //
+ re_alt* palt = static_cast<re_alt*>(this->insert_state(this->m_alt_insert_point, syntax_element_alt, re_alt_size));
+ jump_offset += re_alt_size;
+ this->m_pdata->m_data.align();
+ palt->alt.i = this->m_pdata->m_data.size() - this->getoffset(palt);
+ //
+ // update m_alt_insert_point so that the next alternate gets
+ // inserted at the start of the second of the two we've just created:
+ //
+ this->m_alt_insert_point = this->m_pdata->m_data.size();
+ //
+ // the start of this alternative must have a case changes state
+ // if the current block has messed around with case changes:
+ //
+ if(m_has_case_change)
+ {
+ static_cast<re_case*>(
+ this->append_state(syntax_element_toggle_case, sizeof(re_case))
+ )->icase = this->m_icase;
+ }
+ //
+ // push the alternative onto our stack, a recursive
+ // implementation here is easier to understand (and faster
+ // as it happens), but causes all kinds of stack overflow problems
+ // on programs with small stacks (COM+).
+ //
+ m_alt_jumps.push_back(jump_offset);
+ return true;
+}
+
+template <class charT, class traits>
+bool basic_regex_parser<charT, traits>::parse_set()
+{
+ ++m_position;
+ if(m_position == m_end)
+ {
+ fail(regex_constants::error_brack, m_position - m_base);
+ return false;
+ }
+ basic_char_set<charT, traits> char_set;
+
+ const charT* base = m_position; // where the '[' was
+ const charT* item_base = m_position; // where the '[' or '^' was
+
+ while(m_position != m_end)
+ {
+ switch(this->m_traits.syntax_type(*m_position))
+ {
+ case regex_constants::syntax_caret:
+ if(m_position == base)
+ {
+ char_set.negate();
+ ++m_position;
+ item_base = m_position;
+ }
+ else
+ parse_set_literal(char_set);
+ break;
+ case regex_constants::syntax_close_set:
+ if(m_position == item_base)
+ {
+ parse_set_literal(char_set);
+ break;
+ }
+ else
+ {
+ ++m_position;
+ if(0 == this->append_set(char_set))
+ {
+ fail(regex_constants::error_range, m_position - m_base);
+ return false;
+ }
+ }
+ return true;
+ case regex_constants::syntax_open_set:
+ if(parse_inner_set(char_set))
+ break;
+ return true;
+ case regex_constants::syntax_escape:
+ {
+ //
+ // look ahead and see if this is a character class shortcut
+ // \d \w \s etc...
+ //
+ ++m_position;
+ if(this->m_traits.escape_syntax_type(*m_position)
+ == regex_constants::escape_type_class)
+ {
+ char_class_type m = this->m_traits.lookup_classname(m_position, m_position+1);
+ if(m != 0)
+ {
+ char_set.add_class(m);
+ ++m_position;
+ break;
+ }
+ }
+ else if(this->m_traits.escape_syntax_type(*m_position)
+ == regex_constants::escape_type_not_class)
+ {
+ // negated character class:
+ char_class_type m = this->m_traits.lookup_classname(m_position, m_position+1);
+ if(m != 0)
+ {
+ char_set.add_negated_class(m);
+ ++m_position;
+ break;
+ }
+ }
+ // not a character class, just a regular escape:
+ --m_position;
+ parse_set_literal(char_set);
+ break;
+ }
+ default:
+ parse_set_literal(char_set);
+ break;
+ }
+ }
+ return m_position != m_end;
+}
+
+template <class charT, class traits>
+bool basic_regex_parser<charT, traits>::parse_inner_set(basic_char_set<charT, traits>& char_set)
+{
+ //
+ // we have either a character class [:name:]
+ // a collating element [.name.]
+ // or an equivalence class [=name=]
+ //
+ if(m_end == ++m_position)
+ {
+ fail(regex_constants::error_brack, m_position - m_base);
+ return false;
+ }
+ switch(this->m_traits.syntax_type(*m_position))
+ {
+ case regex_constants::syntax_dot:
+ //
+ // a collating element is treated as a literal:
+ //
+ --m_position;
+ parse_set_literal(char_set);
+ return true;
+ case regex_constants::syntax_colon:
+ {
+ // check that character classes are actually enabled:
+ if((this->flags() & (regbase::main_option_type | regbase::no_char_classes))
+ == (regbase::basic_syntax_group | regbase::no_char_classes))
+ {
+ --m_position;
+ parse_set_literal(char_set);
+ return true;
+ }
+ // skip the ':'
+ if(m_end == ++m_position)
+ {
+ fail(regex_constants::error_brack, m_position - m_base);
+ return false;
+ }
+ const charT* name_first = m_position;
+ // skip at least one character, then find the matching ':]'
+ if(m_end == ++m_position)
+ {
+ fail(regex_constants::error_brack, m_position - m_base);
+ return false;
+ }
+ while((m_position != m_end)
+ && (this->m_traits.syntax_type(*m_position) != regex_constants::syntax_colon))
+ ++m_position;
+ const charT* name_last = m_position;
+ if(m_end == m_position)
+ {
+ fail(regex_constants::error_brack, m_position - m_base);
+ return false;
+ }
+ if((m_end == ++m_position)
+ || (this->m_traits.syntax_type(*m_position) != regex_constants::syntax_close_set))
+ {
+ fail(regex_constants::error_brack, m_position - m_base);
+ return false;
+ }
+ //
+ // check for negated class:
+ //
+ bool negated = false;
+ if(this->m_traits.syntax_type(*name_first) == regex_constants::syntax_caret)
+ {
+ ++name_first;
+ negated = true;
+ }
+ typedef typename traits::char_class_type mask_type;
+ mask_type m = this->m_traits.lookup_classname(name_first, name_last);
+ if(m == 0)
+ {
+ if(char_set.empty() && (name_last - name_first == 1))
+ {
+ // maybe a special case:
+ ++m_position;
+ if( (m_position != m_end)
+ && (this->m_traits.syntax_type(*m_position)
+ == regex_constants::syntax_close_set))
+ {
+ if(this->m_traits.escape_syntax_type(*name_first)
+ == regex_constants::escape_type_left_word)
+ {
+ ++m_position;
+ this->append_state(syntax_element_word_start);
+ return false;
+ }
+ if(this->m_traits.escape_syntax_type(*name_first)
+ == regex_constants::escape_type_right_word)
+ {
+ ++m_position;
+ this->append_state(syntax_element_word_end);
+ return false;
+ }
+ }
+ }
+ fail(regex_constants::error_ctype, name_first - m_base);
+ return false;
+ }
+ if(negated == false)
+ char_set.add_class(m);
+ else
+ char_set.add_negated_class(m);
+ ++m_position;
+ break;
+ }
+ case regex_constants::syntax_equal:
+ {
+ // skip the '='
+ if(m_end == ++m_position)
+ {
+ fail(regex_constants::error_brack, m_position - m_base);
+ return false;
+ }
+ const charT* name_first = m_position;
+ // skip at least one character, then find the matching '=]'
+ if(m_end == ++m_position)
+ {
+ fail(regex_constants::error_brack, m_position - m_base);
+ return false;
+ }
+ while((m_position != m_end)
+ && (this->m_traits.syntax_type(*m_position) != regex_constants::syntax_equal))
+ ++m_position;
+ const charT* name_last = m_position;
+ if(m_end == m_position)
+ {
+ fail(regex_constants::error_brack, m_position - m_base);
+ return false;
+ }
+ if((m_end == ++m_position)
+ || (this->m_traits.syntax_type(*m_position) != regex_constants::syntax_close_set))
+ {
+ fail(regex_constants::error_brack, m_position - m_base);
+ return false;
+ }
+ string_type m = this->m_traits.lookup_collatename(name_first, name_last);
+ if((0 == m.size()) || (m.size() > 2))
+ {
+ fail(regex_constants::error_collate, name_first - m_base);
+ return false;
+ }
+ digraph<charT> d;
+ d.first = m[0];
+ if(m.size() > 1)
+ d.second = m[1];
+ else
+ d.second = 0;
+ char_set.add_equivalent(d);
+ ++m_position;
+ break;
+ }
+ default:
+ --m_position;
+ parse_set_literal(char_set);
+ break;
+ }
+ return true;
+}
+
+template <class charT, class traits>
+void basic_regex_parser<charT, traits>::parse_set_literal(basic_char_set<charT, traits>& char_set)
+{
+ digraph<charT> start_range(get_next_set_literal(char_set));
+ if(m_end == m_position)
+ {
+ fail(regex_constants::error_brack, m_position - m_base);
+ return;
+ }
+ if(this->m_traits.syntax_type(*m_position) == regex_constants::syntax_dash)
+ {
+ // we have a range:
+ if(m_end == ++m_position)
+ {
+ fail(regex_constants::error_brack, m_position - m_base);
+ return;
+ }
+ if(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_close_set)
+ {
+ digraph<charT> end_range = get_next_set_literal(char_set);
+ char_set.add_range(start_range, end_range);
+ if(this->m_traits.syntax_type(*m_position) == regex_constants::syntax_dash)
+ {
+ if(m_end == ++m_position)
+ {
+ fail(regex_constants::error_brack, m_position - m_base);
+ return;
+ }
+ if(this->m_traits.syntax_type(*m_position) == regex_constants::syntax_close_set)
+ {
+ // trailing - :
+ --m_position;
+ return;
+ }
+ fail(regex_constants::error_range, m_position - m_base);
+ return;
+ }
+ return;
+ }
+ --m_position;
+ }
+ char_set.add_single(start_range);
+}
+
+template <class charT, class traits>
+digraph<charT> basic_regex_parser<charT, traits>::get_next_set_literal(basic_char_set<charT, traits>& char_set)
+{
+ digraph<charT> result;
+ switch(this->m_traits.syntax_type(*m_position))
+ {
+ case regex_constants::syntax_dash:
+ if(!char_set.empty())
+ {
+ // see if we are at the end of the set:
+ if((++m_position == m_end) || (this->m_traits.syntax_type(*m_position) != regex_constants::syntax_close_set))
+ {
+ fail(regex_constants::error_range, m_position - m_base);
+ return result;
+ }
+ --m_position;
+ }
+ result.first = *m_position++;
+ return result;
+ case regex_constants::syntax_escape:
+ // check to see if escapes are supported first:
+ if(this->flags() & regex_constants::no_escape_in_lists)
+ {
+ result = *m_position++;
+ break;
+ }
+ ++m_position;
+ result = unescape_character();
+ break;
+ case regex_constants::syntax_open_set:
+ {
+ if(m_end == ++m_position)
+ {
+ fail(regex_constants::error_collate, m_position - m_base);
+ return result;
+ }
+ if(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_dot)
+ {
+ --m_position;
+ result.first = *m_position;
+ ++m_position;
+ return result;
+ }
+ if(m_end == ++m_position)
+ {
+ fail(regex_constants::error_collate, m_position - m_base);
+ return result;
+ }
+ const charT* name_first = m_position;
+ // skip at least one character, then find the matching ':]'
+ if(m_end == ++m_position)
+ {
+ fail(regex_constants::error_collate, name_first - m_base);
+ return result;
+ }
+ while((m_position != m_end)
+ && (this->m_traits.syntax_type(*m_position) != regex_constants::syntax_dot))
+ ++m_position;
+ const charT* name_last = m_position;
+ if(m_end == m_position)
+ {
+ fail(regex_constants::error_collate, name_first - m_base);
+ return result;
+ }
+ if((m_end == ++m_position)
+ || (this->m_traits.syntax_type(*m_position) != regex_constants::syntax_close_set))
+ {
+ fail(regex_constants::error_collate, name_first - m_base);
+ return result;
+ }
+ ++m_position;
+ string_type s = this->m_traits.lookup_collatename(name_first, name_last);
+ if(s.empty() || (s.size() > 2))
+ {
+ fail(regex_constants::error_collate, name_first - m_base);
+ return result;
+ }
+ result.first = s[0];
+ if(s.size() > 1)
+ result.second = s[1];
+ else
+ result.second = 0;
+ return result;
+ }
+ default:
+ result = *m_position++;
+ }
+ return result;
+}
+
+//
+// does a value fit in the specified charT type?
+//
+template <class charT>
+bool valid_value(charT, int v, const mpl::true_&)
+{
+ return (v >> (sizeof(charT) * CHAR_BIT)) == 0;
+}
+template <class charT>
+bool valid_value(charT, int, const mpl::false_&)
+{
+ return true; // v will alsways fit in a charT
+}
+template <class charT>
+bool valid_value(charT c, int v)
+{
+ return valid_value(c, v, mpl::bool_<(sizeof(charT) < sizeof(int))>());
+}
+
+template <class charT, class traits>
+charT basic_regex_parser<charT, traits>::unescape_character()
+{
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4127)
+#endif
+ charT result(0);
+ if(m_position == m_end)
+ {
+ fail(regex_constants::error_escape, m_position - m_base);
+ return false;
+ }
+ switch(this->m_traits.escape_syntax_type(*m_position))
+ {
+ case regex_constants::escape_type_control_a:
+ result = charT('\a');
+ break;
+ case regex_constants::escape_type_e:
+ result = charT(27);
+ break;
+ case regex_constants::escape_type_control_f:
+ result = charT('\f');
+ break;
+ case regex_constants::escape_type_control_n:
+ result = charT('\n');
+ break;
+ case regex_constants::escape_type_control_r:
+ result = charT('\r');
+ break;
+ case regex_constants::escape_type_control_t:
+ result = charT('\t');
+ break;
+ case regex_constants::escape_type_control_v:
+ result = charT('\v');
+ break;
+ case regex_constants::escape_type_word_assert:
+ result = charT('\b');
+ break;
+ case regex_constants::escape_type_ascii_control:
+ ++m_position;
+ if(m_position == m_end)
+ {
+ fail(regex_constants::error_escape, m_position - m_base);
+ return result;
+ }
+ /*
+ if((*m_position < charT('@'))
+ || (*m_position > charT(125)) )
+ {
+ fail(regex_constants::error_escape, m_position - m_base);
+ return result;
+ }
+ */
+ result = static_cast<charT>(*m_position % 32);
+ break;
+ case regex_constants::escape_type_hex:
+ ++m_position;
+ if(m_position == m_end)
+ {
+ fail(regex_constants::error_escape, m_position - m_base);
+ return result;
+ }
+ // maybe have \x{ddd}
+ if(this->m_traits.syntax_type(*m_position) == regex_constants::syntax_open_brace)
+ {
+ ++m_position;
+ if(m_position == m_end)
+ {
+ fail(regex_constants::error_escape, m_position - m_base);
+ return result;
+ }
+ int i = this->m_traits.toi(m_position, m_end, 16);
+ if((m_position == m_end)
+ || (i < 0)
+ || ((std::numeric_limits<charT>::is_specialized) && (charT(i) > (std::numeric_limits<charT>::max)()))
+ || (this->m_traits.syntax_type(*m_position) != regex_constants::syntax_close_brace))
+ {
+ fail(regex_constants::error_badbrace, m_position - m_base);
+ return result;
+ }
+ ++m_position;
+ result = charT(i);
+ }
+ else
+ {
+ std::ptrdiff_t len = (std::min)(static_cast<std::ptrdiff_t>(2), m_end - m_position);
+ int i = this->m_traits.toi(m_position, m_position + len, 16);
+ if((i < 0)
+ || !valid_value(charT(0), i))
+ {
+ fail(regex_constants::error_escape, m_position - m_base);
+ return result;
+ }
+ result = charT(i);
+ }
+ return result;
+ case regex_constants::syntax_digit:
+ {
+ // an octal escape sequence, the first character must be a zero
+ // followed by up to 3 octal digits:
+ std::ptrdiff_t len = (std::min)(::boost::re_detail::distance(m_position, m_end), static_cast<std::ptrdiff_t>(4));
+ const charT* bp = m_position;
+ int val = this->m_traits.toi(bp, bp + 1, 8);
+ if(val != 0)
+ {
+ // Oops not an octal escape after all:
+ fail(regex_constants::error_escape, m_position - m_base);
+ return result;
+ }
+ val = this->m_traits.toi(m_position, m_position + len, 8);
+ if(val < 0)
+ {
+ fail(regex_constants::error_escape, m_position - m_base);
+ return result;
+ }
+ return static_cast<charT>(val);
+ }
+ case regex_constants::escape_type_named_char:
+ {
+ ++m_position;
+ if(m_position == m_end)
+ {
+ fail(regex_constants::error_escape, m_position - m_base);
+ return false;
+ }
+ // maybe have \N{name}
+ if(this->m_traits.syntax_type(*m_position) == regex_constants::syntax_open_brace)
+ {
+ const charT* base = m_position;
+ // skip forward until we find enclosing brace:
+ while((m_position != m_end) && (this->m_traits.syntax_type(*m_position) != regex_constants::syntax_close_brace))
+ ++m_position;
+ if(m_position == m_end)
+ {
+ fail(regex_constants::error_escape, m_position - m_base);
+ return false;
+ }
+ string_type s = this->m_traits.lookup_collatename(++base, m_position++);
+ if(s.empty())
+ {
+ fail(regex_constants::error_collate, m_position - m_base);
+ return false;
+ }
+ if(s.size() == 1)
+ {
+ return s[0];
+ }
+ }
+ // fall through is a failure:
+ fail(regex_constants::error_escape, m_position - m_base);
+ return false;
+ }
+ default:
+ result = *m_position;
+ break;
+ }
+ ++m_position;
+ return result;
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+}
+
+template <class charT, class traits>
+bool basic_regex_parser<charT, traits>::parse_backref()
+{
+ BOOST_ASSERT(m_position != m_end);
+ const charT* pc = m_position;
+ int i = this->m_traits.toi(pc, pc + 1, 10);
+ if((i == 0) || (((this->flags() & regbase::main_option_type) == regbase::perl_syntax_group) && (this->flags() & regbase::no_bk_refs)))
+ {
+ // not a backref at all but an octal escape sequence:
+ charT c = unescape_character();
+ this->append_literal(c);
+ }
+ else if((i > 0) && (this->m_backrefs & (1u << (i-1))))
+ {
+ m_position = pc;
+ re_brace* pb = static_cast<re_brace*>(this->append_state(syntax_element_backref, sizeof(re_brace)));
+ pb->index = i;
+ }
+ else
+ {
+ fail(regex_constants::error_backref, m_position - m_end);
+ return false;
+ }
+ return true;
+}
+
+template <class charT, class traits>
+bool basic_regex_parser<charT, traits>::parse_QE()
+{
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4127)
+#endif
+ //
+ // parse a \Q...\E sequence:
+ //
+ ++m_position; // skip the Q
+ const charT* start = m_position;
+ const charT* end;
+ do
+ {
+ while((m_position != m_end)
+ && (this->m_traits.syntax_type(*m_position) != regex_constants::syntax_escape))
+ ++m_position;
+ if(m_position == m_end)
+ {
+ // a \Q...\E sequence may terminate with the end of the expression:
+ end = m_position;
+ break;
+ }
+ if(++m_position == m_end) // skip the escape
+ {
+ fail(regex_constants::error_escape, m_position - m_base);
+ return false;
+ }
+ // check to see if it's a \E:
+ if(this->m_traits.escape_syntax_type(*m_position) == regex_constants::escape_type_E)
+ {
+ ++m_position;
+ end = m_position - 2;
+ break;
+ }
+ // otherwise go round again:
+ }while(true);
+ //
+ // now add all the character between the two escapes as literals:
+ //
+ while(start != end)
+ {
+ this->append_literal(*start);
+ ++start;
+ }
+ return true;
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+}
+
+template <class charT, class traits>
+bool basic_regex_parser<charT, traits>::parse_perl_extension()
+{
+ if(++m_position == m_end)
+ {
+ fail(regex_constants::error_badrepeat, m_position - m_base);
+ return false;
+ }
+ //
+ // treat comments as a special case, as these
+ // are the only ones that don't start with a leading
+ // startmark state:
+ //
+ if(this->m_traits.syntax_type(*m_position) == regex_constants::syntax_hash)
+ {
+ while((m_position != m_end)
+ && (this->m_traits.syntax_type(*m_position++) != regex_constants::syntax_close_mark))
+ {}
+ return true;
+ }
+ //
+ // backup some state, and prepare the way:
+ //
+ int markid = 0;
+ std::ptrdiff_t jump_offset = 0;
+ re_brace* pb = static_cast<re_brace*>(this->append_state(syntax_element_startmark, sizeof(re_brace)));
+ std::ptrdiff_t last_paren_start = this->getoffset(pb);
+ // back up insertion point for alternations, and set new point:
+ std::ptrdiff_t last_alt_point = m_alt_insert_point;
+ this->m_pdata->m_data.align();
+ m_alt_insert_point = this->m_pdata->m_data.size();
+ std::ptrdiff_t expected_alt_point = m_alt_insert_point;
+ bool restore_flags = true;
+ regex_constants::syntax_option_type old_flags = this->flags();
+ bool old_case_change = m_has_case_change;
+ m_has_case_change = false;
+ //
+ // select the actual extension used:
+ //
+ switch(this->m_traits.syntax_type(*m_position))
+ {
+ case regex_constants::syntax_colon:
+ //
+ // a non-capturing mark:
+ //
+ pb->index = markid = 0;
+ ++m_position;
+ break;
+ case regex_constants::syntax_equal:
+ pb->index = markid = -1;
+ ++m_position;
+ jump_offset = this->getoffset(this->append_state(syntax_element_jump, sizeof(re_jump)));
+ this->m_pdata->m_data.align();
+ m_alt_insert_point = this->m_pdata->m_data.size();
+ break;
+ case regex_constants::syntax_not:
+ pb->index = markid = -2;
+ ++m_position;
+ jump_offset = this->getoffset(this->append_state(syntax_element_jump, sizeof(re_jump)));
+ this->m_pdata->m_data.align();
+ m_alt_insert_point = this->m_pdata->m_data.size();
+ break;
+ case regex_constants::escape_type_left_word:
+ {
+ // a lookbehind assertion:
+ if(++m_position == m_end)
+ {
+ fail(regex_constants::error_badrepeat, m_position - m_base);
+ return false;
+ }
+ regex_constants::syntax_type t = this->m_traits.syntax_type(*m_position);
+ if(t == regex_constants::syntax_not)
+ pb->index = markid = -2;
+ else if(t == regex_constants::syntax_equal)
+ pb->index = markid = -1;
+ else
+ {
+ fail(regex_constants::error_badrepeat, m_position - m_base);
+ return false;
+ }
+ ++m_position;
+ jump_offset = this->getoffset(this->append_state(syntax_element_jump, sizeof(re_jump)));
+ this->append_state(syntax_element_backstep, sizeof(re_brace));
+ this->m_pdata->m_data.align();
+ m_alt_insert_point = this->m_pdata->m_data.size();
+ break;
+ }
+ case regex_constants::escape_type_right_word:
+ //
+ // an independent sub-expression:
+ //
+ pb->index = markid = -3;
+ ++m_position;
+ jump_offset = this->getoffset(this->append_state(syntax_element_jump, sizeof(re_jump)));
+ this->m_pdata->m_data.align();
+ m_alt_insert_point = this->m_pdata->m_data.size();
+ break;
+ case regex_constants::syntax_open_mark:
+ {
+ // a conditional expression:
+ pb->index = markid = -4;
+ if(++m_position == m_end)
+ {
+ fail(regex_constants::error_badrepeat, m_position - m_base);
+ return false;
+ }
+ int v = this->m_traits.toi(m_position, m_end, 10);
+ if(v > 0)
+ {
+ re_brace* br = static_cast<re_brace*>(this->append_state(syntax_element_assert_backref, sizeof(re_brace)));
+ br->index = v;
+ if(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_close_mark)
+ {
+ fail(regex_constants::error_badrepeat, m_position - m_base);
+ return false;
+ }
+ if(++m_position == m_end)
+ {
+ fail(regex_constants::error_badrepeat, m_position - m_base);
+ return false;
+ }
+ }
+ else
+ {
+ // verify that we have a lookahead or lookbehind assert:
+ if(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_question)
+ {
+ fail(regex_constants::error_badrepeat, m_position - m_base);
+ return false;
+ }
+ if(++m_position == m_end)
+ {
+ fail(regex_constants::error_badrepeat, m_position - m_base);
+ return false;
+ }
+ if(this->m_traits.syntax_type(*m_position) == regex_constants::escape_type_left_word)
+ {
+ if(++m_position == m_end)
+ {
+ fail(regex_constants::error_badrepeat, m_position - m_base);
+ return false;
+ }
+ if((this->m_traits.syntax_type(*m_position) != regex_constants::syntax_equal)
+ && (this->m_traits.syntax_type(*m_position) != regex_constants::syntax_not))
+ {
+ fail(regex_constants::error_badrepeat, m_position - m_base);
+ return false;
+ }
+ m_position -= 3;
+ }
+ else
+ {
+ if((this->m_traits.syntax_type(*m_position) != regex_constants::syntax_equal)
+ && (this->m_traits.syntax_type(*m_position) != regex_constants::syntax_not))
+ {
+ fail(regex_constants::error_badrepeat, m_position - m_base);
+ return false;
+ }
+ m_position -= 2;
+ }
+ }
+ break;
+ }
+ case regex_constants::syntax_close_mark:
+ fail(regex_constants::error_badrepeat, m_position - m_base);
+ return false;
+ default:
+ //
+ // lets assume that we have a (?imsx) group and try and parse it:
+ //
+ regex_constants::syntax_option_type opts = parse_options();
+ if(m_position == m_end)
+ return false;
+ // make a note of whether we have a case change:
+ m_has_case_change = ((opts & regbase::icase) != (this->flags() & regbase::icase));
+ pb->index = markid = 0;
+ if(this->m_traits.syntax_type(*m_position) == regex_constants::syntax_close_mark)
+ {
+ // update flags and carry on as normal:
+ this->flags(opts);
+ restore_flags = false;
+ old_case_change |= m_has_case_change; // defer end of scope by one ')'
+ }
+ else if(this->m_traits.syntax_type(*m_position) == regex_constants::syntax_colon)
+ {
+ // update flags and carry on until the matching ')' is found:
+ this->flags(opts);
+ ++m_position;
+ }
+ else
+ {
+ fail(regex_constants::error_badrepeat, m_position - m_base);
+ return false;
+ }
+
+ // finally append a case change state if we need it:
+ if(m_has_case_change)
+ {
+ static_cast<re_case*>(
+ this->append_state(syntax_element_toggle_case, sizeof(re_case))
+ )->icase = opts & regbase::icase;
+ }
+
+ }
+ //
+ // now recursively add more states, this will terminate when we get to a
+ // matching ')' :
+ //
+ parse_all();
+ //
+ // Unwind alternatives:
+ //
+ if(0 == unwind_alts(last_paren_start))
+ return false;
+ //
+ // we either have a ')' or we have run out of characters prematurely:
+ //
+ if(m_position == m_end)
+ {
+ this->fail(regex_constants::error_paren, ::boost::re_detail::distance(m_base, m_end));
+ return false;
+ }
+ BOOST_ASSERT(this->m_traits.syntax_type(*m_position) == regex_constants::syntax_close_mark);
+ ++m_position;
+ //
+ // restore the flags:
+ //
+ if(restore_flags)
+ {
+ // append a case change state if we need it:
+ if(m_has_case_change)
+ {
+ static_cast<re_case*>(
+ this->append_state(syntax_element_toggle_case, sizeof(re_case))
+ )->icase = old_flags & regbase::icase;
+ }
+ this->flags(old_flags);
+ }
+ //
+ // set up the jump pointer if we have one:
+ //
+ if(jump_offset)
+ {
+ this->m_pdata->m_data.align();
+ re_jump* jmp = static_cast<re_jump*>(this->getaddress(jump_offset));
+ jmp->alt.i = this->m_pdata->m_data.size() - this->getoffset(jmp);
+ if(this->m_last_state == jmp)
+ {
+ // Oops... we didn't have anything inside the assertion:
+ fail(regex_constants::error_empty, m_position - m_base);
+ return false;
+ }
+ }
+ //
+ // verify that if this is conditional expression, that we do have
+ // an alternative, if not add one:
+ //
+ if(markid == -4)
+ {
+ re_syntax_base* b = this->getaddress(expected_alt_point);
+ if(b->type != syntax_element_alt)
+ {
+ re_alt* alt = static_cast<re_alt*>(this->insert_state(expected_alt_point, syntax_element_alt, sizeof(re_alt)));
+ alt->alt.i = this->m_pdata->m_data.size() - this->getoffset(alt);
+ }
+ else if(this->getaddress(static_cast<re_alt*>(b)->alt.i, b)->type == syntax_element_alt)
+ {
+ fail(regex_constants::error_bad_pattern, m_position - m_base);
+ return false;
+ }
+ }
+ //
+ // append closing parenthesis state:
+ //
+ pb = static_cast<re_brace*>(this->append_state(syntax_element_endmark, sizeof(re_brace)));
+ pb->index = markid;
+ this->m_paren_start = last_paren_start;
+ //
+ // restore the alternate insertion point:
+ //
+ this->m_alt_insert_point = last_alt_point;
+ //
+ // and the case change data:
+ //
+ m_has_case_change = old_case_change;
+ return true;
+}
+
+template <class charT, class traits>
+bool basic_regex_parser<charT, traits>::add_emacs_code(bool negate)
+{
+ //
+ // parses an emacs style \sx or \Sx construct.
+ //
+ if(++m_position == m_end)
+ {
+ fail(regex_constants::error_escape, m_position - m_base);
+ return false;
+ }
+ basic_char_set<charT, traits> char_set;
+ if(negate)
+ char_set.negate();
+
+ static const charT s_punct[5] = { 'p', 'u', 'n', 'c', 't', };
+
+ switch(*m_position)
+ {
+ case 's':
+ case ' ':
+ char_set.add_class(this->m_mask_space);
+ break;
+ case 'w':
+ char_set.add_class(this->m_word_mask);
+ break;
+ case '_':
+ char_set.add_single(digraph<charT>(charT('$')));
+ char_set.add_single(digraph<charT>(charT('&')));
+ char_set.add_single(digraph<charT>(charT('*')));
+ char_set.add_single(digraph<charT>(charT('+')));
+ char_set.add_single(digraph<charT>(charT('-')));
+ char_set.add_single(digraph<charT>(charT('_')));
+ char_set.add_single(digraph<charT>(charT('<')));
+ char_set.add_single(digraph<charT>(charT('>')));
+ break;
+ case '.':
+ char_set.add_class(this->m_traits.lookup_classname(s_punct, s_punct+5));
+ break;
+ case '(':
+ char_set.add_single(digraph<charT>(charT('(')));
+ char_set.add_single(digraph<charT>(charT('[')));
+ char_set.add_single(digraph<charT>(charT('{')));
+ break;
+ case ')':
+ char_set.add_single(digraph<charT>(charT(')')));
+ char_set.add_single(digraph<charT>(charT(']')));
+ char_set.add_single(digraph<charT>(charT('}')));
+ break;
+ case '"':
+ char_set.add_single(digraph<charT>(charT('"')));
+ char_set.add_single(digraph<charT>(charT('\'')));
+ char_set.add_single(digraph<charT>(charT('`')));
+ break;
+ case '\'':
+ char_set.add_single(digraph<charT>(charT('\'')));
+ char_set.add_single(digraph<charT>(charT(',')));
+ char_set.add_single(digraph<charT>(charT('#')));
+ break;
+ case '<':
+ char_set.add_single(digraph<charT>(charT(';')));
+ break;
+ case '>':
+ char_set.add_single(digraph<charT>(charT('\n')));
+ char_set.add_single(digraph<charT>(charT('\f')));
+ break;
+ default:
+ fail(regex_constants::error_ctype, m_position - m_base);
+ return false;
+ }
+ if(0 == this->append_set(char_set))
+ {
+ fail(regex_constants::error_ctype, m_position - m_base);
+ return false;
+ }
+ ++m_position;
+ return true;
+}
+
+template <class charT, class traits>
+regex_constants::syntax_option_type basic_regex_parser<charT, traits>::parse_options()
+{
+ // we have a (?imsx-imsx) group, convert it into a set of flags:
+ regex_constants::syntax_option_type f = this->flags();
+ bool breakout = false;
+ do
+ {
+ switch(*m_position)
+ {
+ case 's':
+ f |= regex_constants::mod_s;
+ f &= ~regex_constants::no_mod_s;
+ break;
+ case 'm':
+ f &= ~regex_constants::no_mod_m;
+ break;
+ case 'i':
+ f |= regex_constants::icase;
+ break;
+ case 'x':
+ f |= regex_constants::mod_x;
+ break;
+ default:
+ breakout = true;
+ continue;
+ }
+ if(++m_position == m_end)
+ {
+ fail(regex_constants::error_paren, m_position - m_base);
+ return false;
+ }
+ }
+ while(!breakout);
+
+ if(*m_position == static_cast<charT>('-'))
+ {
+ if(++m_position == m_end)
+ {
+ fail(regex_constants::error_paren, m_position - m_base);
+ return false;
+ }
+ do
+ {
+ switch(*m_position)
+ {
+ case 's':
+ f &= ~regex_constants::mod_s;
+ f |= regex_constants::no_mod_s;
+ break;
+ case 'm':
+ f |= regex_constants::no_mod_m;
+ break;
+ case 'i':
+ f &= ~regex_constants::icase;
+ break;
+ case 'x':
+ f &= ~regex_constants::mod_x;
+ break;
+ default:
+ breakout = true;
+ continue;
+ }
+ if(++m_position == m_end)
+ {
+ fail(regex_constants::error_paren, m_position - m_base);
+ return false;
+ }
+ }
+ while(!breakout);
+ }
+ return f;
+}
+
+template <class charT, class traits>
+bool basic_regex_parser<charT, traits>::unwind_alts(std::ptrdiff_t last_paren_start)
+{
+ //
+ // If we didn't actually add any states after the last
+ // alternative then that's an error:
+ //
+ if((this->m_alt_insert_point == static_cast<std::ptrdiff_t>(this->m_pdata->m_data.size()))
+ && m_alt_jumps.size() && (m_alt_jumps.back() > last_paren_start))
+ {
+ fail(regex_constants::error_empty, this->m_position - this->m_base);
+ return false;
+ }
+ //
+ // Fix up our alternatives:
+ //
+ while(m_alt_jumps.size() && (m_alt_jumps.back() > last_paren_start))
+ {
+ //
+ // fix up the jump to point to the end of the states
+ // that we've just added:
+ //
+ std::ptrdiff_t jump_offset = m_alt_jumps.back();
+ m_alt_jumps.pop_back();
+ this->m_pdata->m_data.align();
+ re_jump* jmp = static_cast<re_jump*>(this->getaddress(jump_offset));
+ BOOST_ASSERT(jmp->type == syntax_element_jump);
+ jmp->alt.i = this->m_pdata->m_data.size() - jump_offset;
+ }
+ return true;
+}
+
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+} // namespace re_detail
+} // namespace boost
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+
+#endif

Added: sandbox/SOC/2007/regex/named-captures/boost/regex/v4/c_regex_traits.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/boost/regex/v4/c_regex_traits.hpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,197 @@
+/*
+ *
+ * Copyright (c) 2004
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE c_regex_traits.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Declares regular expression traits class that wraps the global C locale.
+ */
+
+#ifndef BOOST_C_REGEX_TRAITS_HPP_INCLUDED
+#define BOOST_C_REGEX_TRAITS_HPP_INCLUDED
+
+#ifndef BOOST_REGEX_CONFIG_HPP
+#include <boost/regex/config.hpp>
+#endif
+#ifndef BOOST_REGEX_WORKAROUND_HPP
+#include <boost/regex/v4/regex_workaround.hpp>
+#endif
+
+#include <cctype>
+
+#ifdef BOOST_NO_STDC_NAMESPACE
+namespace std{
+ using ::strlen; using ::tolower;
+}
+#endif
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+
+namespace boost{
+
+template <class charT>
+struct c_regex_traits;
+
+template<>
+struct BOOST_REGEX_DECL c_regex_traits<char>
+{
+ c_regex_traits(){}
+ typedef char char_type;
+ typedef std::size_t size_type;
+ typedef std::string string_type;
+ struct locale_type{};
+ typedef boost::uint32_t char_class_type;
+
+ static size_type length(const char_type* p)
+ {
+ return (std::strlen)(p);
+ }
+
+ char translate(char c) const
+ {
+ return c;
+ }
+ char translate_nocase(char c) const
+ {
+ return static_cast<char>((std::tolower)(static_cast<unsigned char>(c)));
+ }
+
+ static string_type BOOST_REGEX_CALL transform(const char* p1, const char* p2);
+ static string_type BOOST_REGEX_CALL transform_primary(const char* p1, const char* p2);
+
+ static char_class_type BOOST_REGEX_CALL lookup_classname(const char* p1, const char* p2);
+ static string_type BOOST_REGEX_CALL lookup_collatename(const char* p1, const char* p2);
+
+ static bool BOOST_REGEX_CALL isctype(char, char_class_type);
+ static int BOOST_REGEX_CALL value(char, int);
+
+ locale_type imbue(locale_type l)
+ { return l; }
+ locale_type getloc()const
+ { return locale_type(); }
+
+private:
+ // this type is not copyable:
+ c_regex_traits(const c_regex_traits&);
+ c_regex_traits& operator=(const c_regex_traits&);
+};
+
+#ifndef BOOST_NO_WREGEX
+template<>
+struct BOOST_REGEX_DECL c_regex_traits<wchar_t>
+{
+ c_regex_traits(){}
+ typedef wchar_t char_type;
+ typedef std::size_t size_type;
+ typedef std::wstring string_type;
+ struct locale_type{};
+ typedef boost::uint32_t char_class_type;
+
+ static size_type length(const char_type* p)
+ {
+ return (std::wcslen)(p);
+ }
+
+ wchar_t translate(wchar_t c) const
+ {
+ return c;
+ }
+ wchar_t translate_nocase(wchar_t c) const
+ {
+ return (std::towlower)(c);
+ }
+
+ static string_type BOOST_REGEX_CALL transform(const wchar_t* p1, const wchar_t* p2);
+ static string_type BOOST_REGEX_CALL transform_primary(const wchar_t* p1, const wchar_t* p2);
+
+ static char_class_type BOOST_REGEX_CALL lookup_classname(const wchar_t* p1, const wchar_t* p2);
+ static string_type BOOST_REGEX_CALL lookup_collatename(const wchar_t* p1, const wchar_t* p2);
+
+ static bool BOOST_REGEX_CALL isctype(wchar_t, char_class_type);
+ static int BOOST_REGEX_CALL value(wchar_t, int);
+
+ locale_type imbue(locale_type l)
+ { return l; }
+ locale_type getloc()const
+ { return locale_type(); }
+
+private:
+ // this type is not copyable:
+ c_regex_traits(const c_regex_traits&);
+ c_regex_traits& operator=(const c_regex_traits&);
+};
+
+#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T
+//
+// Provide an unsigned short version as well, so the user can link to this
+// no matter whether they build with /Zc:wchar_t or not (MSVC specific).
+//
+template<>
+struct BOOST_REGEX_DECL c_regex_traits<unsigned short>
+{
+ c_regex_traits(){}
+ typedef unsigned short char_type;
+ typedef std::size_t size_type;
+ typedef std::basic_string<unsigned short> string_type;
+ struct locale_type{};
+ typedef boost::uint32_t char_class_type;
+
+ static size_type length(const char_type* p)
+ {
+ return (std::wcslen)((const wchar_t*)p);
+ }
+
+ unsigned short translate(unsigned short c) const
+ {
+ return c;
+ }
+ unsigned short translate_nocase(unsigned short c) const
+ {
+ return (std::towlower)((wchar_t)c);
+ }
+
+ static string_type BOOST_REGEX_CALL transform(const unsigned short* p1, const unsigned short* p2);
+ static string_type BOOST_REGEX_CALL transform_primary(const unsigned short* p1, const unsigned short* p2);
+
+ static char_class_type BOOST_REGEX_CALL lookup_classname(const unsigned short* p1, const unsigned short* p2);
+ static string_type BOOST_REGEX_CALL lookup_collatename(const unsigned short* p1, const unsigned short* p2);
+
+ static bool BOOST_REGEX_CALL isctype(unsigned short, char_class_type);
+ static int BOOST_REGEX_CALL value(unsigned short, int);
+
+ locale_type imbue(locale_type l)
+ { return l; }
+ locale_type getloc()const
+ { return locale_type(); }
+
+private:
+ // this type is not copyable:
+ c_regex_traits(const c_regex_traits&);
+ c_regex_traits& operator=(const c_regex_traits&);
+};
+
+#endif
+
+#endif // BOOST_NO_WREGEX
+
+}
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+
+#endif
+
+
+

Added: sandbox/SOC/2007/regex/named-captures/boost/regex/v4/char_regex_traits.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/boost/regex/v4/char_regex_traits.hpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,67 @@
+/*
+ *
+ * Copyright (c) 2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE char_regex_traits.cpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Declares deprecated traits classes char_regex_traits<>.
+ */
+
+
+#ifndef BOOST_REGEX_V4_CHAR_REGEX_TRAITS_HPP
+#define BOOST_REGEX_V4_CHAR_REGEX_TRAITS_HPP
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+
+namespace boost{
+
+namespace deprecated{
+//
+// class char_regex_traits_i
+// provides case insensitive traits classes (deprecated):
+template <class charT>
+class char_regex_traits_i : public regex_traits<charT> {};
+
+template<>
+class char_regex_traits_i<char> : public regex_traits<char>
+{
+public:
+ typedef char char_type;
+ typedef unsigned char uchar_type;
+ typedef unsigned int size_type;
+ typedef regex_traits<char> base_type;
+
+};
+
+#ifndef BOOST_NO_WREGEX
+template<>
+class char_regex_traits_i<wchar_t> : public regex_traits<wchar_t>
+{
+public:
+ typedef wchar_t char_type;
+ typedef unsigned short uchar_type;
+ typedef unsigned int size_type;
+ typedef regex_traits<wchar_t> base_type;
+
+};
+#endif
+} // namespace deprecated
+} // namespace boost
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+
+#endif // include
+

Added: sandbox/SOC/2007/regex/named-captures/boost/regex/v4/cpp_regex_traits.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/boost/regex/v4/cpp_regex_traits.hpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,1041 @@
+/*
+ *
+ * Copyright (c) 2004
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE cpp_regex_traits.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Declares regular expression traits class cpp_regex_traits.
+ */
+
+#ifndef BOOST_CPP_REGEX_TRAITS_HPP_INCLUDED
+#define BOOST_CPP_REGEX_TRAITS_HPP_INCLUDED
+
+#include <boost/config.hpp>
+
+#ifndef BOOST_NO_STD_LOCALE
+
+#ifndef BOOST_RE_PAT_EXCEPT_HPP
+#include <boost/regex/pattern_except.hpp>
+#endif
+#ifndef BOOST_REGEX_TRAITS_DEFAULTS_HPP_INCLUDED
+#include <boost/regex/v4/regex_traits_defaults.hpp>
+#endif
+#ifdef BOOST_HAS_THREADS
+#include <boost/regex/pending/static_mutex.hpp>
+#endif
+#ifndef BOOST_REGEX_PRIMARY_TRANSFORM
+#include <boost/regex/v4/primary_transform.hpp>
+#endif
+#ifndef BOOST_REGEX_OBJECT_CACHE_HPP
+#include <boost/regex/pending/object_cache.hpp>
+#endif
+
+#include <istream>
+#include <ios>
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4786)
+#endif
+
+namespace boost{
+
+//
+// forward declaration is needed by some compilers:
+//
+template <class charT>
+class cpp_regex_traits;
+
+namespace re_detail{
+
+//
+// class parser_buf:
+// acts as a stream buffer which wraps around a pair of pointers:
+//
+template <class charT,
+ class traits = ::std::char_traits<charT> >
+class parser_buf : public ::std::basic_streambuf<charT, traits>
+{
+ typedef ::std::basic_streambuf<charT, traits> base_type;
+ typedef typename base_type::int_type int_type;
+ typedef typename base_type::char_type char_type;
+ typedef typename base_type::pos_type pos_type;
+ typedef ::std::streamsize streamsize;
+ typedef typename base_type::off_type off_type;
+public:
+ parser_buf() : base_type() { setbuf(0, 0); }
+ const charT* getnext() { return this->gptr(); }
+protected:
+ std::basic_streambuf<charT, traits>* setbuf(char_type* s, streamsize n);
+ typename parser_buf<charT, traits>::pos_type seekpos(pos_type sp, ::std::ios_base::openmode which);
+ typename parser_buf<charT, traits>::pos_type seekoff(off_type off, ::std::ios_base::seekdir way, ::std::ios_base::openmode which);
+private:
+ parser_buf& operator=(const parser_buf&);
+ parser_buf(const parser_buf&);
+};
+
+template<class charT, class traits>
+std::basic_streambuf<charT, traits>*
+parser_buf<charT, traits>::setbuf(char_type* s, streamsize n)
+{
+ this->setg(s, s, s + n);
+ return this;
+}
+
+template<class charT, class traits>
+typename parser_buf<charT, traits>::pos_type
+parser_buf<charT, traits>::seekoff(off_type off, ::std::ios_base::seekdir way, ::std::ios_base::openmode which)
+{
+ if(which & ::std::ios_base::out)
+ return pos_type(off_type(-1));
+ std::ptrdiff_t size = this->egptr() - this->eback();
+ std::ptrdiff_t pos = this->gptr() - this->eback();
+ charT* g = this->eback();
+ switch(way)
+ {
+ case ::std::ios_base::beg:
+ if((off < 0) || (off > size))
+ return pos_type(off_type(-1));
+ else
+ this->setg(g, g + off, g + size);
+ break;
+ case ::std::ios_base::end:
+ if((off < 0) || (off > size))
+ return pos_type(off_type(-1));
+ else
+ this->setg(g, g + size - off, g + size);
+ break;
+ case ::std::ios_base::cur:
+ {
+ std::ptrdiff_t newpos = pos + off;
+ if((newpos < 0) || (newpos > size))
+ return pos_type(off_type(-1));
+ else
+ this->setg(g, g + newpos, g + size);
+ break;
+ }
+ default: ;
+ }
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4244)
+#endif
+ return static_cast<pos_type>(this->gptr() - this->eback());
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+}
+
+template<class charT, class traits>
+typename parser_buf<charT, traits>::pos_type
+parser_buf<charT, traits>::seekpos(pos_type sp, ::std::ios_base::openmode which)
+{
+ if(which & ::std::ios_base::out)
+ return pos_type(off_type(-1));
+ off_type size = static_cast<off_type>(this->egptr() - this->eback());
+ charT* g = this->eback();
+ if(off_type(sp) <= size)
+ {
+ this->setg(g, g + off_type(sp), g + size);
+ }
+ return pos_type(off_type(-1));
+}
+
+//
+// class cpp_regex_traits_base:
+// acts as a container for locale and the facets we are using.
+//
+template <class charT>
+struct cpp_regex_traits_base
+{
+ cpp_regex_traits_base(const std::locale& l)
+ { imbue(l); }
+ std::locale imbue(const std::locale& l);
+
+ std::locale m_locale;
+ std::ctype<charT> const* m_pctype;
+#ifndef BOOST_NO_STD_MESSAGES
+ std::messages<charT> const* m_pmessages;
+#endif
+ std::collate<charT> const* m_pcollate;
+
+ bool operator<(const cpp_regex_traits_base& b)const
+ {
+ if(m_pctype == b.m_pctype)
+ {
+#ifndef BOOST_NO_STD_MESSAGES
+ if(m_pmessages == b.m_pmessages)
+ {
+ }
+ return m_pmessages < b.m_pmessages;
+#else
+ return m_pcollate < b.m_pcollate;
+#endif
+ }
+ return m_pctype < b.m_pctype;
+ }
+ bool operator==(const cpp_regex_traits_base& b)const
+ {
+ return (m_pctype == b.m_pctype)
+#ifndef BOOST_NO_STD_MESSAGES
+ && (m_pmessages == b.m_pmessages)
+#endif
+ && (m_pcollate == b.m_pcollate);
+ }
+};
+
+template <class charT>
+std::locale cpp_regex_traits_base<charT>::imbue(const std::locale& l)
+{
+ std::locale result(m_locale);
+ m_locale = l;
+ m_pctype = &BOOST_USE_FACET(std::ctype<charT>, l);
+#ifndef BOOST_NO_STD_MESSAGES
+ m_pmessages = &BOOST_USE_FACET(std::messages<charT>, l);
+#endif
+ m_pcollate = &BOOST_USE_FACET(std::collate<charT>, l);
+ return result;
+}
+
+//
+// class cpp_regex_traits_char_layer:
+// implements methods that require specialisation for narrow characters:
+//
+template <class charT>
+class cpp_regex_traits_char_layer : public cpp_regex_traits_base<charT>
+{
+ typedef std::basic_string<charT> string_type;
+ typedef std::map<charT, regex_constants::syntax_type> map_type;
+ typedef typename map_type::const_iterator map_iterator_type;
+public:
+ cpp_regex_traits_char_layer(const std::locale& l)
+ : cpp_regex_traits_base<charT>(l)
+ {
+ init();
+ }
+ cpp_regex_traits_char_layer(const cpp_regex_traits_base<charT>& b)
+ : cpp_regex_traits_base<charT>(b)
+ {
+ init();
+ }
+ void init();
+
+ regex_constants::syntax_type syntax_type(charT c)const
+ {
+ map_iterator_type i = m_char_map.find(c);
+ return ((i == m_char_map.end()) ? 0 : i->second);
+ }
+ regex_constants::escape_syntax_type escape_syntax_type(charT c) const
+ {
+ map_iterator_type i = m_char_map.find(c);
+ if(i == m_char_map.end())
+ {
+ if(this->m_pctype->is(std::ctype_base::lower, c)) return regex_constants::escape_type_class;
+ if(this->m_pctype->is(std::ctype_base::upper, c)) return regex_constants::escape_type_not_class;
+ return 0;
+ }
+ return i->second;
+ }
+
+private:
+ string_type get_default_message(regex_constants::syntax_type);
+ // TODO: use a hash table when available!
+ map_type m_char_map;
+};
+
+template <class charT>
+void cpp_regex_traits_char_layer<charT>::init()
+{
+ // we need to start by initialising our syntax map so we know which
+ // character is used for which purpose:
+#ifndef BOOST_NO_STD_MESSAGES
+#ifndef __IBMCPP__
+ typename std::messages<charT>::catalog cat = static_cast<std::messages<char>::catalog>(-1);
+#else
+ typename std::messages<charT>::catalog cat = reinterpret_cast<std::messages<char>::catalog>(-1);
+#endif
+ std::string cat_name(cpp_regex_traits<charT>::get_catalog_name());
+ if(cat_name.size())
+ {
+ cat = this->m_pmessages->open(
+ cat_name,
+ this->m_locale);
+ if((int)cat < 0)
+ {
+ std::string m("Unable to open message catalog: ");
+ std::runtime_error err(m + cat_name);
+ boost::re_detail::raise_runtime_error(err);
+ }
+ }
+ //
+ // if we have a valid catalog then load our messages:
+ //
+ if((int)cat >= 0)
+ {
+ try{
+ for(regex_constants::syntax_type i = 1; i < regex_constants::syntax_max; ++i)
+ {
+ string_type mss = this->m_pmessages->get(cat, 0, i, get_default_message(i));
+ for(typename string_type::size_type j = 0; j < mss.size(); ++j)
+ {
+ m_char_map[mss[j]] = i;
+ }
+ }
+ this->m_pmessages->close(cat);
+ }
+ catch(...)
+ {
+ this->m_pmessages->close(cat);
+ throw;
+ }
+ }
+ else
+ {
+#endif
+ for(regex_constants::syntax_type i = 1; i < regex_constants::syntax_max; ++i)
+ {
+ const char* ptr = get_default_syntax(i);
+ while(ptr && *ptr)
+ {
+ m_char_map[this->m_pctype->widen(*ptr)] = i;
+ ++ptr;
+ }
+ }
+#ifndef BOOST_NO_STD_MESSAGES
+ }
+#endif
+}
+
+template <class charT>
+typename cpp_regex_traits_char_layer<charT>::string_type
+ cpp_regex_traits_char_layer<charT>::get_default_message(regex_constants::syntax_type i)
+{
+ const char* ptr = get_default_syntax(i);
+ string_type result;
+ while(ptr && *ptr)
+ {
+ result.append(1, this->m_pctype->widen(*ptr));
+ ++ptr;
+ }
+ return result;
+}
+
+//
+// specialised version for narrow characters:
+//
+template <>
+class BOOST_REGEX_DECL cpp_regex_traits_char_layer<char> : public cpp_regex_traits_base<char>
+{
+ typedef std::string string_type;
+public:
+ cpp_regex_traits_char_layer(const std::locale& l)
+ : cpp_regex_traits_base<char>(l)
+ {
+ init();
+ }
+ cpp_regex_traits_char_layer(const cpp_regex_traits_base<char>& l)
+ : cpp_regex_traits_base<char>(l)
+ {
+ init();
+ }
+
+ regex_constants::syntax_type syntax_type(char c)const
+ {
+ return m_char_map[static_cast<unsigned char>(c)];
+ }
+ regex_constants::escape_syntax_type escape_syntax_type(char c) const
+ {
+ return m_char_map[static_cast<unsigned char>(c)];
+ }
+
+private:
+ regex_constants::syntax_type m_char_map[1u << CHAR_BIT];
+ void init();
+};
+
+#ifdef BOOST_REGEX_BUGGY_CTYPE_FACET
+enum
+{
+ char_class_space=1<<0,
+ char_class_print=1<<1,
+ char_class_cntrl=1<<2,
+ char_class_upper=1<<3,
+ char_class_lower=1<<4,
+ char_class_alpha=1<<5,
+ char_class_digit=1<<6,
+ char_class_punct=1<<7,
+ char_class_xdigit=1<<8,
+ char_class_alnum=char_class_alpha|char_class_digit,
+ char_class_graph=char_class_alnum|char_class_punct,
+ char_class_blank=1<<9,
+ char_class_word=1<<10,
+ char_class_unicode=1<<11
+};
+
+#endif
+
+//
+// class cpp_regex_traits_implementation:
+// provides pimpl implementation for cpp_regex_traits.
+//
+template <class charT>
+class cpp_regex_traits_implementation : public cpp_regex_traits_char_layer<charT>
+{
+public:
+ typedef typename cpp_regex_traits<charT>::char_class_type char_class_type;
+ typedef typename std::ctype<charT>::mask native_mask_type;
+#ifndef BOOST_REGEX_BUGGY_CTYPE_FACET
+ BOOST_STATIC_CONSTANT(char_class_type, mask_blank = 1u << 24);
+ BOOST_STATIC_CONSTANT(char_class_type, mask_word = 1u << 25);
+ BOOST_STATIC_CONSTANT(char_class_type, mask_unicode = 1u << 26);
+#endif
+
+ typedef std::basic_string<charT> string_type;
+ typedef charT char_type;
+ //cpp_regex_traits_implementation();
+ cpp_regex_traits_implementation(const std::locale& l)
+ : cpp_regex_traits_char_layer<charT>(l)
+ {
+ init();
+ }
+ cpp_regex_traits_implementation(const cpp_regex_traits_base<charT>& l)
+ : cpp_regex_traits_char_layer<charT>(l)
+ {
+ init();
+ }
+ std::string error_string(regex_constants::error_type n) const
+ {
+ if(!m_error_strings.empty())
+ {
+ std::map<int, std::string>::const_iterator p = m_error_strings.find(n);
+ return (p == m_error_strings.end()) ? std::string(get_default_error_string(n)) : p->second;
+ }
+ return get_default_error_string(n);
+ }
+ char_class_type lookup_classname(const charT* p1, const charT* p2) const
+ {
+ char_class_type result = lookup_classname_imp(p1, p2);
+ if(result == 0)
+ {
+ string_type temp(p1, p2);
+ this->m_pctype->tolower(&*temp.begin(), &*temp.begin() + temp.size());
+ result = lookup_classname_imp(&*temp.begin(), &*temp.begin() + temp.size());
+ }
+ return result;
+ }
+ string_type lookup_collatename(const charT* p1, const charT* p2) const;
+ string_type transform_primary(const charT* p1, const charT* p2) const;
+ string_type transform(const charT* p1, const charT* p2) const;
+private:
+ std::map<int, std::string> m_error_strings; // error messages indexed by numberic ID
+ std::map<string_type, char_class_type> m_custom_class_names; // character class names
+ std::map<string_type, string_type> m_custom_collate_names; // collating element names
+ unsigned m_collate_type; // the form of the collation string
+ charT m_collate_delim; // the collation group delimiter
+ //
+ // helpers:
+ //
+ char_class_type lookup_classname_imp(const charT* p1, const charT* p2) const;
+ void init();
+#ifdef BOOST_REGEX_BUGGY_CTYPE_FACET
+public:
+ bool isctype(charT c, char_class_type m)const;
+#endif
+};
+
+#ifndef BOOST_REGEX_BUGGY_CTYPE_FACET
+#if !defined(BOOST_NO_INCLASS_MEMBER_INITIALIZATION)
+
+template <class charT>
+typename cpp_regex_traits_implementation<charT>::char_class_type const cpp_regex_traits_implementation<charT>::mask_blank;
+template <class charT>
+typename cpp_regex_traits_implementation<charT>::char_class_type const cpp_regex_traits_implementation<charT>::mask_word;
+template <class charT>
+typename cpp_regex_traits_implementation<charT>::char_class_type const cpp_regex_traits_implementation<charT>::mask_unicode;
+
+#endif
+#endif
+
+template <class charT>
+typename cpp_regex_traits_implementation<charT>::string_type
+ cpp_regex_traits_implementation<charT>::transform_primary(const charT* p1, const charT* p2) const
+{
+ //
+ // PRECONDITIONS:
+ //
+ // A bug in gcc 3.2 (and maybe other versions as well) treats
+ // p1 as a null terminated string, for efficiency reasons
+ // we work around this elsewhere, but just assert here that
+ // we adhere to gcc's (buggy) preconditions...
+ //
+ BOOST_ASSERT(*p2 == 0);
+
+ string_type result;
+ //
+ // swallowing all exceptions here is a bad idea
+ // however at least one std lib will always throw
+ // std::bad_alloc for certain arguments...
+ //
+ try{
+ //
+ // What we do here depends upon the format of the sort key returned by
+ // sort key returned by this->transform:
+ //
+ switch(m_collate_type)
+ {
+ case sort_C:
+ case sort_unknown:
+ // the best we can do is translate to lower case, then get a regular sort key:
+ {
+ result.assign(p1, p2);
+ this->m_pctype->tolower(&*result.begin(), &*result.begin() + result.size());
+ result = this->m_pcollate->transform(&*result.begin(), &*result.begin() + result.size());
+ break;
+ }
+ case sort_fixed:
+ {
+ // get a regular sort key, and then truncate it:
+ result.assign(this->m_pcollate->transform(p1, p2));
+ result.erase(this->m_collate_delim);
+ break;
+ }
+ case sort_delim:
+ // get a regular sort key, and then truncate everything after the delim:
+ result.assign(this->m_pcollate->transform(p1, p2));
+ std::size_t i;
+ for(i = 0; i < result.size(); ++i)
+ {
+ if(result[i] == m_collate_delim)
+ break;
+ }
+ result.erase(i);
+ break;
+ }
+ }catch(...){}
+ while(result.size() && (charT(0) == *result.rbegin()))
+ result.erase(result.size() - 1);
+ if(result.empty())
+ {
+ // character is ignorable at the primary level:
+ result = string_type(1, charT(0));
+ }
+ return result;
+}
+
+template <class charT>
+typename cpp_regex_traits_implementation<charT>::string_type
+ cpp_regex_traits_implementation<charT>::transform(const charT* p1, const charT* p2) const
+{
+ //
+ // PRECONDITIONS:
+ //
+ // A bug in gcc 3.2 (and maybe other versions as well) treats
+ // p1 as a null terminated string, for efficiency reasons
+ // we work around this elsewhere, but just assert here that
+ // we adhere to gcc's (buggy) preconditions...
+ //
+ BOOST_ASSERT(*p2 == 0);
+ //
+ // swallowing all exceptions here is a bad idea
+ // however at least one std lib will always throw
+ // std::bad_alloc for certain arguments...
+ //
+ string_type result;
+ try{
+ result = this->m_pcollate->transform(p1, p2);
+ //
+ // Borland's STLPort version returns a NULL-terminated
+ // string that has garbage at the end - each call to
+ // std::collate<wchar_t>::transform returns a different string!
+ // So as a workaround, we'll truncate the string at the first NULL
+ // which _seems_ to work....
+#if BOOST_WORKAROUND(__BORLANDC__, < 0x580)
+ result.erase(result.find(charT(0)));
+#else
+ //
+ // some implementations (Dinkumware) append unnecessary trailing \0's:
+ while(result.size() && (charT(0) == *result.rbegin()))
+ result.erase(result.size() - 1);
+#endif
+ BOOST_ASSERT(std::find(result.begin(), result.end(), charT(0)) == result.end());
+ }
+ catch(...)
+ {
+ }
+ return result;
+}
+
+
+template <class charT>
+typename cpp_regex_traits_implementation<charT>::string_type
+ cpp_regex_traits_implementation<charT>::lookup_collatename(const charT* p1, const charT* p2) const
+{
+ typedef typename std::map<string_type, string_type>::const_iterator iter_type;
+ if(m_custom_collate_names.size())
+ {
+ iter_type pos = m_custom_collate_names.find(string_type(p1, p2));
+ if(pos != m_custom_collate_names.end())
+ return pos->second;
+ }
+#if !defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS)\
+ && !BOOST_WORKAROUND(BOOST_MSVC, < 1300)\
+ && !BOOST_WORKAROUND(__BORLANDC__, <= 0x0551)
+ std::string name(p1, p2);
+#else
+ std::string name;
+ const charT* p0 = p1;
+ while(p0 != p2)
+ name.append(1, char(*p0++));
+#endif
+ name = lookup_default_collate_name(name);
+#if !defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS)\
+ && !BOOST_WORKAROUND(BOOST_MSVC, < 1300)\
+ && !BOOST_WORKAROUND(__BORLANDC__, <= 0x0551)
+ if(name.size())
+ return string_type(name.begin(), name.end());
+#else
+ if(name.size())
+ {
+ string_type result;
+ typedef std::string::const_iterator iter;
+ iter b = name.begin();
+ iter e = name.end();
+ while(b != e)
+ result.append(1, charT(*b++));
+ return result;
+ }
+#endif
+ if(p2 - p1 == 1)
+ return string_type(1, *p1);
+ return string_type();
+}
+
+template <class charT>
+void cpp_regex_traits_implementation<charT>::init()
+{
+#ifndef BOOST_NO_STD_MESSAGES
+#ifndef __IBMCPP__
+ typename std::messages<charT>::catalog cat = static_cast<std::messages<char>::catalog>(-1);
+#else
+ typename std::messages<charT>::catalog cat = reinterpret_cast<std::messages<char>::catalog>(-1);
+#endif
+ std::string cat_name(cpp_regex_traits<charT>::get_catalog_name());
+ if(cat_name.size())
+ {
+ cat = this->m_pmessages->open(
+ cat_name,
+ this->m_locale);
+ if((int)cat < 0)
+ {
+ std::string m("Unable to open message catalog: ");
+ std::runtime_error err(m + cat_name);
+ boost::re_detail::raise_runtime_error(err);
+ }
+ }
+ //
+ // if we have a valid catalog then load our messages:
+ //
+ if((int)cat >= 0)
+ {
+ //
+ // Error messages:
+ //
+ for(boost::regex_constants::error_type i = static_cast<boost::regex_constants::error_type>(0);
+ i <= boost::regex_constants::error_unknown;
+ i = static_cast<boost::regex_constants::error_type>(i + 1))
+ {
+ const char* p = get_default_error_string(i);
+ string_type default_message;
+ while(*p)
+ {
+ default_message.append(1, this->m_pctype->widen(*p));
+ ++p;
+ }
+ string_type s = this->m_pmessages->get(cat, 0, i+200, default_message);
+ std::string result;
+ for(std::string::size_type j = 0; j < s.size(); ++j)
+ {
+ result.append(1, this->m_pctype->narrow(s[j], 0));
+ }
+ m_error_strings[i] = result;
+ }
+ //
+ // Custom class names:
+ //
+#ifndef BOOST_REGEX_BUGGY_CTYPE_FACET
+ static const char_class_type masks[14] =
+ {
+ std::ctype<charT>::alnum,
+ std::ctype<charT>::alpha,
+ std::ctype<charT>::cntrl,
+ std::ctype<charT>::digit,
+ std::ctype<charT>::graph,
+ std::ctype<charT>::lower,
+ std::ctype<charT>::print,
+ std::ctype<charT>::punct,
+ std::ctype<charT>::space,
+ std::ctype<charT>::upper,
+ std::ctype<charT>::xdigit,
+ cpp_regex_traits_implementation<charT>::mask_blank,
+ cpp_regex_traits_implementation<charT>::mask_word,
+ cpp_regex_traits_implementation<charT>::mask_unicode,
+ };
+#else
+ static const char_class_type masks[14] =
+ {
+ ::boost::re_detail::char_class_alnum,
+ ::boost::re_detail::char_class_alpha,
+ ::boost::re_detail::char_class_cntrl,
+ ::boost::re_detail::char_class_digit,
+ ::boost::re_detail::char_class_graph,
+ ::boost::re_detail::char_class_lower,
+ ::boost::re_detail::char_class_print,
+ ::boost::re_detail::char_class_punct,
+ ::boost::re_detail::char_class_space,
+ ::boost::re_detail::char_class_upper,
+ ::boost::re_detail::char_class_xdigit,
+ ::boost::re_detail::char_class_blank,
+ ::boost::re_detail::char_class_word,
+ ::boost::re_detail::char_class_unicode,
+ };
+#endif
+ static const string_type null_string;
+ for(unsigned int j = 0; j <= 13; ++j)
+ {
+ string_type s(this->m_pmessages->get(cat, 0, j+300, null_string));
+ if(s.size())
+ this->m_custom_class_names[s] = masks[j];
+ }
+ }
+#endif
+ //
+ // get the collation format used by m_pcollate:
+ //
+ m_collate_type = re_detail::find_sort_syntax(this, &m_collate_delim);
+}
+
+template <class charT>
+typename cpp_regex_traits_implementation<charT>::char_class_type
+ cpp_regex_traits_implementation<charT>::lookup_classname_imp(const charT* p1, const charT* p2) const
+{
+#ifndef BOOST_REGEX_BUGGY_CTYPE_FACET
+ static const char_class_type masks[20] =
+ {
+ 0,
+ std::ctype<char>::alnum,
+ std::ctype<char>::alpha,
+ cpp_regex_traits_implementation<charT>::mask_blank,
+ std::ctype<char>::cntrl,
+ std::ctype<char>::digit,
+ std::ctype<char>::digit,
+ std::ctype<char>::graph,
+ std::ctype<char>::lower,
+ std::ctype<char>::lower,
+ std::ctype<char>::print,
+ std::ctype<char>::punct,
+ std::ctype<char>::space,
+ std::ctype<char>::space,
+ std::ctype<char>::upper,
+ cpp_regex_traits_implementation<charT>::mask_unicode,
+ std::ctype<char>::upper,
+ std::ctype<char>::alnum | cpp_regex_traits_implementation<charT>::mask_word,
+ std::ctype<char>::alnum | cpp_regex_traits_implementation<charT>::mask_word,
+ std::ctype<char>::xdigit,
+ };
+#else
+ static const char_class_type masks[20] =
+ {
+ 0,
+ ::boost::re_detail::char_class_alnum,
+ ::boost::re_detail::char_class_alpha,
+ ::boost::re_detail::char_class_blank,
+ ::boost::re_detail::char_class_cntrl,
+ ::boost::re_detail::char_class_digit,
+ ::boost::re_detail::char_class_digit,
+ ::boost::re_detail::char_class_graph,
+ ::boost::re_detail::char_class_lower,
+ ::boost::re_detail::char_class_lower,
+ ::boost::re_detail::char_class_print,
+ ::boost::re_detail::char_class_punct,
+ ::boost::re_detail::char_class_space,
+ ::boost::re_detail::char_class_space,
+ ::boost::re_detail::char_class_upper,
+ ::boost::re_detail::char_class_unicode,
+ ::boost::re_detail::char_class_upper,
+ ::boost::re_detail::char_class_alnum | ::boost::re_detail::char_class_word,
+ ::boost::re_detail::char_class_alnum | ::boost::re_detail::char_class_word,
+ ::boost::re_detail::char_class_xdigit,
+ };
+#endif
+ if(m_custom_class_names.size())
+ {
+ typedef typename std::map<std::basic_string<charT>, char_class_type>::const_iterator map_iter;
+ map_iter pos = m_custom_class_names.find(string_type(p1, p2));
+ if(pos != m_custom_class_names.end())
+ return pos->second;
+ }
+ std::size_t id = 1 + re_detail::get_default_class_id(p1, p2);
+ BOOST_ASSERT(id < sizeof(masks) / sizeof(masks[0]));
+ return masks[id];
+}
+
+#ifdef BOOST_REGEX_BUGGY_CTYPE_FACET
+template <class charT>
+bool cpp_regex_traits_implementation<charT>::isctype(const charT c, char_class_type mask) const
+{
+ return
+ ((mask & ::boost::re_detail::char_class_space) && (m_pctype->is(std::ctype<charT>::space, c)))
+ || ((mask & ::boost::re_detail::char_class_print) && (m_pctype->is(std::ctype<charT>::print, c)))
+ || ((mask & ::boost::re_detail::char_class_cntrl) && (m_pctype->is(std::ctype<charT>::cntrl, c)))
+ || ((mask & ::boost::re_detail::char_class_upper) && (m_pctype->is(std::ctype<charT>::upper, c)))
+ || ((mask & ::boost::re_detail::char_class_lower) && (m_pctype->is(std::ctype<charT>::lower, c)))
+ || ((mask & ::boost::re_detail::char_class_alpha) && (m_pctype->is(std::ctype<charT>::alpha, c)))
+ || ((mask & ::boost::re_detail::char_class_digit) && (m_pctype->is(std::ctype<charT>::digit, c)))
+ || ((mask & ::boost::re_detail::char_class_punct) && (m_pctype->is(std::ctype<charT>::punct, c)))
+ || ((mask & ::boost::re_detail::char_class_xdigit) && (m_pctype->is(std::ctype<charT>::xdigit, c)))
+ || ((mask & ::boost::re_detail::char_class_blank) && (m_pctype->is(std::ctype<charT>::space, c)) && !::boost::re_detail::is_separator(c))
+ || ((mask & ::boost::re_detail::char_class_word) && (c == '_'))
+ || ((mask & ::boost::re_detail::char_class_unicode) && ::boost::re_detail::is_extended(c));
+}
+#endif
+
+
+template <class charT>
+inline boost::shared_ptr<const cpp_regex_traits_implementation<charT> > create_cpp_regex_traits(const std::locale& l BOOST_APPEND_EXPLICIT_TEMPLATE_TYPE(charT))
+{
+ cpp_regex_traits_base<charT> key(l);
+ return ::boost::object_cache<cpp_regex_traits_base<charT>, cpp_regex_traits_implementation<charT> >::get(key, 5);
+}
+
+} // re_detail
+
+template <class charT>
+class cpp_regex_traits
+{
+private:
+ typedef std::ctype<charT> ctype_type;
+public:
+ typedef charT char_type;
+ typedef std::size_t size_type;
+ typedef std::basic_string<char_type> string_type;
+ typedef std::locale locale_type;
+ typedef boost::uint_least32_t char_class_type;
+
+ struct boost_extensions_tag{};
+
+ cpp_regex_traits()
+ : m_pimpl(re_detail::create_cpp_regex_traits<charT>(std::locale()))
+ { }
+ static size_type length(const char_type* p)
+ {
+ return std::char_traits<charT>::length(p);
+ }
+ regex_constants::syntax_type syntax_type(charT c)const
+ {
+ return m_pimpl->syntax_type(c);
+ }
+ regex_constants::escape_syntax_type escape_syntax_type(charT c) const
+ {
+ return m_pimpl->escape_syntax_type(c);
+ }
+ charT translate(charT c) const
+ {
+ return c;
+ }
+ charT translate_nocase(charT c) const
+ {
+ return m_pimpl->m_pctype->tolower(c);
+ }
+ charT translate(charT c, bool icase) const
+ {
+ return icase ? m_pimpl->m_pctype->tolower(c) : c;
+ }
+ charT tolower(charT c) const
+ {
+ return m_pimpl->m_pctype->tolower(c);
+ }
+ charT toupper(charT c) const
+ {
+ return m_pimpl->m_pctype->toupper(c);
+ }
+ string_type transform(const charT* p1, const charT* p2) const
+ {
+ return m_pimpl->transform(p1, p2);
+ }
+ string_type transform_primary(const charT* p1, const charT* p2) const
+ {
+ return m_pimpl->transform_primary(p1, p2);
+ }
+ char_class_type lookup_classname(const charT* p1, const charT* p2) const
+ {
+ return m_pimpl->lookup_classname(p1, p2);
+ }
+ string_type lookup_collatename(const charT* p1, const charT* p2) const
+ {
+ return m_pimpl->lookup_collatename(p1, p2);
+ }
+ bool isctype(charT c, char_class_type f) const
+ {
+#ifndef BOOST_REGEX_BUGGY_CTYPE_FACET
+ typedef typename std::ctype<charT>::mask ctype_mask;
+
+ static const ctype_mask mask_base =
+ static_cast<ctype_mask>(
+ std::ctype<charT>::alnum
+ | std::ctype<charT>::alpha
+ | std::ctype<charT>::cntrl
+ | std::ctype<charT>::digit
+ | std::ctype<charT>::graph
+ | std::ctype<charT>::lower
+ | std::ctype<charT>::print
+ | std::ctype<charT>::punct
+ | std::ctype<charT>::space
+ | std::ctype<charT>::upper
+ | std::ctype<charT>::xdigit);
+
+ if((f & mask_base)
+ && (m_pimpl->m_pctype->is(
+ static_cast<ctype_mask>(f & mask_base), c)))
+ return true;
+ else if((f & re_detail::cpp_regex_traits_implementation<charT>::mask_unicode) && re_detail::is_extended(c))
+ return true;
+ else if((f & re_detail::cpp_regex_traits_implementation<charT>::mask_word) && (c == '_'))
+ return true;
+ else if((f & re_detail::cpp_regex_traits_implementation<charT>::mask_blank)
+ && m_pimpl->m_pctype->is(std::ctype<charT>::space, c)
+ && !re_detail::is_separator(c))
+ return true;
+ return false;
+#else
+ return m_pimpl->isctype(c, f);
+#endif
+ }
+ int toi(const charT*& p1, const charT* p2, int radix)const;
+ int value(charT c, int radix)const
+ {
+ const charT* pc = &c;
+ return toi(pc, pc + 1, radix);
+ }
+ locale_type imbue(locale_type l)
+ {
+ std::locale result(getloc());
+ m_pimpl = re_detail::create_cpp_regex_traits<charT>(l);
+ return result;
+ }
+ locale_type getloc()const
+ {
+ return m_pimpl->m_locale;
+ }
+ std::string error_string(regex_constants::error_type n) const
+ {
+ return m_pimpl->error_string(n);
+ }
+
+ //
+ // extension:
+ // set the name of the message catalog in use (defaults to "boost_regex").
+ //
+ static std::string catalog_name(const std::string& name);
+ static std::string get_catalog_name();
+
+private:
+ boost::shared_ptr<const re_detail::cpp_regex_traits_implementation<charT> > m_pimpl;
+ //
+ // catalog name handler:
+ //
+ static std::string& get_catalog_name_inst();
+
+#ifdef BOOST_HAS_THREADS
+ static static_mutex& get_mutex_inst();
+#endif
+};
+
+
+template <class charT>
+int cpp_regex_traits<charT>::toi(const charT*& first, const charT* last, int radix)const
+{
+ re_detail::parser_buf<charT> sbuf; // buffer for parsing numbers.
+ std::basic_istream<charT> is(&sbuf); // stream for parsing numbers.
+
+ // we do NOT want to parse any thousands separators inside the stream:
+ last = std::find(first, last, BOOST_USE_FACET(std::numpunct<charT>, is.getloc()).thousands_sep());
+
+ sbuf.pubsetbuf(const_cast<charT*>(static_cast<const charT*>(first)), static_cast<std::streamsize>(last-first));
+ is.clear();
+ if(std::abs(radix) == 16) is >> std::hex;
+ else if(std::abs(radix) == 8) is >> std::oct;
+ else is >> std::dec;
+ int val;
+ if(is >> val)
+ {
+ first = first + ((last - first) - sbuf.in_avail());
+ return val;
+ }
+ else
+ return -1;
+}
+
+template <class charT>
+std::string cpp_regex_traits<charT>::catalog_name(const std::string& name)
+{
+#ifdef BOOST_HAS_THREADS
+ static_mutex::scoped_lock lk(get_mutex_inst());
+#endif
+ std::string result(get_catalog_name_inst());
+ get_catalog_name_inst() = name;
+ return result;
+}
+
+template <class charT>
+std::string& cpp_regex_traits<charT>::get_catalog_name_inst()
+{
+ static std::string s_name;
+ return s_name;
+}
+
+template <class charT>
+std::string cpp_regex_traits<charT>::get_catalog_name()
+{
+#ifdef BOOST_HAS_THREADS
+ static_mutex::scoped_lock lk(get_mutex_inst());
+#endif
+ std::string result(get_catalog_name_inst());
+ return result;
+}
+
+#ifdef BOOST_HAS_THREADS
+template <class charT>
+static_mutex& cpp_regex_traits<charT>::get_mutex_inst()
+{
+ static static_mutex s_mutex = BOOST_STATIC_MUTEX_INIT;
+ return s_mutex;
+}
+#endif
+
+
+} // boost
+
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+
+#endif
+
+#endif

Added: sandbox/SOC/2007/regex/named-captures/boost/regex/v4/cregex.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/boost/regex/v4/cregex.hpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,301 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE cregex.cpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Declares POSIX API functions
+ * + boost::RegEx high level wrapper.
+ */
+
+#ifndef BOOST_RE_CREGEX_HPP_INCLUDED
+#define BOOST_RE_CREGEX_HPP_INCLUDED
+
+#ifndef BOOST_REGEX_CONFIG_HPP
+#include <boost/regex/config.hpp>
+#endif
+#include <boost/regex/v4/match_flags.hpp>
+#include <boost/regex/v4/error_type.hpp>
+
+#ifdef __cplusplus
+#include <cstddef>
+#else
+#include <stddef.h>
+#endif
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+
+/* include these defs only for POSIX compatablity */
+#ifdef __cplusplus
+namespace boost{
+extern "C" {
+#endif
+
+#if defined(__cplusplus) && !defined(BOOST_NO_STDC_NAMESPACE)
+typedef std::ptrdiff_t regoff_t;
+typedef std::size_t regsize_t;
+#else
+typedef ptrdiff_t regoff_t;
+typedef size_t regsize_t;
+#endif
+
+typedef struct
+{
+ unsigned int re_magic;
+#ifdef __cplusplus
+ std::size_t re_nsub; /* number of parenthesized subexpressions */
+#else
+ size_t re_nsub;
+#endif
+ const char* re_endp; /* end pointer for REG_PEND */
+ void* guts; /* none of your business :-) */
+ match_flag_type eflags; /* none of your business :-) */
+} regex_tA;
+
+#ifndef BOOST_NO_WREGEX
+typedef struct
+{
+ unsigned int re_magic;
+#ifdef __cplusplus
+ std::size_t re_nsub; /* number of parenthesized subexpressions */
+#else
+ size_t re_nsub;
+#endif
+ const wchar_t* re_endp; /* end pointer for REG_PEND */
+ void* guts; /* none of your business :-) */
+ match_flag_type eflags; /* none of your business :-) */
+} regex_tW;
+#endif
+
+typedef struct
+{
+ regoff_t rm_so; /* start of match */
+ regoff_t rm_eo; /* end of match */
+} regmatch_t;
+
+/* regcomp() flags */
+typedef enum{
+ REG_BASIC = 0000,
+ REG_EXTENDED = 0001,
+ REG_ICASE = 0002,
+ REG_NOSUB = 0004,
+ REG_NEWLINE = 0010,
+ REG_NOSPEC = 0020,
+ REG_PEND = 0040,
+ REG_DUMP = 0200,
+ REG_NOCOLLATE = 0400,
+ REG_ESCAPE_IN_LISTS = 01000,
+ REG_NEWLINE_ALT = 02000,
+ REG_PERLEX = 04000,
+
+ REG_PERL = REG_EXTENDED | REG_NOCOLLATE | REG_ESCAPE_IN_LISTS | REG_PERLEX,
+ REG_AWK = REG_EXTENDED | REG_ESCAPE_IN_LISTS,
+ REG_GREP = REG_BASIC | REG_NEWLINE_ALT,
+ REG_EGREP = REG_EXTENDED | REG_NEWLINE_ALT,
+
+ REG_ASSERT = 15,
+ REG_INVARG = 16,
+ REG_ATOI = 255, /* convert name to number (!) */
+ REG_ITOA = 0400 /* convert number to name (!) */
+} reg_comp_flags;
+
+/* regexec() flags */
+typedef enum{
+ REG_NOTBOL = 00001,
+ REG_NOTEOL = 00002,
+ REG_STARTEND = 00004
+} reg_exec_flags;
+
+//
+// POSIX error codes:
+//
+typedef unsigned reg_error_t;
+typedef reg_error_t reg_errcode_t; // backwards compatibility
+
+static const reg_error_t REG_NOERROR = 0; /* Success. */
+static const reg_error_t REG_NOMATCH = 1; /* Didn't find a match (for regexec). */
+
+ /* POSIX regcomp return error codes. (In the order listed in the
+ standard.) */
+static const reg_error_t REG_BADPAT = 2; /* Invalid pattern. */
+static const reg_error_t REG_ECOLLATE = 3; /* Undefined collating element. */
+static const reg_error_t REG_ECTYPE = 4; /* Invalid character class name. */
+static const reg_error_t REG_EESCAPE = 5; /* Trailing backslash. */
+static const reg_error_t REG_ESUBREG = 6; /* Invalid back reference. */
+static const reg_error_t REG_EBRACK = 7; /* Unmatched left bracket. */
+static const reg_error_t REG_EPAREN = 8; /* Parenthesis imbalance. */
+static const reg_error_t REG_EBRACE = 9; /* Unmatched \{. */
+static const reg_error_t REG_BADBR = 10; /* Invalid contents of \{\}. */
+static const reg_error_t REG_ERANGE = 11; /* Invalid range end. */
+static const reg_error_t REG_ESPACE = 12; /* Ran out of memory. */
+static const reg_error_t REG_BADRPT = 13; /* No preceding re for repetition op. */
+static const reg_error_t REG_EEND = 14; /* unexpected end of expression */
+static const reg_error_t REG_ESIZE = 15; /* expression too big */
+static const reg_error_t REG_ERPAREN = 8; /* = REG_EPAREN : unmatched right parenthesis */
+static const reg_error_t REG_EMPTY = 17; /* empty expression */
+static const reg_error_t REG_E_MEMORY = 15; /* = REG_ESIZE : out of memory */
+static const reg_error_t REG_ECOMPLEXITY = 18; /* complexity too high */
+static const reg_error_t REG_ESTACK = 19; /* out of stack space */
+static const reg_error_t REG_E_UNKNOWN = 20; /* unknown error */
+static const reg_error_t REG_ENOSYS = 20; /* = REG_E_UNKNOWN : Reserved. */
+
+BOOST_REGEX_DECL int BOOST_REGEX_CCALL regcompA(regex_tA*, const char*, int);
+BOOST_REGEX_DECL regsize_t BOOST_REGEX_CCALL regerrorA(int, const regex_tA*, char*, regsize_t);
+BOOST_REGEX_DECL int BOOST_REGEX_CCALL regexecA(const regex_tA*, const char*, regsize_t, regmatch_t*, int);
+BOOST_REGEX_DECL void BOOST_REGEX_CCALL regfreeA(regex_tA*);
+
+#ifndef BOOST_NO_WREGEX
+BOOST_REGEX_DECL int BOOST_REGEX_CCALL regcompW(regex_tW*, const wchar_t*, int);
+BOOST_REGEX_DECL regsize_t BOOST_REGEX_CCALL regerrorW(int, const regex_tW*, wchar_t*, regsize_t);
+BOOST_REGEX_DECL int BOOST_REGEX_CCALL regexecW(const regex_tW*, const wchar_t*, regsize_t, regmatch_t*, int);
+BOOST_REGEX_DECL void BOOST_REGEX_CCALL regfreeW(regex_tW*);
+#endif
+
+#ifdef UNICODE
+#define regcomp regcompW
+#define regerror regerrorW
+#define regexec regexecW
+#define regfree regfreeW
+#define regex_t regex_tW
+#else
+#define regcomp regcompA
+#define regerror regerrorA
+#define regexec regexecA
+#define regfree regfreeA
+#define regex_t regex_tA
+#endif
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+
+#ifdef __cplusplus
+} // extern "C"
+} // namespace
+#endif
+
+//
+// C++ high level wrapper goes here:
+//
+#if defined(__cplusplus)
+#include <string>
+#include <vector>
+namespace boost{
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+
+class RegEx;
+
+namespace re_detail{
+
+class RegExData;
+struct pred1;
+struct pred2;
+struct pred3;
+struct pred4;
+
+} // namespace re_detail
+
+#if (defined(BOOST_MSVC) || defined(__BORLANDC__)) && !defined(BOOST_DISABLE_WIN32)
+typedef bool (__cdecl *GrepCallback)(const RegEx& expression);
+typedef bool (__cdecl *GrepFileCallback)(const char* file, const RegEx& expression);
+typedef bool (__cdecl *FindFilesCallback)(const char* file);
+#else
+typedef bool (*GrepCallback)(const RegEx& expression);
+typedef bool (*GrepFileCallback)(const char* file, const RegEx& expression);
+typedef bool (*FindFilesCallback)(const char* file);
+#endif
+
+class BOOST_REGEX_DECL RegEx
+{
+private:
+ re_detail::RegExData* pdata;
+public:
+ RegEx();
+ RegEx(const RegEx& o);
+ ~RegEx();
+ explicit RegEx(const char* c, bool icase = false);
+ explicit RegEx(const std::string& s, bool icase = false);
+ RegEx& operator=(const RegEx& o);
+ RegEx& operator=(const char* p);
+ RegEx& operator=(const std::string& s){ return this->operator=(s.c_str()); }
+ unsigned int SetExpression(const char* p, bool icase = false);
+ unsigned int SetExpression(const std::string& s, bool icase = false){ return SetExpression(s.c_str(), icase); }
+ std::string Expression()const;
+ unsigned int error_code()const;
+ //
+ // now matching operators:
+ //
+ bool Match(const char* p, match_flag_type flags = match_default);
+ bool Match(const std::string& s, match_flag_type flags = match_default) { return Match(s.c_str(), flags); }
+ bool Search(const char* p, match_flag_type flags = match_default);
+ bool Search(const std::string& s, match_flag_type flags = match_default) { return Search(s.c_str(), flags); }
+ unsigned int Grep(GrepCallback cb, const char* p, match_flag_type flags = match_default);
+ unsigned int Grep(GrepCallback cb, const std::string& s, match_flag_type flags = match_default) { return Grep(cb, s.c_str(), flags); }
+ unsigned int Grep(std::vector<std::string>& v, const char* p, match_flag_type flags = match_default);
+ unsigned int Grep(std::vector<std::string>& v, const std::string& s, match_flag_type flags = match_default) { return Grep(v, s.c_str(), flags); }
+ unsigned int Grep(std::vector<std::size_t>& v, const char* p, match_flag_type flags = match_default);
+ unsigned int Grep(std::vector<std::size_t>& v, const std::string& s, match_flag_type flags = match_default) { return Grep(v, s.c_str(), flags); }
+#ifndef BOOST_REGEX_NO_FILEITER
+ unsigned int GrepFiles(GrepFileCallback cb, const char* files, bool recurse = false, match_flag_type flags = match_default);
+ unsigned int GrepFiles(GrepFileCallback cb, const std::string& files, bool recurse = false, match_flag_type flags = match_default) { return GrepFiles(cb, files.c_str(), recurse, flags); }
+ unsigned int FindFiles(FindFilesCallback cb, const char* files, bool recurse = false, match_flag_type flags = match_default);
+ unsigned int FindFiles(FindFilesCallback cb, const std::string& files, bool recurse = false, match_flag_type flags = match_default) { return FindFiles(cb, files.c_str(), recurse, flags); }
+#endif
+
+ std::string Merge(const std::string& in, const std::string& fmt,
+ bool copy = true, match_flag_type flags = match_default);
+ std::string Merge(const char* in, const char* fmt,
+ bool copy = true, match_flag_type flags = match_default);
+
+ std::size_t Split(std::vector<std::string>& v, std::string& s, match_flag_type flags = match_default, unsigned max_count = ~0);
+ //
+ // now operators for returning what matched in more detail:
+ //
+ std::size_t Position(int i = 0)const;
+ std::size_t Length(int i = 0)const;
+ bool Matched(int i = 0)const;
+ std::size_t Marks()const;
+ std::string What(int i = 0)const;
+ std::string operator[](int i)const { return What(i); }
+
+ static const std::size_t npos;
+
+ friend struct re_detail::pred1;
+ friend struct re_detail::pred2;
+ friend struct re_detail::pred3;
+ friend struct re_detail::pred4;
+};
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+
+} // namespace boost
+
+#endif
+
+#endif // include guard
+
+
+
+
+
+
+
+
+
+

Added: sandbox/SOC/2007/regex/named-captures/boost/regex/v4/error_type.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/boost/regex/v4/error_type.hpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,58 @@
+/*
+ *
+ * Copyright (c) 2003-2005
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE error_type.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Declares regular expression error type enumerator.
+ */
+
+#ifndef BOOST_REGEX_ERROR_TYPE_HPP
+#define BOOST_REGEX_ERROR_TYPE_HPP
+
+#ifdef __cplusplus
+namespace boost{
+#endif
+
+#ifdef __cplusplus
+namespace regex_constants{
+
+enum error_type{
+
+ error_ok = 0, // not used
+ error_no_match = 1, // not used
+ error_bad_pattern = 2,
+ error_collate = 3,
+ error_ctype = 4,
+ error_escape = 5,
+ error_backref = 6,
+ error_brack = 7,
+ error_paren = 8,
+ error_brace = 9,
+ error_badbrace = 10,
+ error_range = 11,
+ error_space = 12,
+ error_badrepeat = 13,
+ error_end = 14, // not used
+ error_size = 15,
+ error_right_paren = 16, // not used
+ error_empty = 17,
+ error_complexity = 18,
+ error_stack = 19,
+ error_unknown = 20
+};
+
+}
+}
+#endif // __cplusplus
+
+#endif

Added: sandbox/SOC/2007/regex/named-captures/boost/regex/v4/fileiter.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/boost/regex/v4/fileiter.hpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,449 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE fileiter.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Declares various platform independent file and
+ * directory iterators, plus binary file input in
+ * the form of class map_file.
+ */
+
+#ifndef BOOST_RE_FILEITER_HPP_INCLUDED
+#define BOOST_RE_FILEITER_HPP_INCLUDED
+
+#ifndef BOOST_REGEX_CONFIG_HPP
+#include <boost/regex/config.hpp>
+#endif
+#include <boost/assert.hpp>
+
+#ifndef BOOST_REGEX_NO_FILEITER
+
+#if (defined(__CYGWIN__) || defined(__CYGWIN32__)) && !defined(BOOST_REGEX_NO_W32)
+#error "Sorry, can't mix <windows.h> with STL code and gcc compiler: if you ran configure, try again with configure --disable-ms-windows"
+#define BOOST_REGEX_FI_WIN32_MAP
+#define BOOST_REGEX_FI_POSIX_DIR
+#elif (defined(__WIN32__) || defined(_WIN32) || defined(WIN32)) && !defined(BOOST_REGEX_NO_W32)
+#define BOOST_REGEX_FI_WIN32_MAP
+#define BOOST_REGEX_FI_WIN32_DIR
+#else
+#define BOOST_REGEX_FI_POSIX_MAP
+#define BOOST_REGEX_FI_POSIX_DIR
+#endif
+
+#if defined(BOOST_REGEX_FI_WIN32_MAP)||defined(BOOST_REGEX_FI_WIN32_DIR)
+#include <windows.h>
+#endif
+
+#if defined(BOOST_REGEX_FI_WIN32_DIR)
+
+namespace boost{
+ namespace re_detail{
+
+typedef WIN32_FIND_DATAA _fi_find_data;
+typedef HANDLE _fi_find_handle;
+
+ } // namespace re_detail
+
+} // namespace boost
+
+#define _fi_invalid_handle INVALID_HANDLE_VALUE
+#define _fi_dir FILE_ATTRIBUTE_DIRECTORY
+
+#elif defined(BOOST_REGEX_FI_POSIX_DIR)
+
+#include <cstddef>
+#include <cstdio>
+#include <cctype>
+#include <iterator>
+#include <list>
+#include <cassert>
+#include <dirent.h>
+
+#if defined(__SUNPRO_CC)
+using std::list;
+#endif
+
+#ifndef MAX_PATH
+#define MAX_PATH 256
+#endif
+
+namespace boost{
+ namespace re_detail{
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+
+struct _fi_find_data
+{
+ unsigned dwFileAttributes;
+ char cFileName[MAX_PATH];
+};
+
+struct _fi_priv_data;
+
+typedef _fi_priv_data* _fi_find_handle;
+#define _fi_invalid_handle 0
+#define _fi_dir 1
+
+_fi_find_handle _fi_FindFirstFile(const char* lpFileName, _fi_find_data* lpFindFileData);
+bool _fi_FindNextFile(_fi_find_handle hFindFile, _fi_find_data* lpFindFileData);
+bool _fi_FindClose(_fi_find_handle hFindFile);
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+
+ } // namespace re_detail
+} // namespace boost
+
+#ifdef FindFirstFile
+ #undef FindFirstFile
+#endif
+#ifdef FindNextFile
+ #undef FindNextFile
+#endif
+#ifdef FindClose
+ #undef FindClose
+#endif
+
+#define FindFirstFileA _fi_FindFirstFile
+#define FindNextFileA _fi_FindNextFile
+#define FindClose _fi_FindClose
+
+#endif
+
+namespace boost{
+ namespace re_detail{
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+
+#ifdef BOOST_REGEX_FI_WIN32_MAP // win32 mapfile
+
+class BOOST_REGEX_DECL mapfile
+{
+ HANDLE hfile;
+ HANDLE hmap;
+ const char* _first;
+ const char* _last;
+public:
+
+ typedef const char* iterator;
+
+ mapfile(){ hfile = hmap = 0; _first = _last = 0; }
+ mapfile(const char* file){ hfile = hmap = 0; _first = _last = 0; open(file); }
+ ~mapfile(){ close(); }
+ void open(const char* file);
+ void close();
+ const char* begin(){ return _first; }
+ const char* end(){ return _last; }
+ size_t size(){ return _last - _first; }
+ bool valid(){ return (hfile != 0) && (hfile != INVALID_HANDLE_VALUE); }
+};
+
+
+#else
+
+class BOOST_REGEX_DECL mapfile_iterator;
+
+class BOOST_REGEX_DECL mapfile
+{
+ typedef char* pointer;
+ std::FILE* hfile;
+ long int _size;
+ pointer* _first;
+ pointer* _last;
+ mutable std::list<pointer*> condemed;
+ enum sizes
+ {
+ buf_size = 4096
+ };
+ void lock(pointer* node)const;
+ void unlock(pointer* node)const;
+public:
+
+ typedef mapfile_iterator iterator;
+
+ mapfile(){ hfile = 0; _size = 0; _first = _last = 0; }
+ mapfile(const char* file){ hfile = 0; _size = 0; _first = _last = 0; open(file); }
+ ~mapfile(){ close(); }
+ void open(const char* file);
+ void close();
+ iterator begin()const;
+ iterator end()const;
+ unsigned long size()const{ return _size; }
+ bool valid()const{ return hfile != 0; }
+ friend class mapfile_iterator;
+};
+
+class BOOST_REGEX_DECL mapfile_iterator
+#if !defined(BOOST_NO_STD_ITERATOR) || defined(BOOST_MSVC_STD_ITERATOR)
+: public std::iterator<std::random_access_iterator_tag, char>
+#endif
+{
+ typedef mapfile::pointer internal_pointer;
+ internal_pointer* node;
+ const mapfile* file;
+ unsigned long offset;
+ long position()const
+ {
+ return file ? ((node - file->_first) * mapfile::buf_size + offset) : 0;
+ }
+ void position(long pos)
+ {
+ if(file)
+ {
+ node = file->_first + (pos / mapfile::buf_size);
+ offset = pos % mapfile::buf_size;
+ }
+ }
+public:
+ typedef std::ptrdiff_t difference_type;
+ typedef char value_type;
+ typedef const char* pointer;
+ typedef const char& reference;
+ typedef std::random_access_iterator_tag iterator_category;
+
+ mapfile_iterator() { node = 0; file = 0; offset = 0; }
+ mapfile_iterator(const mapfile* f, long arg_position)
+ {
+ file = f;
+ node = f->_first + arg_position / mapfile::buf_size;
+ offset = arg_position % mapfile::buf_size;
+ if(file)
+ file->lock(node);
+ }
+ mapfile_iterator(const mapfile_iterator& i)
+ {
+ file = i.file;
+ node = i.node;
+ offset = i.offset;
+ if(file)
+ file->lock(node);
+ }
+ ~mapfile_iterator()
+ {
+ if(file && node)
+ file->unlock(node);
+ }
+ mapfile_iterator& operator = (const mapfile_iterator& i);
+ char operator* ()const
+ {
+ BOOST_ASSERT(node >= file->_first);
+ BOOST_ASSERT(node < file->_last);
+ return file ? *(*node + sizeof(int) + offset) : char(0);
+ }
+ char operator[] (long off)const
+ {
+ mapfile_iterator tmp(*this);
+ tmp += off;
+ return *tmp;
+ }
+ mapfile_iterator& operator++ ();
+ mapfile_iterator operator++ (int);
+ mapfile_iterator& operator-- ();
+ mapfile_iterator operator-- (int);
+
+ mapfile_iterator& operator += (long off)
+ {
+ position(position() + off);
+ return *this;
+ }
+ mapfile_iterator& operator -= (long off)
+ {
+ position(position() - off);
+ return *this;
+ }
+
+ friend inline bool operator==(const mapfile_iterator& i, const mapfile_iterator& j)
+ {
+ return (i.file == j.file) && (i.node == j.node) && (i.offset == j.offset);
+ }
+
+ friend inline bool operator!=(const mapfile_iterator& i, const mapfile_iterator& j)
+ {
+ return !(i == j);
+ }
+
+ friend inline bool operator<(const mapfile_iterator& i, const mapfile_iterator& j)
+ {
+ return i.position() < j.position();
+ }
+ friend inline bool operator>(const mapfile_iterator& i, const mapfile_iterator& j)
+ {
+ return i.position() > j.position();
+ }
+ friend inline bool operator<=(const mapfile_iterator& i, const mapfile_iterator& j)
+ {
+ return i.position() <= j.position();
+ }
+ friend inline bool operator>=(const mapfile_iterator& i, const mapfile_iterator& j)
+ {
+ return i.position() >= j.position();
+ }
+
+ friend mapfile_iterator operator + (const mapfile_iterator& i, long off);
+ friend mapfile_iterator operator + (long off, const mapfile_iterator& i)
+ {
+ mapfile_iterator tmp(i);
+ return tmp += off;
+ }
+ friend mapfile_iterator operator - (const mapfile_iterator& i, long off);
+ friend inline long operator - (const mapfile_iterator& i, const mapfile_iterator& j)
+ {
+ return i.position() - j.position();
+ }
+};
+
+#endif
+
+// _fi_sep determines the directory separator, either '\\' or '/'
+BOOST_REGEX_DECL extern const char* _fi_sep;
+
+struct file_iterator_ref
+{
+ _fi_find_handle hf;
+ _fi_find_data _data;
+ long count;
+};
+
+
+class BOOST_REGEX_DECL file_iterator
+{
+ char* _root;
+ char* _path;
+ char* ptr;
+ file_iterator_ref* ref;
+
+public:
+ typedef std::ptrdiff_t difference_type;
+ typedef const char* value_type;
+ typedef const char** pointer;
+ typedef const char*& reference;
+ typedef std::input_iterator_tag iterator_category;
+
+ file_iterator();
+ file_iterator(const char* wild);
+ ~file_iterator();
+ file_iterator(const file_iterator&);
+ file_iterator& operator=(const file_iterator&);
+ const char* root()const { return _root; }
+ const char* path()const { return _path; }
+ const char* name()const { return ptr; }
+ _fi_find_data* data() { return &(ref->_data); }
+ void next();
+ file_iterator& operator++() { next(); return *this; }
+ file_iterator operator++(int);
+ const char* operator*() { return path(); }
+
+ friend inline bool operator == (const file_iterator& f1, const file_iterator& f2)
+ {
+ return ((f1.ref->hf == _fi_invalid_handle) && (f2.ref->hf == _fi_invalid_handle));
+ }
+
+ friend inline bool operator != (const file_iterator& f1, const file_iterator& f2)
+ {
+ return !(f1 == f2);
+ }
+
+};
+
+// dwa 9/13/00 - suppress unused parameter warning
+inline bool operator < (const file_iterator&, const file_iterator&)
+{
+ return false;
+}
+
+
+class BOOST_REGEX_DECL directory_iterator
+{
+ char* _root;
+ char* _path;
+ char* ptr;
+ file_iterator_ref* ref;
+
+public:
+ typedef std::ptrdiff_t difference_type;
+ typedef const char* value_type;
+ typedef const char** pointer;
+ typedef const char*& reference;
+ typedef std::input_iterator_tag iterator_category;
+
+ directory_iterator();
+ directory_iterator(const char* wild);
+ ~directory_iterator();
+ directory_iterator(const directory_iterator& other);
+ directory_iterator& operator=(const directory_iterator& other);
+
+ const char* root()const { return _root; }
+ const char* path()const { return _path; }
+ const char* name()const { return ptr; }
+ _fi_find_data* data() { return &(ref->_data); }
+ void next();
+ directory_iterator& operator++() { next(); return *this; }
+ directory_iterator operator++(int);
+ const char* operator*() { return path(); }
+
+ static const char* separator() { return _fi_sep; }
+
+ friend inline bool operator == (const directory_iterator& f1, const directory_iterator& f2)
+ {
+ return ((f1.ref->hf == _fi_invalid_handle) && (f2.ref->hf == _fi_invalid_handle));
+ }
+
+
+ friend inline bool operator != (const directory_iterator& f1, const directory_iterator& f2)
+ {
+ return !(f1 == f2);
+ }
+
+ };
+
+inline bool operator < (const directory_iterator&, const directory_iterator&)
+{
+ return false;
+}
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+
+
+} // namespace re_detail
+using boost::re_detail::directory_iterator;
+using boost::re_detail::file_iterator;
+using boost::re_detail::mapfile;
+} // namespace boost
+
+#endif // BOOST_REGEX_NO_FILEITER
+#endif // BOOST_RE_FILEITER_HPP
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

Added: sandbox/SOC/2007/regex/named-captures/boost/regex/v4/instances.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/boost/regex/v4/instances.hpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,206 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE instances.cpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Defines those template instances that are placed in the
+ * library rather than in the users object files.
+ */
+
+//
+// note no include guard, we may include this multiple times:
+//
+#ifndef BOOST_REGEX_NO_EXTERNAL_TEMPLATES
+
+namespace boost{
+
+//
+// this header can be included multiple times, each time with
+// a different character type, BOOST_REGEX_CHAR_T must be defined
+// first:
+//
+#ifndef BOOST_REGEX_CHAR_T
+# error "BOOST_REGEX_CHAR_T not defined"
+#endif
+
+#ifndef BOOST_REGEX_TRAITS_T
+# define BOOST_REGEX_TRAITS_T , boost::regex_traits<BOOST_REGEX_CHAR_T >
+#endif
+
+//
+// what follows is compiler specific:
+//
+
+#if defined(__BORLANDC__) && (__BORLANDC__ < 0x600)
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+
+# ifndef BOOST_REGEX_INSTANTIATE
+# pragma option push -Jgx
+# endif
+
+template class BOOST_REGEX_DECL basic_regex< BOOST_REGEX_CHAR_T BOOST_REGEX_TRAITS_T >;
+template class BOOST_REGEX_DECL match_results< const BOOST_REGEX_CHAR_T* >;
+#ifndef BOOST_NO_STD_ALLOCATOR
+template class BOOST_REGEX_DECL ::boost::re_detail::perl_matcher<BOOST_REGEX_CHAR_T const *, match_results< const BOOST_REGEX_CHAR_T* >::allocator_type BOOST_REGEX_TRAITS_T >;
+#endif
+
+# ifndef BOOST_REGEX_INSTANTIATE
+# pragma option pop
+# endif
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+
+#elif defined(BOOST_MSVC) || defined(__ICL)
+
+# ifndef BOOST_REGEX_INSTANTIATE
+# ifdef __GNUC__
+# define template __extension__ extern template
+# else
+# define template extern template
+# endif
+# endif
+
+# ifdef BOOST_MSVC
+# pragma warning(push)
+# pragma warning(disable : 4251 4231 4660)
+# endif
+
+template class BOOST_REGEX_DECL basic_regex< BOOST_REGEX_CHAR_T BOOST_REGEX_TRAITS_T >;
+
+#if !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+template class BOOST_REGEX_DECL match_results< const BOOST_REGEX_CHAR_T* >;
+#endif
+#ifndef BOOST_NO_STD_ALLOCATOR
+template class BOOST_REGEX_DECL ::boost::re_detail::perl_matcher<BOOST_REGEX_CHAR_T const *, match_results< const BOOST_REGEX_CHAR_T* >::allocator_type BOOST_REGEX_TRAITS_T >;
+#endif
+#if !(defined(BOOST_DINKUMWARE_STDLIB) && (BOOST_DINKUMWARE_STDLIB <= 1))\
+ && !(defined(BOOST_INTEL_CXX_VERSION) && (BOOST_INTEL_CXX_VERSION <= 800))\
+ && !(defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION))\
+ && !defined(BOOST_REGEX_ICU_INSTANCES)
+#if !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+template class BOOST_REGEX_DECL match_results< std::basic_string<BOOST_REGEX_CHAR_T>::const_iterator >;
+#endif
+#ifndef BOOST_NO_STD_ALLOCATOR
+template class BOOST_REGEX_DECL ::boost::re_detail::perl_matcher< std::basic_string<BOOST_REGEX_CHAR_T>::const_iterator, match_results< std::basic_string<BOOST_REGEX_CHAR_T>::const_iterator >::allocator_type, boost::regex_traits<BOOST_REGEX_CHAR_T > >;
+#endif
+#endif
+
+
+# ifdef BOOST_MSVC
+# pragma warning(pop)
+# endif
+
+# ifdef template
+# undef template
+# endif
+
+#elif (defined(__GNUC__) && (__GNUC__ >= 3))
+
+# ifndef BOOST_REGEX_INSTANTIATE
+# define template __extension__ extern template
+# endif
+
+#if !defined(BOOST_NO_STD_LOCALE) && !defined(BOOST_REGEX_ICU_INSTANCES)
+namespace re_detail{
+template BOOST_REGEX_DECL
+std::locale cpp_regex_traits_base<BOOST_REGEX_CHAR_T>::imbue(const std::locale& l);
+
+template BOOST_REGEX_DECL
+cpp_regex_traits_implementation<BOOST_REGEX_CHAR_T>::string_type
+ cpp_regex_traits_implementation<BOOST_REGEX_CHAR_T>::transform_primary(const BOOST_REGEX_CHAR_T* p1, const BOOST_REGEX_CHAR_T* p2) const;
+template BOOST_REGEX_DECL
+cpp_regex_traits_implementation<BOOST_REGEX_CHAR_T>::string_type
+ cpp_regex_traits_implementation<BOOST_REGEX_CHAR_T>::transform(const BOOST_REGEX_CHAR_T* p1, const BOOST_REGEX_CHAR_T* p2) const;
+template BOOST_REGEX_DECL
+cpp_regex_traits_implementation<BOOST_REGEX_CHAR_T>::string_type
+ cpp_regex_traits_implementation<BOOST_REGEX_CHAR_T>::lookup_collatename(const BOOST_REGEX_CHAR_T* p1, const BOOST_REGEX_CHAR_T* p2) const;
+template BOOST_REGEX_DECL
+void cpp_regex_traits_implementation<BOOST_REGEX_CHAR_T>::init();
+template BOOST_REGEX_DECL
+cpp_regex_traits_implementation<BOOST_REGEX_CHAR_T>::char_class_type
+ cpp_regex_traits_implementation<BOOST_REGEX_CHAR_T>::lookup_classname_imp(const BOOST_REGEX_CHAR_T* p1, const BOOST_REGEX_CHAR_T* p2) const;
+#ifdef BOOST_REGEX_BUGGY_CTYPE_FACET
+template BOOST_REGEX_DECL
+bool cpp_regex_traits_implementation<BOOST_REGEX_CHAR_T>::isctype(const BOOST_REGEX_CHAR_T c, char_class_type mask) const;
+#endif
+} // namespace
+template BOOST_REGEX_DECL
+int cpp_regex_traits<BOOST_REGEX_CHAR_T>::toi(const BOOST_REGEX_CHAR_T*& first, const BOOST_REGEX_CHAR_T* last, int radix)const;
+template BOOST_REGEX_DECL
+std::string cpp_regex_traits<BOOST_REGEX_CHAR_T>::catalog_name(const std::string& name);
+template BOOST_REGEX_DECL
+std::string& cpp_regex_traits<BOOST_REGEX_CHAR_T>::get_catalog_name_inst();
+template BOOST_REGEX_DECL
+std::string cpp_regex_traits<BOOST_REGEX_CHAR_T>::get_catalog_name();
+#ifdef BOOST_HAS_THREADS
+template BOOST_REGEX_DECL
+static_mutex& cpp_regex_traits<BOOST_REGEX_CHAR_T>::get_mutex_inst();
+#endif
+#endif
+
+template BOOST_REGEX_DECL basic_regex<BOOST_REGEX_CHAR_T BOOST_REGEX_TRAITS_T >&
+ basic_regex<BOOST_REGEX_CHAR_T BOOST_REGEX_TRAITS_T >::do_assign(
+ const BOOST_REGEX_CHAR_T* p1,
+ const BOOST_REGEX_CHAR_T* p2,
+ flag_type f);
+template BOOST_REGEX_DECL basic_regex<BOOST_REGEX_CHAR_T BOOST_REGEX_TRAITS_T >::locale_type BOOST_REGEX_CALL
+ basic_regex<BOOST_REGEX_CHAR_T BOOST_REGEX_TRAITS_T >::imbue(locale_type l);
+
+template BOOST_REGEX_DECL void BOOST_REGEX_CALL
+ match_results<const BOOST_REGEX_CHAR_T*>::maybe_assign(
+ const match_results<const BOOST_REGEX_CHAR_T*>& m);
+
+namespace re_detail{
+template BOOST_REGEX_DECL void perl_matcher<BOOST_REGEX_CHAR_T const *, match_results< const BOOST_REGEX_CHAR_T* >::allocator_type BOOST_REGEX_TRAITS_T >::construct_init(
+ const basic_regex<BOOST_REGEX_CHAR_T BOOST_REGEX_TRAITS_T >& e, match_flag_type f);
+template BOOST_REGEX_DECL bool perl_matcher<BOOST_REGEX_CHAR_T const *, match_results< const BOOST_REGEX_CHAR_T* >::allocator_type BOOST_REGEX_TRAITS_T >::match();
+template BOOST_REGEX_DECL bool perl_matcher<BOOST_REGEX_CHAR_T const *, match_results< const BOOST_REGEX_CHAR_T* >::allocator_type BOOST_REGEX_TRAITS_T >::find();
+} // namespace
+
+#if (defined(__GLIBCPP__) || defined(__GLIBCXX__)) \
+ && !defined(BOOST_REGEX_ICU_INSTANCES)\
+ && !defined(__SGI_STL_PORT)\
+ && !defined(_STLPORT_VERSION)
+// std:basic_string<>::const_iterator instances as well:
+template BOOST_REGEX_DECL void BOOST_REGEX_CALL
+ match_results<std::basic_string<BOOST_REGEX_CHAR_T>::const_iterator>::maybe_assign(
+ const match_results<std::basic_string<BOOST_REGEX_CHAR_T>::const_iterator>& m);
+
+namespace re_detail{
+template BOOST_REGEX_DECL void perl_matcher<std::basic_string<BOOST_REGEX_CHAR_T>::const_iterator, match_results< std::basic_string<BOOST_REGEX_CHAR_T>::const_iterator >::allocator_type, boost::regex_traits<BOOST_REGEX_CHAR_T > >::construct_init(
+ const basic_regex<BOOST_REGEX_CHAR_T>& e, match_flag_type f);
+template BOOST_REGEX_DECL bool perl_matcher<std::basic_string<BOOST_REGEX_CHAR_T>::const_iterator, match_results< std::basic_string<BOOST_REGEX_CHAR_T>::const_iterator >::allocator_type, boost::regex_traits<BOOST_REGEX_CHAR_T > >::match();
+template BOOST_REGEX_DECL bool perl_matcher<std::basic_string<BOOST_REGEX_CHAR_T>::const_iterator, match_results< std::basic_string<BOOST_REGEX_CHAR_T>::const_iterator >::allocator_type, boost::regex_traits<BOOST_REGEX_CHAR_T > >::find();
+} // namespace
+#endif
+
+# ifdef template
+# undef template
+# endif
+
+
+#endif
+
+} // namespace boost
+
+#endif // BOOST_REGEX_NO_EXTERNAL_TEMPLATES
+
+
+
+
+

Added: sandbox/SOC/2007/regex/named-captures/boost/regex/v4/iterator_category.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/boost/regex/v4/iterator_category.hpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,87 @@
+/*
+ *
+ * Copyright (c) 2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE regex_match.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Iterator traits for selecting an iterator type as
+ * an integral constant expression.
+ */
+
+
+#ifndef BOOST_REGEX_ITERATOR_CATEGORY_HPP
+#define BOOST_REGEX_ITERATOR_CATEGORY_HPP
+
+#include <iterator>
+#include <boost/type_traits/is_convertible.hpp>
+#include <boost/type_traits/is_pointer.hpp>
+
+namespace boost{
+namespace detail{
+
+template <class I>
+struct is_random_imp
+{
+private:
+ typedef typename std::iterator_traits<I>::iterator_category cat;
+public:
+ BOOST_STATIC_CONSTANT(bool, value = (::boost::is_convertible<cat*, std::random_access_iterator_tag*>::value));
+};
+
+template <class I>
+struct is_random_pointer_imp
+{
+ BOOST_STATIC_CONSTANT(bool, value = true);
+};
+
+template <bool is_pointer_type>
+struct is_random_imp_selector
+{
+ template <class I>
+ struct rebind
+ {
+ typedef is_random_imp<I> type;
+ };
+};
+
+template <>
+struct is_random_imp_selector<true>
+{
+ template <class I>
+ struct rebind
+ {
+ typedef is_random_pointer_imp<I> type;
+ };
+};
+
+}
+
+template <class I>
+struct is_random_access_iterator
+{
+private:
+ typedef detail::is_random_imp_selector< ::boost::is_pointer<I>::value> selector;
+ typedef typename selector::template rebind<I> bound_type;
+ typedef typename bound_type::type answer;
+public:
+ BOOST_STATIC_CONSTANT(bool, value = answer::value);
+};
+
+#ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION
+template <class I>
+const bool is_random_access_iterator<I>::value;
+#endif
+
+}
+
+#endif
+

Added: sandbox/SOC/2007/regex/named-captures/boost/regex/v4/iterator_traits.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/boost/regex/v4/iterator_traits.hpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,121 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE iterator_traits.cpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Declares iterator traits workarounds.
+ */
+
+#ifndef BOOST_REGEX_V4_ITERATOR_TRAITS_HPP
+#define BOOST_REGEX_V4_ITERATOR_TRAITS_HPP
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+
+namespace boost{
+namespace re_detail{
+
+#if defined(BOOST_NO_STD_ITERATOR_TRAITS) || defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+
+template <class T>
+struct regex_iterator_traits
+{
+ typedef typename T::iterator_category iterator_category;
+ typedef typename T::value_type value_type;
+#if !defined(BOOST_NO_STD_ITERATOR)
+ typedef typename T::difference_type difference_type;
+ typedef typename T::pointer pointer;
+ typedef typename T::reference reference;
+#else
+ typedef std::ptrdiff_t difference_type;
+ typedef value_type* pointer;
+ typedef value_type& reference;
+#endif
+};
+
+template <class T>
+struct pointer_iterator_traits
+{
+ typedef std::ptrdiff_t difference_type;
+ typedef T value_type;
+ typedef T* pointer;
+ typedef T& reference;
+ typedef std::random_access_iterator_tag iterator_category;
+};
+template <class T>
+struct const_pointer_iterator_traits
+{
+ typedef std::ptrdiff_t difference_type;
+ typedef T value_type;
+ typedef const T* pointer;
+ typedef const T& reference;
+ typedef std::random_access_iterator_tag iterator_category;
+};
+
+template<>
+struct regex_iterator_traits<char*> : pointer_iterator_traits<char>{};
+template<>
+struct regex_iterator_traits<const char*> : const_pointer_iterator_traits<char>{};
+template<>
+struct regex_iterator_traits<wchar_t*> : pointer_iterator_traits<wchar_t>{};
+template<>
+struct regex_iterator_traits<const wchar_t*> : const_pointer_iterator_traits<wchar_t>{};
+//
+// the follwoing are needed for ICU support:
+//
+template<>
+struct regex_iterator_traits<unsigned char*> : pointer_iterator_traits<char>{};
+template<>
+struct regex_iterator_traits<const unsigned char*> : const_pointer_iterator_traits<char>{};
+template<>
+struct regex_iterator_traits<int*> : pointer_iterator_traits<int>{};
+template<>
+struct regex_iterator_traits<const int*> : const_pointer_iterator_traits<int>{};
+
+#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T
+template<>
+struct regex_iterator_traits<unsigned short*> : pointer_iterator_traits<unsigned short>{};
+template<>
+struct regex_iterator_traits<const unsigned short*> : const_pointer_iterator_traits<unsigned short>{};
+#endif
+
+#if defined(__SGI_STL_PORT) && defined(__STL_DEBUG)
+template<>
+struct regex_iterator_traits<std::string::iterator> : pointer_iterator_traits<char>{};
+template<>
+struct regex_iterator_traits<std::string::const_iterator> : const_pointer_iterator_traits<char>{};
+#ifndef BOOST_NO_STD_WSTRING
+template<>
+struct regex_iterator_traits<std::wstring::iterator> : pointer_iterator_traits<wchar_t>{};
+template<>
+struct regex_iterator_traits<std::wstring::const_iterator> : const_pointer_iterator_traits<wchar_t>{};
+#endif // BOOST_NO_WSTRING
+#endif // stport
+
+#else
+
+template <class T>
+struct regex_iterator_traits : public std::iterator_traits<T> {};
+
+#endif
+
+} // namespace re_detail
+} // namespace boost
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+
+#endif
+

Added: sandbox/SOC/2007/regex/named-captures/boost/regex/v4/match_flags.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/boost/regex/v4/match_flags.hpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,140 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE match_flags.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Declares match_flags type.
+ */
+
+#ifndef BOOST_REGEX_V4_MATCH_FLAGS
+#define BOOST_REGEX_V4_MATCH_FLAGS
+
+#ifdef __cplusplus
+# include <boost/cstdint.hpp>
+#endif
+
+#include <boost/detail/workaround.hpp>
+
+#ifdef __cplusplus
+namespace boost{
+ namespace regex_constants{
+#endif
+
+typedef enum _match_flags
+{
+ match_default = 0,
+ match_not_bol = 1, // first is not start of line
+ match_not_eol = match_not_bol << 1, // last is not end of line
+ match_not_bob = match_not_eol << 1, // first is not start of buffer
+ match_not_eob = match_not_bob << 1, // last is not end of buffer
+ match_not_bow = match_not_eob << 1, // first is not start of word
+ match_not_eow = match_not_bow << 1, // last is not end of word
+ match_not_dot_newline = match_not_eow << 1, // \n is not matched by '.'
+ match_not_dot_null = match_not_dot_newline << 1, // '\0' is not matched by '.'
+ match_prev_avail = match_not_dot_null << 1, // *--first is a valid expression
+ match_init = match_prev_avail << 1, // internal use
+ match_any = match_init << 1, // don't care what we match
+ match_not_null = match_any << 1, // string can't be null
+ match_continuous = match_not_null << 1, // each grep match must continue from
+ // uninterupted from the previous one
+ match_partial = match_continuous << 1, // find partial matches
+
+ match_stop = match_partial << 1, // stop after first match (grep) V3 only
+ match_not_initial_null = match_stop, // don't match initial null, V4 only
+ match_all = match_stop << 1, // must find the whole of input even if match_any is set
+ match_perl = match_all << 1, // Use perl matching rules
+ match_posix = match_perl << 1, // Use POSIX matching rules
+ match_nosubs = match_posix << 1, // don't trap marked subs
+ match_extra = match_nosubs << 1, // include full capture information for repeated captures
+ match_single_line = match_extra << 1, // treat text as single line and ignor any \n's when matching ^ and $.
+ match_unused1 = match_single_line << 1, // unused
+ match_unused2 = match_unused1 << 1, // unused
+ match_unused3 = match_unused2 << 1, // unused
+ match_max = match_unused3,
+
+ format_perl = 0, // perl style replacement
+ format_default = 0, // ditto.
+ format_sed = match_max << 1, // sed style replacement.
+ format_all = format_sed << 1, // enable all extentions to sytax.
+ format_no_copy = format_all << 1, // don't copy non-matching segments.
+ format_first_only = format_no_copy << 1, // Only replace first occurance.
+ format_is_if = format_first_only << 1, // internal use only.
+ format_literal = format_is_if << 1 // treat string as a literal
+
+} match_flags;
+
+#if BOOST_WORKAROUND(BOOST_MSVC, < 1300) || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
+typedef unsigned long match_flag_type;
+#else
+typedef match_flags match_flag_type;
+
+
+#ifdef __cplusplus
+inline match_flags operator&(match_flags m1, match_flags m2)
+{ return static_cast<match_flags>(static_cast<boost::int32_t>(m1) & static_cast<boost::int32_t>(m2)); }
+inline match_flags operator|(match_flags m1, match_flags m2)
+{ return static_cast<match_flags>(static_cast<boost::int32_t>(m1) | static_cast<boost::int32_t>(m2)); }
+inline match_flags operator^(match_flags m1, match_flags m2)
+{ return static_cast<match_flags>(static_cast<boost::int32_t>(m1) ^ static_cast<boost::int32_t>(m2)); }
+inline match_flags operator~(match_flags m1)
+{ return static_cast<match_flags>(~static_cast<boost::int32_t>(m1)); }
+inline match_flags& operator&=(match_flags& m1, match_flags m2)
+{ m1 = m1&m2; return m1; }
+inline match_flags& operator|=(match_flags& m1, match_flags m2)
+{ m1 = m1|m2; return m1; }
+inline match_flags& operator^=(match_flags& m1, match_flags m2)
+{ m1 = m1^m2; return m1; }
+#endif
+#endif
+
+#ifdef __cplusplus
+} // namespace regex_constants
+//
+// import names into boost for backwards compatiblity:
+//
+using regex_constants::match_flag_type;
+using regex_constants::match_default;
+using regex_constants::match_not_bol;
+using regex_constants::match_not_eol;
+using regex_constants::match_not_bob;
+using regex_constants::match_not_eob;
+using regex_constants::match_not_bow;
+using regex_constants::match_not_eow;
+using regex_constants::match_not_dot_newline;
+using regex_constants::match_not_dot_null;
+using regex_constants::match_prev_avail;
+//using regex_constants::match_init;
+using regex_constants::match_any;
+using regex_constants::match_not_null;
+using regex_constants::match_continuous;
+using regex_constants::match_partial;
+//using regex_constants::match_stop;
+using regex_constants::match_all;
+using regex_constants::match_perl;
+using regex_constants::match_posix;
+using regex_constants::match_nosubs;
+using regex_constants::match_extra;
+using regex_constants::match_single_line;
+//using regex_constants::match_max;
+using regex_constants::format_all;
+using regex_constants::format_sed;
+using regex_constants::format_perl;
+using regex_constants::format_default;
+using regex_constants::format_no_copy;
+using regex_constants::format_first_only;
+//using regex_constants::format_is_if;
+
+} // namespace boost
+#endif // __cplusplus
+#endif // include guard
+

Added: sandbox/SOC/2007/regex/named-captures/boost/regex/v4/match_results.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/boost/regex/v4/match_results.hpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,413 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE match_results.cpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Declares template class match_results.
+ */
+
+#ifndef BOOST_REGEX_V4_MATCH_RESULTS_HPP
+#define BOOST_REGEX_V4_MATCH_RESULTS_HPP
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+
+namespace boost{
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable : 4251 4231 4660)
+#endif
+
+template <class BidiIterator, class Allocator>
+class match_results
+{
+private:
+#ifndef BOOST_NO_STD_ALLOCATOR
+ typedef std::vector<sub_match<BidiIterator>, Allocator> vector_type;
+#else
+ typedef std::vector<sub_match<BidiIterator> > vector_type;
+#endif
+public:
+ typedef sub_match<BidiIterator> value_type;
+#if !defined(BOOST_NO_STD_ALLOCATOR) && !(defined(BOOST_MSVC) && defined(_STLPORT_VERSION))
+ typedef typename Allocator::const_reference const_reference;
+#else
+ typedef const value_type& const_reference;
+#endif
+ typedef const_reference reference;
+ typedef typename vector_type::const_iterator const_iterator;
+ typedef const_iterator iterator;
+ typedef typename re_detail::regex_iterator_traits<
+ BidiIterator>::difference_type difference_type;
+ typedef typename Allocator::size_type size_type;
+ typedef Allocator allocator_type;
+ typedef typename re_detail::regex_iterator_traits<
+ BidiIterator>::value_type char_type;
+ typedef std::basic_string<char_type> string_type;
+
+ // construct/copy/destroy:
+ explicit match_results(const Allocator& a = Allocator())
+#ifndef BOOST_NO_STD_ALLOCATOR
+ : m_subs(a), m_base() {}
+#else
+ : m_subs(), m_base() { (void)a; }
+#endif
+ match_results(const match_results& m)
+ : m_subs(m.m_subs), m_base(m.m_base) {}
+ match_results& operator=(const match_results& m)
+ {
+ m_subs = m.m_subs;
+ m_base = m.m_base;
+ return *this;
+ }
+ ~match_results(){}
+
+ // size:
+ size_type size() const
+ { return empty() ? 0 : m_subs.size() - 2; }
+ size_type max_size() const
+ { return m_subs.max_size(); }
+ bool empty() const
+ { return m_subs.size() < 2; }
+ // element access:
+ difference_type length(int sub = 0) const
+ {
+ sub += 2;
+ if((sub < (int)m_subs.size()) && (sub > 0))
+ return m_subs[sub].length();
+ return 0;
+ }
+ difference_type position(size_type sub = 0) const
+ {
+ sub += 2;
+ if(sub < m_subs.size())
+ {
+ const sub_match<BidiIterator>& s = m_subs[sub];
+ if(s.matched || (sub == 2))
+ {
+ return ::boost::re_detail::distance((BidiIterator)(m_base), (BidiIterator)(s.first));
+ }
+ }
+ return ~static_cast<difference_type>(0);
+ }
+ string_type str(int sub = 0) const
+ {
+ sub += 2;
+ string_type result;
+ if(sub < (int)m_subs.size() && (sub > 0))
+ {
+ const sub_match<BidiIterator>& s = m_subs[sub];
+ if(s.matched)
+ {
+ result = s.str();
+ }
+ }
+ return result;
+ }
+ const_reference operator[](int sub) const
+ {
+ sub += 2;
+ if(sub < (int)m_subs.size() && (sub >= 0))
+ {
+ return m_subs[sub];
+ }
+ return m_null;
+ }
+
+ const_reference prefix() const
+ {
+ return (*this)[-1];
+ }
+
+ const_reference suffix() const
+ {
+ return (*this)[-2];
+ }
+ const_iterator begin() const
+ {
+ return (m_subs.size() > 2) ? (m_subs.begin() + 2) : m_subs.end();
+ }
+ const_iterator end() const
+ {
+ return m_subs.end();
+ }
+ // format:
+ template <class OutputIterator>
+ OutputIterator format(OutputIterator out,
+ const string_type& fmt,
+ match_flag_type flags = format_default) const
+ {
+ re_detail::trivial_format_traits<char_type> traits;
+ return re_detail::regex_format_imp(out, *this, fmt.data(), fmt.data() + fmt.size(), flags, traits);
+ }
+ string_type format(const string_type& fmt,
+ match_flag_type flags = format_default) const
+ {
+ string_type result;
+ re_detail::string_out_iterator<string_type> i(result);
+ re_detail::trivial_format_traits<char_type> traits;
+ re_detail::regex_format_imp(i, *this, fmt.data(), fmt.data() + fmt.size(), flags, traits);
+ return result;
+ }
+ // format with locale:
+ template <class OutputIterator, class RegexT>
+ OutputIterator format(OutputIterator out,
+ const string_type& fmt,
+ match_flag_type flags,
+ const RegexT& re) const
+ {
+ return ::boost::re_detail::regex_format_imp(out, *this, fmt.data(), fmt.data() + fmt.size(), flags, re.get_traits());
+ }
+ template <class RegexT>
+ string_type format(const string_type& fmt,
+ match_flag_type flags,
+ const RegexT& re) const
+ {
+ string_type result;
+ re_detail::string_out_iterator<string_type> i(result);
+ ::boost::re_detail::regex_format_imp(i, *this, fmt.data(), fmt.data() + fmt.size(), flags, re.get_traits());
+ return result;
+ }
+
+ allocator_type get_allocator() const
+ {
+#ifndef BOOST_NO_STD_ALLOCATOR
+ return m_subs.get_allocator();
+#else
+ return allocator_type();
+#endif
+ }
+ void swap(match_results& that)
+ {
+ std::swap(m_subs, that.m_subs);
+ std::swap(m_base, that.m_base);
+ }
+ bool operator==(const match_results& that)const
+ {
+ return (m_subs == that.m_subs) && (m_base == that.m_base);
+ }
+ bool operator!=(const match_results& that)const
+ { return !(*this == that); }
+
+#ifdef BOOST_REGEX_MATCH_EXTRA
+ typedef typename sub_match<BidiIterator>::capture_sequence_type capture_sequence_type;
+
+ const capture_sequence_type& captures(int i)const
+ {
+ return (*this)[i].captures();
+ }
+#endif
+
+ //
+ // private access functions:
+ void BOOST_REGEX_CALL set_second(BidiIterator i)
+ {
+ BOOST_ASSERT(m_subs.size() > 2);
+ m_subs[2].second = i;
+ m_subs[2].matched = true;
+ m_subs[0].first = i;
+ m_subs[0].matched = (m_subs[0].first != m_subs[0].second);
+ m_null.first = i;
+ m_null.second = i;
+ m_null.matched = false;
+ }
+
+ void BOOST_REGEX_CALL set_second(BidiIterator i, size_type pos, bool m = true)
+ {
+ pos += 2;
+ BOOST_ASSERT(m_subs.size() > pos);
+ m_subs[pos].second = i;
+ m_subs[pos].matched = m;
+ if(pos == 2)
+ {
+ m_subs[0].first = i;
+ m_subs[0].matched = (m_subs[0].first != m_subs[0].second);
+ m_null.first = i;
+ m_null.second = i;
+ m_null.matched = false;
+ }
+ }
+ void BOOST_REGEX_CALL set_size(size_type n, BidiIterator i, BidiIterator j)
+ {
+ value_type v(j);
+ size_type len = m_subs.size();
+ if(len > n + 2)
+ {
+ m_subs.erase(m_subs.begin()+n+2, m_subs.end());
+ std::fill(m_subs.begin(), m_subs.end(), v);
+ }
+ else
+ {
+ std::fill(m_subs.begin(), m_subs.end(), v);
+ if(n+2 != len)
+ m_subs.insert(m_subs.end(), n+2-len, v);
+ }
+ m_subs[1].first = i;
+ }
+ void BOOST_REGEX_CALL set_base(BidiIterator pos)
+ {
+ m_base = pos;
+ }
+ BidiIterator base()const
+ {
+ return m_base;
+ }
+ void BOOST_REGEX_CALL set_first(BidiIterator i)
+ {
+ // set up prefix:
+ m_subs[1].second = i;
+ m_subs[1].matched = (m_subs[1].first != i);
+ // set up $0:
+ m_subs[2].first = i;
+ // zero out everything else:
+ for(size_type n = 3; n < m_subs.size(); ++n)
+ {
+ m_subs[n].first = m_subs[n].second = m_subs[0].second;
+ m_subs[n].matched = false;
+ }
+ }
+ void BOOST_REGEX_CALL set_first(BidiIterator i, size_type pos)
+ {
+ BOOST_ASSERT(pos+2 < m_subs.size());
+ if(pos)
+ m_subs[pos+2].first = i;
+ else
+ set_first(i);
+ }
+ void BOOST_REGEX_CALL maybe_assign(const match_results<BidiIterator, Allocator>& m);
+
+
+private:
+ vector_type m_subs; // subexpressions
+ BidiIterator m_base; // where the search started from
+ sub_match<BidiIterator> m_null; // a null match
+};
+
+template <class BidiIterator, class Allocator>
+void BOOST_REGEX_CALL match_results<BidiIterator, Allocator>::maybe_assign(const match_results<BidiIterator, Allocator>& m)
+{
+ const_iterator p1, p2;
+ p1 = begin();
+ p2 = m.begin();
+ //
+ // Distances are measured from the start of *this* match, unless this isn't
+ // a valid match in which case we use the start of the whole sequence. Note that
+ // no subsequent match-candidate can ever be to the left of the first match found.
+ // This ensures that when we are using bidirectional iterators, that distances
+ // measured are as short as possible, and therefore as efficient as possible
+ // to compute. Finally note that we don't use the "matched" data member to test
+ // whether a sub-expression is a valid match, because partial matches set this
+ // to false for sub-expression 0.
+ //
+ BidiIterator l_end = this->suffix().second;
+ BidiIterator l_base = (p1->first == l_end) ? this->prefix().first : (*this)[0].first;
+ difference_type len1 = 0;
+ difference_type len2 = 0;
+ difference_type base1 = 0;
+ difference_type base2 = 0;
+ std::size_t i;
+ for(i = 0; i < size(); ++i, ++p1, ++p2)
+ {
+ //
+ // Leftmost takes priority over longest; handle special cases
+ // where distances need not be computed first (an optimisation
+ // for bidirectional iterators: ensure that we don't accidently
+ // compute the length of the whole sequence, as this can be really
+ // expensive).
+ //
+ if(p1->first == l_end)
+ {
+ if(p2->first != l_end)
+ {
+ // p2 must be better than p1, and no need to calculate
+ // actual distances:
+ base1 = 1;
+ base2 = 0;
+ break;
+ }
+ else
+ {
+ // *p1 and *p2 are either unmatched or match end-of sequence,
+ // either way no need to calculate distances:
+ if((p1->matched == false) && (p2->matched == true))
+ break;
+ if((p1->matched == true) && (p2->matched == false))
+ return;
+ continue;
+ }
+ }
+ else if(p2->first == l_end)
+ {
+ // p1 better than p2, and no need to calculate distances:
+ return;
+ }
+ base1 = ::boost::re_detail::distance(l_base, p1->first);
+ base2 = ::boost::re_detail::distance(l_base, p2->first);
+ BOOST_ASSERT(base1 >= 0);
+ BOOST_ASSERT(base2 >= 0);
+ if(base1 < base2) return;
+ if(base2 < base1) break;
+
+ len1 = ::boost::re_detail::distance((BidiIterator)p1->first, (BidiIterator)p1->second);
+ len2 = ::boost::re_detail::distance((BidiIterator)p2->first, (BidiIterator)p2->second);
+ BOOST_ASSERT(len1 >= 0);
+ BOOST_ASSERT(len2 >= 0);
+ if((len1 != len2) || ((p1->matched == false) && (p2->matched == true)))
+ break;
+ if((p1->matched == true) && (p2->matched == false))
+ return;
+ }
+ if(i == size())
+ return;
+ if(base2 < base1)
+ *this = m;
+ else if((len2 > len1) || ((p1->matched == false) && (p2->matched == true)) )
+ *this = m;
+}
+
+template <class BidiIterator, class Allocator>
+void swap(match_results<BidiIterator, Allocator>& a, match_results<BidiIterator, Allocator>& b)
+{
+ a.swap(b);
+}
+
+#ifndef BOOST_NO_STD_LOCALE
+template <class charT, class traits, class BidiIterator, class Allocator>
+std::basic_ostream<charT, traits>&
+ operator << (std::basic_ostream<charT, traits>& os,
+ const match_results<BidiIterator, Allocator>& s)
+{
+ return (os << s.str());
+}
+#else
+template <class BidiIterator, class Allocator>
+std::ostream& operator << (std::ostream& os,
+ const match_results<BidiIterator, Allocator>& s)
+{
+ return (os << s.str());
+}
+#endif
+
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+} // namespace boost
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+
+#endif
+
+

Added: sandbox/SOC/2007/regex/named-captures/boost/regex/v4/mem_block_cache.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/boost/regex/v4/mem_block_cache.hpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,99 @@
+ /*
+ * Copyright (c) 2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE mem_block_cache.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: memory block cache used by the non-recursive matcher.
+ */
+
+#ifndef BOOST_REGEX_V4_MEM_BLOCK_CACHE_HPP
+#define BOOST_REGEX_V4_MEM_BLOCK_CACHE_HPP
+
+#include <new>
+#ifdef BOOST_HAS_THREADS
+#include <boost/regex/pending/static_mutex.hpp>
+#endif
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+
+namespace boost{
+namespace re_detail{
+
+struct mem_block_node
+{
+ mem_block_node* next;
+};
+
+struct mem_block_cache
+{
+ // this member has to be statically initialsed:
+ mem_block_node* next;
+ unsigned cached_blocks;
+#ifdef BOOST_HAS_THREADS
+ boost::static_mutex mut;
+#endif
+
+ ~mem_block_cache()
+ {
+ while(next)
+ {
+ mem_block_node* old = next;
+ next = next->next;
+ ::operator delete(old);
+ }
+ }
+ void* get()
+ {
+#ifdef BOOST_HAS_THREADS
+ boost::static_mutex::scoped_lock g(mut);
+#endif
+ if(next)
+ {
+ mem_block_node* result = next;
+ next = next->next;
+ --cached_blocks;
+ return result;
+ }
+ return ::operator new(BOOST_REGEX_BLOCKSIZE);
+ }
+ void put(void* p)
+ {
+#ifdef BOOST_HAS_THREADS
+ boost::static_mutex::scoped_lock g(mut);
+#endif
+ if(cached_blocks >= BOOST_REGEX_MAX_CACHE_BLOCKS)
+ {
+ ::operator delete(p);
+ }
+ else
+ {
+ mem_block_node* old = static_cast<mem_block_node*>(p);
+ old->next = next;
+ next = old;
+ ++cached_blocks;
+ }
+ }
+};
+
+extern mem_block_cache block_cache;
+
+}
+} // namespace boost
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+
+#endif
+

Added: sandbox/SOC/2007/regex/named-captures/boost/regex/v4/perl_matcher.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/boost/regex/v4/perl_matcher.hpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,527 @@
+/*
+ *
+ * Copyright (c) 2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+#ifndef BOOST_REGEX_MATCHER_HPP
+#define BOOST_REGEX_MATCHER_HPP
+
+#include <boost/regex/v4/iterator_category.hpp>
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+
+namespace boost{
+namespace re_detail{
+
+//
+// error checking API:
+//
+BOOST_REGEX_DECL void BOOST_REGEX_CALL verify_options(boost::regex_constants::syntax_option_type ef, match_flag_type mf);
+//
+// function can_start:
+//
+template <class charT>
+inline bool can_start(charT c, const unsigned char* map, unsigned char mask)
+{
+ return ((c < static_cast<charT>(0)) ? true : ((c >= static_cast<charT>(1 << CHAR_BIT)) ? true : map[c] & mask));
+}
+inline bool can_start(char c, const unsigned char* map, unsigned char mask)
+{
+ return map[(unsigned char)c] & mask;
+}
+inline bool can_start(signed char c, const unsigned char* map, unsigned char mask)
+{
+ return map[(unsigned char)c] & mask;
+}
+inline bool can_start(unsigned char c, const unsigned char* map, unsigned char mask)
+{
+ return map[c] & mask;
+}
+inline bool can_start(unsigned short c, const unsigned char* map, unsigned char mask)
+{
+ return ((c >= (1 << CHAR_BIT)) ? true : map[c] & mask);
+}
+#if !defined(__hpux) // can't use WCHAR_MIN in pp-directive
+#if defined(WCHAR_MIN) && (WCHAR_MIN == 0) && !defined(BOOST_NO_INTRINSIC_WCHAR_T)
+inline bool can_start(wchar_t c, const unsigned char* map, unsigned char mask)
+{
+ return ((c >= (1 << CHAR_BIT)) ? true : map[c] & mask);
+}
+#endif
+#endif
+
+
+//
+// Unfortunately Rogue Waves standard library appears to have a bug
+// in std::basic_string::compare that results in eroneous answers
+// in some cases (tested with Borland C++ 5.1, Rogue Wave lib version
+// 0x020101) the test case was:
+// {39135,0} < {0xff,0}
+// which succeeds when it should not.
+//
+#ifndef _RWSTD_VER
+#if !BOOST_WORKAROUND(BOOST_MSVC, < 1310)
+template <class C, class T, class A>
+inline int string_compare(const std::basic_string<C,T,A>& s, const C* p)
+{
+ if(0 == *p)
+ {
+ if(s.empty() || ((s.size() == 1) && (s[0] == 0)))
+ return 0;
+ }
+ return s.compare(p);
+}
+#endif
+#else
+#if !BOOST_WORKAROUND(BOOST_MSVC, < 1310)
+template <class C, class T, class A>
+inline int string_compare(const std::basic_string<C,T,A>& s, const C* p)
+{
+ if(0 == *p)
+ {
+ if(s.empty() || ((s.size() == 1) && (s[0] == 0)))
+ return 0;
+ }
+ return s.compare(p);
+}
+#endif
+inline int string_compare(const std::string& s, const char* p)
+{ return std::strcmp(s.c_str(), p); }
+# ifndef BOOST_NO_WREGEX
+inline int string_compare(const std::wstring& s, const wchar_t* p)
+{ return std::wcscmp(s.c_str(), p); }
+#endif
+#endif
+template <class Seq, class C>
+inline int string_compare(const Seq& s, const C* p)
+{
+ std::size_t i = 0;
+ while((i < s.size()) && (p[i] == s[i]))
+ {
+ ++i;
+ }
+ return (i == s.size()) ? -p[i] : s[i] - p[i];
+}
+# define STR_COMP(s,p) string_compare(s,p)
+
+template<class charT>
+inline const charT* re_skip_past_null(const charT* p)
+{
+ while (*p != static_cast<charT>(0)) ++p;
+ return ++p;
+}
+
+template <class iterator, class charT, class traits_type, class char_classT>
+iterator BOOST_REGEX_CALL re_is_set_member(iterator next,
+ iterator last,
+ const re_set_long<char_classT>* set_,
+ const regex_data<charT, traits_type>& e, bool icase)
+{
+ const charT* p = reinterpret_cast<const charT*>(set_+1);
+ iterator ptr;
+ unsigned int i;
+ //bool icase = e.m_flags & regex_constants::icase;
+
+ if(next == last) return next;
+
+ typedef typename traits_type::string_type traits_string_type;
+ const ::boost::regex_traits_wrapper<traits_type>& traits_inst = *(e.m_ptraits);
+
+ // dwa 9/13/00 suppress incorrect MSVC warning - it claims this is never
+ // referenced
+ (void)traits_inst;
+
+ // try and match a single character, could be a multi-character
+ // collating element...
+ for(i = 0; i < set_->csingles; ++i)
+ {
+ ptr = next;
+ if(*p == static_cast<charT>(0))
+ {
+ // treat null string as special case:
+ if(traits_inst.translate(*ptr, icase) != *p)
+ {
+ while(*p == static_cast<charT>(0))++p;
+ continue;
+ }
+ return set_->isnot ? next : (ptr == next) ? ++next : ptr;
+ }
+ else
+ {
+ while(*p && (ptr != last))
+ {
+ if(traits_inst.translate(*ptr, icase) != *p)
+ break;
+ ++p;
+ ++ptr;
+ }
+
+ if(*p == static_cast<charT>(0)) // if null we've matched
+ return set_->isnot ? next : (ptr == next) ? ++next : ptr;
+
+ p = re_skip_past_null(p); // skip null
+ }
+ }
+
+ charT col = traits_inst.translate(*next, icase);
+
+
+ if(set_->cranges || set_->cequivalents)
+ {
+ traits_string_type s1;
+ //
+ // try and match a range, NB only a single character can match
+ if(set_->cranges)
+ {
+ if((e.m_flags & regex_constants::collate) == 0)
+ s1.assign(1, col);
+ else
+ {
+ charT a[2] = { col, charT(0), };
+ s1 = traits_inst.transform(a, a + 1);
+ }
+ for(i = 0; i < set_->cranges; ++i)
+ {
+ if(STR_COMP(s1, p) >= 0)
+ {
+ do{ ++p; }while(*p);
+ ++p;
+ if(STR_COMP(s1, p) <= 0)
+ return set_->isnot ? next : ++next;
+ }
+ else
+ {
+ // skip first string
+ do{ ++p; }while(*p);
+ ++p;
+ }
+ // skip second string
+ do{ ++p; }while(*p);
+ ++p;
+ }
+ }
+ //
+ // try and match an equivalence class, NB only a single character can match
+ if(set_->cequivalents)
+ {
+ charT a[2] = { col, charT(0), };
+ s1 = traits_inst.transform_primary(a, a +1);
+ for(i = 0; i < set_->cequivalents; ++i)
+ {
+ if(STR_COMP(s1, p) == 0)
+ return set_->isnot ? next : ++next;
+ // skip string
+ do{ ++p; }while(*p);
+ ++p;
+ }
+ }
+ }
+ if(traits_inst.isctype(col, set_->cclasses) == true)
+ return set_->isnot ? next : ++next;
+ if((set_->cnclasses != 0) && (traits_inst.isctype(col, set_->cnclasses) == false))
+ return set_->isnot ? next : ++next;
+ return set_->isnot ? ++next : next;
+}
+
+template <class BidiIterator>
+class repeater_count
+{
+ repeater_count** stack;
+ repeater_count* next;
+ int id;
+ std::size_t count; // the number of iterations so far
+ BidiIterator start_pos; // where the last repeat started
+public:
+ repeater_count(repeater_count** s)
+ {
+ stack = s;
+ next = 0;
+ id = -1;
+ count = 0;
+ }
+ repeater_count(int i, repeater_count** s, BidiIterator start)
+ : start_pos(start)
+ {
+ id = i;
+ stack = s;
+ next = *stack;
+ *stack = this;
+ if(id > next->id)
+ count = 0;
+ else
+ {
+ repeater_count* p = next;
+ while(p->id != id)
+ p = p->next;
+ count = p->count;
+ start_pos = p->start_pos;
+ }
+ }
+ ~repeater_count()
+ {
+ *stack = next;
+ }
+ std::size_t get_count() { return count; }
+ int get_id() { return id; }
+ std::size_t operator++() { return ++count; }
+ bool check_null_repeat(const BidiIterator& pos, std::size_t max)
+ {
+ // this is called when we are about to start a new repeat,
+ // if the last one was NULL move our count to max,
+ // otherwise save the current position.
+ bool result = (count == 0) ? false : (pos == start_pos);
+ if(result)
+ count = max;
+ else
+ start_pos = pos;
+ return result;
+ }
+};
+
+struct saved_state;
+
+enum saved_state_type
+{
+ saved_type_end = 0,
+ saved_type_paren = 1,
+ saved_type_recurse = 2,
+ saved_type_assertion = 3,
+ saved_state_alt = 4,
+ saved_state_repeater_count = 5,
+ saved_state_extra_block = 6,
+ saved_state_greedy_single_repeat = 7,
+ saved_state_rep_slow_dot = 8,
+ saved_state_rep_fast_dot = 9,
+ saved_state_rep_char = 10,
+ saved_state_rep_short_set = 11,
+ saved_state_rep_long_set = 12,
+ saved_state_non_greedy_long_repeat = 13,
+ saved_state_count = 14
+};
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable : 4251 4231 4660)
+#endif
+
+template <class BidiIterator, class Allocator, class traits>
+class perl_matcher
+{
+public:
+ typedef typename traits::char_type char_type;
+ typedef perl_matcher<BidiIterator, Allocator, traits> self_type;
+ typedef bool (self_type::*matcher_proc_type)(void);
+ typedef typename traits::size_type traits_size_type;
+ typedef typename is_byte<char_type>::width_type width_type;
+ typedef typename regex_iterator_traits<BidiIterator>::difference_type difference_type;
+
+ perl_matcher(BidiIterator first, BidiIterator end,
+ match_results<BidiIterator, Allocator>& what,
+ const basic_regex<char_type, traits>& e,
+ match_flag_type f,
+ BidiIterator l_base)
+ : m_result(what), base(first), last(end),
+ position(first), backstop(l_base), re(e), traits_inst(e.get_traits()),
+ m_independent(false), next_count(&rep_obj), rep_obj(&next_count)
+ {
+ construct_init(e, f);
+ }
+
+ bool match();
+ bool find();
+
+ void setf(match_flag_type f)
+ { m_match_flags |= f; }
+ void unsetf(match_flag_type f)
+ { m_match_flags &= ~f; }
+
+private:
+ void construct_init(const basic_regex<char_type, traits>& e, match_flag_type f);
+
+ bool find_imp();
+ bool match_imp();
+#ifdef BOOST_REGEX_HAS_MS_STACK_GUARD
+ typedef bool (perl_matcher::*protected_proc_type)();
+ bool protected_call(protected_proc_type);
+#endif
+ void estimate_max_state_count(std::random_access_iterator_tag*);
+ void estimate_max_state_count(void*);
+ bool match_prefix();
+ bool match_all_states();
+
+ // match procs, stored in s_match_vtable:
+ bool match_startmark();
+ bool match_endmark();
+ bool match_literal();
+ bool match_start_line();
+ bool match_end_line();
+ bool match_wild();
+ bool match_match();
+ bool match_word_boundary();
+ bool match_within_word();
+ bool match_word_start();
+ bool match_word_end();
+ bool match_buffer_start();
+ bool match_buffer_end();
+ bool match_backref();
+ bool match_long_set();
+ bool match_set();
+ bool match_jump();
+ bool match_alt();
+ bool match_rep();
+ bool match_combining();
+ bool match_soft_buffer_end();
+ bool match_restart_continue();
+ bool match_long_set_repeat();
+ bool match_set_repeat();
+ bool match_char_repeat();
+ bool match_dot_repeat_fast();
+ bool match_dot_repeat_slow();
+ bool match_backstep();
+ bool match_assert_backref();
+ bool match_toggle_case();
+#ifdef BOOST_REGEX_RECURSIVE
+ bool backtrack_till_match(std::size_t count);
+#endif
+
+ // find procs stored in s_find_vtable:
+ bool find_restart_any();
+ bool find_restart_word();
+ bool find_restart_line();
+ bool find_restart_buf();
+ bool find_restart_lit();
+
+private:
+ // final result structure to be filled in:
+ match_results<BidiIterator, Allocator>& m_result;
+ // temporary result for POSIX matches:
+ scoped_ptr<match_results<BidiIterator, Allocator> > m_temp_match;
+ // pointer to actual result structure to fill in:
+ match_results<BidiIterator, Allocator>* m_presult;
+ // start of sequence being searched:
+ BidiIterator base;
+ // end of sequence being searched:
+ BidiIterator last;
+ // current character being examined:
+ BidiIterator position;
+ // where to restart next search after failed match attempt:
+ BidiIterator restart;
+ // where the current search started from, acts as base for $` during grep:
+ BidiIterator search_base;
+ // how far we can go back when matching lookbehind:
+ BidiIterator backstop;
+ // the expression being examined:
+ const basic_regex<char_type, traits>& re;
+ // the expression's traits class:
+ const ::boost::regex_traits_wrapper<traits>& traits_inst;
+ // the next state in the machine being matched:
+ const re_syntax_base* pstate;
+ // matching flags in use:
+ match_flag_type m_match_flags;
+ // how many states we have examined so far:
+ boost::uintmax_t state_count;
+ // max number of states to examine before giving up:
+ boost::uintmax_t max_state_count;
+ // whether we should ignore case or not:
+ bool icase;
+ // set to true when (position == last), indicates that we may have a partial match:
+ bool m_has_partial_match;
+ // set to true whenever we get a match:
+ bool m_has_found_match;
+ // set to true whenever we're inside an independent sub-expression:
+ bool m_independent;
+ // the current repeat being examined:
+ repeater_count<BidiIterator>* next_count;
+ // the first repeat being examined (top of linked list):
+ repeater_count<BidiIterator> rep_obj;
+ // the mask to pass when matching word boundaries:
+ typename traits::char_class_type m_word_mask;
+ // the bitmask to use when determining whether a match_any matches a newline or not:
+ unsigned char match_any_mask;
+
+#ifdef BOOST_REGEX_NON_RECURSIVE
+ //
+ // additional members for non-recursive version:
+ //
+ typedef bool (self_type::*unwind_proc_type)(bool);
+
+ void extend_stack();
+ bool unwind(bool);
+ bool unwind_end(bool);
+ bool unwind_paren(bool);
+ bool unwind_recursion_stopper(bool);
+ bool unwind_assertion(bool);
+ bool unwind_alt(bool);
+ bool unwind_repeater_counter(bool);
+ bool unwind_extra_block(bool);
+ bool unwind_greedy_single_repeat(bool);
+ bool unwind_slow_dot_repeat(bool);
+ bool unwind_fast_dot_repeat(bool);
+ bool unwind_char_repeat(bool);
+ bool unwind_short_set_repeat(bool);
+ bool unwind_long_set_repeat(bool);
+ bool unwind_non_greedy_repeat(bool);
+ void destroy_single_repeat();
+ void push_matched_paren(int index, const sub_match<BidiIterator>& sub);
+ void push_recursion_stopper();
+ void push_assertion(const re_syntax_base* ps, bool positive);
+ void push_alt(const re_syntax_base* ps);
+ void push_repeater_count(int i, repeater_count<BidiIterator>** s);
+ void push_single_repeat(std::size_t c, const re_repeat* r, BidiIterator last_position, int id);
+ void push_non_greedy_repeat(const re_syntax_base* ps);
+
+
+ // pointer to base of stack:
+ saved_state* m_stack_base;
+ // pointer to current stack position:
+ saved_state* m_backup_state;
+ // determines what value to return when unwinding from recursion,
+ // allows for mixed recursive/non-recursive algorithm:
+ bool m_recursive_result;
+ // how many memory blocks have we used up?:
+ unsigned used_block_count;
+#endif
+
+ // these operations aren't allowed, so are declared private,
+ // bodies are provided to keep explicit-instantiation requests happy:
+ perl_matcher& operator=(const perl_matcher&)
+ {
+ return *this;
+ }
+ perl_matcher(const perl_matcher& that)
+ : m_result(that.m_result), re(that.re), traits_inst(that.traits_inst), rep_obj(0) {}
+};
+
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+} // namespace re_detail
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+
+} // namespace boost
+
+//
+// include the implementation of perl_matcher:
+//
+#ifdef BOOST_REGEX_RECURSIVE
+#include <boost/regex/v4/perl_matcher_recursive.hpp>
+#else
+#include <boost/regex/v4/perl_matcher_non_recursive.hpp>
+#endif
+// this one has to be last:
+#include <boost/regex/v4/perl_matcher_common.hpp>
+
+#endif
+

Added: sandbox/SOC/2007/regex/named-captures/boost/regex/v4/perl_matcher_common.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/boost/regex/v4/perl_matcher_common.hpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,949 @@
+/*
+ *
+ * Copyright (c) 2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE perl_matcher_common.cpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Definitions of perl_matcher member functions that are
+ * common to both the recursive and non-recursive versions.
+ */
+
+#ifndef BOOST_REGEX_V4_PERL_MATCHER_COMMON_HPP
+#define BOOST_REGEX_V4_PERL_MATCHER_COMMON_HPP
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+
+#ifdef __BORLANDC__
+# pragma option push -w-8008 -w-8066
+#endif
+
+namespace boost{
+namespace re_detail{
+
+template <class BidiIterator, class Allocator, class traits>
+void perl_matcher<BidiIterator, Allocator, traits>::construct_init(const basic_regex<char_type, traits>& e, match_flag_type f)
+{
+ typedef typename regex_iterator_traits<BidiIterator>::iterator_category category;
+ typedef typename basic_regex<char_type, traits>::flag_type expression_flag_type;
+
+ if(e.empty())
+ {
+ // precondition failure: e is not a valid regex.
+ std::invalid_argument ex("Invalid regular expression object");
+ boost::throw_exception(ex);
+ }
+ pstate = 0;
+ m_match_flags = f;
+ estimate_max_state_count(static_cast<category*>(0));
+ expression_flag_type re_f = re.flags();
+ icase = re_f & regex_constants::icase;
+ if(!(m_match_flags & (match_perl|match_posix)))
+ {
+ if((re_f & (regbase::main_option_type|regbase::no_perl_ex)) == 0)
+ m_match_flags |= match_perl;
+ else if((re_f & (regbase::main_option_type|regbase::emacs_ex)) == (regbase::basic_syntax_group|regbase::emacs_ex))
+ m_match_flags |= match_perl;
+ else
+ m_match_flags |= match_posix;
+ }
+ if(m_match_flags & match_posix)
+ {
+ m_temp_match.reset(new match_results<BidiIterator, Allocator>());
+ m_presult = m_temp_match.get();
+ }
+ else
+ m_presult = &m_result;
+#ifdef BOOST_REGEX_NON_RECURSIVE
+ m_stack_base = 0;
+ m_backup_state = 0;
+#endif
+ // find the value to use for matching word boundaries:
+ m_word_mask = re.get_data().m_word_mask;
+ // find bitmask to use for matching '.':
+ match_any_mask = static_cast<unsigned char>((f & match_not_dot_newline) ? re_detail::test_not_newline : re_detail::test_newline);
+}
+
+template <class BidiIterator, class Allocator, class traits>
+void perl_matcher<BidiIterator, Allocator, traits>::estimate_max_state_count(std::random_access_iterator_tag*)
+{
+ //
+ // How many states should we allow our machine to visit before giving up?
+ // This is a heuristic: it takes the greater of O(N^2) and O(NS^2)
+ // where N is the length of the string, and S is the number of states
+ // in the machine. It's tempting to up this to O(N^2S) or even O(N^2S^2)
+ // but these take unreasonably amounts of time to bale out in pathological
+ // cases.
+ //
+ // Calculate NS^2 first:
+ //
+ static const boost::uintmax_t k = 100000;
+ boost::uintmax_t dist = boost::re_detail::distance(base, last);
+ if(dist == 0)
+ dist = 1;
+ boost::uintmax_t states = re.size();
+ if(states == 0)
+ states = 1;
+ states *= states;
+ if((std::numeric_limits<boost::uintmax_t>::max)() / dist < states)
+ {
+ max_state_count = (std::numeric_limits<boost::uintmax_t>::max)() - 2;
+ return;
+ }
+ states *= dist;
+ if((std::numeric_limits<boost::uintmax_t>::max)() - k < states)
+ {
+ max_state_count = (std::numeric_limits<boost::uintmax_t>::max)() - 2;
+ return;
+ }
+ states += k;
+
+ max_state_count = states;
+
+ //
+ // Now calculate N^2:
+ //
+ states = dist;
+ if((std::numeric_limits<boost::uintmax_t>::max)() / dist < states)
+ {
+ max_state_count = (std::numeric_limits<boost::uintmax_t>::max)() - 2;
+ return;
+ }
+ states *= dist;
+ if((std::numeric_limits<boost::uintmax_t>::max)() - k < states)
+ {
+ max_state_count = (std::numeric_limits<boost::uintmax_t>::max)() - 2;
+ return;
+ }
+ states += k;
+ //
+ // N^2 can be a very large number indeed, to prevent things getting out
+ // of control, cap the max states:
+ //
+ if(states > BOOST_REGEX_MAX_STATE_COUNT)
+ states = BOOST_REGEX_MAX_STATE_COUNT;
+ //
+ // If (the possibly capped) N^2 is larger than our first estimate,
+ // use this instead:
+ //
+ if(states > max_state_count)
+ max_state_count = states;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+inline void perl_matcher<BidiIterator, Allocator, traits>::estimate_max_state_count(void*)
+{
+ // we don't know how long the sequence is:
+ max_state_count = BOOST_REGEX_MAX_STATE_COUNT;
+}
+
+#ifdef BOOST_REGEX_HAS_MS_STACK_GUARD
+template <class BidiIterator, class Allocator, class traits>
+inline bool perl_matcher<BidiIterator, Allocator, traits>::protected_call(
+ protected_proc_type proc)
+{
+ ::boost::re_detail::concrete_protected_call
+ <perl_matcher<BidiIterator, Allocator, traits> >
+ obj(this, proc);
+ return obj.execute();
+
+}
+#endif
+
+template <class BidiIterator, class Allocator, class traits>
+inline bool perl_matcher<BidiIterator, Allocator, traits>::match()
+{
+#ifdef BOOST_REGEX_HAS_MS_STACK_GUARD
+ return protected_call(&perl_matcher<BidiIterator, Allocator, traits>::match_imp);
+#else
+ return match_imp();
+#endif
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::match_imp()
+{
+ // initialise our stack if we are non-recursive:
+#ifdef BOOST_REGEX_NON_RECURSIVE
+ save_state_init init(&m_stack_base, &m_backup_state);
+ used_block_count = BOOST_REGEX_MAX_BLOCKS;
+#if !defined(BOOST_NO_EXCEPTIONS)
+ try{
+#endif
+#endif
+
+ // reset our state machine:
+ position = base;
+ search_base = base;
+ state_count = 0;
+ m_match_flags |= regex_constants::match_all;
+ m_presult->set_size((m_match_flags & match_nosubs) ? 1 : re.mark_count(), search_base, last);
+ m_presult->set_base(base);
+ if(m_match_flags & match_posix)
+ m_result = *m_presult;
+ verify_options(re.flags(), m_match_flags);
+ if(0 == match_prefix())
+ return false;
+ return m_result[0].second == last;
+
+#if defined(BOOST_REGEX_NON_RECURSIVE) && !defined(BOOST_NO_EXCEPTIONS)
+ }
+ catch(...)
+ {
+ // unwind all pushed states, apart from anything else this
+ // ensures that all the states are correctly destructed
+ // not just the memory freed.
+ while(unwind(true)){}
+ throw;
+ }
+#endif
+}
+
+template <class BidiIterator, class Allocator, class traits>
+inline bool perl_matcher<BidiIterator, Allocator, traits>::find()
+{
+#ifdef BOOST_REGEX_HAS_MS_STACK_GUARD
+ return protected_call(&perl_matcher<BidiIterator, Allocator, traits>::find_imp);
+#else
+ return find_imp();
+#endif
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::find_imp()
+{
+ static matcher_proc_type const s_find_vtable[7] =
+ {
+ &perl_matcher<BidiIterator, Allocator, traits>::find_restart_any,
+ &perl_matcher<BidiIterator, Allocator, traits>::find_restart_word,
+ &perl_matcher<BidiIterator, Allocator, traits>::find_restart_line,
+ &perl_matcher<BidiIterator, Allocator, traits>::find_restart_buf,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_prefix,
+ &perl_matcher<BidiIterator, Allocator, traits>::find_restart_lit,
+ &perl_matcher<BidiIterator, Allocator, traits>::find_restart_lit,
+ };
+
+ // initialise our stack if we are non-recursive:
+#ifdef BOOST_REGEX_NON_RECURSIVE
+ save_state_init init(&m_stack_base, &m_backup_state);
+ used_block_count = BOOST_REGEX_MAX_BLOCKS;
+#if !defined(BOOST_NO_EXCEPTIONS)
+ try{
+#endif
+#endif
+
+ state_count = 0;
+ if((m_match_flags & regex_constants::match_init) == 0)
+ {
+ // reset our state machine:
+ search_base = position = base;
+ pstate = re.get_first_state();
+ m_presult->set_size((m_match_flags & match_nosubs) ? 1 : re.mark_count(), base, last);
+ m_presult->set_base(base);
+ m_match_flags |= regex_constants::match_init;
+ }
+ else
+ {
+ // start again:
+ search_base = position = m_result[0].second;
+ // If last match was null and match_not_null was not set then increment
+ // our start position, otherwise we go into an infinite loop:
+ if(((m_match_flags & match_not_null) == 0) && (m_result.length() == 0))
+ {
+ if(position == last)
+ return false;
+ else
+ ++position;
+ }
+ // reset $` start:
+ m_presult->set_size((m_match_flags & match_nosubs) ? 1 : re.mark_count(), search_base, last);
+ //if((base != search_base) && (base == backstop))
+ // m_match_flags |= match_prev_avail;
+ }
+ if(m_match_flags & match_posix)
+ {
+ m_result.set_size(re.mark_count(), base, last);
+ m_result.set_base(base);
+ }
+
+ verify_options(re.flags(), m_match_flags);
+ // find out what kind of expression we have:
+ unsigned type = (m_match_flags & match_continuous) ?
+ static_cast<unsigned int>(regbase::restart_continue)
+ : static_cast<unsigned int>(re.get_restart_type());
+
+ // call the appropriate search routine:
+ matcher_proc_type proc = s_find_vtable[type];
+ return (this->*proc)();
+
+#if defined(BOOST_REGEX_NON_RECURSIVE) && !defined(BOOST_NO_EXCEPTIONS)
+ }
+ catch(...)
+ {
+ // unwind all pushed states, apart from anything else this
+ // ensures that all the states are correctly destructed
+ // not just the memory freed.
+ while(unwind(true)){}
+ throw;
+ }
+#endif
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::match_prefix()
+{
+ m_has_partial_match = false;
+ m_has_found_match = false;
+ pstate = re.get_first_state();
+ m_presult->set_first(position);
+ restart = position;
+ match_all_states();
+ if(!m_has_found_match && m_has_partial_match && (m_match_flags & match_partial))
+ {
+ m_has_found_match = true;
+ m_presult->set_second(last, 0, false);
+ position = last;
+ }
+#ifdef BOOST_REGEX_MATCH_EXTRA
+ if(m_has_found_match && (match_extra & m_match_flags))
+ {
+ //
+ // we have a match, reverse the capture information:
+ //
+ for(unsigned i = 0; i < m_presult->size(); ++i)
+ {
+ typename sub_match<BidiIterator>::capture_sequence_type & seq = ((*m_presult)[i]).get_captures();
+ std::reverse(seq.begin(), seq.end());
+ }
+ }
+#endif
+ if(!m_has_found_match)
+ position = restart; // reset search postion
+ return m_has_found_match;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::match_endmark()
+{
+ int index = static_cast<const re_brace*>(pstate)->index;
+ if(index > 0)
+ {
+ if((m_match_flags & match_nosubs) == 0)
+ m_presult->set_second(position, index);
+ }
+ else if((index < 0) && (index != -4))
+ {
+ // matched forward lookahead:
+ pstate = 0;
+ return true;
+ }
+ pstate = pstate->next.p;
+ return true;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::match_literal()
+{
+ unsigned int len = static_cast<const re_literal*>(pstate)->length;
+ const char_type* what = reinterpret_cast<const char_type*>(static_cast<const re_literal*>(pstate) + 1);
+ //
+ // compare string with what we stored in
+ // our records:
+ for(unsigned int i = 0; i < len; ++i, ++position)
+ {
+ if((position == last) || (traits_inst.translate(*position, icase) != what[i]))
+ return false;
+ }
+ pstate = pstate->next.p;
+ return true;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::match_start_line()
+{
+ if(position == backstop)
+ {
+ if((m_match_flags & match_prev_avail) == 0)
+ {
+ if((m_match_flags & match_not_bol) == 0)
+ {
+ pstate = pstate->next.p;
+ return true;
+ }
+ return false;
+ }
+ }
+ else if(m_match_flags & match_single_line)
+ return false;
+
+ // check the previous value character:
+ BidiIterator t(position);
+ --t;
+ if(position != last)
+ {
+ if(is_separator(*t) && !((*t == static_cast<char_type>('\r')) && (*position == static_cast<char_type>('\n'))) )
+ {
+ pstate = pstate->next.p;
+ return true;
+ }
+ }
+ else if(is_separator(*t))
+ {
+ pstate = pstate->next.p;
+ return true;
+ }
+ return false;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::match_end_line()
+{
+ if(position != last)
+ {
+ if(m_match_flags & match_single_line)
+ return false;
+ // we're not yet at the end so *first is always valid:
+ if(is_separator(*position))
+ {
+ if((position != backstop) || (m_match_flags & match_prev_avail))
+ {
+ // check that we're not in the middle of \r\n sequence
+ BidiIterator t(position);
+ --t;
+ if((*t == static_cast<char_type>('\r')) && (*position == static_cast<char_type>('\n')))
+ {
+ return false;
+ }
+ }
+ pstate = pstate->next.p;
+ return true;
+ }
+ }
+ else if((m_match_flags & match_not_eol) == 0)
+ {
+ pstate = pstate->next.p;
+ return true;
+ }
+ return false;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::match_wild()
+{
+ if(position == last)
+ return false;
+ if(is_separator(*position) && ((match_any_mask & static_cast<const re_dot*>(pstate)->mask) == 0))
+ return false;
+ if((*position == char_type(0)) && (m_match_flags & match_not_dot_null))
+ return false;
+ pstate = pstate->next.p;
+ ++position;
+ return true;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::match_match()
+{
+ if((m_match_flags & match_not_null) && (position == (*m_presult)[0].first))
+ return false;
+ if((m_match_flags & match_all) && (position != last))
+ return false;
+ if((m_match_flags & regex_constants::match_not_initial_null) && (position == search_base))
+ return false;
+ m_presult->set_second(position);
+ pstate = 0;
+ m_has_found_match = true;
+ if((m_match_flags & match_posix) == match_posix)
+ {
+ m_result.maybe_assign(*m_presult);
+ if((m_match_flags & match_any) == 0)
+ return false;
+ }
+#ifdef BOOST_REGEX_MATCH_EXTRA
+ if(match_extra & m_match_flags)
+ {
+ for(unsigned i = 0; i < m_presult->size(); ++i)
+ if((*m_presult)[i].matched)
+ ((*m_presult)[i]).get_captures().push_back((*m_presult)[i]);
+ }
+#endif
+ return true;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::match_word_boundary()
+{
+ bool b; // indcates whether next character is a word character
+ if(position != last)
+ {
+ // prev and this character must be opposites:
+ #if defined(BOOST_REGEX_USE_C_LOCALE) && defined(__GNUC__) && (__GNUC__ == 2) && (__GNUC_MINOR__ < 95)
+ b = traits::isctype(*position, m_word_mask);
+ #else
+ b = traits_inst.isctype(*position, m_word_mask);
+ #endif
+ }
+ else
+ {
+ b = (m_match_flags & match_not_eow) ? true : false;
+ }
+ if((position == backstop) && ((m_match_flags & match_prev_avail) == 0))
+ {
+ if(m_match_flags & match_not_bow)
+ b ^= true;
+ else
+ b ^= false;
+ }
+ else
+ {
+ --position;
+ b ^= traits_inst.isctype(*position, m_word_mask);
+ ++position;
+ }
+ if(b)
+ {
+ pstate = pstate->next.p;
+ return true;
+ }
+ return false; // no match if we get to here...
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::match_within_word()
+{
+ if(position == last)
+ return false;
+ // both prev and this character must be m_word_mask:
+ if(traits_inst.isctype(*position, m_word_mask))
+ {
+ bool b;
+ if((position == backstop) && ((m_match_flags & match_prev_avail) == 0))
+ return false;
+ else
+ {
+ --position;
+ b = traits_inst.isctype(*position, m_word_mask);
+ ++position;
+ }
+ if(b)
+ {
+ pstate = pstate->next.p;
+ return true;
+ }
+ }
+ return false;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::match_word_start()
+{
+ if(position == last)
+ return false; // can't be starting a word if we're already at the end of input
+ if(!traits_inst.isctype(*position, m_word_mask))
+ return false; // next character isn't a word character
+ if((position == backstop) && ((m_match_flags & match_prev_avail) == 0))
+ {
+ if(m_match_flags & match_not_bow)
+ return false; // no previous input
+ }
+ else
+ {
+ // otherwise inside buffer:
+ BidiIterator t(position);
+ --t;
+ if(traits_inst.isctype(*t, m_word_mask))
+ return false; // previous character not non-word
+ }
+ // OK we have a match:
+ pstate = pstate->next.p;
+ return true;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::match_word_end()
+{
+ if((position == backstop) && ((m_match_flags & match_prev_avail) == 0))
+ return false; // start of buffer can't be end of word
+ BidiIterator t(position);
+ --t;
+ if(traits_inst.isctype(*t, m_word_mask) == false)
+ return false; // previous character wasn't a word character
+
+ if(position == last)
+ {
+ if(m_match_flags & match_not_eow)
+ return false; // end of buffer but not end of word
+ }
+ else
+ {
+ // otherwise inside buffer:
+ if(traits_inst.isctype(*position, m_word_mask))
+ return false; // next character is a word character
+ }
+ pstate = pstate->next.p;
+ return true; // if we fall through to here then we've succeeded
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::match_buffer_start()
+{
+ if((position != backstop) || (m_match_flags & match_not_bob))
+ return false;
+ // OK match:
+ pstate = pstate->next.p;
+ return true;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::match_buffer_end()
+{
+ if((position != last) || (m_match_flags & match_not_eob))
+ return false;
+ // OK match:
+ pstate = pstate->next.p;
+ return true;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::match_backref()
+{
+ //
+ // Compare with what we previously matched.
+ // Note that this succeeds if the backref did not partisipate
+ // in the match, this is in line with ECMAScript, but not Perl
+ // or PCRE.
+ //
+ BidiIterator i = (*m_presult)[static_cast<const re_brace*>(pstate)->index].first;
+ BidiIterator j = (*m_presult)[static_cast<const re_brace*>(pstate)->index].second;
+ while(i != j)
+ {
+ if((position == last) || (traits_inst.translate(*position, icase) != traits_inst.translate(*i, icase)))
+ return false;
+ ++i;
+ ++position;
+ }
+ pstate = pstate->next.p;
+ return true;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::match_long_set()
+{
+ typedef typename traits::char_class_type char_class_type;
+ // let the traits class do the work:
+ if(position == last)
+ return false;
+ BidiIterator t = re_is_set_member(position, last, static_cast<const re_set_long<char_class_type>*>(pstate), re.get_data(), icase);
+ if(t != position)
+ {
+ pstate = pstate->next.p;
+ position = t;
+ return true;
+ }
+ return false;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::match_set()
+{
+ if(position == last)
+ return false;
+ if(static_cast<const re_set*>(pstate)->_map[static_cast<unsigned char>(traits_inst.translate(*position, icase))])
+ {
+ pstate = pstate->next.p;
+ ++position;
+ return true;
+ }
+ return false;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::match_jump()
+{
+ pstate = static_cast<const re_jump*>(pstate)->alt.p;
+ return true;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::match_combining()
+{
+ if(position == last)
+ return false;
+ if(is_combining(traits_inst.translate(*position, icase)))
+ return false;
+ ++position;
+ while((position != last) && is_combining(traits_inst.translate(*position, icase)))
+ ++position;
+ pstate = pstate->next.p;
+ return true;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::match_soft_buffer_end()
+{
+ if(m_match_flags & match_not_eob)
+ return false;
+ BidiIterator p(position);
+ while((p != last) && is_separator(traits_inst.translate(*p, icase)))++p;
+ if(p != last)
+ return false;
+ pstate = pstate->next.p;
+ return true;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::match_restart_continue()
+{
+ if(position == search_base)
+ {
+ pstate = pstate->next.p;
+ return true;
+ }
+ return false;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::match_backstep()
+{
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4127)
+#endif
+ if( ::boost::is_random_access_iterator<BidiIterator>::value)
+ {
+ std::ptrdiff_t maxlen = ::boost::re_detail::distance(backstop, position);
+ if(maxlen < static_cast<const re_brace*>(pstate)->index)
+ return false;
+ std::advance(position, -static_cast<const re_brace*>(pstate)->index);
+ }
+ else
+ {
+ int c = static_cast<const re_brace*>(pstate)->index;
+ while(c--)
+ {
+ if(position == backstop)
+ return false;
+ --position;
+ }
+ }
+ pstate = pstate->next.p;
+ return true;
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+}
+
+template <class BidiIterator, class Allocator, class traits>
+inline bool perl_matcher<BidiIterator, Allocator, traits>::match_assert_backref()
+{
+ // return true if marked sub-expression N has been matched:
+ bool result = (*m_presult)[static_cast<const re_brace*>(pstate)->index].matched;
+ pstate = pstate->next.p;
+ return result;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::match_toggle_case()
+{
+ // change our case sensitivity:
+ this->icase = static_cast<const re_case*>(pstate)->icase;
+ pstate = pstate->next.p;
+ return true;
+}
+
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::find_restart_any()
+{
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4127)
+#endif
+ const unsigned char* _map = re.get_map();
+ while(true)
+ {
+ // skip everything we can't match:
+ while((position != last) && !can_start(*position, _map, (unsigned char)mask_any) )
+ ++position;
+ if(position == last)
+ {
+ // run out of characters, try a null match if possible:
+ if(re.can_be_null())
+ return match_prefix();
+ break;
+ }
+ // now try and obtain a match:
+ if(match_prefix())
+ return true;
+ if(position == last)
+ return false;
+ ++position;
+ }
+ return false;
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::find_restart_word()
+{
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4127)
+#endif
+ // do search optimised for word starts:
+ const unsigned char* _map = re.get_map();
+ if((m_match_flags & match_prev_avail) || (position != base))
+ --position;
+ else if(match_prefix())
+ return true;
+ do
+ {
+ while((position != last) && traits_inst.isctype(*position, m_word_mask))
+ ++position;
+ while((position != last) && !traits_inst.isctype(*position, m_word_mask))
+ ++position;
+ if(position == last)
+ break;
+
+ if(can_start(*position, _map, (unsigned char)mask_any) )
+ {
+ if(match_prefix())
+ return true;
+ }
+ if(position == last)
+ break;
+ } while(true);
+ return false;
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::find_restart_line()
+{
+ // do search optimised for line starts:
+ const unsigned char* _map = re.get_map();
+ if(match_prefix())
+ return true;
+ while(position != last)
+ {
+ while((position != last) && !is_separator(*position))
+ ++position;
+ if(position == last)
+ return false;
+ ++position;
+ if(position == last)
+ {
+ if(re.can_be_null() && match_prefix())
+ return true;
+ return false;
+ }
+
+ if( can_start(*position, _map, (unsigned char)mask_any) )
+ {
+ if(match_prefix())
+ return true;
+ }
+ if(position == last)
+ return false;
+ //++position;
+ }
+ return false;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::find_restart_buf()
+{
+ if((position == base) && ((m_match_flags & match_not_bob) == 0))
+ return match_prefix();
+ return false;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::find_restart_lit()
+{
+#if 0
+ if(position == last)
+ return false; // can't possibly match if we're at the end already
+
+ unsigned type = (m_match_flags & match_continuous) ?
+ static_cast<unsigned int>(regbase::restart_continue)
+ : static_cast<unsigned int>(re.get_restart_type());
+
+ const kmp_info<char_type>* info = access::get_kmp(re);
+ int len = info->len;
+ const char_type* x = info->pstr;
+ int j = 0;
+ while (position != last)
+ {
+ while((j > -1) && (x[j] != traits_inst.translate(*position, icase)))
+ j = info->kmp_next[j];
+ ++position;
+ ++j;
+ if(j >= len)
+ {
+ if(type == regbase::restart_fixed_lit)
+ {
+ std::advance(position, -j);
+ restart = position;
+ std::advance(restart, len);
+ m_result.set_first(position);
+ m_result.set_second(restart);
+ position = restart;
+ return true;
+ }
+ else
+ {
+ restart = position;
+ std::advance(position, -j);
+ if(match_prefix())
+ return true;
+ else
+ {
+ for(int k = 0; (restart != position) && (k < j); ++k, --restart)
+ {} // dwa 10/20/2000 - warning suppression for MWCW
+ if(restart != last)
+ ++restart;
+ position = restart;
+ j = 0; //we could do better than this...
+ }
+ }
+ }
+ }
+ if((m_match_flags & match_partial) && (position == last) && j)
+ {
+ // we need to check for a partial match:
+ restart = position;
+ std::advance(position, -j);
+ return match_prefix();
+ }
+#endif
+ return false;
+}
+
+} // namespace re_detail
+
+} // namespace boost
+
+#ifdef __BORLANDC__
+# pragma option pop
+#endif
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+
+#endif
+

Added: sandbox/SOC/2007/regex/named-captures/boost/regex/v4/perl_matcher_non_recursive.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/boost/regex/v4/perl_matcher_non_recursive.hpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,1367 @@
+/*
+ *
+ * Copyright (c) 2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE perl_matcher_common.cpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Definitions of perl_matcher member functions that are
+ * specific to the non-recursive implementation.
+ */
+
+#ifndef BOOST_REGEX_V4_PERL_MATCHER_NON_RECURSIVE_HPP
+#define BOOST_REGEX_V4_PERL_MATCHER_NON_RECURSIVE_HPP
+
+#include <new>
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+
+namespace boost{
+namespace re_detail{
+
+template <class T>
+inline void inplace_destroy(T* p)
+{
+ (void)p; // warning suppression
+ p->~T();
+}
+
+struct saved_state
+{
+ union{
+ unsigned int id;
+ // this padding ensures correct alignment on 64-bit platforms:
+ std::size_t padding1;
+ std::ptrdiff_t padding2;
+ void* padding3;
+ };
+ saved_state(unsigned i) : id(i) {}
+};
+
+template <class BidiIterator>
+struct saved_matched_paren : public saved_state
+{
+ int index;
+ sub_match<BidiIterator> sub;
+ saved_matched_paren(int i, const sub_match<BidiIterator>& s) : saved_state(1), index(i), sub(s){};
+};
+
+template <class BidiIterator>
+struct saved_position : public saved_state
+{
+ const re_syntax_base* pstate;
+ BidiIterator position;
+ saved_position(const re_syntax_base* ps, BidiIterator pos, int i) : saved_state(i), pstate(ps), position(pos){};
+};
+
+template <class BidiIterator>
+struct saved_assertion : public saved_position<BidiIterator>
+{
+ bool positive;
+ saved_assertion(bool p, const re_syntax_base* ps, BidiIterator pos)
+ : saved_position<BidiIterator>(ps, pos, saved_type_assertion), positive(p){};
+};
+
+template <class BidiIterator>
+struct saved_repeater : public saved_state
+{
+ repeater_count<BidiIterator> count;
+ saved_repeater(int i, repeater_count<BidiIterator>** s, BidiIterator start)
+ : saved_state(saved_state_repeater_count), count(i,s,start){}
+};
+
+struct saved_extra_block : public saved_state
+{
+ saved_state *base, *end;
+ saved_extra_block(saved_state* b, saved_state* e)
+ : saved_state(saved_state_extra_block), base(b), end(e) {}
+};
+
+struct save_state_init
+{
+ saved_state** stack;
+ save_state_init(saved_state** base, saved_state** end)
+ : stack(base)
+ {
+ *base = static_cast<saved_state*>(get_mem_block());
+ *end = reinterpret_cast<saved_state*>(reinterpret_cast<char*>(*base)+BOOST_REGEX_BLOCKSIZE);
+ --(*end);
+ (void) new (*end)saved_state(0);
+ BOOST_ASSERT(*end > *base);
+ }
+ ~save_state_init()
+ {
+ put_mem_block(*stack);
+ *stack = 0;
+ }
+};
+
+template <class BidiIterator>
+struct saved_single_repeat : public saved_state
+{
+ std::size_t count;
+ const re_repeat* rep;
+ BidiIterator last_position;
+ saved_single_repeat(std::size_t c, const re_repeat* r, BidiIterator lp, int arg_id)
+ : saved_state(arg_id), count(c), rep(r), last_position(lp){}
+};
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::match_all_states()
+{
+ static matcher_proc_type const s_match_vtable[29] =
+ {
+ (&perl_matcher<BidiIterator, Allocator, traits>::match_startmark),
+ &perl_matcher<BidiIterator, Allocator, traits>::match_endmark,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_literal,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_start_line,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_end_line,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_wild,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_match,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_word_boundary,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_within_word,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_word_start,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_word_end,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_buffer_start,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_buffer_end,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_backref,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_long_set,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_set,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_jump,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_alt,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_rep,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_combining,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_soft_buffer_end,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_restart_continue,
+ (::boost::is_random_access_iterator<BidiIterator>::value ? &perl_matcher<BidiIterator, Allocator, traits>::match_dot_repeat_fast : &perl_matcher<BidiIterator, Allocator, traits>::match_dot_repeat_slow),
+ &perl_matcher<BidiIterator, Allocator, traits>::match_char_repeat,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_set_repeat,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_long_set_repeat,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_backstep,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_assert_backref,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_toggle_case,
+ };
+
+ push_recursion_stopper();
+ do{
+ while(pstate)
+ {
+ matcher_proc_type proc = s_match_vtable[pstate->type];
+ ++state_count;
+ if(!(this->*proc)())
+ {
+ if(state_count > max_state_count)
+ raise_error(traits_inst, regex_constants::error_space);
+ if((m_match_flags & match_partial) && (position == last) && (position != search_base))
+ m_has_partial_match = true;
+ bool successful_unwind = unwind(false);
+ if((m_match_flags & match_partial) && (position == last) && (position != search_base))
+ m_has_partial_match = true;
+ if(false == successful_unwind)
+ return m_recursive_result;
+ }
+ }
+ }while(unwind(true));
+ return m_recursive_result;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+void perl_matcher<BidiIterator, Allocator, traits>::extend_stack()
+{
+ if(used_block_count)
+ {
+ --used_block_count;
+ saved_state* stack_base;
+ saved_state* backup_state;
+ stack_base = static_cast<saved_state*>(get_mem_block());
+ backup_state = reinterpret_cast<saved_state*>(reinterpret_cast<char*>(stack_base)+BOOST_REGEX_BLOCKSIZE);
+ saved_extra_block* block = static_cast<saved_extra_block*>(backup_state);
+ --block;
+ (void) new (block) saved_extra_block(m_stack_base, m_backup_state);
+ m_stack_base = stack_base;
+ m_backup_state = block;
+ }
+ else
+ raise_error(traits_inst, regex_constants::error_size);
+}
+
+template <class BidiIterator, class Allocator, class traits>
+inline void perl_matcher<BidiIterator, Allocator, traits>::push_matched_paren(int index, const sub_match<BidiIterator>& sub)
+{
+ BOOST_ASSERT(index);
+ saved_matched_paren<BidiIterator>* pmp = static_cast<saved_matched_paren<BidiIterator>*>(m_backup_state);
+ --pmp;
+ if(pmp < m_stack_base)
+ {
+ extend_stack();
+ pmp = static_cast<saved_matched_paren<BidiIterator>*>(m_backup_state);
+ --pmp;
+ }
+ (void) new (pmp)saved_matched_paren<BidiIterator>(index, sub);
+ m_backup_state = pmp;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+inline void perl_matcher<BidiIterator, Allocator, traits>::push_recursion_stopper()
+{
+ saved_state* pmp = m_backup_state;
+ --pmp;
+ if(pmp < m_stack_base)
+ {
+ extend_stack();
+ pmp = m_backup_state;
+ --pmp;
+ }
+ (void) new (pmp)saved_state(saved_type_recurse);
+ m_backup_state = pmp;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+inline void perl_matcher<BidiIterator, Allocator, traits>::push_assertion(const re_syntax_base* ps, bool positive)
+{
+ saved_assertion<BidiIterator>* pmp = static_cast<saved_assertion<BidiIterator>*>(m_backup_state);
+ --pmp;
+ if(pmp < m_stack_base)
+ {
+ extend_stack();
+ pmp = static_cast<saved_assertion<BidiIterator>*>(m_backup_state);
+ --pmp;
+ }
+ (void) new (pmp)saved_assertion<BidiIterator>(positive, ps, position);
+ m_backup_state = pmp;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+inline void perl_matcher<BidiIterator, Allocator, traits>::push_alt(const re_syntax_base* ps)
+{
+ saved_position<BidiIterator>* pmp = static_cast<saved_position<BidiIterator>*>(m_backup_state);
+ --pmp;
+ if(pmp < m_stack_base)
+ {
+ extend_stack();
+ pmp = static_cast<saved_position<BidiIterator>*>(m_backup_state);
+ --pmp;
+ }
+ (void) new (pmp)saved_position<BidiIterator>(ps, position, saved_state_alt);
+ m_backup_state = pmp;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+inline void perl_matcher<BidiIterator, Allocator, traits>::push_non_greedy_repeat(const re_syntax_base* ps)
+{
+ saved_position<BidiIterator>* pmp = static_cast<saved_position<BidiIterator>*>(m_backup_state);
+ --pmp;
+ if(pmp < m_stack_base)
+ {
+ extend_stack();
+ pmp = static_cast<saved_position<BidiIterator>*>(m_backup_state);
+ --pmp;
+ }
+ (void) new (pmp)saved_position<BidiIterator>(ps, position, saved_state_non_greedy_long_repeat);
+ m_backup_state = pmp;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+inline void perl_matcher<BidiIterator, Allocator, traits>::push_repeater_count(int i, repeater_count<BidiIterator>** s)
+{
+ saved_repeater<BidiIterator>* pmp = static_cast<saved_repeater<BidiIterator>*>(m_backup_state);
+ --pmp;
+ if(pmp < m_stack_base)
+ {
+ extend_stack();
+ pmp = static_cast<saved_repeater<BidiIterator>*>(m_backup_state);
+ --pmp;
+ }
+ (void) new (pmp)saved_repeater<BidiIterator>(i, s, position);
+ m_backup_state = pmp;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+inline void perl_matcher<BidiIterator, Allocator, traits>::push_single_repeat(std::size_t c, const re_repeat* r, BidiIterator last_position, int id)
+{
+ saved_single_repeat<BidiIterator>* pmp = static_cast<saved_single_repeat<BidiIterator>*>(m_backup_state);
+ --pmp;
+ if(pmp < m_stack_base)
+ {
+ extend_stack();
+ pmp = static_cast<saved_single_repeat<BidiIterator>*>(m_backup_state);
+ --pmp;
+ }
+ (void) new (pmp)saved_single_repeat<BidiIterator>(c, r, last_position, id);
+ m_backup_state = pmp;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::match_startmark()
+{
+ int index = static_cast<const re_brace*>(pstate)->index;
+ switch(index)
+ {
+ case 0:
+ pstate = pstate->next.p;
+ break;
+ case -1:
+ case -2:
+ {
+ // forward lookahead assert:
+ const re_syntax_base* next_pstate = static_cast<const re_jump*>(pstate->next.p)->alt.p->next.p;
+ pstate = pstate->next.p->next.p;
+ push_assertion(next_pstate, index == -1);
+ break;
+ }
+ case -3:
+ {
+ // independent sub-expression, currently this is always recursive:
+ bool old_independent = m_independent;
+ m_independent = true;
+ const re_syntax_base* next_pstate = static_cast<const re_jump*>(pstate->next.p)->alt.p->next.p;
+ pstate = pstate->next.p->next.p;
+ bool r = match_all_states();
+ pstate = next_pstate;
+ m_independent = old_independent;
+#ifdef BOOST_REGEX_MATCH_EXTRA
+ if(r && (m_match_flags & match_extra))
+ {
+ //
+ // our captures have been stored in *m_presult
+ // we need to unpack them, and insert them
+ // back in the right order when we unwind the stack:
+ //
+ match_results<BidiIterator, Allocator> temp_match(*m_presult);
+ unsigned i;
+ for(i = 0; i < temp_match.size(); ++i)
+ (*m_presult)[i].get_captures().clear();
+ // match everything else:
+ r = match_all_states();
+ // now place the stored captures back:
+ for(i = 0; i < temp_match.size(); ++i)
+ {
+ typedef typename sub_match<BidiIterator>::capture_sequence_type seq;
+ seq& s1 = (*m_presult)[i].get_captures();
+ const seq& s2 = temp_match[i].captures();
+ s1.insert(
+ s1.end(),
+ s2.begin(),
+ s2.end());
+ }
+ }
+#endif
+ return r;
+ }
+ case -4:
+ {
+ // conditional expression:
+ const re_alt* alt = static_cast<const re_alt*>(pstate->next.p);
+ BOOST_ASSERT(alt->type == syntax_element_alt);
+ pstate = alt->next.p;
+ if(pstate->type == syntax_element_assert_backref)
+ {
+ if(!match_assert_backref())
+ pstate = alt->alt.p;
+ break;
+ }
+ else
+ {
+ // zero width assertion, have to match this recursively:
+ BOOST_ASSERT(pstate->type == syntax_element_startmark);
+ bool negated = static_cast<const re_brace*>(pstate)->index == -2;
+ BidiIterator saved_position = position;
+ const re_syntax_base* next_pstate = static_cast<const re_jump*>(pstate->next.p)->alt.p->next.p;
+ pstate = pstate->next.p->next.p;
+ bool r = match_all_states();
+ position = saved_position;
+ if(negated)
+ r = !r;
+ if(r)
+ pstate = next_pstate;
+ else
+ pstate = alt->alt.p;
+ break;
+ }
+ }
+ default:
+ {
+ BOOST_ASSERT(index > 0);
+ if((m_match_flags & match_nosubs) == 0)
+ {
+ push_matched_paren(index, (*m_presult)[index]);
+ m_presult->set_first(position, index);
+ }
+ pstate = pstate->next.p;
+ break;
+ }
+ }
+ return true;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::match_alt()
+{
+ bool take_first, take_second;
+ const re_alt* jmp = static_cast<const re_alt*>(pstate);
+
+ // find out which of these two alternatives we need to take:
+ if(position == last)
+ {
+ take_first = jmp->can_be_null & mask_take;
+ take_second = jmp->can_be_null & mask_skip;
+ }
+ else
+ {
+ take_first = can_start(*position, jmp->_map, (unsigned char)mask_take);
+ take_second = can_start(*position, jmp->_map, (unsigned char)mask_skip);
+ }
+
+ if(take_first)
+ {
+ // we can take the first alternative,
+ // see if we need to push next alternative:
+ if(take_second)
+ {
+ push_alt(jmp->alt.p);
+ }
+ pstate = pstate->next.p;
+ return true;
+ }
+ if(take_second)
+ {
+ pstate = jmp->alt.p;
+ return true;
+ }
+ return false; // neither option is possible
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::match_rep()
+{
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4127 4244)
+#endif
+#ifdef __BORLANDC__
+#pragma option push -w-8008 -w-8066 -w-8004
+#endif
+ const re_repeat* rep = static_cast<const re_repeat*>(pstate);
+
+ // find out which of these two alternatives we need to take:
+ bool take_first, take_second;
+ if(position == last)
+ {
+ take_first = rep->can_be_null & mask_take;
+ take_second = rep->can_be_null & mask_skip;
+ }
+ else
+ {
+ take_first = can_start(*position, rep->_map, (unsigned char)mask_take);
+ take_second = can_start(*position, rep->_map, (unsigned char)mask_skip);
+ }
+
+ if(take_first || (next_count->get_id() != rep->id))
+ {
+ // we're moving to a different repeat from the last
+ // one, so set up a counter object:
+ push_repeater_count(rep->id, &next_count);
+ }
+ //
+ // If we've had at least one repeat already, and the last one
+ // matched the NULL string then set the repeat count to
+ // maximum:
+ //
+ next_count->check_null_repeat(position, rep->max);
+
+ if(next_count->get_count() < rep->min)
+ {
+ // we must take the repeat:
+ if(take_first)
+ {
+ // increase the counter:
+ ++(*next_count);
+ pstate = rep->next.p;
+ return true;
+ }
+ return false;
+ }
+
+ bool greedy = (rep->greedy) && (!(m_match_flags & regex_constants::match_any) || m_independent);
+ if(greedy)
+ {
+ // try and take the repeat if we can:
+ if((next_count->get_count() < rep->max) && take_first)
+ {
+ if(take_second)
+ {
+ // store position in case we fail:
+ push_alt(rep->alt.p);
+ }
+ // increase the counter:
+ ++(*next_count);
+ pstate = rep->next.p;
+ return true;
+ }
+ else if(take_second)
+ {
+ pstate = rep->alt.p;
+ return true;
+ }
+ return false; // can't take anything, fail...
+ }
+ else // non-greedy
+ {
+ // try and skip the repeat if we can:
+ if(take_second)
+ {
+ if((next_count->get_count() < rep->max) && take_first)
+ {
+ // store position in case we fail:
+ push_non_greedy_repeat(rep->next.p);
+ }
+ pstate = rep->alt.p;
+ return true;
+ }
+ if((next_count->get_count() < rep->max) && take_first)
+ {
+ // increase the counter:
+ ++(*next_count);
+ pstate = rep->next.p;
+ return true;
+ }
+ }
+ return false;
+#ifdef __BORLANDC__
+#pragma option pop
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::match_dot_repeat_slow()
+{
+ unsigned count = 0;
+ const re_repeat* rep = static_cast<const re_repeat*>(pstate);
+ re_syntax_base* psingle = rep->next.p;
+ // match compulsary repeats first:
+ while(count < rep->min)
+ {
+ pstate = psingle;
+ if(!match_wild())
+ return false;
+ ++count;
+ }
+ bool greedy = (rep->greedy) && (!(m_match_flags & regex_constants::match_any) || m_independent);
+ if(greedy)
+ {
+ // repeat for as long as we can:
+ while(count < rep->max)
+ {
+ pstate = psingle;
+ if(!match_wild())
+ break;
+ ++count;
+ }
+ // remember where we got to if this is a leading repeat:
+ if((rep->leading) && (count < rep->max))
+ restart = position;
+ // push backtrack info if available:
+ if(count - rep->min)
+ push_single_repeat(count, rep, position, saved_state_greedy_single_repeat);
+ // jump to next state:
+ pstate = rep->alt.p;
+ return true;
+ }
+ else
+ {
+ // non-greedy, push state and return true if we can skip:
+ if(count < rep->max)
+ push_single_repeat(count, rep, position, saved_state_rep_slow_dot);
+ pstate = rep->alt.p;
+ return (position == last) ? (rep->can_be_null & mask_skip) : can_start(*position, rep->_map, mask_skip);
+ }
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::match_dot_repeat_fast()
+{
+ if(m_match_flags & match_not_dot_null)
+ return match_dot_repeat_slow();
+ if((static_cast<const re_dot*>(pstate->next.p)->mask & match_any_mask) == 0)
+ return match_dot_repeat_slow();
+
+ const re_repeat* rep = static_cast<const re_repeat*>(pstate);
+ bool greedy = (rep->greedy) && (!(m_match_flags & regex_constants::match_any) || m_independent);
+ unsigned count = static_cast<unsigned>((std::min)(static_cast<unsigned>(::boost::re_detail::distance(position, last)), static_cast<unsigned>(greedy ? rep->max : rep->min)));
+ if(rep->min > count)
+ {
+ position = last;
+ return false; // not enough text left to match
+ }
+ std::advance(position, count);
+
+ if(greedy)
+ {
+ if((rep->leading) && (count < rep->max))
+ restart = position;
+ // push backtrack info if available:
+ if(count - rep->min)
+ push_single_repeat(count, rep, position, saved_state_greedy_single_repeat);
+ // jump to next state:
+ pstate = rep->alt.p;
+ return true;
+ }
+ else
+ {
+ // non-greedy, push state and return true if we can skip:
+ if(count < rep->max)
+ push_single_repeat(count, rep, position, saved_state_rep_fast_dot);
+ pstate = rep->alt.p;
+ return (position == last) ? (rep->can_be_null & mask_skip) : can_start(*position, rep->_map, mask_skip);
+ }
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::match_char_repeat()
+{
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4127)
+#endif
+#ifdef __BORLANDC__
+#pragma option push -w-8008 -w-8066 -w-8004
+#endif
+ const re_repeat* rep = static_cast<const re_repeat*>(pstate);
+ BOOST_ASSERT(1 == static_cast<const re_literal*>(rep->next.p)->length);
+ const char_type what = *reinterpret_cast<const char_type*>(static_cast<const re_literal*>(rep->next.p) + 1);
+ std::size_t count = 0;
+ //
+ // start by working out how much we can skip:
+ //
+ bool greedy = (rep->greedy) && (!(m_match_flags & regex_constants::match_any) || m_independent);
+ std::size_t desired = greedy ? rep->max : rep->min;
+ if(::boost::is_random_access_iterator<BidiIterator>::value)
+ {
+ BidiIterator end = position;
+ std::advance(end, (std::min)((std::size_t)::boost::re_detail::distance(position, last), desired));
+ BidiIterator origin(position);
+ while((position != end) && (traits_inst.translate(*position, icase) == what))
+ {
+ ++position;
+ }
+ count = (unsigned)::boost::re_detail::distance(origin, position);
+ }
+ else
+ {
+ while((count < desired) && (position != last) && (traits_inst.translate(*position, icase) == what))
+ {
+ ++position;
+ ++count;
+ }
+ }
+
+ if(count < rep->min)
+ return false;
+
+ if(greedy)
+ {
+ if((rep->leading) && (count < rep->max))
+ restart = position;
+ // push backtrack info if available:
+ if(count - rep->min)
+ push_single_repeat(count, rep, position, saved_state_greedy_single_repeat);
+ // jump to next state:
+ pstate = rep->alt.p;
+ return true;
+ }
+ else
+ {
+ // non-greedy, push state and return true if we can skip:
+ if(count < rep->max)
+ push_single_repeat(count, rep, position, saved_state_rep_char);
+ pstate = rep->alt.p;
+ return (position == last) ? (rep->can_be_null & mask_skip) : can_start(*position, rep->_map, mask_skip);
+ }
+#ifdef __BORLANDC__
+#pragma option pop
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::match_set_repeat()
+{
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4127)
+#endif
+#ifdef __BORLANDC__
+#pragma option push -w-8008 -w-8066 -w-8004
+#endif
+ const re_repeat* rep = static_cast<const re_repeat*>(pstate);
+ const unsigned char* map = static_cast<const re_set*>(rep->next.p)->_map;
+ std::size_t count = 0;
+ //
+ // start by working out how much we can skip:
+ //
+ bool greedy = (rep->greedy) && (!(m_match_flags & regex_constants::match_any) || m_independent);
+ std::size_t desired = greedy ? rep->max : rep->min;
+ if(::boost::is_random_access_iterator<BidiIterator>::value)
+ {
+ BidiIterator end = position;
+ std::advance(end, (std::min)((std::size_t)::boost::re_detail::distance(position, last), desired));
+ BidiIterator origin(position);
+ while((position != end) && map[static_cast<unsigned char>(traits_inst.translate(*position, icase))])
+ {
+ ++position;
+ }
+ count = (unsigned)::boost::re_detail::distance(origin, position);
+ }
+ else
+ {
+ while((count < desired) && (position != last) && map[static_cast<unsigned char>(traits_inst.translate(*position, icase))])
+ {
+ ++position;
+ ++count;
+ }
+ }
+
+ if(count < rep->min)
+ return false;
+
+ if(greedy)
+ {
+ if((rep->leading) && (count < rep->max))
+ restart = position;
+ // push backtrack info if available:
+ if(count - rep->min)
+ push_single_repeat(count, rep, position, saved_state_greedy_single_repeat);
+ // jump to next state:
+ pstate = rep->alt.p;
+ return true;
+ }
+ else
+ {
+ // non-greedy, push state and return true if we can skip:
+ if(count < rep->max)
+ push_single_repeat(count, rep, position, saved_state_rep_short_set);
+ pstate = rep->alt.p;
+ return (position == last) ? (rep->can_be_null & mask_skip) : can_start(*position, rep->_map, mask_skip);
+ }
+#ifdef __BORLANDC__
+#pragma option pop
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::match_long_set_repeat()
+{
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4127)
+#endif
+#ifdef __BORLANDC__
+#pragma option push -w-8008 -w-8066 -w-8004
+#endif
+ typedef typename traits::char_class_type mask_type;
+ const re_repeat* rep = static_cast<const re_repeat*>(pstate);
+ const re_set_long<mask_type>* set = static_cast<const re_set_long<mask_type>*>(pstate->next.p);
+ std::size_t count = 0;
+ //
+ // start by working out how much we can skip:
+ //
+ bool greedy = (rep->greedy) && (!(m_match_flags & regex_constants::match_any) || m_independent);
+ std::size_t desired = greedy ? rep->max : rep->min;
+ if(::boost::is_random_access_iterator<BidiIterator>::value)
+ {
+ BidiIterator end = position;
+ std::advance(end, (std::min)((std::size_t)::boost::re_detail::distance(position, last), desired));
+ BidiIterator origin(position);
+ while((position != end) && (position != re_is_set_member(position, last, set, re.get_data(), icase)))
+ {
+ ++position;
+ }
+ count = (unsigned)::boost::re_detail::distance(origin, position);
+ }
+ else
+ {
+ while((count < desired) && (position != last) && (position != re_is_set_member(position, last, set, re.get_data(), icase)))
+ {
+ ++position;
+ ++count;
+ }
+ }
+
+ if(count < rep->min)
+ return false;
+
+ if(greedy)
+ {
+ if((rep->leading) && (count < rep->max))
+ restart = position;
+ // push backtrack info if available:
+ if(count - rep->min)
+ push_single_repeat(count, rep, position, saved_state_greedy_single_repeat);
+ // jump to next state:
+ pstate = rep->alt.p;
+ return true;
+ }
+ else
+ {
+ // non-greedy, push state and return true if we can skip:
+ if(count < rep->max)
+ push_single_repeat(count, rep, position, saved_state_rep_long_set);
+ pstate = rep->alt.p;
+ return (position == last) ? (rep->can_be_null & mask_skip) : can_start(*position, rep->_map, mask_skip);
+ }
+#ifdef __BORLANDC__
+#pragma option pop
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+}
+
+/****************************************************************************
+
+Unwind and associated proceedures follow, these perform what normal stack
+unwinding does in the recursive implementation.
+
+****************************************************************************/
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::unwind(bool have_match)
+{
+ static unwind_proc_type const s_unwind_table[14] =
+ {
+ &perl_matcher<BidiIterator, Allocator, traits>::unwind_end,
+ &perl_matcher<BidiIterator, Allocator, traits>::unwind_paren,
+ &perl_matcher<BidiIterator, Allocator, traits>::unwind_recursion_stopper,
+ &perl_matcher<BidiIterator, Allocator, traits>::unwind_assertion,
+ &perl_matcher<BidiIterator, Allocator, traits>::unwind_alt,
+ &perl_matcher<BidiIterator, Allocator, traits>::unwind_repeater_counter,
+ &perl_matcher<BidiIterator, Allocator, traits>::unwind_extra_block,
+ &perl_matcher<BidiIterator, Allocator, traits>::unwind_greedy_single_repeat,
+ &perl_matcher<BidiIterator, Allocator, traits>::unwind_slow_dot_repeat,
+ &perl_matcher<BidiIterator, Allocator, traits>::unwind_fast_dot_repeat,
+ &perl_matcher<BidiIterator, Allocator, traits>::unwind_char_repeat,
+ &perl_matcher<BidiIterator, Allocator, traits>::unwind_short_set_repeat,
+ &perl_matcher<BidiIterator, Allocator, traits>::unwind_long_set_repeat,
+ &perl_matcher<BidiIterator, Allocator, traits>::unwind_non_greedy_repeat,
+ };
+
+ m_recursive_result = have_match;
+ unwind_proc_type unwinder;
+ bool cont;
+ //
+ // keep unwinding our stack until we have something to do:
+ //
+ do
+ {
+ unwinder = s_unwind_table[m_backup_state->id];
+ cont = (this->*unwinder)(m_recursive_result);
+ }while(cont);
+ //
+ // return true if we have more states to try:
+ //
+ return pstate ? true : false;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::unwind_end(bool)
+{
+ pstate = 0; // nothing left to search
+ return false; // end of stack nothing more to search
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::unwind_paren(bool have_match)
+{
+ saved_matched_paren<BidiIterator>* pmp = static_cast<saved_matched_paren<BidiIterator>*>(m_backup_state);
+ // restore previous values if no match was found:
+ if(have_match == false)
+ {
+ m_presult->set_first(pmp->sub.first, pmp->index);
+ m_presult->set_second(pmp->sub.second, pmp->index, pmp->sub.matched);
+ }
+#ifdef BOOST_REGEX_MATCH_EXTRA
+ //
+ // we have a match, push the capture information onto the stack:
+ //
+ else if(pmp->sub.matched && (match_extra & m_match_flags))
+ ((*m_presult)[pmp->index]).get_captures().push_back(pmp->sub);
+#endif
+ // unwind stack:
+ m_backup_state = pmp+1;
+ boost::re_detail::inplace_destroy(pmp);
+ return true; // keep looking
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::unwind_recursion_stopper(bool)
+{
+ boost::re_detail::inplace_destroy(m_backup_state++);
+ pstate = 0; // nothing left to search
+ return false; // end of stack nothing more to search
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::unwind_assertion(bool r)
+{
+ saved_assertion<BidiIterator>* pmp = static_cast<saved_assertion<BidiIterator>*>(m_backup_state);
+ pstate = pmp->pstate;
+ position = pmp->position;
+ bool result = (r == pmp->positive);
+ m_recursive_result = pmp->positive ? r : !r;
+ boost::re_detail::inplace_destroy(pmp++);
+ m_backup_state = pmp;
+ return !result; // return false if the assertion was matched to stop search.
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::unwind_alt(bool r)
+{
+ saved_position<BidiIterator>* pmp = static_cast<saved_position<BidiIterator>*>(m_backup_state);
+ if(!r)
+ {
+ pstate = pmp->pstate;
+ position = pmp->position;
+ }
+ boost::re_detail::inplace_destroy(pmp++);
+ m_backup_state = pmp;
+ return r;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::unwind_repeater_counter(bool)
+{
+ saved_repeater<BidiIterator>* pmp = static_cast<saved_repeater<BidiIterator>*>(m_backup_state);
+ boost::re_detail::inplace_destroy(pmp++);
+ m_backup_state = pmp;
+ return true; // keep looking
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::unwind_extra_block(bool)
+{
+ saved_extra_block* pmp = static_cast<saved_extra_block*>(m_backup_state);
+ void* condemmed = m_stack_base;
+ m_stack_base = pmp->base;
+ m_backup_state = pmp->end;
+ boost::re_detail::inplace_destroy(pmp);
+ put_mem_block(condemmed);
+ return true; // keep looking
+}
+
+template <class BidiIterator, class Allocator, class traits>
+inline void perl_matcher<BidiIterator, Allocator, traits>::destroy_single_repeat()
+{
+ saved_single_repeat<BidiIterator>* p = static_cast<saved_single_repeat<BidiIterator>*>(m_backup_state);
+ boost::re_detail::inplace_destroy(p++);
+ m_backup_state = p;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::unwind_greedy_single_repeat(bool r)
+{
+ saved_single_repeat<BidiIterator>* pmp = static_cast<saved_single_repeat<BidiIterator>*>(m_backup_state);
+
+ // if we have a match, just discard this state:
+ if(r)
+ {
+ destroy_single_repeat();
+ return true;
+ }
+
+ const re_repeat* rep = pmp->rep;
+ std::size_t count = pmp->count;
+ BOOST_ASSERT(rep->next.p != 0);
+ BOOST_ASSERT(rep->alt.p != 0);
+
+ count -= rep->min;
+
+ if((m_match_flags & match_partial) && (position == last))
+ m_has_partial_match = true;
+
+ BOOST_ASSERT(count);
+ position = pmp->last_position;
+
+ // backtrack till we can skip out:
+ do
+ {
+ --position;
+ --count;
+ ++state_count;
+ }while(count && !can_start(*position, rep->_map, mask_skip));
+
+ // if we've hit base, destroy this state:
+ if(count == 0)
+ {
+ destroy_single_repeat();
+ if(!can_start(*position, rep->_map, mask_skip))
+ return true;
+ }
+ else
+ {
+ pmp->count = count + rep->min;
+ pmp->last_position = position;
+ }
+ pstate = rep->alt.p;
+ return false;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::unwind_slow_dot_repeat(bool r)
+{
+ saved_single_repeat<BidiIterator>* pmp = static_cast<saved_single_repeat<BidiIterator>*>(m_backup_state);
+
+ // if we have a match, just discard this state:
+ if(r)
+ {
+ destroy_single_repeat();
+ return true;
+ }
+
+ const re_repeat* rep = pmp->rep;
+ std::size_t count = pmp->count;
+ BOOST_ASSERT(rep->type == syntax_element_dot_rep);
+ BOOST_ASSERT(rep->next.p != 0);
+ BOOST_ASSERT(rep->alt.p != 0);
+ BOOST_ASSERT(rep->next.p->type == syntax_element_wild);
+
+ BOOST_ASSERT(count < rep->max);
+ pstate = rep->next.p;
+ position = pmp->last_position;
+
+ if(position != last)
+ {
+ // wind forward until we can skip out of the repeat:
+ do
+ {
+ if(!match_wild())
+ {
+ // failed repeat match, discard this state and look for another:
+ destroy_single_repeat();
+ return true;
+ }
+ ++count;
+ ++state_count;
+ pstate = rep->next.p;
+ }while((count < rep->max) && (position != last) && !can_start(*position, rep->_map, mask_skip));
+ }
+ if(position == last)
+ {
+ // can't repeat any more, remove the pushed state:
+ destroy_single_repeat();
+ if((m_match_flags & match_partial) && (position == last) && (position != search_base))
+ m_has_partial_match = true;
+ if(0 == (rep->can_be_null & mask_skip))
+ return true;
+ }
+ else if(count == rep->max)
+ {
+ // can't repeat any more, remove the pushed state:
+ destroy_single_repeat();
+ if(!can_start(*position, rep->_map, mask_skip))
+ return true;
+ }
+ else
+ {
+ pmp->count = count;
+ pmp->last_position = position;
+ }
+ pstate = rep->alt.p;
+ return false;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::unwind_fast_dot_repeat(bool r)
+{
+ saved_single_repeat<BidiIterator>* pmp = static_cast<saved_single_repeat<BidiIterator>*>(m_backup_state);
+
+ // if we have a match, just discard this state:
+ if(r)
+ {
+ destroy_single_repeat();
+ return true;
+ }
+
+ const re_repeat* rep = pmp->rep;
+ std::size_t count = pmp->count;
+
+ BOOST_ASSERT(count < rep->max);
+ position = pmp->last_position;
+ if(position != last)
+ {
+
+ // wind forward until we can skip out of the repeat:
+ do
+ {
+ ++position;
+ ++count;
+ ++state_count;
+ }while((count < rep->max) && (position != last) && !can_start(*position, rep->_map, mask_skip));
+ }
+
+ if(position == last)
+ {
+ // can't repeat any more, remove the pushed state:
+ destroy_single_repeat();
+ if((m_match_flags & match_partial) && (position == last) && (position != search_base))
+ m_has_partial_match = true;
+ if(0 == (rep->can_be_null & mask_skip))
+ return true;
+ }
+ else if(count == rep->max)
+ {
+ // can't repeat any more, remove the pushed state:
+ destroy_single_repeat();
+ if(!can_start(*position, rep->_map, mask_skip))
+ return true;
+ }
+ else
+ {
+ pmp->count = count;
+ pmp->last_position = position;
+ }
+ pstate = rep->alt.p;
+ return false;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::unwind_char_repeat(bool r)
+{
+ saved_single_repeat<BidiIterator>* pmp = static_cast<saved_single_repeat<BidiIterator>*>(m_backup_state);
+
+ // if we have a match, just discard this state:
+ if(r)
+ {
+ destroy_single_repeat();
+ return true;
+ }
+
+ const re_repeat* rep = pmp->rep;
+ std::size_t count = pmp->count;
+ pstate = rep->next.p;
+ const char_type what = *reinterpret_cast<const char_type*>(static_cast<const re_literal*>(pstate) + 1);
+ position = pmp->last_position;
+
+ BOOST_ASSERT(rep->type == syntax_element_char_rep);
+ BOOST_ASSERT(rep->next.p != 0);
+ BOOST_ASSERT(rep->alt.p != 0);
+ BOOST_ASSERT(rep->next.p->type == syntax_element_literal);
+ BOOST_ASSERT(count < rep->max);
+
+ if(position != last)
+ {
+ // wind forward until we can skip out of the repeat:
+ do
+ {
+ if(traits_inst.translate(*position, icase) != what)
+ {
+ // failed repeat match, discard this state and look for another:
+ destroy_single_repeat();
+ return true;
+ }
+ ++count;
+ ++ position;
+ ++state_count;
+ pstate = rep->next.p;
+ }while((count < rep->max) && (position != last) && !can_start(*position, rep->_map, mask_skip));
+ }
+ if(position == last)
+ {
+ // can't repeat any more, remove the pushed state:
+ destroy_single_repeat();
+ if((m_match_flags & match_partial) && (position == last) && (position != search_base))
+ m_has_partial_match = true;
+ if(0 == (rep->can_be_null & mask_skip))
+ return true;
+ }
+ else if(count == rep->max)
+ {
+ // can't repeat any more, remove the pushed state:
+ destroy_single_repeat();
+ if(!can_start(*position, rep->_map, mask_skip))
+ return true;
+ }
+ else
+ {
+ pmp->count = count;
+ pmp->last_position = position;
+ }
+ pstate = rep->alt.p;
+ return false;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::unwind_short_set_repeat(bool r)
+{
+ saved_single_repeat<BidiIterator>* pmp = static_cast<saved_single_repeat<BidiIterator>*>(m_backup_state);
+
+ // if we have a match, just discard this state:
+ if(r)
+ {
+ destroy_single_repeat();
+ return true;
+ }
+
+ const re_repeat* rep = pmp->rep;
+ std::size_t count = pmp->count;
+ pstate = rep->next.p;
+ const unsigned char* map = static_cast<const re_set*>(rep->next.p)->_map;
+ position = pmp->last_position;
+
+ BOOST_ASSERT(rep->type == syntax_element_short_set_rep);
+ BOOST_ASSERT(rep->next.p != 0);
+ BOOST_ASSERT(rep->alt.p != 0);
+ BOOST_ASSERT(rep->next.p->type == syntax_element_set);
+ BOOST_ASSERT(count < rep->max);
+
+ if(position != last)
+ {
+ // wind forward until we can skip out of the repeat:
+ do
+ {
+ if(!map[static_cast<unsigned char>(traits_inst.translate(*position, icase))])
+ {
+ // failed repeat match, discard this state and look for another:
+ destroy_single_repeat();
+ return true;
+ }
+ ++count;
+ ++ position;
+ ++state_count;
+ pstate = rep->next.p;
+ }while((count < rep->max) && (position != last) && !can_start(*position, rep->_map, mask_skip));
+ }
+ if(position == last)
+ {
+ // can't repeat any more, remove the pushed state:
+ destroy_single_repeat();
+ if((m_match_flags & match_partial) && (position == last) && (position != search_base))
+ m_has_partial_match = true;
+ if(0 == (rep->can_be_null & mask_skip))
+ return true;
+ }
+ else if(count == rep->max)
+ {
+ // can't repeat any more, remove the pushed state:
+ destroy_single_repeat();
+ if(!can_start(*position, rep->_map, mask_skip))
+ return true;
+ }
+ else
+ {
+ pmp->count = count;
+ pmp->last_position = position;
+ }
+ pstate = rep->alt.p;
+ return false;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::unwind_long_set_repeat(bool r)
+{
+ typedef typename traits::char_class_type mask_type;
+ saved_single_repeat<BidiIterator>* pmp = static_cast<saved_single_repeat<BidiIterator>*>(m_backup_state);
+
+ // if we have a match, just discard this state:
+ if(r)
+ {
+ destroy_single_repeat();
+ return true;
+ }
+
+ const re_repeat* rep = pmp->rep;
+ std::size_t count = pmp->count;
+ pstate = rep->next.p;
+ const re_set_long<mask_type>* set = static_cast<const re_set_long<mask_type>*>(pstate);
+ position = pmp->last_position;
+
+ BOOST_ASSERT(rep->type == syntax_element_long_set_rep);
+ BOOST_ASSERT(rep->next.p != 0);
+ BOOST_ASSERT(rep->alt.p != 0);
+ BOOST_ASSERT(rep->next.p->type == syntax_element_long_set);
+ BOOST_ASSERT(count < rep->max);
+
+ if(position != last)
+ {
+ // wind forward until we can skip out of the repeat:
+ do
+ {
+ if(position == re_is_set_member(position, last, set, re.get_data(), icase))
+ {
+ // failed repeat match, discard this state and look for another:
+ destroy_single_repeat();
+ return true;
+ }
+ ++position;
+ ++count;
+ ++state_count;
+ pstate = rep->next.p;
+ }while((count < rep->max) && (position != last) && !can_start(*position, rep->_map, mask_skip));
+ }
+ if(position == last)
+ {
+ // can't repeat any more, remove the pushed state:
+ destroy_single_repeat();
+ if((m_match_flags & match_partial) && (position == last) && (position != search_base))
+ m_has_partial_match = true;
+ if(0 == (rep->can_be_null & mask_skip))
+ return true;
+ }
+ else if(count == rep->max)
+ {
+ // can't repeat any more, remove the pushed state:
+ destroy_single_repeat();
+ if(!can_start(*position, rep->_map, mask_skip))
+ return true;
+ }
+ else
+ {
+ pmp->count = count;
+ pmp->last_position = position;
+ }
+ pstate = rep->alt.p;
+ return false;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::unwind_non_greedy_repeat(bool r)
+{
+ saved_position<BidiIterator>* pmp = static_cast<saved_position<BidiIterator>*>(m_backup_state);
+ if(!r)
+ {
+ position = pmp->position;
+ pstate = pmp->pstate;
+ ++(*next_count);
+ }
+ boost::re_detail::inplace_destroy(pmp++);
+ m_backup_state = pmp;
+ return r;
+}
+
+} // namespace re_detail
+} // namespace boost
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+
+#endif
+
+

Added: sandbox/SOC/2007/regex/named-captures/boost/regex/v4/perl_matcher_recursive.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/boost/regex/v4/perl_matcher_recursive.hpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,832 @@
+/*
+ *
+ * Copyright (c) 2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE perl_matcher_common.cpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Definitions of perl_matcher member functions that are
+ * specific to the recursive implementation.
+ */
+
+#ifndef BOOST_REGEX_V4_PERL_MATCHER_RECURSIVE_HPP
+#define BOOST_REGEX_V4_PERL_MATCHER_RECURSIVE_HPP
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+
+namespace boost{
+namespace re_detail{
+
+template <class BidiIterator>
+class backup_subex
+{
+ int index;
+ sub_match<BidiIterator> sub;
+public:
+ template <class A>
+ backup_subex(const match_results<BidiIterator, A>& w, int i)
+ : index(i), sub(w[i], false) {}
+ template <class A>
+ void restore(match_results<BidiIterator, A>& w)
+ {
+ w.set_first(sub.first, index);
+ w.set_second(sub.second, index, sub.matched);
+ }
+ const sub_match<BidiIterator>& get() { return sub; }
+};
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::match_all_states()
+{
+ static matcher_proc_type const s_match_vtable[29] =
+ {
+ (&perl_matcher<BidiIterator, Allocator, traits>::match_startmark),
+ &perl_matcher<BidiIterator, Allocator, traits>::match_endmark,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_literal,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_start_line,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_end_line,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_wild,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_match,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_word_boundary,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_within_word,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_word_start,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_word_end,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_buffer_start,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_buffer_end,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_backref,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_long_set,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_set,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_jump,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_alt,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_rep,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_combining,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_soft_buffer_end,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_restart_continue,
+ (::boost::is_random_access_iterator<BidiIterator>::value ? &perl_matcher<BidiIterator, Allocator, traits>::match_dot_repeat_fast : &perl_matcher<BidiIterator, Allocator, traits>::match_dot_repeat_slow),
+ &perl_matcher<BidiIterator, Allocator, traits>::match_char_repeat,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_set_repeat,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_long_set_repeat,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_backstep,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_assert_backref,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_toggle_case,
+ };
+
+ if(state_count > max_state_count)
+ raise_error(traits_inst, regex_constants::error_space);
+ while(pstate)
+ {
+ matcher_proc_type proc = s_match_vtable[pstate->type];
+ ++state_count;
+ if(!(this->*proc)())
+ {
+ if((m_match_flags & match_partial) && (position == last) && (position != search_base))
+ m_has_partial_match = true;
+ return 0;
+ }
+ }
+ return true;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::match_startmark()
+{
+ int index = static_cast<const re_brace*>(pstate)->index;
+ bool r = true;
+ switch(index)
+ {
+ case 0:
+ pstate = pstate->next.p;
+ break;
+ case -1:
+ case -2:
+ {
+ // forward lookahead assert:
+ BidiIterator old_position(position);
+ const re_syntax_base* next_pstate = static_cast<const re_jump*>(pstate->next.p)->alt.p->next.p;
+ pstate = pstate->next.p->next.p;
+ r = match_all_states();
+ pstate = next_pstate;
+ position = old_position;
+ if((r && (index != -1)) || (!r && (index != -2)))
+ r = false;
+ else
+ r = true;
+ break;
+ }
+ case -3:
+ {
+ // independent sub-expression:
+ bool old_independent = m_independent;
+ m_independent = true;
+ const re_syntax_base* next_pstate = static_cast<const re_jump*>(pstate->next.p)->alt.p->next.p;
+ pstate = pstate->next.p->next.p;
+ r = match_all_states();
+ pstate = next_pstate;
+ m_independent = old_independent;
+#ifdef BOOST_REGEX_MATCH_EXTRA
+ if(r && (m_match_flags & match_extra))
+ {
+ //
+ // our captures have been stored in *m_presult
+ // we need to unpack them, and insert them
+ // back in the right order when we unwind the stack:
+ //
+ unsigned i;
+ match_results<BidiIterator, Allocator> tm(*m_presult);
+ for(i = 0; i < tm.size(); ++i)
+ (*m_presult)[i].get_captures().clear();
+ // match everything else:
+ r = match_all_states();
+ // now place the stored captures back:
+ for(i = 0; i < tm.size(); ++i)
+ {
+ typedef typename sub_match<BidiIterator>::capture_sequence_type seq;
+ seq& s1 = (*m_presult)[i].get_captures();
+ const seq& s2 = tm[i].captures();
+ s1.insert(
+ s1.end(),
+ s2.begin(),
+ s2.end());
+ }
+ }
+#endif
+ break;
+ }
+ case -4:
+ {
+ // conditional expression:
+ const re_alt* alt = static_cast<const re_alt*>(pstate->next.p);
+ BOOST_ASSERT(alt->type == syntax_element_alt);
+ pstate = alt->next.p;
+ if(pstate->type == syntax_element_assert_backref)
+ {
+ if(!match_assert_backref())
+ pstate = alt->alt.p;
+ break;
+ }
+ else
+ {
+ // zero width assertion, have to match this recursively:
+ BOOST_ASSERT(pstate->type == syntax_element_startmark);
+ bool negated = static_cast<const re_brace*>(pstate)->index == -2;
+ BidiIterator saved_position = position;
+ const re_syntax_base* next_pstate = static_cast<const re_jump*>(pstate->next.p)->alt.p->next.p;
+ pstate = pstate->next.p->next.p;
+ bool r = match_all_states();
+ position = saved_position;
+ if(negated)
+ r = !r;
+ if(r)
+ pstate = next_pstate;
+ else
+ pstate = alt->alt.p;
+ break;
+ }
+ }
+ default:
+ {
+ BOOST_ASSERT(index > 0);
+ if((m_match_flags & match_nosubs) == 0)
+ {
+ backup_subex<BidiIterator> sub(*m_presult, index);
+ m_presult->set_first(position, index);
+ pstate = pstate->next.p;
+ r = match_all_states();
+ if(r == false)
+ sub.restore(*m_presult);
+#ifdef BOOST_REGEX_MATCH_EXTRA
+ //
+ // we have a match, push the capture information onto the stack:
+ //
+ else if(sub.get().matched && (match_extra & m_match_flags))
+ ((*m_presult)[index]).get_captures().push_back(sub.get());
+#endif
+ }
+ else
+ {
+ pstate = pstate->next.p;
+ }
+ break;
+ }
+ }
+ return r;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::match_alt()
+{
+ bool take_first, take_second;
+ const re_alt* jmp = static_cast<const re_alt*>(pstate);
+
+ // find out which of these two alternatives we need to take:
+ if(position == last)
+ {
+ take_first = jmp->can_be_null & mask_take;
+ take_second = jmp->can_be_null & mask_skip;
+ }
+ else
+ {
+ take_first = can_start(*position, jmp->_map, (unsigned char)mask_take);
+ take_second = can_start(*position, jmp->_map, (unsigned char)mask_skip);
+ }
+
+ if(take_first)
+ {
+ // we can take the first alternative,
+ // see if we need to push next alternative:
+ if(take_second)
+ {
+ BidiIterator oldposition(position);
+ const re_syntax_base* old_pstate = jmp->alt.p;
+ pstate = pstate->next.p;
+ if(!match_all_states())
+ {
+ pstate = old_pstate;
+ position = oldposition;
+ }
+ return true;
+ }
+ pstate = pstate->next.p;
+ return true;
+ }
+ if(take_second)
+ {
+ pstate = jmp->alt.p;
+ return true;
+ }
+ return false; // neither option is possible
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::match_rep()
+{
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4127 4244)
+#endif
+ const re_repeat* rep = static_cast<const re_repeat*>(pstate);
+ //
+ // Always copy the repeat count, so that the state is restored
+ // when we exit this scope:
+ //
+ repeater_count<BidiIterator> r(rep->id, &next_count, position);
+ //
+ // If we've had at least one repeat already, and the last one
+ // matched the NULL string then set the repeat count to
+ // maximum:
+ //
+ next_count->check_null_repeat(position, rep->max);
+
+ // find out which of these two alternatives we need to take:
+ bool take_first, take_second;
+ if(position == last)
+ {
+ take_first = rep->can_be_null & mask_take;
+ take_second = rep->can_be_null & mask_skip;
+ }
+ else
+ {
+ take_first = can_start(*position, rep->_map, (unsigned char)mask_take);
+ take_second = can_start(*position, rep->_map, (unsigned char)mask_skip);
+ }
+
+ if(next_count->get_count() < rep->min)
+ {
+ // we must take the repeat:
+ if(take_first)
+ {
+ // increase the counter:
+ ++(*next_count);
+ pstate = rep->next.p;
+ return match_all_states();
+ }
+ return false;
+ }
+ bool greedy = (rep->greedy) && (!(m_match_flags & regex_constants::match_any) || m_independent);
+ if(greedy)
+ {
+ // try and take the repeat if we can:
+ if((next_count->get_count() < rep->max) && take_first)
+ {
+ // store position in case we fail:
+ BidiIterator pos = position;
+ // increase the counter:
+ ++(*next_count);
+ pstate = rep->next.p;
+ if(match_all_states())
+ return true;
+ // failed repeat, reset posistion and fall through for alternative:
+ position = pos;
+ }
+ if(take_second)
+ {
+ pstate = rep->alt.p;
+ return true;
+ }
+ return false; // can't take anything, fail...
+ }
+ else // non-greedy
+ {
+ // try and skip the repeat if we can:
+ if(take_second)
+ {
+ // store position in case we fail:
+ BidiIterator pos = position;
+ pstate = rep->alt.p;
+ if(match_all_states())
+ return true;
+ // failed alternative, reset posistion and fall through for repeat:
+ position = pos;
+ }
+ if((next_count->get_count() < rep->max) && take_first)
+ {
+ // increase the counter:
+ ++(*next_count);
+ pstate = rep->next.p;
+ return match_all_states();
+ }
+ }
+ return false;
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::match_dot_repeat_slow()
+{
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4127)
+#endif
+ unsigned count = 0;
+ const re_repeat* rep = static_cast<const re_repeat*>(pstate);
+ re_syntax_base* psingle = rep->next.p;
+ // match compulsary repeats first:
+ while(count < rep->min)
+ {
+ pstate = psingle;
+ if(!match_wild())
+ return false;
+ ++count;
+ }
+ bool greedy = (rep->greedy) && (!(m_match_flags & regex_constants::match_any) || m_independent);
+ if(greedy)
+ {
+ // normal repeat:
+ while(count < rep->max)
+ {
+ pstate = psingle;
+ if(!match_wild())
+ break;
+ ++count;
+ }
+ if((rep->leading) && (count < rep->max))
+ restart = position;
+ pstate = rep;
+ return backtrack_till_match(count - rep->min);
+ }
+ else
+ {
+ // non-greedy, keep trying till we get a match:
+ BidiIterator save_pos;
+ do
+ {
+ if((rep->leading) && (rep->max == UINT_MAX))
+ restart = position;
+ pstate = rep->alt.p;
+ save_pos = position;
+ ++state_count;
+ if(match_all_states())
+ return true;
+ if(count >= rep->max)
+ return false;
+ ++count;
+ pstate = psingle;
+ position = save_pos;
+ if(!match_wild())
+ return false;
+ }while(true);
+ }
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::match_dot_repeat_fast()
+{
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4127)
+#endif
+ if(m_match_flags & match_not_dot_null)
+ return match_dot_repeat_slow();
+ if((static_cast<const re_dot*>(pstate->next.p)->mask & match_any_mask) == 0)
+ return match_dot_repeat_slow();
+ //
+ // start by working out how much we can skip:
+ //
+ const re_repeat* rep = static_cast<const re_repeat*>(pstate);
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4267)
+#endif
+ bool greedy = (rep->greedy) && (!(m_match_flags & regex_constants::match_any) || m_independent);
+ std::size_t count = (std::min)(static_cast<std::size_t>(::boost::re_detail::distance(position, last)), static_cast<std::size_t>(greedy ? rep->max : rep->min));
+ if(rep->min > count)
+ {
+ position = last;
+ return false; // not enough text left to match
+ }
+ std::advance(position, count);
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+ if((rep->leading) && (count < rep->max) && greedy)
+ restart = position;
+ if(greedy)
+ return backtrack_till_match(count - rep->min);
+
+ // non-greedy, keep trying till we get a match:
+ BidiIterator save_pos;
+ do
+ {
+ while((position != last) && (count < rep->max) && !can_start(*position, rep->_map, mask_skip))
+ {
+ ++position;
+ ++count;
+ }
+ if((rep->leading) && (rep->max == UINT_MAX))
+ restart = position;
+ pstate = rep->alt.p;
+ save_pos = position;
+ ++state_count;
+ if(match_all_states())
+ return true;
+ if(count >= rep->max)
+ return false;
+ if(save_pos == last)
+ return false;
+ position = ++save_pos;
+ ++count;
+ }while(true);
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::match_char_repeat()
+{
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4127)
+#pragma warning(disable:4267)
+#endif
+#ifdef __BORLANDC__
+#pragma option push -w-8008 -w-8066 -w-8004
+#endif
+ const re_repeat* rep = static_cast<const re_repeat*>(pstate);
+ BOOST_ASSERT(1 == static_cast<const re_literal*>(rep->next.p)->length);
+ const char_type what = *reinterpret_cast<const char_type*>(static_cast<const re_literal*>(rep->next.p) + 1);
+ //
+ // start by working out how much we can skip:
+ //
+ bool greedy = (rep->greedy) && (!(m_match_flags & regex_constants::match_any) || m_independent);
+ std::size_t count, desired;
+ if(::boost::is_random_access_iterator<BidiIterator>::value)
+ {
+ desired =
+ (std::min)(
+ (std::size_t)(greedy ? rep->max : rep->min),
+ (std::size_t)::boost::re_detail::distance(position, last));
+ count = desired;
+ ++desired;
+ if(icase)
+ {
+ while(--desired && (traits_inst.translate_nocase(*position) == what))
+ {
+ ++position;
+ }
+ }
+ else
+ {
+ while(--desired && (traits_inst.translate(*position) == what))
+ {
+ ++position;
+ }
+ }
+ count = count - desired;
+ }
+ else
+ {
+ count = 0;
+ desired = greedy ? rep->max : rep->min;
+ while((count < desired) && (position != last) && (traits_inst.translate(*position, icase) == what))
+ {
+ ++position;
+ ++count;
+ }
+ }
+ if((rep->leading) && (count < rep->max) && greedy)
+ restart = position;
+ if(count < rep->min)
+ return false;
+
+ if(greedy)
+ return backtrack_till_match(count - rep->min);
+
+ // non-greedy, keep trying till we get a match:
+ BidiIterator save_pos;
+ do
+ {
+ while((position != last) && (count < rep->max) && !can_start(*position, rep->_map, mask_skip))
+ {
+ if((traits_inst.translate(*position, icase) == what))
+ {
+ ++position;
+ ++count;
+ }
+ else
+ return false; // counldn't repeat even though it was the only option
+ }
+ if((rep->leading) && (rep->max == UINT_MAX))
+ restart = position;
+ pstate = rep->alt.p;
+ save_pos = position;
+ ++state_count;
+ if(match_all_states())
+ return true;
+ if(count >= rep->max)
+ return false;
+ position = save_pos;
+ if(position == last)
+ return false;
+ if(traits_inst.translate(*position, icase) == what)
+ {
+ ++position;
+ ++count;
+ }
+ else
+ {
+ return false;
+ }
+ }while(true);
+#ifdef __BORLANDC__
+#pragma option pop
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::match_set_repeat()
+{
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4127)
+#endif
+#ifdef __BORLANDC__
+#pragma option push -w-8008 -w-8066 -w-8004
+#endif
+ const re_repeat* rep = static_cast<const re_repeat*>(pstate);
+ const unsigned char* map = static_cast<const re_set*>(rep->next.p)->_map;
+ unsigned count = 0;
+ //
+ // start by working out how much we can skip:
+ //
+ bool greedy = (rep->greedy) && (!(m_match_flags & regex_constants::match_any) || m_independent);
+ std::size_t desired = greedy ? rep->max : rep->min;
+ if(::boost::is_random_access_iterator<BidiIterator>::value)
+ {
+ BidiIterator end = position;
+ std::advance(end, (std::min)((std::size_t)::boost::re_detail::distance(position, last), desired));
+ BidiIterator origin(position);
+ while((position != end) && map[static_cast<unsigned char>(traits_inst.translate(*position, icase))])
+ {
+ ++position;
+ }
+ count = (unsigned)::boost::re_detail::distance(origin, position);
+ }
+ else
+ {
+ while((count < desired) && (position != last) && map[static_cast<unsigned char>(traits_inst.translate(*position, icase))])
+ {
+ ++position;
+ ++count;
+ }
+ }
+ if((rep->leading) && (count < rep->max) && greedy)
+ restart = position;
+ if(count < rep->min)
+ return false;
+
+ if(greedy)
+ return backtrack_till_match(count - rep->min);
+
+ // non-greedy, keep trying till we get a match:
+ BidiIterator save_pos;
+ do
+ {
+ while((position != last) && (count < rep->max) && !can_start(*position, rep->_map, mask_skip))
+ {
+ if(map[static_cast<unsigned char>(traits_inst.translate(*position, icase))])
+ {
+ ++position;
+ ++count;
+ }
+ else
+ return false; // counldn't repeat even though it was the only option
+ }
+ if((rep->leading) && (rep->max == UINT_MAX))
+ restart = position;
+ pstate = rep->alt.p;
+ save_pos = position;
+ ++state_count;
+ if(match_all_states())
+ return true;
+ if(count >= rep->max)
+ return false;
+ position = save_pos;
+ if(position == last)
+ return false;
+ if(map[static_cast<unsigned char>(traits_inst.translate(*position, icase))])
+ {
+ ++position;
+ ++count;
+ }
+ else
+ {
+ return false;
+ }
+ }while(true);
+#ifdef __BORLANDC__
+#pragma option pop
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::match_long_set_repeat()
+{
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4127)
+#endif
+#ifdef __BORLANDC__
+#pragma option push -w-8008 -w-8066 -w-8004
+#endif
+ typedef typename traits::char_class_type char_class_type;
+ const re_repeat* rep = static_cast<const re_repeat*>(pstate);
+ const re_set_long<char_class_type>* set = static_cast<const re_set_long<char_class_type>*>(pstate->next.p);
+ unsigned count = 0;
+ //
+ // start by working out how much we can skip:
+ //
+ bool greedy = (rep->greedy) && (!(m_match_flags & regex_constants::match_any) || m_independent);
+ std::size_t desired = greedy ? rep->max : rep->min;
+ if(::boost::is_random_access_iterator<BidiIterator>::value)
+ {
+ BidiIterator end = position;
+ std::advance(end, (std::min)((std::size_t)::boost::re_detail::distance(position, last), desired));
+ BidiIterator origin(position);
+ while((position != end) && (position != re_is_set_member(position, last, set, re.get_data(), icase)))
+ {
+ ++position;
+ }
+ count = (unsigned)::boost::re_detail::distance(origin, position);
+ }
+ else
+ {
+ while((count < desired) && (position != last) && (position != re_is_set_member(position, last, set, re.get_data(), icase)))
+ {
+ ++position;
+ ++count;
+ }
+ }
+ if((rep->leading) && (count < rep->max) && greedy)
+ restart = position;
+ if(count < rep->min)
+ return false;
+
+ if(greedy)
+ return backtrack_till_match(count - rep->min);
+
+ // non-greedy, keep trying till we get a match:
+ BidiIterator save_pos;
+ do
+ {
+ while((position != last) && (count < rep->max) && !can_start(*position, rep->_map, mask_skip))
+ {
+ if(position != re_is_set_member(position, last, set, re.get_data(), icase))
+ {
+ ++position;
+ ++count;
+ }
+ else
+ return false; // counldn't repeat even though it was the only option
+ }
+ if((rep->leading) && (rep->max == UINT_MAX))
+ restart = position;
+ pstate = rep->alt.p;
+ save_pos = position;
+ ++state_count;
+ if(match_all_states())
+ return true;
+ if(count >= rep->max)
+ return false;
+ position = save_pos;
+ if(position == last)
+ return false;
+ if(position != re_is_set_member(position, last, set, re.get_data(), icase))
+ {
+ ++position;
+ ++count;
+ }
+ else
+ {
+ return false;
+ }
+ }while(true);
+#ifdef __BORLANDC__
+#pragma option pop
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::backtrack_till_match(std::size_t count)
+{
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4127)
+#endif
+ if((m_match_flags & match_partial) && (position == last))
+ m_has_partial_match = true;
+
+ const re_repeat* rep = static_cast<const re_repeat*>(pstate);
+ BidiIterator backtrack = position;
+ if(position == last)
+ {
+ if(rep->can_be_null & mask_skip)
+ {
+ pstate = rep->alt.p;
+ if(match_all_states())
+ return true;
+ }
+ if(count)
+ {
+ position = --backtrack;
+ --count;
+ }
+ else
+ return false;
+ }
+ do
+ {
+ while(count && !can_start(*position, rep->_map, mask_skip))
+ {
+ --position;
+ --count;
+ ++state_count;
+ }
+ pstate = rep->alt.p;
+ backtrack = position;
+ if(match_all_states())
+ return true;
+ if(count == 0)
+ return false;
+ position = --backtrack;
+ ++state_count;
+ --count;
+ }while(true);
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+}
+
+} // namespace re_detail
+} // namespace boost
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+
+#endif
+

Added: sandbox/SOC/2007/regex/named-captures/boost/regex/v4/primary_transform.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/boost/regex/v4/primary_transform.hpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,132 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE: primary_transform.hpp
+ * VERSION: see <boost/version.hpp>
+ * DESCRIPTION: Heuristically determines the sort string format in use
+ * by the current locale.
+ */
+
+#ifndef BOOST_REGEX_PRIMARY_TRANSFORM
+#define BOOST_REGEX_PRIMARY_TRANSFORM
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+
+namespace boost{
+ namespace re_detail{
+
+
+enum{
+ sort_C,
+ sort_fixed,
+ sort_delim,
+ sort_unknown
+};
+
+template <class S, class charT>
+unsigned count_chars(const S& s, charT c)
+{
+ //
+ // Count how many occurances of character c occur
+ // in string s: if c is a delimeter between collation
+ // fields, then this should be the same value for all
+ // sort keys:
+ //
+ unsigned int count = 0;
+ for(unsigned pos = 0; pos < s.size(); ++pos)
+ {
+ if(s[pos] == c) ++count;
+ }
+ return count;
+}
+
+
+template <class traits, class charT>
+unsigned find_sort_syntax(const traits* pt, charT* delim)
+{
+ //
+ // compare 'a' with 'A' to see how similar they are,
+ // should really use a-accute but we can't portably do that,
+ //
+ typedef typename traits::string_type string_type;
+ typedef typename traits::char_type char_type;
+
+ // Suppress incorrect warning for MSVC
+ (void)pt;
+
+ char_type a[2] = {'a', '\0', };
+ string_type sa(pt->transform(a, a+1));
+ if(sa == a)
+ {
+ *delim = 0;
+ return sort_C;
+ }
+ char_type A[2] = { 'A', '\0', };
+ string_type sA(pt->transform(A, A+1));
+ char_type c[2] = { ';', '\0', };
+ string_type sc(pt->transform(c, c+1));
+
+ int pos = 0;
+ while((pos <= static_cast<int>(sa.size())) && (pos <= static_cast<int>(sA.size())) && (sa[pos] == sA[pos])) ++pos;
+ --pos;
+ if(pos < 0)
+ {
+ *delim = 0;
+ return sort_unknown;
+ }
+ //
+ // at this point sa[pos] is either the end of a fixed width field
+ // or the character that acts as a delimiter:
+ //
+ charT maybe_delim = sa[pos];
+ if((pos != 0) && (count_chars(sa, maybe_delim) == count_chars(sA, maybe_delim)) && (count_chars(sa, maybe_delim) == count_chars(sc, maybe_delim)))
+ {
+ *delim = maybe_delim;
+ return sort_delim;
+ }
+ //
+ // OK doen't look like a delimiter, try for fixed width field:
+ //
+ if((sa.size() == sA.size()) && (sa.size() == sc.size()))
+ {
+ // note assumes that the fixed width field is less than
+ // (numeric_limits<charT>::max)(), should be true for all types
+ // I can't imagine 127 character fields...
+ *delim = static_cast<charT>(++pos);
+ return sort_fixed;
+ }
+ //
+ // don't know what it is:
+ //
+ *delim = 0;
+ return sort_unknown;
+}
+
+
+ } // namespace re_detail
+} // namespace boost
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+
+#endif
+
+
+
+
+
+
+

Added: sandbox/SOC/2007/regex/named-captures/boost/regex/v4/protected_call.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/boost/regex/v4/protected_call.hpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,67 @@
+/*
+ *
+ * Copyright (c) 2004
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE basic_regex_creator.cpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Declares template class basic_regex_creator which fills in
+ * the data members of a regex_data object.
+ */
+
+#ifndef BOOST_REGEX_V4_PROTECTED_CALL_HPP
+#define BOOST_REGEX_V4_PROTECTED_CALL_HPP
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+
+namespace boost{
+namespace re_detail{
+
+class BOOST_REGEX_DECL abstract_protected_call
+{
+public:
+ bool BOOST_REGEX_CALL execute()const;
+ // this stops gcc-4 from complaining:
+ virtual ~abstract_protected_call(){}
+private:
+ virtual bool call()const = 0;
+};
+
+template <class T>
+class concrete_protected_call
+ : public abstract_protected_call
+{
+public:
+ typedef bool (T::*proc_type)();
+ concrete_protected_call(T* o, proc_type p)
+ : obj(o), proc(p) {}
+private:
+ virtual bool call()const;
+ T* obj;
+ proc_type proc;
+};
+
+template <class T>
+bool concrete_protected_call<T>::call()const
+{
+ return (obj->*proc)();
+}
+
+}
+} // namespace boost
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+
+#endif

Added: sandbox/SOC/2007/regex/named-captures/boost/regex/v4/regbase.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/boost/regex/v4/regbase.hpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,162 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE regbase.cpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Declares class regbase.
+ */
+
+#ifndef BOOST_REGEX_V4_REGBASE_HPP
+#define BOOST_REGEX_V4_REGBASE_HPP
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+
+namespace boost{
+//
+// class regbase
+// handles error codes and flags
+//
+class BOOST_REGEX_DECL regbase
+{
+public:
+ enum flag_type_
+ {
+ //
+ // Divide the flags up into logical groups:
+ // bits 0-7 indicate main synatx type.
+ // bits 8-15 indicate syntax subtype.
+ // bits 16-31 indicate options that are common to all
+ // regex syntaxes.
+ // In all cases the default is 0.
+ //
+ // Main synatx group:
+ //
+ perl_syntax_group = 0, // default
+ basic_syntax_group = 1, // POSIX basic
+ literal = 2, // all characters are literals
+ main_option_type = literal | basic_syntax_group | perl_syntax_group, // everything!
+ //
+ // options specific to perl group:
+ //
+ no_bk_refs = 1 << 8, // \d not allowed
+ no_perl_ex = 1 << 9, // disable perl extensions
+ no_mod_m = 1 << 10, // disable Perl m modifier
+ mod_x = 1 << 11, // Perl x modifier
+ mod_s = 1 << 12, // force s modifier on (overrides match_not_dot_newline)
+ no_mod_s = 1 << 13, // force s modifier off (overrides match_not_dot_newline)
+
+ //
+ // options specific to basic group:
+ //
+ no_char_classes = 1 << 8, // [[:CLASS:]] not allowed
+ no_intervals = 1 << 9, // {x,y} not allowed
+ bk_plus_qm = 1 << 10, // uses \+ and \?
+ bk_vbar = 1 << 11, // use \| for alternatives
+ emacs_ex = 1 << 12, // enables emacs extensions
+
+ //
+ // options common to all groups:
+ //
+ no_escape_in_lists = 1 << 16, // '\' not special inside [...]
+ newline_alt = 1 << 17, // \n is the same as |
+ no_except = 1 << 18, // no exception on error
+ failbit = 1 << 19, // error flag
+ icase = 1 << 20, // characters are matched regardless of case
+ nocollate = 0, // don't use locale specific collation (deprecated)
+ collate = 1 << 21, // use locale specific collation
+ nosubs = 1 << 22, // don't mark sub-expressions
+ optimize = 0, // not really supported
+
+
+
+ basic = basic_syntax_group | collate | no_escape_in_lists,
+ extended = no_bk_refs | collate | no_perl_ex | no_escape_in_lists,
+ normal = 0,
+ emacs = basic_syntax_group | collate | emacs_ex | bk_vbar,
+ awk = no_bk_refs | collate | no_perl_ex,
+ grep = basic | newline_alt,
+ egrep = extended | newline_alt,
+ sed = basic,
+ perl = normal,
+ ECMAScript = normal,
+ JavaScript = normal,
+ JScript = normal
+ };
+ typedef unsigned int flag_type;
+
+ enum restart_info
+ {
+ restart_any = 0,
+ restart_word = 1,
+ restart_line = 2,
+ restart_buf = 3,
+ restart_continue = 4,
+ restart_lit = 5,
+ restart_fixed_lit = 6,
+ restart_count = 7
+ };
+};
+
+//
+// provide std lib proposal compatible constants:
+//
+namespace regex_constants{
+
+ enum flag_type_
+ {
+
+ no_except = ::boost::regbase::no_except,
+ failbit = ::boost::regbase::failbit,
+ literal = ::boost::regbase::literal,
+ icase = ::boost::regbase::icase,
+ nocollate = ::boost::regbase::nocollate,
+ collate = ::boost::regbase::collate,
+ nosubs = ::boost::regbase::nosubs,
+ optimize = ::boost::regbase::optimize,
+ bk_plus_qm = ::boost::regbase::bk_plus_qm,
+ bk_vbar = ::boost::regbase::bk_vbar,
+ no_intervals = ::boost::regbase::no_intervals,
+ no_char_classes = ::boost::regbase::no_char_classes,
+ no_escape_in_lists = ::boost::regbase::no_escape_in_lists,
+ no_mod_m = ::boost::regbase::no_mod_m,
+ mod_x = ::boost::regbase::mod_x,
+ mod_s = ::boost::regbase::mod_s,
+ no_mod_s = ::boost::regbase::no_mod_s,
+
+ basic = ::boost::regbase::basic,
+ extended = ::boost::regbase::extended,
+ normal = ::boost::regbase::normal,
+ emacs = ::boost::regbase::emacs,
+ awk = ::boost::regbase::awk,
+ grep = ::boost::regbase::grep,
+ egrep = ::boost::regbase::egrep,
+ sed = basic,
+ perl = normal,
+ ECMAScript = normal,
+ JavaScript = normal,
+ JScript = normal
+ };
+ typedef ::boost::regbase::flag_type syntax_option_type;
+
+} // namespace regex_constants
+
+} // namespace boost
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+
+#endif
+

Added: sandbox/SOC/2007/regex/named-captures/boost/regex/v4/regex.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/boost/regex/v4/regex.hpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,202 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE regex.cpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Declares boost::basic_regex<> and associated
+ * functions and classes. This header is the main
+ * entry point for the template regex code.
+ */
+
+#ifndef BOOST_RE_REGEX_HPP_INCLUDED
+#define BOOST_RE_REGEX_HPP_INCLUDED
+
+#ifdef __cplusplus
+
+// what follows is all C++ don't include in C builds!!
+
+#ifndef BOOST_REGEX_CONFIG_HPP
+#include <boost/regex/config.hpp>
+#endif
+#ifndef BOOST_REGEX_WORKAROUND_HPP
+#include <boost/regex/v4/regex_workaround.hpp>
+#endif
+
+#ifndef BOOST_REGEX_FWD_HPP
+#include <boost/regex_fwd.hpp>
+#endif
+#ifndef BOOST_REGEX_TRAITS_HPP
+#include <boost/regex/regex_traits.hpp>
+#endif
+#ifndef BOOST_REGEX_RAW_BUFFER_HPP
+#include <boost/regex/v4/error_type.hpp>
+#endif
+#ifndef BOOST_REGEX_V4_MATCH_FLAGS
+#include <boost/regex/v4/match_flags.hpp>
+#endif
+#ifndef BOOST_REGEX_RAW_BUFFER_HPP
+#include <boost/regex/v4/regex_raw_buffer.hpp>
+#endif
+#ifndef BOOST_RE_PAT_EXCEPT_HPP
+#include <boost/regex/pattern_except.hpp>
+#endif
+
+#ifndef BOOST_REGEX_V4_CHAR_REGEX_TRAITS_HPP
+#include <boost/regex/v4/char_regex_traits.hpp>
+#endif
+#ifndef BOOST_REGEX_V4_STATES_HPP
+#include <boost/regex/v4/states.hpp>
+#endif
+#ifndef BOOST_REGEX_V4_REGBASE_HPP
+#include <boost/regex/v4/regbase.hpp>
+#endif
+#ifndef BOOST_REGEX_V4_ITERATOR_TRAITS_HPP
+#include <boost/regex/v4/iterator_traits.hpp>
+#endif
+#ifndef BOOST_REGEX_V4_BASIC_REGEX_HPP
+#include <boost/regex/v4/basic_regex.hpp>
+#endif
+#ifndef BOOST_REGEX_V4_BASIC_REGEX_CREATOR_HPP
+#include <boost/regex/v4/basic_regex_creator.hpp>
+#endif
+#ifndef BOOST_REGEX_V4_BASIC_REGEX_PARSER_HPP
+#include <boost/regex/v4/basic_regex_parser.hpp>
+#endif
+#ifndef BOOST_REGEX_V4_SUB_MATCH_HPP
+#include <boost/regex/v4/sub_match.hpp>
+#endif
+#ifndef BOOST_REGEX_FORMAT_HPP
+#include <boost/regex/v4/regex_format.hpp>
+#endif
+#ifndef BOOST_REGEX_V4_MATCH_RESULTS_HPP
+#include <boost/regex/v4/match_results.hpp>
+#endif
+#ifndef BOOST_REGEX_V4_PROTECTED_CALL_HPP
+#include <boost/regex/v4/protected_call.hpp>
+#endif
+#ifndef BOOST_REGEX_MATCHER_HPP
+#include <boost/regex/v4/perl_matcher.hpp>
+#endif
+//
+// template instances:
+//
+#define BOOST_REGEX_CHAR_T char
+#ifdef BOOST_REGEX_NARROW_INSTANTIATE
+# define BOOST_REGEX_INSTANTIATE
+#endif
+#include <boost/regex/v4/instances.hpp>
+#undef BOOST_REGEX_CHAR_T
+#ifdef BOOST_REGEX_INSTANTIATE
+# undef BOOST_REGEX_INSTANTIATE
+#endif
+
+#ifndef BOOST_NO_WREGEX
+#define BOOST_REGEX_CHAR_T wchar_t
+#ifdef BOOST_REGEX_WIDE_INSTANTIATE
+# define BOOST_REGEX_INSTANTIATE
+#endif
+#include <boost/regex/v4/instances.hpp>
+#undef BOOST_REGEX_CHAR_T
+#ifdef BOOST_REGEX_INSTANTIATE
+# undef BOOST_REGEX_INSTANTIATE
+#endif
+#endif
+
+#if !defined(BOOST_NO_WREGEX) && defined(BOOST_REGEX_HAS_OTHER_WCHAR_T)
+#define BOOST_REGEX_CHAR_T unsigned short
+#ifdef BOOST_REGEX_US_INSTANTIATE
+# define BOOST_REGEX_INSTANTIATE
+#endif
+#include <boost/regex/v4/instances.hpp>
+#undef BOOST_REGEX_CHAR_T
+#ifdef BOOST_REGEX_INSTANTIATE
+# undef BOOST_REGEX_INSTANTIATE
+#endif
+#endif
+
+
+namespace boost{
+#ifdef BOOST_REGEX_NO_FWD
+typedef basic_regex<char, regex_traits<char> > regex;
+#ifndef BOOST_NO_WREGEX
+typedef basic_regex<wchar_t, regex_traits<wchar_t> > wregex;
+#endif
+#endif
+
+typedef match_results<const char*> cmatch;
+typedef match_results<std::string::const_iterator> smatch;
+#ifndef BOOST_NO_WREGEX
+typedef match_results<const wchar_t*> wcmatch;
+typedef match_results<std::wstring::const_iterator> wsmatch;
+#endif
+
+} // namespace boost
+#ifndef BOOST_REGEX_MATCH_HPP
+#include <boost/regex/v4/regex_match.hpp>
+#endif
+#ifndef BOOST_REGEX_V4_REGEX_SEARCH_HPP
+#include <boost/regex/v4/regex_search.hpp>
+#endif
+#ifndef BOOST_REGEX_ITERATOR_HPP
+#include <boost/regex/v4/regex_iterator.hpp>
+#endif
+#ifndef BOOST_REGEX_TOKEN_ITERATOR_HPP
+#include <boost/regex/v4/regex_token_iterator.hpp>
+#endif
+#ifndef BOOST_REGEX_V4_REGEX_GREP_HPP
+#include <boost/regex/v4/regex_grep.hpp>
+#endif
+#ifndef BOOST_REGEX_V4_REGEX_REPLACE_HPP
+#include <boost/regex/v4/regex_replace.hpp>
+#endif
+#ifndef BOOST_REGEX_V4_REGEX_MERGE_HPP
+#include <boost/regex/v4/regex_merge.hpp>
+#endif
+#ifndef BOOST_REGEX_SPLIT_HPP
+#include <boost/regex/v4/regex_split.hpp>
+#endif
+
+#endif // __cplusplus
+
+#endif // include
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

Added: sandbox/SOC/2007/regex/named-captures/boost/regex/v4/regex_cstring.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/boost/regex/v4/regex_cstring.hpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,123 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE regex_cstring.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: This is an internal header file, do not include directly.
+ * String support and helper functions, for regular
+ * expression library.
+ */
+
+#ifndef BOOST_REGEX_CSTRING_HPP
+#define BOOST_REGEX_CSTRING_HPP
+
+#ifndef BOOST_REGEX_CONFIG_HPP
+#include <boost/regex/config.hpp>
+#endif
+
+#include <cstring>
+
+namespace boost{
+ namespace re_detail{
+
+//
+// start by defining some template function aliases for C API functions:
+//
+
+template <class charT>
+std::size_t BOOST_REGEX_CALL re_strlen(const charT *s)
+{
+ std::size_t len = 0;
+ while(*s)
+ {
+ ++s;
+ ++len;
+ }
+ return len;
+}
+
+inline std::size_t BOOST_REGEX_CALL re_strlen(const char *s)
+{
+ return std::strlen(s);
+}
+
+#ifndef BOOST_NO_WREGEX
+
+inline std::size_t BOOST_REGEX_CALL re_strlen(const wchar_t *s)
+{
+ return std::wcslen(s);
+}
+
+#endif
+
+#ifndef BOOST_NO_WREGEX
+BOOST_REGEX_DECL void BOOST_REGEX_CALL re_transform(std::basic_string<wchar_t>& out, const std::basic_string<wchar_t>& in);
+#endif
+BOOST_REGEX_DECL void BOOST_REGEX_CALL re_transform(std::string& out, const std::string& in);
+
+template <class charT>
+void BOOST_REGEX_CALL re_trunc_primary(std::basic_string<charT>& s)
+{
+ for(unsigned int i = 0; i < s.size(); ++i)
+ {
+ if(s[i] <= 1)
+ {
+ s.erase(i);
+ break;
+ }
+ }
+}
+
+inline char* BOOST_REGEX_CALL re_strcpy(char *s1, const char *s2)
+{
+ #if defined(__BORLANDC__) && defined(strcpy)
+ return ::strcpy(s1, s2);
+ #else
+ return std::strcpy(s1, s2);
+ #endif
+}
+
+#ifndef BOOST_NO_WREGEX
+
+inline wchar_t* BOOST_REGEX_CALL re_strcpy(wchar_t *s1, const wchar_t *s2)
+{
+ return std::wcscpy(s1, s2);
+}
+
+#endif
+
+
+template <class charT>
+charT* BOOST_REGEX_CALL re_strdup(const charT* p)
+{
+ charT* buf = new charT[re_strlen(p) + 1];
+ re_strcpy(buf, p);
+ return buf;
+}
+
+template <class charT>
+inline void BOOST_REGEX_CALL re_strfree(charT* p)
+{
+ delete[] p;
+}
+
+} // namespace re_detail
+} // namespace boost
+
+#endif // BOOST_REGEX_CSTRING_HPP
+
+
+
+
+
+

Added: sandbox/SOC/2007/regex/named-captures/boost/regex/v4/regex_format.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/boost/regex/v4/regex_format.hpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,637 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE regex_format.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Provides formatting output routines for search and replace
+ * operations. Note this is an internal header file included
+ * by regex.hpp, do not include on its own.
+ */
+
+#ifndef BOOST_REGEX_FORMAT_HPP
+#define BOOST_REGEX_FORMAT_HPP
+
+
+namespace boost{
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+
+//
+// Forward declaration:
+//
+ template <class BidiIterator, class Allocator = BOOST_DEDUCED_TYPENAME std::vector<sub_match<BidiIterator> >::allocator_type >
+class match_results;
+
+namespace re_detail{
+
+//
+// struct trivial_format_traits:
+// defines minimum localisation support for formatting
+// in the case that the actual regex traits is unavailable.
+//
+template <class charT>
+struct trivial_format_traits
+{
+ typedef charT char_type;
+
+ static std::ptrdiff_t length(const charT* p)
+ {
+ return global_length(p);
+ }
+ static charT tolower(charT c)
+ {
+ return ::boost::re_detail::global_lower(c);
+ }
+ static charT toupper(charT c)
+ {
+ return ::boost::re_detail::global_upper(c);
+ }
+ static int value(const charT c, int radix)
+ {
+ int result = global_value(c);
+ return result >= radix ? -1 : result;
+ }
+ int toi(const charT*& p1, const charT* p2, int radix)const
+ {
+ return global_toi(p1, p2, radix, *this);
+ }
+};
+
+template <class OutputIterator, class Results, class traits>
+class basic_regex_formatter
+{
+public:
+ typedef typename traits::char_type char_type;
+ basic_regex_formatter(OutputIterator o, const Results& r, const traits& t)
+ : m_traits(t), m_results(r), m_out(o), m_state(output_copy), m_have_conditional(false) {}
+ OutputIterator format(const char_type* p1, const char_type* p2, match_flag_type f);
+ OutputIterator format(const char_type* p1, match_flag_type f)
+ {
+ return format(p1, p1 + m_traits.length(p1), f);
+ }
+private:
+ typedef typename Results::value_type sub_match_type;
+ enum output_state
+ {
+ output_copy,
+ output_next_lower,
+ output_next_upper,
+ output_lower,
+ output_upper,
+ output_none
+ };
+
+ void put(char_type c);
+ void put(const sub_match_type& sub);
+ void format_all();
+ void format_perl();
+ void format_escape();
+ void format_conditional();
+ void format_until_scope_end();
+
+ const traits& m_traits; // the traits class for localised formatting operations
+ const Results& m_results; // the match_results being used.
+ OutputIterator m_out; // where to send output.
+ const char_type* m_position; // format string, current position
+ const char_type* m_end; // format string end
+ match_flag_type m_flags; // format flags to use
+ output_state m_state; // what to do with the next character
+ bool m_have_conditional; // we are parsing a conditional
+private:
+ basic_regex_formatter(const basic_regex_formatter&);
+ basic_regex_formatter& operator=(const basic_regex_formatter&);
+};
+
+template <class OutputIterator, class Results, class traits>
+OutputIterator basic_regex_formatter<OutputIterator, Results, traits>::format(const char_type* p1, const char_type* p2, match_flag_type f)
+{
+ m_position = p1;
+ m_end = p2;
+ m_flags = f;
+ format_all();
+ return m_out;
+}
+
+template <class OutputIterator, class Results, class traits>
+void basic_regex_formatter<OutputIterator, Results, traits>::format_all()
+{
+ // over and over:
+ while(m_position != m_end)
+ {
+ switch(*m_position)
+ {
+ case '&':
+ if(m_flags & ::boost::regex_constants::format_sed)
+ {
+ ++m_position;
+ put(m_results[0]);
+ break;
+ }
+ put(*m_position++);
+ break;
+ case '\\':
+ format_escape();
+ break;
+ case '(':
+ if(m_flags & boost::regex_constants::format_all)
+ {
+ ++m_position;
+ bool have_conditional = m_have_conditional;
+ m_have_conditional = false;
+ format_until_scope_end();
+ m_have_conditional = have_conditional;
+ if(m_position == m_end)
+ return;
+ BOOST_ASSERT(*m_position == static_cast<char_type>(')'));
+ ++m_position; // skip the closing ')'
+ break;
+ }
+ put(*m_position);
+ ++m_position;
+ break;
+ case ')':
+ if(m_flags & boost::regex_constants::format_all)
+ {
+ return;
+ }
+ put(*m_position);
+ ++m_position;
+ break;
+ case ':':
+ if((m_flags & boost::regex_constants::format_all) && m_have_conditional)
+ {
+ return;
+ }
+ put(*m_position);
+ ++m_position;
+ break;
+ case '?':
+ if(m_flags & boost::regex_constants::format_all)
+ {
+ ++m_position;
+ format_conditional();
+ break;
+ }
+ put(*m_position);
+ ++m_position;
+ break;
+ case '$':
+ if((m_flags & format_sed) == 0)
+ {
+ format_perl();
+ break;
+ }
+ // fall through, not a special character:
+ default:
+ put(*m_position);
+ ++m_position;
+ break;
+ }
+ }
+}
+
+template <class OutputIterator, class Results, class traits>
+void basic_regex_formatter<OutputIterator, Results, traits>::format_perl()
+{
+ //
+ // On entry *m_position points to a '$' character
+ // output the information that goes with it:
+ //
+ BOOST_ASSERT(*m_position == '$');
+ //
+ // see if this is a trailing '$':
+ //
+ if(++m_position == m_end)
+ {
+ --m_position;
+ put(*m_position);
+ ++m_position;
+ return;
+ }
+ //
+ // OK find out what kind it is:
+ //
+ switch(*m_position)
+ {
+ case '&':
+ ++m_position;
+ put(this->m_results[0]);
+ break;
+ case '`':
+ ++m_position;
+ put(this->m_results.prefix());
+ break;
+ case '\'':
+ ++m_position;
+ put(this->m_results.suffix());
+ break;
+ case '$':
+ put(*m_position++);
+ break;
+ default:
+ // see if we have a number:
+ {
+ std::ptrdiff_t len = ::boost::re_detail::distance(m_position, m_end);
+ len = (std::min)(static_cast<std::ptrdiff_t>(2), len);
+ int v = m_traits.toi(m_position, m_position + len, 10);
+ if(v < 0)
+ {
+ // leave the $ as is, and carry on:
+ --m_position;
+ put(*m_position);
+ ++m_position;
+ break;
+ }
+ // otherwise output sub v:
+ put(this->m_results[v]);
+ }
+ }
+}
+
+template <class OutputIterator, class Results, class traits>
+void basic_regex_formatter<OutputIterator, Results, traits>::format_escape()
+{
+ // skip the escape and check for trailing escape:
+ if(++m_position == m_end)
+ {
+ put(static_cast<char_type>('\\'));
+ return;
+ }
+ // now switch on the escape type:
+ switch(*m_position)
+ {
+ case 'a':
+ put(static_cast<char_type>('\a'));
+ ++m_position;
+ break;
+ case 'f':
+ put(static_cast<char_type>('\f'));
+ ++m_position;
+ break;
+ case 'n':
+ put(static_cast<char_type>('\n'));
+ ++m_position;
+ break;
+ case 'r':
+ put(static_cast<char_type>('\r'));
+ ++m_position;
+ break;
+ case 't':
+ put(static_cast<char_type>('\t'));
+ ++m_position;
+ break;
+ case 'v':
+ put(static_cast<char_type>('\v'));
+ ++m_position;
+ break;
+ case 'x':
+ if(++m_position == m_end)
+ {
+ put(static_cast<char_type>('x'));
+ return;
+ }
+ // maybe have \x{ddd}
+ if(*m_position == static_cast<char_type>('{'))
+ {
+ ++m_position;
+ int val = m_traits.toi(m_position, m_end, 16);
+ if(val < 0)
+ {
+ // invalid value treat everything as literals:
+ put(static_cast<char_type>('x'));
+ put(static_cast<char_type>('{'));
+ return;
+ }
+ if(*m_position != static_cast<char_type>('}'))
+ {
+ while(*m_position != static_cast<char_type>('\\'))
+ --m_position;
+ ++m_position;
+ put(*m_position++);
+ return;
+ }
+ ++m_position;
+ put(static_cast<char_type>(val));
+ return;
+ }
+ else
+ {
+ std::ptrdiff_t len = ::boost::re_detail::distance(m_position, m_end);
+ len = (std::min)(static_cast<std::ptrdiff_t>(2), len);
+ int val = m_traits.toi(m_position, m_position + len, 16);
+ if(val < 0)
+ {
+ --m_position;
+ put(*m_position++);
+ return;
+ }
+ put(static_cast<char_type>(val));
+ }
+ break;
+ case 'c':
+ if(++m_position == m_end)
+ {
+ --m_position;
+ put(*m_position++);
+ return;
+ }
+ put(static_cast<char_type>(*m_position++ % 32));
+ break;
+ case 'e':
+ put(static_cast<char_type>(27));
+ ++m_position;
+ break;
+ default:
+ // see if we have a perl specific escape:
+ if((m_flags & boost::regex_constants::format_sed) == 0)
+ {
+ bool breakout = false;
+ switch(*m_position)
+ {
+ case 'l':
+ ++m_position;
+ m_state = output_next_lower;
+ breakout = true;
+ break;
+ case 'L':
+ ++m_position;
+ m_state = output_lower;
+ breakout = true;
+ break;
+ case 'u':
+ ++m_position;
+ m_state = output_next_upper;
+ breakout = true;
+ break;
+ case 'U':
+ ++m_position;
+ m_state = output_upper;
+ breakout = true;
+ break;
+ case 'E':
+ ++m_position;
+ m_state = output_copy;
+ breakout = true;
+ break;
+ }
+ if(breakout)
+ break;
+ }
+ // see if we have a \n sed style backreference:
+ int v = m_traits.toi(m_position, m_position+1, 10);
+ if((v > 0) || ((v == 0) && (m_flags & ::boost::regex_constants::format_sed)))
+ {
+ put(m_results[v]);
+ break;
+ }
+ else if(v == 0)
+ {
+ // octal ecape sequence:
+ --m_position;
+ std::ptrdiff_t len = ::boost::re_detail::distance(m_position, m_end);
+ len = (std::min)(static_cast<std::ptrdiff_t>(4), len);
+ v = m_traits.toi(m_position, m_position + len, 8);
+ BOOST_ASSERT(v >= 0);
+ put(static_cast<char_type>(v));
+ break;
+ }
+ // Otherwise output the character "as is":
+ put(*m_position++);
+ break;
+ }
+}
+
+template <class OutputIterator, class Results, class traits>
+void basic_regex_formatter<OutputIterator, Results, traits>::format_conditional()
+{
+ if(m_position == m_end)
+ {
+ // oops trailing '?':
+ put(static_cast<char_type>('?'));
+ return;
+ }
+ std::ptrdiff_t len = ::boost::re_detail::distance(m_position, m_end);
+ len = (std::min)(static_cast<std::ptrdiff_t>(2), len);
+ int v = m_traits.toi(m_position, m_position + len, 10);
+ if(v < 0)
+ {
+ // oops not a number:
+ put(static_cast<char_type>('?'));
+ return;
+ }
+
+ // output varies depending upon whether sub-expression v matched or not:
+ if(m_results[v].matched)
+ {
+ m_have_conditional = true;
+ format_all();
+ m_have_conditional = false;
+ if((m_position != m_end) && (*m_position == static_cast<char_type>(':')))
+ {
+ // skip the ':':
+ ++m_position;
+ // save output state, then turn it off:
+ output_state saved_state = m_state;
+ m_state = output_none;
+ // format the rest of this scope:
+ format_until_scope_end();
+ // restore output state:
+ m_state = saved_state;
+ }
+ }
+ else
+ {
+ // save output state, then turn it off:
+ output_state saved_state = m_state;
+ m_state = output_none;
+ // format until ':' or ')':
+ m_have_conditional = true;
+ format_all();
+ m_have_conditional = false;
+ // restore state:
+ m_state = saved_state;
+ if((m_position != m_end) && (*m_position == static_cast<char_type>(':')))
+ {
+ // skip the ':':
+ ++m_position;
+ // format the rest of this scope:
+ format_until_scope_end();
+ }
+ }
+}
+
+template <class OutputIterator, class Results, class traits>
+void basic_regex_formatter<OutputIterator, Results, traits>::format_until_scope_end()
+{
+ do
+ {
+ format_all();
+ if((m_position == m_end) || (*m_position == static_cast<char_type>(')')))
+ return;
+ put(*m_position++);
+ }while(m_position != m_end);
+}
+
+template <class OutputIterator, class Results, class traits>
+void basic_regex_formatter<OutputIterator, Results, traits>::put(char_type c)
+{
+ // write a single character to output
+ // according to which case translation mode we are in:
+ switch(this->m_state)
+ {
+ case output_none:
+ return;
+ case output_next_lower:
+ c = m_traits.tolower(c);
+ this->m_state = output_copy;
+ break;
+ case output_next_upper:
+ c = m_traits.toupper(c);
+ this->m_state = output_copy;
+ break;
+ case output_lower:
+ c = m_traits.tolower(c);
+ break;
+ case output_upper:
+ c = m_traits.toupper(c);
+ break;
+ default:
+ break;
+ }
+ *m_out = c;
+ ++m_out;
+}
+
+template <class OutputIterator, class Results, class traits>
+void basic_regex_formatter<OutputIterator, Results, traits>::put(const sub_match_type& sub)
+{
+ typedef typename sub_match_type::iterator iterator_type;
+ iterator_type i = sub.first;
+ while(i != sub.second)
+ {
+ put(*i);
+ ++i;
+ }
+}
+
+template <class S>
+class string_out_iterator
+#ifndef BOOST_NO_STD_ITERATOR
+ : public std::iterator<std::output_iterator_tag, typename S::value_type>
+#endif
+{
+ S* out;
+public:
+ string_out_iterator(S& s) : out(&s) {}
+ string_out_iterator& operator++() { return *this; }
+ string_out_iterator& operator++(int) { return *this; }
+ string_out_iterator& operator*() { return *this; }
+ string_out_iterator& operator=(typename S::value_type v)
+ {
+ out->append(1, v);
+ return *this;
+ }
+
+#ifdef BOOST_NO_STD_ITERATOR
+ typedef std::ptrdiff_t difference_type;
+ typedef typename S::value_type value_type;
+ typedef value_type* pointer;
+ typedef value_type& reference;
+ typedef std::output_iterator_tag iterator_category;
+#endif
+};
+
+template <class OutputIterator, class Iterator, class Alloc, class charT, class traits>
+OutputIterator regex_format_imp(OutputIterator out,
+ const match_results<Iterator, Alloc>& m,
+ const charT* p1, const charT* p2,
+ match_flag_type flags,
+ const traits& t
+ )
+{
+ if(flags & regex_constants::format_literal)
+ {
+ return re_detail::copy(p1, p2, out);
+ }
+
+ re_detail::basic_regex_formatter<
+ OutputIterator,
+ match_results<Iterator, Alloc>,
+ traits > f(out, m, t);
+ return f.format(p1, p2, flags);
+}
+
+
+} // namespace re_detail
+
+template <class OutputIterator, class Iterator, class charT>
+OutputIterator regex_format(OutputIterator out,
+ const match_results<Iterator>& m,
+ const charT* fmt,
+ match_flag_type flags = format_all
+ )
+{
+ re_detail::trivial_format_traits<charT> traits;
+ return re_detail::regex_format_imp(out, m, fmt, fmt + traits.length(fmt), flags, traits);
+}
+
+template <class OutputIterator, class Iterator, class charT>
+OutputIterator regex_format(OutputIterator out,
+ const match_results<Iterator>& m,
+ const std::basic_string<charT>& fmt,
+ match_flag_type flags = format_all
+ )
+{
+ re_detail::trivial_format_traits<charT> traits;
+ return re_detail::regex_format_imp(out, m, fmt.data(), fmt.data() + fmt.size(), flags, traits);
+}
+
+template <class Iterator, class charT>
+std::basic_string<charT> regex_format(const match_results<Iterator>& m,
+ const charT* fmt,
+ match_flag_type flags = format_all)
+{
+ std::basic_string<charT> result;
+ re_detail::string_out_iterator<std::basic_string<charT> > i(result);
+ re_detail::trivial_format_traits<charT> traits;
+ re_detail::regex_format_imp(i, m, fmt, fmt + traits.length(fmt), flags, traits);
+ return result;
+}
+
+template <class Iterator, class charT>
+std::basic_string<charT> regex_format(const match_results<Iterator>& m,
+ const std::basic_string<charT>& fmt,
+ match_flag_type flags = format_all)
+{
+ std::basic_string<charT> result;
+ re_detail::string_out_iterator<std::basic_string<charT> > i(result);
+ re_detail::trivial_format_traits<charT> traits;
+ re_detail::regex_format_imp(i, m, fmt.data(), fmt.data() + fmt.size(), flags, traits);
+ return result;
+}
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+
+} // namespace boost
+
+#endif // BOOST_REGEX_FORMAT_HPP
+
+
+
+
+
+

Added: sandbox/SOC/2007/regex/named-captures/boost/regex/v4/regex_fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/boost/regex/v4/regex_fwd.hpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,73 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE regex_fwd.cpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Forward declares boost::basic_regex<> and
+ * associated typedefs.
+ */
+
+#ifndef BOOST_REGEX_FWD_HPP_INCLUDED
+#define BOOST_REGEX_FWD_HPP_INCLUDED
+
+#ifndef BOOST_REGEX_CONFIG_HPP
+#include <boost/regex/config.hpp>
+#endif
+
+//
+// define BOOST_REGEX_NO_FWD if this
+// header doesn't work!
+//
+#ifdef BOOST_REGEX_NO_FWD
+# ifndef BOOST_RE_REGEX_HPP
+# include <boost/regex.hpp>
+# endif
+#else
+
+namespace boost{
+
+template <class charT>
+class cpp_regex_traits;
+template <class charT>
+struct c_regex_traits;
+template <class charT>
+class w32_regex_traits;
+
+#ifdef BOOST_REGEX_USE_WIN32_LOCALE
+template <class charT, class implementationT = w32_regex_traits<charT> >
+struct regex_traits;
+#elif defined(BOOST_REGEX_USE_CPP_LOCALE)
+template <class charT, class implementationT = cpp_regex_traits<charT> >
+struct regex_traits;
+#else
+template <class charT, class implementationT = c_regex_traits<charT> >
+struct regex_traits;
+#endif
+
+template <class charT, class traits = regex_traits<charT> >
+class basic_regex;
+
+typedef basic_regex<char, regex_traits<char> > regex;
+#ifndef BOOST_NO_WREGEX
+typedef basic_regex<wchar_t, regex_traits<wchar_t> > wregex;
+#endif
+
+} // namespace boost
+
+#endif // BOOST_REGEX_NO_FWD
+
+#endif
+
+
+
+

Added: sandbox/SOC/2007/regex/named-captures/boost/regex/v4/regex_grep.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/boost/regex/v4/regex_grep.hpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,141 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE regex_grep.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Provides regex_grep implementation.
+ */
+
+#ifndef BOOST_REGEX_V4_REGEX_GREP_HPP
+#define BOOST_REGEX_V4_REGEX_GREP_HPP
+
+
+namespace boost{
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+
+//
+// regex_grep:
+// find all non-overlapping matches within the sequence first last:
+//
+template <class Predicate, class BidiIterator, class charT, class traits>
+inline unsigned int regex_grep(Predicate foo,
+ BidiIterator first,
+ BidiIterator last,
+ const basic_regex<charT, traits>& e,
+ match_flag_type flags = match_default)
+{
+ if(e.flags() & regex_constants::failbit)
+ return false;
+
+ typedef typename match_results<BidiIterator>::allocator_type match_allocator_type;
+
+ match_results<BidiIterator> m;
+ re_detail::perl_matcher<BidiIterator, match_allocator_type, traits> matcher(first, last, m, e, flags, first);
+ unsigned int count = 0;
+ while(matcher.find())
+ {
+ ++count;
+ if(0 == foo(m))
+ return count; // caller doesn't want to go on
+ if(m[0].second == last)
+ return count; // we've reached the end, don't try and find an extra null match.
+ if(m.length() == 0)
+ {
+ if(m[0].second == last)
+ return count;
+ // we found a NULL-match, now try to find
+ // a non-NULL one at the same position:
+ match_results<BidiIterator, match_allocator_type> m2(m);
+ matcher.setf(match_not_null | match_continuous);
+ if(matcher.find())
+ {
+ ++count;
+ if(0 == foo(m))
+ return count;
+ }
+ else
+ {
+ // reset match back to where it was:
+ m = m2;
+ }
+ matcher.unsetf((match_not_null | match_continuous) & ~flags);
+ }
+ }
+ return count;
+}
+
+//
+// regex_grep convenience interfaces:
+#ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
+//
+// this isn't really a partial specialisation, but template function
+// overloading - if the compiler doesn't support partial specialisation
+// then it really won't support this either:
+template <class Predicate, class charT, class traits>
+inline unsigned int regex_grep(Predicate foo, const charT* str,
+ const basic_regex<charT, traits>& e,
+ match_flag_type flags = match_default)
+{
+ return regex_grep(foo, str, str + traits::length(str), e, flags);
+}
+
+template <class Predicate, class ST, class SA, class charT, class traits>
+inline unsigned int regex_grep(Predicate foo, const std::basic_string<charT, ST, SA>& s,
+ const basic_regex<charT, traits>& e,
+ match_flag_type flags = match_default)
+{
+ return regex_grep(foo, s.begin(), s.end(), e, flags);
+}
+#else // partial specialisation
+inline unsigned int regex_grep(bool (*foo)(const cmatch&), const char* str,
+ const regex& e,
+ match_flag_type flags = match_default)
+{
+ return regex_grep(foo, str, str + regex::traits_type::length(str), e, flags);
+}
+#ifndef BOOST_NO_WREGEX
+inline unsigned int regex_grep(bool (*foo)(const wcmatch&), const wchar_t* str,
+ const wregex& e,
+ match_flag_type flags = match_default)
+{
+ return regex_grep(foo, str, str + wregex::traits_type::length(str), e, flags);
+}
+#endif
+inline unsigned int regex_grep(bool (*foo)(const match_results<std::string::const_iterator>&), const std::string& s,
+ const regex& e,
+ match_flag_type flags = match_default)
+{
+ return regex_grep(foo, s.begin(), s.end(), e, flags);
+}
+#if !defined(BOOST_NO_WREGEX)
+inline unsigned int regex_grep(bool (*foo)(const match_results<std::basic_string<wchar_t>::const_iterator>&),
+ const std::basic_string<wchar_t>& s,
+ const wregex& e,
+ match_flag_type flags = match_default)
+{
+ return regex_grep(foo, s.begin(), s.end(), e, flags);
+}
+#endif
+#endif
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+
+} // namespace boost
+
+#endif // BOOST_REGEX_V4_REGEX_GREP_HPP
+

Added: sandbox/SOC/2007/regex/named-captures/boost/regex/v4/regex_iterator.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/boost/regex/v4/regex_iterator.hpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,187 @@
+/*
+ *
+ * Copyright (c) 2003
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE regex_iterator.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Provides regex_iterator implementation.
+ */
+
+#ifndef BOOST_REGEX_V4_REGEX_ITERATOR_HPP
+#define BOOST_REGEX_V4_REGEX_ITERATOR_HPP
+
+#include <boost/shared_ptr.hpp>
+
+namespace boost{
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+
+template <class BidirectionalIterator,
+ class charT,
+ class traits>
+class regex_iterator_implementation
+{
+ typedef basic_regex<charT, traits> regex_type;
+
+ match_results<BidirectionalIterator> what; // current match
+ BidirectionalIterator base; // start of sequence
+ BidirectionalIterator end; // end of sequence
+ const regex_type re; // the expression
+ match_flag_type flags; // flags for matching
+
+public:
+ regex_iterator_implementation(const regex_type* p, BidirectionalIterator last, match_flag_type f)
+ : base(), end(last), re(*p), flags(f){}
+ bool init(BidirectionalIterator first)
+ {
+ base = first;
+ return regex_search(first, end, what, re, flags);
+ }
+ bool compare(const regex_iterator_implementation& that)
+ {
+ if(this == &that) return true;
+ return (&re.get_data() == &that.re.get_data()) && (end == that.end) && (flags == that.flags) && (what[0].first == that.what[0].first) && (what[0].second == that.what[0].second);
+ }
+ const match_results<BidirectionalIterator>& get()
+ { return what; }
+ bool next()
+ {
+ //if(what.prefix().first != what[0].second)
+ // flags |= match_prev_avail;
+ BidirectionalIterator next_start = what[0].second;
+ match_flag_type f(flags);
+ if(!what.length())
+ f |= regex_constants::match_not_initial_null;
+ //if(base != next_start)
+ // f |= regex_constants::match_not_bob;
+ bool result = regex_search(next_start, end, what, re, f, base);
+ if(result)
+ what.set_base(base);
+ return result;
+ }
+private:
+ regex_iterator_implementation& operator=(const regex_iterator_implementation&);
+};
+
+template <class BidirectionalIterator,
+ class charT = BOOST_DEDUCED_TYPENAME re_detail::regex_iterator_traits<BidirectionalIterator>::value_type,
+ class traits = regex_traits<charT> >
+class regex_iterator
+#ifndef BOOST_NO_STD_ITERATOR
+ : public std::iterator<
+ std::forward_iterator_tag,
+ match_results<BidirectionalIterator>,
+ typename re_detail::regex_iterator_traits<BidirectionalIterator>::difference_type,
+ const match_results<BidirectionalIterator>*,
+ const match_results<BidirectionalIterator>& >
+#endif
+{
+private:
+ typedef regex_iterator_implementation<BidirectionalIterator, charT, traits> impl;
+ typedef shared_ptr<impl> pimpl;
+public:
+ typedef basic_regex<charT, traits> regex_type;
+ typedef match_results<BidirectionalIterator> value_type;
+ typedef typename re_detail::regex_iterator_traits<BidirectionalIterator>::difference_type
+ difference_type;
+ typedef const value_type* pointer;
+ typedef const value_type& reference;
+ typedef std::forward_iterator_tag iterator_category;
+
+ regex_iterator(){}
+ regex_iterator(BidirectionalIterator a, BidirectionalIterator b,
+ const regex_type& re,
+ match_flag_type m = match_default)
+ : pdata(new impl(&re, b, m))
+ {
+ if(!pdata->init(a))
+ {
+ pdata.reset();
+ }
+ }
+ regex_iterator(const regex_iterator& that)
+ : pdata(that.pdata) {}
+ regex_iterator& operator=(const regex_iterator& that)
+ {
+ pdata = that.pdata;
+ return *this;
+ }
+ bool operator==(const regex_iterator& that)const
+ {
+ if((pdata.get() == 0) || (that.pdata.get() == 0))
+ return pdata.get() == that.pdata.get();
+ return pdata->compare(*(that.pdata.get()));
+ }
+ bool operator!=(const regex_iterator& that)const
+ { return !(*this == that); }
+ const value_type& operator*()const
+ { return pdata->get(); }
+ const value_type* operator->()const
+ { return &(pdata->get()); }
+ regex_iterator& operator++()
+ {
+ cow();
+ if(0 == pdata->next())
+ {
+ pdata.reset();
+ }
+ return *this;
+ }
+ regex_iterator operator++(int)
+ {
+ regex_iterator result(*this);
+ ++(*this);
+ return result;
+ }
+private:
+
+ pimpl pdata;
+
+ void cow()
+ {
+ // copy-on-write
+ if(pdata.get() && !pdata.unique())
+ {
+ pdata.reset(new impl(*(pdata.get())));
+ }
+ }
+};
+
+typedef regex_iterator<const char*> cregex_iterator;
+typedef regex_iterator<std::string::const_iterator> sregex_iterator;
+#ifndef BOOST_NO_WREGEX
+typedef regex_iterator<const wchar_t*> wcregex_iterator;
+typedef regex_iterator<std::wstring::const_iterator> wsregex_iterator;
+#endif
+
+// make_regex_iterator:
+template <class charT, class traits>
+inline regex_iterator<const charT*, charT, traits> make_regex_iterator(const charT* p, const basic_regex<charT, traits>& e, regex_constants::match_flag_type m = regex_constants::match_default)
+{
+ return regex_iterator<const charT*, charT, traits>(p, p+traits::length(p), e, m);
+}
+template <class charT, class traits, class ST, class SA>
+inline regex_iterator<typename std::basic_string<charT, ST, SA>::const_iterator, charT, traits> make_regex_iterator(const std::basic_string<charT, ST, SA>& p, const basic_regex<charT, traits>& e, regex_constants::match_flag_type m = regex_constants::match_default)
+{
+ return regex_iterator<typename std::basic_string<charT, ST, SA>::const_iterator, charT, traits>(p.begin(), p.end(), e, m);
+}
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+
+} // namespace boost
+
+#endif // BOOST_REGEX_V4_REGEX_ITERATOR_HPP
+

Added: sandbox/SOC/2007/regex/named-captures/boost/regex/v4/regex_kmp.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/boost/regex/v4/regex_kmp.hpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,108 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE regex_kmp.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Provides Knuth Morris Pratt search operations.
+ * Note this is an internal header file included
+ * by regex.hpp, do not include on its own.
+ */
+
+#ifndef BOOST_REGEX_KMP_HPP
+#define BOOST_REGEX_KMP_HPP
+
+#ifdef BOOST_REGEX_CONFIG_HPP
+#include <boost/regex/config.hpp>
+#endif
+
+
+namespace boost{
+ namespace re_detail{
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+
+template <class charT>
+struct kmp_info
+{
+ unsigned int size;
+ unsigned int len;
+ const charT* pstr;
+ int kmp_next[1];
+};
+
+template <class charT, class Allocator>
+void kmp_free(kmp_info<charT>* pinfo, const Allocator& a)
+{
+ typedef typename boost::detail::rebind_allocator<char, Allocator>::type atype;
+ atype(a).deallocate(reinterpret_cast<char*>(pinfo), pinfo->size);
+}
+
+template <class iterator, class charT, class Trans, class Allocator>
+kmp_info<charT>* kmp_compile(iterator first, iterator last, charT, Trans translate, const Allocator& a)
+{
+ typedef typename boost::detail::rebind_allocator<char, Allocator>::type atype;
+ int i, j, m;
+ i = 0;
+ m = static_cast<int>(::boost::re_detail::distance(first, last));
+ ++m;
+ unsigned int size = sizeof(kmp_info<charT>) + sizeof(int)*m + sizeof(charT)*m;
+ --m;
+ //
+ // allocate struct and fill it in:
+ //
+ kmp_info<charT>* pinfo = reinterpret_cast<kmp_info<charT>*>(atype(a).allocate(size));
+ BOOST_REGEX_NOEH_ASSERT(pinfo)
+ pinfo->size = size;
+ pinfo->len = m;
+ charT* p = reinterpret_cast<charT*>(reinterpret_cast<char*>(pinfo) + sizeof(kmp_info<charT>) + sizeof(int)*(m+1));
+ pinfo->pstr = p;
+ while(first != last)
+ {
+ *p = translate(*first);
+ ++first;
+ ++p;
+ }
+ *p = 0;
+ //
+ // finally do regular kmp compile:
+ //
+ j = pinfo->kmp_next[0] = -1;
+ while (i < m)
+ {
+ while ((j > -1) && (pinfo->pstr[i] != pinfo->pstr[j]))
+ j = pinfo->kmp_next[j];
+ ++i;
+ ++j;
+ if (pinfo->pstr[i] == pinfo->pstr[j])
+ pinfo->kmp_next[i] = pinfo->kmp_next[j];
+ else
+ pinfo->kmp_next[i] = j;
+ }
+
+ return pinfo;
+}
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+
+ } // namepsace re_detail
+} // namespace boost
+
+#endif // BOOST_REGEX_KMP_HPP
+
+
+
+

Added: sandbox/SOC/2007/regex/named-captures/boost/regex/v4/regex_match.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/boost/regex/v4/regex_match.hpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,368 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE regex_match.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Regular expression matching algorithms.
+ * Note this is an internal header file included
+ * by regex.hpp, do not include on its own.
+ */
+
+
+#ifndef BOOST_REGEX_MATCH_HPP
+#define BOOST_REGEX_MATCH_HPP
+
+namespace boost{
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+
+//
+// proc regex_match
+// returns true if the specified regular expression matches
+// the whole of the input. Fills in what matched in m.
+//
+template <class BidiIterator, class Allocator, class charT, class traits>
+bool regex_match(BidiIterator first, BidiIterator last,
+ match_results<BidiIterator, Allocator>& m,
+ const basic_regex<charT, traits>& e,
+ match_flag_type flags = match_default)
+{
+ re_detail::perl_matcher<BidiIterator, Allocator, traits> matcher(first, last, m, e, flags, first);
+ return matcher.match();
+}
+template <class iterator, class charT, class traits>
+bool regex_match(iterator first, iterator last,
+ const basic_regex<charT, traits>& e,
+ match_flag_type flags = match_default)
+{
+ match_results<iterator> m;
+ return regex_match(first, last, m, e, flags | regex_constants::match_any);
+}
+//
+// query_match convenience interfaces:
+#ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
+//
+// this isn't really a partial specialisation, but template function
+// overloading - if the compiler doesn't support partial specialisation
+// then it really won't support this either:
+template <class charT, class Allocator, class traits>
+inline bool regex_match(const charT* str,
+ match_results<const charT*, Allocator>& m,
+ const basic_regex<charT, traits>& e,
+ match_flag_type flags = match_default)
+{
+ return regex_match(str, str + traits::length(str), m, e, flags);
+}
+
+template <class ST, class SA, class Allocator, class charT, class traits>
+inline bool regex_match(const std::basic_string<charT, ST, SA>& s,
+ match_results<typename std::basic_string<charT, ST, SA>::const_iterator, Allocator>& m,
+ const basic_regex<charT, traits>& e,
+ match_flag_type flags = match_default)
+{
+ return regex_match(s.begin(), s.end(), m, e, flags);
+}
+template <class charT, class traits>
+inline bool regex_match(const charT* str,
+ const basic_regex<charT, traits>& e,
+ match_flag_type flags = match_default)
+{
+ match_results<const charT*> m;
+ return regex_match(str, str + traits::length(str), m, e, flags | regex_constants::match_any);
+}
+
+template <class ST, class SA, class charT, class traits>
+inline bool regex_match(const std::basic_string<charT, ST, SA>& s,
+ const basic_regex<charT, traits>& e,
+ match_flag_type flags = match_default)
+{
+ typedef typename std::basic_string<charT, ST, SA>::const_iterator iterator;
+ match_results<iterator> m;
+ return regex_match(s.begin(), s.end(), m, e, flags | regex_constants::match_any);
+}
+#else // partial ordering
+inline bool regex_match(const char* str,
+ cmatch& m,
+ const regex& e,
+ match_flag_type flags = match_default)
+{
+ return regex_match(str, str + regex::traits_type::length(str), m, e, flags);
+}
+inline bool regex_match(const char* str,
+ const regex& e,
+ match_flag_type flags = match_default)
+{
+ match_results<const char*> m;
+ return regex_match(str, str + regex::traits_type::length(str), m, e, flags | regex_constants::match_any);
+}
+#ifndef BOOST_NO_STD_LOCALE
+inline bool regex_match(const char* str,
+ cmatch& m,
+ const basic_regex<char, cpp_regex_traits<char> >& e,
+ match_flag_type flags = match_default)
+{
+ return regex_match(str, str + regex::traits_type::length(str), m, e, flags);
+}
+inline bool regex_match(const char* str,
+ const basic_regex<char, cpp_regex_traits<char> >& e,
+ match_flag_type flags = match_default)
+{
+ match_results<const char*> m;
+ return regex_match(str, str + regex::traits_type::length(str), m, e, flags | regex_constants::match_any);
+}
+#endif
+inline bool regex_match(const char* str,
+ cmatch& m,
+ const basic_regex<char, c_regex_traits<char> >& e,
+ match_flag_type flags = match_default)
+{
+ return regex_match(str, str + regex::traits_type::length(str), m, e, flags);
+}
+inline bool regex_match(const char* str,
+ const basic_regex<char, c_regex_traits<char> >& e,
+ match_flag_type flags = match_default)
+{
+ match_results<const char*> m;
+ return regex_match(str, str + regex::traits_type::length(str), m, e, flags | regex_constants::match_any);
+}
+#if defined(_WIN32) && !defined(BOOST_REGEX_NO_W32)
+inline bool regex_match(const char* str,
+ cmatch& m,
+ const basic_regex<char, w32_regex_traits<char> >& e,
+ match_flag_type flags = match_default)
+{
+ return regex_match(str, str + regex::traits_type::length(str), m, e, flags);
+}
+inline bool regex_match(const char* str,
+ const basic_regex<char, w32_regex_traits<char> >& e,
+ match_flag_type flags = match_default)
+{
+ match_results<const char*> m;
+ return regex_match(str, str + regex::traits_type::length(str), m, e, flags | regex_constants::match_any);
+}
+#endif
+#ifndef BOOST_NO_WREGEX
+inline bool regex_match(const wchar_t* str,
+ wcmatch& m,
+ const wregex& e,
+ match_flag_type flags = match_default)
+{
+ return regex_match(str, str + wregex::traits_type::length(str), m, e, flags);
+}
+inline bool regex_match(const wchar_t* str,
+ const wregex& e,
+ match_flag_type flags = match_default)
+{
+ match_results<const wchar_t*> m;
+ return regex_match(str, str + wregex::traits_type::length(str), m, e, flags | regex_constants::match_any);
+}
+#ifndef BOOST_NO_STD_LOCALE
+inline bool regex_match(const wchar_t* str,
+ wcmatch& m,
+ const basic_regex<wchar_t, cpp_regex_traits<wchar_t> >& e,
+ match_flag_type flags = match_default)
+{
+ return regex_match(str, str + wregex::traits_type::length(str), m, e, flags);
+}
+inline bool regex_match(const wchar_t* str,
+ const basic_regex<wchar_t, cpp_regex_traits<wchar_t> >& e,
+ match_flag_type flags = match_default)
+{
+ match_results<const wchar_t*> m;
+ return regex_match(str, str + wregex::traits_type::length(str), m, e, flags | regex_constants::match_any);
+}
+#endif
+inline bool regex_match(const wchar_t* str,
+ wcmatch& m,
+ const basic_regex<wchar_t, c_regex_traits<wchar_t> >& e,
+ match_flag_type flags = match_default)
+{
+ return regex_match(str, str + wregex::traits_type::length(str), m, e, flags);
+}
+inline bool regex_match(const wchar_t* str,
+ const basic_regex<wchar_t, c_regex_traits<wchar_t> >& e,
+ match_flag_type flags = match_default)
+{
+ match_results<const wchar_t*> m;
+ return regex_match(str, str + wregex::traits_type::length(str), m, e, flags | regex_constants::match_any);
+}
+#if defined(_WIN32) && !defined(BOOST_REGEX_NO_W32)
+inline bool regex_match(const wchar_t* str,
+ wcmatch& m,
+ const basic_regex<wchar_t, w32_regex_traits<wchar_t> >& e,
+ match_flag_type flags = match_default)
+{
+ return regex_match(str, str + wregex::traits_type::length(str), m, e, flags);
+}
+inline bool regex_match(const wchar_t* str,
+ const basic_regex<wchar_t, w32_regex_traits<wchar_t> >& e,
+ match_flag_type flags = match_default)
+{
+ match_results<const wchar_t*> m;
+ return regex_match(str, str + wregex::traits_type::length(str), m, e, flags | regex_constants::match_any);
+}
+#endif
+#endif
+inline bool regex_match(const std::string& s,
+ smatch& m,
+ const regex& e,
+ match_flag_type flags = match_default)
+{
+ return regex_match(s.begin(), s.end(), m, e, flags);
+}
+inline bool regex_match(const std::string& s,
+ const regex& e,
+ match_flag_type flags = match_default)
+{
+ match_results<std::string::const_iterator> m;
+ return regex_match(s.begin(), s.end(), m, e, flags | regex_constants::match_any);
+}
+#ifndef BOOST_NO_STD_LOCALE
+inline bool regex_match(const std::string& s,
+ smatch& m,
+ const basic_regex<char, cpp_regex_traits<char> >& e,
+ match_flag_type flags = match_default)
+{
+ return regex_match(s.begin(), s.end(), m, e, flags);
+}
+inline bool regex_match(const std::string& s,
+ const basic_regex<char, cpp_regex_traits<char> >& e,
+ match_flag_type flags = match_default)
+{
+ match_results<std::string::const_iterator> m;
+ return regex_match(s.begin(), s.end(), m, e, flags | regex_constants::match_any);
+}
+#endif
+inline bool regex_match(const std::string& s,
+ smatch& m,
+ const basic_regex<char, c_regex_traits<char> >& e,
+ match_flag_type flags = match_default)
+{
+ return regex_match(s.begin(), s.end(), m, e, flags);
+}
+inline bool regex_match(const std::string& s,
+ const basic_regex<char, c_regex_traits<char> >& e,
+ match_flag_type flags = match_default)
+{
+ match_results<std::string::const_iterator> m;
+ return regex_match(s.begin(), s.end(), m, e, flags | regex_constants::match_any);
+}
+#if defined(_WIN32) && !defined(BOOST_REGEX_NO_W32)
+inline bool regex_match(const std::string& s,
+ smatch& m,
+ const basic_regex<char, w32_regex_traits<char> >& e,
+ match_flag_type flags = match_default)
+{
+ return regex_match(s.begin(), s.end(), m, e, flags);
+}
+inline bool regex_match(const std::string& s,
+ const basic_regex<char, w32_regex_traits<char> >& e,
+ match_flag_type flags = match_default)
+{
+ match_results<std::string::const_iterator> m;
+ return regex_match(s.begin(), s.end(), m, e, flags | regex_constants::match_any);
+}
+#endif
+#if !defined(BOOST_NO_WREGEX)
+inline bool regex_match(const std::basic_string<wchar_t>& s,
+ match_results<std::basic_string<wchar_t>::const_iterator>& m,
+ const wregex& e,
+ match_flag_type flags = match_default)
+{
+ return regex_match(s.begin(), s.end(), m, e, flags);
+}
+inline bool regex_match(const std::basic_string<wchar_t>& s,
+ const wregex& e,
+ match_flag_type flags = match_default)
+{
+ match_results<std::basic_string<wchar_t>::const_iterator> m;
+ return regex_match(s.begin(), s.end(), m, e, flags | regex_constants::match_any);
+}
+#ifndef BOOST_NO_STD_LOCALE
+inline bool regex_match(const std::basic_string<wchar_t>& s,
+ match_results<std::basic_string<wchar_t>::const_iterator>& m,
+ const basic_regex<wchar_t, cpp_regex_traits<wchar_t> >& e,
+ match_flag_type flags = match_default)
+{
+ return regex_match(s.begin(), s.end(), m, e, flags);
+}
+inline bool regex_match(const std::basic_string<wchar_t>& s,
+ const basic_regex<wchar_t, cpp_regex_traits<wchar_t> >& e,
+ match_flag_type flags = match_default)
+{
+ match_results<std::basic_string<wchar_t>::const_iterator> m;
+ return regex_match(s.begin(), s.end(), m, e, flags | regex_constants::match_any);
+}
+#endif
+inline bool regex_match(const std::basic_string<wchar_t>& s,
+ match_results<std::basic_string<wchar_t>::const_iterator>& m,
+ const basic_regex<wchar_t, c_regex_traits<wchar_t> >& e,
+ match_flag_type flags = match_default)
+{
+ return regex_match(s.begin(), s.end(), m, e, flags);
+}
+inline bool regex_match(const std::basic_string<wchar_t>& s,
+ const basic_regex<wchar_t, c_regex_traits<wchar_t> >& e,
+ match_flag_type flags = match_default)
+{
+ match_results<std::basic_string<wchar_t>::const_iterator> m;
+ return regex_match(s.begin(), s.end(), m, e, flags | regex_constants::match_any);
+}
+#if defined(_WIN32) && !defined(BOOST_REGEX_NO_W32)
+inline bool regex_match(const std::basic_string<wchar_t>& s,
+ match_results<std::basic_string<wchar_t>::const_iterator>& m,
+ const basic_regex<wchar_t, w32_regex_traits<wchar_t> >& e,
+ match_flag_type flags = match_default)
+{
+ return regex_match(s.begin(), s.end(), m, e, flags);
+}
+inline bool regex_match(const std::basic_string<wchar_t>& s,
+ const basic_regex<wchar_t, w32_regex_traits<wchar_t> >& e,
+ match_flag_type flags = match_default)
+{
+ match_results<std::basic_string<wchar_t>::const_iterator> m;
+ return regex_match(s.begin(), s.end(), m, e, flags | regex_constants::match_any);
+}
+#endif
+#endif
+
+#endif
+
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+
+} // namespace boost
+
+#endif // BOOST_REGEX_MATCH_HPP
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

Added: sandbox/SOC/2007/regex/named-captures/boost/regex/v4/regex_merge.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/boost/regex/v4/regex_merge.hpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,79 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE regex_format.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Provides formatting output routines for search and replace
+ * operations. Note this is an internal header file included
+ * by regex.hpp, do not include on its own.
+ */
+
+#ifndef BOOST_REGEX_V4_REGEX_MERGE_HPP
+#define BOOST_REGEX_V4_REGEX_MERGE_HPP
+
+
+namespace boost{
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+
+template <class OutputIterator, class Iterator, class traits, class charT>
+inline OutputIterator regex_merge(OutputIterator out,
+ Iterator first,
+ Iterator last,
+ const basic_regex<charT, traits>& e,
+ const charT* fmt,
+ match_flag_type flags = match_default)
+{
+ return regex_replace(out, first, last, e, fmt, flags);
+}
+
+template <class OutputIterator, class Iterator, class traits, class charT>
+inline OutputIterator regex_merge(OutputIterator out,
+ Iterator first,
+ Iterator last,
+ const basic_regex<charT, traits>& e,
+ const std::basic_string<charT>& fmt,
+ match_flag_type flags = match_default)
+{
+ return regex_merge(out, first, last, e, fmt.c_str(), flags);
+}
+
+template <class traits, class charT>
+inline std::basic_string<charT> regex_merge(const std::basic_string<charT>& s,
+ const basic_regex<charT, traits>& e,
+ const charT* fmt,
+ match_flag_type flags = match_default)
+{
+ return regex_replace(s, e, fmt, flags);
+}
+
+template <class traits, class charT>
+inline std::basic_string<charT> regex_merge(const std::basic_string<charT>& s,
+ const basic_regex<charT, traits>& e,
+ const std::basic_string<charT>& fmt,
+ match_flag_type flags = match_default)
+{
+ return regex_replace(s, e, fmt, flags);
+}
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+
+} // namespace boost
+
+#endif // BOOST_REGEX_V4_REGEX_MERGE_HPP
+
+

Added: sandbox/SOC/2007/regex/named-captures/boost/regex/v4/regex_raw_buffer.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/boost/regex/v4/regex_raw_buffer.hpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,196 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE regex_raw_buffer.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Raw character buffer for regex code.
+ * Note this is an internal header file included
+ * by regex.hpp, do not include on its own.
+ */
+
+#ifndef BOOST_REGEX_RAW_BUFFER_HPP
+#define BOOST_REGEX_RAW_BUFFER_HPP
+
+#ifndef BOOST_REGEX_CONFIG_HPP
+#include <boost/regex/config.hpp>
+#endif
+
+#include <algorithm>
+#include <cstddef>
+
+namespace boost{
+ namespace re_detail{
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+
+struct empty_padding{};
+
+union padding
+{
+ void* p;
+ unsigned int i;
+};
+
+template <int N>
+struct padding3
+{
+ enum{
+ padding_size = 8,
+ padding_mask = 7
+ };
+};
+
+template<>
+struct padding3<2>
+{
+ enum{
+ padding_size = 2,
+ padding_mask = 1
+ };
+};
+
+template<>
+struct padding3<4>
+{
+ enum{
+ padding_size = 4,
+ padding_mask = 3
+ };
+};
+
+template<>
+struct padding3<8>
+{
+ enum{
+ padding_size = 8,
+ padding_mask = 7
+ };
+};
+
+template<>
+struct padding3<16>
+{
+ enum{
+ padding_size = 16,
+ padding_mask = 15
+ };
+};
+
+enum{
+ padding_size = padding3<sizeof(padding)>::padding_size,
+ padding_mask = padding3<sizeof(padding)>::padding_mask
+};
+
+//
+// class raw_storage
+// basically this is a simplified vector<unsigned char>
+// this is used by basic_regex for expression storage
+//
+
+class BOOST_REGEX_DECL raw_storage
+{
+public:
+ typedef std::size_t size_type;
+ typedef unsigned char* pointer;
+private:
+ pointer last, start, end;
+public:
+
+ raw_storage();
+ raw_storage(size_type n);
+
+ ~raw_storage()
+ {
+ ::operator delete(start);
+ }
+
+ void BOOST_REGEX_CALL resize(size_type n);
+
+ void* BOOST_REGEX_CALL extend(size_type n)
+ {
+ if(size_type(last - end) < n)
+ resize(n + (end - start));
+ register pointer result = end;
+ end += n;
+ return result;
+ }
+
+ void* BOOST_REGEX_CALL insert(size_type pos, size_type n);
+
+ size_type BOOST_REGEX_CALL size()
+ {
+ return end - start;
+ }
+
+ size_type BOOST_REGEX_CALL capacity()
+ {
+ return last - start;
+ }
+
+ void* BOOST_REGEX_CALL data()const
+ {
+ return start;
+ }
+
+ size_type BOOST_REGEX_CALL index(void* ptr)
+ {
+ return static_cast<pointer>(ptr) - static_cast<pointer>(data());
+ }
+
+ void BOOST_REGEX_CALL clear()
+ {
+ end = start;
+ }
+
+ void BOOST_REGEX_CALL align()
+ {
+ // move end up to a boundary:
+ end = start + (((end - start) + padding_mask) & ~padding_mask);
+ }
+ void swap(raw_storage& that)
+ {
+ std::swap(start, that.start);
+ std::swap(end, that.end);
+ std::swap(last, that.last);
+ }
+};
+
+inline raw_storage::raw_storage()
+{
+ last = start = end = 0;
+}
+
+inline raw_storage::raw_storage(size_type n)
+{
+ start = end = static_cast<pointer>(::operator new(n));
+ BOOST_REGEX_NOEH_ASSERT(start)
+ last = start + n;
+}
+
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+
+} // namespace re_detail
+} // namespace boost
+
+#endif
+
+
+
+
+
+

Added: sandbox/SOC/2007/regex/named-captures/boost/regex/v4/regex_replace.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/boost/regex/v4/regex_replace.hpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,108 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE regex_format.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Provides formatting output routines for search and replace
+ * operations. Note this is an internal header file included
+ * by regex.hpp, do not include on its own.
+ */
+
+#ifndef BOOST_REGEX_V4_REGEX_REPLACE_HPP
+#define BOOST_REGEX_V4_REGEX_REPLACE_HPP
+
+
+namespace boost{
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+
+template <class OutputIterator, class BidirectionalIterator, class traits, class charT>
+OutputIterator regex_replace(OutputIterator out,
+ BidirectionalIterator first,
+ BidirectionalIterator last,
+ const basic_regex<charT, traits>& e,
+ const charT* fmt,
+ match_flag_type flags = match_default)
+{
+ regex_iterator<BidirectionalIterator, charT, traits> i(first, last, e, flags);
+ regex_iterator<BidirectionalIterator, charT, traits> j;
+ if(i == j)
+ {
+ if(!(flags & regex_constants::format_no_copy))
+ out = re_detail::copy(first, last, out);
+ }
+ else
+ {
+ BidirectionalIterator last_m(first);
+ while(i != j)
+ {
+ if(!(flags & regex_constants::format_no_copy))
+ out = re_detail::copy(i->prefix().first, i->prefix().second, out);
+ out = i->format(out, fmt, flags, e);
+ last_m = (*i)[0].second;
+ if(flags & regex_constants::format_first_only)
+ break;
+ ++i;
+ }
+ if(!(flags & regex_constants::format_no_copy))
+ out = re_detail::copy(last_m, last, out);
+ }
+ return out;
+}
+
+template <class OutputIterator, class Iterator, class traits, class charT>
+inline OutputIterator regex_replace(OutputIterator out,
+ Iterator first,
+ Iterator last,
+ const basic_regex<charT, traits>& e,
+ const std::basic_string<charT>& fmt,
+ match_flag_type flags = match_default)
+{
+ return regex_replace(out, first, last, e, fmt.c_str(), flags);
+}
+
+template <class traits, class charT>
+std::basic_string<charT> regex_replace(const std::basic_string<charT>& s,
+ const basic_regex<charT, traits>& e,
+ const charT* fmt,
+ match_flag_type flags = match_default)
+{
+ std::basic_string<charT> result;
+ re_detail::string_out_iterator<std::basic_string<charT> > i(result);
+ regex_replace(i, s.begin(), s.end(), e, fmt, flags);
+ return result;
+}
+
+template <class traits, class charT>
+std::basic_string<charT> regex_replace(const std::basic_string<charT>& s,
+ const basic_regex<charT, traits>& e,
+ const std::basic_string<charT>& fmt,
+ match_flag_type flags = match_default)
+{
+ std::basic_string<charT> result;
+ re_detail::string_out_iterator<std::basic_string<charT> > i(result);
+ regex_replace(i, s.begin(), s.end(), e, fmt.c_str(), flags);
+ return result;
+}
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+
+} // namespace boost
+
+#endif // BOOST_REGEX_V4_REGEX_REPLACE_HPP
+
+

Added: sandbox/SOC/2007/regex/named-captures/boost/regex/v4/regex_search.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/boost/regex/v4/regex_search.hpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,203 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE regex_search.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Provides regex_search implementation.
+ */
+
+#ifndef BOOST_REGEX_V4_REGEX_SEARCH_HPP
+#define BOOST_REGEX_V4_REGEX_SEARCH_HPP
+
+
+namespace boost{
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+
+template <class BidiIterator, class Allocator, class charT, class traits>
+bool regex_search(BidiIterator first, BidiIterator last,
+ match_results<BidiIterator, Allocator>& m,
+ const basic_regex<charT, traits>& e,
+ match_flag_type flags = match_default)
+{
+ return regex_search(first, last, m, e, flags, first);
+}
+
+template <class BidiIterator, class Allocator, class charT, class traits>
+bool regex_search(BidiIterator first, BidiIterator last,
+ match_results<BidiIterator, Allocator>& m,
+ const basic_regex<charT, traits>& e,
+ match_flag_type flags,
+ BidiIterator base)
+{
+ if(e.flags() & regex_constants::failbit)
+ return false;
+
+ re_detail::perl_matcher<BidiIterator, Allocator, traits> matcher(first, last, m, e, flags, base);
+ return matcher.find();
+}
+
+//
+// regex_search convenience interfaces:
+#ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
+//
+// this isn't really a partial specialisation, but template function
+// overloading - if the compiler doesn't support partial specialisation
+// then it really won't support this either:
+template <class charT, class Allocator, class traits>
+inline bool regex_search(const charT* str,
+ match_results<const charT*, Allocator>& m,
+ const basic_regex<charT, traits>& e,
+ match_flag_type flags = match_default)
+{
+ return regex_search(str, str + traits::length(str), m, e, flags);
+}
+
+template <class ST, class SA, class Allocator, class charT, class traits>
+inline bool regex_search(const std::basic_string<charT, ST, SA>& s,
+ match_results<typename std::basic_string<charT, ST, SA>::const_iterator, Allocator>& m,
+ const basic_regex<charT, traits>& e,
+ match_flag_type flags = match_default)
+{
+ return regex_search(s.begin(), s.end(), m, e, flags);
+}
+#else // partial overloads:
+inline bool regex_search(const char* str,
+ cmatch& m,
+ const regex& e,
+ match_flag_type flags = match_default)
+{
+ return regex_search(str, str + regex::traits_type::length(str), m, e, flags);
+}
+inline bool regex_search(const char* first, const char* last,
+ const regex& e,
+ match_flag_type flags = match_default)
+{
+ cmatch m;
+ return regex_search(first, last, m, e, flags | regex_constants::match_any);
+}
+
+#ifndef BOOST_NO_WREGEX
+inline bool regex_search(const wchar_t* str,
+ wcmatch& m,
+ const wregex& e,
+ match_flag_type flags = match_default)
+{
+ return regex_search(str, str + wregex::traits_type::length(str), m, e, flags);
+}
+inline bool regex_search(const wchar_t* first, const wchar_t* last,
+ const wregex& e,
+ match_flag_type flags = match_default)
+{
+ wcmatch m;
+ return regex_search(first, last, m, e, flags | regex_constants::match_any);
+}
+#endif
+inline bool regex_search(const std::string& s,
+ smatch& m,
+ const regex& e,
+ match_flag_type flags = match_default)
+{
+ return regex_search(s.begin(), s.end(), m, e, flags);
+}
+#if !defined(BOOST_NO_WREGEX)
+inline bool regex_search(const std::basic_string<wchar_t>& s,
+ wsmatch& m,
+ const wregex& e,
+ match_flag_type flags = match_default)
+{
+ return regex_search(s.begin(), s.end(), m, e, flags);
+}
+#endif
+
+#endif
+
+template <class BidiIterator, class charT, class traits>
+bool regex_search(BidiIterator first, BidiIterator last,
+ const basic_regex<charT, traits>& e,
+ match_flag_type flags = match_default)
+{
+ if(e.flags() & regex_constants::failbit)
+ return false;
+
+ match_results<BidiIterator> m;
+ typedef typename match_results<BidiIterator>::allocator_type match_alloc_type;
+ re_detail::perl_matcher<BidiIterator, match_alloc_type, traits> matcher(first, last, m, e, flags | regex_constants::match_any, first);
+ return matcher.find();
+}
+
+#ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
+
+template <class charT, class traits>
+inline bool regex_search(const charT* str,
+ const basic_regex<charT, traits>& e,
+ match_flag_type flags = match_default)
+{
+ return regex_search(str, str + traits::length(str), e, flags);
+}
+
+template <class ST, class SA, class charT, class traits>
+inline bool regex_search(const std::basic_string<charT, ST, SA>& s,
+ const basic_regex<charT, traits>& e,
+ match_flag_type flags = match_default)
+{
+ return regex_search(s.begin(), s.end(), e, flags);
+}
+#else // non-template function overloads
+inline bool regex_search(const char* str,
+ const regex& e,
+ match_flag_type flags = match_default)
+{
+ cmatch m;
+ return regex_search(str, str + regex::traits_type::length(str), m, e, flags | regex_constants::match_any);
+}
+#ifndef BOOST_NO_WREGEX
+inline bool regex_search(const wchar_t* str,
+ const wregex& e,
+ match_flag_type flags = match_default)
+{
+ wcmatch m;
+ return regex_search(str, str + wregex::traits_type::length(str), m, e, flags | regex_constants::match_any);
+}
+#endif
+inline bool regex_search(const std::string& s,
+ const regex& e,
+ match_flag_type flags = match_default)
+{
+ smatch m;
+ return regex_search(s.begin(), s.end(), m, e, flags | regex_constants::match_any);
+}
+#if !defined(BOOST_NO_WREGEX)
+inline bool regex_search(const std::basic_string<wchar_t>& s,
+ const wregex& e,
+ match_flag_type flags = match_default)
+{
+ wsmatch m;
+ return regex_search(s.begin(), s.end(), m, e, flags | regex_constants::match_any);
+}
+
+#endif // BOOST_NO_WREGEX
+
+#endif // partial overload
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+
+} // namespace boost
+
+#endif // BOOST_REGEX_V4_REGEX_SEARCH_HPP
+
+

Added: sandbox/SOC/2007/regex/named-captures/boost/regex/v4/regex_split.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/boost/regex/v4/regex_split.hpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,149 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE regex_split.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Implements regex_split and associated functions.
+ * Note this is an internal header file included
+ * by regex.hpp, do not include on its own.
+ */
+
+#ifndef BOOST_REGEX_SPLIT_HPP
+#define BOOST_REGEX_SPLIT_HPP
+
+namespace boost{
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+
+namespace re_detail{
+
+template <class charT>
+const basic_regex<charT>& get_default_expression(charT)
+{
+ static const charT expression_text[4] = { '\\', 's', '+', '\00', };
+ static const basic_regex<charT> e(expression_text);
+ return e;
+}
+
+template <class OutputIterator, class charT, class Traits1, class Alloc1>
+class split_pred
+{
+ typedef std::basic_string<charT, Traits1, Alloc1> string_type;
+ typedef typename string_type::const_iterator iterator_type;
+ iterator_type* p_last;
+ OutputIterator* p_out;
+ std::size_t* p_max;
+ std::size_t initial_max;
+public:
+ split_pred(iterator_type* a, OutputIterator* b, std::size_t* c)
+ : p_last(a), p_out(b), p_max(c), initial_max(*c) {}
+
+ bool operator()(const match_results<iterator_type>& what);
+};
+
+template <class OutputIterator, class charT, class Traits1, class Alloc1>
+bool split_pred<OutputIterator, charT, Traits1, Alloc1>::operator()
+ (const match_results<iterator_type>& what)
+{
+ *p_last = what[0].second;
+ if(what.size() > 1)
+ {
+ // output sub-expressions only:
+ for(unsigned i = 1; i < what.size(); ++i)
+ {
+ *(*p_out) = what.str(i);
+ ++(*p_out);
+ if(0 == --*p_max) return false;
+ }
+ return *p_max != 0;
+ }
+ else
+ {
+ // output $` only if it's not-null or not at the start of the input:
+ const sub_match<iterator_type>& sub = what[-1];
+ if((sub.first != sub.second) || (*p_max != initial_max))
+ {
+ *(*p_out) = sub.str();
+ ++(*p_out);
+ return --*p_max;
+ }
+ }
+ //
+ // initial null, do nothing:
+ return true;
+}
+
+} // namespace re_detail
+
+template <class OutputIterator, class charT, class Traits1, class Alloc1, class Traits2>
+std::size_t regex_split(OutputIterator out,
+ std::basic_string<charT, Traits1, Alloc1>& s,
+ const basic_regex<charT, Traits2>& e,
+ match_flag_type flags,
+ std::size_t max_split)
+{
+ typedef typename std::basic_string<charT, Traits1, Alloc1>::const_iterator ci_t;
+ typedef typename match_results<ci_t>::allocator_type match_allocator;
+ ci_t last = s.begin();
+ std::size_t init_size = max_split;
+ re_detail::split_pred<OutputIterator, charT, Traits1, Alloc1> pred(&last, &out, &max_split);
+ ci_t i, j;
+ i = s.begin();
+ j = s.end();
+ regex_grep(pred, i, j, e, flags);
+ //
+ // if there is still input left, do a final push as long as max_split
+ // is not exhausted, and we're not splitting sub-expressions rather
+ // than whitespace:
+ if(max_split && (last != s.end()) && (e.mark_count() == 1))
+ {
+ *out = std::basic_string<charT, Traits1, Alloc1>((ci_t)last, (ci_t)s.end());
+ ++out;
+ last = s.end();
+ --max_split;
+ }
+ //
+ // delete from the string everything that has been processed so far:
+ s.erase(0, last - s.begin());
+ //
+ // return the number of new records pushed:
+ return init_size - max_split;
+}
+
+template <class OutputIterator, class charT, class Traits1, class Alloc1, class Traits2>
+inline std::size_t regex_split(OutputIterator out,
+ std::basic_string<charT, Traits1, Alloc1>& s,
+ const basic_regex<charT, Traits2>& e,
+ match_flag_type flags = match_default)
+{
+ return regex_split(out, s, e, flags, UINT_MAX);
+}
+
+template <class OutputIterator, class charT, class Traits1, class Alloc1>
+inline std::size_t regex_split(OutputIterator out,
+ std::basic_string<charT, Traits1, Alloc1>& s)
+{
+ return regex_split(out, s, re_detail::get_default_expression(charT(0)), match_default, UINT_MAX);
+}
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+
+} // namespace boost
+
+#endif
+
+

Added: sandbox/SOC/2007/regex/named-captures/boost/regex/v4/regex_stack.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/boost/regex/v4/regex_stack.hpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,225 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE regex_stack.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Implements customised internal regex stacks.
+ * Note this is an internal header file included
+ * by regex.hpp, do not include on its own.
+ */
+
+#ifndef BOOST_REGEX_STACK_HPP
+#define BOOST_REGEX_STACK_HPP
+
+#ifndef BOOST_REGEX_CONFIG_HPP
+#include <boost/regex/config.hpp>
+#endif
+#ifndef BOOST_REGEX_RAW_BUFFER_HPP
+#include <boost/regex/v4/regex_raw_buffer.hpp>
+#endif
+
+namespace boost{
+ namespace re_detail{
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+
+//
+// class jstack
+// simplified stack optimised for push/peek/pop
+// operations, we could use std::stack<std::vector<T>> instead...
+//
+template <class T, class Allocator = BOOST_DEFAULT_ALLOCATOR(T) >
+class jstack
+{
+public:
+ typedef typename boost::detail::rebind_allocator<unsigned char, Allocator>::type allocator_type;
+private:
+ typedef typename boost::detail::rebind_allocator<T, Allocator>::type T_alloc_type;
+ typedef typename T_alloc_type::size_type size_type;
+ typedef T value_type;
+ struct node
+ {
+ node* next;
+ T* start; // first item
+ T* end; // last item
+ T* last; // end of storage
+ };
+
+ //
+ // empty base member optimisation:
+ struct data : public allocator_type
+ {
+ padding buf[(sizeof(T) * 16 + sizeof(padding) - 1) / sizeof(padding)];
+ data(const Allocator& a) : allocator_type(a){}
+ };
+
+ data alloc_inst;
+ mutable node* m_stack;
+ mutable node* unused;
+ node base;
+ size_type block_size;
+
+ void BOOST_REGEX_CALL pop_aux()const;
+ void BOOST_REGEX_CALL push_aux();
+
+public:
+ jstack(size_type n = 64, const Allocator& a = Allocator());
+
+ ~jstack();
+
+ node* BOOST_REGEX_CALL get_node()
+ {
+ node* new_stack = reinterpret_cast<node*>(alloc_inst.allocate(sizeof(node) + sizeof(T) * block_size));
+ BOOST_REGEX_NOEH_ASSERT(new_stack)
+ new_stack->last = reinterpret_cast<T*>(new_stack+1);
+ new_stack->start = new_stack->end = new_stack->last + block_size;
+ new_stack->next = 0;
+ return new_stack;
+ }
+
+ bool BOOST_REGEX_CALL empty()
+ {
+ return (m_stack->start == m_stack->end) && (m_stack->next == 0);
+ }
+
+ bool BOOST_REGEX_CALL good()
+ {
+ return (m_stack->start != m_stack->end) || (m_stack->next != 0);
+ }
+
+ T& BOOST_REGEX_CALL peek()
+ {
+ if(m_stack->start == m_stack->end)
+ pop_aux();
+ return *m_stack->end;
+ }
+
+ const T& BOOST_REGEX_CALL peek()const
+ {
+ if(m_stack->start == m_stack->end)
+ pop_aux();
+ return *m_stack->end;
+ }
+
+ void BOOST_REGEX_CALL pop()
+ {
+ if(m_stack->start == m_stack->end)
+ pop_aux();
+ ::boost::re_detail::pointer_destroy(m_stack->end);
+ ++(m_stack->end);
+ }
+
+ void BOOST_REGEX_CALL pop(T& t)
+ {
+ if(m_stack->start == m_stack->end)
+ pop_aux();
+ t = *m_stack->end;
+ ::boost::re_detail::pointer_destroy(m_stack->end);
+ ++(m_stack->end);
+ }
+
+ void BOOST_REGEX_CALL push(const T& t)
+ {
+ if(m_stack->end == m_stack->last)
+ push_aux();
+ --(m_stack->end);
+ pointer_construct(m_stack->end, t);
+ }
+
+};
+
+template <class T, class Allocator>
+jstack<T, Allocator>::jstack(size_type n, const Allocator& a)
+ : alloc_inst(a)
+{
+ unused = 0;
+ block_size = n;
+ m_stack = &base;
+ base.last = reinterpret_cast<T*>(alloc_inst.buf);
+ base.end = base.start = base.last + 16;
+ base.next = 0;
+}
+
+template <class T, class Allocator>
+void BOOST_REGEX_CALL jstack<T, Allocator>::push_aux()
+{
+ // make sure we have spare space on TOS:
+ register node* new_node;
+ if(unused)
+ {
+ new_node = unused;
+ unused = new_node->next;
+ new_node->next = m_stack;
+ m_stack = new_node;
+ }
+ else
+ {
+ new_node = get_node();
+ new_node->next = m_stack;
+ m_stack = new_node;
+ }
+}
+
+template <class T, class Allocator>
+void BOOST_REGEX_CALL jstack<T, Allocator>::pop_aux()const
+{
+ // make sure that we have a valid item
+ // on TOS:
+ BOOST_ASSERT(m_stack->next);
+ register node* p = m_stack;
+ m_stack = p->next;
+ p->next = unused;
+ unused = p;
+}
+
+template <class T, class Allocator>
+jstack<T, Allocator>::~jstack()
+{
+ node* condemned;
+ while(good())
+ pop();
+ while(unused)
+ {
+ condemned = unused;
+ unused = unused->next;
+ alloc_inst.deallocate(reinterpret_cast<unsigned char*>(condemned), sizeof(node) + sizeof(T) * block_size);
+ }
+ while(m_stack != &base)
+ {
+ condemned = m_stack;
+ m_stack = m_stack->next;
+ alloc_inst.deallocate(reinterpret_cast<unsigned char*>(condemned), sizeof(node) + sizeof(T) * block_size);
+ }
+}
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+
+} // namespace re_detail
+} // namespace boost
+
+#endif
+
+
+
+
+
+
+
+
+
+
+

Added: sandbox/SOC/2007/regex/named-captures/boost/regex/v4/regex_token_iterator.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/boost/regex/v4/regex_token_iterator.hpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,328 @@
+/*
+ *
+ * Copyright (c) 2003
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE regex_token_iterator.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Provides regex_token_iterator implementation.
+ */
+
+#ifndef BOOST_REGEX_V4_REGEX_TOKEN_ITERATOR_HPP
+#define BOOST_REGEX_V4_REGEX_TOKEN_ITERATOR_HPP
+
+#include <boost/shared_ptr.hpp>
+#include <boost/detail/workaround.hpp>
+#if (BOOST_WORKAROUND(__BORLANDC__, >= 0x560) && BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x570)))\
+ || BOOST_WORKAROUND(BOOST_MSVC, < 1300) \
+ || BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3003))
+//
+// Borland C++ Builder 6, and Visual C++ 6,
+// can't cope with the array template constructor
+// so we have a template member that will accept any type as
+// argument, and then assert that is really is an array:
+//
+#include <boost/static_assert.hpp>
+#include <boost/type_traits/is_array.hpp>
+#endif
+
+namespace boost{
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+#if BOOST_WORKAROUND(BOOST_MSVC, > 1300)
+# pragma warning(push)
+# pragma warning(disable:4700)
+#endif
+
+template <class BidirectionalIterator,
+ class charT,
+ class traits>
+class regex_token_iterator_implementation
+{
+ typedef basic_regex<charT, traits> regex_type;
+ typedef sub_match<BidirectionalIterator> value_type;
+
+ match_results<BidirectionalIterator> what; // current match
+ BidirectionalIterator base; // start of search area
+ BidirectionalIterator end; // end of search area
+ const regex_type re; // the expression
+ match_flag_type flags; // match flags
+ value_type result; // the current string result
+ int N; // the current sub-expression being enumerated
+ std::vector<int> subs; // the sub-expressions to enumerate
+
+public:
+ regex_token_iterator_implementation(const regex_type* p, BidirectionalIterator last, int sub, match_flag_type f)
+ : end(last), re(*p), flags(f){ subs.push_back(sub); }
+ regex_token_iterator_implementation(const regex_type* p, BidirectionalIterator last, const std::vector<int>& v, match_flag_type f)
+ : end(last), re(*p), flags(f), subs(v){}
+#if !BOOST_WORKAROUND(__HP_aCC, < 60700)
+#if (BOOST_WORKAROUND(__BORLANDC__, >= 0x560) && BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x570)))\
+ || BOOST_WORKAROUND(BOOST_MSVC, < 1300) \
+ || BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3003)) \
+ || BOOST_WORKAROUND(__HP_aCC, < 60700)
+ template <class T>
+ regex_token_iterator_implementation(const regex_type* p, BidirectionalIterator last, const T& submatches, match_flag_type f)
+ : end(last), re(*p), flags(f)
+ {
+ // assert that T really is an array:
+ BOOST_STATIC_ASSERT(::boost::is_array<T>::value);
+ const std::size_t array_size = sizeof(T) / sizeof(submatches[0]);
+ for(std::size_t i = 0; i < array_size; ++i)
+ {
+ subs.push_back(submatches[i]);
+ }
+ }
+#else
+ template <std::size_t CN>
+ regex_token_iterator_implementation(const regex_type* p, BidirectionalIterator last, const int (&submatches)[CN], match_flag_type f)
+ : end(last), re(*p), flags(f)
+ {
+ for(std::size_t i = 0; i < CN; ++i)
+ {
+ subs.push_back(submatches[i]);
+ }
+ }
+#endif
+#endif
+ bool init(BidirectionalIterator first)
+ {
+ N = 0;
+ base = first;
+ if(regex_search(first, end, what, re, flags, base) == true)
+ {
+ N = 0;
+ result = ((subs[N] == -1) ? what.prefix() : what[(int)subs[N]]);
+ return true;
+ }
+ else if((subs[N] == -1) && (first != end))
+ {
+ result.first = first;
+ result.second = end;
+ result.matched = (first != end);
+ N = -1;
+ return true;
+ }
+ return false;
+ }
+ bool compare(const regex_token_iterator_implementation& that)
+ {
+ if(this == &that) return true;
+ return (&re.get_data() == &that.re.get_data())
+ && (end == that.end)
+ && (flags == that.flags)
+ && (N == that.N)
+ && (what[0].first == that.what[0].first)
+ && (what[0].second == that.what[0].second);
+ }
+ const value_type& get()
+ { return result; }
+ bool next()
+ {
+ if(N == -1)
+ return false;
+ if(N+1 < (int)subs.size())
+ {
+ ++N;
+ result =((subs[N] == -1) ? what.prefix() : what[subs[N]]);
+ return true;
+ }
+ //if(what.prefix().first != what[0].second)
+ // flags |= /*match_prev_avail |*/ regex_constants::match_not_bob;
+ BidirectionalIterator last_end(what[0].second);
+ if(regex_search(last_end, end, what, re, ((what[0].first == what[0].second) ? flags | regex_constants::match_not_initial_null : flags), base))
+ {
+ N =0;
+ result =((subs[N] == -1) ? what.prefix() : what[subs[N]]);
+ return true;
+ }
+ else if((last_end != end) && (subs[0] == -1))
+ {
+ N =-1;
+ result.first = last_end;
+ result.second = end;
+ result.matched = (last_end != end);
+ return true;
+ }
+ return false;
+ }
+private:
+ regex_token_iterator_implementation& operator=(const regex_token_iterator_implementation&);
+};
+
+template <class BidirectionalIterator,
+ class charT = BOOST_DEDUCED_TYPENAME re_detail::regex_iterator_traits<BidirectionalIterator>::value_type,
+ class traits = regex_traits<charT> >
+class regex_token_iterator
+#ifndef BOOST_NO_STD_ITERATOR
+ : public std::iterator<
+ std::forward_iterator_tag,
+ sub_match<BidirectionalIterator>,
+ typename re_detail::regex_iterator_traits<BidirectionalIterator>::difference_type,
+ const sub_match<BidirectionalIterator>*,
+ const sub_match<BidirectionalIterator>& >
+#endif
+{
+private:
+ typedef regex_token_iterator_implementation<BidirectionalIterator, charT, traits> impl;
+ typedef shared_ptr<impl> pimpl;
+public:
+ typedef basic_regex<charT, traits> regex_type;
+ typedef sub_match<BidirectionalIterator> value_type;
+ typedef typename re_detail::regex_iterator_traits<BidirectionalIterator>::difference_type
+ difference_type;
+ typedef const value_type* pointer;
+ typedef const value_type& reference;
+ typedef std::forward_iterator_tag iterator_category;
+
+ regex_token_iterator(){}
+ regex_token_iterator(BidirectionalIterator a, BidirectionalIterator b, const regex_type& re,
+ int submatch = 0, match_flag_type m = match_default)
+ : pdata(new impl(&re, b, submatch, m))
+ {
+ if(!pdata->init(a))
+ pdata.reset();
+ }
+ regex_token_iterator(BidirectionalIterator a, BidirectionalIterator b, const regex_type& re,
+ const std::vector<int>& submatches, match_flag_type m = match_default)
+ : pdata(new impl(&re, b, submatches, m))
+ {
+ if(!pdata->init(a))
+ pdata.reset();
+ }
+#if !BOOST_WORKAROUND(__HP_aCC, < 60700)
+#if (BOOST_WORKAROUND(__BORLANDC__, >= 0x560) && BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x570)))\
+ || BOOST_WORKAROUND(BOOST_MSVC, < 1300) \
+ || BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3003)) \
+ || BOOST_WORKAROUND(__HP_aCC, < 60700)
+ template <class T>
+ regex_token_iterator(BidirectionalIterator a, BidirectionalIterator b, const regex_type& re,
+ const T& submatches, match_flag_type m = match_default)
+ : pdata(new impl(&re, b, submatches, m))
+ {
+ if(!pdata->init(a))
+ pdata.reset();
+ }
+#else
+ template <std::size_t N>
+ regex_token_iterator(BidirectionalIterator a, BidirectionalIterator b, const regex_type& re,
+ const int (&submatches)[N], match_flag_type m = match_default)
+ : pdata(new impl(&re, b, submatches, m))
+ {
+ if(!pdata->init(a))
+ pdata.reset();
+ }
+#endif
+#endif
+ regex_token_iterator(const regex_token_iterator& that)
+ : pdata(that.pdata) {}
+ regex_token_iterator& operator=(const regex_token_iterator& that)
+ {
+ pdata = that.pdata;
+ return *this;
+ }
+ bool operator==(const regex_token_iterator& that)const
+ {
+ if((pdata.get() == 0) || (that.pdata.get() == 0))
+ return pdata.get() == that.pdata.get();
+ return pdata->compare(*(that.pdata.get()));
+ }
+ bool operator!=(const regex_token_iterator& that)const
+ { return !(*this == that); }
+ const value_type& operator*()const
+ { return pdata->get(); }
+ const value_type* operator->()const
+ { return &(pdata->get()); }
+ regex_token_iterator& operator++()
+ {
+ cow();
+ if(0 == pdata->next())
+ {
+ pdata.reset();
+ }
+ return *this;
+ }
+ regex_token_iterator operator++(int)
+ {
+ regex_token_iterator result(*this);
+ ++(*this);
+ return result;
+ }
+private:
+
+ pimpl pdata;
+
+ void cow()
+ {
+ // copy-on-write
+ if(pdata.get() && !pdata.unique())
+ {
+ pdata.reset(new impl(*(pdata.get())));
+ }
+ }
+};
+
+typedef regex_token_iterator<const char*> cregex_token_iterator;
+typedef regex_token_iterator<std::string::const_iterator> sregex_token_iterator;
+#ifndef BOOST_NO_WREGEX
+typedef regex_token_iterator<const wchar_t*> wcregex_token_iterator;
+typedef regex_token_iterator<std::wstring::const_iterator> wsregex_token_iterator;
+#endif
+
+template <class charT, class traits>
+inline regex_token_iterator<const charT*, charT, traits> make_regex_token_iterator(const charT* p, const basic_regex<charT, traits>& e, int submatch = 0, regex_constants::match_flag_type m = regex_constants::match_default)
+{
+ return regex_token_iterator<const charT*, charT, traits>(p, p+traits::length(p), e, submatch, m);
+}
+template <class charT, class traits, class ST, class SA>
+inline regex_token_iterator<typename std::basic_string<charT, ST, SA>::const_iterator, charT, traits> make_regex_token_iterator(const std::basic_string<charT, ST, SA>& p, const basic_regex<charT, traits>& e, int submatch = 0, regex_constants::match_flag_type m = regex_constants::match_default)
+{
+ return regex_token_iterator<typename std::basic_string<charT, ST, SA>::const_iterator, charT, traits>(p.begin(), p.end(), e, submatch, m);
+}
+#if !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+template <class charT, class traits, std::size_t N>
+inline regex_token_iterator<const charT*, charT, traits> make_regex_token_iterator(const charT* p, const basic_regex<charT, traits>& e, const int (&submatch)[N], regex_constants::match_flag_type m = regex_constants::match_default)
+{
+ return regex_token_iterator<const charT*, charT, traits>(p, p+traits::length(p), e, submatch, m);
+}
+template <class charT, class traits, class ST, class SA, std::size_t N>
+inline regex_token_iterator<typename std::basic_string<charT, ST, SA>::const_iterator, charT, traits> make_regex_token_iterator(const std::basic_string<charT, ST, SA>& p, const basic_regex<charT, traits>& e, const int (&submatch)[N], regex_constants::match_flag_type m = regex_constants::match_default)
+{
+ return regex_token_iterator<typename std::basic_string<charT, ST, SA>::const_iterator, charT, traits>(p.begin(), p.end(), e, submatch, m);
+}
+#endif
+template <class charT, class traits>
+inline regex_token_iterator<const charT*, charT, traits> make_regex_token_iterator(const charT* p, const basic_regex<charT, traits>& e, const std::vector<int>& submatch, regex_constants::match_flag_type m = regex_constants::match_default)
+{
+ return regex_token_iterator<const charT*, charT, traits>(p, p+traits::length(p), e, submatch, m);
+}
+template <class charT, class traits, class ST, class SA>
+inline regex_token_iterator<typename std::basic_string<charT, ST, SA>::const_iterator, charT, traits> make_regex_token_iterator(const std::basic_string<charT, ST, SA>& p, const basic_regex<charT, traits>& e, const std::vector<int>& submatch, regex_constants::match_flag_type m = regex_constants::match_default)
+{
+ return regex_token_iterator<typename std::basic_string<charT, ST, SA>::const_iterator, charT, traits>(p.begin(), p.end(), e, submatch, m);
+}
+
+#if BOOST_WORKAROUND(BOOST_MSVC, == 1310)
+# pragma warning(pop)
+#endif
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+
+} // namespace boost
+
+#endif // BOOST_REGEX_V4_REGEX_TOKEN_ITERATOR_HPP
+
+
+
+

Added: sandbox/SOC/2007/regex/named-captures/boost/regex/v4/regex_traits.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/boost/regex/v4/regex_traits.hpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,175 @@
+/*
+ *
+ * Copyright (c) 2003
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE regex_traits.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Declares regular expression traits classes.
+ */
+
+#ifndef BOOST_REGEX_TRAITS_HPP_INCLUDED
+#define BOOST_REGEX_TRAITS_HPP_INCLUDED
+
+#ifndef BOOST_REGEX_CONFIG_HPP
+#include <boost/regex/config.hpp>
+#endif
+#ifndef BOOST_REGEX_WORKAROUND_HPP
+#include <boost/regex/v4/regex_workaround.hpp>
+#endif
+#ifndef BOOST_REGEX_SYNTAX_TYPE_HPP
+#include <boost/regex/v4/syntax_type.hpp>
+#endif
+#ifndef BOOST_REGEX_ERROR_TYPE_HPP
+#include <boost/regex/v4/error_type.hpp>
+#endif
+#ifndef BOOST_REGEX_TRAITS_DEFAULTS_HPP_INCLUDED
+#include <boost/regex/v4/regex_traits_defaults.hpp>
+#endif
+#ifndef BOOST_NO_STD_LOCALE
+# ifndef BOOST_CPP_REGEX_TRAITS_HPP_INCLUDED
+# include <boost/regex/v4/cpp_regex_traits.hpp>
+# endif
+#endif
+#if !BOOST_WORKAROUND(__BORLANDC__, < 0x560)
+# ifndef BOOST_C_REGEX_TRAITS_HPP_INCLUDED
+# include <boost/regex/v4/c_regex_traits.hpp>
+# endif
+#endif
+#if defined(_WIN32) && !defined(BOOST_REGEX_NO_W32)
+# ifndef BOOST_W32_REGEX_TRAITS_HPP_INCLUDED
+# include <boost/regex/v4/w32_regex_traits.hpp>
+# endif
+#endif
+#ifndef BOOST_REGEX_FWD_HPP_INCLUDED
+#include <boost/regex_fwd.hpp>
+#endif
+
+#include "boost/mpl/has_xxx.hpp"
+#include <boost/static_assert.hpp>
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+
+namespace boost{
+
+template <class charT, class implementationT >
+struct regex_traits : public implementationT
+{
+ regex_traits() : implementationT() {}
+};
+
+//
+// class regex_traits_wrapper.
+// this is what our implementation will actually store;
+// it provides default implementations of the "optional"
+// interfaces that we support, in addition to the
+// required "standard" ones:
+//
+namespace re_detail{
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !BOOST_WORKAROUND(__HP_aCC, < 60000)
+BOOST_MPL_HAS_XXX_TRAIT_DEF(boost_extensions_tag)
+#else
+template<class T>
+struct has_boost_extensions_tag
+{
+ BOOST_STATIC_CONSTANT(bool, value = false);
+};
+#endif
+
+template <class BaseT>
+struct default_wrapper : public BaseT
+{
+ typedef typename BaseT::char_type char_type;
+ std::string error_string(::boost::regex_constants::error_type e)const
+ {
+ return ::boost::re_detail::get_default_error_string(e);
+ }
+ ::boost::regex_constants::syntax_type syntax_type(char_type c)const
+ {
+ return ((c & 0x7f) == c) ? get_default_syntax_type(static_cast<char>(c)) : ::boost::regex_constants::syntax_char;
+ }
+ ::boost::regex_constants::escape_syntax_type escape_syntax_type(char_type c)const
+ {
+ return ((c & 0x7f) == c) ? get_default_escape_syntax_type(static_cast<char>(c)) : ::boost::regex_constants::escape_type_identity;
+ }
+ int toi(const char_type*& p1, const char_type* p2, int radix)const
+ {
+ return ::boost::re_detail::global_toi(p1, p2, radix, *this);
+ }
+ char_type translate(char_type c, bool icase)const
+ {
+ return (icase ? this->translate_nocase(c) : this->translate(c));
+ }
+ char_type translate(char_type c)const
+ {
+ return BaseT::translate(c);
+ }
+ char_type tolower(char_type c)const
+ {
+ return ::boost::re_detail::global_lower(c);
+ }
+ char_type toupper(char_type c)const
+ {
+ return ::boost::re_detail::global_upper(c);
+ }
+};
+
+template <class BaseT, bool has_extensions>
+struct compute_wrapper_base
+{
+ typedef BaseT type;
+};
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !BOOST_WORKAROUND(__HP_aCC, < 60000)
+template <class BaseT>
+struct compute_wrapper_base<BaseT, false>
+{
+ typedef default_wrapper<BaseT> type;
+};
+#else
+template <>
+struct compute_wrapper_base<c_regex_traits<char>, false>
+{
+ typedef default_wrapper<c_regex_traits<char> > type;
+};
+#ifndef BOOST_NO_WREGEX
+template <>
+struct compute_wrapper_base<c_regex_traits<wchar_t>, false>
+{
+ typedef default_wrapper<c_regex_traits<wchar_t> > type;
+};
+#endif
+#endif
+
+} // namespace re_detail
+
+template <class BaseT>
+struct regex_traits_wrapper
+ : public ::boost::re_detail::compute_wrapper_base<
+ BaseT,
+ ::boost::re_detail::has_boost_extensions_tag<BaseT>::value
+ >::type
+{
+ regex_traits_wrapper(){}
+private:
+ regex_traits_wrapper(const regex_traits_wrapper&);
+ regex_traits_wrapper& operator=(const regex_traits_wrapper&);
+};
+
+} // namespace boost
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+
+#endif // include
+

Added: sandbox/SOC/2007/regex/named-captures/boost/regex/v4/regex_traits_defaults.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/boost/regex/v4/regex_traits_defaults.hpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,317 @@
+/*
+ *
+ * Copyright (c) 2004
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE regex_traits_defaults.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Declares API's for access to regex_traits default properties.
+ */
+
+#ifndef BOOST_REGEX_TRAITS_DEFAULTS_HPP_INCLUDED
+#define BOOST_REGEX_TRAITS_DEFAULTS_HPP_INCLUDED
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+
+#ifndef BOOST_REGEX_SYNTAX_TYPE_HPP
+#include <boost/regex/v4/syntax_type.hpp>
+#endif
+#ifndef BOOST_REGEX_ERROR_TYPE_HPP
+#include <boost/regex/v4/error_type.hpp>
+#endif
+
+#ifdef BOOST_NO_STDC_NAMESPACE
+namespace std{
+ using ::strlen;
+}
+#endif
+
+namespace boost{ namespace re_detail{
+
+
+//
+// helpers to suppress warnings:
+//
+template <class charT>
+inline bool is_extended(charT c)
+{ return c > 256; }
+inline bool is_extended(char)
+{ return false; }
+
+
+BOOST_REGEX_DECL const char* BOOST_REGEX_CALL get_default_syntax(regex_constants::syntax_type n);
+BOOST_REGEX_DECL const char* BOOST_REGEX_CALL get_default_error_string(regex_constants::error_type n);
+BOOST_REGEX_DECL regex_constants::syntax_type BOOST_REGEX_CALL get_default_syntax_type(char c);
+BOOST_REGEX_DECL regex_constants::escape_syntax_type BOOST_REGEX_CALL get_default_escape_syntax_type(char c);
+
+// is charT c a combining character?
+BOOST_REGEX_DECL bool BOOST_REGEX_CALL is_combining_implementation(uint_least16_t s);
+
+template <class charT>
+inline bool is_combining(charT c)
+{
+ return (c <= static_cast<charT>(0)) ? false : ((c >= static_cast<charT>((std::numeric_limits<uint_least16_t>::max)())) ? false : is_combining_implementation(static_cast<unsigned short>(c)));
+}
+template <>
+inline bool is_combining<char>(char)
+{
+ return false;
+}
+template <>
+inline bool is_combining<signed char>(signed char)
+{
+ return false;
+}
+template <>
+inline bool is_combining<unsigned char>(unsigned char)
+{
+ return false;
+}
+#ifndef __hpux // can't use WCHAR_MIN/MAX in pp-directives.
+#ifdef _MSC_VER
+template<>
+inline bool is_combining<wchar_t>(wchar_t c)
+{
+ return is_combining_implementation(static_cast<unsigned short>(c));
+}
+#elif !defined(__DECCXX) && !defined(__osf__) && !defined(__OSF__) && defined(WCHAR_MIN) && (WCHAR_MIN == 0) && !defined(BOOST_NO_INTRINSIC_WCHAR_T)
+#if defined(WCHAR_MAX) && (WCHAR_MAX <= USHRT_MAX)
+template<>
+inline bool is_combining<wchar_t>(wchar_t c)
+{
+ return is_combining_implementation(static_cast<unsigned short>(c));
+}
+#else
+template<>
+inline bool is_combining<wchar_t>(wchar_t c)
+{
+ return (c >= (std::numeric_limits<uint_least16_t>::max)()) ? false : is_combining_implementation(static_cast<unsigned short>(c));
+}
+#endif
+#endif
+#endif
+
+//
+// is a charT c a line separator?
+//
+template <class charT>
+inline bool is_separator(charT c)
+{
+ return BOOST_REGEX_MAKE_BOOL(
+ (c == static_cast<charT>('\n'))
+ || (c == static_cast<charT>('\r'))
+ || (c == static_cast<charT>('\f'))
+ || (static_cast<boost::uint16_t>(c) == 0x2028u)
+ || (static_cast<boost::uint16_t>(c) == 0x2029u)
+ || (static_cast<boost::uint16_t>(c) == 0x85u));
+}
+template <>
+inline bool is_separator<char>(char c)
+{
+ return BOOST_REGEX_MAKE_BOOL((c == '\n') || (c == '\r') || (c == '\f'));
+}
+
+//
+// get a default collating element:
+//
+BOOST_REGEX_DECL std::string BOOST_REGEX_CALL lookup_default_collate_name(const std::string& name);
+
+//
+// get the id of a character clasification, the individual
+// traits classes then transform that id into a bitmask:
+//
+template <class charT>
+struct character_pointer_range
+{
+ const charT* p1;
+ const charT* p2;
+
+ bool operator < (const character_pointer_range& r)const
+ {
+ return std::lexicographical_compare(p1, p2, r.p1, r.p2);
+ }
+ bool operator == (const character_pointer_range& r)const
+ {
+ // Not only do we check that the ranges are of equal size before
+ // calling std::equal, but there is no other algorithm available:
+ // not even a non-standard MS one. So forward to unchecked_equal
+ // in the MS case.
+ return ((p2 - p1) == (r.p2 - r.p1)) && re_detail::equal(p1, p2, r.p1);
+ }
+};
+template <class charT>
+int get_default_class_id(const charT* p1, const charT* p2)
+{
+ static const charT data[72] = {
+ 'a', 'l', 'n', 'u', 'm',
+ 'a', 'l', 'p', 'h', 'a',
+ 'b', 'l', 'a', 'n', 'k',
+ 'c', 'n', 't', 'r', 'l',
+ 'd', 'i', 'g', 'i', 't',
+ 'g', 'r', 'a', 'p', 'h',
+ 'l', 'o', 'w', 'e', 'r',
+ 'p', 'r', 'i', 'n', 't',
+ 'p', 'u', 'n', 'c', 't',
+ 's', 'p', 'a', 'c', 'e',
+ 'u', 'n', 'i', 'c', 'o', 'd', 'e',
+ 'u', 'p', 'p', 'e', 'r',
+ 'w', 'o', 'r', 'd',
+ 'x', 'd', 'i', 'g', 'i', 't',
+ };
+
+ static const character_pointer_range<charT> ranges[19] =
+ {
+ {data+0, data+5,}, // alnum
+ {data+5, data+10,}, // alpha
+ {data+10, data+15,}, // blank
+ {data+15, data+20,}, // cntrl
+ {data+20, data+21,}, // d
+ {data+20, data+25,}, // digit
+ {data+25, data+30,}, // graph
+ {data+30, data+31,}, // l
+ {data+30, data+35,}, // lower
+ {data+35, data+40,}, // print
+ {data+40, data+45,}, // punct
+ {data+45, data+46,}, // s
+ {data+45, data+50,}, // space
+ {data+57, data+58,}, // u
+ {data+50, data+57,}, // unicode
+ {data+57, data+62,}, // upper
+ {data+62, data+63,}, // w
+ {data+62, data+66,}, // word
+ {data+66, data+72,}, // xdigit
+ };
+ static const character_pointer_range<charT>* ranges_begin = ranges;
+ static const character_pointer_range<charT>* ranges_end = ranges + (sizeof(ranges)/sizeof(ranges[0]));
+
+ character_pointer_range<charT> t = { p1, p2, };
+ const character_pointer_range<charT>* p = std::lower_bound(ranges_begin, ranges_end, t);
+ if((p != ranges_end) && (t == *p))
+ return static_cast<int>(p - ranges);
+ return -1;
+}
+
+//
+// helper functions:
+//
+template <class charT>
+std::ptrdiff_t global_length(const charT* p)
+{
+ std::ptrdiff_t n = 0;
+ while(*p)
+ {
+ ++p;
+ ++n;
+ }
+ return n;
+}
+template<>
+inline std::ptrdiff_t global_length<char>(const char* p)
+{
+ return (std::strlen)(p);
+}
+#ifndef BOOST_NO_WREGEX
+template<>
+inline std::ptrdiff_t global_length<wchar_t>(const wchar_t* p)
+{
+ return (std::wcslen)(p);
+}
+#endif
+template <class charT>
+inline charT BOOST_REGEX_CALL global_lower(charT c)
+{
+ return c;
+}
+template <class charT>
+inline charT BOOST_REGEX_CALL global_upper(charT c)
+{
+ return c;
+}
+
+BOOST_REGEX_DECL char BOOST_REGEX_CALL do_global_lower(char c);
+BOOST_REGEX_DECL char BOOST_REGEX_CALL do_global_upper(char c);
+#ifndef BOOST_NO_WREGEX
+BOOST_REGEX_DECL wchar_t BOOST_REGEX_CALL do_global_lower(wchar_t c);
+BOOST_REGEX_DECL wchar_t BOOST_REGEX_CALL do_global_upper(wchar_t c);
+#endif
+#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T
+BOOST_REGEX_DECL unsigned short BOOST_REGEX_CALL do_global_lower(unsigned short c);
+BOOST_REGEX_DECL unsigned short BOOST_REGEX_CALL do_global_upper(unsigned short c);
+#endif
+//
+// This sucks: declare template specialisations of global_lower/global_upper
+// that just forward to the non-template implementation functions. We do
+// this because there is one compiler (Compaq Tru64 C++) that doesn't seem
+// to differentiate between templates and non-template overloads....
+// what's more, the primary template, plus all overloads have to be
+// defined in the same translation unit (if one is inline they all must be)
+// otherwise the "local template instantiation" compiler option can pick
+// the wrong instantiation when linking:
+//
+template<> inline char BOOST_REGEX_CALL global_lower<char>(char c){ return do_global_lower(c); }
+template<> inline char BOOST_REGEX_CALL global_upper<char>(char c){ return do_global_upper(c); }
+#ifndef BOOST_NO_WREGEX
+template<> inline wchar_t BOOST_REGEX_CALL global_lower<wchar_t>(wchar_t c){ return do_global_lower(c); }
+template<> inline wchar_t BOOST_REGEX_CALL global_upper<wchar_t>(wchar_t c){ return do_global_upper(c); }
+#endif
+#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T
+template<> inline unsigned short BOOST_REGEX_CALL global_lower<unsigned short>(unsigned short c){ return do_global_lower(c); }
+template<> inline unsigned short BOOST_REGEX_CALL global_upper<unsigned short>(unsigned short c){ return do_global_upper(c); }
+#endif
+
+template <class charT>
+int global_value(charT c)
+{
+ static const charT zero = '0';
+ static const charT nine = '9';
+ static const charT a = 'a';
+ static const charT f = 'f';
+ static const charT A = 'A';
+ static const charT F = 'F';
+
+ if(c > f) return -1;
+ if(c >= a) return 10 + (c - a);
+ if(c > F) return -1;
+ if(c >= A) return 10 + (c - A);
+ if(c > nine) return -1;
+ if(c >= zero) return c - zero;
+ return -1;
+}
+template <class charT, class traits>
+int global_toi(const charT*& p1, const charT* p2, int radix, const traits& t)
+{
+ (void)t; // warning suppression
+ int next_value = t.value(*p1, radix);
+ if((p1 == p2) || (next_value < 0) || (next_value >= radix))
+ return -1;
+ int result = 0;
+ while(p1 != p2)
+ {
+ next_value = t.value(*p1, radix);
+ if((next_value < 0) || (next_value >= radix))
+ break;
+ result *= radix;
+ result += next_value;
+ ++p1;
+ }
+ return result;
+}
+
+} // re_detail
+} // boost
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+
+#endif

Added: sandbox/SOC/2007/regex/named-captures/boost/regex/v4/regex_workaround.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/boost/regex/v4/regex_workaround.hpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,202 @@
+/*
+ *
+ * Copyright (c) 1998-2005
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE regex_workarounds.cpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Declares Misc workarounds.
+ */
+
+#ifndef BOOST_REGEX_WORKAROUND_HPP
+#define BOOST_REGEX_WORKAROUND_HPP
+
+
+#include <new>
+#include <cstring>
+#include <cstdlib>
+#include <cstddef>
+#include <cassert>
+#include <cstdio>
+#include <string>
+#include <stdexcept>
+#include <iterator>
+#include <algorithm>
+#include <iosfwd>
+#include <vector>
+#include <map>
+#include <boost/limits.hpp>
+#include <boost/assert.hpp>
+#include <boost/cstdint.hpp>
+#include <boost/throw_exception.hpp>
+#include <boost/scoped_ptr.hpp>
+#include <boost/scoped_array.hpp>
+#include <boost/shared_ptr.hpp>
+#include <boost/mpl/bool_fwd.hpp>
+#ifndef BOOST_NO_STD_LOCALE
+# include <locale>
+#endif
+
+#if defined(BOOST_NO_STDC_NAMESPACE)
+namespace std{
+ using ::sprintf; using ::strcpy; using ::strcat; using ::strlen;
+}
+#endif
+
+namespace boost{ namespace re_detail{
+#ifdef BOOST_NO_STD_DISTANCE
+template <class T>
+std::ptrdiff_t distance(const T& x, const T& y)
+{ return y - x; }
+#else
+using std::distance;
+#endif
+}}
+
+
+#ifdef BOOST_REGEX_NO_BOOL
+# define BOOST_REGEX_MAKE_BOOL(x) static_cast<bool>((x) ? true : false)
+#else
+# ifdef BOOST_MSVC
+ // warning suppression with VC6:
+# pragma warning(disable: 4800)
+# pragma warning(disable: 4786)
+# endif
+# define BOOST_REGEX_MAKE_BOOL(x) static_cast<bool>(x)
+#endif
+
+/*****************************************************************************
+ *
+ * Fix broken broken namespace support:
+ *
+ ****************************************************************************/
+
+#if defined(BOOST_NO_STDC_NAMESPACE) && defined(__cplusplus)
+
+namespace std{
+ using ::ptrdiff_t;
+ using ::size_t;
+ using ::abs;
+ using ::memset;
+ using ::memcpy;
+}
+
+#endif
+
+/*****************************************************************************
+ *
+ * helper functions pointer_construct/pointer_destroy:
+ *
+ ****************************************************************************/
+
+#ifdef __cplusplus
+namespace boost{ namespace re_detail{
+
+#ifdef BOOST_MSVC
+#pragma warning (push)
+#pragma warning (disable : 4100)
+#endif
+
+template <class T>
+inline void pointer_destroy(T* p)
+{ p->~T(); (void)p; }
+
+#ifdef BOOST_MSVC
+#pragma warning (pop)
+#endif
+
+template <class T>
+inline void pointer_construct(T* p, const T& t)
+{ new (p) T(t); }
+
+}} // namespaces
+#endif
+
+/*****************************************************************************
+ *
+ * helper function copy:
+ *
+ ****************************************************************************/
+
+#ifdef __cplusplus
+namespace boost{ namespace re_detail{
+#if BOOST_WORKAROUND(BOOST_MSVC,>=1400) && defined(_CPPLIB_VER) && !(defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION))
+ //
+ // MSVC 8 will either emit warnings or else refuse to compile
+ // code that makes perfectly legitimate use of std::copy, when
+ // the OutputIterator type is a user-defined class (apparently all user
+ // defined iterators are "unsafe"). This code works around that:
+ //
+ template<class InputIterator, class OutputIterator>
+ inline OutputIterator copy(
+ InputIterator first,
+ InputIterator last,
+ OutputIterator dest
+ )
+ {
+ return stdext::unchecked_copy(first, last, dest);
+ }
+ template<class InputIterator1, class InputIterator2>
+ inline bool equal(
+ InputIterator1 first,
+ InputIterator1 last,
+ InputIterator2 with
+ )
+ {
+ return stdext::unchecked_equal(first, last, with);
+ }
+
+ // use safe versions of strcpy etc:
+ using ::strcpy_s;
+ using ::strcat_s;
+#else
+ using std::copy;
+ using std::equal;
+
+ inline std::size_t strcpy_s(
+ char *strDestination,
+ std::size_t sizeInBytes,
+ const char *strSource
+ )
+ {
+ if(std::strlen(strSource)+1 > sizeInBytes)
+ return 1;
+ std::strcpy(strDestination, strSource);
+ return 0;
+ }
+ inline std::size_t strcat_s(
+ char *strDestination,
+ std::size_t sizeInBytes,
+ const char *strSource
+ )
+ {
+ if(std::strlen(strSource) + std::strlen(strDestination) + 1 > sizeInBytes)
+ return 1;
+ std::strcat(strDestination, strSource);
+ return 0;
+ }
+
+#endif
+
+ inline void overflow_error_if_not_zero(std::size_t i)
+ {
+ if(i)
+ {
+ std::overflow_error e("String buffer too small");
+ boost::throw_exception(e);
+ }
+ }
+
+}} // namespaces
+#endif
+
+#endif // include guard
+

Added: sandbox/SOC/2007/regex/named-captures/boost/regex/v4/states.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/boost/regex/v4/states.hpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,276 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE states.cpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Declares internal state machine structures.
+ */
+
+#ifndef BOOST_REGEX_V4_STATES_HPP
+#define BOOST_REGEX_V4_STATES_HPP
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+
+namespace boost{
+namespace re_detail{
+
+/*** mask_type *******************************************************
+Whenever we have a choice of two alternatives, we use an array of bytes
+to indicate which of the two alternatives it is possible to take for any
+given input character. If mask_take is set, then we can take the next
+state, and if mask_skip is set then we can take the alternative.
+***********************************************************************/
+enum mask_type
+{
+ mask_take = 1,
+ mask_skip = 2,
+ mask_init = 4,
+ mask_any = mask_skip | mask_take,
+ mask_all = mask_any
+};
+
+/*** helpers **********************************************************
+These helpers let us use function overload resolution to detect whether
+we have narrow or wide character strings:
+***********************************************************************/
+struct _narrow_type{};
+struct _wide_type{};
+template <class charT> struct is_byte;
+template<> struct is_byte<char> { typedef _narrow_type width_type; };
+template<> struct is_byte<unsigned char>{ typedef _narrow_type width_type; };
+template<> struct is_byte<signed char> { typedef _narrow_type width_type; };
+template <class charT> struct is_byte { typedef _wide_type width_type; };
+
+/*** enum syntax_element_type ******************************************
+Every record in the state machine falls into one of the following types:
+***********************************************************************/
+enum syntax_element_type
+{
+ // start of a marked sub-expression, or perl-style (?...) extension
+ syntax_element_startmark = 0,
+ // end of a marked sub-expression, or perl-style (?...) extension
+ syntax_element_endmark = syntax_element_startmark + 1,
+ // any sequence of literal characters
+ syntax_element_literal = syntax_element_endmark + 1,
+ // start of line assertion: ^
+ syntax_element_start_line = syntax_element_literal + 1,
+ // end of line assertion $
+ syntax_element_end_line = syntax_element_start_line + 1,
+ // match any character: .
+ syntax_element_wild = syntax_element_end_line + 1,
+ // end of expression: we have a match when we get here
+ syntax_element_match = syntax_element_wild + 1,
+ // perl style word boundary: \b
+ syntax_element_word_boundary = syntax_element_match + 1,
+ // perl style within word boundary: \B
+ syntax_element_within_word = syntax_element_word_boundary + 1,
+ // start of word assertion: \<
+ syntax_element_word_start = syntax_element_within_word + 1,
+ // end of word assertion: \>
+ syntax_element_word_end = syntax_element_word_start + 1,
+ // start of buffer assertion: \`
+ syntax_element_buffer_start = syntax_element_word_end + 1,
+ // end of buffer assertion: \'
+ syntax_element_buffer_end = syntax_element_buffer_start + 1,
+ // backreference to previously matched sub-expression
+ syntax_element_backref = syntax_element_buffer_end + 1,
+ // either a wide character set [..] or one with multicharacter collating elements:
+ syntax_element_long_set = syntax_element_backref + 1,
+ // narrow character set: [...]
+ syntax_element_set = syntax_element_long_set + 1,
+ // jump to a new state in the machine:
+ syntax_element_jump = syntax_element_set + 1,
+ // choose between two production states:
+ syntax_element_alt = syntax_element_jump + 1,
+ // a repeat
+ syntax_element_rep = syntax_element_alt + 1,
+ // match a combining character sequence
+ syntax_element_combining = syntax_element_rep + 1,
+ // perl style soft buffer end: \z
+ syntax_element_soft_buffer_end = syntax_element_combining + 1,
+ // perl style continuation: \G
+ syntax_element_restart_continue = syntax_element_soft_buffer_end + 1,
+ // single character repeats:
+ syntax_element_dot_rep = syntax_element_restart_continue + 1,
+ syntax_element_char_rep = syntax_element_dot_rep + 1,
+ syntax_element_short_set_rep = syntax_element_char_rep + 1,
+ syntax_element_long_set_rep = syntax_element_short_set_rep + 1,
+ // a backstep for lookbehind repeats:
+ syntax_element_backstep = syntax_element_long_set_rep + 1,
+ // an assertion that a mark was matched:
+ syntax_element_assert_backref = syntax_element_backstep + 1,
+ syntax_element_toggle_case = syntax_element_assert_backref + 1
+};
+
+#ifdef BOOST_REGEX_DEBUG
+// dwa 09/26/00 - This is needed to suppress warnings about an ambiguous conversion
+std::ostream& operator<<(std::ostream&, syntax_element_type);
+#endif
+
+struct re_syntax_base;
+
+/*** union offset_type ************************************************
+Points to another state in the machine. During machine construction
+we use integral offsets, but these are converted to pointers before
+execution of the machine.
+***********************************************************************/
+union offset_type
+{
+ re_syntax_base* p;
+ std::ptrdiff_t i;
+};
+
+/*** struct re_syntax_base ********************************************
+Base class for all states in the machine.
+***********************************************************************/
+struct re_syntax_base
+{
+ syntax_element_type type; // what kind of state this is
+ offset_type next; // next state in the machine
+};
+
+/*** struct re_brace **************************************************
+A marked parenthesis.
+***********************************************************************/
+struct re_brace : public re_syntax_base
+{
+ // The index to match, can be zero (don't mark the sub-expression)
+ // or negative (for perl style (?...) extentions):
+ int index;
+};
+
+/*** struct re_dot **************************************************
+Match anything.
+***********************************************************************/
+enum
+{
+ dont_care = 1,
+ force_not_newline = 0,
+ force_newline = 2,
+
+ test_not_newline = 2,
+ test_newline = 3
+};
+struct re_dot : public re_syntax_base
+{
+ unsigned char mask;
+};
+
+/*** struct re_literal ************************************************
+A string of literals, following this structure will be an
+array of characters: charT[length]
+***********************************************************************/
+struct re_literal : public re_syntax_base
+{
+ unsigned int length;
+};
+
+/*** struct re_case ************************************************
+Indicates whether we are moving to a case insensive block or not
+***********************************************************************/
+struct re_case : public re_syntax_base
+{
+ bool icase;
+};
+
+/*** struct re_set_long ***********************************************
+A wide character set of characters, following this structure will be
+an array of type charT:
+First csingles null-terminated strings
+Then 2 * cranges NULL terminated strings
+Then cequivalents NULL terminated strings
+***********************************************************************/
+template <class mask_type>
+struct re_set_long : public re_syntax_base
+{
+ unsigned int csingles, cranges, cequivalents;
+ mask_type cclasses;
+ mask_type cnclasses;
+ bool isnot;
+ bool singleton;
+};
+
+/*** struct re_set ****************************************************
+A set of narrow-characters, matches any of _map which is none-zero
+***********************************************************************/
+struct re_set : public re_syntax_base
+{
+ unsigned char _map[1 << CHAR_BIT];
+};
+
+/*** struct re_jump ***************************************************
+Jump to a new location in the machine (not next).
+***********************************************************************/
+struct re_jump : public re_syntax_base
+{
+ offset_type alt; // location to jump to
+};
+
+/*** struct re_alt ***************************************************
+Jump to a new location in the machine (possibly next).
+***********************************************************************/
+struct re_alt : public re_jump
+{
+ unsigned char _map[1 << CHAR_BIT]; // which characters can take the jump
+ unsigned int can_be_null; // true if we match a NULL string
+};
+
+/*** struct re_repeat *************************************************
+Repeat a section of the machine
+***********************************************************************/
+struct re_repeat : public re_alt
+{
+ std::size_t min, max; // min and max allowable repeats
+ int id; // Unique identifier for this repeat
+ bool leading; // True if this repeat is at the start of the machine (lets us optimize some searches)
+ bool greedy; // True if this is a greedy repeat
+};
+
+/*** enum re_jump_size_type *******************************************
+Provides compiled size of re_jump structure (allowing for trailing alignment).
+We provide this so we know how manybytes to insert when constructing the machine
+(The value of padding_mask is defined in regex_raw_buffer.hpp).
+***********************************************************************/
+enum re_jump_size_type
+{
+ re_jump_size = (sizeof(re_jump) + padding_mask) & ~(padding_mask),
+ re_repeater_size = (sizeof(re_repeat) + padding_mask) & ~(padding_mask),
+ re_alt_size = (sizeof(re_alt) + padding_mask) & ~(padding_mask)
+};
+
+/*** proc re_is_set_member *********************************************
+Forward declaration: we'll need this one later...
+***********************************************************************/
+
+template<class charT, class traits>
+struct regex_data;
+
+template <class iterator, class charT, class traits_type, class char_classT>
+iterator BOOST_REGEX_CALL re_is_set_member(iterator next,
+ iterator last,
+ const re_set_long<char_classT>* set_,
+ const regex_data<charT, traits_type>& e, bool icase);
+
+} // namespace re_detail
+
+} // namespace boost
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+
+#endif
+
+

Added: sandbox/SOC/2007/regex/named-captures/boost/regex/v4/sub_match.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/boost/regex/v4/sub_match.hpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,495 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE sub_match.cpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Declares template class sub_match.
+ */
+
+#ifndef BOOST_REGEX_V4_SUB_MATCH_HPP
+#define BOOST_REGEX_V4_SUB_MATCH_HPP
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+
+namespace boost{
+
+template <class BidiIterator>
+struct sub_match : public std::pair<BidiIterator, BidiIterator>
+{
+ typedef typename re_detail::regex_iterator_traits<BidiIterator>::value_type value_type;
+#if defined(BOOST_NO_STD_ITERATOR_TRAITS) || defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+ typedef std::ptrdiff_t difference_type;
+#else
+ typedef typename re_detail::regex_iterator_traits<BidiIterator>::difference_type difference_type;
+#endif
+ typedef BidiIterator iterator_type;
+ typedef BidiIterator iterator;
+ typedef BidiIterator const_iterator;
+
+ bool matched;
+
+ sub_match() : std::pair<BidiIterator, BidiIterator>(), matched(false) {}
+ sub_match(BidiIterator i) : std::pair<BidiIterator, BidiIterator>(i, i), matched(false) {}
+#if !defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS)\
+ && !BOOST_WORKAROUND(BOOST_MSVC, < 1310)\
+ && !BOOST_WORKAROUND(__BORLANDC__, <= 0x0551)\
+ && !BOOST_WORKAROUND(__DECCXX_VER, BOOST_TESTED_AT(60590042))
+ template <class T, class A>
+ operator std::basic_string<value_type, T, A> ()const
+ {
+ return std::basic_string<value_type, T, A>(this->first, this->second);
+ }
+#else
+ operator std::basic_string<value_type> ()const
+ {
+ return str();
+ }
+#endif
+ difference_type BOOST_REGEX_CALL length()const
+ {
+ difference_type n = ::boost::re_detail::distance((BidiIterator)this->first, (BidiIterator)this->second);
+ return n;
+ }
+ std::basic_string<value_type> str()const
+ {
+ std::basic_string<value_type> result;
+ std::size_t len = ::boost::re_detail::distance((BidiIterator)this->first, (BidiIterator)this->second);
+ result.reserve(len);
+ BidiIterator i = this->first;
+ while(i != this->second)
+ {
+ result.append(1, *i);
+ ++i;
+ }
+ return result;
+ }
+ int compare(const sub_match& s)const
+ {
+ if(matched != s.matched)
+ return static_cast<int>(matched) - static_cast<int>(s.matched);
+ return str().compare(s.str());
+ }
+ int compare(const std::basic_string<value_type>& s)const
+ {
+ return str().compare(s);
+ }
+ int compare(const value_type* p)const
+ {
+ return str().compare(p);
+ }
+
+ bool operator==(const sub_match& that)const
+ { return compare(that) == 0; }
+ bool BOOST_REGEX_CALL operator !=(const sub_match& that)const
+ { return compare(that) != 0; }
+ bool operator<(const sub_match& that)const
+ { return compare(that) < 0; }
+ bool operator>(const sub_match& that)const
+ { return compare(that) > 0; }
+ bool operator<=(const sub_match& that)const
+ { return compare(that) <= 0; }
+ bool operator>=(const sub_match& that)const
+ { return compare(that) >= 0; }
+
+#ifdef BOOST_REGEX_MATCH_EXTRA
+ typedef std::vector<sub_match<BidiIterator> > capture_sequence_type;
+
+ const capture_sequence_type& captures()const
+ {
+ if(!m_captures)
+ m_captures.reset(new capture_sequence_type());
+ return *m_captures;
+ }
+ //
+ // Private implementation API: DO NOT USE!
+ //
+ capture_sequence_type& get_captures()const
+ {
+ if(!m_captures)
+ m_captures.reset(new capture_sequence_type());
+ return *m_captures;
+ }
+
+private:
+ mutable boost::scoped_ptr<capture_sequence_type> m_captures;
+public:
+
+#endif
+ sub_match(const sub_match& that, bool
+#ifdef BOOST_REGEX_MATCH_EXTRA
+ deep_copy
+#endif
+ = true
+ )
+ : std::pair<BidiIterator, BidiIterator>(that),
+ matched(that.matched)
+ {
+#ifdef BOOST_REGEX_MATCH_EXTRA
+ if(that.m_captures)
+ if(deep_copy)
+ m_captures.reset(new capture_sequence_type(*(that.m_captures)));
+#endif
+ }
+ sub_match& operator=(const sub_match& that)
+ {
+ this->first = that.first;
+ this->second = that.second;
+ matched = that.matched;
+#ifdef BOOST_REGEX_MATCH_EXTRA
+ if(that.m_captures)
+ get_captures() = *(that.m_captures);
+#endif
+ return *this;
+ }
+
+
+#ifdef BOOST_OLD_REGEX_H
+ //
+ // the following are deprecated, do not use!!
+ //
+ operator int()const;
+ operator unsigned int()const;
+ operator short()const
+ {
+ return (short)(int)(*this);
+ }
+ operator unsigned short()const
+ {
+ return (unsigned short)(unsigned int)(*this);
+ }
+#endif
+};
+
+typedef sub_match<const char*> csub_match;
+typedef sub_match<std::string::const_iterator> ssub_match;
+#ifndef BOOST_NO_WREGEX
+typedef sub_match<const wchar_t*> wcsub_match;
+typedef sub_match<std::wstring::const_iterator> wssub_match;
+#endif
+
+// comparison to std::basic_string<> part 1:
+template <class RandomAccessIterator, class traits, class Allocator>
+inline bool operator == (const std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator>& s,
+ const sub_match<RandomAccessIterator>& m)
+{ return s.compare(m.str()) == 0; }
+template <class RandomAccessIterator, class traits, class Allocator>
+inline bool operator != (const std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator>& s,
+ const sub_match<RandomAccessIterator>& m)
+{ return s.compare(m.str()) != 0; }
+template <class RandomAccessIterator, class traits, class Allocator>
+inline bool operator < (const std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator>& s,
+ const sub_match<RandomAccessIterator>& m)
+{ return s.compare(m.str()) < 0; }
+template <class RandomAccessIterator, class traits, class Allocator>
+inline bool operator <= (const std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator>& s,
+ const sub_match<RandomAccessIterator>& m)
+{ return s.compare(m.str()) <= 0; }
+template <class RandomAccessIterator, class traits, class Allocator>
+inline bool operator >= (const std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator>& s,
+ const sub_match<RandomAccessIterator>& m)
+{ return s.compare(m.str()) >= 0; }
+template <class RandomAccessIterator, class traits, class Allocator>
+inline bool operator > (const std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator>& s,
+ const sub_match<RandomAccessIterator>& m)
+{ return s.compare(m.str()) > 0; }
+// comparison to std::basic_string<> part 2:
+template <class RandomAccessIterator, class traits, class Allocator>
+inline bool operator == (const sub_match<RandomAccessIterator>& m,
+ const std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator>& s)
+{ return m.str().compare(s) == 0; }
+template <class RandomAccessIterator, class traits, class Allocator>
+inline bool operator != (const sub_match<RandomAccessIterator>& m,
+ const std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator>& s)
+{ return m.str().compare(s) != 0; }
+template <class RandomAccessIterator, class traits, class Allocator>
+inline bool operator < (const sub_match<RandomAccessIterator>& m,
+ const std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator>& s)
+{ return m.str().compare(s) < 0; }
+template <class RandomAccessIterator, class traits, class Allocator>
+inline bool operator > (const sub_match<RandomAccessIterator>& m,
+ const std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator>& s)
+{ return m.str().compare(s) > 0; }
+template <class RandomAccessIterator, class traits, class Allocator>
+inline bool operator <= (const sub_match<RandomAccessIterator>& m,
+ const std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator>& s)
+{ return m.str().compare(s) <= 0; }
+template <class RandomAccessIterator, class traits, class Allocator>
+inline bool operator >= (const sub_match<RandomAccessIterator>& m,
+ const std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator>& s)
+{ return m.str().compare(s) >= 0; }
+// comparison to const charT* part 1:
+template <class RandomAccessIterator>
+inline bool operator == (const sub_match<RandomAccessIterator>& m,
+ typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const* s)
+{ return m.str().compare(s) == 0; }
+template <class RandomAccessIterator>
+inline bool operator != (const sub_match<RandomAccessIterator>& m,
+ typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const* s)
+{ return m.str().compare(s) != 0; }
+template <class RandomAccessIterator>
+inline bool operator > (const sub_match<RandomAccessIterator>& m,
+ typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const* s)
+{ return m.str().compare(s) > 0; }
+template <class RandomAccessIterator>
+inline bool operator < (const sub_match<RandomAccessIterator>& m,
+ typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const* s)
+{ return m.str().compare(s) < 0; }
+template <class RandomAccessIterator>
+inline bool operator >= (const sub_match<RandomAccessIterator>& m,
+ typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const* s)
+{ return m.str().compare(s) >= 0; }
+template <class RandomAccessIterator>
+inline bool operator <= (const sub_match<RandomAccessIterator>& m,
+ typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const* s)
+{ return m.str().compare(s) <= 0; }
+// comparison to const charT* part 2:
+template <class RandomAccessIterator>
+inline bool operator == (typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const* s,
+ const sub_match<RandomAccessIterator>& m)
+{ return m.str().compare(s) == 0; }
+template <class RandomAccessIterator>
+inline bool operator != (typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const* s,
+ const sub_match<RandomAccessIterator>& m)
+{ return m.str().compare(s) != 0; }
+template <class RandomAccessIterator>
+inline bool operator < (typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const* s,
+ const sub_match<RandomAccessIterator>& m)
+{ return m.str().compare(s) > 0; }
+template <class RandomAccessIterator>
+inline bool operator > (typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const* s,
+ const sub_match<RandomAccessIterator>& m)
+{ return m.str().compare(s) < 0; }
+template <class RandomAccessIterator>
+inline bool operator <= (typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const* s,
+ const sub_match<RandomAccessIterator>& m)
+{ return m.str().compare(s) >= 0; }
+template <class RandomAccessIterator>
+inline bool operator >= (typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const* s,
+ const sub_match<RandomAccessIterator>& m)
+{ return m.str().compare(s) <= 0; }
+
+// comparison to const charT& part 1:
+template <class RandomAccessIterator>
+inline bool operator == (const sub_match<RandomAccessIterator>& m,
+ typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const& s)
+{ return m.str().compare(0, m.length(), &s, 1) == 0; }
+template <class RandomAccessIterator>
+inline bool operator != (const sub_match<RandomAccessIterator>& m,
+ typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const& s)
+{ return m.str().compare(0, m.length(), &s, 1) != 0; }
+template <class RandomAccessIterator>
+inline bool operator > (const sub_match<RandomAccessIterator>& m,
+ typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const& s)
+{ return m.str().compare(0, m.length(), &s, 1) > 0; }
+template <class RandomAccessIterator>
+inline bool operator < (const sub_match<RandomAccessIterator>& m,
+ typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const& s)
+{ return m.str().compare(0, m.length(), &s, 1) < 0; }
+template <class RandomAccessIterator>
+inline bool operator >= (const sub_match<RandomAccessIterator>& m,
+ typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const& s)
+{ return m.str().compare(0, m.length(), &s, 1) >= 0; }
+template <class RandomAccessIterator>
+inline bool operator <= (const sub_match<RandomAccessIterator>& m,
+ typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const& s)
+{ return m.str().compare(0, m.length(), &s, 1) <= 0; }
+// comparison to const charT* part 2:
+template <class RandomAccessIterator>
+inline bool operator == (typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const& s,
+ const sub_match<RandomAccessIterator>& m)
+{ return m.str().compare(0, m.length(), &s, 1) == 0; }
+template <class RandomAccessIterator>
+inline bool operator != (typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const& s,
+ const sub_match<RandomAccessIterator>& m)
+{ return m.str().compare(0, m.length(), &s, 1) != 0; }
+template <class RandomAccessIterator>
+inline bool operator < (typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const& s,
+ const sub_match<RandomAccessIterator>& m)
+{ return m.str().compare(0, m.length(), &s, 1) > 0; }
+template <class RandomAccessIterator>
+inline bool operator > (typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const& s,
+ const sub_match<RandomAccessIterator>& m)
+{ return m.str().compare(0, m.length(), &s, 1) < 0; }
+template <class RandomAccessIterator>
+inline bool operator <= (typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const& s,
+ const sub_match<RandomAccessIterator>& m)
+{ return m.str().compare(0, m.length(), &s, 1) >= 0; }
+template <class RandomAccessIterator>
+inline bool operator >= (typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const& s,
+ const sub_match<RandomAccessIterator>& m)
+{ return m.str().compare(0, m.length(), &s, 1) <= 0; }
+
+// addition operators:
+template <class RandomAccessIterator, class traits, class Allocator>
+inline std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator>
+operator + (const std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator>& s,
+ const sub_match<RandomAccessIterator>& m)
+{
+ std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator> result;
+ result.reserve(s.size() + m.length() + 1);
+ return result.append(s).append(m.first, m.second);
+}
+template <class RandomAccessIterator, class traits, class Allocator>
+inline std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator>
+operator + (const sub_match<RandomAccessIterator>& m,
+ const std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator>& s)
+{
+ std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator> result;
+ result.reserve(s.size() + m.length() + 1);
+ return result.append(m.first, m.second).append(s);
+}
+#if !(defined(__GNUC__) && defined(BOOST_NO_STD_LOCALE))
+template <class RandomAccessIterator>
+inline std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type>
+operator + (typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const* s,
+ const sub_match<RandomAccessIterator>& m)
+{
+ std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type> result;
+ result.reserve(std::char_traits<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type>::length(s) + m.length() + 1);
+ return result.append(s).append(m.first, m.second);
+}
+template <class RandomAccessIterator>
+inline std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type>
+operator + (const sub_match<RandomAccessIterator>& m,
+ typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const * s)
+{
+ std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type> result;
+ result.reserve(std::char_traits<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type>::length(s) + m.length() + 1);
+ return result.append(m.first, m.second).append(s);
+}
+#else
+// worwaround versions:
+template <class RandomAccessIterator>
+inline std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type>
+operator + (typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const* s,
+ const sub_match<RandomAccessIterator>& m)
+{
+ return s + m.str();
+}
+template <class RandomAccessIterator>
+inline std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type>
+operator + (const sub_match<RandomAccessIterator>& m,
+ typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const * s)
+{
+ return m.str() + s;
+}
+#endif
+template <class RandomAccessIterator>
+inline std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type>
+operator + (typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const& s,
+ const sub_match<RandomAccessIterator>& m)
+{
+ std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type> result;
+ result.reserve(m.length() + 2);
+ return result.append(1, s).append(m.first, m.second);
+}
+template <class RandomAccessIterator>
+inline std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type>
+operator + (const sub_match<RandomAccessIterator>& m,
+ typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const& s)
+{
+ std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type> result;
+ result.reserve(m.length() + 2);
+ return result.append(m.first, m.second).append(1, s);
+}
+template <class RandomAccessIterator>
+inline std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type>
+operator + (const sub_match<RandomAccessIterator>& m1,
+ const sub_match<RandomAccessIterator>& m2)
+{
+ std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type> result;
+ result.reserve(m1.length() + m2.length() + 1);
+ return result.append(m1.first, m1.second).append(m2.first, m2.second);
+}
+#ifndef BOOST_NO_STD_LOCALE
+template <class charT, class traits, class RandomAccessIterator>
+std::basic_ostream<charT, traits>&
+ operator << (std::basic_ostream<charT, traits>& os,
+ const sub_match<RandomAccessIterator>& s)
+{
+ return (os << s.str());
+}
+#else
+template <class RandomAccessIterator>
+std::ostream& operator << (std::ostream& os,
+ const sub_match<RandomAccessIterator>& s)
+{
+ return (os << s.str());
+}
+#endif
+
+#ifdef BOOST_OLD_REGEX_H
+namespace re_detail{
+template <class BidiIterator, class charT>
+int do_toi(BidiIterator i, BidiIterator j, char c, int radix)
+{
+ std::string s(i, j);
+ char* p;
+ int result = std::strtol(s.c_str(), &p, radix);
+ if(*p)raise_regex_exception("Bad sub-expression");
+ return result;
+}
+
+//
+// helper:
+template <class I, class charT>
+int do_toi(I& i, I j, charT c)
+{
+ int result = 0;
+ while((i != j) && (isdigit(*i)))
+ {
+ result = result*10 + (*i - '0');
+ ++i;
+ }
+ return result;
+}
+}
+
+
+template <class BidiIterator>
+sub_match<BidiIterator>::operator int()const
+{
+ BidiIterator i = first;
+ BidiIterator j = second;
+ if(i == j)raise_regex_exception("Bad sub-expression");
+ int neg = 1;
+ if((i != j) && (*i == '-'))
+ {
+ neg = -1;
+ ++i;
+ }
+ neg *= re_detail::do_toi(i, j, *i);
+ if(i != j)raise_regex_exception("Bad sub-expression");
+ return neg;
+}
+template <class BidiIterator>
+sub_match<BidiIterator>::operator unsigned int()const
+{
+ BidiIterator i = first;
+ BidiIterator j = second;
+ if(i == j)
+ raise_regex_exception("Bad sub-expression");
+ return re_detail::do_toi(i, j, *first);
+}
+#endif
+
+} // namespace boost
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+
+#endif
+

Added: sandbox/SOC/2007/regex/named-captures/boost/regex/v4/syntax_type.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/boost/regex/v4/syntax_type.hpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,102 @@
+/*
+ *
+ * Copyright (c) 2003
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE syntax_type.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Declares regular expression synatx type enumerator.
+ */
+
+#ifndef BOOST_REGEX_SYNTAX_TYPE_HPP
+#define BOOST_REGEX_SYNTAX_TYPE_HPP
+
+namespace boost{
+namespace regex_constants{
+
+typedef unsigned char syntax_type;
+
+//
+// values chosen are binary compatible with previous version:
+//
+static const syntax_type syntax_char = 0;
+static const syntax_type syntax_open_mark = 1;
+static const syntax_type syntax_close_mark = 2;
+static const syntax_type syntax_dollar = 3;
+static const syntax_type syntax_caret = 4;
+static const syntax_type syntax_dot = 5;
+static const syntax_type syntax_star = 6;
+static const syntax_type syntax_plus = 7;
+static const syntax_type syntax_question = 8;
+static const syntax_type syntax_open_set = 9;
+static const syntax_type syntax_close_set = 10;
+static const syntax_type syntax_or = 11;
+static const syntax_type syntax_escape = 12;
+static const syntax_type syntax_dash = 14;
+static const syntax_type syntax_open_brace = 15;
+static const syntax_type syntax_close_brace = 16;
+static const syntax_type syntax_digit = 17;
+static const syntax_type syntax_comma = 27;
+static const syntax_type syntax_equal = 37;
+static const syntax_type syntax_colon = 36;
+static const syntax_type syntax_not = 53;
+
+// extensions:
+
+static const syntax_type syntax_hash = 13;
+static const syntax_type syntax_newline = 26;
+
+// escapes:
+
+typedef syntax_type escape_syntax_type;
+
+static const escape_syntax_type escape_type_word_assert = 18;
+static const escape_syntax_type escape_type_not_word_assert = 19;
+static const escape_syntax_type escape_type_control_f = 29;
+static const escape_syntax_type escape_type_control_n = 30;
+static const escape_syntax_type escape_type_control_r = 31;
+static const escape_syntax_type escape_type_control_t = 32;
+static const escape_syntax_type escape_type_control_v = 33;
+static const escape_syntax_type escape_type_ascii_control = 35;
+static const escape_syntax_type escape_type_hex = 34;
+static const escape_syntax_type escape_type_unicode = 0; // not used
+static const escape_syntax_type escape_type_identity = 0; // not used
+static const escape_syntax_type escape_type_backref = syntax_digit;
+static const escape_syntax_type escape_type_decimal = syntax_digit; // not used
+static const escape_syntax_type escape_type_class = 22;
+static const escape_syntax_type escape_type_not_class = 23;
+
+// extensions:
+
+static const escape_syntax_type escape_type_left_word = 20;
+static const escape_syntax_type escape_type_right_word = 21;
+static const escape_syntax_type escape_type_start_buffer = 24; // for \`
+static const escape_syntax_type escape_type_end_buffer = 25; // for \'
+static const escape_syntax_type escape_type_control_a = 28; // for \a
+static const escape_syntax_type escape_type_e = 38; // for \e
+static const escape_syntax_type escape_type_E = 47; // for \Q\E
+static const escape_syntax_type escape_type_Q = 48; // for \Q\E
+static const escape_syntax_type escape_type_X = 49; // for \X
+static const escape_syntax_type escape_type_C = 50; // for \C
+static const escape_syntax_type escape_type_Z = 51; // for \Z
+static const escape_syntax_type escape_type_G = 52; // for \G
+
+static const escape_syntax_type escape_type_property = 54; // for \p
+static const escape_syntax_type escape_type_not_property = 55; // for \P
+static const escape_syntax_type escape_type_named_char = 56; // for \N
+
+static const escape_syntax_type syntax_max = 57;
+
+}
+}
+
+
+#endif

Added: sandbox/SOC/2007/regex/named-captures/boost/regex/v4/u32regex_iterator.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/boost/regex/v4/u32regex_iterator.hpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,193 @@
+/*
+ *
+ * Copyright (c) 2003
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE u32regex_iterator.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Provides u32regex_iterator implementation.
+ */
+
+#ifndef BOOST_REGEX_V4_U32REGEX_ITERATOR_HPP
+#define BOOST_REGEX_V4_U32REGEX_ITERATOR_HPP
+
+namespace boost{
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+
+template <class BidirectionalIterator>
+class u32regex_iterator_implementation
+{
+ typedef u32regex regex_type;
+
+ match_results<BidirectionalIterator> what; // current match
+ BidirectionalIterator base; // start of sequence
+ BidirectionalIterator end; // end of sequence
+ const regex_type re; // the expression
+ match_flag_type flags; // flags for matching
+
+public:
+ u32regex_iterator_implementation(const regex_type* p, BidirectionalIterator last, match_flag_type f)
+ : base(), end(last), re(*p), flags(f){}
+ bool init(BidirectionalIterator first)
+ {
+ base = first;
+ return u32regex_search(first, end, what, re, flags, base);
+ }
+ bool compare(const u32regex_iterator_implementation& that)
+ {
+ if(this == &that) return true;
+ return (&re.get_data() == &that.re.get_data()) && (end == that.end) && (flags == that.flags) && (what[0].first == that.what[0].first) && (what[0].second == that.what[0].second);
+ }
+ const match_results<BidirectionalIterator>& get()
+ { return what; }
+ bool next()
+ {
+ //if(what.prefix().first != what[0].second)
+ // flags |= match_prev_avail;
+ BidirectionalIterator next_start = what[0].second;
+ match_flag_type f(flags);
+ if(!what.length())
+ f |= regex_constants::match_not_initial_null;
+ //if(base != next_start)
+ // f |= regex_constants::match_not_bob;
+ bool result = u32regex_search(next_start, end, what, re, f, base);
+ if(result)
+ what.set_base(base);
+ return result;
+ }
+private:
+ u32regex_iterator_implementation& operator=(const u32regex_iterator_implementation&);
+};
+
+template <class BidirectionalIterator>
+class u32regex_iterator
+#ifndef BOOST_NO_STD_ITERATOR
+ : public std::iterator<
+ std::forward_iterator_tag,
+ match_results<BidirectionalIterator>,
+ typename re_detail::regex_iterator_traits<BidirectionalIterator>::difference_type,
+ const match_results<BidirectionalIterator>*,
+ const match_results<BidirectionalIterator>& >
+#endif
+{
+private:
+ typedef u32regex_iterator_implementation<BidirectionalIterator> impl;
+ typedef shared_ptr<impl> pimpl;
+public:
+ typedef u32regex regex_type;
+ typedef match_results<BidirectionalIterator> value_type;
+ typedef typename re_detail::regex_iterator_traits<BidirectionalIterator>::difference_type
+ difference_type;
+ typedef const value_type* pointer;
+ typedef const value_type& reference;
+ typedef std::forward_iterator_tag iterator_category;
+
+ u32regex_iterator(){}
+ u32regex_iterator(BidirectionalIterator a, BidirectionalIterator b,
+ const regex_type& re,
+ match_flag_type m = match_default)
+ : pdata(new impl(&re, b, m))
+ {
+ if(!pdata->init(a))
+ {
+ pdata.reset();
+ }
+ }
+ u32regex_iterator(const u32regex_iterator& that)
+ : pdata(that.pdata) {}
+ u32regex_iterator& operator=(const u32regex_iterator& that)
+ {
+ pdata = that.pdata;
+ return *this;
+ }
+ bool operator==(const u32regex_iterator& that)const
+ {
+ if((pdata.get() == 0) || (that.pdata.get() == 0))
+ return pdata.get() == that.pdata.get();
+ return pdata->compare(*(that.pdata.get()));
+ }
+ bool operator!=(const u32regex_iterator& that)const
+ { return !(*this == that); }
+ const value_type& operator*()const
+ { return pdata->get(); }
+ const value_type* operator->()const
+ { return &(pdata->get()); }
+ u32regex_iterator& operator++()
+ {
+ cow();
+ if(0 == pdata->next())
+ {
+ pdata.reset();
+ }
+ return *this;
+ }
+ u32regex_iterator operator++(int)
+ {
+ u32regex_iterator result(*this);
+ ++(*this);
+ return result;
+ }
+private:
+
+ pimpl pdata;
+
+ void cow()
+ {
+ // copy-on-write
+ if(pdata.get() && !pdata.unique())
+ {
+ pdata.reset(new impl(*(pdata.get())));
+ }
+ }
+};
+
+typedef u32regex_iterator<const char*> utf8regex_iterator;
+typedef u32regex_iterator<const UChar*> utf16regex_iterator;
+typedef u32regex_iterator<const UChar32*> utf32regex_iterator;
+
+inline u32regex_iterator<const char*> make_u32regex_iterator(const char* p, const u32regex& e, regex_constants::match_flag_type m = regex_constants::match_default)
+{
+ return u32regex_iterator<const char*>(p, p+std::strlen(p), e, m);
+}
+#ifndef BOOST_NO_WREGEX
+inline u32regex_iterator<const wchar_t*> make_u32regex_iterator(const wchar_t* p, const u32regex& e, regex_constants::match_flag_type m = regex_constants::match_default)
+{
+ return u32regex_iterator<const wchar_t*>(p, p+std::wcslen(p), e, m);
+}
+#endif
+#ifndef U_WCHAR_IS_UTF16
+inline u32regex_iterator<const UChar*> make_u32regex_iterator(const UChar* p, const u32regex& e, regex_constants::match_flag_type m = regex_constants::match_default)
+{
+ return u32regex_iterator<const UChar*>(p, p+u_strlen(p), e, m);
+}
+#endif
+template <class charT, class Traits, class Alloc>
+inline u32regex_iterator<typename std::basic_string<charT, Traits, Alloc>::const_iterator> make_u32regex_iterator(const std::basic_string<charT, Traits, Alloc>& p, const u32regex& e, regex_constants::match_flag_type m = regex_constants::match_default)
+{
+ typedef typename std::basic_string<charT, Traits, Alloc>::const_iterator iter_type;
+ return u32regex_iterator<iter_type>(p.begin(), p.end(), e, m);
+}
+inline u32regex_iterator<const UChar*> make_u32regex_iterator(const UnicodeString& s, const u32regex& e, regex_constants::match_flag_type m = regex_constants::match_default)
+{
+ return u32regex_iterator<const UChar*>(s.getBuffer(), s.getBuffer() + s.length(), e, m);
+}
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+
+} // namespace boost
+
+#endif // BOOST_REGEX_V4_REGEX_ITERATOR_HPP
+

Added: sandbox/SOC/2007/regex/named-captures/boost/regex/v4/u32regex_token_iterator.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/boost/regex/v4/u32regex_token_iterator.hpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,377 @@
+/*
+ *
+ * Copyright (c) 2003
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE u32regex_token_iterator.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Provides u32regex_token_iterator implementation.
+ */
+
+#ifndef BOOST_REGEX_V4_U32REGEX_TOKEN_ITERATOR_HPP
+#define BOOST_REGEX_V4_U32REGEX_TOKEN_ITERATOR_HPP
+
+#if (BOOST_WORKAROUND(__BORLANDC__, >= 0x560) && BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x570)))\
+ || BOOST_WORKAROUND(BOOST_MSVC, < 1300) \
+ || BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3003))
+//
+// Borland C++ Builder 6, and Visual C++ 6,
+// can't cope with the array template constructor
+// so we have a template member that will accept any type as
+// argument, and then assert that is really is an array:
+//
+#include <boost/static_assert.hpp>
+#include <boost/type_traits/is_array.hpp>
+#endif
+
+namespace boost{
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+#if BOOST_WORKAROUND(BOOST_MSVC, > 1300)
+# pragma warning(push)
+# pragma warning(disable:4700)
+#endif
+
+template <class BidirectionalIterator>
+class u32regex_token_iterator_implementation
+{
+ typedef u32regex regex_type;
+ typedef sub_match<BidirectionalIterator> value_type;
+
+ match_results<BidirectionalIterator> what; // current match
+ BidirectionalIterator end; // end of search area
+ BidirectionalIterator base; // start of search area
+ const regex_type re; // the expression
+ match_flag_type flags; // match flags
+ value_type result; // the current string result
+ int N; // the current sub-expression being enumerated
+ std::vector<int> subs; // the sub-expressions to enumerate
+
+public:
+ u32regex_token_iterator_implementation(const regex_type* p, BidirectionalIterator last, int sub, match_flag_type f)
+ : end(last), re(*p), flags(f){ subs.push_back(sub); }
+ u32regex_token_iterator_implementation(const regex_type* p, BidirectionalIterator last, const std::vector<int>& v, match_flag_type f)
+ : end(last), re(*p), flags(f), subs(v){}
+#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+ // can't reliably get this to work....
+#elif (BOOST_WORKAROUND(__BORLANDC__, >= 0x560) && BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x570)))\
+ || BOOST_WORKAROUND(BOOST_MSVC, < 1300) \
+ || BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3003)) \
+ || BOOST_WORKAROUND(__HP_aCC, < 60700)
+ template <class T>
+ u32regex_token_iterator_implementation(const regex_type* p, BidirectionalIterator last, const T& submatches, match_flag_type f)
+ : end(last), re(*p), flags(f)
+ {
+ // assert that T really is an array:
+ BOOST_STATIC_ASSERT(::boost::is_array<T>::value);
+ const std::size_t array_size = sizeof(T) / sizeof(submatches[0]);
+ for(std::size_t i = 0; i < array_size; ++i)
+ {
+ subs.push_back(submatches[i]);
+ }
+ }
+#else
+ template <std::size_t CN>
+ u32regex_token_iterator_implementation(const regex_type* p, BidirectionalIterator last, const int (&submatches)[CN], match_flag_type f)
+ : end(last), re(*p), flags(f)
+ {
+ for(std::size_t i = 0; i < CN; ++i)
+ {
+ subs.push_back(submatches[i]);
+ }
+ }
+#endif
+
+ bool init(BidirectionalIterator first)
+ {
+ base = first;
+ N = 0;
+ if(u32regex_search(first, end, what, re, flags, base) == true)
+ {
+ N = 0;
+ result = ((subs[N] == -1) ? what.prefix() : what[(int)subs[N]]);
+ return true;
+ }
+ else if((subs[N] == -1) && (first != end))
+ {
+ result.first = first;
+ result.second = end;
+ result.matched = (first != end);
+ N = -1;
+ return true;
+ }
+ return false;
+ }
+ bool compare(const u32regex_token_iterator_implementation& that)
+ {
+ if(this == &that) return true;
+ return (&re.get_data() == &that.re.get_data())
+ && (end == that.end)
+ && (flags == that.flags)
+ && (N == that.N)
+ && (what[0].first == that.what[0].first)
+ && (what[0].second == that.what[0].second);
+ }
+ const value_type& get()
+ { return result; }
+ bool next()
+ {
+ if(N == -1)
+ return false;
+ if(N+1 < (int)subs.size())
+ {
+ ++N;
+ result =((subs[N] == -1) ? what.prefix() : what[subs[N]]);
+ return true;
+ }
+ //if(what.prefix().first != what[0].second)
+ // flags |= match_prev_avail | regex_constants::match_not_bob;
+ BidirectionalIterator last_end(what[0].second);
+ if(u32regex_search(last_end, end, what, re, ((what[0].first == what[0].second) ? flags | regex_constants::match_not_initial_null : flags), base))
+ {
+ N =0;
+ result =((subs[N] == -1) ? what.prefix() : what[subs[N]]);
+ return true;
+ }
+ else if((last_end != end) && (subs[0] == -1))
+ {
+ N =-1;
+ result.first = last_end;
+ result.second = end;
+ result.matched = (last_end != end);
+ return true;
+ }
+ return false;
+ }
+private:
+ u32regex_token_iterator_implementation& operator=(const u32regex_token_iterator_implementation&);
+};
+
+template <class BidirectionalIterator>
+class u32regex_token_iterator
+#ifndef BOOST_NO_STD_ITERATOR
+ : public std::iterator<
+ std::forward_iterator_tag,
+ sub_match<BidirectionalIterator>,
+ typename re_detail::regex_iterator_traits<BidirectionalIterator>::difference_type,
+ const sub_match<BidirectionalIterator>*,
+ const sub_match<BidirectionalIterator>& >
+#endif
+{
+private:
+ typedef u32regex_token_iterator_implementation<BidirectionalIterator> impl;
+ typedef shared_ptr<impl> pimpl;
+public:
+ typedef u32regex regex_type;
+ typedef sub_match<BidirectionalIterator> value_type;
+ typedef typename re_detail::regex_iterator_traits<BidirectionalIterator>::difference_type
+ difference_type;
+ typedef const value_type* pointer;
+ typedef const value_type& reference;
+ typedef std::forward_iterator_tag iterator_category;
+
+ u32regex_token_iterator(){}
+ u32regex_token_iterator(BidirectionalIterator a, BidirectionalIterator b, const regex_type& re,
+ int submatch = 0, match_flag_type m = match_default)
+ : pdata(new impl(&re, b, submatch, m))
+ {
+ if(!pdata->init(a))
+ pdata.reset();
+ }
+ u32regex_token_iterator(BidirectionalIterator a, BidirectionalIterator b, const regex_type& re,
+ const std::vector<int>& submatches, match_flag_type m = match_default)
+ : pdata(new impl(&re, b, submatches, m))
+ {
+ if(!pdata->init(a))
+ pdata.reset();
+ }
+#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+ // can't reliably get this to work....
+#elif (BOOST_WORKAROUND(__BORLANDC__, >= 0x560) && BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x570)))\
+ || BOOST_WORKAROUND(BOOST_MSVC, < 1300) \
+ || BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3003)) \
+ || BOOST_WORKAROUND(__HP_aCC, < 60700)
+ template <class T>
+ u32regex_token_iterator(BidirectionalIterator a, BidirectionalIterator b, const regex_type& re,
+ const T& submatches, match_flag_type m = match_default)
+ : pdata(new impl(&re, b, submatches, m))
+ {
+ if(!pdata->init(a))
+ pdata.reset();
+ }
+#else
+ template <std::size_t N>
+ u32regex_token_iterator(BidirectionalIterator a, BidirectionalIterator b, const regex_type& re,
+ const int (&submatches)[N], match_flag_type m = match_default)
+ : pdata(new impl(&re, b, submatches, m))
+ {
+ if(!pdata->init(a))
+ pdata.reset();
+ }
+#endif
+ u32regex_token_iterator(const u32regex_token_iterator& that)
+ : pdata(that.pdata) {}
+ u32regex_token_iterator& operator=(const u32regex_token_iterator& that)
+ {
+ pdata = that.pdata;
+ return *this;
+ }
+ bool operator==(const u32regex_token_iterator& that)const
+ {
+ if((pdata.get() == 0) || (that.pdata.get() == 0))
+ return pdata.get() == that.pdata.get();
+ return pdata->compare(*(that.pdata.get()));
+ }
+ bool operator!=(const u32regex_token_iterator& that)const
+ { return !(*this == that); }
+ const value_type& operator*()const
+ { return pdata->get(); }
+ const value_type* operator->()const
+ { return &(pdata->get()); }
+ u32regex_token_iterator& operator++()
+ {
+ cow();
+ if(0 == pdata->next())
+ {
+ pdata.reset();
+ }
+ return *this;
+ }
+ u32regex_token_iterator operator++(int)
+ {
+ u32regex_token_iterator result(*this);
+ ++(*this);
+ return result;
+ }
+private:
+
+ pimpl pdata;
+
+ void cow()
+ {
+ // copy-on-write
+ if(pdata.get() && !pdata.unique())
+ {
+ pdata.reset(new impl(*(pdata.get())));
+ }
+ }
+};
+
+typedef u32regex_token_iterator<const char*> utf8regex_token_iterator;
+typedef u32regex_token_iterator<const UChar*> utf16regex_token_iterator;
+typedef u32regex_token_iterator<const UChar32*> utf32regex_token_iterator;
+
+// construction from an integral sub_match id:
+inline u32regex_token_iterator<const char*> make_u32regex_token_iterator(const char* p, const u32regex& e, int submatch = 0, regex_constants::match_flag_type m = regex_constants::match_default)
+{
+ return u32regex_token_iterator<const char*>(p, p+std::strlen(p), e, submatch, m);
+}
+#ifndef BOOST_NO_WREGEX
+inline u32regex_token_iterator<const wchar_t*> make_u32regex_token_iterator(const wchar_t* p, const u32regex& e, int submatch = 0, regex_constants::match_flag_type m = regex_constants::match_default)
+{
+ return u32regex_token_iterator<const wchar_t*>(p, p+std::wcslen(p), e, submatch, m);
+}
+#endif
+#ifndef U_WCHAR_IS_UTF16
+inline u32regex_token_iterator<const UChar*> make_u32regex_token_iterator(const UChar* p, const u32regex& e, int submatch = 0, regex_constants::match_flag_type m = regex_constants::match_default)
+{
+ return u32regex_token_iterator<const UChar*>(p, p+u_strlen(p), e, m);
+}
+#endif
+template <class charT, class Traits, class Alloc>
+inline u32regex_token_iterator<typename std::basic_string<charT, Traits, Alloc>::const_iterator> make_u32regex_token_iterator(const std::basic_string<charT, Traits, Alloc>& p, const u32regex& e, int submatch = 0, regex_constants::match_flag_type m = regex_constants::match_default)
+{
+ typedef typename std::basic_string<charT, Traits, Alloc>::const_iterator iter_type;
+ return u32regex_token_iterator<iter_type>(p.begin(), p.end(), e, m);
+}
+inline u32regex_token_iterator<const UChar*> make_u32regex_token_iterator(const UnicodeString& s, const u32regex& e, int submatch = 0, regex_constants::match_flag_type m = regex_constants::match_default)
+{
+ return u32regex_token_iterator<const UChar*>(s.getBuffer(), s.getBuffer() + s.length(), e, submatch, m);
+}
+
+#if !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+// construction from a reference to an array:
+template <std::size_t N>
+inline u32regex_token_iterator<const char*> make_u32regex_token_iterator(const char* p, const u32regex& e, const int (&submatch)[N], regex_constants::match_flag_type m = regex_constants::match_default)
+{
+ return u32regex_token_iterator<const char*>(p, p+std::strlen(p), e, submatch, m);
+}
+#ifndef BOOST_NO_WREGEX
+template <std::size_t N>
+inline u32regex_token_iterator<const wchar_t*> make_u32regex_token_iterator(const wchar_t* p, const u32regex& e, const int (&submatch)[N], regex_constants::match_flag_type m = regex_constants::match_default)
+{
+ return u32regex_token_iterator<const wchar_t*>(p, p+std::wcslen(p), e, submatch, m);
+}
+#endif
+#ifndef U_WCHAR_IS_UTF16
+template <std::size_t N>
+inline u32regex_token_iterator<const UChar*> make_u32regex_token_iterator(const UChar* p, const u32regex& e, const int (&submatch)[N], regex_constants::match_flag_type m = regex_constants::match_default)
+{
+ return u32regex_token_iterator<const UChar*>(p, p+u_strlen(p), e, m);
+}
+#endif
+template <class charT, class Traits, class Alloc, std::size_t N>
+inline u32regex_token_iterator<typename std::basic_string<charT, Traits, Alloc>::const_iterator> make_u32regex_token_iterator(const std::basic_string<charT, Traits, Alloc>& p, const u32regex& e, const int (&submatch)[N], regex_constants::match_flag_type m = regex_constants::match_default)
+{
+ typedef typename std::basic_string<charT, Traits, Alloc>::const_iterator iter_type;
+ return u32regex_token_iterator<iter_type>(p.begin(), p.end(), e, m);
+}
+template <std::size_t N>
+inline u32regex_token_iterator<const UChar*> make_u32regex_token_iterator(const UnicodeString& s, const u32regex& e, const int (&submatch)[N], regex_constants::match_flag_type m = regex_constants::match_default)
+{
+ return u32regex_token_iterator<const UChar*>(s.getBuffer(), s.getBuffer() + s.length(), e, submatch, m);
+}
+#endif // BOOST_MSVC < 1300
+
+// construction from a vector of sub_match id's:
+inline u32regex_token_iterator<const char*> make_u32regex_token_iterator(const char* p, const u32regex& e, const std::vector<int>& submatch, regex_constants::match_flag_type m = regex_constants::match_default)
+{
+ return u32regex_token_iterator<const char*>(p, p+std::strlen(p), e, submatch, m);
+}
+#ifndef BOOST_NO_WREGEX
+inline u32regex_token_iterator<const wchar_t*> make_u32regex_token_iterator(const wchar_t* p, const u32regex& e, const std::vector<int>& submatch, regex_constants::match_flag_type m = regex_constants::match_default)
+{
+ return u32regex_token_iterator<const wchar_t*>(p, p+std::wcslen(p), e, submatch, m);
+}
+#endif
+#ifndef U_WCHAR_IS_UTF16
+inline u32regex_token_iterator<const UChar*> make_u32regex_token_iterator(const UChar* p, const u32regex& e, const std::vector<int>& submatch, regex_constants::match_flag_type m = regex_constants::match_default)
+{
+ return u32regex_token_iterator<const UChar*>(p, p+u_strlen(p), e, m);
+}
+#endif
+template <class charT, class Traits, class Alloc>
+inline u32regex_token_iterator<typename std::basic_string<charT, Traits, Alloc>::const_iterator> make_u32regex_token_iterator(const std::basic_string<charT, Traits, Alloc>& p, const u32regex& e, const std::vector<int>& submatch, regex_constants::match_flag_type m = regex_constants::match_default)
+{
+ typedef typename std::basic_string<charT, Traits, Alloc>::const_iterator iter_type;
+ return u32regex_token_iterator<iter_type>(p.begin(), p.end(), e, m);
+}
+inline u32regex_token_iterator<const UChar*> make_u32regex_token_iterator(const UnicodeString& s, const u32regex& e, const std::vector<int>& submatch, regex_constants::match_flag_type m = regex_constants::match_default)
+{
+ return u32regex_token_iterator<const UChar*>(s.getBuffer(), s.getBuffer() + s.length(), e, submatch, m);
+}
+
+#if BOOST_WORKAROUND(BOOST_MSVC, == 1310)
+# pragma warning(pop)
+#endif
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+
+} // namespace boost
+
+#endif // BOOST_REGEX_V4_REGEX_TOKEN_ITERATOR_HPP
+
+
+
+

Added: sandbox/SOC/2007/regex/named-captures/boost/regex/v4/w32_regex_traits.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/boost/regex/v4/w32_regex_traits.hpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,716 @@
+/*
+ *
+ * Copyright (c) 2004
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE w32_regex_traits.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Declares regular expression traits class w32_regex_traits.
+ */
+
+#ifndef BOOST_W32_REGEX_TRAITS_HPP_INCLUDED
+#define BOOST_W32_REGEX_TRAITS_HPP_INCLUDED
+
+#ifndef BOOST_RE_PAT_EXCEPT_HPP
+#include <boost/regex/pattern_except.hpp>
+#endif
+#ifndef BOOST_REGEX_TRAITS_DEFAULTS_HPP_INCLUDED
+#include <boost/regex/v4/regex_traits_defaults.hpp>
+#endif
+#ifdef BOOST_HAS_THREADS
+#include <boost/regex/pending/static_mutex.hpp>
+#endif
+#ifndef BOOST_REGEX_PRIMARY_TRANSFORM
+#include <boost/regex/v4/primary_transform.hpp>
+#endif
+#ifndef BOOST_REGEX_OBJECT_CACHE_HPP
+#include <boost/regex/pending/object_cache.hpp>
+#endif
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4786)
+#endif
+
+namespace boost{
+
+//
+// forward declaration is needed by some compilers:
+//
+template <class charT>
+class w32_regex_traits;
+
+namespace re_detail{
+
+//
+// start by typedeffing the types we'll need:
+//
+typedef ::boost::uint32_t lcid_type; // placeholder for LCID.
+typedef ::boost::shared_ptr<void> cat_type; // placeholder for dll HANDLE.
+
+//
+// then add wrappers around the actual Win32 API's (ie implementation hiding):
+//
+BOOST_REGEX_DECL lcid_type BOOST_REGEX_CALL w32_get_default_locale();
+BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is_lower(char, lcid_type);
+#ifndef BOOST_NO_WREGEX
+BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is_lower(wchar_t, lcid_type);
+#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T
+BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is_lower(unsigned short ca, lcid_type id);
+#endif
+#endif
+BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is_upper(char, lcid_type);
+#ifndef BOOST_NO_WREGEX
+BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is_upper(wchar_t, lcid_type);
+#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T
+BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is_upper(unsigned short ca, lcid_type id);
+#endif
+#endif
+BOOST_REGEX_DECL cat_type BOOST_REGEX_CALL w32_cat_open(const std::string& name);
+BOOST_REGEX_DECL std::string BOOST_REGEX_CALL w32_cat_get(const cat_type& cat, lcid_type id, int i, const std::string& def);
+#ifndef BOOST_NO_WREGEX
+BOOST_REGEX_DECL std::wstring BOOST_REGEX_CALL w32_cat_get(const cat_type& cat, lcid_type id, int i, const std::wstring& def);
+#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T
+BOOST_REGEX_DECL std::basic_string<unsigned short> BOOST_REGEX_CALL w32_cat_get(const cat_type& cat, lcid_type, int i, const std::basic_string<unsigned short>& def);
+#endif
+#endif
+BOOST_REGEX_DECL std::string BOOST_REGEX_CALL w32_transform(lcid_type id, const char* p1, const char* p2);
+#ifndef BOOST_NO_WREGEX
+BOOST_REGEX_DECL std::wstring BOOST_REGEX_CALL w32_transform(lcid_type id, const wchar_t* p1, const wchar_t* p2);
+#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T
+BOOST_REGEX_DECL std::basic_string<unsigned short> BOOST_REGEX_CALL w32_transform(lcid_type id, const unsigned short* p1, const unsigned short* p2);
+#endif
+#endif
+BOOST_REGEX_DECL char BOOST_REGEX_CALL w32_tolower(char c, lcid_type);
+#ifndef BOOST_NO_WREGEX
+BOOST_REGEX_DECL wchar_t BOOST_REGEX_CALL w32_tolower(wchar_t c, lcid_type);
+#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T
+BOOST_REGEX_DECL unsigned short BOOST_REGEX_CALL w32_tolower(unsigned short c, lcid_type id);
+#endif
+#endif
+BOOST_REGEX_DECL char BOOST_REGEX_CALL w32_toupper(char c, lcid_type);
+#ifndef BOOST_NO_WREGEX
+BOOST_REGEX_DECL wchar_t BOOST_REGEX_CALL w32_toupper(wchar_t c, lcid_type);
+#endif
+BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is(lcid_type, boost::uint32_t mask, char c);
+#ifndef BOOST_NO_WREGEX
+BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is(lcid_type, boost::uint32_t mask, wchar_t c);
+#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T
+BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is(lcid_type id, boost::uint32_t m, unsigned short c);
+#endif
+#endif
+//
+// class w32_regex_traits_base:
+// acts as a container for locale and the facets we are using.
+//
+template <class charT>
+struct w32_regex_traits_base
+{
+ w32_regex_traits_base(lcid_type l)
+ { imbue(l); }
+ lcid_type imbue(lcid_type l);
+
+ lcid_type m_locale;
+};
+
+template <class charT>
+inline lcid_type w32_regex_traits_base<charT>::imbue(lcid_type l)
+{
+ lcid_type result(m_locale);
+ m_locale = l;
+ return result;
+}
+
+//
+// class w32_regex_traits_char_layer:
+// implements methods that require specialisation for narrow characters:
+//
+template <class charT>
+class w32_regex_traits_char_layer : public w32_regex_traits_base<charT>
+{
+ typedef std::basic_string<charT> string_type;
+ typedef std::map<charT, regex_constants::syntax_type> map_type;
+ typedef typename map_type::const_iterator map_iterator_type;
+public:
+ w32_regex_traits_char_layer(const lcid_type l);
+
+ regex_constants::syntax_type syntax_type(charT c)const
+ {
+ map_iterator_type i = m_char_map.find(c);
+ return ((i == m_char_map.end()) ? 0 : i->second);
+ }
+ regex_constants::escape_syntax_type escape_syntax_type(charT c) const
+ {
+ map_iterator_type i = m_char_map.find(c);
+ if(i == m_char_map.end())
+ {
+ if(::boost::re_detail::w32_is_lower(c, this->m_locale)) return regex_constants::escape_type_class;
+ if(::boost::re_detail::w32_is_upper(c, this->m_locale)) return regex_constants::escape_type_not_class;
+ return 0;
+ }
+ return i->second;
+ }
+ charT tolower(charT c)const
+ {
+ return ::boost::re_detail::w32_tolower(c, this->m_locale);
+ }
+ bool isctype(boost::uint32_t mask, charT c)const
+ {
+ return ::boost::re_detail::w32_is(this->m_locale, mask, c);
+ }
+
+private:
+ string_type get_default_message(regex_constants::syntax_type);
+ // TODO: use a hash table when available!
+ map_type m_char_map;
+};
+
+template <class charT>
+w32_regex_traits_char_layer<charT>::w32_regex_traits_char_layer(::boost::re_detail::lcid_type l)
+ : w32_regex_traits_base<charT>(l)
+{
+ // we need to start by initialising our syntax map so we know which
+ // character is used for which purpose:
+ cat_type cat;
+ std::string cat_name(w32_regex_traits<charT>::get_catalog_name());
+ if(cat_name.size())
+ {
+ cat = ::boost::re_detail::w32_cat_open(cat_name);
+ if(!cat)
+ {
+ std::string m("Unable to open message catalog: ");
+ std::runtime_error err(m + cat_name);
+ boost::re_detail::raise_runtime_error(err);
+ }
+ }
+ //
+ // if we have a valid catalog then load our messages:
+ //
+ if(cat)
+ {
+ for(regex_constants::syntax_type i = 1; i < regex_constants::syntax_max; ++i)
+ {
+ string_type mss = ::boost::re_detail::w32_cat_get(cat, this->m_locale, i, get_default_message(i));
+ for(typename string_type::size_type j = 0; j < mss.size(); ++j)
+ {
+ this->m_char_map[mss[j]] = i;
+ }
+ }
+ }
+ else
+ {
+ for(regex_constants::syntax_type i = 1; i < regex_constants::syntax_max; ++i)
+ {
+ const char* ptr = get_default_syntax(i);
+ while(ptr && *ptr)
+ {
+ this->m_char_map[static_cast<charT>(*ptr)] = i;
+ ++ptr;
+ }
+ }
+ }
+}
+
+template <class charT>
+typename w32_regex_traits_char_layer<charT>::string_type
+ w32_regex_traits_char_layer<charT>::get_default_message(regex_constants::syntax_type i)
+{
+ const char* ptr = get_default_syntax(i);
+ string_type result;
+ while(ptr && *ptr)
+ {
+ result.append(1, static_cast<charT>(*ptr));
+ ++ptr;
+ }
+ return result;
+}
+
+//
+// specialised version for narrow characters:
+//
+template <>
+class BOOST_REGEX_DECL w32_regex_traits_char_layer<char> : public w32_regex_traits_base<char>
+{
+ typedef std::string string_type;
+public:
+ w32_regex_traits_char_layer(::boost::re_detail::lcid_type l)
+ : w32_regex_traits_base<char>(l)
+ {
+ init();
+ }
+
+ regex_constants::syntax_type syntax_type(char c)const
+ {
+ return m_char_map[static_cast<unsigned char>(c)];
+ }
+ regex_constants::escape_syntax_type escape_syntax_type(char c) const
+ {
+ return m_char_map[static_cast<unsigned char>(c)];
+ }
+ char tolower(char c)const
+ {
+ return m_lower_map[static_cast<unsigned char>(c)];
+ }
+ bool isctype(boost::uint32_t mask, char c)const
+ {
+ return m_type_map[static_cast<unsigned char>(c)] & mask;
+ }
+
+private:
+ regex_constants::syntax_type m_char_map[1u << CHAR_BIT];
+ char m_lower_map[1u << CHAR_BIT];
+ boost::uint16_t m_type_map[1u << CHAR_BIT];
+ void init();
+};
+
+//
+// class w32_regex_traits_implementation:
+// provides pimpl implementation for w32_regex_traits.
+//
+template <class charT>
+class w32_regex_traits_implementation : public w32_regex_traits_char_layer<charT>
+{
+public:
+ typedef typename w32_regex_traits<charT>::char_class_type char_class_type;
+ BOOST_STATIC_CONSTANT(char_class_type, mask_word = 0x0400); // must be C1_DEFINED << 1
+ BOOST_STATIC_CONSTANT(char_class_type, mask_unicode = 0x0800); // must be C1_DEFINED << 2
+ BOOST_STATIC_CONSTANT(char_class_type, mask_base = 0x3ff); // all the masks used by the CT_CTYPE1 group
+
+ typedef std::basic_string<charT> string_type;
+ typedef charT char_type;
+ w32_regex_traits_implementation(::boost::re_detail::lcid_type l);
+ std::string error_string(regex_constants::error_type n) const
+ {
+ if(!m_error_strings.empty())
+ {
+ std::map<int, std::string>::const_iterator p = m_error_strings.find(n);
+ return (p == m_error_strings.end()) ? std::string(get_default_error_string(n)) : p->second;
+ }
+ return get_default_error_string(n);
+ }
+ char_class_type lookup_classname(const charT* p1, const charT* p2) const
+ {
+ char_class_type result = lookup_classname_imp(p1, p2);
+ if(result == 0)
+ {
+ typedef typename string_type::size_type size_type;
+ string_type temp(p1, p2);
+ for(size_type i = 0; i < temp.size(); ++i)
+ temp[i] = this->tolower(temp[i]);
+ result = lookup_classname_imp(&*temp.begin(), &*temp.begin() + temp.size());
+ }
+ return result;
+ }
+ string_type lookup_collatename(const charT* p1, const charT* p2) const;
+ string_type transform_primary(const charT* p1, const charT* p2) const;
+ string_type transform(const charT* p1, const charT* p2) const
+ {
+ return ::boost::re_detail::w32_transform(this->m_locale, p1, p2);
+ }
+private:
+ std::map<int, std::string> m_error_strings; // error messages indexed by numberic ID
+ std::map<string_type, char_class_type> m_custom_class_names; // character class names
+ std::map<string_type, string_type> m_custom_collate_names; // collating element names
+ unsigned m_collate_type; // the form of the collation string
+ charT m_collate_delim; // the collation group delimiter
+ //
+ // helpers:
+ //
+ char_class_type lookup_classname_imp(const charT* p1, const charT* p2) const;
+};
+
+template <class charT>
+typename w32_regex_traits_implementation<charT>::string_type
+ w32_regex_traits_implementation<charT>::transform_primary(const charT* p1, const charT* p2) const
+{
+ string_type result;
+ //
+ // What we do here depends upon the format of the sort key returned by
+ // sort key returned by this->transform:
+ //
+ switch(m_collate_type)
+ {
+ case sort_C:
+ case sort_unknown:
+ // the best we can do is translate to lower case, then get a regular sort key:
+ {
+ result.assign(p1, p2);
+ typedef typename string_type::size_type size_type;
+ for(size_type i = 0; i < result.size(); ++i)
+ result[i] = this->tolower(result[i]);
+ result = this->transform(&*result.begin(), &*result.begin() + result.size());
+ break;
+ }
+ case sort_fixed:
+ {
+ // get a regular sort key, and then truncate it:
+ result.assign(this->transform(p1, p2));
+ result.erase(this->m_collate_delim);
+ break;
+ }
+ case sort_delim:
+ // get a regular sort key, and then truncate everything after the delim:
+ result.assign(this->transform(p1, p2));
+ std::size_t i;
+ for(i = 0; i < result.size(); ++i)
+ {
+ if(result[i] == m_collate_delim)
+ break;
+ }
+ result.erase(i);
+ break;
+ }
+ if(result.empty())
+ result = string_type(1, charT(0));
+ return result;
+}
+
+template <class charT>
+typename w32_regex_traits_implementation<charT>::string_type
+ w32_regex_traits_implementation<charT>::lookup_collatename(const charT* p1, const charT* p2) const
+{
+ typedef typename std::map<string_type, string_type>::const_iterator iter_type;
+ if(m_custom_collate_names.size())
+ {
+ iter_type pos = m_custom_collate_names.find(string_type(p1, p2));
+ if(pos != m_custom_collate_names.end())
+ return pos->second;
+ }
+#if !defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS)\
+ && !BOOST_WORKAROUND(BOOST_MSVC, < 1300)\
+ && !BOOST_WORKAROUND(__BORLANDC__, <= 0x0551)
+ std::string name(p1, p2);
+#else
+ std::string name;
+ const charT* p0 = p1;
+ while(p0 != p2)
+ name.append(1, char(*p0++));
+#endif
+ name = lookup_default_collate_name(name);
+#if !defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS)\
+ && !BOOST_WORKAROUND(BOOST_MSVC, < 1300)\
+ && !BOOST_WORKAROUND(__BORLANDC__, <= 0x0551)
+ if(name.size())
+ return string_type(name.begin(), name.end());
+#else
+ if(name.size())
+ {
+ string_type result;
+ typedef std::string::const_iterator iter;
+ iter b = name.begin();
+ iter e = name.end();
+ while(b != e)
+ result.append(1, charT(*b++));
+ return result;
+ }
+#endif
+ if(p2 - p1 == 1)
+ return string_type(1, *p1);
+ return string_type();
+}
+
+template <class charT>
+w32_regex_traits_implementation<charT>::w32_regex_traits_implementation(::boost::re_detail::lcid_type l)
+: w32_regex_traits_char_layer<charT>(l)
+{
+ cat_type cat;
+ std::string cat_name(w32_regex_traits<charT>::get_catalog_name());
+ if(cat_name.size())
+ {
+ cat = ::boost::re_detail::w32_cat_open(cat_name);
+ if(!cat)
+ {
+ std::string m("Unable to open message catalog: ");
+ std::runtime_error err(m + cat_name);
+ boost::re_detail::raise_runtime_error(err);
+ }
+ }
+ //
+ // if we have a valid catalog then load our messages:
+ //
+ if(cat)
+ {
+ //
+ // Error messages:
+ //
+ for(boost::regex_constants::error_type i = static_cast<boost::regex_constants::error_type>(0);
+ i <= boost::regex_constants::error_unknown;
+ i = static_cast<boost::regex_constants::error_type>(i + 1))
+ {
+ const char* p = get_default_error_string(i);
+ string_type default_message;
+ while(*p)
+ {
+ default_message.append(1, static_cast<charT>(*p));
+ ++p;
+ }
+ string_type s = ::boost::re_detail::w32_cat_get(cat, this->m_locale, i+200, default_message);
+ std::string result;
+ for(std::string::size_type j = 0; j < s.size(); ++j)
+ {
+ result.append(1, static_cast<char>(s[j]));
+ }
+ m_error_strings[i] = result;
+ }
+ //
+ // Custom class names:
+ //
+ static const char_class_type masks[14] =
+ {
+ 0x0104u, // C1_ALPHA | C1_DIGIT
+ 0x0100u, // C1_ALPHA
+ 0x0020u, // C1_CNTRL
+ 0x0004u, // C1_DIGIT
+ (~(0x0020u|0x0008u) & 0x01ffu) | 0x0400u, // not C1_CNTRL or C1_SPACE
+ 0x0002u, // C1_LOWER
+ (~0x0020u & 0x01ffu) | 0x0400, // not C1_CNTRL
+ 0x0010u, // C1_PUNCT
+ 0x0008u, // C1_SPACE
+ 0x0001u, // C1_UPPER
+ 0x0080u, // C1_XDIGIT
+ 0x0040u, // C1_BLANK
+ w32_regex_traits_implementation<charT>::mask_word,
+ w32_regex_traits_implementation<charT>::mask_unicode,
+ };
+ static const string_type null_string;
+ for(unsigned int j = 0; j <= 13; ++j)
+ {
+ string_type s(::boost::re_detail::w32_cat_get(cat, this->m_locale, j+300, null_string));
+ if(s.size())
+ this->m_custom_class_names[s] = masks[j];
+ }
+ }
+ //
+ // get the collation format used by m_pcollate:
+ //
+ m_collate_type = re_detail::find_sort_syntax(this, &m_collate_delim);
+}
+
+template <class charT>
+typename w32_regex_traits_implementation<charT>::char_class_type
+ w32_regex_traits_implementation<charT>::lookup_classname_imp(const charT* p1, const charT* p2) const
+{
+ static const char_class_type masks[20] =
+ {
+ 0,
+ 0x0104u, // C1_ALPHA | C1_DIGIT
+ 0x0100u, // C1_ALPHA
+ 0x0040u, // C1_BLANK
+ 0x0020u, // C1_CNTRL
+ 0x0004u, // C1_DIGIT
+ 0x0004u, // C1_DIGIT
+ (~(0x0020u|0x0008u|0x0040) & 0x01ffu) | 0x0400u, // not C1_CNTRL or C1_SPACE or C1_BLANK
+ 0x0002u, // C1_LOWER
+ 0x0002u, // C1_LOWER
+ (~0x0020u & 0x01ffu) | 0x0400, // not C1_CNTRL
+ 0x0010u, // C1_PUNCT
+ 0x0008u, // C1_SPACE
+ 0x0008u, // C1_SPACE
+ 0x0001u, // C1_UPPER
+ w32_regex_traits_implementation<charT>::mask_unicode,
+ 0x0001u, // C1_UPPER
+ 0x0104u | w32_regex_traits_implementation<charT>::mask_word,
+ 0x0104u | w32_regex_traits_implementation<charT>::mask_word,
+ 0x0080u, // C1_XDIGIT
+ };
+ if(m_custom_class_names.size())
+ {
+ typedef typename std::map<std::basic_string<charT>, char_class_type>::const_iterator map_iter;
+ map_iter pos = m_custom_class_names.find(string_type(p1, p2));
+ if(pos != m_custom_class_names.end())
+ return pos->second;
+ }
+ std::size_t id = 1 + re_detail::get_default_class_id(p1, p2);
+ if(id < sizeof(masks) / sizeof(masks[0]))
+ return masks[id];
+ return masks[0];
+}
+
+
+template <class charT>
+boost::shared_ptr<const w32_regex_traits_implementation<charT> > create_w32_regex_traits(::boost::re_detail::lcid_type l BOOST_APPEND_EXPLICIT_TEMPLATE_TYPE(charT))
+{
+ // TODO: create a cache for previously constructed objects.
+ return boost::object_cache< ::boost::re_detail::lcid_type, w32_regex_traits_implementation<charT> >::get(l, 5);
+}
+
+} // re_detail
+
+template <class charT>
+class w32_regex_traits
+{
+public:
+ typedef charT char_type;
+ typedef std::size_t size_type;
+ typedef std::basic_string<char_type> string_type;
+ typedef ::boost::re_detail::lcid_type locale_type;
+ typedef boost::uint_least32_t char_class_type;
+
+ struct boost_extensions_tag{};
+
+ w32_regex_traits()
+ : m_pimpl(re_detail::create_w32_regex_traits<charT>(::boost::re_detail::w32_get_default_locale()))
+ { }
+ static size_type length(const char_type* p)
+ {
+ return std::char_traits<charT>::length(p);
+ }
+ regex_constants::syntax_type syntax_type(charT c)const
+ {
+ return m_pimpl->syntax_type(c);
+ }
+ regex_constants::escape_syntax_type escape_syntax_type(charT c) const
+ {
+ return m_pimpl->escape_syntax_type(c);
+ }
+ charT translate(charT c) const
+ {
+ return c;
+ }
+ charT translate_nocase(charT c) const
+ {
+ return this->m_pimpl->tolower(c);
+ }
+ charT translate(charT c, bool icase) const
+ {
+ return icase ? this->m_pimpl->tolower(c) : c;
+ }
+ charT tolower(charT c) const
+ {
+ return this->m_pimpl->tolower(c);
+ }
+ charT toupper(charT c) const
+ {
+ return ::boost::re_detail::w32_toupper(c, this->m_pimpl->m_locale);
+ }
+ string_type transform(const charT* p1, const charT* p2) const
+ {
+ return ::boost::re_detail::w32_transform(this->m_pimpl->m_locale, p1, p2);
+ }
+ string_type transform_primary(const charT* p1, const charT* p2) const
+ {
+ return m_pimpl->transform_primary(p1, p2);
+ }
+ char_class_type lookup_classname(const charT* p1, const charT* p2) const
+ {
+ return m_pimpl->lookup_classname(p1, p2);
+ }
+ string_type lookup_collatename(const charT* p1, const charT* p2) const
+ {
+ return m_pimpl->lookup_collatename(p1, p2);
+ }
+ bool isctype(charT c, char_class_type f) const
+ {
+ if((f & re_detail::w32_regex_traits_implementation<charT>::mask_base)
+ && (this->m_pimpl->isctype(f & re_detail::w32_regex_traits_implementation<charT>::mask_base, c)))
+ return true;
+ else if((f & re_detail::w32_regex_traits_implementation<charT>::mask_unicode) && re_detail::is_extended(c))
+ return true;
+ else if((f & re_detail::w32_regex_traits_implementation<charT>::mask_word) && (c == '_'))
+ return true;
+ return false;
+ }
+ int toi(const charT*& p1, const charT* p2, int radix)const
+ {
+ return ::boost::re_detail::global_toi(p1, p2, radix, *this);
+ }
+ int value(charT c, int radix)const
+ {
+ int result = ::boost::re_detail::global_value(c);
+ return result < radix ? result : -1;
+ }
+ locale_type imbue(locale_type l)
+ {
+ ::boost::re_detail::lcid_type result(getloc());
+ m_pimpl = re_detail::create_w32_regex_traits<charT>(l);
+ return result;
+ }
+ locale_type getloc()const
+ {
+ return m_pimpl->m_locale;
+ }
+ std::string error_string(regex_constants::error_type n) const
+ {
+ return m_pimpl->error_string(n);
+ }
+
+ //
+ // extension:
+ // set the name of the message catalog in use (defaults to "boost_regex").
+ //
+ static std::string catalog_name(const std::string& name);
+ static std::string get_catalog_name();
+
+private:
+ boost::shared_ptr<const re_detail::w32_regex_traits_implementation<charT> > m_pimpl;
+ //
+ // catalog name handler:
+ //
+ static std::string& get_catalog_name_inst();
+
+#ifdef BOOST_HAS_THREADS
+ static static_mutex& get_mutex_inst();
+#endif
+};
+
+template <class charT>
+std::string w32_regex_traits<charT>::catalog_name(const std::string& name)
+{
+#ifdef BOOST_HAS_THREADS
+ static_mutex::scoped_lock lk(get_mutex_inst());
+#endif
+ std::string result(get_catalog_name_inst());
+ get_catalog_name_inst() = name;
+ return result;
+}
+
+template <class charT>
+std::string& w32_regex_traits<charT>::get_catalog_name_inst()
+{
+ static std::string s_name;
+ return s_name;
+}
+
+template <class charT>
+std::string w32_regex_traits<charT>::get_catalog_name()
+{
+#ifdef BOOST_HAS_THREADS
+ static_mutex::scoped_lock lk(get_mutex_inst());
+#endif
+ std::string result(get_catalog_name_inst());
+ return result;
+}
+
+#ifdef BOOST_HAS_THREADS
+template <class charT>
+static_mutex& w32_regex_traits<charT>::get_mutex_inst()
+{
+ static static_mutex s_mutex = BOOST_STATIC_MUTEX_INIT;
+ return s_mutex;
+}
+#endif
+
+
+} // boost
+
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+
+#endif

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/build/Jamfile.v2
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/build/Jamfile.v2 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,190 @@
+# copyright John Maddock 2003
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt.
+
+project boost/regex
+ : source-location ../src
+ ;
+
+#
+# ICU configuration:
+#
+local ICU_PATH = [ modules.peek : ICU_PATH ] ;
+rule check-icu-config ( )
+{
+ local ICU_PATH = [ modules.peek : ICU_PATH ] ;
+ local HAVE_ICU = [ modules.peek : HAVE_ICU ] ;
+ local ICU_LINK = [ modules.peek : ICU_LINK ] ;
+
+ if ! $(gICU_CONFIG_CHECKED)
+ {
+ if $(HAVE_ICU)
+ {
+ gHAS_ICU = true ;
+ gICU_CORE_LIB = icuuc ;
+ gICU_IN_LIB = icui18n ;
+ gICU_CONFIG_CHECKED = true ;
+ }
+ else if $(ICU_PATH)
+ {
+ dir = $(ICU_PATH) ;
+
+ if [ GLOB $(dir)/include/unicode : utypes.h ]
+ {
+ ECHO Building Boost.Regex with Unicode/ICU support enabled ;
+ ECHO Using ICU in $(ICU_PATH:J=" ")/include ;
+ gHAS_ICU = true ;
+
+ # try and find ICU libraries, look for NT versions first:
+ if $(ICU_LINK)
+ {
+ gICU_LIBS += <linkflags>$(ICU_LINK) ;
+ }
+ else if [ GLOB $(dir)/lib64 : icuuc.* ]
+ {
+ gICU_CORE_LIB = icuuc ;
+ }
+ else if [ GLOB $(dir)/lib : libicuuc.* ]
+ {
+ gICU_CORE_LIB = icuuc ;
+ }
+ else if [ GLOB $(dir)/lib : libicuuc.* ]
+ {
+ gICU_CORE_LIB = icuuc ;
+ }
+ else if [ GLOB $(ICU_PATH)/lib : cygicuuc.dll ]
+ {
+ gICU_CORE_LIB = cygicuuc.dll ;
+ }
+ else if [ GLOB $(ICU_PATH)/lib : cygicuuc32.dll ]
+ {
+ gICU_CORE_LIB = cygicuuc32.dll ;
+ }
+ else
+ {
+ ECHO WARNING: ICU shared common library not found in path. ;
+ ECHO HINT: If the regex library fails to link then try again ;
+ ECHO with the environment variable ICU_LINK set to contain ;
+ ECHO the linker options required to link to ICU. ;
+ ECHO Defaulting to look for libicuuc ... ;
+ gICU_CORE_LIB = icuuc ;
+ }
+
+ if $(ICU_LINK)
+ {
+ # nothing to do, it's already been done!
+ # gICU_LIBS += <linkflags>$(ICU_LINK) ;
+ }
+ else if [ GLOB $(dir)/lib : icuin.* ]
+ {
+ gICU_IN_LIB = icuin ;
+ }
+ else if [ GLOB $(dir)/lib64 : libicui18n.* ]
+ {
+ gICU_IN_LIB = icui18n ;
+ }
+ else if [ GLOB $(dir)/lib : libicui18n.* ]
+ {
+ gICU_IN_LIB = icui18n ;
+ }
+ else if [ GLOB $(ICU_PATH)/lib : cygicuin.dll ]
+ {
+ gICU_IN_LIB = cygicuin.dll ;
+ }
+ else if [ GLOB $(ICU_PATH)/lib : cygicuin32.dll ]
+ {
+ gICU_IN_LIB = cygicuin32.dll ;
+ }
+ else
+ {
+ ECHO WARNING: ICU shared i18n library not found in path. ;
+ ECHO HINT: If the regex library fails to link then try again ;
+ ECHO with the environment variable ICU_LINK set to contain ;
+ ECHO the linker options required to link to ICU. ;
+ ECHO Defaulting to look for libicui18n ... ;
+ gICU_IN_LIB = icui18n ;
+ }
+ }
+ }
+ gICU_CONFIG_CHECKED = true ;
+ }
+
+ if $(gHAS_ICU)
+ {
+ return true ;
+ }
+ else
+ {
+ ECHO Building Boost.Regex with the optional Unicode/ICU support disabled. ;
+ ECHO Please refer to the Boost.Regex documentation for more information ;
+ ECHO (don't panic: this is a strictly optional feature). ;
+ if $(ICU_PATH)
+ {
+ ECHO Couldn't find utypes.h in $(ICU_PATH:J=" ")/include/unicode ;
+ }
+ }
+}
+
+if [ check-icu-config ]
+{
+ BOOST_REGEX_ICU_OPTS = "<define>BOOST_HAS_ICU=1" ;
+
+ if $(ICU_PATH)
+ {
+ if $(ICU_PATH) != "/usr" && $(ICU_PATH) != "/usr/local"
+ {
+ BOOST_REGEX_ICU_OPTS += "<include>$(ICU_PATH)/include" ;
+ ICU_SEARCH_OPTS = <search>/$(ICU_PATH)/lib ;
+ }
+ }
+
+ if $(gICU_CORE_LIB)
+ {
+ lib icucore : : <name>$(gICU_CORE_LIB) $(ICU_SEARCH_OPTS) ;
+ ICU_EXTRA_SOURCE = icucore ;
+ }
+ if $(gICU_IN_LIB)
+ {
+ lib icuin : : <name>$(gICU_IN_LIB) $(ICU_SEARCH_OPTS) ;
+ ICU_EXTRA_SOURCE += icuin ;
+ }
+}
+
+SOURCES =
+ c_regex_traits.cpp
+ cpp_regex_traits.cpp
+ cregex.cpp
+ fileiter.cpp
+ icu.cpp
+ instances.cpp
+ posix_api.cpp
+ regex.cpp
+ regex_debug.cpp
+ regex_raw_buffer.cpp
+ regex_traits_defaults.cpp
+ static_mutex.cpp
+ w32_regex_traits.cpp
+ wc_regex_traits.cpp
+ wide_posix_api.cpp
+ winstances.cpp
+ usinstances.cpp ;
+
+
+lib boost_regex : ../src/$(SOURCES) $(ICU_EXTRA_SOURCE)
+ :
+ #<link>static:<define>BOOST_REGEX_NO_LIB=1
+ #<link>static:<define>BOOST_REGEX_STATIC_LINK=1
+ <link>shared:<define>BOOST_REGEX_DYN_LINK=1
+ <toolset>gcc-mw:<link>static
+ <toolset>gcc-mingw:<link>static
+ <toolset>gcc-cygwin:<link>static
+ $(BOOST_REGEX_ICU_OPTS)
+ ;
+
+
+
+
+
+
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/build/bc_gen.sh
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/build/bc_gen.sh 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,271 @@
+#! /bin/bash
+
+# copyright John Maddock 2003
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt.
+
+libname=""
+src=""
+header=""
+all_dep=""
+
+# current makefile:
+out=""
+# temporary file:
+tout=""
+# install target temp file:
+iout=""
+# debug flag:
+debug="no"
+# compile options:
+opts=""
+# main output sub-directory:
+subdir=""
+
+#######################################################################
+#
+# section for C++ Builder
+#
+#######################################################################
+
+function bcb_gen_lib()
+{
+ all_dep="$all_dep $subdir\\$libname $subdir\\$libname.lib"
+ echo " copy $subdir\\$libname.lib \$(BCROOT)\\lib" >> $iout
+#
+# set up section comments:
+ cat >> $tout << EOF
+########################################################
+#
+# section for $libname.lib
+#
+########################################################
+EOF
+#
+# process source files:
+ all_obj=""
+ all_lib_obj=""
+ for file in $src
+ do
+ obj=`echo "$file" | sed 's/.*src\/\(.*\)cpp/\1obj/g'`
+ obj="$subdir\\$libname\\$obj"
+ all_obj="$all_obj $obj"
+ all_lib_obj="$all_lib_obj +\"$obj\""
+ echo "$obj: $file \$(ALL_HEADER)" >> $tout
+ echo " bcc32 @&&|" >> $tout
+ echo "-c \$(INCLUDES) $opts \$(CXXFLAGS) -o$obj $file" >> $tout
+ echo "|" >> $tout
+ echo "" >> $tout
+ done
+#
+# now for the directories for this library:
+ echo "$subdir\\$libname : " >> $tout
+ echo " -_at_mkdir $subdir\\$libname" >> $tout
+ echo "" >> $tout
+#
+# now for the clean options for this library:
+ all_clean="$all_clean $libname""_clean"
+ echo "$libname"_clean : >> $tout
+ echo " del $subdir\\$libname\\"'*.obj' >> $tout
+ echo " del $subdir\\$libname\\"'*.il?' >> $tout
+ echo " del $subdir\\$libname\\"'*.csm' >> $tout
+ echo " del $subdir\\$libname\\"'*.tds' >> $tout
+ echo "" >> $tout
+#
+# now for the main target for this library:
+ echo $subdir\\$libname.lib : $all_obj >> $tout
+ echo " if exist $subdir\\$libname.lib del $subdir\\$libname.lib " >> $tout
+ echo " tlib @&&|" >> $tout
+ echo "/P128 /C /u /a \$(XSFLAGS) \"$subdir\\$libname.lib\" $all_lib_obj" >> $tout
+ echo "|" >> $tout
+ echo "" >> $tout
+}
+
+function bcb_gen_dll()
+{
+ all_dep="$all_dep $subdir\\$libname $subdir\\$libname.lib"
+ echo " copy $subdir\\$libname.lib \$(BCROOT)\\lib" >> $iout
+ echo " copy $subdir\\$libname.dll \$(BCROOT)\\bin" >> $iout
+ echo " copy $subdir\\$libname.tds \$(BCROOT)\\bin" >> $iout
+#
+# set up section comments:
+ cat >> $tout << EOF
+########################################################
+#
+# section for $libname.lib
+#
+########################################################
+EOF
+#
+# process source files:
+ all_obj=""
+ for file in $src
+ do
+ obj=`echo "$file" | sed 's/.*src\/\(.*\)cpp/\1obj/g'`
+ obj="$subdir\\$libname\\$obj"
+ all_obj="$all_obj $obj"
+ echo "$obj: $file \$(ALL_HEADER)" >> $tout
+ echo " bcc32 @&&|" >> $tout
+ echo "-c \$(INCLUDES) $opts \$(CXXFLAGS) -DBOOST_REGEX_DYN_LINK -o$obj $file" >> $tout
+ echo "|" >> $tout
+ echo "" >> $tout
+ done
+#
+# now for the directories for this library:
+ echo "$subdir\\$libname :" >> $tout
+ echo " -_at_mkdir $subdir\\$libname" >> $tout
+ echo "" >> $tout
+#
+# now for the clean options for this library:
+ all_clean="$all_clean $libname""_clean"
+ echo "$libname"_clean : >> $tout
+ echo " del $subdir\\$libname\\"'*.obj' >> $tout
+ echo " del $subdir\\$libname\\"'*.il?' >> $tout
+ echo " del $subdir\\$libname\\"'*.csm' >> $tout
+ echo " del $subdir\\$libname\\"'*.tds' >> $tout
+ echo " del $subdir\\"'*.tds' >> $tout
+ echo "" >> $tout
+#
+# now for the main target for this library:
+ echo $subdir\\$libname.lib : $all_obj >> $tout
+ echo " bcc32 @&&|" >> $tout
+ echo "-lw-dup -lw-dpl $opts -e$subdir\\$libname.dll \$(XLFLAGS) $all_obj \$(LIBS)" >> $tout
+ echo "|" >> $tout
+ echo " implib -w $subdir\\$libname.lib $subdir\\$libname.dll" >> $tout
+ echo "" >> $tout
+}
+
+
+
+function bcb_gen()
+{
+ tout="temp"
+ iout="temp_install"
+ all_dep="$subdir"
+ all_clean=""
+ echo > $out
+ echo > $tout
+ rm -f $iout
+
+ libname="libboost_regex-${subdir}-s-${boost_version}"
+ opts="-tWM- -D_NO_VCL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8037 -w-8057 -DSTRICT; -I\$(BCROOT)\include;../../../"
+ bcb_gen_lib
+
+ libname="libboost_regex-${subdir}-mt-s-${boost_version}"
+ opts="-tWM -D_NO_VCL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I\$(BCROOT)\include;../../../"
+ bcb_gen_lib
+
+ libname="boost_regex-${subdir}-mt-${boost_version}"
+ opts="-tWD -tWM -tWR -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I\$(BCROOT)\include;../../../ -L\$(BCROOT)\lib;\$(BCROOT)\lib\release;"
+ bcb_gen_dll
+
+ libname="boost_regex-${subdir}-${boost_version}"
+ opts="-tWD -tWR -tWM- -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I\$(BCROOT)\include;../../../ -L\$(BCROOT)\lib;\$(BCROOT)\lib\release;"
+ bcb_gen_dll
+
+ libname="libboost_regex-${subdir}-mt-${boost_version}"
+ opts="-tWD -tWM -tWR -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I\$(BCROOT)\include;../../../ -L\$(BCROOT)\lib;\$(BCROOT)\lib\release;"
+ bcb_gen_lib
+
+ libname="libboost_regex-${subdir}-${boost_version}"
+ opts="-tWD -tWR -tWM- -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I\$(BCROOT)\include;../../../ -L\$(BCROOT)\lib;\$(BCROOT)\lib\release;"
+ bcb_gen_lib
+
+ libname="libboost_regex-${subdir}-sd-${boost_version}"
+ opts="-tWM- -D_NO_VCL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8037 -w-8057 -DSTRICT; -I\$(BCROOT)\include;../../../"
+ bcb_gen_lib
+
+ libname="libboost_regex-${subdir}-mt-sd-${boost_version}"
+ opts="-tWM -D_NO_VCL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I\$(BCROOT)\include;../../../"
+ bcb_gen_lib
+
+ libname="boost_regex-${subdir}-mt-d-${boost_version}"
+ opts="-tWD -tWM -tWR -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I\$(BCROOT)\include;../../../ -L\$(BCROOT)\lib;\$(BCROOT)\lib\release;"
+ bcb_gen_dll
+
+ libname="boost_regex-${subdir}-d-${boost_version}"
+ opts="-tWD -tWR -tWM- -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I\$(BCROOT)\include;../../../ -L\$(BCROOT)\lib;\$(BCROOT)\lib\release;"
+ bcb_gen_dll
+
+ libname="libboost_regex-${subdir}-mt-d-${boost_version}"
+ opts="-tWD -tWM -tWR -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I\$(BCROOT)\include;../../../ -L\$(BCROOT)\lib;\$(BCROOT)\lib\release;"
+ bcb_gen_lib
+
+ libname="libboost_regex-${subdir}-d-${boost_version}"
+ opts="-tWD -tWR -tWM- -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I\$(BCROOT)\include;../../../ -L\$(BCROOT)\lib;\$(BCROOT)\lib\release;"
+ bcb_gen_lib
+
+ cat > $out << EOF
+# copyright John Maddock 2006
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt.
+#
+# auto generated makefile for C++ Builder
+#
+# usage:
+# make
+# brings libraries up to date
+# make install
+# brings libraries up to date and copies binaries to your C++ Builder /lib and /bin directories (recomended)
+# make clean
+# removes all temporary files.
+
+#
+# Add additional compiler options here:
+#
+CXXFLAGS=
+#
+# Add additional include directories here:
+#
+INCLUDES=
+#
+# add additional linker flags here:
+#
+XLFLAGS=
+#
+# add additional libraries to link to here:
+#
+LIBS=
+#
+# add additional static-library creation flags here:
+#
+XSFLAGS=
+
+!ifndef BCROOT
+BCROOT=\$(MAKEDIR)\\..
+!endif
+
+EOF
+ echo "" >> $out
+ echo "ALL_HEADER=$header" >> $out
+ echo "" >> $out
+ echo "all : $all_dep" >> $out
+ echo >> $out
+ echo "clean : $all_clean" >> $out
+ echo >> $out
+ echo "install : all" >> $out
+ cat $iout >> $out
+ echo >> $out
+ echo $subdir : >> $out
+ echo " -_at_mkdir $subdir" >> $out
+ echo "" >> $out
+
+ cat $tout >> $out
+}
+
+. common.sh
+
+#
+# generate C++ Builder 6 files:
+out="bcb6.mak"
+subdir="bcb"
+has_stlport="yes"
+bcb_gen
+
+
+
+
+
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/build/bcb6.mak
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/build/bcb6.mak 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,1337 @@
+# copyright John Maddock 2006
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt.
+#
+# auto generated makefile for C++ Builder
+#
+# usage:
+# make
+# brings libraries up to date
+# make install
+# brings libraries up to date and copies binaries to your C++ Builder /lib and /bin directories (recomended)
+# make clean
+# removes all temporary files.
+
+#
+# Add additional compiler options here:
+#
+CXXFLAGS=
+#
+# Add additional include directories here:
+#
+INCLUDES=
+#
+# add additional linker flags here:
+#
+XLFLAGS=
+#
+# add additional libraries to link to here:
+#
+LIBS=
+#
+# add additional static-library creation flags here:
+#
+XSFLAGS=
+
+!ifndef BCROOT
+BCROOT=$(MAKEDIR)\..
+!endif
+
+
+ALL_HEADER= ../../../boost/regex/concepts.hpp ../../../boost/regex/config.hpp ../../../boost/regex/icu.hpp ../../../boost/regex/mfc.hpp ../../../boost/regex/pattern_except.hpp ../../../boost/regex/regex_traits.hpp ../../../boost/regex/user.hpp ../../../boost/regex/v4/basic_regex.hpp ../../../boost/regex/v4/basic_regex_creator.hpp ../../../boost/regex/v4/basic_regex_parser.hpp ../../../boost/regex/v4/c_regex_traits.hpp ../../../boost/regex/v4/char_regex_traits.hpp ../../../boost/regex/v4/cpp_regex_traits.hpp ../../../boost/regex/v4/cregex.hpp ../../../boost/regex/v4/error_type.hpp ../../../boost/regex/v4/fileiter.hpp ../../../boost/regex/v4/instances.hpp ../../../boost/regex/v4/iterator_category.hpp ../../../boost/regex/v4/iterator_traits.hpp ../../../boost/regex/v4/match_flags.hpp ../../../boost/regex/v4/match_results.hpp ../../../boost/regex/v4/mem_block_cache.hpp ../../../boost/regex/v4/perl_matcher.hpp ../../../boost/regex/v4/perl_matcher_common.hpp ../../../boost/regex/v4/perl_matcher_non_recursive.hpp
../../../boost/regex/v4/perl_matcher_recursive.hpp ../../../boost/regex/v4/primary_transform.hpp ../../../boost/regex/v4/protected_call.hpp ../../../boost/regex/v4/regbase.hpp ../../../boost/regex/v4/regex.hpp ../../../boost/regex/v4/regex_cstring.hpp ../../../boost/regex/v4/regex_format.hpp ../../../boost/regex/v4/regex_fwd.hpp ../../../boost/regex/v4/regex_grep.hpp ../../../boost/regex/v4/regex_iterator.hpp ../../../boost/regex/v4/regex_kmp.hpp ../../../boost/regex/v4/regex_match.hpp ../../../boost/regex/v4/regex_merge.hpp ../../../boost/regex/v4/regex_raw_buffer.hpp ../../../boost/regex/v4/regex_replace.hpp ../../../boost/regex/v4/regex_search.hpp ../../../boost/regex/v4/regex_split.hpp ../../../boost/regex/v4/regex_stack.hpp ../../../boost/regex/v4/regex_token_iterator.hpp ../../../boost/regex/v4/regex_traits.hpp ../../../boost/regex/v4/regex_traits_defaults.hpp ../../../boost/regex/v4/regex_workaround.hpp ../../../boost/regex/v4/states.hpp ../../../boost/regex/v4/sub_match.hpp ../../../boost/regex/v4/sy
ntax_type.hpp ../../../boost/regex/v4/u32regex_iterator.hpp ../../../boost/regex/v4/u32regex_token_iterator.hpp ../../../boost/regex/v4/w32_regex_traits.hpp ../../../boost/regex/config/borland.hpp ../../../boost/regex/config/cwchar.hpp
+
+all : bcb bcb\libboost_regex-bcb-s-1_34 bcb\libboost_regex-bcb-s-1_34.lib bcb\libboost_regex-bcb-mt-s-1_34 bcb\libboost_regex-bcb-mt-s-1_34.lib bcb\boost_regex-bcb-mt-1_34 bcb\boost_regex-bcb-mt-1_34.lib bcb\boost_regex-bcb-1_34 bcb\boost_regex-bcb-1_34.lib bcb\libboost_regex-bcb-mt-1_34 bcb\libboost_regex-bcb-mt-1_34.lib bcb\libboost_regex-bcb-1_34 bcb\libboost_regex-bcb-1_34.lib bcb\libboost_regex-bcb-sd-1_34 bcb\libboost_regex-bcb-sd-1_34.lib bcb\libboost_regex-bcb-mt-sd-1_34 bcb\libboost_regex-bcb-mt-sd-1_34.lib bcb\boost_regex-bcb-mt-d-1_34 bcb\boost_regex-bcb-mt-d-1_34.lib bcb\boost_regex-bcb-d-1_34 bcb\boost_regex-bcb-d-1_34.lib bcb\libboost_regex-bcb-mt-d-1_34 bcb\libboost_regex-bcb-mt-d-1_34.lib bcb\libboost_regex-bcb-d-1_34 bcb\libboost_regex-bcb-d-1_34.lib
+
+clean : libboost_regex-bcb-s-1_34_clean libboost_regex-bcb-mt-s-1_34_clean boost_regex-bcb-mt-1_34_clean boost_regex-bcb-1_34_clean libboost_regex-bcb-mt-1_34_clean libboost_regex-bcb-1_34_clean libboost_regex-bcb-sd-1_34_clean libboost_regex-bcb-mt-sd-1_34_clean boost_regex-bcb-mt-d-1_34_clean boost_regex-bcb-d-1_34_clean libboost_regex-bcb-mt-d-1_34_clean libboost_regex-bcb-d-1_34_clean
+
+install : all
+ copy bcb\libboost_regex-bcb-s-1_34.lib $(BCROOT)\lib
+ copy bcb\libboost_regex-bcb-mt-s-1_34.lib $(BCROOT)\lib
+ copy bcb\boost_regex-bcb-mt-1_34.lib $(BCROOT)\lib
+ copy bcb\boost_regex-bcb-mt-1_34.dll $(BCROOT)\bin
+ copy bcb\boost_regex-bcb-mt-1_34.tds $(BCROOT)\bin
+ copy bcb\boost_regex-bcb-1_34.lib $(BCROOT)\lib
+ copy bcb\boost_regex-bcb-1_34.dll $(BCROOT)\bin
+ copy bcb\boost_regex-bcb-1_34.tds $(BCROOT)\bin
+ copy bcb\libboost_regex-bcb-mt-1_34.lib $(BCROOT)\lib
+ copy bcb\libboost_regex-bcb-1_34.lib $(BCROOT)\lib
+ copy bcb\libboost_regex-bcb-sd-1_34.lib $(BCROOT)\lib
+ copy bcb\libboost_regex-bcb-mt-sd-1_34.lib $(BCROOT)\lib
+ copy bcb\boost_regex-bcb-mt-d-1_34.lib $(BCROOT)\lib
+ copy bcb\boost_regex-bcb-mt-d-1_34.dll $(BCROOT)\bin
+ copy bcb\boost_regex-bcb-mt-d-1_34.tds $(BCROOT)\bin
+ copy bcb\boost_regex-bcb-d-1_34.lib $(BCROOT)\lib
+ copy bcb\boost_regex-bcb-d-1_34.dll $(BCROOT)\bin
+ copy bcb\boost_regex-bcb-d-1_34.tds $(BCROOT)\bin
+ copy bcb\libboost_regex-bcb-mt-d-1_34.lib $(BCROOT)\lib
+ copy bcb\libboost_regex-bcb-d-1_34.lib $(BCROOT)\lib
+
+bcb :
+ -_at_mkdir bcb
+
+
+########################################################
+#
+# section for libboost_regex-bcb-s-1_34.lib
+#
+########################################################
+bcb\libboost_regex-bcb-s-1_34\c_regex_traits.obj: ../src/c_regex_traits.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWM- -D_NO_VCL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8037 -w-8057 -DSTRICT; -I$(BCROOT)\include;../../../ $(CXXFLAGS) -obcb\libboost_regex-bcb-s-1_34\c_regex_traits.obj ../src/c_regex_traits.cpp
+|
+
+bcb\libboost_regex-bcb-s-1_34\cpp_regex_traits.obj: ../src/cpp_regex_traits.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWM- -D_NO_VCL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8037 -w-8057 -DSTRICT; -I$(BCROOT)\include;../../../ $(CXXFLAGS) -obcb\libboost_regex-bcb-s-1_34\cpp_regex_traits.obj ../src/cpp_regex_traits.cpp
+|
+
+bcb\libboost_regex-bcb-s-1_34\cregex.obj: ../src/cregex.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWM- -D_NO_VCL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8037 -w-8057 -DSTRICT; -I$(BCROOT)\include;../../../ $(CXXFLAGS) -obcb\libboost_regex-bcb-s-1_34\cregex.obj ../src/cregex.cpp
+|
+
+bcb\libboost_regex-bcb-s-1_34\fileiter.obj: ../src/fileiter.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWM- -D_NO_VCL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8037 -w-8057 -DSTRICT; -I$(BCROOT)\include;../../../ $(CXXFLAGS) -obcb\libboost_regex-bcb-s-1_34\fileiter.obj ../src/fileiter.cpp
+|
+
+bcb\libboost_regex-bcb-s-1_34\icu.obj: ../src/icu.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWM- -D_NO_VCL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8037 -w-8057 -DSTRICT; -I$(BCROOT)\include;../../../ $(CXXFLAGS) -obcb\libboost_regex-bcb-s-1_34\icu.obj ../src/icu.cpp
+|
+
+bcb\libboost_regex-bcb-s-1_34\instances.obj: ../src/instances.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWM- -D_NO_VCL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8037 -w-8057 -DSTRICT; -I$(BCROOT)\include;../../../ $(CXXFLAGS) -obcb\libboost_regex-bcb-s-1_34\instances.obj ../src/instances.cpp
+|
+
+bcb\libboost_regex-bcb-s-1_34\posix_api.obj: ../src/posix_api.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWM- -D_NO_VCL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8037 -w-8057 -DSTRICT; -I$(BCROOT)\include;../../../ $(CXXFLAGS) -obcb\libboost_regex-bcb-s-1_34\posix_api.obj ../src/posix_api.cpp
+|
+
+bcb\libboost_regex-bcb-s-1_34\regex.obj: ../src/regex.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWM- -D_NO_VCL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8037 -w-8057 -DSTRICT; -I$(BCROOT)\include;../../../ $(CXXFLAGS) -obcb\libboost_regex-bcb-s-1_34\regex.obj ../src/regex.cpp
+|
+
+bcb\libboost_regex-bcb-s-1_34\regex_debug.obj: ../src/regex_debug.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWM- -D_NO_VCL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8037 -w-8057 -DSTRICT; -I$(BCROOT)\include;../../../ $(CXXFLAGS) -obcb\libboost_regex-bcb-s-1_34\regex_debug.obj ../src/regex_debug.cpp
+|
+
+bcb\libboost_regex-bcb-s-1_34\regex_raw_buffer.obj: ../src/regex_raw_buffer.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWM- -D_NO_VCL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8037 -w-8057 -DSTRICT; -I$(BCROOT)\include;../../../ $(CXXFLAGS) -obcb\libboost_regex-bcb-s-1_34\regex_raw_buffer.obj ../src/regex_raw_buffer.cpp
+|
+
+bcb\libboost_regex-bcb-s-1_34\regex_traits_defaults.obj: ../src/regex_traits_defaults.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWM- -D_NO_VCL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8037 -w-8057 -DSTRICT; -I$(BCROOT)\include;../../../ $(CXXFLAGS) -obcb\libboost_regex-bcb-s-1_34\regex_traits_defaults.obj ../src/regex_traits_defaults.cpp
+|
+
+bcb\libboost_regex-bcb-s-1_34\static_mutex.obj: ../src/static_mutex.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWM- -D_NO_VCL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8037 -w-8057 -DSTRICT; -I$(BCROOT)\include;../../../ $(CXXFLAGS) -obcb\libboost_regex-bcb-s-1_34\static_mutex.obj ../src/static_mutex.cpp
+|
+
+bcb\libboost_regex-bcb-s-1_34\usinstances.obj: ../src/usinstances.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWM- -D_NO_VCL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8037 -w-8057 -DSTRICT; -I$(BCROOT)\include;../../../ $(CXXFLAGS) -obcb\libboost_regex-bcb-s-1_34\usinstances.obj ../src/usinstances.cpp
+|
+
+bcb\libboost_regex-bcb-s-1_34\w32_regex_traits.obj: ../src/w32_regex_traits.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWM- -D_NO_VCL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8037 -w-8057 -DSTRICT; -I$(BCROOT)\include;../../../ $(CXXFLAGS) -obcb\libboost_regex-bcb-s-1_34\w32_regex_traits.obj ../src/w32_regex_traits.cpp
+|
+
+bcb\libboost_regex-bcb-s-1_34\wc_regex_traits.obj: ../src/wc_regex_traits.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWM- -D_NO_VCL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8037 -w-8057 -DSTRICT; -I$(BCROOT)\include;../../../ $(CXXFLAGS) -obcb\libboost_regex-bcb-s-1_34\wc_regex_traits.obj ../src/wc_regex_traits.cpp
+|
+
+bcb\libboost_regex-bcb-s-1_34\wide_posix_api.obj: ../src/wide_posix_api.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWM- -D_NO_VCL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8037 -w-8057 -DSTRICT; -I$(BCROOT)\include;../../../ $(CXXFLAGS) -obcb\libboost_regex-bcb-s-1_34\wide_posix_api.obj ../src/wide_posix_api.cpp
+|
+
+bcb\libboost_regex-bcb-s-1_34\winstances.obj: ../src/winstances.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWM- -D_NO_VCL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8037 -w-8057 -DSTRICT; -I$(BCROOT)\include;../../../ $(CXXFLAGS) -obcb\libboost_regex-bcb-s-1_34\winstances.obj ../src/winstances.cpp
+|
+
+bcb\libboost_regex-bcb-s-1_34 :
+ -_at_mkdir bcb\libboost_regex-bcb-s-1_34
+
+libboost_regex-bcb-s-1_34_clean :
+ del bcb\libboost_regex-bcb-s-1_34\*.obj
+ del bcb\libboost_regex-bcb-s-1_34\*.il?
+ del bcb\libboost_regex-bcb-s-1_34\*.csm
+ del bcb\libboost_regex-bcb-s-1_34\*.tds
+
+bcb\libboost_regex-bcb-s-1_34.lib : bcb\libboost_regex-bcb-s-1_34\c_regex_traits.obj bcb\libboost_regex-bcb-s-1_34\cpp_regex_traits.obj bcb\libboost_regex-bcb-s-1_34\cregex.obj bcb\libboost_regex-bcb-s-1_34\fileiter.obj bcb\libboost_regex-bcb-s-1_34\icu.obj bcb\libboost_regex-bcb-s-1_34\instances.obj bcb\libboost_regex-bcb-s-1_34\posix_api.obj bcb\libboost_regex-bcb-s-1_34\regex.obj bcb\libboost_regex-bcb-s-1_34\regex_debug.obj bcb\libboost_regex-bcb-s-1_34\regex_raw_buffer.obj bcb\libboost_regex-bcb-s-1_34\regex_traits_defaults.obj bcb\libboost_regex-bcb-s-1_34\static_mutex.obj bcb\libboost_regex-bcb-s-1_34\usinstances.obj bcb\libboost_regex-bcb-s-1_34\w32_regex_traits.obj bcb\libboost_regex-bcb-s-1_34\wc_regex_traits.obj bcb\libboost_regex-bcb-s-1_34\wide_posix_api.obj bcb\libboost_regex-bcb-s-1_34\winstances.obj
+ if exist bcb\libboost_regex-bcb-s-1_34.lib del bcb\libboost_regex-bcb-s-1_34.lib
+ tlib @&&|
+/P128 /C /u /a $(XSFLAGS) "bcb\libboost_regex-bcb-s-1_34.lib" +"bcb\libboost_regex-bcb-s-1_34\c_regex_traits.obj" +"bcb\libboost_regex-bcb-s-1_34\cpp_regex_traits.obj" +"bcb\libboost_regex-bcb-s-1_34\cregex.obj" +"bcb\libboost_regex-bcb-s-1_34\fileiter.obj" +"bcb\libboost_regex-bcb-s-1_34\icu.obj" +"bcb\libboost_regex-bcb-s-1_34\instances.obj" +"bcb\libboost_regex-bcb-s-1_34\posix_api.obj" +"bcb\libboost_regex-bcb-s-1_34\regex.obj" +"bcb\libboost_regex-bcb-s-1_34\regex_debug.obj" +"bcb\libboost_regex-bcb-s-1_34\regex_raw_buffer.obj" +"bcb\libboost_regex-bcb-s-1_34\regex_traits_defaults.obj" +"bcb\libboost_regex-bcb-s-1_34\static_mutex.obj" +"bcb\libboost_regex-bcb-s-1_34\usinstances.obj" +"bcb\libboost_regex-bcb-s-1_34\w32_regex_traits.obj" +"bcb\libboost_regex-bcb-s-1_34\wc_regex_traits.obj" +"bcb\libboost_regex-bcb-s-1_34\wide_posix_api.obj" +"bcb\libboost_regex-bcb-s-1_34\winstances.obj"
+|
+
+########################################################
+#
+# section for libboost_regex-bcb-mt-s-1_34.lib
+#
+########################################################
+bcb\libboost_regex-bcb-mt-s-1_34\c_regex_traits.obj: ../src/c_regex_traits.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWM -D_NO_VCL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ $(CXXFLAGS) -obcb\libboost_regex-bcb-mt-s-1_34\c_regex_traits.obj ../src/c_regex_traits.cpp
+|
+
+bcb\libboost_regex-bcb-mt-s-1_34\cpp_regex_traits.obj: ../src/cpp_regex_traits.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWM -D_NO_VCL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ $(CXXFLAGS) -obcb\libboost_regex-bcb-mt-s-1_34\cpp_regex_traits.obj ../src/cpp_regex_traits.cpp
+|
+
+bcb\libboost_regex-bcb-mt-s-1_34\cregex.obj: ../src/cregex.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWM -D_NO_VCL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ $(CXXFLAGS) -obcb\libboost_regex-bcb-mt-s-1_34\cregex.obj ../src/cregex.cpp
+|
+
+bcb\libboost_regex-bcb-mt-s-1_34\fileiter.obj: ../src/fileiter.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWM -D_NO_VCL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ $(CXXFLAGS) -obcb\libboost_regex-bcb-mt-s-1_34\fileiter.obj ../src/fileiter.cpp
+|
+
+bcb\libboost_regex-bcb-mt-s-1_34\icu.obj: ../src/icu.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWM -D_NO_VCL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ $(CXXFLAGS) -obcb\libboost_regex-bcb-mt-s-1_34\icu.obj ../src/icu.cpp
+|
+
+bcb\libboost_regex-bcb-mt-s-1_34\instances.obj: ../src/instances.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWM -D_NO_VCL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ $(CXXFLAGS) -obcb\libboost_regex-bcb-mt-s-1_34\instances.obj ../src/instances.cpp
+|
+
+bcb\libboost_regex-bcb-mt-s-1_34\posix_api.obj: ../src/posix_api.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWM -D_NO_VCL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ $(CXXFLAGS) -obcb\libboost_regex-bcb-mt-s-1_34\posix_api.obj ../src/posix_api.cpp
+|
+
+bcb\libboost_regex-bcb-mt-s-1_34\regex.obj: ../src/regex.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWM -D_NO_VCL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ $(CXXFLAGS) -obcb\libboost_regex-bcb-mt-s-1_34\regex.obj ../src/regex.cpp
+|
+
+bcb\libboost_regex-bcb-mt-s-1_34\regex_debug.obj: ../src/regex_debug.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWM -D_NO_VCL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ $(CXXFLAGS) -obcb\libboost_regex-bcb-mt-s-1_34\regex_debug.obj ../src/regex_debug.cpp
+|
+
+bcb\libboost_regex-bcb-mt-s-1_34\regex_raw_buffer.obj: ../src/regex_raw_buffer.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWM -D_NO_VCL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ $(CXXFLAGS) -obcb\libboost_regex-bcb-mt-s-1_34\regex_raw_buffer.obj ../src/regex_raw_buffer.cpp
+|
+
+bcb\libboost_regex-bcb-mt-s-1_34\regex_traits_defaults.obj: ../src/regex_traits_defaults.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWM -D_NO_VCL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ $(CXXFLAGS) -obcb\libboost_regex-bcb-mt-s-1_34\regex_traits_defaults.obj ../src/regex_traits_defaults.cpp
+|
+
+bcb\libboost_regex-bcb-mt-s-1_34\static_mutex.obj: ../src/static_mutex.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWM -D_NO_VCL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ $(CXXFLAGS) -obcb\libboost_regex-bcb-mt-s-1_34\static_mutex.obj ../src/static_mutex.cpp
+|
+
+bcb\libboost_regex-bcb-mt-s-1_34\usinstances.obj: ../src/usinstances.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWM -D_NO_VCL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ $(CXXFLAGS) -obcb\libboost_regex-bcb-mt-s-1_34\usinstances.obj ../src/usinstances.cpp
+|
+
+bcb\libboost_regex-bcb-mt-s-1_34\w32_regex_traits.obj: ../src/w32_regex_traits.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWM -D_NO_VCL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ $(CXXFLAGS) -obcb\libboost_regex-bcb-mt-s-1_34\w32_regex_traits.obj ../src/w32_regex_traits.cpp
+|
+
+bcb\libboost_regex-bcb-mt-s-1_34\wc_regex_traits.obj: ../src/wc_regex_traits.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWM -D_NO_VCL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ $(CXXFLAGS) -obcb\libboost_regex-bcb-mt-s-1_34\wc_regex_traits.obj ../src/wc_regex_traits.cpp
+|
+
+bcb\libboost_regex-bcb-mt-s-1_34\wide_posix_api.obj: ../src/wide_posix_api.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWM -D_NO_VCL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ $(CXXFLAGS) -obcb\libboost_regex-bcb-mt-s-1_34\wide_posix_api.obj ../src/wide_posix_api.cpp
+|
+
+bcb\libboost_regex-bcb-mt-s-1_34\winstances.obj: ../src/winstances.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWM -D_NO_VCL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ $(CXXFLAGS) -obcb\libboost_regex-bcb-mt-s-1_34\winstances.obj ../src/winstances.cpp
+|
+
+bcb\libboost_regex-bcb-mt-s-1_34 :
+ -_at_mkdir bcb\libboost_regex-bcb-mt-s-1_34
+
+libboost_regex-bcb-mt-s-1_34_clean :
+ del bcb\libboost_regex-bcb-mt-s-1_34\*.obj
+ del bcb\libboost_regex-bcb-mt-s-1_34\*.il?
+ del bcb\libboost_regex-bcb-mt-s-1_34\*.csm
+ del bcb\libboost_regex-bcb-mt-s-1_34\*.tds
+
+bcb\libboost_regex-bcb-mt-s-1_34.lib : bcb\libboost_regex-bcb-mt-s-1_34\c_regex_traits.obj bcb\libboost_regex-bcb-mt-s-1_34\cpp_regex_traits.obj bcb\libboost_regex-bcb-mt-s-1_34\cregex.obj bcb\libboost_regex-bcb-mt-s-1_34\fileiter.obj bcb\libboost_regex-bcb-mt-s-1_34\icu.obj bcb\libboost_regex-bcb-mt-s-1_34\instances.obj bcb\libboost_regex-bcb-mt-s-1_34\posix_api.obj bcb\libboost_regex-bcb-mt-s-1_34\regex.obj bcb\libboost_regex-bcb-mt-s-1_34\regex_debug.obj bcb\libboost_regex-bcb-mt-s-1_34\regex_raw_buffer.obj bcb\libboost_regex-bcb-mt-s-1_34\regex_traits_defaults.obj bcb\libboost_regex-bcb-mt-s-1_34\static_mutex.obj bcb\libboost_regex-bcb-mt-s-1_34\usinstances.obj bcb\libboost_regex-bcb-mt-s-1_34\w32_regex_traits.obj bcb\libboost_regex-bcb-mt-s-1_34\wc_regex_traits.obj bcb\libboost_regex-bcb-mt-s-1_34\wide_posix_api.obj bcb\libboost_regex-bcb-mt-s-1_34\winstances.obj
+ if exist bcb\libboost_regex-bcb-mt-s-1_34.lib del bcb\libboost_regex-bcb-mt-s-1_34.lib
+ tlib @&&|
+/P128 /C /u /a $(XSFLAGS) "bcb\libboost_regex-bcb-mt-s-1_34.lib" +"bcb\libboost_regex-bcb-mt-s-1_34\c_regex_traits.obj" +"bcb\libboost_regex-bcb-mt-s-1_34\cpp_regex_traits.obj" +"bcb\libboost_regex-bcb-mt-s-1_34\cregex.obj" +"bcb\libboost_regex-bcb-mt-s-1_34\fileiter.obj" +"bcb\libboost_regex-bcb-mt-s-1_34\icu.obj" +"bcb\libboost_regex-bcb-mt-s-1_34\instances.obj" +"bcb\libboost_regex-bcb-mt-s-1_34\posix_api.obj" +"bcb\libboost_regex-bcb-mt-s-1_34\regex.obj" +"bcb\libboost_regex-bcb-mt-s-1_34\regex_debug.obj" +"bcb\libboost_regex-bcb-mt-s-1_34\regex_raw_buffer.obj" +"bcb\libboost_regex-bcb-mt-s-1_34\regex_traits_defaults.obj" +"bcb\libboost_regex-bcb-mt-s-1_34\static_mutex.obj" +"bcb\libboost_regex-bcb-mt-s-1_34\usinstances.obj" +"bcb\libboost_regex-bcb-mt-s-1_34\w32_regex_traits.obj" +"bcb\libboost_regex-bcb-mt-s-1_34\wc_regex_traits.obj" +"bcb\libboost_regex-bcb-mt-s-1_34\wide_posix_api.obj" +"bcb\libboost_regex-bcb-mt-s-1_34\winstances.obj"
+|
+
+########################################################
+#
+# section for boost_regex-bcb-mt-1_34.lib
+#
+########################################################
+bcb\boost_regex-bcb-mt-1_34\c_regex_traits.obj: ../src/c_regex_traits.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWM -tWR -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -DBOOST_REGEX_DYN_LINK -obcb\boost_regex-bcb-mt-1_34\c_regex_traits.obj ../src/c_regex_traits.cpp
+|
+
+bcb\boost_regex-bcb-mt-1_34\cpp_regex_traits.obj: ../src/cpp_regex_traits.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWM -tWR -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -DBOOST_REGEX_DYN_LINK -obcb\boost_regex-bcb-mt-1_34\cpp_regex_traits.obj ../src/cpp_regex_traits.cpp
+|
+
+bcb\boost_regex-bcb-mt-1_34\cregex.obj: ../src/cregex.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWM -tWR -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -DBOOST_REGEX_DYN_LINK -obcb\boost_regex-bcb-mt-1_34\cregex.obj ../src/cregex.cpp
+|
+
+bcb\boost_regex-bcb-mt-1_34\fileiter.obj: ../src/fileiter.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWM -tWR -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -DBOOST_REGEX_DYN_LINK -obcb\boost_regex-bcb-mt-1_34\fileiter.obj ../src/fileiter.cpp
+|
+
+bcb\boost_regex-bcb-mt-1_34\icu.obj: ../src/icu.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWM -tWR -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -DBOOST_REGEX_DYN_LINK -obcb\boost_regex-bcb-mt-1_34\icu.obj ../src/icu.cpp
+|
+
+bcb\boost_regex-bcb-mt-1_34\instances.obj: ../src/instances.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWM -tWR -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -DBOOST_REGEX_DYN_LINK -obcb\boost_regex-bcb-mt-1_34\instances.obj ../src/instances.cpp
+|
+
+bcb\boost_regex-bcb-mt-1_34\posix_api.obj: ../src/posix_api.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWM -tWR -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -DBOOST_REGEX_DYN_LINK -obcb\boost_regex-bcb-mt-1_34\posix_api.obj ../src/posix_api.cpp
+|
+
+bcb\boost_regex-bcb-mt-1_34\regex.obj: ../src/regex.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWM -tWR -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -DBOOST_REGEX_DYN_LINK -obcb\boost_regex-bcb-mt-1_34\regex.obj ../src/regex.cpp
+|
+
+bcb\boost_regex-bcb-mt-1_34\regex_debug.obj: ../src/regex_debug.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWM -tWR -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -DBOOST_REGEX_DYN_LINK -obcb\boost_regex-bcb-mt-1_34\regex_debug.obj ../src/regex_debug.cpp
+|
+
+bcb\boost_regex-bcb-mt-1_34\regex_raw_buffer.obj: ../src/regex_raw_buffer.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWM -tWR -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -DBOOST_REGEX_DYN_LINK -obcb\boost_regex-bcb-mt-1_34\regex_raw_buffer.obj ../src/regex_raw_buffer.cpp
+|
+
+bcb\boost_regex-bcb-mt-1_34\regex_traits_defaults.obj: ../src/regex_traits_defaults.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWM -tWR -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -DBOOST_REGEX_DYN_LINK -obcb\boost_regex-bcb-mt-1_34\regex_traits_defaults.obj ../src/regex_traits_defaults.cpp
+|
+
+bcb\boost_regex-bcb-mt-1_34\static_mutex.obj: ../src/static_mutex.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWM -tWR -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -DBOOST_REGEX_DYN_LINK -obcb\boost_regex-bcb-mt-1_34\static_mutex.obj ../src/static_mutex.cpp
+|
+
+bcb\boost_regex-bcb-mt-1_34\usinstances.obj: ../src/usinstances.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWM -tWR -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -DBOOST_REGEX_DYN_LINK -obcb\boost_regex-bcb-mt-1_34\usinstances.obj ../src/usinstances.cpp
+|
+
+bcb\boost_regex-bcb-mt-1_34\w32_regex_traits.obj: ../src/w32_regex_traits.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWM -tWR -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -DBOOST_REGEX_DYN_LINK -obcb\boost_regex-bcb-mt-1_34\w32_regex_traits.obj ../src/w32_regex_traits.cpp
+|
+
+bcb\boost_regex-bcb-mt-1_34\wc_regex_traits.obj: ../src/wc_regex_traits.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWM -tWR -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -DBOOST_REGEX_DYN_LINK -obcb\boost_regex-bcb-mt-1_34\wc_regex_traits.obj ../src/wc_regex_traits.cpp
+|
+
+bcb\boost_regex-bcb-mt-1_34\wide_posix_api.obj: ../src/wide_posix_api.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWM -tWR -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -DBOOST_REGEX_DYN_LINK -obcb\boost_regex-bcb-mt-1_34\wide_posix_api.obj ../src/wide_posix_api.cpp
+|
+
+bcb\boost_regex-bcb-mt-1_34\winstances.obj: ../src/winstances.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWM -tWR -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -DBOOST_REGEX_DYN_LINK -obcb\boost_regex-bcb-mt-1_34\winstances.obj ../src/winstances.cpp
+|
+
+bcb\boost_regex-bcb-mt-1_34 :
+ -_at_mkdir bcb\boost_regex-bcb-mt-1_34
+
+boost_regex-bcb-mt-1_34_clean :
+ del bcb\boost_regex-bcb-mt-1_34\*.obj
+ del bcb\boost_regex-bcb-mt-1_34\*.il?
+ del bcb\boost_regex-bcb-mt-1_34\*.csm
+ del bcb\boost_regex-bcb-mt-1_34\*.tds
+ del bcb\*.tds
+
+bcb\boost_regex-bcb-mt-1_34.lib : bcb\boost_regex-bcb-mt-1_34\c_regex_traits.obj bcb\boost_regex-bcb-mt-1_34\cpp_regex_traits.obj bcb\boost_regex-bcb-mt-1_34\cregex.obj bcb\boost_regex-bcb-mt-1_34\fileiter.obj bcb\boost_regex-bcb-mt-1_34\icu.obj bcb\boost_regex-bcb-mt-1_34\instances.obj bcb\boost_regex-bcb-mt-1_34\posix_api.obj bcb\boost_regex-bcb-mt-1_34\regex.obj bcb\boost_regex-bcb-mt-1_34\regex_debug.obj bcb\boost_regex-bcb-mt-1_34\regex_raw_buffer.obj bcb\boost_regex-bcb-mt-1_34\regex_traits_defaults.obj bcb\boost_regex-bcb-mt-1_34\static_mutex.obj bcb\boost_regex-bcb-mt-1_34\usinstances.obj bcb\boost_regex-bcb-mt-1_34\w32_regex_traits.obj bcb\boost_regex-bcb-mt-1_34\wc_regex_traits.obj bcb\boost_regex-bcb-mt-1_34\wide_posix_api.obj bcb\boost_regex-bcb-mt-1_34\winstances.obj
+ bcc32 @&&|
+-lw-dup -lw-dpl -tWD -tWM -tWR -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; -ebcb\boost_regex-bcb-mt-1_34.dll $(XLFLAGS) bcb\boost_regex-bcb-mt-1_34\c_regex_traits.obj bcb\boost_regex-bcb-mt-1_34\cpp_regex_traits.obj bcb\boost_regex-bcb-mt-1_34\cregex.obj bcb\boost_regex-bcb-mt-1_34\fileiter.obj bcb\boost_regex-bcb-mt-1_34\icu.obj bcb\boost_regex-bcb-mt-1_34\instances.obj bcb\boost_regex-bcb-mt-1_34\posix_api.obj bcb\boost_regex-bcb-mt-1_34\regex.obj bcb\boost_regex-bcb-mt-1_34\regex_debug.obj bcb\boost_regex-bcb-mt-1_34\regex_raw_buffer.obj bcb\boost_regex-bcb-mt-1_34\regex_traits_defaults.obj bcb\boost_regex-bcb-mt-1_34\static_mutex.obj bcb\boost_regex-bcb-mt-1_34\usinstances.obj bcb\boost_regex-bcb-mt-1_34\w32_regex_traits.obj bcb\boost_regex-bcb-mt-1_34\wc_regex_traits.obj bcb\boost_regex-bcb-mt-1_34\wide_posix_api.obj bcb\boost_regex-bcb-mt-1_34\winstances.obj $(LIBS)
+|
+ implib -w bcb\boost_regex-bcb-mt-1_34.lib bcb\boost_regex-bcb-mt-1_34.dll
+
+########################################################
+#
+# section for boost_regex-bcb-1_34.lib
+#
+########################################################
+bcb\boost_regex-bcb-1_34\c_regex_traits.obj: ../src/c_regex_traits.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWR -tWM- -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -DBOOST_REGEX_DYN_LINK -obcb\boost_regex-bcb-1_34\c_regex_traits.obj ../src/c_regex_traits.cpp
+|
+
+bcb\boost_regex-bcb-1_34\cpp_regex_traits.obj: ../src/cpp_regex_traits.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWR -tWM- -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -DBOOST_REGEX_DYN_LINK -obcb\boost_regex-bcb-1_34\cpp_regex_traits.obj ../src/cpp_regex_traits.cpp
+|
+
+bcb\boost_regex-bcb-1_34\cregex.obj: ../src/cregex.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWR -tWM- -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -DBOOST_REGEX_DYN_LINK -obcb\boost_regex-bcb-1_34\cregex.obj ../src/cregex.cpp
+|
+
+bcb\boost_regex-bcb-1_34\fileiter.obj: ../src/fileiter.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWR -tWM- -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -DBOOST_REGEX_DYN_LINK -obcb\boost_regex-bcb-1_34\fileiter.obj ../src/fileiter.cpp
+|
+
+bcb\boost_regex-bcb-1_34\icu.obj: ../src/icu.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWR -tWM- -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -DBOOST_REGEX_DYN_LINK -obcb\boost_regex-bcb-1_34\icu.obj ../src/icu.cpp
+|
+
+bcb\boost_regex-bcb-1_34\instances.obj: ../src/instances.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWR -tWM- -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -DBOOST_REGEX_DYN_LINK -obcb\boost_regex-bcb-1_34\instances.obj ../src/instances.cpp
+|
+
+bcb\boost_regex-bcb-1_34\posix_api.obj: ../src/posix_api.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWR -tWM- -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -DBOOST_REGEX_DYN_LINK -obcb\boost_regex-bcb-1_34\posix_api.obj ../src/posix_api.cpp
+|
+
+bcb\boost_regex-bcb-1_34\regex.obj: ../src/regex.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWR -tWM- -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -DBOOST_REGEX_DYN_LINK -obcb\boost_regex-bcb-1_34\regex.obj ../src/regex.cpp
+|
+
+bcb\boost_regex-bcb-1_34\regex_debug.obj: ../src/regex_debug.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWR -tWM- -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -DBOOST_REGEX_DYN_LINK -obcb\boost_regex-bcb-1_34\regex_debug.obj ../src/regex_debug.cpp
+|
+
+bcb\boost_regex-bcb-1_34\regex_raw_buffer.obj: ../src/regex_raw_buffer.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWR -tWM- -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -DBOOST_REGEX_DYN_LINK -obcb\boost_regex-bcb-1_34\regex_raw_buffer.obj ../src/regex_raw_buffer.cpp
+|
+
+bcb\boost_regex-bcb-1_34\regex_traits_defaults.obj: ../src/regex_traits_defaults.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWR -tWM- -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -DBOOST_REGEX_DYN_LINK -obcb\boost_regex-bcb-1_34\regex_traits_defaults.obj ../src/regex_traits_defaults.cpp
+|
+
+bcb\boost_regex-bcb-1_34\static_mutex.obj: ../src/static_mutex.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWR -tWM- -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -DBOOST_REGEX_DYN_LINK -obcb\boost_regex-bcb-1_34\static_mutex.obj ../src/static_mutex.cpp
+|
+
+bcb\boost_regex-bcb-1_34\usinstances.obj: ../src/usinstances.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWR -tWM- -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -DBOOST_REGEX_DYN_LINK -obcb\boost_regex-bcb-1_34\usinstances.obj ../src/usinstances.cpp
+|
+
+bcb\boost_regex-bcb-1_34\w32_regex_traits.obj: ../src/w32_regex_traits.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWR -tWM- -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -DBOOST_REGEX_DYN_LINK -obcb\boost_regex-bcb-1_34\w32_regex_traits.obj ../src/w32_regex_traits.cpp
+|
+
+bcb\boost_regex-bcb-1_34\wc_regex_traits.obj: ../src/wc_regex_traits.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWR -tWM- -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -DBOOST_REGEX_DYN_LINK -obcb\boost_regex-bcb-1_34\wc_regex_traits.obj ../src/wc_regex_traits.cpp
+|
+
+bcb\boost_regex-bcb-1_34\wide_posix_api.obj: ../src/wide_posix_api.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWR -tWM- -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -DBOOST_REGEX_DYN_LINK -obcb\boost_regex-bcb-1_34\wide_posix_api.obj ../src/wide_posix_api.cpp
+|
+
+bcb\boost_regex-bcb-1_34\winstances.obj: ../src/winstances.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWR -tWM- -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -DBOOST_REGEX_DYN_LINK -obcb\boost_regex-bcb-1_34\winstances.obj ../src/winstances.cpp
+|
+
+bcb\boost_regex-bcb-1_34 :
+ -_at_mkdir bcb\boost_regex-bcb-1_34
+
+boost_regex-bcb-1_34_clean :
+ del bcb\boost_regex-bcb-1_34\*.obj
+ del bcb\boost_regex-bcb-1_34\*.il?
+ del bcb\boost_regex-bcb-1_34\*.csm
+ del bcb\boost_regex-bcb-1_34\*.tds
+ del bcb\*.tds
+
+bcb\boost_regex-bcb-1_34.lib : bcb\boost_regex-bcb-1_34\c_regex_traits.obj bcb\boost_regex-bcb-1_34\cpp_regex_traits.obj bcb\boost_regex-bcb-1_34\cregex.obj bcb\boost_regex-bcb-1_34\fileiter.obj bcb\boost_regex-bcb-1_34\icu.obj bcb\boost_regex-bcb-1_34\instances.obj bcb\boost_regex-bcb-1_34\posix_api.obj bcb\boost_regex-bcb-1_34\regex.obj bcb\boost_regex-bcb-1_34\regex_debug.obj bcb\boost_regex-bcb-1_34\regex_raw_buffer.obj bcb\boost_regex-bcb-1_34\regex_traits_defaults.obj bcb\boost_regex-bcb-1_34\static_mutex.obj bcb\boost_regex-bcb-1_34\usinstances.obj bcb\boost_regex-bcb-1_34\w32_regex_traits.obj bcb\boost_regex-bcb-1_34\wc_regex_traits.obj bcb\boost_regex-bcb-1_34\wide_posix_api.obj bcb\boost_regex-bcb-1_34\winstances.obj
+ bcc32 @&&|
+-lw-dup -lw-dpl -tWD -tWR -tWM- -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; -ebcb\boost_regex-bcb-1_34.dll $(XLFLAGS) bcb\boost_regex-bcb-1_34\c_regex_traits.obj bcb\boost_regex-bcb-1_34\cpp_regex_traits.obj bcb\boost_regex-bcb-1_34\cregex.obj bcb\boost_regex-bcb-1_34\fileiter.obj bcb\boost_regex-bcb-1_34\icu.obj bcb\boost_regex-bcb-1_34\instances.obj bcb\boost_regex-bcb-1_34\posix_api.obj bcb\boost_regex-bcb-1_34\regex.obj bcb\boost_regex-bcb-1_34\regex_debug.obj bcb\boost_regex-bcb-1_34\regex_raw_buffer.obj bcb\boost_regex-bcb-1_34\regex_traits_defaults.obj bcb\boost_regex-bcb-1_34\static_mutex.obj bcb\boost_regex-bcb-1_34\usinstances.obj bcb\boost_regex-bcb-1_34\w32_regex_traits.obj bcb\boost_regex-bcb-1_34\wc_regex_traits.obj bcb\boost_regex-bcb-1_34\wide_posix_api.obj bcb\boost_regex-bcb-1_34\winstances.obj $(LIBS)
+|
+ implib -w bcb\boost_regex-bcb-1_34.lib bcb\boost_regex-bcb-1_34.dll
+
+########################################################
+#
+# section for libboost_regex-bcb-mt-1_34.lib
+#
+########################################################
+bcb\libboost_regex-bcb-mt-1_34\c_regex_traits.obj: ../src/c_regex_traits.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWM -tWR -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -obcb\libboost_regex-bcb-mt-1_34\c_regex_traits.obj ../src/c_regex_traits.cpp
+|
+
+bcb\libboost_regex-bcb-mt-1_34\cpp_regex_traits.obj: ../src/cpp_regex_traits.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWM -tWR -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -obcb\libboost_regex-bcb-mt-1_34\cpp_regex_traits.obj ../src/cpp_regex_traits.cpp
+|
+
+bcb\libboost_regex-bcb-mt-1_34\cregex.obj: ../src/cregex.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWM -tWR -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -obcb\libboost_regex-bcb-mt-1_34\cregex.obj ../src/cregex.cpp
+|
+
+bcb\libboost_regex-bcb-mt-1_34\fileiter.obj: ../src/fileiter.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWM -tWR -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -obcb\libboost_regex-bcb-mt-1_34\fileiter.obj ../src/fileiter.cpp
+|
+
+bcb\libboost_regex-bcb-mt-1_34\icu.obj: ../src/icu.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWM -tWR -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -obcb\libboost_regex-bcb-mt-1_34\icu.obj ../src/icu.cpp
+|
+
+bcb\libboost_regex-bcb-mt-1_34\instances.obj: ../src/instances.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWM -tWR -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -obcb\libboost_regex-bcb-mt-1_34\instances.obj ../src/instances.cpp
+|
+
+bcb\libboost_regex-bcb-mt-1_34\posix_api.obj: ../src/posix_api.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWM -tWR -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -obcb\libboost_regex-bcb-mt-1_34\posix_api.obj ../src/posix_api.cpp
+|
+
+bcb\libboost_regex-bcb-mt-1_34\regex.obj: ../src/regex.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWM -tWR -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -obcb\libboost_regex-bcb-mt-1_34\regex.obj ../src/regex.cpp
+|
+
+bcb\libboost_regex-bcb-mt-1_34\regex_debug.obj: ../src/regex_debug.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWM -tWR -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -obcb\libboost_regex-bcb-mt-1_34\regex_debug.obj ../src/regex_debug.cpp
+|
+
+bcb\libboost_regex-bcb-mt-1_34\regex_raw_buffer.obj: ../src/regex_raw_buffer.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWM -tWR -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -obcb\libboost_regex-bcb-mt-1_34\regex_raw_buffer.obj ../src/regex_raw_buffer.cpp
+|
+
+bcb\libboost_regex-bcb-mt-1_34\regex_traits_defaults.obj: ../src/regex_traits_defaults.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWM -tWR -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -obcb\libboost_regex-bcb-mt-1_34\regex_traits_defaults.obj ../src/regex_traits_defaults.cpp
+|
+
+bcb\libboost_regex-bcb-mt-1_34\static_mutex.obj: ../src/static_mutex.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWM -tWR -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -obcb\libboost_regex-bcb-mt-1_34\static_mutex.obj ../src/static_mutex.cpp
+|
+
+bcb\libboost_regex-bcb-mt-1_34\usinstances.obj: ../src/usinstances.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWM -tWR -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -obcb\libboost_regex-bcb-mt-1_34\usinstances.obj ../src/usinstances.cpp
+|
+
+bcb\libboost_regex-bcb-mt-1_34\w32_regex_traits.obj: ../src/w32_regex_traits.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWM -tWR -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -obcb\libboost_regex-bcb-mt-1_34\w32_regex_traits.obj ../src/w32_regex_traits.cpp
+|
+
+bcb\libboost_regex-bcb-mt-1_34\wc_regex_traits.obj: ../src/wc_regex_traits.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWM -tWR -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -obcb\libboost_regex-bcb-mt-1_34\wc_regex_traits.obj ../src/wc_regex_traits.cpp
+|
+
+bcb\libboost_regex-bcb-mt-1_34\wide_posix_api.obj: ../src/wide_posix_api.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWM -tWR -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -obcb\libboost_regex-bcb-mt-1_34\wide_posix_api.obj ../src/wide_posix_api.cpp
+|
+
+bcb\libboost_regex-bcb-mt-1_34\winstances.obj: ../src/winstances.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWM -tWR -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -obcb\libboost_regex-bcb-mt-1_34\winstances.obj ../src/winstances.cpp
+|
+
+bcb\libboost_regex-bcb-mt-1_34 :
+ -_at_mkdir bcb\libboost_regex-bcb-mt-1_34
+
+libboost_regex-bcb-mt-1_34_clean :
+ del bcb\libboost_regex-bcb-mt-1_34\*.obj
+ del bcb\libboost_regex-bcb-mt-1_34\*.il?
+ del bcb\libboost_regex-bcb-mt-1_34\*.csm
+ del bcb\libboost_regex-bcb-mt-1_34\*.tds
+
+bcb\libboost_regex-bcb-mt-1_34.lib : bcb\libboost_regex-bcb-mt-1_34\c_regex_traits.obj bcb\libboost_regex-bcb-mt-1_34\cpp_regex_traits.obj bcb\libboost_regex-bcb-mt-1_34\cregex.obj bcb\libboost_regex-bcb-mt-1_34\fileiter.obj bcb\libboost_regex-bcb-mt-1_34\icu.obj bcb\libboost_regex-bcb-mt-1_34\instances.obj bcb\libboost_regex-bcb-mt-1_34\posix_api.obj bcb\libboost_regex-bcb-mt-1_34\regex.obj bcb\libboost_regex-bcb-mt-1_34\regex_debug.obj bcb\libboost_regex-bcb-mt-1_34\regex_raw_buffer.obj bcb\libboost_regex-bcb-mt-1_34\regex_traits_defaults.obj bcb\libboost_regex-bcb-mt-1_34\static_mutex.obj bcb\libboost_regex-bcb-mt-1_34\usinstances.obj bcb\libboost_regex-bcb-mt-1_34\w32_regex_traits.obj bcb\libboost_regex-bcb-mt-1_34\wc_regex_traits.obj bcb\libboost_regex-bcb-mt-1_34\wide_posix_api.obj bcb\libboost_regex-bcb-mt-1_34\winstances.obj
+ if exist bcb\libboost_regex-bcb-mt-1_34.lib del bcb\libboost_regex-bcb-mt-1_34.lib
+ tlib @&&|
+/P128 /C /u /a $(XSFLAGS) "bcb\libboost_regex-bcb-mt-1_34.lib" +"bcb\libboost_regex-bcb-mt-1_34\c_regex_traits.obj" +"bcb\libboost_regex-bcb-mt-1_34\cpp_regex_traits.obj" +"bcb\libboost_regex-bcb-mt-1_34\cregex.obj" +"bcb\libboost_regex-bcb-mt-1_34\fileiter.obj" +"bcb\libboost_regex-bcb-mt-1_34\icu.obj" +"bcb\libboost_regex-bcb-mt-1_34\instances.obj" +"bcb\libboost_regex-bcb-mt-1_34\posix_api.obj" +"bcb\libboost_regex-bcb-mt-1_34\regex.obj" +"bcb\libboost_regex-bcb-mt-1_34\regex_debug.obj" +"bcb\libboost_regex-bcb-mt-1_34\regex_raw_buffer.obj" +"bcb\libboost_regex-bcb-mt-1_34\regex_traits_defaults.obj" +"bcb\libboost_regex-bcb-mt-1_34\static_mutex.obj" +"bcb\libboost_regex-bcb-mt-1_34\usinstances.obj" +"bcb\libboost_regex-bcb-mt-1_34\w32_regex_traits.obj" +"bcb\libboost_regex-bcb-mt-1_34\wc_regex_traits.obj" +"bcb\libboost_regex-bcb-mt-1_34\wide_posix_api.obj" +"bcb\libboost_regex-bcb-mt-1_34\winstances.obj"
+|
+
+########################################################
+#
+# section for libboost_regex-bcb-1_34.lib
+#
+########################################################
+bcb\libboost_regex-bcb-1_34\c_regex_traits.obj: ../src/c_regex_traits.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWR -tWM- -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -obcb\libboost_regex-bcb-1_34\c_regex_traits.obj ../src/c_regex_traits.cpp
+|
+
+bcb\libboost_regex-bcb-1_34\cpp_regex_traits.obj: ../src/cpp_regex_traits.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWR -tWM- -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -obcb\libboost_regex-bcb-1_34\cpp_regex_traits.obj ../src/cpp_regex_traits.cpp
+|
+
+bcb\libboost_regex-bcb-1_34\cregex.obj: ../src/cregex.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWR -tWM- -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -obcb\libboost_regex-bcb-1_34\cregex.obj ../src/cregex.cpp
+|
+
+bcb\libboost_regex-bcb-1_34\fileiter.obj: ../src/fileiter.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWR -tWM- -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -obcb\libboost_regex-bcb-1_34\fileiter.obj ../src/fileiter.cpp
+|
+
+bcb\libboost_regex-bcb-1_34\icu.obj: ../src/icu.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWR -tWM- -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -obcb\libboost_regex-bcb-1_34\icu.obj ../src/icu.cpp
+|
+
+bcb\libboost_regex-bcb-1_34\instances.obj: ../src/instances.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWR -tWM- -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -obcb\libboost_regex-bcb-1_34\instances.obj ../src/instances.cpp
+|
+
+bcb\libboost_regex-bcb-1_34\posix_api.obj: ../src/posix_api.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWR -tWM- -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -obcb\libboost_regex-bcb-1_34\posix_api.obj ../src/posix_api.cpp
+|
+
+bcb\libboost_regex-bcb-1_34\regex.obj: ../src/regex.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWR -tWM- -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -obcb\libboost_regex-bcb-1_34\regex.obj ../src/regex.cpp
+|
+
+bcb\libboost_regex-bcb-1_34\regex_debug.obj: ../src/regex_debug.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWR -tWM- -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -obcb\libboost_regex-bcb-1_34\regex_debug.obj ../src/regex_debug.cpp
+|
+
+bcb\libboost_regex-bcb-1_34\regex_raw_buffer.obj: ../src/regex_raw_buffer.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWR -tWM- -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -obcb\libboost_regex-bcb-1_34\regex_raw_buffer.obj ../src/regex_raw_buffer.cpp
+|
+
+bcb\libboost_regex-bcb-1_34\regex_traits_defaults.obj: ../src/regex_traits_defaults.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWR -tWM- -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -obcb\libboost_regex-bcb-1_34\regex_traits_defaults.obj ../src/regex_traits_defaults.cpp
+|
+
+bcb\libboost_regex-bcb-1_34\static_mutex.obj: ../src/static_mutex.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWR -tWM- -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -obcb\libboost_regex-bcb-1_34\static_mutex.obj ../src/static_mutex.cpp
+|
+
+bcb\libboost_regex-bcb-1_34\usinstances.obj: ../src/usinstances.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWR -tWM- -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -obcb\libboost_regex-bcb-1_34\usinstances.obj ../src/usinstances.cpp
+|
+
+bcb\libboost_regex-bcb-1_34\w32_regex_traits.obj: ../src/w32_regex_traits.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWR -tWM- -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -obcb\libboost_regex-bcb-1_34\w32_regex_traits.obj ../src/w32_regex_traits.cpp
+|
+
+bcb\libboost_regex-bcb-1_34\wc_regex_traits.obj: ../src/wc_regex_traits.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWR -tWM- -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -obcb\libboost_regex-bcb-1_34\wc_regex_traits.obj ../src/wc_regex_traits.cpp
+|
+
+bcb\libboost_regex-bcb-1_34\wide_posix_api.obj: ../src/wide_posix_api.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWR -tWM- -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -obcb\libboost_regex-bcb-1_34\wide_posix_api.obj ../src/wide_posix_api.cpp
+|
+
+bcb\libboost_regex-bcb-1_34\winstances.obj: ../src/winstances.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWR -tWM- -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -obcb\libboost_regex-bcb-1_34\winstances.obj ../src/winstances.cpp
+|
+
+bcb\libboost_regex-bcb-1_34 :
+ -_at_mkdir bcb\libboost_regex-bcb-1_34
+
+libboost_regex-bcb-1_34_clean :
+ del bcb\libboost_regex-bcb-1_34\*.obj
+ del bcb\libboost_regex-bcb-1_34\*.il?
+ del bcb\libboost_regex-bcb-1_34\*.csm
+ del bcb\libboost_regex-bcb-1_34\*.tds
+
+bcb\libboost_regex-bcb-1_34.lib : bcb\libboost_regex-bcb-1_34\c_regex_traits.obj bcb\libboost_regex-bcb-1_34\cpp_regex_traits.obj bcb\libboost_regex-bcb-1_34\cregex.obj bcb\libboost_regex-bcb-1_34\fileiter.obj bcb\libboost_regex-bcb-1_34\icu.obj bcb\libboost_regex-bcb-1_34\instances.obj bcb\libboost_regex-bcb-1_34\posix_api.obj bcb\libboost_regex-bcb-1_34\regex.obj bcb\libboost_regex-bcb-1_34\regex_debug.obj bcb\libboost_regex-bcb-1_34\regex_raw_buffer.obj bcb\libboost_regex-bcb-1_34\regex_traits_defaults.obj bcb\libboost_regex-bcb-1_34\static_mutex.obj bcb\libboost_regex-bcb-1_34\usinstances.obj bcb\libboost_regex-bcb-1_34\w32_regex_traits.obj bcb\libboost_regex-bcb-1_34\wc_regex_traits.obj bcb\libboost_regex-bcb-1_34\wide_posix_api.obj bcb\libboost_regex-bcb-1_34\winstances.obj
+ if exist bcb\libboost_regex-bcb-1_34.lib del bcb\libboost_regex-bcb-1_34.lib
+ tlib @&&|
+/P128 /C /u /a $(XSFLAGS) "bcb\libboost_regex-bcb-1_34.lib" +"bcb\libboost_regex-bcb-1_34\c_regex_traits.obj" +"bcb\libboost_regex-bcb-1_34\cpp_regex_traits.obj" +"bcb\libboost_regex-bcb-1_34\cregex.obj" +"bcb\libboost_regex-bcb-1_34\fileiter.obj" +"bcb\libboost_regex-bcb-1_34\icu.obj" +"bcb\libboost_regex-bcb-1_34\instances.obj" +"bcb\libboost_regex-bcb-1_34\posix_api.obj" +"bcb\libboost_regex-bcb-1_34\regex.obj" +"bcb\libboost_regex-bcb-1_34\regex_debug.obj" +"bcb\libboost_regex-bcb-1_34\regex_raw_buffer.obj" +"bcb\libboost_regex-bcb-1_34\regex_traits_defaults.obj" +"bcb\libboost_regex-bcb-1_34\static_mutex.obj" +"bcb\libboost_regex-bcb-1_34\usinstances.obj" +"bcb\libboost_regex-bcb-1_34\w32_regex_traits.obj" +"bcb\libboost_regex-bcb-1_34\wc_regex_traits.obj" +"bcb\libboost_regex-bcb-1_34\wide_posix_api.obj" +"bcb\libboost_regex-bcb-1_34\winstances.obj"
+|
+
+########################################################
+#
+# section for libboost_regex-bcb-sd-1_34.lib
+#
+########################################################
+bcb\libboost_regex-bcb-sd-1_34\c_regex_traits.obj: ../src/c_regex_traits.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWM- -D_NO_VCL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8037 -w-8057 -DSTRICT; -I$(BCROOT)\include;../../../ $(CXXFLAGS) -obcb\libboost_regex-bcb-sd-1_34\c_regex_traits.obj ../src/c_regex_traits.cpp
+|
+
+bcb\libboost_regex-bcb-sd-1_34\cpp_regex_traits.obj: ../src/cpp_regex_traits.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWM- -D_NO_VCL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8037 -w-8057 -DSTRICT; -I$(BCROOT)\include;../../../ $(CXXFLAGS) -obcb\libboost_regex-bcb-sd-1_34\cpp_regex_traits.obj ../src/cpp_regex_traits.cpp
+|
+
+bcb\libboost_regex-bcb-sd-1_34\cregex.obj: ../src/cregex.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWM- -D_NO_VCL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8037 -w-8057 -DSTRICT; -I$(BCROOT)\include;../../../ $(CXXFLAGS) -obcb\libboost_regex-bcb-sd-1_34\cregex.obj ../src/cregex.cpp
+|
+
+bcb\libboost_regex-bcb-sd-1_34\fileiter.obj: ../src/fileiter.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWM- -D_NO_VCL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8037 -w-8057 -DSTRICT; -I$(BCROOT)\include;../../../ $(CXXFLAGS) -obcb\libboost_regex-bcb-sd-1_34\fileiter.obj ../src/fileiter.cpp
+|
+
+bcb\libboost_regex-bcb-sd-1_34\icu.obj: ../src/icu.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWM- -D_NO_VCL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8037 -w-8057 -DSTRICT; -I$(BCROOT)\include;../../../ $(CXXFLAGS) -obcb\libboost_regex-bcb-sd-1_34\icu.obj ../src/icu.cpp
+|
+
+bcb\libboost_regex-bcb-sd-1_34\instances.obj: ../src/instances.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWM- -D_NO_VCL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8037 -w-8057 -DSTRICT; -I$(BCROOT)\include;../../../ $(CXXFLAGS) -obcb\libboost_regex-bcb-sd-1_34\instances.obj ../src/instances.cpp
+|
+
+bcb\libboost_regex-bcb-sd-1_34\posix_api.obj: ../src/posix_api.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWM- -D_NO_VCL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8037 -w-8057 -DSTRICT; -I$(BCROOT)\include;../../../ $(CXXFLAGS) -obcb\libboost_regex-bcb-sd-1_34\posix_api.obj ../src/posix_api.cpp
+|
+
+bcb\libboost_regex-bcb-sd-1_34\regex.obj: ../src/regex.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWM- -D_NO_VCL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8037 -w-8057 -DSTRICT; -I$(BCROOT)\include;../../../ $(CXXFLAGS) -obcb\libboost_regex-bcb-sd-1_34\regex.obj ../src/regex.cpp
+|
+
+bcb\libboost_regex-bcb-sd-1_34\regex_debug.obj: ../src/regex_debug.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWM- -D_NO_VCL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8037 -w-8057 -DSTRICT; -I$(BCROOT)\include;../../../ $(CXXFLAGS) -obcb\libboost_regex-bcb-sd-1_34\regex_debug.obj ../src/regex_debug.cpp
+|
+
+bcb\libboost_regex-bcb-sd-1_34\regex_raw_buffer.obj: ../src/regex_raw_buffer.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWM- -D_NO_VCL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8037 -w-8057 -DSTRICT; -I$(BCROOT)\include;../../../ $(CXXFLAGS) -obcb\libboost_regex-bcb-sd-1_34\regex_raw_buffer.obj ../src/regex_raw_buffer.cpp
+|
+
+bcb\libboost_regex-bcb-sd-1_34\regex_traits_defaults.obj: ../src/regex_traits_defaults.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWM- -D_NO_VCL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8037 -w-8057 -DSTRICT; -I$(BCROOT)\include;../../../ $(CXXFLAGS) -obcb\libboost_regex-bcb-sd-1_34\regex_traits_defaults.obj ../src/regex_traits_defaults.cpp
+|
+
+bcb\libboost_regex-bcb-sd-1_34\static_mutex.obj: ../src/static_mutex.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWM- -D_NO_VCL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8037 -w-8057 -DSTRICT; -I$(BCROOT)\include;../../../ $(CXXFLAGS) -obcb\libboost_regex-bcb-sd-1_34\static_mutex.obj ../src/static_mutex.cpp
+|
+
+bcb\libboost_regex-bcb-sd-1_34\usinstances.obj: ../src/usinstances.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWM- -D_NO_VCL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8037 -w-8057 -DSTRICT; -I$(BCROOT)\include;../../../ $(CXXFLAGS) -obcb\libboost_regex-bcb-sd-1_34\usinstances.obj ../src/usinstances.cpp
+|
+
+bcb\libboost_regex-bcb-sd-1_34\w32_regex_traits.obj: ../src/w32_regex_traits.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWM- -D_NO_VCL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8037 -w-8057 -DSTRICT; -I$(BCROOT)\include;../../../ $(CXXFLAGS) -obcb\libboost_regex-bcb-sd-1_34\w32_regex_traits.obj ../src/w32_regex_traits.cpp
+|
+
+bcb\libboost_regex-bcb-sd-1_34\wc_regex_traits.obj: ../src/wc_regex_traits.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWM- -D_NO_VCL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8037 -w-8057 -DSTRICT; -I$(BCROOT)\include;../../../ $(CXXFLAGS) -obcb\libboost_regex-bcb-sd-1_34\wc_regex_traits.obj ../src/wc_regex_traits.cpp
+|
+
+bcb\libboost_regex-bcb-sd-1_34\wide_posix_api.obj: ../src/wide_posix_api.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWM- -D_NO_VCL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8037 -w-8057 -DSTRICT; -I$(BCROOT)\include;../../../ $(CXXFLAGS) -obcb\libboost_regex-bcb-sd-1_34\wide_posix_api.obj ../src/wide_posix_api.cpp
+|
+
+bcb\libboost_regex-bcb-sd-1_34\winstances.obj: ../src/winstances.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWM- -D_NO_VCL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8037 -w-8057 -DSTRICT; -I$(BCROOT)\include;../../../ $(CXXFLAGS) -obcb\libboost_regex-bcb-sd-1_34\winstances.obj ../src/winstances.cpp
+|
+
+bcb\libboost_regex-bcb-sd-1_34 :
+ -_at_mkdir bcb\libboost_regex-bcb-sd-1_34
+
+libboost_regex-bcb-sd-1_34_clean :
+ del bcb\libboost_regex-bcb-sd-1_34\*.obj
+ del bcb\libboost_regex-bcb-sd-1_34\*.il?
+ del bcb\libboost_regex-bcb-sd-1_34\*.csm
+ del bcb\libboost_regex-bcb-sd-1_34\*.tds
+
+bcb\libboost_regex-bcb-sd-1_34.lib : bcb\libboost_regex-bcb-sd-1_34\c_regex_traits.obj bcb\libboost_regex-bcb-sd-1_34\cpp_regex_traits.obj bcb\libboost_regex-bcb-sd-1_34\cregex.obj bcb\libboost_regex-bcb-sd-1_34\fileiter.obj bcb\libboost_regex-bcb-sd-1_34\icu.obj bcb\libboost_regex-bcb-sd-1_34\instances.obj bcb\libboost_regex-bcb-sd-1_34\posix_api.obj bcb\libboost_regex-bcb-sd-1_34\regex.obj bcb\libboost_regex-bcb-sd-1_34\regex_debug.obj bcb\libboost_regex-bcb-sd-1_34\regex_raw_buffer.obj bcb\libboost_regex-bcb-sd-1_34\regex_traits_defaults.obj bcb\libboost_regex-bcb-sd-1_34\static_mutex.obj bcb\libboost_regex-bcb-sd-1_34\usinstances.obj bcb\libboost_regex-bcb-sd-1_34\w32_regex_traits.obj bcb\libboost_regex-bcb-sd-1_34\wc_regex_traits.obj bcb\libboost_regex-bcb-sd-1_34\wide_posix_api.obj bcb\libboost_regex-bcb-sd-1_34\winstances.obj
+ if exist bcb\libboost_regex-bcb-sd-1_34.lib del bcb\libboost_regex-bcb-sd-1_34.lib
+ tlib @&&|
+/P128 /C /u /a $(XSFLAGS) "bcb\libboost_regex-bcb-sd-1_34.lib" +"bcb\libboost_regex-bcb-sd-1_34\c_regex_traits.obj" +"bcb\libboost_regex-bcb-sd-1_34\cpp_regex_traits.obj" +"bcb\libboost_regex-bcb-sd-1_34\cregex.obj" +"bcb\libboost_regex-bcb-sd-1_34\fileiter.obj" +"bcb\libboost_regex-bcb-sd-1_34\icu.obj" +"bcb\libboost_regex-bcb-sd-1_34\instances.obj" +"bcb\libboost_regex-bcb-sd-1_34\posix_api.obj" +"bcb\libboost_regex-bcb-sd-1_34\regex.obj" +"bcb\libboost_regex-bcb-sd-1_34\regex_debug.obj" +"bcb\libboost_regex-bcb-sd-1_34\regex_raw_buffer.obj" +"bcb\libboost_regex-bcb-sd-1_34\regex_traits_defaults.obj" +"bcb\libboost_regex-bcb-sd-1_34\static_mutex.obj" +"bcb\libboost_regex-bcb-sd-1_34\usinstances.obj" +"bcb\libboost_regex-bcb-sd-1_34\w32_regex_traits.obj" +"bcb\libboost_regex-bcb-sd-1_34\wc_regex_traits.obj" +"bcb\libboost_regex-bcb-sd-1_34\wide_posix_api.obj" +"bcb\libboost_regex-bcb-sd-1_34\winstances.obj"
+|
+
+########################################################
+#
+# section for libboost_regex-bcb-mt-sd-1_34.lib
+#
+########################################################
+bcb\libboost_regex-bcb-mt-sd-1_34\c_regex_traits.obj: ../src/c_regex_traits.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWM -D_NO_VCL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ $(CXXFLAGS) -obcb\libboost_regex-bcb-mt-sd-1_34\c_regex_traits.obj ../src/c_regex_traits.cpp
+|
+
+bcb\libboost_regex-bcb-mt-sd-1_34\cpp_regex_traits.obj: ../src/cpp_regex_traits.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWM -D_NO_VCL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ $(CXXFLAGS) -obcb\libboost_regex-bcb-mt-sd-1_34\cpp_regex_traits.obj ../src/cpp_regex_traits.cpp
+|
+
+bcb\libboost_regex-bcb-mt-sd-1_34\cregex.obj: ../src/cregex.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWM -D_NO_VCL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ $(CXXFLAGS) -obcb\libboost_regex-bcb-mt-sd-1_34\cregex.obj ../src/cregex.cpp
+|
+
+bcb\libboost_regex-bcb-mt-sd-1_34\fileiter.obj: ../src/fileiter.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWM -D_NO_VCL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ $(CXXFLAGS) -obcb\libboost_regex-bcb-mt-sd-1_34\fileiter.obj ../src/fileiter.cpp
+|
+
+bcb\libboost_regex-bcb-mt-sd-1_34\icu.obj: ../src/icu.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWM -D_NO_VCL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ $(CXXFLAGS) -obcb\libboost_regex-bcb-mt-sd-1_34\icu.obj ../src/icu.cpp
+|
+
+bcb\libboost_regex-bcb-mt-sd-1_34\instances.obj: ../src/instances.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWM -D_NO_VCL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ $(CXXFLAGS) -obcb\libboost_regex-bcb-mt-sd-1_34\instances.obj ../src/instances.cpp
+|
+
+bcb\libboost_regex-bcb-mt-sd-1_34\posix_api.obj: ../src/posix_api.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWM -D_NO_VCL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ $(CXXFLAGS) -obcb\libboost_regex-bcb-mt-sd-1_34\posix_api.obj ../src/posix_api.cpp
+|
+
+bcb\libboost_regex-bcb-mt-sd-1_34\regex.obj: ../src/regex.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWM -D_NO_VCL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ $(CXXFLAGS) -obcb\libboost_regex-bcb-mt-sd-1_34\regex.obj ../src/regex.cpp
+|
+
+bcb\libboost_regex-bcb-mt-sd-1_34\regex_debug.obj: ../src/regex_debug.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWM -D_NO_VCL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ $(CXXFLAGS) -obcb\libboost_regex-bcb-mt-sd-1_34\regex_debug.obj ../src/regex_debug.cpp
+|
+
+bcb\libboost_regex-bcb-mt-sd-1_34\regex_raw_buffer.obj: ../src/regex_raw_buffer.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWM -D_NO_VCL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ $(CXXFLAGS) -obcb\libboost_regex-bcb-mt-sd-1_34\regex_raw_buffer.obj ../src/regex_raw_buffer.cpp
+|
+
+bcb\libboost_regex-bcb-mt-sd-1_34\regex_traits_defaults.obj: ../src/regex_traits_defaults.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWM -D_NO_VCL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ $(CXXFLAGS) -obcb\libboost_regex-bcb-mt-sd-1_34\regex_traits_defaults.obj ../src/regex_traits_defaults.cpp
+|
+
+bcb\libboost_regex-bcb-mt-sd-1_34\static_mutex.obj: ../src/static_mutex.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWM -D_NO_VCL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ $(CXXFLAGS) -obcb\libboost_regex-bcb-mt-sd-1_34\static_mutex.obj ../src/static_mutex.cpp
+|
+
+bcb\libboost_regex-bcb-mt-sd-1_34\usinstances.obj: ../src/usinstances.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWM -D_NO_VCL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ $(CXXFLAGS) -obcb\libboost_regex-bcb-mt-sd-1_34\usinstances.obj ../src/usinstances.cpp
+|
+
+bcb\libboost_regex-bcb-mt-sd-1_34\w32_regex_traits.obj: ../src/w32_regex_traits.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWM -D_NO_VCL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ $(CXXFLAGS) -obcb\libboost_regex-bcb-mt-sd-1_34\w32_regex_traits.obj ../src/w32_regex_traits.cpp
+|
+
+bcb\libboost_regex-bcb-mt-sd-1_34\wc_regex_traits.obj: ../src/wc_regex_traits.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWM -D_NO_VCL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ $(CXXFLAGS) -obcb\libboost_regex-bcb-mt-sd-1_34\wc_regex_traits.obj ../src/wc_regex_traits.cpp
+|
+
+bcb\libboost_regex-bcb-mt-sd-1_34\wide_posix_api.obj: ../src/wide_posix_api.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWM -D_NO_VCL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ $(CXXFLAGS) -obcb\libboost_regex-bcb-mt-sd-1_34\wide_posix_api.obj ../src/wide_posix_api.cpp
+|
+
+bcb\libboost_regex-bcb-mt-sd-1_34\winstances.obj: ../src/winstances.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWM -D_NO_VCL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ $(CXXFLAGS) -obcb\libboost_regex-bcb-mt-sd-1_34\winstances.obj ../src/winstances.cpp
+|
+
+bcb\libboost_regex-bcb-mt-sd-1_34 :
+ -_at_mkdir bcb\libboost_regex-bcb-mt-sd-1_34
+
+libboost_regex-bcb-mt-sd-1_34_clean :
+ del bcb\libboost_regex-bcb-mt-sd-1_34\*.obj
+ del bcb\libboost_regex-bcb-mt-sd-1_34\*.il?
+ del bcb\libboost_regex-bcb-mt-sd-1_34\*.csm
+ del bcb\libboost_regex-bcb-mt-sd-1_34\*.tds
+
+bcb\libboost_regex-bcb-mt-sd-1_34.lib : bcb\libboost_regex-bcb-mt-sd-1_34\c_regex_traits.obj bcb\libboost_regex-bcb-mt-sd-1_34\cpp_regex_traits.obj bcb\libboost_regex-bcb-mt-sd-1_34\cregex.obj bcb\libboost_regex-bcb-mt-sd-1_34\fileiter.obj bcb\libboost_regex-bcb-mt-sd-1_34\icu.obj bcb\libboost_regex-bcb-mt-sd-1_34\instances.obj bcb\libboost_regex-bcb-mt-sd-1_34\posix_api.obj bcb\libboost_regex-bcb-mt-sd-1_34\regex.obj bcb\libboost_regex-bcb-mt-sd-1_34\regex_debug.obj bcb\libboost_regex-bcb-mt-sd-1_34\regex_raw_buffer.obj bcb\libboost_regex-bcb-mt-sd-1_34\regex_traits_defaults.obj bcb\libboost_regex-bcb-mt-sd-1_34\static_mutex.obj bcb\libboost_regex-bcb-mt-sd-1_34\usinstances.obj bcb\libboost_regex-bcb-mt-sd-1_34\w32_regex_traits.obj bcb\libboost_regex-bcb-mt-sd-1_34\wc_regex_traits.obj bcb\libboost_regex-bcb-mt-sd-1_34\wide_posix_api.obj bcb\libboost_regex-bcb-mt-sd-1_34\winstances.obj
+ if exist bcb\libboost_regex-bcb-mt-sd-1_34.lib del bcb\libboost_regex-bcb-mt-sd-1_34.lib
+ tlib @&&|
+/P128 /C /u /a $(XSFLAGS) "bcb\libboost_regex-bcb-mt-sd-1_34.lib" +"bcb\libboost_regex-bcb-mt-sd-1_34\c_regex_traits.obj" +"bcb\libboost_regex-bcb-mt-sd-1_34\cpp_regex_traits.obj" +"bcb\libboost_regex-bcb-mt-sd-1_34\cregex.obj" +"bcb\libboost_regex-bcb-mt-sd-1_34\fileiter.obj" +"bcb\libboost_regex-bcb-mt-sd-1_34\icu.obj" +"bcb\libboost_regex-bcb-mt-sd-1_34\instances.obj" +"bcb\libboost_regex-bcb-mt-sd-1_34\posix_api.obj" +"bcb\libboost_regex-bcb-mt-sd-1_34\regex.obj" +"bcb\libboost_regex-bcb-mt-sd-1_34\regex_debug.obj" +"bcb\libboost_regex-bcb-mt-sd-1_34\regex_raw_buffer.obj" +"bcb\libboost_regex-bcb-mt-sd-1_34\regex_traits_defaults.obj" +"bcb\libboost_regex-bcb-mt-sd-1_34\static_mutex.obj" +"bcb\libboost_regex-bcb-mt-sd-1_34\usinstances.obj" +"bcb\libboost_regex-bcb-mt-sd-1_34\w32_regex_traits.obj" +"bcb\libboost_regex-bcb-mt-sd-1_34\wc_regex_traits.obj" +"bcb\libboost_regex-bcb-mt-sd-1_34\wide_posix_api.obj" +"bcb\libboost_regex-bcb-mt-sd-1_34\winstances.obj"
+|
+
+########################################################
+#
+# section for boost_regex-bcb-mt-d-1_34.lib
+#
+########################################################
+bcb\boost_regex-bcb-mt-d-1_34\c_regex_traits.obj: ../src/c_regex_traits.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWM -tWR -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -DBOOST_REGEX_DYN_LINK -obcb\boost_regex-bcb-mt-d-1_34\c_regex_traits.obj ../src/c_regex_traits.cpp
+|
+
+bcb\boost_regex-bcb-mt-d-1_34\cpp_regex_traits.obj: ../src/cpp_regex_traits.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWM -tWR -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -DBOOST_REGEX_DYN_LINK -obcb\boost_regex-bcb-mt-d-1_34\cpp_regex_traits.obj ../src/cpp_regex_traits.cpp
+|
+
+bcb\boost_regex-bcb-mt-d-1_34\cregex.obj: ../src/cregex.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWM -tWR -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -DBOOST_REGEX_DYN_LINK -obcb\boost_regex-bcb-mt-d-1_34\cregex.obj ../src/cregex.cpp
+|
+
+bcb\boost_regex-bcb-mt-d-1_34\fileiter.obj: ../src/fileiter.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWM -tWR -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -DBOOST_REGEX_DYN_LINK -obcb\boost_regex-bcb-mt-d-1_34\fileiter.obj ../src/fileiter.cpp
+|
+
+bcb\boost_regex-bcb-mt-d-1_34\icu.obj: ../src/icu.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWM -tWR -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -DBOOST_REGEX_DYN_LINK -obcb\boost_regex-bcb-mt-d-1_34\icu.obj ../src/icu.cpp
+|
+
+bcb\boost_regex-bcb-mt-d-1_34\instances.obj: ../src/instances.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWM -tWR -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -DBOOST_REGEX_DYN_LINK -obcb\boost_regex-bcb-mt-d-1_34\instances.obj ../src/instances.cpp
+|
+
+bcb\boost_regex-bcb-mt-d-1_34\posix_api.obj: ../src/posix_api.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWM -tWR -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -DBOOST_REGEX_DYN_LINK -obcb\boost_regex-bcb-mt-d-1_34\posix_api.obj ../src/posix_api.cpp
+|
+
+bcb\boost_regex-bcb-mt-d-1_34\regex.obj: ../src/regex.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWM -tWR -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -DBOOST_REGEX_DYN_LINK -obcb\boost_regex-bcb-mt-d-1_34\regex.obj ../src/regex.cpp
+|
+
+bcb\boost_regex-bcb-mt-d-1_34\regex_debug.obj: ../src/regex_debug.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWM -tWR -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -DBOOST_REGEX_DYN_LINK -obcb\boost_regex-bcb-mt-d-1_34\regex_debug.obj ../src/regex_debug.cpp
+|
+
+bcb\boost_regex-bcb-mt-d-1_34\regex_raw_buffer.obj: ../src/regex_raw_buffer.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWM -tWR -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -DBOOST_REGEX_DYN_LINK -obcb\boost_regex-bcb-mt-d-1_34\regex_raw_buffer.obj ../src/regex_raw_buffer.cpp
+|
+
+bcb\boost_regex-bcb-mt-d-1_34\regex_traits_defaults.obj: ../src/regex_traits_defaults.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWM -tWR -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -DBOOST_REGEX_DYN_LINK -obcb\boost_regex-bcb-mt-d-1_34\regex_traits_defaults.obj ../src/regex_traits_defaults.cpp
+|
+
+bcb\boost_regex-bcb-mt-d-1_34\static_mutex.obj: ../src/static_mutex.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWM -tWR -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -DBOOST_REGEX_DYN_LINK -obcb\boost_regex-bcb-mt-d-1_34\static_mutex.obj ../src/static_mutex.cpp
+|
+
+bcb\boost_regex-bcb-mt-d-1_34\usinstances.obj: ../src/usinstances.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWM -tWR -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -DBOOST_REGEX_DYN_LINK -obcb\boost_regex-bcb-mt-d-1_34\usinstances.obj ../src/usinstances.cpp
+|
+
+bcb\boost_regex-bcb-mt-d-1_34\w32_regex_traits.obj: ../src/w32_regex_traits.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWM -tWR -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -DBOOST_REGEX_DYN_LINK -obcb\boost_regex-bcb-mt-d-1_34\w32_regex_traits.obj ../src/w32_regex_traits.cpp
+|
+
+bcb\boost_regex-bcb-mt-d-1_34\wc_regex_traits.obj: ../src/wc_regex_traits.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWM -tWR -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -DBOOST_REGEX_DYN_LINK -obcb\boost_regex-bcb-mt-d-1_34\wc_regex_traits.obj ../src/wc_regex_traits.cpp
+|
+
+bcb\boost_regex-bcb-mt-d-1_34\wide_posix_api.obj: ../src/wide_posix_api.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWM -tWR -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -DBOOST_REGEX_DYN_LINK -obcb\boost_regex-bcb-mt-d-1_34\wide_posix_api.obj ../src/wide_posix_api.cpp
+|
+
+bcb\boost_regex-bcb-mt-d-1_34\winstances.obj: ../src/winstances.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWM -tWR -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -DBOOST_REGEX_DYN_LINK -obcb\boost_regex-bcb-mt-d-1_34\winstances.obj ../src/winstances.cpp
+|
+
+bcb\boost_regex-bcb-mt-d-1_34 :
+ -_at_mkdir bcb\boost_regex-bcb-mt-d-1_34
+
+boost_regex-bcb-mt-d-1_34_clean :
+ del bcb\boost_regex-bcb-mt-d-1_34\*.obj
+ del bcb\boost_regex-bcb-mt-d-1_34\*.il?
+ del bcb\boost_regex-bcb-mt-d-1_34\*.csm
+ del bcb\boost_regex-bcb-mt-d-1_34\*.tds
+ del bcb\*.tds
+
+bcb\boost_regex-bcb-mt-d-1_34.lib : bcb\boost_regex-bcb-mt-d-1_34\c_regex_traits.obj bcb\boost_regex-bcb-mt-d-1_34\cpp_regex_traits.obj bcb\boost_regex-bcb-mt-d-1_34\cregex.obj bcb\boost_regex-bcb-mt-d-1_34\fileiter.obj bcb\boost_regex-bcb-mt-d-1_34\icu.obj bcb\boost_regex-bcb-mt-d-1_34\instances.obj bcb\boost_regex-bcb-mt-d-1_34\posix_api.obj bcb\boost_regex-bcb-mt-d-1_34\regex.obj bcb\boost_regex-bcb-mt-d-1_34\regex_debug.obj bcb\boost_regex-bcb-mt-d-1_34\regex_raw_buffer.obj bcb\boost_regex-bcb-mt-d-1_34\regex_traits_defaults.obj bcb\boost_regex-bcb-mt-d-1_34\static_mutex.obj bcb\boost_regex-bcb-mt-d-1_34\usinstances.obj bcb\boost_regex-bcb-mt-d-1_34\w32_regex_traits.obj bcb\boost_regex-bcb-mt-d-1_34\wc_regex_traits.obj bcb\boost_regex-bcb-mt-d-1_34\wide_posix_api.obj bcb\boost_regex-bcb-mt-d-1_34\winstances.obj
+ bcc32 @&&|
+-lw-dup -lw-dpl -tWD -tWM -tWR -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; -ebcb\boost_regex-bcb-mt-d-1_34.dll $(XLFLAGS) bcb\boost_regex-bcb-mt-d-1_34\c_regex_traits.obj bcb\boost_regex-bcb-mt-d-1_34\cpp_regex_traits.obj bcb\boost_regex-bcb-mt-d-1_34\cregex.obj bcb\boost_regex-bcb-mt-d-1_34\fileiter.obj bcb\boost_regex-bcb-mt-d-1_34\icu.obj bcb\boost_regex-bcb-mt-d-1_34\instances.obj bcb\boost_regex-bcb-mt-d-1_34\posix_api.obj bcb\boost_regex-bcb-mt-d-1_34\regex.obj bcb\boost_regex-bcb-mt-d-1_34\regex_debug.obj bcb\boost_regex-bcb-mt-d-1_34\regex_raw_buffer.obj bcb\boost_regex-bcb-mt-d-1_34\regex_traits_defaults.obj bcb\boost_regex-bcb-mt-d-1_34\static_mutex.obj bcb\boost_regex-bcb-mt-d-1_34\usinstances.obj bcb\boost_regex-bcb-mt-d-1_34\w32_regex_traits.obj bcb\boost_regex-bcb-mt-d-1_34\wc_regex_traits.obj bcb\boost_regex-bcb-mt-d-1_34\wide_posix_api.obj bcb\boost_regex-bcb-mt-d-1_34\winstances.o
bj $(LIBS)
+|
+ implib -w bcb\boost_regex-bcb-mt-d-1_34.lib bcb\boost_regex-bcb-mt-d-1_34.dll
+
+########################################################
+#
+# section for boost_regex-bcb-d-1_34.lib
+#
+########################################################
+bcb\boost_regex-bcb-d-1_34\c_regex_traits.obj: ../src/c_regex_traits.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWR -tWM- -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -DBOOST_REGEX_DYN_LINK -obcb\boost_regex-bcb-d-1_34\c_regex_traits.obj ../src/c_regex_traits.cpp
+|
+
+bcb\boost_regex-bcb-d-1_34\cpp_regex_traits.obj: ../src/cpp_regex_traits.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWR -tWM- -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -DBOOST_REGEX_DYN_LINK -obcb\boost_regex-bcb-d-1_34\cpp_regex_traits.obj ../src/cpp_regex_traits.cpp
+|
+
+bcb\boost_regex-bcb-d-1_34\cregex.obj: ../src/cregex.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWR -tWM- -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -DBOOST_REGEX_DYN_LINK -obcb\boost_regex-bcb-d-1_34\cregex.obj ../src/cregex.cpp
+|
+
+bcb\boost_regex-bcb-d-1_34\fileiter.obj: ../src/fileiter.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWR -tWM- -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -DBOOST_REGEX_DYN_LINK -obcb\boost_regex-bcb-d-1_34\fileiter.obj ../src/fileiter.cpp
+|
+
+bcb\boost_regex-bcb-d-1_34\icu.obj: ../src/icu.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWR -tWM- -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -DBOOST_REGEX_DYN_LINK -obcb\boost_regex-bcb-d-1_34\icu.obj ../src/icu.cpp
+|
+
+bcb\boost_regex-bcb-d-1_34\instances.obj: ../src/instances.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWR -tWM- -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -DBOOST_REGEX_DYN_LINK -obcb\boost_regex-bcb-d-1_34\instances.obj ../src/instances.cpp
+|
+
+bcb\boost_regex-bcb-d-1_34\posix_api.obj: ../src/posix_api.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWR -tWM- -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -DBOOST_REGEX_DYN_LINK -obcb\boost_regex-bcb-d-1_34\posix_api.obj ../src/posix_api.cpp
+|
+
+bcb\boost_regex-bcb-d-1_34\regex.obj: ../src/regex.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWR -tWM- -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -DBOOST_REGEX_DYN_LINK -obcb\boost_regex-bcb-d-1_34\regex.obj ../src/regex.cpp
+|
+
+bcb\boost_regex-bcb-d-1_34\regex_debug.obj: ../src/regex_debug.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWR -tWM- -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -DBOOST_REGEX_DYN_LINK -obcb\boost_regex-bcb-d-1_34\regex_debug.obj ../src/regex_debug.cpp
+|
+
+bcb\boost_regex-bcb-d-1_34\regex_raw_buffer.obj: ../src/regex_raw_buffer.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWR -tWM- -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -DBOOST_REGEX_DYN_LINK -obcb\boost_regex-bcb-d-1_34\regex_raw_buffer.obj ../src/regex_raw_buffer.cpp
+|
+
+bcb\boost_regex-bcb-d-1_34\regex_traits_defaults.obj: ../src/regex_traits_defaults.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWR -tWM- -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -DBOOST_REGEX_DYN_LINK -obcb\boost_regex-bcb-d-1_34\regex_traits_defaults.obj ../src/regex_traits_defaults.cpp
+|
+
+bcb\boost_regex-bcb-d-1_34\static_mutex.obj: ../src/static_mutex.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWR -tWM- -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -DBOOST_REGEX_DYN_LINK -obcb\boost_regex-bcb-d-1_34\static_mutex.obj ../src/static_mutex.cpp
+|
+
+bcb\boost_regex-bcb-d-1_34\usinstances.obj: ../src/usinstances.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWR -tWM- -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -DBOOST_REGEX_DYN_LINK -obcb\boost_regex-bcb-d-1_34\usinstances.obj ../src/usinstances.cpp
+|
+
+bcb\boost_regex-bcb-d-1_34\w32_regex_traits.obj: ../src/w32_regex_traits.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWR -tWM- -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -DBOOST_REGEX_DYN_LINK -obcb\boost_regex-bcb-d-1_34\w32_regex_traits.obj ../src/w32_regex_traits.cpp
+|
+
+bcb\boost_regex-bcb-d-1_34\wc_regex_traits.obj: ../src/wc_regex_traits.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWR -tWM- -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -DBOOST_REGEX_DYN_LINK -obcb\boost_regex-bcb-d-1_34\wc_regex_traits.obj ../src/wc_regex_traits.cpp
+|
+
+bcb\boost_regex-bcb-d-1_34\wide_posix_api.obj: ../src/wide_posix_api.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWR -tWM- -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -DBOOST_REGEX_DYN_LINK -obcb\boost_regex-bcb-d-1_34\wide_posix_api.obj ../src/wide_posix_api.cpp
+|
+
+bcb\boost_regex-bcb-d-1_34\winstances.obj: ../src/winstances.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWR -tWM- -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -DBOOST_REGEX_DYN_LINK -obcb\boost_regex-bcb-d-1_34\winstances.obj ../src/winstances.cpp
+|
+
+bcb\boost_regex-bcb-d-1_34 :
+ -_at_mkdir bcb\boost_regex-bcb-d-1_34
+
+boost_regex-bcb-d-1_34_clean :
+ del bcb\boost_regex-bcb-d-1_34\*.obj
+ del bcb\boost_regex-bcb-d-1_34\*.il?
+ del bcb\boost_regex-bcb-d-1_34\*.csm
+ del bcb\boost_regex-bcb-d-1_34\*.tds
+ del bcb\*.tds
+
+bcb\boost_regex-bcb-d-1_34.lib : bcb\boost_regex-bcb-d-1_34\c_regex_traits.obj bcb\boost_regex-bcb-d-1_34\cpp_regex_traits.obj bcb\boost_regex-bcb-d-1_34\cregex.obj bcb\boost_regex-bcb-d-1_34\fileiter.obj bcb\boost_regex-bcb-d-1_34\icu.obj bcb\boost_regex-bcb-d-1_34\instances.obj bcb\boost_regex-bcb-d-1_34\posix_api.obj bcb\boost_regex-bcb-d-1_34\regex.obj bcb\boost_regex-bcb-d-1_34\regex_debug.obj bcb\boost_regex-bcb-d-1_34\regex_raw_buffer.obj bcb\boost_regex-bcb-d-1_34\regex_traits_defaults.obj bcb\boost_regex-bcb-d-1_34\static_mutex.obj bcb\boost_regex-bcb-d-1_34\usinstances.obj bcb\boost_regex-bcb-d-1_34\w32_regex_traits.obj bcb\boost_regex-bcb-d-1_34\wc_regex_traits.obj bcb\boost_regex-bcb-d-1_34\wide_posix_api.obj bcb\boost_regex-bcb-d-1_34\winstances.obj
+ bcc32 @&&|
+-lw-dup -lw-dpl -tWD -tWR -tWM- -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; -ebcb\boost_regex-bcb-d-1_34.dll $(XLFLAGS) bcb\boost_regex-bcb-d-1_34\c_regex_traits.obj bcb\boost_regex-bcb-d-1_34\cpp_regex_traits.obj bcb\boost_regex-bcb-d-1_34\cregex.obj bcb\boost_regex-bcb-d-1_34\fileiter.obj bcb\boost_regex-bcb-d-1_34\icu.obj bcb\boost_regex-bcb-d-1_34\instances.obj bcb\boost_regex-bcb-d-1_34\posix_api.obj bcb\boost_regex-bcb-d-1_34\regex.obj bcb\boost_regex-bcb-d-1_34\regex_debug.obj bcb\boost_regex-bcb-d-1_34\regex_raw_buffer.obj bcb\boost_regex-bcb-d-1_34\regex_traits_defaults.obj bcb\boost_regex-bcb-d-1_34\static_mutex.obj bcb\boost_regex-bcb-d-1_34\usinstances.obj bcb\boost_regex-bcb-d-1_34\w32_regex_traits.obj bcb\boost_regex-bcb-d-1_34\wc_regex_traits.obj bcb\boost_regex-bcb-d-1_34\wide_posix_api.obj bcb\boost_regex-bcb-d-1_34\winstances.obj $(LIBS)
+|
+ implib -w bcb\boost_regex-bcb-d-1_34.lib bcb\boost_regex-bcb-d-1_34.dll
+
+########################################################
+#
+# section for libboost_regex-bcb-mt-d-1_34.lib
+#
+########################################################
+bcb\libboost_regex-bcb-mt-d-1_34\c_regex_traits.obj: ../src/c_regex_traits.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWM -tWR -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -obcb\libboost_regex-bcb-mt-d-1_34\c_regex_traits.obj ../src/c_regex_traits.cpp
+|
+
+bcb\libboost_regex-bcb-mt-d-1_34\cpp_regex_traits.obj: ../src/cpp_regex_traits.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWM -tWR -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -obcb\libboost_regex-bcb-mt-d-1_34\cpp_regex_traits.obj ../src/cpp_regex_traits.cpp
+|
+
+bcb\libboost_regex-bcb-mt-d-1_34\cregex.obj: ../src/cregex.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWM -tWR -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -obcb\libboost_regex-bcb-mt-d-1_34\cregex.obj ../src/cregex.cpp
+|
+
+bcb\libboost_regex-bcb-mt-d-1_34\fileiter.obj: ../src/fileiter.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWM -tWR -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -obcb\libboost_regex-bcb-mt-d-1_34\fileiter.obj ../src/fileiter.cpp
+|
+
+bcb\libboost_regex-bcb-mt-d-1_34\icu.obj: ../src/icu.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWM -tWR -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -obcb\libboost_regex-bcb-mt-d-1_34\icu.obj ../src/icu.cpp
+|
+
+bcb\libboost_regex-bcb-mt-d-1_34\instances.obj: ../src/instances.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWM -tWR -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -obcb\libboost_regex-bcb-mt-d-1_34\instances.obj ../src/instances.cpp
+|
+
+bcb\libboost_regex-bcb-mt-d-1_34\posix_api.obj: ../src/posix_api.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWM -tWR -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -obcb\libboost_regex-bcb-mt-d-1_34\posix_api.obj ../src/posix_api.cpp
+|
+
+bcb\libboost_regex-bcb-mt-d-1_34\regex.obj: ../src/regex.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWM -tWR -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -obcb\libboost_regex-bcb-mt-d-1_34\regex.obj ../src/regex.cpp
+|
+
+bcb\libboost_regex-bcb-mt-d-1_34\regex_debug.obj: ../src/regex_debug.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWM -tWR -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -obcb\libboost_regex-bcb-mt-d-1_34\regex_debug.obj ../src/regex_debug.cpp
+|
+
+bcb\libboost_regex-bcb-mt-d-1_34\regex_raw_buffer.obj: ../src/regex_raw_buffer.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWM -tWR -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -obcb\libboost_regex-bcb-mt-d-1_34\regex_raw_buffer.obj ../src/regex_raw_buffer.cpp
+|
+
+bcb\libboost_regex-bcb-mt-d-1_34\regex_traits_defaults.obj: ../src/regex_traits_defaults.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWM -tWR -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -obcb\libboost_regex-bcb-mt-d-1_34\regex_traits_defaults.obj ../src/regex_traits_defaults.cpp
+|
+
+bcb\libboost_regex-bcb-mt-d-1_34\static_mutex.obj: ../src/static_mutex.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWM -tWR -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -obcb\libboost_regex-bcb-mt-d-1_34\static_mutex.obj ../src/static_mutex.cpp
+|
+
+bcb\libboost_regex-bcb-mt-d-1_34\usinstances.obj: ../src/usinstances.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWM -tWR -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -obcb\libboost_regex-bcb-mt-d-1_34\usinstances.obj ../src/usinstances.cpp
+|
+
+bcb\libboost_regex-bcb-mt-d-1_34\w32_regex_traits.obj: ../src/w32_regex_traits.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWM -tWR -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -obcb\libboost_regex-bcb-mt-d-1_34\w32_regex_traits.obj ../src/w32_regex_traits.cpp
+|
+
+bcb\libboost_regex-bcb-mt-d-1_34\wc_regex_traits.obj: ../src/wc_regex_traits.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWM -tWR -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -obcb\libboost_regex-bcb-mt-d-1_34\wc_regex_traits.obj ../src/wc_regex_traits.cpp
+|
+
+bcb\libboost_regex-bcb-mt-d-1_34\wide_posix_api.obj: ../src/wide_posix_api.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWM -tWR -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -obcb\libboost_regex-bcb-mt-d-1_34\wide_posix_api.obj ../src/wide_posix_api.cpp
+|
+
+bcb\libboost_regex-bcb-mt-d-1_34\winstances.obj: ../src/winstances.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWM -tWR -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -obcb\libboost_regex-bcb-mt-d-1_34\winstances.obj ../src/winstances.cpp
+|
+
+bcb\libboost_regex-bcb-mt-d-1_34 :
+ -_at_mkdir bcb\libboost_regex-bcb-mt-d-1_34
+
+libboost_regex-bcb-mt-d-1_34_clean :
+ del bcb\libboost_regex-bcb-mt-d-1_34\*.obj
+ del bcb\libboost_regex-bcb-mt-d-1_34\*.il?
+ del bcb\libboost_regex-bcb-mt-d-1_34\*.csm
+ del bcb\libboost_regex-bcb-mt-d-1_34\*.tds
+
+bcb\libboost_regex-bcb-mt-d-1_34.lib : bcb\libboost_regex-bcb-mt-d-1_34\c_regex_traits.obj bcb\libboost_regex-bcb-mt-d-1_34\cpp_regex_traits.obj bcb\libboost_regex-bcb-mt-d-1_34\cregex.obj bcb\libboost_regex-bcb-mt-d-1_34\fileiter.obj bcb\libboost_regex-bcb-mt-d-1_34\icu.obj bcb\libboost_regex-bcb-mt-d-1_34\instances.obj bcb\libboost_regex-bcb-mt-d-1_34\posix_api.obj bcb\libboost_regex-bcb-mt-d-1_34\regex.obj bcb\libboost_regex-bcb-mt-d-1_34\regex_debug.obj bcb\libboost_regex-bcb-mt-d-1_34\regex_raw_buffer.obj bcb\libboost_regex-bcb-mt-d-1_34\regex_traits_defaults.obj bcb\libboost_regex-bcb-mt-d-1_34\static_mutex.obj bcb\libboost_regex-bcb-mt-d-1_34\usinstances.obj bcb\libboost_regex-bcb-mt-d-1_34\w32_regex_traits.obj bcb\libboost_regex-bcb-mt-d-1_34\wc_regex_traits.obj bcb\libboost_regex-bcb-mt-d-1_34\wide_posix_api.obj bcb\libboost_regex-bcb-mt-d-1_34\winstances.obj
+ if exist bcb\libboost_regex-bcb-mt-d-1_34.lib del bcb\libboost_regex-bcb-mt-d-1_34.lib
+ tlib @&&|
+/P128 /C /u /a $(XSFLAGS) "bcb\libboost_regex-bcb-mt-d-1_34.lib" +"bcb\libboost_regex-bcb-mt-d-1_34\c_regex_traits.obj" +"bcb\libboost_regex-bcb-mt-d-1_34\cpp_regex_traits.obj" +"bcb\libboost_regex-bcb-mt-d-1_34\cregex.obj" +"bcb\libboost_regex-bcb-mt-d-1_34\fileiter.obj" +"bcb\libboost_regex-bcb-mt-d-1_34\icu.obj" +"bcb\libboost_regex-bcb-mt-d-1_34\instances.obj" +"bcb\libboost_regex-bcb-mt-d-1_34\posix_api.obj" +"bcb\libboost_regex-bcb-mt-d-1_34\regex.obj" +"bcb\libboost_regex-bcb-mt-d-1_34\regex_debug.obj" +"bcb\libboost_regex-bcb-mt-d-1_34\regex_raw_buffer.obj" +"bcb\libboost_regex-bcb-mt-d-1_34\regex_traits_defaults.obj" +"bcb\libboost_regex-bcb-mt-d-1_34\static_mutex.obj" +"bcb\libboost_regex-bcb-mt-d-1_34\usinstances.obj" +"bcb\libboost_regex-bcb-mt-d-1_34\w32_regex_traits.obj" +"bcb\libboost_regex-bcb-mt-d-1_34\wc_regex_traits.obj" +"bcb\libboost_regex-bcb-mt-d-1_34\wide_posix_api.obj" +"bcb\libboost_regex-bcb-mt-d-1_34\winstances.obj"
+|
+
+########################################################
+#
+# section for libboost_regex-bcb-d-1_34.lib
+#
+########################################################
+bcb\libboost_regex-bcb-d-1_34\c_regex_traits.obj: ../src/c_regex_traits.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWR -tWM- -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -obcb\libboost_regex-bcb-d-1_34\c_regex_traits.obj ../src/c_regex_traits.cpp
+|
+
+bcb\libboost_regex-bcb-d-1_34\cpp_regex_traits.obj: ../src/cpp_regex_traits.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWR -tWM- -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -obcb\libboost_regex-bcb-d-1_34\cpp_regex_traits.obj ../src/cpp_regex_traits.cpp
+|
+
+bcb\libboost_regex-bcb-d-1_34\cregex.obj: ../src/cregex.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWR -tWM- -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -obcb\libboost_regex-bcb-d-1_34\cregex.obj ../src/cregex.cpp
+|
+
+bcb\libboost_regex-bcb-d-1_34\fileiter.obj: ../src/fileiter.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWR -tWM- -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -obcb\libboost_regex-bcb-d-1_34\fileiter.obj ../src/fileiter.cpp
+|
+
+bcb\libboost_regex-bcb-d-1_34\icu.obj: ../src/icu.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWR -tWM- -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -obcb\libboost_regex-bcb-d-1_34\icu.obj ../src/icu.cpp
+|
+
+bcb\libboost_regex-bcb-d-1_34\instances.obj: ../src/instances.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWR -tWM- -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -obcb\libboost_regex-bcb-d-1_34\instances.obj ../src/instances.cpp
+|
+
+bcb\libboost_regex-bcb-d-1_34\posix_api.obj: ../src/posix_api.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWR -tWM- -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -obcb\libboost_regex-bcb-d-1_34\posix_api.obj ../src/posix_api.cpp
+|
+
+bcb\libboost_regex-bcb-d-1_34\regex.obj: ../src/regex.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWR -tWM- -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -obcb\libboost_regex-bcb-d-1_34\regex.obj ../src/regex.cpp
+|
+
+bcb\libboost_regex-bcb-d-1_34\regex_debug.obj: ../src/regex_debug.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWR -tWM- -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -obcb\libboost_regex-bcb-d-1_34\regex_debug.obj ../src/regex_debug.cpp
+|
+
+bcb\libboost_regex-bcb-d-1_34\regex_raw_buffer.obj: ../src/regex_raw_buffer.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWR -tWM- -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -obcb\libboost_regex-bcb-d-1_34\regex_raw_buffer.obj ../src/regex_raw_buffer.cpp
+|
+
+bcb\libboost_regex-bcb-d-1_34\regex_traits_defaults.obj: ../src/regex_traits_defaults.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWR -tWM- -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -obcb\libboost_regex-bcb-d-1_34\regex_traits_defaults.obj ../src/regex_traits_defaults.cpp
+|
+
+bcb\libboost_regex-bcb-d-1_34\static_mutex.obj: ../src/static_mutex.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWR -tWM- -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -obcb\libboost_regex-bcb-d-1_34\static_mutex.obj ../src/static_mutex.cpp
+|
+
+bcb\libboost_regex-bcb-d-1_34\usinstances.obj: ../src/usinstances.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWR -tWM- -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -obcb\libboost_regex-bcb-d-1_34\usinstances.obj ../src/usinstances.cpp
+|
+
+bcb\libboost_regex-bcb-d-1_34\w32_regex_traits.obj: ../src/w32_regex_traits.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWR -tWM- -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -obcb\libboost_regex-bcb-d-1_34\w32_regex_traits.obj ../src/w32_regex_traits.cpp
+|
+
+bcb\libboost_regex-bcb-d-1_34\wc_regex_traits.obj: ../src/wc_regex_traits.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWR -tWM- -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -obcb\libboost_regex-bcb-d-1_34\wc_regex_traits.obj ../src/wc_regex_traits.cpp
+|
+
+bcb\libboost_regex-bcb-d-1_34\wide_posix_api.obj: ../src/wide_posix_api.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWR -tWM- -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -obcb\libboost_regex-bcb-d-1_34\wide_posix_api.obj ../src/wide_posix_api.cpp
+|
+
+bcb\libboost_regex-bcb-d-1_34\winstances.obj: ../src/winstances.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWR -tWM- -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -obcb\libboost_regex-bcb-d-1_34\winstances.obj ../src/winstances.cpp
+|
+
+bcb\libboost_regex-bcb-d-1_34 :
+ -_at_mkdir bcb\libboost_regex-bcb-d-1_34
+
+libboost_regex-bcb-d-1_34_clean :
+ del bcb\libboost_regex-bcb-d-1_34\*.obj
+ del bcb\libboost_regex-bcb-d-1_34\*.il?
+ del bcb\libboost_regex-bcb-d-1_34\*.csm
+ del bcb\libboost_regex-bcb-d-1_34\*.tds
+
+bcb\libboost_regex-bcb-d-1_34.lib : bcb\libboost_regex-bcb-d-1_34\c_regex_traits.obj bcb\libboost_regex-bcb-d-1_34\cpp_regex_traits.obj bcb\libboost_regex-bcb-d-1_34\cregex.obj bcb\libboost_regex-bcb-d-1_34\fileiter.obj bcb\libboost_regex-bcb-d-1_34\icu.obj bcb\libboost_regex-bcb-d-1_34\instances.obj bcb\libboost_regex-bcb-d-1_34\posix_api.obj bcb\libboost_regex-bcb-d-1_34\regex.obj bcb\libboost_regex-bcb-d-1_34\regex_debug.obj bcb\libboost_regex-bcb-d-1_34\regex_raw_buffer.obj bcb\libboost_regex-bcb-d-1_34\regex_traits_defaults.obj bcb\libboost_regex-bcb-d-1_34\static_mutex.obj bcb\libboost_regex-bcb-d-1_34\usinstances.obj bcb\libboost_regex-bcb-d-1_34\w32_regex_traits.obj bcb\libboost_regex-bcb-d-1_34\wc_regex_traits.obj bcb\libboost_regex-bcb-d-1_34\wide_posix_api.obj bcb\libboost_regex-bcb-d-1_34\winstances.obj
+ if exist bcb\libboost_regex-bcb-d-1_34.lib del bcb\libboost_regex-bcb-d-1_34.lib
+ tlib @&&|
+/P128 /C /u /a $(XSFLAGS) "bcb\libboost_regex-bcb-d-1_34.lib" +"bcb\libboost_regex-bcb-d-1_34\c_regex_traits.obj" +"bcb\libboost_regex-bcb-d-1_34\cpp_regex_traits.obj" +"bcb\libboost_regex-bcb-d-1_34\cregex.obj" +"bcb\libboost_regex-bcb-d-1_34\fileiter.obj" +"bcb\libboost_regex-bcb-d-1_34\icu.obj" +"bcb\libboost_regex-bcb-d-1_34\instances.obj" +"bcb\libboost_regex-bcb-d-1_34\posix_api.obj" +"bcb\libboost_regex-bcb-d-1_34\regex.obj" +"bcb\libboost_regex-bcb-d-1_34\regex_debug.obj" +"bcb\libboost_regex-bcb-d-1_34\regex_raw_buffer.obj" +"bcb\libboost_regex-bcb-d-1_34\regex_traits_defaults.obj" +"bcb\libboost_regex-bcb-d-1_34\static_mutex.obj" +"bcb\libboost_regex-bcb-d-1_34\usinstances.obj" +"bcb\libboost_regex-bcb-d-1_34\w32_regex_traits.obj" +"bcb\libboost_regex-bcb-d-1_34\wc_regex_traits.obj" +"bcb\libboost_regex-bcb-d-1_34\wide_posix_api.obj" +"bcb\libboost_regex-bcb-d-1_34\winstances.obj"
+|
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/build/common.sh
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/build/common.sh 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,60 @@
+# copyright John Maddock 2003
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt.
+#
+# locate all the header dependencies:
+for file in ../../../boost/regex/*.hpp ; do
+ if [ -f $file ]; then
+ header="$header $file"
+ fi
+done
+
+for file in ../../../boost/regex/v3/*.hpp; do
+ if [ -f $file ]; then
+ header="$header $file"
+ fi
+done
+
+for file in ../../../boost/regex/v3/*.hxx; do
+ if [ -f $file ]; then
+ header="$header $file"
+ fi
+done
+
+for file in ../../../boost/regex/v4/*.hpp; do
+ if [ -f $file ]; then
+ header="$header $file"
+ fi
+done
+
+for file in ../../../boost/regex/v4/*.hxx; do
+ if [ -f $file ]; then
+ header="$header $file"
+ fi
+done
+
+for file in ../../../boost/regex/config/*.hpp; do
+ if [ -f $file ]; then
+ header="$header $file"
+ fi
+done
+
+for file in ../../../boost/regex/config/*.hxx; do
+ if [ -f $file ]; then
+ header="$header $file"
+ fi
+done
+
+#
+# locate all the source files:
+for file in ../src/*.cpp; do
+ if [ -f $file ]; then
+ src="$src $file"
+ fi
+done
+
+boost_version=$(grep 'define.*BOOST_LIB_VERSION' ../../../boost/version.hpp | sed 's/.*"\([^"]*\)".*/\1/')
+echo Boost version tag = $boost_version
+
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/build/gcc-shared.mak
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/build/gcc-shared.mak 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,186 @@
+#
+# auto generated makefile for gcc compiler
+#
+# usage:
+# make
+# brings libraries up to date
+# make clean
+# deletes temporary object files (but not archives).
+#
+
+#
+# the following environment variables are recognised:
+# ICU_PATH= Path to ICU installation.
+# CXXFLAGS= extra compiler options - note applies to all build variants
+# INCLUDES= additional include directories
+# LDFLAGS= additional linker options
+# LIBS= additional library files
+
+# compiler:
+CXX=g++
+LINKER=g++ -shared
+
+#
+# compiler options for release build:
+#
+C1=-c -O2 -I../../.. -fPIC
+#
+# compiler options for debug build:
+#
+C2=-c -g -I../../.. -fPIC
+
+ifeq "$(ICU_PATH)" ""
+$(warning "Building Boost.Regex without ICU / Unicode support:")
+$(warning "Hint: set ICU_PATH on the nmake command line to point ")
+$(warning "to your ICU installation if you have one.")
+else
+ICU_CXXFLAGS= -DBOOST_HAS_ICU=1 -I$(ICU_PATH)/include
+ICU_LDFLAGS= -L$(ICU_PATH)/lib
+ICU_LIBS= -licui18n -licuuc
+$(warning "Building Boost.Regex with ICU in $(ICU_PATH)")
+endif
+
+
+ALL_HEADER= ../../../boost/regex/concepts.hpp ../../../boost/regex/config.hpp ../../../boost/regex/icu.hpp ../../../boost/regex/mfc.hpp ../../../boost/regex/pattern_except.hpp ../../../boost/regex/regex_traits.hpp ../../../boost/regex/user.hpp ../../../boost/regex/v4/basic_regex.hpp ../../../boost/regex/v4/basic_regex_creator.hpp ../../../boost/regex/v4/basic_regex_parser.hpp ../../../boost/regex/v4/c_regex_traits.hpp ../../../boost/regex/v4/char_regex_traits.hpp ../../../boost/regex/v4/cpp_regex_traits.hpp ../../../boost/regex/v4/cregex.hpp ../../../boost/regex/v4/error_type.hpp ../../../boost/regex/v4/fileiter.hpp ../../../boost/regex/v4/instances.hpp ../../../boost/regex/v4/iterator_category.hpp ../../../boost/regex/v4/iterator_traits.hpp ../../../boost/regex/v4/match_flags.hpp ../../../boost/regex/v4/match_results.hpp ../../../boost/regex/v4/mem_block_cache.hpp ../../../boost/regex/v4/perl_matcher.hpp ../../../boost/regex/v4/perl_matcher_common.hpp ../../../boost/regex/v4/perl_matcher_non_recursive.hpp
../../../boost/regex/v4/perl_matcher_recursive.hpp ../../../boost/regex/v4/primary_transform.hpp ../../../boost/regex/v4/protected_call.hpp ../../../boost/regex/v4/regbase.hpp ../../../boost/regex/v4/regex.hpp ../../../boost/regex/v4/regex_cstring.hpp ../../../boost/regex/v4/regex_format.hpp ../../../boost/regex/v4/regex_fwd.hpp ../../../boost/regex/v4/regex_grep.hpp ../../../boost/regex/v4/regex_iterator.hpp ../../../boost/regex/v4/regex_kmp.hpp ../../../boost/regex/v4/regex_match.hpp ../../../boost/regex/v4/regex_merge.hpp ../../../boost/regex/v4/regex_raw_buffer.hpp ../../../boost/regex/v4/regex_replace.hpp ../../../boost/regex/v4/regex_search.hpp ../../../boost/regex/v4/regex_split.hpp ../../../boost/regex/v4/regex_stack.hpp ../../../boost/regex/v4/regex_token_iterator.hpp ../../../boost/regex/v4/regex_traits.hpp ../../../boost/regex/v4/regex_traits_defaults.hpp ../../../boost/regex/v4/regex_workaround.hpp ../../../boost/regex/v4/states.hpp ../../../boost/regex/v4/sub_match.hpp ../../../boost/regex/v4/sy
ntax_type.hpp ../../../boost/regex/v4/u32regex_iterator.hpp ../../../boost/regex/v4/u32regex_token_iterator.hpp ../../../boost/regex/v4/w32_regex_traits.hpp ../../../boost/regex/config/borland.hpp ../../../boost/regex/config/cwchar.hpp
+
+all : gcc gcc gcc/boost_regex-gcc-1_34_shared ./gcc/libboost_regex-gcc-1_34.so gcc gcc/boost_regex-gcc-d-1_34_shared ./gcc/libboost_regex-gcc-d-1_34.so
+
+gcc :
+ mkdir -p gcc
+
+clean : boost_regex-gcc-1_34_clean boost_regex-gcc-d-1_34_clean
+
+install : all
+
+
+
+########################################################
+#
+# section for libboost_regex-gcc-1_34.a
+#
+########################################################
+gcc/boost_regex-gcc-1_34_shared/c_regex_traits.o: ../src/c_regex_traits.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o gcc/boost_regex-gcc-1_34_shared/c_regex_traits.o $(C1) $(CXXFLAGS) $(ICU_CXXFLAGS) ../src/c_regex_traits.cpp
+
+gcc/boost_regex-gcc-1_34_shared/cpp_regex_traits.o: ../src/cpp_regex_traits.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o gcc/boost_regex-gcc-1_34_shared/cpp_regex_traits.o $(C1) $(CXXFLAGS) $(ICU_CXXFLAGS) ../src/cpp_regex_traits.cpp
+
+gcc/boost_regex-gcc-1_34_shared/cregex.o: ../src/cregex.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o gcc/boost_regex-gcc-1_34_shared/cregex.o $(C1) $(CXXFLAGS) $(ICU_CXXFLAGS) ../src/cregex.cpp
+
+gcc/boost_regex-gcc-1_34_shared/fileiter.o: ../src/fileiter.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o gcc/boost_regex-gcc-1_34_shared/fileiter.o $(C1) $(CXXFLAGS) $(ICU_CXXFLAGS) ../src/fileiter.cpp
+
+gcc/boost_regex-gcc-1_34_shared/icu.o: ../src/icu.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o gcc/boost_regex-gcc-1_34_shared/icu.o $(C1) $(CXXFLAGS) $(ICU_CXXFLAGS) ../src/icu.cpp
+
+gcc/boost_regex-gcc-1_34_shared/instances.o: ../src/instances.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o gcc/boost_regex-gcc-1_34_shared/instances.o $(C1) $(CXXFLAGS) $(ICU_CXXFLAGS) ../src/instances.cpp
+
+gcc/boost_regex-gcc-1_34_shared/posix_api.o: ../src/posix_api.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o gcc/boost_regex-gcc-1_34_shared/posix_api.o $(C1) $(CXXFLAGS) $(ICU_CXXFLAGS) ../src/posix_api.cpp
+
+gcc/boost_regex-gcc-1_34_shared/regex.o: ../src/regex.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o gcc/boost_regex-gcc-1_34_shared/regex.o $(C1) $(CXXFLAGS) $(ICU_CXXFLAGS) ../src/regex.cpp
+
+gcc/boost_regex-gcc-1_34_shared/regex_debug.o: ../src/regex_debug.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o gcc/boost_regex-gcc-1_34_shared/regex_debug.o $(C1) $(CXXFLAGS) $(ICU_CXXFLAGS) ../src/regex_debug.cpp
+
+gcc/boost_regex-gcc-1_34_shared/regex_raw_buffer.o: ../src/regex_raw_buffer.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o gcc/boost_regex-gcc-1_34_shared/regex_raw_buffer.o $(C1) $(CXXFLAGS) $(ICU_CXXFLAGS) ../src/regex_raw_buffer.cpp
+
+gcc/boost_regex-gcc-1_34_shared/regex_traits_defaults.o: ../src/regex_traits_defaults.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o gcc/boost_regex-gcc-1_34_shared/regex_traits_defaults.o $(C1) $(CXXFLAGS) $(ICU_CXXFLAGS) ../src/regex_traits_defaults.cpp
+
+gcc/boost_regex-gcc-1_34_shared/static_mutex.o: ../src/static_mutex.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o gcc/boost_regex-gcc-1_34_shared/static_mutex.o $(C1) $(CXXFLAGS) $(ICU_CXXFLAGS) ../src/static_mutex.cpp
+
+gcc/boost_regex-gcc-1_34_shared/usinstances.o: ../src/usinstances.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o gcc/boost_regex-gcc-1_34_shared/usinstances.o $(C1) $(CXXFLAGS) $(ICU_CXXFLAGS) ../src/usinstances.cpp
+
+gcc/boost_regex-gcc-1_34_shared/w32_regex_traits.o: ../src/w32_regex_traits.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o gcc/boost_regex-gcc-1_34_shared/w32_regex_traits.o $(C1) $(CXXFLAGS) $(ICU_CXXFLAGS) ../src/w32_regex_traits.cpp
+
+gcc/boost_regex-gcc-1_34_shared/wc_regex_traits.o: ../src/wc_regex_traits.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o gcc/boost_regex-gcc-1_34_shared/wc_regex_traits.o $(C1) $(CXXFLAGS) $(ICU_CXXFLAGS) ../src/wc_regex_traits.cpp
+
+gcc/boost_regex-gcc-1_34_shared/wide_posix_api.o: ../src/wide_posix_api.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o gcc/boost_regex-gcc-1_34_shared/wide_posix_api.o $(C1) $(CXXFLAGS) $(ICU_CXXFLAGS) ../src/wide_posix_api.cpp
+
+gcc/boost_regex-gcc-1_34_shared/winstances.o: ../src/winstances.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o gcc/boost_regex-gcc-1_34_shared/winstances.o $(C1) $(CXXFLAGS) $(ICU_CXXFLAGS) ../src/winstances.cpp
+
+gcc/boost_regex-gcc-1_34_shared :
+ mkdir -p gcc/boost_regex-gcc-1_34_shared
+
+boost_regex-gcc-1_34_clean :
+ rm -f gcc/boost_regex-gcc-1_34_shared/*.o
+
+./gcc/libboost_regex-gcc-1_34.so : gcc/boost_regex-gcc-1_34_shared/c_regex_traits.o gcc/boost_regex-gcc-1_34_shared/cpp_regex_traits.o gcc/boost_regex-gcc-1_34_shared/cregex.o gcc/boost_regex-gcc-1_34_shared/fileiter.o gcc/boost_regex-gcc-1_34_shared/icu.o gcc/boost_regex-gcc-1_34_shared/instances.o gcc/boost_regex-gcc-1_34_shared/posix_api.o gcc/boost_regex-gcc-1_34_shared/regex.o gcc/boost_regex-gcc-1_34_shared/regex_debug.o gcc/boost_regex-gcc-1_34_shared/regex_raw_buffer.o gcc/boost_regex-gcc-1_34_shared/regex_traits_defaults.o gcc/boost_regex-gcc-1_34_shared/static_mutex.o gcc/boost_regex-gcc-1_34_shared/usinstances.o gcc/boost_regex-gcc-1_34_shared/w32_regex_traits.o gcc/boost_regex-gcc-1_34_shared/wc_regex_traits.o gcc/boost_regex-gcc-1_34_shared/wide_posix_api.o gcc/boost_regex-gcc-1_34_shared/winstances.o
+ $(LINKER) -o gcc/libboost_regex-gcc-1_34.so $(LDFLAGS) $(ICU_LDFLAGS) gcc/boost_regex-gcc-1_34_shared/c_regex_traits.o gcc/boost_regex-gcc-1_34_shared/cpp_regex_traits.o gcc/boost_regex-gcc-1_34_shared/cregex.o gcc/boost_regex-gcc-1_34_shared/fileiter.o gcc/boost_regex-gcc-1_34_shared/icu.o gcc/boost_regex-gcc-1_34_shared/instances.o gcc/boost_regex-gcc-1_34_shared/posix_api.o gcc/boost_regex-gcc-1_34_shared/regex.o gcc/boost_regex-gcc-1_34_shared/regex_debug.o gcc/boost_regex-gcc-1_34_shared/regex_raw_buffer.o gcc/boost_regex-gcc-1_34_shared/regex_traits_defaults.o gcc/boost_regex-gcc-1_34_shared/static_mutex.o gcc/boost_regex-gcc-1_34_shared/usinstances.o gcc/boost_regex-gcc-1_34_shared/w32_regex_traits.o gcc/boost_regex-gcc-1_34_shared/wc_regex_traits.o gcc/boost_regex-gcc-1_34_shared/wide_posix_api.o gcc/boost_regex-gcc-1_34_shared/winstances.o $(ICU_LIBS) $(LIBS)
+
+########################################################
+#
+# section for libboost_regex-gcc-d-1_34.a
+#
+########################################################
+gcc/boost_regex-gcc-d-1_34_shared/c_regex_traits.o: ../src/c_regex_traits.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o gcc/boost_regex-gcc-d-1_34_shared/c_regex_traits.o $(C2) $(CXXFLAGS) $(ICU_CXXFLAGS) ../src/c_regex_traits.cpp
+
+gcc/boost_regex-gcc-d-1_34_shared/cpp_regex_traits.o: ../src/cpp_regex_traits.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o gcc/boost_regex-gcc-d-1_34_shared/cpp_regex_traits.o $(C2) $(CXXFLAGS) $(ICU_CXXFLAGS) ../src/cpp_regex_traits.cpp
+
+gcc/boost_regex-gcc-d-1_34_shared/cregex.o: ../src/cregex.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o gcc/boost_regex-gcc-d-1_34_shared/cregex.o $(C2) $(CXXFLAGS) $(ICU_CXXFLAGS) ../src/cregex.cpp
+
+gcc/boost_regex-gcc-d-1_34_shared/fileiter.o: ../src/fileiter.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o gcc/boost_regex-gcc-d-1_34_shared/fileiter.o $(C2) $(CXXFLAGS) $(ICU_CXXFLAGS) ../src/fileiter.cpp
+
+gcc/boost_regex-gcc-d-1_34_shared/icu.o: ../src/icu.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o gcc/boost_regex-gcc-d-1_34_shared/icu.o $(C2) $(CXXFLAGS) $(ICU_CXXFLAGS) ../src/icu.cpp
+
+gcc/boost_regex-gcc-d-1_34_shared/instances.o: ../src/instances.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o gcc/boost_regex-gcc-d-1_34_shared/instances.o $(C2) $(CXXFLAGS) $(ICU_CXXFLAGS) ../src/instances.cpp
+
+gcc/boost_regex-gcc-d-1_34_shared/posix_api.o: ../src/posix_api.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o gcc/boost_regex-gcc-d-1_34_shared/posix_api.o $(C2) $(CXXFLAGS) $(ICU_CXXFLAGS) ../src/posix_api.cpp
+
+gcc/boost_regex-gcc-d-1_34_shared/regex.o: ../src/regex.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o gcc/boost_regex-gcc-d-1_34_shared/regex.o $(C2) $(CXXFLAGS) $(ICU_CXXFLAGS) ../src/regex.cpp
+
+gcc/boost_regex-gcc-d-1_34_shared/regex_debug.o: ../src/regex_debug.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o gcc/boost_regex-gcc-d-1_34_shared/regex_debug.o $(C2) $(CXXFLAGS) $(ICU_CXXFLAGS) ../src/regex_debug.cpp
+
+gcc/boost_regex-gcc-d-1_34_shared/regex_raw_buffer.o: ../src/regex_raw_buffer.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o gcc/boost_regex-gcc-d-1_34_shared/regex_raw_buffer.o $(C2) $(CXXFLAGS) $(ICU_CXXFLAGS) ../src/regex_raw_buffer.cpp
+
+gcc/boost_regex-gcc-d-1_34_shared/regex_traits_defaults.o: ../src/regex_traits_defaults.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o gcc/boost_regex-gcc-d-1_34_shared/regex_traits_defaults.o $(C2) $(CXXFLAGS) $(ICU_CXXFLAGS) ../src/regex_traits_defaults.cpp
+
+gcc/boost_regex-gcc-d-1_34_shared/static_mutex.o: ../src/static_mutex.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o gcc/boost_regex-gcc-d-1_34_shared/static_mutex.o $(C2) $(CXXFLAGS) $(ICU_CXXFLAGS) ../src/static_mutex.cpp
+
+gcc/boost_regex-gcc-d-1_34_shared/usinstances.o: ../src/usinstances.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o gcc/boost_regex-gcc-d-1_34_shared/usinstances.o $(C2) $(CXXFLAGS) $(ICU_CXXFLAGS) ../src/usinstances.cpp
+
+gcc/boost_regex-gcc-d-1_34_shared/w32_regex_traits.o: ../src/w32_regex_traits.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o gcc/boost_regex-gcc-d-1_34_shared/w32_regex_traits.o $(C2) $(CXXFLAGS) $(ICU_CXXFLAGS) ../src/w32_regex_traits.cpp
+
+gcc/boost_regex-gcc-d-1_34_shared/wc_regex_traits.o: ../src/wc_regex_traits.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o gcc/boost_regex-gcc-d-1_34_shared/wc_regex_traits.o $(C2) $(CXXFLAGS) $(ICU_CXXFLAGS) ../src/wc_regex_traits.cpp
+
+gcc/boost_regex-gcc-d-1_34_shared/wide_posix_api.o: ../src/wide_posix_api.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o gcc/boost_regex-gcc-d-1_34_shared/wide_posix_api.o $(C2) $(CXXFLAGS) $(ICU_CXXFLAGS) ../src/wide_posix_api.cpp
+
+gcc/boost_regex-gcc-d-1_34_shared/winstances.o: ../src/winstances.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o gcc/boost_regex-gcc-d-1_34_shared/winstances.o $(C2) $(CXXFLAGS) $(ICU_CXXFLAGS) ../src/winstances.cpp
+
+gcc/boost_regex-gcc-d-1_34_shared :
+ mkdir -p gcc/boost_regex-gcc-d-1_34_shared
+
+boost_regex-gcc-d-1_34_clean :
+ rm -f gcc/boost_regex-gcc-d-1_34_shared/*.o
+
+./gcc/libboost_regex-gcc-d-1_34.so : gcc/boost_regex-gcc-d-1_34_shared/c_regex_traits.o gcc/boost_regex-gcc-d-1_34_shared/cpp_regex_traits.o gcc/boost_regex-gcc-d-1_34_shared/cregex.o gcc/boost_regex-gcc-d-1_34_shared/fileiter.o gcc/boost_regex-gcc-d-1_34_shared/icu.o gcc/boost_regex-gcc-d-1_34_shared/instances.o gcc/boost_regex-gcc-d-1_34_shared/posix_api.o gcc/boost_regex-gcc-d-1_34_shared/regex.o gcc/boost_regex-gcc-d-1_34_shared/regex_debug.o gcc/boost_regex-gcc-d-1_34_shared/regex_raw_buffer.o gcc/boost_regex-gcc-d-1_34_shared/regex_traits_defaults.o gcc/boost_regex-gcc-d-1_34_shared/static_mutex.o gcc/boost_regex-gcc-d-1_34_shared/usinstances.o gcc/boost_regex-gcc-d-1_34_shared/w32_regex_traits.o gcc/boost_regex-gcc-d-1_34_shared/wc_regex_traits.o gcc/boost_regex-gcc-d-1_34_shared/wide_posix_api.o gcc/boost_regex-gcc-d-1_34_shared/winstances.o
+ $(LINKER) -o gcc/libboost_regex-gcc-d-1_34.so $(LDFLAGS) $(ICU_LDFLAGS) gcc/boost_regex-gcc-d-1_34_shared/c_regex_traits.o gcc/boost_regex-gcc-d-1_34_shared/cpp_regex_traits.o gcc/boost_regex-gcc-d-1_34_shared/cregex.o gcc/boost_regex-gcc-d-1_34_shared/fileiter.o gcc/boost_regex-gcc-d-1_34_shared/icu.o gcc/boost_regex-gcc-d-1_34_shared/instances.o gcc/boost_regex-gcc-d-1_34_shared/posix_api.o gcc/boost_regex-gcc-d-1_34_shared/regex.o gcc/boost_regex-gcc-d-1_34_shared/regex_debug.o gcc/boost_regex-gcc-d-1_34_shared/regex_raw_buffer.o gcc/boost_regex-gcc-d-1_34_shared/regex_traits_defaults.o gcc/boost_regex-gcc-d-1_34_shared/static_mutex.o gcc/boost_regex-gcc-d-1_34_shared/usinstances.o gcc/boost_regex-gcc-d-1_34_shared/w32_regex_traits.o gcc/boost_regex-gcc-d-1_34_shared/wc_regex_traits.o gcc/boost_regex-gcc-d-1_34_shared/wide_posix_api.o gcc/boost_regex-gcc-d-1_34_shared/winstances.o $(ICU_LIBS) $(LIBS)
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/build/gcc.mak
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/build/gcc.mak 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,192 @@
+# copyright John Maddock 2006
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt.
+#
+# auto generated makefile for gcc compiler
+#
+# usage:
+# make
+# brings libraries up to date
+# make clean
+# deletes temporary object files (but not archives).
+#
+
+#
+# the following environment variables are recognised:
+# ICU_PATH= Path to ICU installation.
+# CXXFLAGS= extra compiler options - note applies to all build variants
+# INCLUDES= additional include directories
+# LDFLAGS= additional linker options
+# LIBS= additional library files
+
+# compiler:
+CXX=g++
+LINKER=g++ -shared
+
+#
+# compiler options for release build:
+#
+C1=-c -O2 -I../../..
+#
+# compiler options for debug build:
+#
+C2=-c -g -I../../..
+
+ifeq "$(ICU_PATH)" ""
+$(warning "Building Boost.Regex without ICU / Unicode support:")
+$(warning "Hint: set ICU_PATH on the nmake command line to point ")
+$(warning "to your ICU installation if you have one.")
+else
+ICU_CXXFLAGS= -DBOOST_HAS_ICU=1 -I$(ICU_PATH)/include
+ICU_LDFLAGS= -L$(ICU_PATH)/lib
+ICU_LIBS= -licui18n -licuuc
+$(warning "Building Boost.Regex with ICU in $(ICU_PATH)")
+endif
+
+
+ALL_HEADER= ../../../boost/regex/concepts.hpp ../../../boost/regex/config.hpp ../../../boost/regex/icu.hpp ../../../boost/regex/mfc.hpp ../../../boost/regex/pattern_except.hpp ../../../boost/regex/regex_traits.hpp ../../../boost/regex/user.hpp ../../../boost/regex/v4/basic_regex.hpp ../../../boost/regex/v4/basic_regex_creator.hpp ../../../boost/regex/v4/basic_regex_parser.hpp ../../../boost/regex/v4/c_regex_traits.hpp ../../../boost/regex/v4/char_regex_traits.hpp ../../../boost/regex/v4/cpp_regex_traits.hpp ../../../boost/regex/v4/cregex.hpp ../../../boost/regex/v4/error_type.hpp ../../../boost/regex/v4/fileiter.hpp ../../../boost/regex/v4/instances.hpp ../../../boost/regex/v4/iterator_category.hpp ../../../boost/regex/v4/iterator_traits.hpp ../../../boost/regex/v4/match_flags.hpp ../../../boost/regex/v4/match_results.hpp ../../../boost/regex/v4/mem_block_cache.hpp ../../../boost/regex/v4/perl_matcher.hpp ../../../boost/regex/v4/perl_matcher_common.hpp ../../../boost/regex/v4/perl_matcher_non_recursive.hpp
../../../boost/regex/v4/perl_matcher_recursive.hpp ../../../boost/regex/v4/primary_transform.hpp ../../../boost/regex/v4/protected_call.hpp ../../../boost/regex/v4/regbase.hpp ../../../boost/regex/v4/regex.hpp ../../../boost/regex/v4/regex_cstring.hpp ../../../boost/regex/v4/regex_format.hpp ../../../boost/regex/v4/regex_fwd.hpp ../../../boost/regex/v4/regex_grep.hpp ../../../boost/regex/v4/regex_iterator.hpp ../../../boost/regex/v4/regex_kmp.hpp ../../../boost/regex/v4/regex_match.hpp ../../../boost/regex/v4/regex_merge.hpp ../../../boost/regex/v4/regex_raw_buffer.hpp ../../../boost/regex/v4/regex_replace.hpp ../../../boost/regex/v4/regex_search.hpp ../../../boost/regex/v4/regex_split.hpp ../../../boost/regex/v4/regex_stack.hpp ../../../boost/regex/v4/regex_token_iterator.hpp ../../../boost/regex/v4/regex_traits.hpp ../../../boost/regex/v4/regex_traits_defaults.hpp ../../../boost/regex/v4/regex_workaround.hpp ../../../boost/regex/v4/states.hpp ../../../boost/regex/v4/sub_match.hpp ../../../boost/regex/v4/sy
ntax_type.hpp ../../../boost/regex/v4/u32regex_iterator.hpp ../../../boost/regex/v4/u32regex_token_iterator.hpp ../../../boost/regex/v4/w32_regex_traits.hpp ../../../boost/regex/config/borland.hpp ../../../boost/regex/config/cwchar.hpp
+
+all : gcc gcc gcc/boost_regex-gcc-1_34 ./gcc/libboost_regex-gcc-1_34.a gcc gcc/boost_regex-gcc-d-1_34 ./gcc/libboost_regex-gcc-d-1_34.a
+
+gcc :
+ mkdir -p gcc
+
+clean : boost_regex-gcc-1_34_clean boost_regex-gcc-d-1_34_clean
+
+install : all
+
+
+
+########################################################
+#
+# section for libboost_regex-gcc-1_34.a
+#
+########################################################
+gcc/boost_regex-gcc-1_34/c_regex_traits.o: ../src/c_regex_traits.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o gcc/boost_regex-gcc-1_34/c_regex_traits.o $(C1) $(CXXFLAGS) $(ICU_CXXFLAGS) ../src/c_regex_traits.cpp
+
+gcc/boost_regex-gcc-1_34/cpp_regex_traits.o: ../src/cpp_regex_traits.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o gcc/boost_regex-gcc-1_34/cpp_regex_traits.o $(C1) $(CXXFLAGS) $(ICU_CXXFLAGS) ../src/cpp_regex_traits.cpp
+
+gcc/boost_regex-gcc-1_34/cregex.o: ../src/cregex.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o gcc/boost_regex-gcc-1_34/cregex.o $(C1) $(CXXFLAGS) $(ICU_CXXFLAGS) ../src/cregex.cpp
+
+gcc/boost_regex-gcc-1_34/fileiter.o: ../src/fileiter.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o gcc/boost_regex-gcc-1_34/fileiter.o $(C1) $(CXXFLAGS) $(ICU_CXXFLAGS) ../src/fileiter.cpp
+
+gcc/boost_regex-gcc-1_34/icu.o: ../src/icu.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o gcc/boost_regex-gcc-1_34/icu.o $(C1) $(CXXFLAGS) $(ICU_CXXFLAGS) ../src/icu.cpp
+
+gcc/boost_regex-gcc-1_34/instances.o: ../src/instances.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o gcc/boost_regex-gcc-1_34/instances.o $(C1) $(CXXFLAGS) $(ICU_CXXFLAGS) ../src/instances.cpp
+
+gcc/boost_regex-gcc-1_34/posix_api.o: ../src/posix_api.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o gcc/boost_regex-gcc-1_34/posix_api.o $(C1) $(CXXFLAGS) $(ICU_CXXFLAGS) ../src/posix_api.cpp
+
+gcc/boost_regex-gcc-1_34/regex.o: ../src/regex.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o gcc/boost_regex-gcc-1_34/regex.o $(C1) $(CXXFLAGS) $(ICU_CXXFLAGS) ../src/regex.cpp
+
+gcc/boost_regex-gcc-1_34/regex_debug.o: ../src/regex_debug.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o gcc/boost_regex-gcc-1_34/regex_debug.o $(C1) $(CXXFLAGS) $(ICU_CXXFLAGS) ../src/regex_debug.cpp
+
+gcc/boost_regex-gcc-1_34/regex_raw_buffer.o: ../src/regex_raw_buffer.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o gcc/boost_regex-gcc-1_34/regex_raw_buffer.o $(C1) $(CXXFLAGS) $(ICU_CXXFLAGS) ../src/regex_raw_buffer.cpp
+
+gcc/boost_regex-gcc-1_34/regex_traits_defaults.o: ../src/regex_traits_defaults.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o gcc/boost_regex-gcc-1_34/regex_traits_defaults.o $(C1) $(CXXFLAGS) $(ICU_CXXFLAGS) ../src/regex_traits_defaults.cpp
+
+gcc/boost_regex-gcc-1_34/static_mutex.o: ../src/static_mutex.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o gcc/boost_regex-gcc-1_34/static_mutex.o $(C1) $(CXXFLAGS) $(ICU_CXXFLAGS) ../src/static_mutex.cpp
+
+gcc/boost_regex-gcc-1_34/usinstances.o: ../src/usinstances.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o gcc/boost_regex-gcc-1_34/usinstances.o $(C1) $(CXXFLAGS) $(ICU_CXXFLAGS) ../src/usinstances.cpp
+
+gcc/boost_regex-gcc-1_34/w32_regex_traits.o: ../src/w32_regex_traits.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o gcc/boost_regex-gcc-1_34/w32_regex_traits.o $(C1) $(CXXFLAGS) $(ICU_CXXFLAGS) ../src/w32_regex_traits.cpp
+
+gcc/boost_regex-gcc-1_34/wc_regex_traits.o: ../src/wc_regex_traits.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o gcc/boost_regex-gcc-1_34/wc_regex_traits.o $(C1) $(CXXFLAGS) $(ICU_CXXFLAGS) ../src/wc_regex_traits.cpp
+
+gcc/boost_regex-gcc-1_34/wide_posix_api.o: ../src/wide_posix_api.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o gcc/boost_regex-gcc-1_34/wide_posix_api.o $(C1) $(CXXFLAGS) $(ICU_CXXFLAGS) ../src/wide_posix_api.cpp
+
+gcc/boost_regex-gcc-1_34/winstances.o: ../src/winstances.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o gcc/boost_regex-gcc-1_34/winstances.o $(C1) $(CXXFLAGS) $(ICU_CXXFLAGS) ../src/winstances.cpp
+
+gcc/boost_regex-gcc-1_34 :
+ mkdir -p gcc/boost_regex-gcc-1_34
+
+boost_regex-gcc-1_34_clean :
+ rm -f gcc/boost_regex-gcc-1_34/*.o
+
+./gcc/libboost_regex-gcc-1_34.a : gcc/boost_regex-gcc-1_34/c_regex_traits.o gcc/boost_regex-gcc-1_34/cpp_regex_traits.o gcc/boost_regex-gcc-1_34/cregex.o gcc/boost_regex-gcc-1_34/fileiter.o gcc/boost_regex-gcc-1_34/icu.o gcc/boost_regex-gcc-1_34/instances.o gcc/boost_regex-gcc-1_34/posix_api.o gcc/boost_regex-gcc-1_34/regex.o gcc/boost_regex-gcc-1_34/regex_debug.o gcc/boost_regex-gcc-1_34/regex_raw_buffer.o gcc/boost_regex-gcc-1_34/regex_traits_defaults.o gcc/boost_regex-gcc-1_34/static_mutex.o gcc/boost_regex-gcc-1_34/usinstances.o gcc/boost_regex-gcc-1_34/w32_regex_traits.o gcc/boost_regex-gcc-1_34/wc_regex_traits.o gcc/boost_regex-gcc-1_34/wide_posix_api.o gcc/boost_regex-gcc-1_34/winstances.o
+ ar -r gcc/libboost_regex-gcc-1_34.a gcc/boost_regex-gcc-1_34/c_regex_traits.o gcc/boost_regex-gcc-1_34/cpp_regex_traits.o gcc/boost_regex-gcc-1_34/cregex.o gcc/boost_regex-gcc-1_34/fileiter.o gcc/boost_regex-gcc-1_34/icu.o gcc/boost_regex-gcc-1_34/instances.o gcc/boost_regex-gcc-1_34/posix_api.o gcc/boost_regex-gcc-1_34/regex.o gcc/boost_regex-gcc-1_34/regex_debug.o gcc/boost_regex-gcc-1_34/regex_raw_buffer.o gcc/boost_regex-gcc-1_34/regex_traits_defaults.o gcc/boost_regex-gcc-1_34/static_mutex.o gcc/boost_regex-gcc-1_34/usinstances.o gcc/boost_regex-gcc-1_34/w32_regex_traits.o gcc/boost_regex-gcc-1_34/wc_regex_traits.o gcc/boost_regex-gcc-1_34/wide_posix_api.o gcc/boost_regex-gcc-1_34/winstances.o
+ -ar -s gcc/libboost_regex-gcc-1_34.a
+
+########################################################
+#
+# section for libboost_regex-gcc-d-1_34.a
+#
+########################################################
+gcc/boost_regex-gcc-d-1_34/c_regex_traits.o: ../src/c_regex_traits.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o gcc/boost_regex-gcc-d-1_34/c_regex_traits.o $(C2) $(CXXFLAGS) $(ICU_CXXFLAGS) ../src/c_regex_traits.cpp
+
+gcc/boost_regex-gcc-d-1_34/cpp_regex_traits.o: ../src/cpp_regex_traits.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o gcc/boost_regex-gcc-d-1_34/cpp_regex_traits.o $(C2) $(CXXFLAGS) $(ICU_CXXFLAGS) ../src/cpp_regex_traits.cpp
+
+gcc/boost_regex-gcc-d-1_34/cregex.o: ../src/cregex.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o gcc/boost_regex-gcc-d-1_34/cregex.o $(C2) $(CXXFLAGS) $(ICU_CXXFLAGS) ../src/cregex.cpp
+
+gcc/boost_regex-gcc-d-1_34/fileiter.o: ../src/fileiter.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o gcc/boost_regex-gcc-d-1_34/fileiter.o $(C2) $(CXXFLAGS) $(ICU_CXXFLAGS) ../src/fileiter.cpp
+
+gcc/boost_regex-gcc-d-1_34/icu.o: ../src/icu.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o gcc/boost_regex-gcc-d-1_34/icu.o $(C2) $(CXXFLAGS) $(ICU_CXXFLAGS) ../src/icu.cpp
+
+gcc/boost_regex-gcc-d-1_34/instances.o: ../src/instances.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o gcc/boost_regex-gcc-d-1_34/instances.o $(C2) $(CXXFLAGS) $(ICU_CXXFLAGS) ../src/instances.cpp
+
+gcc/boost_regex-gcc-d-1_34/posix_api.o: ../src/posix_api.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o gcc/boost_regex-gcc-d-1_34/posix_api.o $(C2) $(CXXFLAGS) $(ICU_CXXFLAGS) ../src/posix_api.cpp
+
+gcc/boost_regex-gcc-d-1_34/regex.o: ../src/regex.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o gcc/boost_regex-gcc-d-1_34/regex.o $(C2) $(CXXFLAGS) $(ICU_CXXFLAGS) ../src/regex.cpp
+
+gcc/boost_regex-gcc-d-1_34/regex_debug.o: ../src/regex_debug.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o gcc/boost_regex-gcc-d-1_34/regex_debug.o $(C2) $(CXXFLAGS) $(ICU_CXXFLAGS) ../src/regex_debug.cpp
+
+gcc/boost_regex-gcc-d-1_34/regex_raw_buffer.o: ../src/regex_raw_buffer.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o gcc/boost_regex-gcc-d-1_34/regex_raw_buffer.o $(C2) $(CXXFLAGS) $(ICU_CXXFLAGS) ../src/regex_raw_buffer.cpp
+
+gcc/boost_regex-gcc-d-1_34/regex_traits_defaults.o: ../src/regex_traits_defaults.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o gcc/boost_regex-gcc-d-1_34/regex_traits_defaults.o $(C2) $(CXXFLAGS) $(ICU_CXXFLAGS) ../src/regex_traits_defaults.cpp
+
+gcc/boost_regex-gcc-d-1_34/static_mutex.o: ../src/static_mutex.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o gcc/boost_regex-gcc-d-1_34/static_mutex.o $(C2) $(CXXFLAGS) $(ICU_CXXFLAGS) ../src/static_mutex.cpp
+
+gcc/boost_regex-gcc-d-1_34/usinstances.o: ../src/usinstances.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o gcc/boost_regex-gcc-d-1_34/usinstances.o $(C2) $(CXXFLAGS) $(ICU_CXXFLAGS) ../src/usinstances.cpp
+
+gcc/boost_regex-gcc-d-1_34/w32_regex_traits.o: ../src/w32_regex_traits.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o gcc/boost_regex-gcc-d-1_34/w32_regex_traits.o $(C2) $(CXXFLAGS) $(ICU_CXXFLAGS) ../src/w32_regex_traits.cpp
+
+gcc/boost_regex-gcc-d-1_34/wc_regex_traits.o: ../src/wc_regex_traits.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o gcc/boost_regex-gcc-d-1_34/wc_regex_traits.o $(C2) $(CXXFLAGS) $(ICU_CXXFLAGS) ../src/wc_regex_traits.cpp
+
+gcc/boost_regex-gcc-d-1_34/wide_posix_api.o: ../src/wide_posix_api.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o gcc/boost_regex-gcc-d-1_34/wide_posix_api.o $(C2) $(CXXFLAGS) $(ICU_CXXFLAGS) ../src/wide_posix_api.cpp
+
+gcc/boost_regex-gcc-d-1_34/winstances.o: ../src/winstances.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o gcc/boost_regex-gcc-d-1_34/winstances.o $(C2) $(CXXFLAGS) $(ICU_CXXFLAGS) ../src/winstances.cpp
+
+gcc/boost_regex-gcc-d-1_34 :
+ mkdir -p gcc/boost_regex-gcc-d-1_34
+
+boost_regex-gcc-d-1_34_clean :
+ rm -f gcc/boost_regex-gcc-d-1_34/*.o
+
+./gcc/libboost_regex-gcc-d-1_34.a : gcc/boost_regex-gcc-d-1_34/c_regex_traits.o gcc/boost_regex-gcc-d-1_34/cpp_regex_traits.o gcc/boost_regex-gcc-d-1_34/cregex.o gcc/boost_regex-gcc-d-1_34/fileiter.o gcc/boost_regex-gcc-d-1_34/icu.o gcc/boost_regex-gcc-d-1_34/instances.o gcc/boost_regex-gcc-d-1_34/posix_api.o gcc/boost_regex-gcc-d-1_34/regex.o gcc/boost_regex-gcc-d-1_34/regex_debug.o gcc/boost_regex-gcc-d-1_34/regex_raw_buffer.o gcc/boost_regex-gcc-d-1_34/regex_traits_defaults.o gcc/boost_regex-gcc-d-1_34/static_mutex.o gcc/boost_regex-gcc-d-1_34/usinstances.o gcc/boost_regex-gcc-d-1_34/w32_regex_traits.o gcc/boost_regex-gcc-d-1_34/wc_regex_traits.o gcc/boost_regex-gcc-d-1_34/wide_posix_api.o gcc/boost_regex-gcc-d-1_34/winstances.o
+ ar -r gcc/libboost_regex-gcc-d-1_34.a gcc/boost_regex-gcc-d-1_34/c_regex_traits.o gcc/boost_regex-gcc-d-1_34/cpp_regex_traits.o gcc/boost_regex-gcc-d-1_34/cregex.o gcc/boost_regex-gcc-d-1_34/fileiter.o gcc/boost_regex-gcc-d-1_34/icu.o gcc/boost_regex-gcc-d-1_34/instances.o gcc/boost_regex-gcc-d-1_34/posix_api.o gcc/boost_regex-gcc-d-1_34/regex.o gcc/boost_regex-gcc-d-1_34/regex_debug.o gcc/boost_regex-gcc-d-1_34/regex_raw_buffer.o gcc/boost_regex-gcc-d-1_34/regex_traits_defaults.o gcc/boost_regex-gcc-d-1_34/static_mutex.o gcc/boost_regex-gcc-d-1_34/usinstances.o gcc/boost_regex-gcc-d-1_34/w32_regex_traits.o gcc/boost_regex-gcc-d-1_34/wc_regex_traits.o gcc/boost_regex-gcc-d-1_34/wide_posix_api.o gcc/boost_regex-gcc-d-1_34/winstances.o
+ -ar -s gcc/libboost_regex-gcc-d-1_34.a
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/build/gcc/libboost_regex-gcc-1_34.a
==============================================================================
Binary file. No diff available.

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/build/gcc/libboost_regex-gcc-d-1_34.a
==============================================================================
Binary file. No diff available.

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/build/gcc_gen.sh
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/build/gcc_gen.sh 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,273 @@
+#! /bin/bash
+
+# copyright John Maddock 2003
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt.
+
+libname=""
+src=""
+header=""
+all_dep=""
+
+# current makefile:
+out=""
+# temporary file:
+tout=""
+# install target temp file:
+iout=""
+# debug flag:
+debug="no"
+# compile options:
+opts=""
+# main output sub-directory:
+subdir=""
+# vcl flag:
+use_vcl="yes"
+
+###############################################################
+#
+# gcc generator section:
+#
+###############################################################
+
+gcc_shared="no"
+
+function gcc_gen_lib()
+{
+ if test "$gcc_shared" == "yes"; then
+ obj_dir="$libname""_shared"
+ all_dep="$all_dep $subdir $subdir/$obj_dir ./$subdir/lib$libname.so"
+ else
+ obj_dir="$libname"
+ all_dep="$all_dep $subdir $subdir/$obj_dir ./$subdir/lib$libname.a"
+ fi
+#
+# set up section comments:
+ cat >> $tout << EOF
+########################################################
+#
+# section for lib$libname.a
+#
+########################################################
+EOF
+#
+# process source files:
+ all_obj=""
+ for file in $src
+ do
+ obj=`echo "$file" | sed 's/.*src\/\(.*\)cpp/\1o/g'`
+ obj="$subdir/$obj_dir/$obj"
+ all_obj="$all_obj $obj"
+ echo "$obj: $file \$(ALL_HEADER)" >> $tout
+ echo " \$(CXX) \$(INCLUDES) -o $obj $opts \$(CXXFLAGS) \$(ICU_CXXFLAGS) $file" >> $tout
+ echo "" >> $tout
+ done
+#
+# now for the directories for this library:
+ echo "$subdir/$obj_dir : " >> $tout
+ echo " mkdir -p $subdir/$obj_dir" >> $tout
+ echo "" >> $tout
+#
+# now for the clean options for this library:
+ all_clean="$all_clean $libname""_clean"
+ echo "$libname"_clean : >> $tout
+ echo " rm -f $subdir/$obj_dir/*.o" >> $tout
+ echo "" >> $tout
+#
+# now for the main target for this library:
+ if test "$gcc_shared" == "yes"; then
+ echo ./$subdir/lib$libname.so : $all_obj >> $tout
+ echo " \$(LINKER) -o $subdir/lib$libname.so \$(LDFLAGS) \$(ICU_LDFLAGS) $all_obj \$(ICU_LIBS) \$(LIBS)" >> $tout
+ else
+ echo ./$subdir/lib$libname.a : $all_obj >> $tout
+ echo " ar -r $subdir/lib$libname.a $all_obj" >> $tout
+ echo " -ar -s $subdir/lib$libname.a" >> $tout
+ fi
+ echo "" >> $tout
+}
+
+function gcc_gen()
+{
+ out="gcc.mak"
+ tout="temp"
+ iout="temp_install"
+ subdir="gcc"
+ all_dep=""
+ all_clean=""
+ echo > $out
+ echo > $tout
+ echo > $iout
+
+ libname="boost_regex-gcc-${boost_version}"
+ opts="\$(C1)"
+ gcc_gen_lib
+ libname="boost_regex-gcc-d-${boost_version}"
+ opts="\$(C2)"
+ gcc_gen_lib
+
+
+ cat > $out << EOF
+# copyright John Maddock 2006
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt.
+#
+# auto generated makefile for gcc compiler
+#
+# usage:
+# make
+# brings libraries up to date
+# make clean
+# deletes temporary object files (but not archives).
+#
+
+#
+# the following environment variables are recognised:
+# ICU_PATH= Path to ICU installation.
+# CXXFLAGS= extra compiler options - note applies to all build variants
+# INCLUDES= additional include directories
+# LDFLAGS= additional linker options
+# LIBS= additional library files
+
+# compiler:
+CXX=g++
+LINKER=g++ -shared
+
+#
+# compiler options for release build:
+#
+C1=-c -O2 -I../../..
+#
+# compiler options for debug build:
+#
+C2=-c -g -I../../..
+
+ifeq "\$(ICU_PATH)" ""
+\$(warning "Building Boost.Regex without ICU / Unicode support:")
+\$(warning "Hint: set ICU_PATH on the nmake command line to point ")
+\$(warning "to your ICU installation if you have one.")
+else
+ICU_CXXFLAGS= -DBOOST_HAS_ICU=1 -I\$(ICU_PATH)/include
+ICU_LDFLAGS= -L\$(ICU_PATH)/lib
+ICU_LIBS= -licui18n -licuuc
+\$(warning "Building Boost.Regex with ICU in \$(ICU_PATH)")
+endif
+
+EOF
+ echo "" >> $out
+ echo "ALL_HEADER=$header" >> $out
+ echo "" >> $out
+ echo "all : $subdir $all_dep" >> $out
+ echo >> $out
+ echo "$subdir :" >> $out
+ echo " mkdir -p $subdir" >> $out
+ echo >> $out
+ echo "clean : $all_clean" >> $out
+ echo >> $out
+ echo "install : all" >> $out
+ cat $iout >> $out
+ echo >> $out
+ cat $tout >> $out
+}
+
+function gcc_gen_shared()
+{
+ out="gcc-shared.mak"
+ tout="temp"
+ iout="temp_install"
+ subdir="gcc"
+ all_dep=""
+ all_clean=""
+ echo > $out
+ echo > $tout
+ echo > $iout
+
+ libname="boost_regex-gcc-${boost_version}"
+ opts="\$(C1)"
+ gcc_gen_lib
+ libname="boost_regex-gcc-d-${boost_version}"
+ opts="\$(C2)"
+ gcc_gen_lib
+
+
+ cat > $out << EOF
+#
+# auto generated makefile for gcc compiler
+#
+# usage:
+# make
+# brings libraries up to date
+# make clean
+# deletes temporary object files (but not archives).
+#
+
+#
+# the following environment variables are recognised:
+# ICU_PATH= Path to ICU installation.
+# CXXFLAGS= extra compiler options - note applies to all build variants
+# INCLUDES= additional include directories
+# LDFLAGS= additional linker options
+# LIBS= additional library files
+
+# compiler:
+CXX=g++
+LINKER=g++ -shared
+
+#
+# compiler options for release build:
+#
+C1=-c -O2 -I../../.. -fPIC
+#
+# compiler options for debug build:
+#
+C2=-c -g -I../../.. -fPIC
+
+ifeq "\$(ICU_PATH)" ""
+\$(warning "Building Boost.Regex without ICU / Unicode support:")
+\$(warning "Hint: set ICU_PATH on the nmake command line to point ")
+\$(warning "to your ICU installation if you have one.")
+else
+ICU_CXXFLAGS= -DBOOST_HAS_ICU=1 -I\$(ICU_PATH)/include
+ICU_LDFLAGS= -L\$(ICU_PATH)/lib
+ICU_LIBS= -licui18n -licuuc
+\$(warning "Building Boost.Regex with ICU in \$(ICU_PATH)")
+endif
+
+EOF
+ echo "" >> $out
+ echo "ALL_HEADER=$header" >> $out
+ echo "" >> $out
+ echo "all : $subdir $all_dep" >> $out
+ echo >> $out
+ echo "$subdir :" >> $out
+ echo " mkdir -p $subdir" >> $out
+ echo >> $out
+ echo "clean : $all_clean" >> $out
+ echo >> $out
+ echo "install : all" >> $out
+ cat $iout >> $out
+ echo >> $out
+ cat $tout >> $out
+}
+
+#
+# locate source files:
+#
+. common.sh
+
+#
+# generate gcc makefile:
+gcc_gen
+gcc_shared="yes"
+gcc_gen_shared
+
+
+#
+# remove tmep files;
+rm -f $tout $iout
+
+
+
+
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/build/generic.mak
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/build/generic.mak 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,110 @@
+# copyright John Maddock 2006
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt.
+#
+# auto generated makefile for generic compiler
+#
+# usage:
+# make
+# brings libraries up to date
+# make clean
+# deletes temporary object files (but not archives).
+#
+
+#
+# the following environment variables are recognised:
+# CXXFLAGS= extra compiler options - note applies to all build variants
+# INCLUDES= additional include directories
+# LDFLAGS= additional linker options
+# LIBS= additional library files
+# CXX= compiler to use
+# LINKER= linker/archiver to use
+# name of subdirectory to use for object/archive files:
+DIRNAME=generic
+
+#
+# default compiler options for release build:
+#
+C1=-c -O2 -I../../../
+
+
+
+ALL_HEADER= ../../../boost/regex/concepts.hpp ../../../boost/regex/config.hpp ../../../boost/regex/icu.hpp ../../../boost/regex/mfc.hpp ../../../boost/regex/pattern_except.hpp ../../../boost/regex/regex_traits.hpp ../../../boost/regex/user.hpp ../../../boost/regex/v4/basic_regex.hpp ../../../boost/regex/v4/basic_regex_creator.hpp ../../../boost/regex/v4/basic_regex_parser.hpp ../../../boost/regex/v4/c_regex_traits.hpp ../../../boost/regex/v4/char_regex_traits.hpp ../../../boost/regex/v4/cpp_regex_traits.hpp ../../../boost/regex/v4/cregex.hpp ../../../boost/regex/v4/error_type.hpp ../../../boost/regex/v4/fileiter.hpp ../../../boost/regex/v4/instances.hpp ../../../boost/regex/v4/iterator_category.hpp ../../../boost/regex/v4/iterator_traits.hpp ../../../boost/regex/v4/match_flags.hpp ../../../boost/regex/v4/match_results.hpp ../../../boost/regex/v4/mem_block_cache.hpp ../../../boost/regex/v4/perl_matcher.hpp ../../../boost/regex/v4/perl_matcher_common.hpp ../../../boost/regex/v4/perl_matcher_non_recursive.hpp
../../../boost/regex/v4/perl_matcher_recursive.hpp ../../../boost/regex/v4/primary_transform.hpp ../../../boost/regex/v4/protected_call.hpp ../../../boost/regex/v4/regbase.hpp ../../../boost/regex/v4/regex.hpp ../../../boost/regex/v4/regex_cstring.hpp ../../../boost/regex/v4/regex_format.hpp ../../../boost/regex/v4/regex_fwd.hpp ../../../boost/regex/v4/regex_grep.hpp ../../../boost/regex/v4/regex_iterator.hpp ../../../boost/regex/v4/regex_kmp.hpp ../../../boost/regex/v4/regex_match.hpp ../../../boost/regex/v4/regex_merge.hpp ../../../boost/regex/v4/regex_raw_buffer.hpp ../../../boost/regex/v4/regex_replace.hpp ../../../boost/regex/v4/regex_search.hpp ../../../boost/regex/v4/regex_split.hpp ../../../boost/regex/v4/regex_stack.hpp ../../../boost/regex/v4/regex_token_iterator.hpp ../../../boost/regex/v4/regex_traits.hpp ../../../boost/regex/v4/regex_traits_defaults.hpp ../../../boost/regex/v4/regex_workaround.hpp ../../../boost/regex/v4/states.hpp ../../../boost/regex/v4/sub_match.hpp ../../../boost/regex/v4/sy
ntax_type.hpp ../../../boost/regex/v4/u32regex_iterator.hpp ../../../boost/regex/v4/u32regex_token_iterator.hpp ../../../boost/regex/v4/w32_regex_traits.hpp ../../../boost/regex/config/borland.hpp ../../../boost/regex/config/cwchar.hpp
+
+all : $(DIRNAME) $(DIRNAME) $(DIRNAME)/boost_regex ./$(DIRNAME)/libboost_regex.so
+
+$(DIRNAME) :
+ mkdir -p $(DIRNAME)
+
+clean : boost_regex_clean
+
+install : all
+
+
+
+########################################################
+#
+# section for libboost_regex.so
+#
+########################################################
+$(DIRNAME)/boost_regex/c_regex_traits.o: ../src/c_regex_traits.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o $(DIRNAME)/boost_regex/c_regex_traits.o $(C1) $(CXXFLAGS) ../src/c_regex_traits.cpp
+
+$(DIRNAME)/boost_regex/cpp_regex_traits.o: ../src/cpp_regex_traits.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o $(DIRNAME)/boost_regex/cpp_regex_traits.o $(C1) $(CXXFLAGS) ../src/cpp_regex_traits.cpp
+
+$(DIRNAME)/boost_regex/cregex.o: ../src/cregex.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o $(DIRNAME)/boost_regex/cregex.o $(C1) $(CXXFLAGS) ../src/cregex.cpp
+
+$(DIRNAME)/boost_regex/fileiter.o: ../src/fileiter.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o $(DIRNAME)/boost_regex/fileiter.o $(C1) $(CXXFLAGS) ../src/fileiter.cpp
+
+$(DIRNAME)/boost_regex/icu.o: ../src/icu.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o $(DIRNAME)/boost_regex/icu.o $(C1) $(CXXFLAGS) ../src/icu.cpp
+
+$(DIRNAME)/boost_regex/instances.o: ../src/instances.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o $(DIRNAME)/boost_regex/instances.o $(C1) $(CXXFLAGS) ../src/instances.cpp
+
+$(DIRNAME)/boost_regex/posix_api.o: ../src/posix_api.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o $(DIRNAME)/boost_regex/posix_api.o $(C1) $(CXXFLAGS) ../src/posix_api.cpp
+
+$(DIRNAME)/boost_regex/regex.o: ../src/regex.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o $(DIRNAME)/boost_regex/regex.o $(C1) $(CXXFLAGS) ../src/regex.cpp
+
+$(DIRNAME)/boost_regex/regex_debug.o: ../src/regex_debug.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o $(DIRNAME)/boost_regex/regex_debug.o $(C1) $(CXXFLAGS) ../src/regex_debug.cpp
+
+$(DIRNAME)/boost_regex/regex_raw_buffer.o: ../src/regex_raw_buffer.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o $(DIRNAME)/boost_regex/regex_raw_buffer.o $(C1) $(CXXFLAGS) ../src/regex_raw_buffer.cpp
+
+$(DIRNAME)/boost_regex/regex_traits_defaults.o: ../src/regex_traits_defaults.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o $(DIRNAME)/boost_regex/regex_traits_defaults.o $(C1) $(CXXFLAGS) ../src/regex_traits_defaults.cpp
+
+$(DIRNAME)/boost_regex/static_mutex.o: ../src/static_mutex.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o $(DIRNAME)/boost_regex/static_mutex.o $(C1) $(CXXFLAGS) ../src/static_mutex.cpp
+
+$(DIRNAME)/boost_regex/usinstances.o: ../src/usinstances.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o $(DIRNAME)/boost_regex/usinstances.o $(C1) $(CXXFLAGS) ../src/usinstances.cpp
+
+$(DIRNAME)/boost_regex/w32_regex_traits.o: ../src/w32_regex_traits.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o $(DIRNAME)/boost_regex/w32_regex_traits.o $(C1) $(CXXFLAGS) ../src/w32_regex_traits.cpp
+
+$(DIRNAME)/boost_regex/wc_regex_traits.o: ../src/wc_regex_traits.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o $(DIRNAME)/boost_regex/wc_regex_traits.o $(C1) $(CXXFLAGS) ../src/wc_regex_traits.cpp
+
+$(DIRNAME)/boost_regex/wide_posix_api.o: ../src/wide_posix_api.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o $(DIRNAME)/boost_regex/wide_posix_api.o $(C1) $(CXXFLAGS) ../src/wide_posix_api.cpp
+
+$(DIRNAME)/boost_regex/winstances.o: ../src/winstances.cpp $(ALL_HEADER)
+ $(CXX) $(INCLUDES) -o $(DIRNAME)/boost_regex/winstances.o $(C1) $(CXXFLAGS) ../src/winstances.cpp
+
+$(DIRNAME)/boost_regex :
+ mkdir -p $(DIRNAME)/boost_regex
+
+boost_regex_clean :
+ rm -f $(DIRNAME)/boost_regex/*.o
+
+./$(DIRNAME)/libboost_regex.so : $(DIRNAME)/boost_regex/c_regex_traits.o $(DIRNAME)/boost_regex/cpp_regex_traits.o $(DIRNAME)/boost_regex/cregex.o $(DIRNAME)/boost_regex/fileiter.o $(DIRNAME)/boost_regex/icu.o $(DIRNAME)/boost_regex/instances.o $(DIRNAME)/boost_regex/posix_api.o $(DIRNAME)/boost_regex/regex.o $(DIRNAME)/boost_regex/regex_debug.o $(DIRNAME)/boost_regex/regex_raw_buffer.o $(DIRNAME)/boost_regex/regex_traits_defaults.o $(DIRNAME)/boost_regex/static_mutex.o $(DIRNAME)/boost_regex/usinstances.o $(DIRNAME)/boost_regex/w32_regex_traits.o $(DIRNAME)/boost_regex/wc_regex_traits.o $(DIRNAME)/boost_regex/wide_posix_api.o $(DIRNAME)/boost_regex/winstances.o
+ $(LINKER) $(LDFLAGS) -o $(DIRNAME)/libboost_regex.so $(DIRNAME)/boost_regex/c_regex_traits.o $(DIRNAME)/boost_regex/cpp_regex_traits.o $(DIRNAME)/boost_regex/cregex.o $(DIRNAME)/boost_regex/fileiter.o $(DIRNAME)/boost_regex/icu.o $(DIRNAME)/boost_regex/instances.o $(DIRNAME)/boost_regex/posix_api.o $(DIRNAME)/boost_regex/regex.o $(DIRNAME)/boost_regex/regex_debug.o $(DIRNAME)/boost_regex/regex_raw_buffer.o $(DIRNAME)/boost_regex/regex_traits_defaults.o $(DIRNAME)/boost_regex/static_mutex.o $(DIRNAME)/boost_regex/usinstances.o $(DIRNAME)/boost_regex/w32_regex_traits.o $(DIRNAME)/boost_regex/wc_regex_traits.o $(DIRNAME)/boost_regex/wide_posix_api.o $(DIRNAME)/boost_regex/winstances.o $(LIBS)
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/build/generic_gen.sh
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/build/generic_gen.sh 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,154 @@
+#! /bin/bash
+
+# copyright John Maddock 2003
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt.
+
+libname=""
+src=""
+header=""
+all_dep=""
+
+# current makefile:
+out=""
+# temporary file:
+tout=""
+# install target temp file:
+iout=""
+# debug flag:
+debug="no"
+# compile options:
+opts=""
+# main output sub-directory:
+subdir=""
+# vcl flag:
+use_vcl="yes"
+
+
+#######################################################################
+#
+# section for generic compiler
+#
+#######################################################################
+
+
+function gen_gen_lib()
+{
+ all_dep="$all_dep $subdir $subdir/$libname ./$subdir/lib$libname.so"
+#
+# set up section comments:
+ cat >> $tout << EOF
+########################################################
+#
+# section for lib$libname.so
+#
+########################################################
+EOF
+#
+# process source files:
+ all_obj=""
+ for file in $src
+ do
+ obj=`echo "$file" | sed 's/.*src\/\(.*\)cpp/\1o/g'`
+ obj="$subdir/$libname/$obj"
+ all_obj="$all_obj $obj"
+ echo "$obj: $file \$(ALL_HEADER)" >> $tout
+ echo " \$(CXX) \$(INCLUDES) -o $obj $opts \$(CXXFLAGS) $file" >> $tout
+ echo "" >> $tout
+ done
+#
+# now for the directories for this library:
+ echo "$subdir/$libname : " >> $tout
+ echo " mkdir -p $subdir/$libname" >> $tout
+ echo "" >> $tout
+#
+# now for the clean options for this library:
+ all_clean="$all_clean $libname""_clean"
+ echo "$libname"_clean : >> $tout
+ echo " rm -f $subdir/$libname/*.o" >> $tout
+ echo "" >> $tout
+#
+# now for the main target for this library:
+ echo ./$subdir/lib$libname.so : $all_obj >> $tout
+ echo " \$(LINKER) \$(LDFLAGS) -o $subdir/lib$libname.so $all_obj \$(LIBS)" >> $tout
+ echo "" >> $tout
+}
+
+function gen_gen()
+{
+ out="generic.mak"
+ tout="temp"
+ iout="temp_install"
+ subdir="\$(DIRNAME)"
+ all_dep=""
+ all_clean=""
+ echo > $out
+ echo > $tout
+ echo > $iout
+
+ libname="boost_regex"
+ opts="\$(C1)"
+ gen_gen_lib
+
+ cat > $out << EOF
+# copyright John Maddock 2006
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt.
+#
+# auto generated makefile for generic compiler
+#
+# usage:
+# make
+# brings libraries up to date
+# make clean
+# deletes temporary object files (but not archives).
+#
+
+#
+# the following environment variables are recognised:
+# CXXFLAGS= extra compiler options - note applies to all build variants
+# INCLUDES= additional include directories
+# LDFLAGS= additional linker options
+# LIBS= additional library files
+# CXX= compiler to use
+# LINKER= linker/archiver to use
+# name of subdirectory to use for object/archive files:
+DIRNAME=generic
+
+#
+# default compiler options for release build:
+#
+C1=-c -O2 -I../../../
+
+
+EOF
+ echo "" >> $out
+ echo "ALL_HEADER=$header" >> $out
+ echo "" >> $out
+ echo "all : $subdir $all_dep" >> $out
+ echo >> $out
+ echo "$subdir :" >> $out
+ echo " mkdir -p $subdir" >> $out
+ echo >> $out
+ echo "clean : $all_clean" >> $out
+ echo >> $out
+ echo "install : all" >> $out
+ cat $iout >> $out
+ echo >> $out
+ cat $tout >> $out
+}
+
+. common.sh
+
+#
+# generate generic makefile:
+gen_gen
+
+#
+# remove tmep files;
+rm -f $tout $iout
+
+
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/build/sun_gen.sh
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/build/sun_gen.sh 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,225 @@
+#! /bin/bash
+
+# copyright John Maddock 2003
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt.
+
+libname=""
+src=""
+header=""
+all_dep=""
+
+# current makefile:
+out=""
+# temporary file:
+tout=""
+# install target temp file:
+iout=""
+# debug flag:
+debug="no"
+# compile options:
+opts=""
+# main output sub-directory:
+subdir=""
+# vcl flag:
+use_vcl="yes"
+
+#######################################################################
+#
+# section for Sun Forte 6.1 (5.1 compiler)
+#
+#######################################################################
+
+function sun_gen_lib()
+{
+ all_dep="$all_dep $subdir/$libname $subdir/$libname.a"
+
+#
+# set up section comments:
+ cat >> $tout << EOF
+########################################################
+#
+# section for $libname.a
+#
+########################################################
+EOF
+#
+# process source files:
+ all_obj=""
+ all_lib_obj=""
+ for file in $src
+ do
+ obj=`echo "$file" | sed 's/.*src\/\(.*\)cpp/\1o/g'`
+ obj="$subdir/$libname/$obj"
+ all_obj="$all_obj $obj"
+ all_lib_obj="$all_lib_obj $obj"
+ echo "$obj: $file \$(ALL_HEADER)" >> $tout
+ echo " CC -c \$(INCLUDES) $opts \$(CXXFLAGS) -o $obj $file" >> $tout
+ echo "" >> $tout
+ done
+#
+# now for the directories for this library:
+ echo "$subdir/$libname : " >> $tout
+ echo " mkdir -p $subdir/$libname" >> $tout
+ echo "" >> $tout
+#
+# now for the clean options for this library:
+ all_clean="$all_clean $libname""_clean"
+ echo "$libname"_clean : >> $tout
+ echo " rm -f $subdir/$libname/"'*.o' >> $tout
+ echo " rm -fr $subdir/$libname/\$(SUNWS_CACHE_NAME)" >> $tout
+ echo "" >> $tout
+#
+# now for the main target for this library:
+ echo $subdir/$libname.a : $all_obj >> $tout
+ echo " CC -xar \$(CXXFLAGS) \$(LDFLAGS) -o $subdir/$libname.a $all_lib_obj" >> $tout
+ echo "" >> $tout
+}
+
+function sun_gen_dll()
+{
+ all_dep="$all_dep $subdir/shared_$libname $subdir/$libname.so"
+#
+# set up section comments:
+ cat >> $tout << EOF
+########################################################
+#
+# section for $libname.so
+#
+########################################################
+EOF
+#
+# process source files:
+ all_obj=""
+ for file in $src
+ do
+ obj=`echo "$file" | sed 's/.*src\/\(.*\)cpp/\1o/g'`
+ obj="$subdir/shared_$libname/$obj"
+ all_obj="$all_obj $obj"
+ echo "$obj: $file \$(ALL_HEADER)" >> $tout
+ echo " CC -c \$(INCLUDES) $opts \$(CXXFLAGS) -o $obj $file" >> $tout
+ echo "" >> $tout
+ done
+#
+# now for the directories for this library:
+ echo "$subdir/shared_$libname :" >> $tout
+ echo " mkdir -p $subdir/shared_$libname" >> $tout
+ echo "" >> $tout
+#
+# now for the clean options for this library:
+ all_clean="$all_clean $libname""_clean_shared"
+ echo "$libname"_clean_shared : >> $tout
+ echo " rm -f $subdir/shared_$libname/"'*.o' >> $tout
+ echo " rm -fr $subdir/shared_$libname/\$(SUNWS_CACHE_NAME)" >> $tout
+ echo "" >> $tout
+#
+# now for the main target for this library:
+ echo $subdir/$libname.so : $all_obj >> $tout
+ echo " CC $opts -G -o $subdir/$libname.so \$(LDFLAGS) $all_obj \$(LIBS)" >> $tout
+ echo "" >> $tout
+}
+
+
+
+function sun_gen()
+{
+ tout="temp"
+ iout="temp_install"
+ all_dep="$subdir"
+ all_clean=""
+ echo > $out
+ echo > $tout
+ rm -f $iout
+
+ libname="libboost_regex\$(LIBSUFFIX)"
+ opts="-O2 -I../../../"
+ sun_gen_lib
+
+ libname="libboost_regex_mt\$(LIBSUFFIX)"
+ opts="-O2 -mt -I../../../"
+ sun_gen_lib
+
+ libname="libboost_regex\$(LIBSUFFIX)"
+ opts="-KPIC -O2 -I../../../"
+ sun_gen_dll
+
+ libname="libboost_regex_mt\$(LIBSUFFIX)"
+ opts="-KPIC -O2 -mt -I../../../"
+ sun_gen_dll
+
+
+ cat > $out << EOF
+# copyright John Maddock 2006
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt.
+#
+# auto generated makefile for Sun Forte 6.1
+#
+# usage:
+# make
+# brings libraries up to date
+# make clean
+# removes all temporary files.
+
+#
+# Add additional compiler options here:
+#
+CXXFLAGS=
+#
+# Add additional include directories here:
+#
+INCLUDES=
+#
+# add additional linker flags here:
+#
+LDFLAGS=
+#
+# add additional libraries to link to here:
+#
+LIBS=
+#
+# lib suffix string:
+#
+LIBSUFFIX=
+#
+# template cache path:
+#
+SUNWS_CACHE_NAME=SunWS_cache
+
+
+EOF
+ echo "" >> $out
+ echo "ALL_HEADER=$header" >> $out
+ echo "" >> $out
+ echo "all : $all_dep" >> $out
+ echo >> $out
+ echo "clean : $all_clean" >> $out
+ echo >> $out
+ echo "install : all" >> $out
+# cat $iout >> $out
+ echo >> $out
+ echo $subdir : >> $out
+ echo " mkdir -p $subdir" >> $out
+ echo "" >> $out
+
+ cat $tout >> $out
+}
+
+. common.sh
+
+#
+# generate Sun 6.1 makefile:
+out="sunpro.mak"
+subdir="sunpro"
+sun_gen
+
+
+#
+# remove tmep files;
+rm -f $tout $iout
+
+
+
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/build/sunpro.mak
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/build/sunpro.mak 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,316 @@
+# copyright John Maddock 2006
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt.
+#
+# auto generated makefile for Sun Forte 6.1
+#
+# usage:
+# make
+# brings libraries up to date
+# make clean
+# removes all temporary files.
+
+#
+# Add additional compiler options here:
+#
+CXXFLAGS=
+#
+# Add additional include directories here:
+#
+INCLUDES=
+#
+# add additional linker flags here:
+#
+LDFLAGS=
+#
+# add additional libraries to link to here:
+#
+LIBS=
+#
+# lib suffix string:
+#
+LIBSUFFIX=
+#
+# template cache path:
+#
+SUNWS_CACHE_NAME=SunWS_cache
+
+
+
+ALL_HEADER= ../../../boost/regex/concepts.hpp ../../../boost/regex/config.hpp ../../../boost/regex/icu.hpp ../../../boost/regex/mfc.hpp ../../../boost/regex/pattern_except.hpp ../../../boost/regex/regex_traits.hpp ../../../boost/regex/user.hpp ../../../boost/regex/v4/basic_regex.hpp ../../../boost/regex/v4/basic_regex_creator.hpp ../../../boost/regex/v4/basic_regex_parser.hpp ../../../boost/regex/v4/c_regex_traits.hpp ../../../boost/regex/v4/char_regex_traits.hpp ../../../boost/regex/v4/cpp_regex_traits.hpp ../../../boost/regex/v4/cregex.hpp ../../../boost/regex/v4/error_type.hpp ../../../boost/regex/v4/fileiter.hpp ../../../boost/regex/v4/instances.hpp ../../../boost/regex/v4/iterator_category.hpp ../../../boost/regex/v4/iterator_traits.hpp ../../../boost/regex/v4/match_flags.hpp ../../../boost/regex/v4/match_results.hpp ../../../boost/regex/v4/mem_block_cache.hpp ../../../boost/regex/v4/perl_matcher.hpp ../../../boost/regex/v4/perl_matcher_common.hpp ../../../boost/regex/v4/perl_matcher_non_recursive.hpp
../../../boost/regex/v4/perl_matcher_recursive.hpp ../../../boost/regex/v4/primary_transform.hpp ../../../boost/regex/v4/protected_call.hpp ../../../boost/regex/v4/regbase.hpp ../../../boost/regex/v4/regex.hpp ../../../boost/regex/v4/regex_cstring.hpp ../../../boost/regex/v4/regex_format.hpp ../../../boost/regex/v4/regex_fwd.hpp ../../../boost/regex/v4/regex_grep.hpp ../../../boost/regex/v4/regex_iterator.hpp ../../../boost/regex/v4/regex_kmp.hpp ../../../boost/regex/v4/regex_match.hpp ../../../boost/regex/v4/regex_merge.hpp ../../../boost/regex/v4/regex_raw_buffer.hpp ../../../boost/regex/v4/regex_replace.hpp ../../../boost/regex/v4/regex_search.hpp ../../../boost/regex/v4/regex_split.hpp ../../../boost/regex/v4/regex_stack.hpp ../../../boost/regex/v4/regex_token_iterator.hpp ../../../boost/regex/v4/regex_traits.hpp ../../../boost/regex/v4/regex_traits_defaults.hpp ../../../boost/regex/v4/regex_workaround.hpp ../../../boost/regex/v4/states.hpp ../../../boost/regex/v4/sub_match.hpp ../../../boost/regex/v4/sy
ntax_type.hpp ../../../boost/regex/v4/u32regex_iterator.hpp ../../../boost/regex/v4/u32regex_token_iterator.hpp ../../../boost/regex/v4/w32_regex_traits.hpp ../../../boost/regex/config/borland.hpp ../../../boost/regex/config/cwchar.hpp
+
+all : sunpro sunpro/libboost_regex$(LIBSUFFIX) sunpro/libboost_regex$(LIBSUFFIX).a sunpro/libboost_regex_mt$(LIBSUFFIX) sunpro/libboost_regex_mt$(LIBSUFFIX).a sunpro/shared_libboost_regex$(LIBSUFFIX) sunpro/libboost_regex$(LIBSUFFIX).so sunpro/shared_libboost_regex_mt$(LIBSUFFIX) sunpro/libboost_regex_mt$(LIBSUFFIX).so
+
+clean : libboost_regex$(LIBSUFFIX)_clean libboost_regex_mt$(LIBSUFFIX)_clean libboost_regex$(LIBSUFFIX)_clean_shared libboost_regex_mt$(LIBSUFFIX)_clean_shared
+
+install : all
+
+sunpro :
+ mkdir -p sunpro
+
+
+########################################################
+#
+# section for libboost_regex$(LIBSUFFIX).a
+#
+########################################################
+sunpro/libboost_regex$(LIBSUFFIX)/c_regex_traits.o: ../src/c_regex_traits.cpp $(ALL_HEADER)
+ CC -c $(INCLUDES) -O2 -I../../../ $(CXXFLAGS) -o sunpro/libboost_regex$(LIBSUFFIX)/c_regex_traits.o ../src/c_regex_traits.cpp
+
+sunpro/libboost_regex$(LIBSUFFIX)/cpp_regex_traits.o: ../src/cpp_regex_traits.cpp $(ALL_HEADER)
+ CC -c $(INCLUDES) -O2 -I../../../ $(CXXFLAGS) -o sunpro/libboost_regex$(LIBSUFFIX)/cpp_regex_traits.o ../src/cpp_regex_traits.cpp
+
+sunpro/libboost_regex$(LIBSUFFIX)/cregex.o: ../src/cregex.cpp $(ALL_HEADER)
+ CC -c $(INCLUDES) -O2 -I../../../ $(CXXFLAGS) -o sunpro/libboost_regex$(LIBSUFFIX)/cregex.o ../src/cregex.cpp
+
+sunpro/libboost_regex$(LIBSUFFIX)/fileiter.o: ../src/fileiter.cpp $(ALL_HEADER)
+ CC -c $(INCLUDES) -O2 -I../../../ $(CXXFLAGS) -o sunpro/libboost_regex$(LIBSUFFIX)/fileiter.o ../src/fileiter.cpp
+
+sunpro/libboost_regex$(LIBSUFFIX)/icu.o: ../src/icu.cpp $(ALL_HEADER)
+ CC -c $(INCLUDES) -O2 -I../../../ $(CXXFLAGS) -o sunpro/libboost_regex$(LIBSUFFIX)/icu.o ../src/icu.cpp
+
+sunpro/libboost_regex$(LIBSUFFIX)/instances.o: ../src/instances.cpp $(ALL_HEADER)
+ CC -c $(INCLUDES) -O2 -I../../../ $(CXXFLAGS) -o sunpro/libboost_regex$(LIBSUFFIX)/instances.o ../src/instances.cpp
+
+sunpro/libboost_regex$(LIBSUFFIX)/posix_api.o: ../src/posix_api.cpp $(ALL_HEADER)
+ CC -c $(INCLUDES) -O2 -I../../../ $(CXXFLAGS) -o sunpro/libboost_regex$(LIBSUFFIX)/posix_api.o ../src/posix_api.cpp
+
+sunpro/libboost_regex$(LIBSUFFIX)/regex.o: ../src/regex.cpp $(ALL_HEADER)
+ CC -c $(INCLUDES) -O2 -I../../../ $(CXXFLAGS) -o sunpro/libboost_regex$(LIBSUFFIX)/regex.o ../src/regex.cpp
+
+sunpro/libboost_regex$(LIBSUFFIX)/regex_debug.o: ../src/regex_debug.cpp $(ALL_HEADER)
+ CC -c $(INCLUDES) -O2 -I../../../ $(CXXFLAGS) -o sunpro/libboost_regex$(LIBSUFFIX)/regex_debug.o ../src/regex_debug.cpp
+
+sunpro/libboost_regex$(LIBSUFFIX)/regex_raw_buffer.o: ../src/regex_raw_buffer.cpp $(ALL_HEADER)
+ CC -c $(INCLUDES) -O2 -I../../../ $(CXXFLAGS) -o sunpro/libboost_regex$(LIBSUFFIX)/regex_raw_buffer.o ../src/regex_raw_buffer.cpp
+
+sunpro/libboost_regex$(LIBSUFFIX)/regex_traits_defaults.o: ../src/regex_traits_defaults.cpp $(ALL_HEADER)
+ CC -c $(INCLUDES) -O2 -I../../../ $(CXXFLAGS) -o sunpro/libboost_regex$(LIBSUFFIX)/regex_traits_defaults.o ../src/regex_traits_defaults.cpp
+
+sunpro/libboost_regex$(LIBSUFFIX)/static_mutex.o: ../src/static_mutex.cpp $(ALL_HEADER)
+ CC -c $(INCLUDES) -O2 -I../../../ $(CXXFLAGS) -o sunpro/libboost_regex$(LIBSUFFIX)/static_mutex.o ../src/static_mutex.cpp
+
+sunpro/libboost_regex$(LIBSUFFIX)/usinstances.o: ../src/usinstances.cpp $(ALL_HEADER)
+ CC -c $(INCLUDES) -O2 -I../../../ $(CXXFLAGS) -o sunpro/libboost_regex$(LIBSUFFIX)/usinstances.o ../src/usinstances.cpp
+
+sunpro/libboost_regex$(LIBSUFFIX)/w32_regex_traits.o: ../src/w32_regex_traits.cpp $(ALL_HEADER)
+ CC -c $(INCLUDES) -O2 -I../../../ $(CXXFLAGS) -o sunpro/libboost_regex$(LIBSUFFIX)/w32_regex_traits.o ../src/w32_regex_traits.cpp
+
+sunpro/libboost_regex$(LIBSUFFIX)/wc_regex_traits.o: ../src/wc_regex_traits.cpp $(ALL_HEADER)
+ CC -c $(INCLUDES) -O2 -I../../../ $(CXXFLAGS) -o sunpro/libboost_regex$(LIBSUFFIX)/wc_regex_traits.o ../src/wc_regex_traits.cpp
+
+sunpro/libboost_regex$(LIBSUFFIX)/wide_posix_api.o: ../src/wide_posix_api.cpp $(ALL_HEADER)
+ CC -c $(INCLUDES) -O2 -I../../../ $(CXXFLAGS) -o sunpro/libboost_regex$(LIBSUFFIX)/wide_posix_api.o ../src/wide_posix_api.cpp
+
+sunpro/libboost_regex$(LIBSUFFIX)/winstances.o: ../src/winstances.cpp $(ALL_HEADER)
+ CC -c $(INCLUDES) -O2 -I../../../ $(CXXFLAGS) -o sunpro/libboost_regex$(LIBSUFFIX)/winstances.o ../src/winstances.cpp
+
+sunpro/libboost_regex$(LIBSUFFIX) :
+ mkdir -p sunpro/libboost_regex$(LIBSUFFIX)
+
+libboost_regex$(LIBSUFFIX)_clean :
+ rm -f sunpro/libboost_regex$(LIBSUFFIX)/*.o
+ rm -fr sunpro/libboost_regex$(LIBSUFFIX)/$(SUNWS_CACHE_NAME)
+
+sunpro/libboost_regex$(LIBSUFFIX).a : sunpro/libboost_regex$(LIBSUFFIX)/c_regex_traits.o sunpro/libboost_regex$(LIBSUFFIX)/cpp_regex_traits.o sunpro/libboost_regex$(LIBSUFFIX)/cregex.o sunpro/libboost_regex$(LIBSUFFIX)/fileiter.o sunpro/libboost_regex$(LIBSUFFIX)/icu.o sunpro/libboost_regex$(LIBSUFFIX)/instances.o sunpro/libboost_regex$(LIBSUFFIX)/posix_api.o sunpro/libboost_regex$(LIBSUFFIX)/regex.o sunpro/libboost_regex$(LIBSUFFIX)/regex_debug.o sunpro/libboost_regex$(LIBSUFFIX)/regex_raw_buffer.o sunpro/libboost_regex$(LIBSUFFIX)/regex_traits_defaults.o sunpro/libboost_regex$(LIBSUFFIX)/static_mutex.o sunpro/libboost_regex$(LIBSUFFIX)/usinstances.o sunpro/libboost_regex$(LIBSUFFIX)/w32_regex_traits.o sunpro/libboost_regex$(LIBSUFFIX)/wc_regex_traits.o sunpro/libboost_regex$(LIBSUFFIX)/wide_posix_api.o sunpro/libboost_regex$(LIBSUFFIX)/winstances.o
+ CC -xar $(CXXFLAGS) $(LDFLAGS) -o sunpro/libboost_regex$(LIBSUFFIX).a sunpro/libboost_regex$(LIBSUFFIX)/c_regex_traits.o sunpro/libboost_regex$(LIBSUFFIX)/cpp_regex_traits.o sunpro/libboost_regex$(LIBSUFFIX)/cregex.o sunpro/libboost_regex$(LIBSUFFIX)/fileiter.o sunpro/libboost_regex$(LIBSUFFIX)/icu.o sunpro/libboost_regex$(LIBSUFFIX)/instances.o sunpro/libboost_regex$(LIBSUFFIX)/posix_api.o sunpro/libboost_regex$(LIBSUFFIX)/regex.o sunpro/libboost_regex$(LIBSUFFIX)/regex_debug.o sunpro/libboost_regex$(LIBSUFFIX)/regex_raw_buffer.o sunpro/libboost_regex$(LIBSUFFIX)/regex_traits_defaults.o sunpro/libboost_regex$(LIBSUFFIX)/static_mutex.o sunpro/libboost_regex$(LIBSUFFIX)/usinstances.o sunpro/libboost_regex$(LIBSUFFIX)/w32_regex_traits.o sunpro/libboost_regex$(LIBSUFFIX)/wc_regex_traits.o sunpro/libboost_regex$(LIBSUFFIX)/wide_posix_api.o sunpro/libboost_regex$(LIBSUFFIX)/winstances.o
+
+########################################################
+#
+# section for libboost_regex_mt$(LIBSUFFIX).a
+#
+########################################################
+sunpro/libboost_regex_mt$(LIBSUFFIX)/c_regex_traits.o: ../src/c_regex_traits.cpp $(ALL_HEADER)
+ CC -c $(INCLUDES) -O2 -mt -I../../../ $(CXXFLAGS) -o sunpro/libboost_regex_mt$(LIBSUFFIX)/c_regex_traits.o ../src/c_regex_traits.cpp
+
+sunpro/libboost_regex_mt$(LIBSUFFIX)/cpp_regex_traits.o: ../src/cpp_regex_traits.cpp $(ALL_HEADER)
+ CC -c $(INCLUDES) -O2 -mt -I../../../ $(CXXFLAGS) -o sunpro/libboost_regex_mt$(LIBSUFFIX)/cpp_regex_traits.o ../src/cpp_regex_traits.cpp
+
+sunpro/libboost_regex_mt$(LIBSUFFIX)/cregex.o: ../src/cregex.cpp $(ALL_HEADER)
+ CC -c $(INCLUDES) -O2 -mt -I../../../ $(CXXFLAGS) -o sunpro/libboost_regex_mt$(LIBSUFFIX)/cregex.o ../src/cregex.cpp
+
+sunpro/libboost_regex_mt$(LIBSUFFIX)/fileiter.o: ../src/fileiter.cpp $(ALL_HEADER)
+ CC -c $(INCLUDES) -O2 -mt -I../../../ $(CXXFLAGS) -o sunpro/libboost_regex_mt$(LIBSUFFIX)/fileiter.o ../src/fileiter.cpp
+
+sunpro/libboost_regex_mt$(LIBSUFFIX)/icu.o: ../src/icu.cpp $(ALL_HEADER)
+ CC -c $(INCLUDES) -O2 -mt -I../../../ $(CXXFLAGS) -o sunpro/libboost_regex_mt$(LIBSUFFIX)/icu.o ../src/icu.cpp
+
+sunpro/libboost_regex_mt$(LIBSUFFIX)/instances.o: ../src/instances.cpp $(ALL_HEADER)
+ CC -c $(INCLUDES) -O2 -mt -I../../../ $(CXXFLAGS) -o sunpro/libboost_regex_mt$(LIBSUFFIX)/instances.o ../src/instances.cpp
+
+sunpro/libboost_regex_mt$(LIBSUFFIX)/posix_api.o: ../src/posix_api.cpp $(ALL_HEADER)
+ CC -c $(INCLUDES) -O2 -mt -I../../../ $(CXXFLAGS) -o sunpro/libboost_regex_mt$(LIBSUFFIX)/posix_api.o ../src/posix_api.cpp
+
+sunpro/libboost_regex_mt$(LIBSUFFIX)/regex.o: ../src/regex.cpp $(ALL_HEADER)
+ CC -c $(INCLUDES) -O2 -mt -I../../../ $(CXXFLAGS) -o sunpro/libboost_regex_mt$(LIBSUFFIX)/regex.o ../src/regex.cpp
+
+sunpro/libboost_regex_mt$(LIBSUFFIX)/regex_debug.o: ../src/regex_debug.cpp $(ALL_HEADER)
+ CC -c $(INCLUDES) -O2 -mt -I../../../ $(CXXFLAGS) -o sunpro/libboost_regex_mt$(LIBSUFFIX)/regex_debug.o ../src/regex_debug.cpp
+
+sunpro/libboost_regex_mt$(LIBSUFFIX)/regex_raw_buffer.o: ../src/regex_raw_buffer.cpp $(ALL_HEADER)
+ CC -c $(INCLUDES) -O2 -mt -I../../../ $(CXXFLAGS) -o sunpro/libboost_regex_mt$(LIBSUFFIX)/regex_raw_buffer.o ../src/regex_raw_buffer.cpp
+
+sunpro/libboost_regex_mt$(LIBSUFFIX)/regex_traits_defaults.o: ../src/regex_traits_defaults.cpp $(ALL_HEADER)
+ CC -c $(INCLUDES) -O2 -mt -I../../../ $(CXXFLAGS) -o sunpro/libboost_regex_mt$(LIBSUFFIX)/regex_traits_defaults.o ../src/regex_traits_defaults.cpp
+
+sunpro/libboost_regex_mt$(LIBSUFFIX)/static_mutex.o: ../src/static_mutex.cpp $(ALL_HEADER)
+ CC -c $(INCLUDES) -O2 -mt -I../../../ $(CXXFLAGS) -o sunpro/libboost_regex_mt$(LIBSUFFIX)/static_mutex.o ../src/static_mutex.cpp
+
+sunpro/libboost_regex_mt$(LIBSUFFIX)/usinstances.o: ../src/usinstances.cpp $(ALL_HEADER)
+ CC -c $(INCLUDES) -O2 -mt -I../../../ $(CXXFLAGS) -o sunpro/libboost_regex_mt$(LIBSUFFIX)/usinstances.o ../src/usinstances.cpp
+
+sunpro/libboost_regex_mt$(LIBSUFFIX)/w32_regex_traits.o: ../src/w32_regex_traits.cpp $(ALL_HEADER)
+ CC -c $(INCLUDES) -O2 -mt -I../../../ $(CXXFLAGS) -o sunpro/libboost_regex_mt$(LIBSUFFIX)/w32_regex_traits.o ../src/w32_regex_traits.cpp
+
+sunpro/libboost_regex_mt$(LIBSUFFIX)/wc_regex_traits.o: ../src/wc_regex_traits.cpp $(ALL_HEADER)
+ CC -c $(INCLUDES) -O2 -mt -I../../../ $(CXXFLAGS) -o sunpro/libboost_regex_mt$(LIBSUFFIX)/wc_regex_traits.o ../src/wc_regex_traits.cpp
+
+sunpro/libboost_regex_mt$(LIBSUFFIX)/wide_posix_api.o: ../src/wide_posix_api.cpp $(ALL_HEADER)
+ CC -c $(INCLUDES) -O2 -mt -I../../../ $(CXXFLAGS) -o sunpro/libboost_regex_mt$(LIBSUFFIX)/wide_posix_api.o ../src/wide_posix_api.cpp
+
+sunpro/libboost_regex_mt$(LIBSUFFIX)/winstances.o: ../src/winstances.cpp $(ALL_HEADER)
+ CC -c $(INCLUDES) -O2 -mt -I../../../ $(CXXFLAGS) -o sunpro/libboost_regex_mt$(LIBSUFFIX)/winstances.o ../src/winstances.cpp
+
+sunpro/libboost_regex_mt$(LIBSUFFIX) :
+ mkdir -p sunpro/libboost_regex_mt$(LIBSUFFIX)
+
+libboost_regex_mt$(LIBSUFFIX)_clean :
+ rm -f sunpro/libboost_regex_mt$(LIBSUFFIX)/*.o
+ rm -fr sunpro/libboost_regex_mt$(LIBSUFFIX)/$(SUNWS_CACHE_NAME)
+
+sunpro/libboost_regex_mt$(LIBSUFFIX).a : sunpro/libboost_regex_mt$(LIBSUFFIX)/c_regex_traits.o sunpro/libboost_regex_mt$(LIBSUFFIX)/cpp_regex_traits.o sunpro/libboost_regex_mt$(LIBSUFFIX)/cregex.o sunpro/libboost_regex_mt$(LIBSUFFIX)/fileiter.o sunpro/libboost_regex_mt$(LIBSUFFIX)/icu.o sunpro/libboost_regex_mt$(LIBSUFFIX)/instances.o sunpro/libboost_regex_mt$(LIBSUFFIX)/posix_api.o sunpro/libboost_regex_mt$(LIBSUFFIX)/regex.o sunpro/libboost_regex_mt$(LIBSUFFIX)/regex_debug.o sunpro/libboost_regex_mt$(LIBSUFFIX)/regex_raw_buffer.o sunpro/libboost_regex_mt$(LIBSUFFIX)/regex_traits_defaults.o sunpro/libboost_regex_mt$(LIBSUFFIX)/static_mutex.o sunpro/libboost_regex_mt$(LIBSUFFIX)/usinstances.o sunpro/libboost_regex_mt$(LIBSUFFIX)/w32_regex_traits.o sunpro/libboost_regex_mt$(LIBSUFFIX)/wc_regex_traits.o sunpro/libboost_regex_mt$(LIBSUFFIX)/wide_posix_api.o sunpro/libboost_regex_mt$(LIBSUFFIX)/winstances.o
+ CC -xar $(CXXFLAGS) $(LDFLAGS) -o sunpro/libboost_regex_mt$(LIBSUFFIX).a sunpro/libboost_regex_mt$(LIBSUFFIX)/c_regex_traits.o sunpro/libboost_regex_mt$(LIBSUFFIX)/cpp_regex_traits.o sunpro/libboost_regex_mt$(LIBSUFFIX)/cregex.o sunpro/libboost_regex_mt$(LIBSUFFIX)/fileiter.o sunpro/libboost_regex_mt$(LIBSUFFIX)/icu.o sunpro/libboost_regex_mt$(LIBSUFFIX)/instances.o sunpro/libboost_regex_mt$(LIBSUFFIX)/posix_api.o sunpro/libboost_regex_mt$(LIBSUFFIX)/regex.o sunpro/libboost_regex_mt$(LIBSUFFIX)/regex_debug.o sunpro/libboost_regex_mt$(LIBSUFFIX)/regex_raw_buffer.o sunpro/libboost_regex_mt$(LIBSUFFIX)/regex_traits_defaults.o sunpro/libboost_regex_mt$(LIBSUFFIX)/static_mutex.o sunpro/libboost_regex_mt$(LIBSUFFIX)/usinstances.o sunpro/libboost_regex_mt$(LIBSUFFIX)/w32_regex_traits.o sunpro/libboost_regex_mt$(LIBSUFFIX)/wc_regex_traits.o sunpro/libboost_regex_mt$(LIBSUFFIX)/wide_posix_api.o sunpro/libboost_regex_mt$(LIBSUFFIX)/winstances.o
+
+########################################################
+#
+# section for libboost_regex$(LIBSUFFIX).so
+#
+########################################################
+sunpro/shared_libboost_regex$(LIBSUFFIX)/c_regex_traits.o: ../src/c_regex_traits.cpp $(ALL_HEADER)
+ CC -c $(INCLUDES) -KPIC -O2 -I../../../ $(CXXFLAGS) -o sunpro/shared_libboost_regex$(LIBSUFFIX)/c_regex_traits.o ../src/c_regex_traits.cpp
+
+sunpro/shared_libboost_regex$(LIBSUFFIX)/cpp_regex_traits.o: ../src/cpp_regex_traits.cpp $(ALL_HEADER)
+ CC -c $(INCLUDES) -KPIC -O2 -I../../../ $(CXXFLAGS) -o sunpro/shared_libboost_regex$(LIBSUFFIX)/cpp_regex_traits.o ../src/cpp_regex_traits.cpp
+
+sunpro/shared_libboost_regex$(LIBSUFFIX)/cregex.o: ../src/cregex.cpp $(ALL_HEADER)
+ CC -c $(INCLUDES) -KPIC -O2 -I../../../ $(CXXFLAGS) -o sunpro/shared_libboost_regex$(LIBSUFFIX)/cregex.o ../src/cregex.cpp
+
+sunpro/shared_libboost_regex$(LIBSUFFIX)/fileiter.o: ../src/fileiter.cpp $(ALL_HEADER)
+ CC -c $(INCLUDES) -KPIC -O2 -I../../../ $(CXXFLAGS) -o sunpro/shared_libboost_regex$(LIBSUFFIX)/fileiter.o ../src/fileiter.cpp
+
+sunpro/shared_libboost_regex$(LIBSUFFIX)/icu.o: ../src/icu.cpp $(ALL_HEADER)
+ CC -c $(INCLUDES) -KPIC -O2 -I../../../ $(CXXFLAGS) -o sunpro/shared_libboost_regex$(LIBSUFFIX)/icu.o ../src/icu.cpp
+
+sunpro/shared_libboost_regex$(LIBSUFFIX)/instances.o: ../src/instances.cpp $(ALL_HEADER)
+ CC -c $(INCLUDES) -KPIC -O2 -I../../../ $(CXXFLAGS) -o sunpro/shared_libboost_regex$(LIBSUFFIX)/instances.o ../src/instances.cpp
+
+sunpro/shared_libboost_regex$(LIBSUFFIX)/posix_api.o: ../src/posix_api.cpp $(ALL_HEADER)
+ CC -c $(INCLUDES) -KPIC -O2 -I../../../ $(CXXFLAGS) -o sunpro/shared_libboost_regex$(LIBSUFFIX)/posix_api.o ../src/posix_api.cpp
+
+sunpro/shared_libboost_regex$(LIBSUFFIX)/regex.o: ../src/regex.cpp $(ALL_HEADER)
+ CC -c $(INCLUDES) -KPIC -O2 -I../../../ $(CXXFLAGS) -o sunpro/shared_libboost_regex$(LIBSUFFIX)/regex.o ../src/regex.cpp
+
+sunpro/shared_libboost_regex$(LIBSUFFIX)/regex_debug.o: ../src/regex_debug.cpp $(ALL_HEADER)
+ CC -c $(INCLUDES) -KPIC -O2 -I../../../ $(CXXFLAGS) -o sunpro/shared_libboost_regex$(LIBSUFFIX)/regex_debug.o ../src/regex_debug.cpp
+
+sunpro/shared_libboost_regex$(LIBSUFFIX)/regex_raw_buffer.o: ../src/regex_raw_buffer.cpp $(ALL_HEADER)
+ CC -c $(INCLUDES) -KPIC -O2 -I../../../ $(CXXFLAGS) -o sunpro/shared_libboost_regex$(LIBSUFFIX)/regex_raw_buffer.o ../src/regex_raw_buffer.cpp
+
+sunpro/shared_libboost_regex$(LIBSUFFIX)/regex_traits_defaults.o: ../src/regex_traits_defaults.cpp $(ALL_HEADER)
+ CC -c $(INCLUDES) -KPIC -O2 -I../../../ $(CXXFLAGS) -o sunpro/shared_libboost_regex$(LIBSUFFIX)/regex_traits_defaults.o ../src/regex_traits_defaults.cpp
+
+sunpro/shared_libboost_regex$(LIBSUFFIX)/static_mutex.o: ../src/static_mutex.cpp $(ALL_HEADER)
+ CC -c $(INCLUDES) -KPIC -O2 -I../../../ $(CXXFLAGS) -o sunpro/shared_libboost_regex$(LIBSUFFIX)/static_mutex.o ../src/static_mutex.cpp
+
+sunpro/shared_libboost_regex$(LIBSUFFIX)/usinstances.o: ../src/usinstances.cpp $(ALL_HEADER)
+ CC -c $(INCLUDES) -KPIC -O2 -I../../../ $(CXXFLAGS) -o sunpro/shared_libboost_regex$(LIBSUFFIX)/usinstances.o ../src/usinstances.cpp
+
+sunpro/shared_libboost_regex$(LIBSUFFIX)/w32_regex_traits.o: ../src/w32_regex_traits.cpp $(ALL_HEADER)
+ CC -c $(INCLUDES) -KPIC -O2 -I../../../ $(CXXFLAGS) -o sunpro/shared_libboost_regex$(LIBSUFFIX)/w32_regex_traits.o ../src/w32_regex_traits.cpp
+
+sunpro/shared_libboost_regex$(LIBSUFFIX)/wc_regex_traits.o: ../src/wc_regex_traits.cpp $(ALL_HEADER)
+ CC -c $(INCLUDES) -KPIC -O2 -I../../../ $(CXXFLAGS) -o sunpro/shared_libboost_regex$(LIBSUFFIX)/wc_regex_traits.o ../src/wc_regex_traits.cpp
+
+sunpro/shared_libboost_regex$(LIBSUFFIX)/wide_posix_api.o: ../src/wide_posix_api.cpp $(ALL_HEADER)
+ CC -c $(INCLUDES) -KPIC -O2 -I../../../ $(CXXFLAGS) -o sunpro/shared_libboost_regex$(LIBSUFFIX)/wide_posix_api.o ../src/wide_posix_api.cpp
+
+sunpro/shared_libboost_regex$(LIBSUFFIX)/winstances.o: ../src/winstances.cpp $(ALL_HEADER)
+ CC -c $(INCLUDES) -KPIC -O2 -I../../../ $(CXXFLAGS) -o sunpro/shared_libboost_regex$(LIBSUFFIX)/winstances.o ../src/winstances.cpp
+
+sunpro/shared_libboost_regex$(LIBSUFFIX) :
+ mkdir -p sunpro/shared_libboost_regex$(LIBSUFFIX)
+
+libboost_regex$(LIBSUFFIX)_clean_shared :
+ rm -f sunpro/shared_libboost_regex$(LIBSUFFIX)/*.o
+ rm -fr sunpro/shared_libboost_regex$(LIBSUFFIX)/$(SUNWS_CACHE_NAME)
+
+sunpro/libboost_regex$(LIBSUFFIX).so : sunpro/shared_libboost_regex$(LIBSUFFIX)/c_regex_traits.o sunpro/shared_libboost_regex$(LIBSUFFIX)/cpp_regex_traits.o sunpro/shared_libboost_regex$(LIBSUFFIX)/cregex.o sunpro/shared_libboost_regex$(LIBSUFFIX)/fileiter.o sunpro/shared_libboost_regex$(LIBSUFFIX)/icu.o sunpro/shared_libboost_regex$(LIBSUFFIX)/instances.o sunpro/shared_libboost_regex$(LIBSUFFIX)/posix_api.o sunpro/shared_libboost_regex$(LIBSUFFIX)/regex.o sunpro/shared_libboost_regex$(LIBSUFFIX)/regex_debug.o sunpro/shared_libboost_regex$(LIBSUFFIX)/regex_raw_buffer.o sunpro/shared_libboost_regex$(LIBSUFFIX)/regex_traits_defaults.o sunpro/shared_libboost_regex$(LIBSUFFIX)/static_mutex.o sunpro/shared_libboost_regex$(LIBSUFFIX)/usinstances.o sunpro/shared_libboost_regex$(LIBSUFFIX)/w32_regex_traits.o sunpro/shared_libboost_regex$(LIBSUFFIX)/wc_regex_traits.o sunpro/shared_libboost_regex$(LIBSUFFIX)/wide_posix_api.o sunpro/shared_libboost_regex$(LIBSUFFIX)/winstances.o
+ CC -KPIC -O2 -I../../../ -G -o sunpro/libboost_regex$(LIBSUFFIX).so $(LDFLAGS) sunpro/shared_libboost_regex$(LIBSUFFIX)/c_regex_traits.o sunpro/shared_libboost_regex$(LIBSUFFIX)/cpp_regex_traits.o sunpro/shared_libboost_regex$(LIBSUFFIX)/cregex.o sunpro/shared_libboost_regex$(LIBSUFFIX)/fileiter.o sunpro/shared_libboost_regex$(LIBSUFFIX)/icu.o sunpro/shared_libboost_regex$(LIBSUFFIX)/instances.o sunpro/shared_libboost_regex$(LIBSUFFIX)/posix_api.o sunpro/shared_libboost_regex$(LIBSUFFIX)/regex.o sunpro/shared_libboost_regex$(LIBSUFFIX)/regex_debug.o sunpro/shared_libboost_regex$(LIBSUFFIX)/regex_raw_buffer.o sunpro/shared_libboost_regex$(LIBSUFFIX)/regex_traits_defaults.o sunpro/shared_libboost_regex$(LIBSUFFIX)/static_mutex.o sunpro/shared_libboost_regex$(LIBSUFFIX)/usinstances.o sunpro/shared_libboost_regex$(LIBSUFFIX)/w32_regex_traits.o sunpro/shared_libboost_regex$(LIBSUFFIX)/wc_regex_traits.o sunpro/shared_libboost_regex$(LIBSUFFIX)/wide_posix_api.o sunpro/shared_libboost_regex$(LIBSUFFIX)/winstances
.o $(LIBS)
+
+########################################################
+#
+# section for libboost_regex_mt$(LIBSUFFIX).so
+#
+########################################################
+sunpro/shared_libboost_regex_mt$(LIBSUFFIX)/c_regex_traits.o: ../src/c_regex_traits.cpp $(ALL_HEADER)
+ CC -c $(INCLUDES) -KPIC -O2 -mt -I../../../ $(CXXFLAGS) -o sunpro/shared_libboost_regex_mt$(LIBSUFFIX)/c_regex_traits.o ../src/c_regex_traits.cpp
+
+sunpro/shared_libboost_regex_mt$(LIBSUFFIX)/cpp_regex_traits.o: ../src/cpp_regex_traits.cpp $(ALL_HEADER)
+ CC -c $(INCLUDES) -KPIC -O2 -mt -I../../../ $(CXXFLAGS) -o sunpro/shared_libboost_regex_mt$(LIBSUFFIX)/cpp_regex_traits.o ../src/cpp_regex_traits.cpp
+
+sunpro/shared_libboost_regex_mt$(LIBSUFFIX)/cregex.o: ../src/cregex.cpp $(ALL_HEADER)
+ CC -c $(INCLUDES) -KPIC -O2 -mt -I../../../ $(CXXFLAGS) -o sunpro/shared_libboost_regex_mt$(LIBSUFFIX)/cregex.o ../src/cregex.cpp
+
+sunpro/shared_libboost_regex_mt$(LIBSUFFIX)/fileiter.o: ../src/fileiter.cpp $(ALL_HEADER)
+ CC -c $(INCLUDES) -KPIC -O2 -mt -I../../../ $(CXXFLAGS) -o sunpro/shared_libboost_regex_mt$(LIBSUFFIX)/fileiter.o ../src/fileiter.cpp
+
+sunpro/shared_libboost_regex_mt$(LIBSUFFIX)/icu.o: ../src/icu.cpp $(ALL_HEADER)
+ CC -c $(INCLUDES) -KPIC -O2 -mt -I../../../ $(CXXFLAGS) -o sunpro/shared_libboost_regex_mt$(LIBSUFFIX)/icu.o ../src/icu.cpp
+
+sunpro/shared_libboost_regex_mt$(LIBSUFFIX)/instances.o: ../src/instances.cpp $(ALL_HEADER)
+ CC -c $(INCLUDES) -KPIC -O2 -mt -I../../../ $(CXXFLAGS) -o sunpro/shared_libboost_regex_mt$(LIBSUFFIX)/instances.o ../src/instances.cpp
+
+sunpro/shared_libboost_regex_mt$(LIBSUFFIX)/posix_api.o: ../src/posix_api.cpp $(ALL_HEADER)
+ CC -c $(INCLUDES) -KPIC -O2 -mt -I../../../ $(CXXFLAGS) -o sunpro/shared_libboost_regex_mt$(LIBSUFFIX)/posix_api.o ../src/posix_api.cpp
+
+sunpro/shared_libboost_regex_mt$(LIBSUFFIX)/regex.o: ../src/regex.cpp $(ALL_HEADER)
+ CC -c $(INCLUDES) -KPIC -O2 -mt -I../../../ $(CXXFLAGS) -o sunpro/shared_libboost_regex_mt$(LIBSUFFIX)/regex.o ../src/regex.cpp
+
+sunpro/shared_libboost_regex_mt$(LIBSUFFIX)/regex_debug.o: ../src/regex_debug.cpp $(ALL_HEADER)
+ CC -c $(INCLUDES) -KPIC -O2 -mt -I../../../ $(CXXFLAGS) -o sunpro/shared_libboost_regex_mt$(LIBSUFFIX)/regex_debug.o ../src/regex_debug.cpp
+
+sunpro/shared_libboost_regex_mt$(LIBSUFFIX)/regex_raw_buffer.o: ../src/regex_raw_buffer.cpp $(ALL_HEADER)
+ CC -c $(INCLUDES) -KPIC -O2 -mt -I../../../ $(CXXFLAGS) -o sunpro/shared_libboost_regex_mt$(LIBSUFFIX)/regex_raw_buffer.o ../src/regex_raw_buffer.cpp
+
+sunpro/shared_libboost_regex_mt$(LIBSUFFIX)/regex_traits_defaults.o: ../src/regex_traits_defaults.cpp $(ALL_HEADER)
+ CC -c $(INCLUDES) -KPIC -O2 -mt -I../../../ $(CXXFLAGS) -o sunpro/shared_libboost_regex_mt$(LIBSUFFIX)/regex_traits_defaults.o ../src/regex_traits_defaults.cpp
+
+sunpro/shared_libboost_regex_mt$(LIBSUFFIX)/static_mutex.o: ../src/static_mutex.cpp $(ALL_HEADER)
+ CC -c $(INCLUDES) -KPIC -O2 -mt -I../../../ $(CXXFLAGS) -o sunpro/shared_libboost_regex_mt$(LIBSUFFIX)/static_mutex.o ../src/static_mutex.cpp
+
+sunpro/shared_libboost_regex_mt$(LIBSUFFIX)/usinstances.o: ../src/usinstances.cpp $(ALL_HEADER)
+ CC -c $(INCLUDES) -KPIC -O2 -mt -I../../../ $(CXXFLAGS) -o sunpro/shared_libboost_regex_mt$(LIBSUFFIX)/usinstances.o ../src/usinstances.cpp
+
+sunpro/shared_libboost_regex_mt$(LIBSUFFIX)/w32_regex_traits.o: ../src/w32_regex_traits.cpp $(ALL_HEADER)
+ CC -c $(INCLUDES) -KPIC -O2 -mt -I../../../ $(CXXFLAGS) -o sunpro/shared_libboost_regex_mt$(LIBSUFFIX)/w32_regex_traits.o ../src/w32_regex_traits.cpp
+
+sunpro/shared_libboost_regex_mt$(LIBSUFFIX)/wc_regex_traits.o: ../src/wc_regex_traits.cpp $(ALL_HEADER)
+ CC -c $(INCLUDES) -KPIC -O2 -mt -I../../../ $(CXXFLAGS) -o sunpro/shared_libboost_regex_mt$(LIBSUFFIX)/wc_regex_traits.o ../src/wc_regex_traits.cpp
+
+sunpro/shared_libboost_regex_mt$(LIBSUFFIX)/wide_posix_api.o: ../src/wide_posix_api.cpp $(ALL_HEADER)
+ CC -c $(INCLUDES) -KPIC -O2 -mt -I../../../ $(CXXFLAGS) -o sunpro/shared_libboost_regex_mt$(LIBSUFFIX)/wide_posix_api.o ../src/wide_posix_api.cpp
+
+sunpro/shared_libboost_regex_mt$(LIBSUFFIX)/winstances.o: ../src/winstances.cpp $(ALL_HEADER)
+ CC -c $(INCLUDES) -KPIC -O2 -mt -I../../../ $(CXXFLAGS) -o sunpro/shared_libboost_regex_mt$(LIBSUFFIX)/winstances.o ../src/winstances.cpp
+
+sunpro/shared_libboost_regex_mt$(LIBSUFFIX) :
+ mkdir -p sunpro/shared_libboost_regex_mt$(LIBSUFFIX)
+
+libboost_regex_mt$(LIBSUFFIX)_clean_shared :
+ rm -f sunpro/shared_libboost_regex_mt$(LIBSUFFIX)/*.o
+ rm -fr sunpro/shared_libboost_regex_mt$(LIBSUFFIX)/$(SUNWS_CACHE_NAME)
+
+sunpro/libboost_regex_mt$(LIBSUFFIX).so : sunpro/shared_libboost_regex_mt$(LIBSUFFIX)/c_regex_traits.o sunpro/shared_libboost_regex_mt$(LIBSUFFIX)/cpp_regex_traits.o sunpro/shared_libboost_regex_mt$(LIBSUFFIX)/cregex.o sunpro/shared_libboost_regex_mt$(LIBSUFFIX)/fileiter.o sunpro/shared_libboost_regex_mt$(LIBSUFFIX)/icu.o sunpro/shared_libboost_regex_mt$(LIBSUFFIX)/instances.o sunpro/shared_libboost_regex_mt$(LIBSUFFIX)/posix_api.o sunpro/shared_libboost_regex_mt$(LIBSUFFIX)/regex.o sunpro/shared_libboost_regex_mt$(LIBSUFFIX)/regex_debug.o sunpro/shared_libboost_regex_mt$(LIBSUFFIX)/regex_raw_buffer.o sunpro/shared_libboost_regex_mt$(LIBSUFFIX)/regex_traits_defaults.o sunpro/shared_libboost_regex_mt$(LIBSUFFIX)/static_mutex.o sunpro/shared_libboost_regex_mt$(LIBSUFFIX)/usinstances.o sunpro/shared_libboost_regex_mt$(LIBSUFFIX)/w32_regex_traits.o sunpro/shared_libboost_regex_mt$(LIBSUFFIX)/wc_regex_traits.o sunpro/shared_libboost_regex_mt$(LIBSUFFIX)/wide_posix_api.o sunpro/shared_libboost_regex_mt$(LIBSUFFIX
)/winstances.o
+ CC -KPIC -O2 -mt -I../../../ -G -o sunpro/libboost_regex_mt$(LIBSUFFIX).so $(LDFLAGS) sunpro/shared_libboost_regex_mt$(LIBSUFFIX)/c_regex_traits.o sunpro/shared_libboost_regex_mt$(LIBSUFFIX)/cpp_regex_traits.o sunpro/shared_libboost_regex_mt$(LIBSUFFIX)/cregex.o sunpro/shared_libboost_regex_mt$(LIBSUFFIX)/fileiter.o sunpro/shared_libboost_regex_mt$(LIBSUFFIX)/icu.o sunpro/shared_libboost_regex_mt$(LIBSUFFIX)/instances.o sunpro/shared_libboost_regex_mt$(LIBSUFFIX)/posix_api.o sunpro/shared_libboost_regex_mt$(LIBSUFFIX)/regex.o sunpro/shared_libboost_regex_mt$(LIBSUFFIX)/regex_debug.o sunpro/shared_libboost_regex_mt$(LIBSUFFIX)/regex_raw_buffer.o sunpro/shared_libboost_regex_mt$(LIBSUFFIX)/regex_traits_defaults.o sunpro/shared_libboost_regex_mt$(LIBSUFFIX)/static_mutex.o sunpro/shared_libboost_regex_mt$(LIBSUFFIX)/usinstances.o sunpro/shared_libboost_regex_mt$(LIBSUFFIX)/w32_regex_traits.o sunpro/shared_libboost_regex_mt$(LIBSUFFIX)/wc_regex_traits.o sunpro/shared_libboost_regex_mt$(LIBSUFFIX)/wide_posix_ap
i.o sunpro/shared_libboost_regex_mt$(LIBSUFFIX)/winstances.o $(LIBS)
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/build/vc6-stlport.mak
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/build/vc6-stlport.mak 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,496 @@
+# copyright John Maddock 2006
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt.
+#
+# auto generated makefile for VC6+STLPort
+#
+# usage:
+# make
+# brings libraries up to date
+# make install
+# brings libraries up to date and copies binaries to your VC6 /lib and /bin directories (recomended)
+#
+
+#
+# ICU setup:
+#
+ICU_PATH=
+#
+# Add additional compiler options here:
+#
+CXXFLAGS=
+#
+# Add additional include directories here:
+#
+INCLUDES=
+#
+# add additional linker flags here:
+#
+XLFLAGS=
+#
+# add additional static-library creation flags here:
+#
+XSFLAGS=
+
+!IF "$(OS)" == "Windows_NT"
+NULL=
+!ELSE
+NULL=nul
+!ENDIF
+
+!IF "$(MSVCDIR)" == ""
+!ERROR Variable MSVCDIR not set.
+!ENDIF
+
+!IF "$(STLPORT_PATH)" == ""
+!ERROR Variable STLPORT_PATH not set.
+!ENDIF
+
+!IF "$(ICU_PATH)" == ""
+ICU_COMPILE_OPTS=
+ICU_LINK_OPTS=
+!MESSAGE Building Boost.Regex without ICU / Unicode support:
+!MESSAGE Hint: set ICU_PATH on the nmake command line to point
+!MESSAGE to your ICU installation if you have one.
+!ELSE
+ICU_COMPILE_OPTS= -DBOOST_HAS_ICU=1 -I"$(ICU_PATH)\include"
+ICU_LINK_OPTS= /LIBPATH:"$(ICU_PATH)\lib" icuin.lib icuuc.lib
+!MESSAGE Building Boost.Regex with ICU in $(ICU_PATH)
+!ENDIF
+
+
+ALL_HEADER= ../../../boost/regex/concepts.hpp ../../../boost/regex/config.hpp ../../../boost/regex/icu.hpp ../../../boost/regex/mfc.hpp ../../../boost/regex/pattern_except.hpp ../../../boost/regex/regex_traits.hpp ../../../boost/regex/user.hpp ../../../boost/regex/v4/basic_regex.hpp ../../../boost/regex/v4/basic_regex_creator.hpp ../../../boost/regex/v4/basic_regex_parser.hpp ../../../boost/regex/v4/c_regex_traits.hpp ../../../boost/regex/v4/char_regex_traits.hpp ../../../boost/regex/v4/cpp_regex_traits.hpp ../../../boost/regex/v4/cregex.hpp ../../../boost/regex/v4/error_type.hpp ../../../boost/regex/v4/fileiter.hpp ../../../boost/regex/v4/instances.hpp ../../../boost/regex/v4/iterator_category.hpp ../../../boost/regex/v4/iterator_traits.hpp ../../../boost/regex/v4/match_flags.hpp ../../../boost/regex/v4/match_results.hpp ../../../boost/regex/v4/mem_block_cache.hpp ../../../boost/regex/v4/perl_matcher.hpp ../../../boost/regex/v4/perl_matcher_common.hpp ../../../boost/regex/v4/perl_matcher_non_recursive.hpp
../../../boost/regex/v4/perl_matcher_recursive.hpp ../../../boost/regex/v4/primary_transform.hpp ../../../boost/regex/v4/protected_call.hpp ../../../boost/regex/v4/regbase.hpp ../../../boost/regex/v4/regex.hpp ../../../boost/regex/v4/regex_cstring.hpp ../../../boost/regex/v4/regex_format.hpp ../../../boost/regex/v4/regex_fwd.hpp ../../../boost/regex/v4/regex_grep.hpp ../../../boost/regex/v4/regex_iterator.hpp ../../../boost/regex/v4/regex_kmp.hpp ../../../boost/regex/v4/regex_match.hpp ../../../boost/regex/v4/regex_merge.hpp ../../../boost/regex/v4/regex_raw_buffer.hpp ../../../boost/regex/v4/regex_replace.hpp ../../../boost/regex/v4/regex_search.hpp ../../../boost/regex/v4/regex_split.hpp ../../../boost/regex/v4/regex_stack.hpp ../../../boost/regex/v4/regex_token_iterator.hpp ../../../boost/regex/v4/regex_traits.hpp ../../../boost/regex/v4/regex_traits_defaults.hpp ../../../boost/regex/v4/regex_workaround.hpp ../../../boost/regex/v4/states.hpp ../../../boost/regex/v4/sub_match.hpp ../../../boost/regex/v4/sy
ntax_type.hpp ../../../boost/regex/v4/u32regex_iterator.hpp ../../../boost/regex/v4/u32regex_token_iterator.hpp ../../../boost/regex/v4/w32_regex_traits.hpp ../../../boost/regex/config/borland.hpp ../../../boost/regex/config/cwchar.hpp
+
+all : main_dir libboost_regex-vc6-mt-sp-1_34_dir ./vc6-stlport/libboost_regex-vc6-mt-sp-1_34.lib boost_regex-vc6-mt-p-1_34_dir ./vc6-stlport/boost_regex-vc6-mt-p-1_34.lib libboost_regex-vc6-mt-p-1_34_dir ./vc6-stlport/libboost_regex-vc6-mt-p-1_34.lib boost_regex-vc6-mt-gdp-1_34_dir ./vc6-stlport/boost_regex-vc6-mt-gdp-1_34.lib libboost_regex-vc6-mt-sgdp-1_34_dir ./vc6-stlport/libboost_regex-vc6-mt-sgdp-1_34.lib libboost_regex-vc6-mt-gdp-1_34_dir ./vc6-stlport/libboost_regex-vc6-mt-gdp-1_34.lib
+
+clean : libboost_regex-vc6-mt-sp-1_34_clean boost_regex-vc6-mt-p-1_34_clean libboost_regex-vc6-mt-p-1_34_clean boost_regex-vc6-mt-gdp-1_34_clean libboost_regex-vc6-mt-sgdp-1_34_clean libboost_regex-vc6-mt-gdp-1_34_clean
+
+install : stlport_check all
+ copy vc6-stlport\libboost_regex-vc6-mt-sp-1_34.lib "$(MSVCDIR)\lib"
+ copy vc6-stlport\boost_regex-vc6-mt-p-1_34.lib "$(MSVCDIR)\lib"
+ copy vc6-stlport\boost_regex-vc6-mt-p-1_34.dll "$(MSVCDIR)\bin"
+ copy vc6-stlport\libboost_regex-vc6-mt-p-1_34.lib "$(MSVCDIR)\lib"
+ copy vc6-stlport\boost_regex-vc6-mt-gdp-1_34.lib "$(MSVCDIR)\lib"
+ copy vc6-stlport\boost_regex-vc6-mt-gdp-1_34.dll "$(MSVCDIR)\bin"
+ copy vc6-stlport\boost_regex-vc6-mt-gdp-1_34.pdb "$(MSVCDIR)\lib"
+ copy vc6-stlport\libboost_regex-vc6-mt-sgdp-1_34.lib "$(MSVCDIR)\lib"
+ copy vc6-stlport\libboost_regex-vc6-mt-sgdp-1_34.pdb "$(MSVCDIR)\lib"
+ copy vc6-stlport\libboost_regex-vc6-mt-gdp-1_34.lib "$(MSVCDIR)\lib"
+ copy vc6-stlport\libboost_regex-vc6-mt-gdp-1_34.pdb "$(MSVCDIR)\lib"
+
+main_dir :
+ @if not exist "vc6-stlport\$(NULL)" mkdir vc6-stlport
+
+stlport_check : "$(STLPORT_PATH)\stlport\string"
+ echo
+
+
+########################################################
+#
+# section for libboost_regex-vc6-mt-sp-1_34.lib
+#
+########################################################
+vc6-stlport/libboost_regex-vc6-mt-sp-1_34/c_regex_traits.obj: ../src/c_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/libboost_regex-vc6-mt-sp-1_34/ -Fdvc6-stlport/libboost_regex-vc6-mt-sp-1_34.pdb ../src/c_regex_traits.cpp
+
+vc6-stlport/libboost_regex-vc6-mt-sp-1_34/cpp_regex_traits.obj: ../src/cpp_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/libboost_regex-vc6-mt-sp-1_34/ -Fdvc6-stlport/libboost_regex-vc6-mt-sp-1_34.pdb ../src/cpp_regex_traits.cpp
+
+vc6-stlport/libboost_regex-vc6-mt-sp-1_34/cregex.obj: ../src/cregex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/libboost_regex-vc6-mt-sp-1_34/ -Fdvc6-stlport/libboost_regex-vc6-mt-sp-1_34.pdb ../src/cregex.cpp
+
+vc6-stlport/libboost_regex-vc6-mt-sp-1_34/fileiter.obj: ../src/fileiter.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/libboost_regex-vc6-mt-sp-1_34/ -Fdvc6-stlport/libboost_regex-vc6-mt-sp-1_34.pdb ../src/fileiter.cpp
+
+vc6-stlport/libboost_regex-vc6-mt-sp-1_34/icu.obj: ../src/icu.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/libboost_regex-vc6-mt-sp-1_34/ -Fdvc6-stlport/libboost_regex-vc6-mt-sp-1_34.pdb ../src/icu.cpp
+
+vc6-stlport/libboost_regex-vc6-mt-sp-1_34/instances.obj: ../src/instances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/libboost_regex-vc6-mt-sp-1_34/ -Fdvc6-stlport/libboost_regex-vc6-mt-sp-1_34.pdb ../src/instances.cpp
+
+vc6-stlport/libboost_regex-vc6-mt-sp-1_34/posix_api.obj: ../src/posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/libboost_regex-vc6-mt-sp-1_34/ -Fdvc6-stlport/libboost_regex-vc6-mt-sp-1_34.pdb ../src/posix_api.cpp
+
+vc6-stlport/libboost_regex-vc6-mt-sp-1_34/regex.obj: ../src/regex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/libboost_regex-vc6-mt-sp-1_34/ -Fdvc6-stlport/libboost_regex-vc6-mt-sp-1_34.pdb ../src/regex.cpp
+
+vc6-stlport/libboost_regex-vc6-mt-sp-1_34/regex_debug.obj: ../src/regex_debug.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/libboost_regex-vc6-mt-sp-1_34/ -Fdvc6-stlport/libboost_regex-vc6-mt-sp-1_34.pdb ../src/regex_debug.cpp
+
+vc6-stlport/libboost_regex-vc6-mt-sp-1_34/regex_raw_buffer.obj: ../src/regex_raw_buffer.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/libboost_regex-vc6-mt-sp-1_34/ -Fdvc6-stlport/libboost_regex-vc6-mt-sp-1_34.pdb ../src/regex_raw_buffer.cpp
+
+vc6-stlport/libboost_regex-vc6-mt-sp-1_34/regex_traits_defaults.obj: ../src/regex_traits_defaults.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/libboost_regex-vc6-mt-sp-1_34/ -Fdvc6-stlport/libboost_regex-vc6-mt-sp-1_34.pdb ../src/regex_traits_defaults.cpp
+
+vc6-stlport/libboost_regex-vc6-mt-sp-1_34/static_mutex.obj: ../src/static_mutex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/libboost_regex-vc6-mt-sp-1_34/ -Fdvc6-stlport/libboost_regex-vc6-mt-sp-1_34.pdb ../src/static_mutex.cpp
+
+vc6-stlport/libboost_regex-vc6-mt-sp-1_34/usinstances.obj: ../src/usinstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/libboost_regex-vc6-mt-sp-1_34/ -Fdvc6-stlport/libboost_regex-vc6-mt-sp-1_34.pdb ../src/usinstances.cpp
+
+vc6-stlport/libboost_regex-vc6-mt-sp-1_34/w32_regex_traits.obj: ../src/w32_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/libboost_regex-vc6-mt-sp-1_34/ -Fdvc6-stlport/libboost_regex-vc6-mt-sp-1_34.pdb ../src/w32_regex_traits.cpp
+
+vc6-stlport/libboost_regex-vc6-mt-sp-1_34/wc_regex_traits.obj: ../src/wc_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/libboost_regex-vc6-mt-sp-1_34/ -Fdvc6-stlport/libboost_regex-vc6-mt-sp-1_34.pdb ../src/wc_regex_traits.cpp
+
+vc6-stlport/libboost_regex-vc6-mt-sp-1_34/wide_posix_api.obj: ../src/wide_posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/libboost_regex-vc6-mt-sp-1_34/ -Fdvc6-stlport/libboost_regex-vc6-mt-sp-1_34.pdb ../src/wide_posix_api.cpp
+
+vc6-stlport/libboost_regex-vc6-mt-sp-1_34/winstances.obj: ../src/winstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/libboost_regex-vc6-mt-sp-1_34/ -Fdvc6-stlport/libboost_regex-vc6-mt-sp-1_34.pdb ../src/winstances.cpp
+
+libboost_regex-vc6-mt-sp-1_34_dir :
+ @if not exist "vc6-stlport\libboost_regex-vc6-mt-sp-1_34\$(NULL)" mkdir vc6-stlport\libboost_regex-vc6-mt-sp-1_34
+
+libboost_regex-vc6-mt-sp-1_34_clean :
+ del vc6-stlport\libboost_regex-vc6-mt-sp-1_34\*.obj
+ del vc6-stlport\libboost_regex-vc6-mt-sp-1_34\*.idb
+ del vc6-stlport\libboost_regex-vc6-mt-sp-1_34\*.exp
+ del vc6-stlport\libboost_regex-vc6-mt-sp-1_34\*.pch
+
+./vc6-stlport/libboost_regex-vc6-mt-sp-1_34.lib : vc6-stlport/libboost_regex-vc6-mt-sp-1_34/c_regex_traits.obj vc6-stlport/libboost_regex-vc6-mt-sp-1_34/cpp_regex_traits.obj vc6-stlport/libboost_regex-vc6-mt-sp-1_34/cregex.obj vc6-stlport/libboost_regex-vc6-mt-sp-1_34/fileiter.obj vc6-stlport/libboost_regex-vc6-mt-sp-1_34/icu.obj vc6-stlport/libboost_regex-vc6-mt-sp-1_34/instances.obj vc6-stlport/libboost_regex-vc6-mt-sp-1_34/posix_api.obj vc6-stlport/libboost_regex-vc6-mt-sp-1_34/regex.obj vc6-stlport/libboost_regex-vc6-mt-sp-1_34/regex_debug.obj vc6-stlport/libboost_regex-vc6-mt-sp-1_34/regex_raw_buffer.obj vc6-stlport/libboost_regex-vc6-mt-sp-1_34/regex_traits_defaults.obj vc6-stlport/libboost_regex-vc6-mt-sp-1_34/static_mutex.obj vc6-stlport/libboost_regex-vc6-mt-sp-1_34/usinstances.obj vc6-stlport/libboost_regex-vc6-mt-sp-1_34/w32_regex_traits.obj vc6-stlport/libboost_regex-vc6-mt-sp-1_34/wc_regex_traits.obj vc6-stlport/libboost_regex-vc6-mt-sp-1_34/wide_posix_api.obj vc6-stlport/libboost_regex-vc6-mt-
sp-1_34/winstances.obj
+ link -lib /nologo /out:vc6-stlport/libboost_regex-vc6-mt-sp-1_34.lib $(XSFLAGS) vc6-stlport/libboost_regex-vc6-mt-sp-1_34/c_regex_traits.obj vc6-stlport/libboost_regex-vc6-mt-sp-1_34/cpp_regex_traits.obj vc6-stlport/libboost_regex-vc6-mt-sp-1_34/cregex.obj vc6-stlport/libboost_regex-vc6-mt-sp-1_34/fileiter.obj vc6-stlport/libboost_regex-vc6-mt-sp-1_34/icu.obj vc6-stlport/libboost_regex-vc6-mt-sp-1_34/instances.obj vc6-stlport/libboost_regex-vc6-mt-sp-1_34/posix_api.obj vc6-stlport/libboost_regex-vc6-mt-sp-1_34/regex.obj vc6-stlport/libboost_regex-vc6-mt-sp-1_34/regex_debug.obj vc6-stlport/libboost_regex-vc6-mt-sp-1_34/regex_raw_buffer.obj vc6-stlport/libboost_regex-vc6-mt-sp-1_34/regex_traits_defaults.obj vc6-stlport/libboost_regex-vc6-mt-sp-1_34/static_mutex.obj vc6-stlport/libboost_regex-vc6-mt-sp-1_34/usinstances.obj vc6-stlport/libboost_regex-vc6-mt-sp-1_34/w32_regex_traits.obj vc6-stlport/libboost_regex-vc6-mt-sp-1_34/wc_regex_traits.obj vc6-stlport/libboost_regex-vc6-mt-sp-1_34/wide_posix_api.obj vc
6-stlport/libboost_regex-vc6-mt-sp-1_34/winstances.obj
+
+########################################################
+#
+# section for boost_regex-vc6-mt-p-1_34.lib
+#
+########################################################
+vc6-stlport/boost_regex-vc6-mt-p-1_34/c_regex_traits.obj: ../src/c_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /I"$(STLPORT_PATH)\stlport" /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/boost_regex-vc6-mt-p-1_34/ -Fdvc6-stlport/boost_regex-vc6-mt-p-1_34.pdb ../src/c_regex_traits.cpp
+
+vc6-stlport/boost_regex-vc6-mt-p-1_34/cpp_regex_traits.obj: ../src/cpp_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /I"$(STLPORT_PATH)\stlport" /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/boost_regex-vc6-mt-p-1_34/ -Fdvc6-stlport/boost_regex-vc6-mt-p-1_34.pdb ../src/cpp_regex_traits.cpp
+
+vc6-stlport/boost_regex-vc6-mt-p-1_34/cregex.obj: ../src/cregex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /I"$(STLPORT_PATH)\stlport" /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/boost_regex-vc6-mt-p-1_34/ -Fdvc6-stlport/boost_regex-vc6-mt-p-1_34.pdb ../src/cregex.cpp
+
+vc6-stlport/boost_regex-vc6-mt-p-1_34/fileiter.obj: ../src/fileiter.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /I"$(STLPORT_PATH)\stlport" /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/boost_regex-vc6-mt-p-1_34/ -Fdvc6-stlport/boost_regex-vc6-mt-p-1_34.pdb ../src/fileiter.cpp
+
+vc6-stlport/boost_regex-vc6-mt-p-1_34/icu.obj: ../src/icu.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /I"$(STLPORT_PATH)\stlport" /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/boost_regex-vc6-mt-p-1_34/ -Fdvc6-stlport/boost_regex-vc6-mt-p-1_34.pdb ../src/icu.cpp
+
+vc6-stlport/boost_regex-vc6-mt-p-1_34/instances.obj: ../src/instances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /I"$(STLPORT_PATH)\stlport" /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/boost_regex-vc6-mt-p-1_34/ -Fdvc6-stlport/boost_regex-vc6-mt-p-1_34.pdb ../src/instances.cpp
+
+vc6-stlport/boost_regex-vc6-mt-p-1_34/posix_api.obj: ../src/posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /I"$(STLPORT_PATH)\stlport" /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/boost_regex-vc6-mt-p-1_34/ -Fdvc6-stlport/boost_regex-vc6-mt-p-1_34.pdb ../src/posix_api.cpp
+
+vc6-stlport/boost_regex-vc6-mt-p-1_34/regex.obj: ../src/regex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /I"$(STLPORT_PATH)\stlport" /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/boost_regex-vc6-mt-p-1_34/ -Fdvc6-stlport/boost_regex-vc6-mt-p-1_34.pdb ../src/regex.cpp
+
+vc6-stlport/boost_regex-vc6-mt-p-1_34/regex_debug.obj: ../src/regex_debug.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /I"$(STLPORT_PATH)\stlport" /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/boost_regex-vc6-mt-p-1_34/ -Fdvc6-stlport/boost_regex-vc6-mt-p-1_34.pdb ../src/regex_debug.cpp
+
+vc6-stlport/boost_regex-vc6-mt-p-1_34/regex_raw_buffer.obj: ../src/regex_raw_buffer.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /I"$(STLPORT_PATH)\stlport" /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/boost_regex-vc6-mt-p-1_34/ -Fdvc6-stlport/boost_regex-vc6-mt-p-1_34.pdb ../src/regex_raw_buffer.cpp
+
+vc6-stlport/boost_regex-vc6-mt-p-1_34/regex_traits_defaults.obj: ../src/regex_traits_defaults.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /I"$(STLPORT_PATH)\stlport" /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/boost_regex-vc6-mt-p-1_34/ -Fdvc6-stlport/boost_regex-vc6-mt-p-1_34.pdb ../src/regex_traits_defaults.cpp
+
+vc6-stlport/boost_regex-vc6-mt-p-1_34/static_mutex.obj: ../src/static_mutex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /I"$(STLPORT_PATH)\stlport" /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/boost_regex-vc6-mt-p-1_34/ -Fdvc6-stlport/boost_regex-vc6-mt-p-1_34.pdb ../src/static_mutex.cpp
+
+vc6-stlport/boost_regex-vc6-mt-p-1_34/usinstances.obj: ../src/usinstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /I"$(STLPORT_PATH)\stlport" /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/boost_regex-vc6-mt-p-1_34/ -Fdvc6-stlport/boost_regex-vc6-mt-p-1_34.pdb ../src/usinstances.cpp
+
+vc6-stlport/boost_regex-vc6-mt-p-1_34/w32_regex_traits.obj: ../src/w32_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /I"$(STLPORT_PATH)\stlport" /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/boost_regex-vc6-mt-p-1_34/ -Fdvc6-stlport/boost_regex-vc6-mt-p-1_34.pdb ../src/w32_regex_traits.cpp
+
+vc6-stlport/boost_regex-vc6-mt-p-1_34/wc_regex_traits.obj: ../src/wc_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /I"$(STLPORT_PATH)\stlport" /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/boost_regex-vc6-mt-p-1_34/ -Fdvc6-stlport/boost_regex-vc6-mt-p-1_34.pdb ../src/wc_regex_traits.cpp
+
+vc6-stlport/boost_regex-vc6-mt-p-1_34/wide_posix_api.obj: ../src/wide_posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /I"$(STLPORT_PATH)\stlport" /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/boost_regex-vc6-mt-p-1_34/ -Fdvc6-stlport/boost_regex-vc6-mt-p-1_34.pdb ../src/wide_posix_api.cpp
+
+vc6-stlport/boost_regex-vc6-mt-p-1_34/winstances.obj: ../src/winstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /I"$(STLPORT_PATH)\stlport" /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/boost_regex-vc6-mt-p-1_34/ -Fdvc6-stlport/boost_regex-vc6-mt-p-1_34.pdb ../src/winstances.cpp
+
+boost_regex-vc6-mt-p-1_34_dir :
+ @if not exist "vc6-stlport\boost_regex-vc6-mt-p-1_34\$(NULL)" mkdir vc6-stlport\boost_regex-vc6-mt-p-1_34
+
+boost_regex-vc6-mt-p-1_34_clean :
+ del vc6-stlport\boost_regex-vc6-mt-p-1_34\*.obj
+ del vc6-stlport\boost_regex-vc6-mt-p-1_34\*.idb
+ del vc6-stlport\boost_regex-vc6-mt-p-1_34\*.exp
+ del vc6-stlport\boost_regex-vc6-mt-p-1_34\*.pch
+
+./vc6-stlport/boost_regex-vc6-mt-p-1_34.lib : vc6-stlport/boost_regex-vc6-mt-p-1_34/c_regex_traits.obj vc6-stlport/boost_regex-vc6-mt-p-1_34/cpp_regex_traits.obj vc6-stlport/boost_regex-vc6-mt-p-1_34/cregex.obj vc6-stlport/boost_regex-vc6-mt-p-1_34/fileiter.obj vc6-stlport/boost_regex-vc6-mt-p-1_34/icu.obj vc6-stlport/boost_regex-vc6-mt-p-1_34/instances.obj vc6-stlport/boost_regex-vc6-mt-p-1_34/posix_api.obj vc6-stlport/boost_regex-vc6-mt-p-1_34/regex.obj vc6-stlport/boost_regex-vc6-mt-p-1_34/regex_debug.obj vc6-stlport/boost_regex-vc6-mt-p-1_34/regex_raw_buffer.obj vc6-stlport/boost_regex-vc6-mt-p-1_34/regex_traits_defaults.obj vc6-stlport/boost_regex-vc6-mt-p-1_34/static_mutex.obj vc6-stlport/boost_regex-vc6-mt-p-1_34/usinstances.obj vc6-stlport/boost_regex-vc6-mt-p-1_34/w32_regex_traits.obj vc6-stlport/boost_regex-vc6-mt-p-1_34/wc_regex_traits.obj vc6-stlport/boost_regex-vc6-mt-p-1_34/wide_posix_api.obj vc6-stlport/boost_regex-vc6-mt-p-1_34/winstances.obj
+ link kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:yes /pdb:"vc6-stlport/boost_regex-vc6-mt-p-1_34.pdb" /debug /machine:I386 /out:"vc6-stlport/boost_regex-vc6-mt-p-1_34.dll" /implib:"vc6-stlport/boost_regex-vc6-mt-p-1_34.lib" /LIBPATH:"$(STLPORT_PATH)\lib" $(XLFLAGS) $(ICU_LINK_OPTS) vc6-stlport/boost_regex-vc6-mt-p-1_34/c_regex_traits.obj vc6-stlport/boost_regex-vc6-mt-p-1_34/cpp_regex_traits.obj vc6-stlport/boost_regex-vc6-mt-p-1_34/cregex.obj vc6-stlport/boost_regex-vc6-mt-p-1_34/fileiter.obj vc6-stlport/boost_regex-vc6-mt-p-1_34/icu.obj vc6-stlport/boost_regex-vc6-mt-p-1_34/instances.obj vc6-stlport/boost_regex-vc6-mt-p-1_34/posix_api.obj vc6-stlport/boost_regex-vc6-mt-p-1_34/regex.obj vc6-stlport/boost_regex-vc6-mt-p-1_34/regex_debug.obj vc6-stlport/boost_regex-vc6-mt-p-1_34/regex_raw_buffer.obj vc6-stlport/boost_regex-vc6-mt-p-1_34/regex_traits_defaults.obj vc6-stlport/boost_regex
-vc6-mt-p-1_34/static_mutex.obj vc6-stlport/boost_regex-vc6-mt-p-1_34/usinstances.obj vc6-stlport/boost_regex-vc6-mt-p-1_34/w32_regex_traits.obj vc6-stlport/boost_regex-vc6-mt-p-1_34/wc_regex_traits.obj vc6-stlport/boost_regex-vc6-mt-p-1_34/wide_posix_api.obj vc6-stlport/boost_regex-vc6-mt-p-1_34/winstances.obj
+
+########################################################
+#
+# section for libboost_regex-vc6-mt-p-1_34.lib
+#
+########################################################
+vc6-stlport/libboost_regex-vc6-mt-p-1_34/c_regex_traits.obj: ../src/c_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/libboost_regex-vc6-mt-p-1_34/ -Fdvc6-stlport/libboost_regex-vc6-mt-p-1_34.pdb ../src/c_regex_traits.cpp
+
+vc6-stlport/libboost_regex-vc6-mt-p-1_34/cpp_regex_traits.obj: ../src/cpp_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/libboost_regex-vc6-mt-p-1_34/ -Fdvc6-stlport/libboost_regex-vc6-mt-p-1_34.pdb ../src/cpp_regex_traits.cpp
+
+vc6-stlport/libboost_regex-vc6-mt-p-1_34/cregex.obj: ../src/cregex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/libboost_regex-vc6-mt-p-1_34/ -Fdvc6-stlport/libboost_regex-vc6-mt-p-1_34.pdb ../src/cregex.cpp
+
+vc6-stlport/libboost_regex-vc6-mt-p-1_34/fileiter.obj: ../src/fileiter.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/libboost_regex-vc6-mt-p-1_34/ -Fdvc6-stlport/libboost_regex-vc6-mt-p-1_34.pdb ../src/fileiter.cpp
+
+vc6-stlport/libboost_regex-vc6-mt-p-1_34/icu.obj: ../src/icu.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/libboost_regex-vc6-mt-p-1_34/ -Fdvc6-stlport/libboost_regex-vc6-mt-p-1_34.pdb ../src/icu.cpp
+
+vc6-stlport/libboost_regex-vc6-mt-p-1_34/instances.obj: ../src/instances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/libboost_regex-vc6-mt-p-1_34/ -Fdvc6-stlport/libboost_regex-vc6-mt-p-1_34.pdb ../src/instances.cpp
+
+vc6-stlport/libboost_regex-vc6-mt-p-1_34/posix_api.obj: ../src/posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/libboost_regex-vc6-mt-p-1_34/ -Fdvc6-stlport/libboost_regex-vc6-mt-p-1_34.pdb ../src/posix_api.cpp
+
+vc6-stlport/libboost_regex-vc6-mt-p-1_34/regex.obj: ../src/regex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/libboost_regex-vc6-mt-p-1_34/ -Fdvc6-stlport/libboost_regex-vc6-mt-p-1_34.pdb ../src/regex.cpp
+
+vc6-stlport/libboost_regex-vc6-mt-p-1_34/regex_debug.obj: ../src/regex_debug.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/libboost_regex-vc6-mt-p-1_34/ -Fdvc6-stlport/libboost_regex-vc6-mt-p-1_34.pdb ../src/regex_debug.cpp
+
+vc6-stlport/libboost_regex-vc6-mt-p-1_34/regex_raw_buffer.obj: ../src/regex_raw_buffer.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/libboost_regex-vc6-mt-p-1_34/ -Fdvc6-stlport/libboost_regex-vc6-mt-p-1_34.pdb ../src/regex_raw_buffer.cpp
+
+vc6-stlport/libboost_regex-vc6-mt-p-1_34/regex_traits_defaults.obj: ../src/regex_traits_defaults.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/libboost_regex-vc6-mt-p-1_34/ -Fdvc6-stlport/libboost_regex-vc6-mt-p-1_34.pdb ../src/regex_traits_defaults.cpp
+
+vc6-stlport/libboost_regex-vc6-mt-p-1_34/static_mutex.obj: ../src/static_mutex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/libboost_regex-vc6-mt-p-1_34/ -Fdvc6-stlport/libboost_regex-vc6-mt-p-1_34.pdb ../src/static_mutex.cpp
+
+vc6-stlport/libboost_regex-vc6-mt-p-1_34/usinstances.obj: ../src/usinstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/libboost_regex-vc6-mt-p-1_34/ -Fdvc6-stlport/libboost_regex-vc6-mt-p-1_34.pdb ../src/usinstances.cpp
+
+vc6-stlport/libboost_regex-vc6-mt-p-1_34/w32_regex_traits.obj: ../src/w32_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/libboost_regex-vc6-mt-p-1_34/ -Fdvc6-stlport/libboost_regex-vc6-mt-p-1_34.pdb ../src/w32_regex_traits.cpp
+
+vc6-stlport/libboost_regex-vc6-mt-p-1_34/wc_regex_traits.obj: ../src/wc_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/libboost_regex-vc6-mt-p-1_34/ -Fdvc6-stlport/libboost_regex-vc6-mt-p-1_34.pdb ../src/wc_regex_traits.cpp
+
+vc6-stlport/libboost_regex-vc6-mt-p-1_34/wide_posix_api.obj: ../src/wide_posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/libboost_regex-vc6-mt-p-1_34/ -Fdvc6-stlport/libboost_regex-vc6-mt-p-1_34.pdb ../src/wide_posix_api.cpp
+
+vc6-stlport/libboost_regex-vc6-mt-p-1_34/winstances.obj: ../src/winstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/libboost_regex-vc6-mt-p-1_34/ -Fdvc6-stlport/libboost_regex-vc6-mt-p-1_34.pdb ../src/winstances.cpp
+
+libboost_regex-vc6-mt-p-1_34_dir :
+ @if not exist "vc6-stlport\libboost_regex-vc6-mt-p-1_34\$(NULL)" mkdir vc6-stlport\libboost_regex-vc6-mt-p-1_34
+
+libboost_regex-vc6-mt-p-1_34_clean :
+ del vc6-stlport\libboost_regex-vc6-mt-p-1_34\*.obj
+ del vc6-stlport\libboost_regex-vc6-mt-p-1_34\*.idb
+ del vc6-stlport\libboost_regex-vc6-mt-p-1_34\*.exp
+ del vc6-stlport\libboost_regex-vc6-mt-p-1_34\*.pch
+
+./vc6-stlport/libboost_regex-vc6-mt-p-1_34.lib : vc6-stlport/libboost_regex-vc6-mt-p-1_34/c_regex_traits.obj vc6-stlport/libboost_regex-vc6-mt-p-1_34/cpp_regex_traits.obj vc6-stlport/libboost_regex-vc6-mt-p-1_34/cregex.obj vc6-stlport/libboost_regex-vc6-mt-p-1_34/fileiter.obj vc6-stlport/libboost_regex-vc6-mt-p-1_34/icu.obj vc6-stlport/libboost_regex-vc6-mt-p-1_34/instances.obj vc6-stlport/libboost_regex-vc6-mt-p-1_34/posix_api.obj vc6-stlport/libboost_regex-vc6-mt-p-1_34/regex.obj vc6-stlport/libboost_regex-vc6-mt-p-1_34/regex_debug.obj vc6-stlport/libboost_regex-vc6-mt-p-1_34/regex_raw_buffer.obj vc6-stlport/libboost_regex-vc6-mt-p-1_34/regex_traits_defaults.obj vc6-stlport/libboost_regex-vc6-mt-p-1_34/static_mutex.obj vc6-stlport/libboost_regex-vc6-mt-p-1_34/usinstances.obj vc6-stlport/libboost_regex-vc6-mt-p-1_34/w32_regex_traits.obj vc6-stlport/libboost_regex-vc6-mt-p-1_34/wc_regex_traits.obj vc6-stlport/libboost_regex-vc6-mt-p-1_34/wide_posix_api.obj vc6-stlport/libboost_regex-vc6-mt-p-1_34/winstances
.obj
+ link -lib /nologo /out:vc6-stlport/libboost_regex-vc6-mt-p-1_34.lib $(XSFLAGS) vc6-stlport/libboost_regex-vc6-mt-p-1_34/c_regex_traits.obj vc6-stlport/libboost_regex-vc6-mt-p-1_34/cpp_regex_traits.obj vc6-stlport/libboost_regex-vc6-mt-p-1_34/cregex.obj vc6-stlport/libboost_regex-vc6-mt-p-1_34/fileiter.obj vc6-stlport/libboost_regex-vc6-mt-p-1_34/icu.obj vc6-stlport/libboost_regex-vc6-mt-p-1_34/instances.obj vc6-stlport/libboost_regex-vc6-mt-p-1_34/posix_api.obj vc6-stlport/libboost_regex-vc6-mt-p-1_34/regex.obj vc6-stlport/libboost_regex-vc6-mt-p-1_34/regex_debug.obj vc6-stlport/libboost_regex-vc6-mt-p-1_34/regex_raw_buffer.obj vc6-stlport/libboost_regex-vc6-mt-p-1_34/regex_traits_defaults.obj vc6-stlport/libboost_regex-vc6-mt-p-1_34/static_mutex.obj vc6-stlport/libboost_regex-vc6-mt-p-1_34/usinstances.obj vc6-stlport/libboost_regex-vc6-mt-p-1_34/w32_regex_traits.obj vc6-stlport/libboost_regex-vc6-mt-p-1_34/wc_regex_traits.obj vc6-stlport/libboost_regex-vc6-mt-p-1_34/wide_posix_api.obj vc6-stlport/libboos
t_regex-vc6-mt-p-1_34/winstances.obj
+
+########################################################
+#
+# section for boost_regex-vc6-mt-gdp-1_34.lib
+#
+########################################################
+vc6-stlport/boost_regex-vc6-mt-gdp-1_34/c_regex_traits.obj: ../src/c_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_DYN_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/boost_regex-vc6-mt-gdp-1_34/ -Fdvc6-stlport/boost_regex-vc6-mt-gdp-1_34.pdb ../src/c_regex_traits.cpp
+
+vc6-stlport/boost_regex-vc6-mt-gdp-1_34/cpp_regex_traits.obj: ../src/cpp_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_DYN_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/boost_regex-vc6-mt-gdp-1_34/ -Fdvc6-stlport/boost_regex-vc6-mt-gdp-1_34.pdb ../src/cpp_regex_traits.cpp
+
+vc6-stlport/boost_regex-vc6-mt-gdp-1_34/cregex.obj: ../src/cregex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_DYN_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/boost_regex-vc6-mt-gdp-1_34/ -Fdvc6-stlport/boost_regex-vc6-mt-gdp-1_34.pdb ../src/cregex.cpp
+
+vc6-stlport/boost_regex-vc6-mt-gdp-1_34/fileiter.obj: ../src/fileiter.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_DYN_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/boost_regex-vc6-mt-gdp-1_34/ -Fdvc6-stlport/boost_regex-vc6-mt-gdp-1_34.pdb ../src/fileiter.cpp
+
+vc6-stlport/boost_regex-vc6-mt-gdp-1_34/icu.obj: ../src/icu.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_DYN_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/boost_regex-vc6-mt-gdp-1_34/ -Fdvc6-stlport/boost_regex-vc6-mt-gdp-1_34.pdb ../src/icu.cpp
+
+vc6-stlport/boost_regex-vc6-mt-gdp-1_34/instances.obj: ../src/instances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_DYN_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/boost_regex-vc6-mt-gdp-1_34/ -Fdvc6-stlport/boost_regex-vc6-mt-gdp-1_34.pdb ../src/instances.cpp
+
+vc6-stlport/boost_regex-vc6-mt-gdp-1_34/posix_api.obj: ../src/posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_DYN_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/boost_regex-vc6-mt-gdp-1_34/ -Fdvc6-stlport/boost_regex-vc6-mt-gdp-1_34.pdb ../src/posix_api.cpp
+
+vc6-stlport/boost_regex-vc6-mt-gdp-1_34/regex.obj: ../src/regex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_DYN_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/boost_regex-vc6-mt-gdp-1_34/ -Fdvc6-stlport/boost_regex-vc6-mt-gdp-1_34.pdb ../src/regex.cpp
+
+vc6-stlport/boost_regex-vc6-mt-gdp-1_34/regex_debug.obj: ../src/regex_debug.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_DYN_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/boost_regex-vc6-mt-gdp-1_34/ -Fdvc6-stlport/boost_regex-vc6-mt-gdp-1_34.pdb ../src/regex_debug.cpp
+
+vc6-stlport/boost_regex-vc6-mt-gdp-1_34/regex_raw_buffer.obj: ../src/regex_raw_buffer.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_DYN_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/boost_regex-vc6-mt-gdp-1_34/ -Fdvc6-stlport/boost_regex-vc6-mt-gdp-1_34.pdb ../src/regex_raw_buffer.cpp
+
+vc6-stlport/boost_regex-vc6-mt-gdp-1_34/regex_traits_defaults.obj: ../src/regex_traits_defaults.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_DYN_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/boost_regex-vc6-mt-gdp-1_34/ -Fdvc6-stlport/boost_regex-vc6-mt-gdp-1_34.pdb ../src/regex_traits_defaults.cpp
+
+vc6-stlport/boost_regex-vc6-mt-gdp-1_34/static_mutex.obj: ../src/static_mutex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_DYN_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/boost_regex-vc6-mt-gdp-1_34/ -Fdvc6-stlport/boost_regex-vc6-mt-gdp-1_34.pdb ../src/static_mutex.cpp
+
+vc6-stlport/boost_regex-vc6-mt-gdp-1_34/usinstances.obj: ../src/usinstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_DYN_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/boost_regex-vc6-mt-gdp-1_34/ -Fdvc6-stlport/boost_regex-vc6-mt-gdp-1_34.pdb ../src/usinstances.cpp
+
+vc6-stlport/boost_regex-vc6-mt-gdp-1_34/w32_regex_traits.obj: ../src/w32_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_DYN_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/boost_regex-vc6-mt-gdp-1_34/ -Fdvc6-stlport/boost_regex-vc6-mt-gdp-1_34.pdb ../src/w32_regex_traits.cpp
+
+vc6-stlport/boost_regex-vc6-mt-gdp-1_34/wc_regex_traits.obj: ../src/wc_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_DYN_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/boost_regex-vc6-mt-gdp-1_34/ -Fdvc6-stlport/boost_regex-vc6-mt-gdp-1_34.pdb ../src/wc_regex_traits.cpp
+
+vc6-stlport/boost_regex-vc6-mt-gdp-1_34/wide_posix_api.obj: ../src/wide_posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_DYN_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/boost_regex-vc6-mt-gdp-1_34/ -Fdvc6-stlport/boost_regex-vc6-mt-gdp-1_34.pdb ../src/wide_posix_api.cpp
+
+vc6-stlport/boost_regex-vc6-mt-gdp-1_34/winstances.obj: ../src/winstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_DYN_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/boost_regex-vc6-mt-gdp-1_34/ -Fdvc6-stlport/boost_regex-vc6-mt-gdp-1_34.pdb ../src/winstances.cpp
+
+boost_regex-vc6-mt-gdp-1_34_dir :
+ @if not exist "vc6-stlport\boost_regex-vc6-mt-gdp-1_34\$(NULL)" mkdir vc6-stlport\boost_regex-vc6-mt-gdp-1_34
+
+boost_regex-vc6-mt-gdp-1_34_clean :
+ del vc6-stlport\boost_regex-vc6-mt-gdp-1_34\*.obj
+ del vc6-stlport\boost_regex-vc6-mt-gdp-1_34\*.idb
+ del vc6-stlport\boost_regex-vc6-mt-gdp-1_34\*.exp
+ del vc6-stlport\boost_regex-vc6-mt-gdp-1_34\*.pch
+
+./vc6-stlport/boost_regex-vc6-mt-gdp-1_34.lib : vc6-stlport/boost_regex-vc6-mt-gdp-1_34/c_regex_traits.obj vc6-stlport/boost_regex-vc6-mt-gdp-1_34/cpp_regex_traits.obj vc6-stlport/boost_regex-vc6-mt-gdp-1_34/cregex.obj vc6-stlport/boost_regex-vc6-mt-gdp-1_34/fileiter.obj vc6-stlport/boost_regex-vc6-mt-gdp-1_34/icu.obj vc6-stlport/boost_regex-vc6-mt-gdp-1_34/instances.obj vc6-stlport/boost_regex-vc6-mt-gdp-1_34/posix_api.obj vc6-stlport/boost_regex-vc6-mt-gdp-1_34/regex.obj vc6-stlport/boost_regex-vc6-mt-gdp-1_34/regex_debug.obj vc6-stlport/boost_regex-vc6-mt-gdp-1_34/regex_raw_buffer.obj vc6-stlport/boost_regex-vc6-mt-gdp-1_34/regex_traits_defaults.obj vc6-stlport/boost_regex-vc6-mt-gdp-1_34/static_mutex.obj vc6-stlport/boost_regex-vc6-mt-gdp-1_34/usinstances.obj vc6-stlport/boost_regex-vc6-mt-gdp-1_34/w32_regex_traits.obj vc6-stlport/boost_regex-vc6-mt-gdp-1_34/wc_regex_traits.obj vc6-stlport/boost_regex-vc6-mt-gdp-1_34/wide_posix_api.obj vc6-stlport/boost_regex-vc6-mt-gdp-1_34/winstances.obj
+ link kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:yes /pdb:"vc6-stlport/boost_regex-vc6-mt-gdp-1_34.pdb" /debug /machine:I386 /out:"vc6-stlport/boost_regex-vc6-mt-gdp-1_34.dll" /implib:"vc6-stlport/boost_regex-vc6-mt-gdp-1_34.lib" /LIBPATH:"$(STLPORT_PATH)\lib" $(XLFLAGS) $(ICU_LINK_OPTS) vc6-stlport/boost_regex-vc6-mt-gdp-1_34/c_regex_traits.obj vc6-stlport/boost_regex-vc6-mt-gdp-1_34/cpp_regex_traits.obj vc6-stlport/boost_regex-vc6-mt-gdp-1_34/cregex.obj vc6-stlport/boost_regex-vc6-mt-gdp-1_34/fileiter.obj vc6-stlport/boost_regex-vc6-mt-gdp-1_34/icu.obj vc6-stlport/boost_regex-vc6-mt-gdp-1_34/instances.obj vc6-stlport/boost_regex-vc6-mt-gdp-1_34/posix_api.obj vc6-stlport/boost_regex-vc6-mt-gdp-1_34/regex.obj vc6-stlport/boost_regex-vc6-mt-gdp-1_34/regex_debug.obj vc6-stlport/boost_regex-vc6-mt-gdp-1_34/regex_raw_buffer.obj vc6-stlport/boost_regex-vc6-mt-gdp-1_34/regex_traits_defaults
.obj vc6-stlport/boost_regex-vc6-mt-gdp-1_34/static_mutex.obj vc6-stlport/boost_regex-vc6-mt-gdp-1_34/usinstances.obj vc6-stlport/boost_regex-vc6-mt-gdp-1_34/w32_regex_traits.obj vc6-stlport/boost_regex-vc6-mt-gdp-1_34/wc_regex_traits.obj vc6-stlport/boost_regex-vc6-mt-gdp-1_34/wide_posix_api.obj vc6-stlport/boost_regex-vc6-mt-gdp-1_34/winstances.obj
+
+########################################################
+#
+# section for libboost_regex-vc6-mt-sgdp-1_34.lib
+#
+########################################################
+vc6-stlport/libboost_regex-vc6-mt-sgdp-1_34/c_regex_traits.obj: ../src/c_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D__STL_DEBUG /D_STLP_DEBUG /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/libboost_regex-vc6-mt-sgdp-1_34/ -Fdvc6-stlport/libboost_regex-vc6-mt-sgdp-1_34.pdb ../src/c_regex_traits.cpp
+
+vc6-stlport/libboost_regex-vc6-mt-sgdp-1_34/cpp_regex_traits.obj: ../src/cpp_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D__STL_DEBUG /D_STLP_DEBUG /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/libboost_regex-vc6-mt-sgdp-1_34/ -Fdvc6-stlport/libboost_regex-vc6-mt-sgdp-1_34.pdb ../src/cpp_regex_traits.cpp
+
+vc6-stlport/libboost_regex-vc6-mt-sgdp-1_34/cregex.obj: ../src/cregex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D__STL_DEBUG /D_STLP_DEBUG /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/libboost_regex-vc6-mt-sgdp-1_34/ -Fdvc6-stlport/libboost_regex-vc6-mt-sgdp-1_34.pdb ../src/cregex.cpp
+
+vc6-stlport/libboost_regex-vc6-mt-sgdp-1_34/fileiter.obj: ../src/fileiter.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D__STL_DEBUG /D_STLP_DEBUG /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/libboost_regex-vc6-mt-sgdp-1_34/ -Fdvc6-stlport/libboost_regex-vc6-mt-sgdp-1_34.pdb ../src/fileiter.cpp
+
+vc6-stlport/libboost_regex-vc6-mt-sgdp-1_34/icu.obj: ../src/icu.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D__STL_DEBUG /D_STLP_DEBUG /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/libboost_regex-vc6-mt-sgdp-1_34/ -Fdvc6-stlport/libboost_regex-vc6-mt-sgdp-1_34.pdb ../src/icu.cpp
+
+vc6-stlport/libboost_regex-vc6-mt-sgdp-1_34/instances.obj: ../src/instances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D__STL_DEBUG /D_STLP_DEBUG /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/libboost_regex-vc6-mt-sgdp-1_34/ -Fdvc6-stlport/libboost_regex-vc6-mt-sgdp-1_34.pdb ../src/instances.cpp
+
+vc6-stlport/libboost_regex-vc6-mt-sgdp-1_34/posix_api.obj: ../src/posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D__STL_DEBUG /D_STLP_DEBUG /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/libboost_regex-vc6-mt-sgdp-1_34/ -Fdvc6-stlport/libboost_regex-vc6-mt-sgdp-1_34.pdb ../src/posix_api.cpp
+
+vc6-stlport/libboost_regex-vc6-mt-sgdp-1_34/regex.obj: ../src/regex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D__STL_DEBUG /D_STLP_DEBUG /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/libboost_regex-vc6-mt-sgdp-1_34/ -Fdvc6-stlport/libboost_regex-vc6-mt-sgdp-1_34.pdb ../src/regex.cpp
+
+vc6-stlport/libboost_regex-vc6-mt-sgdp-1_34/regex_debug.obj: ../src/regex_debug.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D__STL_DEBUG /D_STLP_DEBUG /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/libboost_regex-vc6-mt-sgdp-1_34/ -Fdvc6-stlport/libboost_regex-vc6-mt-sgdp-1_34.pdb ../src/regex_debug.cpp
+
+vc6-stlport/libboost_regex-vc6-mt-sgdp-1_34/regex_raw_buffer.obj: ../src/regex_raw_buffer.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D__STL_DEBUG /D_STLP_DEBUG /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/libboost_regex-vc6-mt-sgdp-1_34/ -Fdvc6-stlport/libboost_regex-vc6-mt-sgdp-1_34.pdb ../src/regex_raw_buffer.cpp
+
+vc6-stlport/libboost_regex-vc6-mt-sgdp-1_34/regex_traits_defaults.obj: ../src/regex_traits_defaults.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D__STL_DEBUG /D_STLP_DEBUG /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/libboost_regex-vc6-mt-sgdp-1_34/ -Fdvc6-stlport/libboost_regex-vc6-mt-sgdp-1_34.pdb ../src/regex_traits_defaults.cpp
+
+vc6-stlport/libboost_regex-vc6-mt-sgdp-1_34/static_mutex.obj: ../src/static_mutex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D__STL_DEBUG /D_STLP_DEBUG /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/libboost_regex-vc6-mt-sgdp-1_34/ -Fdvc6-stlport/libboost_regex-vc6-mt-sgdp-1_34.pdb ../src/static_mutex.cpp
+
+vc6-stlport/libboost_regex-vc6-mt-sgdp-1_34/usinstances.obj: ../src/usinstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D__STL_DEBUG /D_STLP_DEBUG /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/libboost_regex-vc6-mt-sgdp-1_34/ -Fdvc6-stlport/libboost_regex-vc6-mt-sgdp-1_34.pdb ../src/usinstances.cpp
+
+vc6-stlport/libboost_regex-vc6-mt-sgdp-1_34/w32_regex_traits.obj: ../src/w32_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D__STL_DEBUG /D_STLP_DEBUG /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/libboost_regex-vc6-mt-sgdp-1_34/ -Fdvc6-stlport/libboost_regex-vc6-mt-sgdp-1_34.pdb ../src/w32_regex_traits.cpp
+
+vc6-stlport/libboost_regex-vc6-mt-sgdp-1_34/wc_regex_traits.obj: ../src/wc_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D__STL_DEBUG /D_STLP_DEBUG /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/libboost_regex-vc6-mt-sgdp-1_34/ -Fdvc6-stlport/libboost_regex-vc6-mt-sgdp-1_34.pdb ../src/wc_regex_traits.cpp
+
+vc6-stlport/libboost_regex-vc6-mt-sgdp-1_34/wide_posix_api.obj: ../src/wide_posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D__STL_DEBUG /D_STLP_DEBUG /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/libboost_regex-vc6-mt-sgdp-1_34/ -Fdvc6-stlport/libboost_regex-vc6-mt-sgdp-1_34.pdb ../src/wide_posix_api.cpp
+
+vc6-stlport/libboost_regex-vc6-mt-sgdp-1_34/winstances.obj: ../src/winstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D__STL_DEBUG /D_STLP_DEBUG /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/libboost_regex-vc6-mt-sgdp-1_34/ -Fdvc6-stlport/libboost_regex-vc6-mt-sgdp-1_34.pdb ../src/winstances.cpp
+
+libboost_regex-vc6-mt-sgdp-1_34_dir :
+ @if not exist "vc6-stlport\libboost_regex-vc6-mt-sgdp-1_34\$(NULL)" mkdir vc6-stlport\libboost_regex-vc6-mt-sgdp-1_34
+
+libboost_regex-vc6-mt-sgdp-1_34_clean :
+ del vc6-stlport\libboost_regex-vc6-mt-sgdp-1_34\*.obj
+ del vc6-stlport\libboost_regex-vc6-mt-sgdp-1_34\*.idb
+ del vc6-stlport\libboost_regex-vc6-mt-sgdp-1_34\*.exp
+ del vc6-stlport\libboost_regex-vc6-mt-sgdp-1_34\*.pch
+
+./vc6-stlport/libboost_regex-vc6-mt-sgdp-1_34.lib : vc6-stlport/libboost_regex-vc6-mt-sgdp-1_34/c_regex_traits.obj vc6-stlport/libboost_regex-vc6-mt-sgdp-1_34/cpp_regex_traits.obj vc6-stlport/libboost_regex-vc6-mt-sgdp-1_34/cregex.obj vc6-stlport/libboost_regex-vc6-mt-sgdp-1_34/fileiter.obj vc6-stlport/libboost_regex-vc6-mt-sgdp-1_34/icu.obj vc6-stlport/libboost_regex-vc6-mt-sgdp-1_34/instances.obj vc6-stlport/libboost_regex-vc6-mt-sgdp-1_34/posix_api.obj vc6-stlport/libboost_regex-vc6-mt-sgdp-1_34/regex.obj vc6-stlport/libboost_regex-vc6-mt-sgdp-1_34/regex_debug.obj vc6-stlport/libboost_regex-vc6-mt-sgdp-1_34/regex_raw_buffer.obj vc6-stlport/libboost_regex-vc6-mt-sgdp-1_34/regex_traits_defaults.obj vc6-stlport/libboost_regex-vc6-mt-sgdp-1_34/static_mutex.obj vc6-stlport/libboost_regex-vc6-mt-sgdp-1_34/usinstances.obj vc6-stlport/libboost_regex-vc6-mt-sgdp-1_34/w32_regex_traits.obj vc6-stlport/libboost_regex-vc6-mt-sgdp-1_34/wc_regex_traits.obj vc6-stlport/libboost_regex-vc6-mt-sgdp-1_34/wide_posix_api.obj
vc6-stlport/libboost_regex-vc6-mt-sgdp-1_34/winstances.obj
+ link -lib /nologo /out:vc6-stlport/libboost_regex-vc6-mt-sgdp-1_34.lib $(XSFLAGS) vc6-stlport/libboost_regex-vc6-mt-sgdp-1_34/c_regex_traits.obj vc6-stlport/libboost_regex-vc6-mt-sgdp-1_34/cpp_regex_traits.obj vc6-stlport/libboost_regex-vc6-mt-sgdp-1_34/cregex.obj vc6-stlport/libboost_regex-vc6-mt-sgdp-1_34/fileiter.obj vc6-stlport/libboost_regex-vc6-mt-sgdp-1_34/icu.obj vc6-stlport/libboost_regex-vc6-mt-sgdp-1_34/instances.obj vc6-stlport/libboost_regex-vc6-mt-sgdp-1_34/posix_api.obj vc6-stlport/libboost_regex-vc6-mt-sgdp-1_34/regex.obj vc6-stlport/libboost_regex-vc6-mt-sgdp-1_34/regex_debug.obj vc6-stlport/libboost_regex-vc6-mt-sgdp-1_34/regex_raw_buffer.obj vc6-stlport/libboost_regex-vc6-mt-sgdp-1_34/regex_traits_defaults.obj vc6-stlport/libboost_regex-vc6-mt-sgdp-1_34/static_mutex.obj vc6-stlport/libboost_regex-vc6-mt-sgdp-1_34/usinstances.obj vc6-stlport/libboost_regex-vc6-mt-sgdp-1_34/w32_regex_traits.obj vc6-stlport/libboost_regex-vc6-mt-sgdp-1_34/wc_regex_traits.obj vc6-stlport/libboost_regex-vc6-
mt-sgdp-1_34/wide_posix_api.obj vc6-stlport/libboost_regex-vc6-mt-sgdp-1_34/winstances.obj
+
+########################################################
+#
+# section for libboost_regex-vc6-mt-gdp-1_34.lib
+#
+########################################################
+vc6-stlport/libboost_regex-vc6-mt-gdp-1_34/c_regex_traits.obj: ../src/c_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/libboost_regex-vc6-mt-gdp-1_34/ -Fdvc6-stlport/libboost_regex-vc6-mt-gdp-1_34.pdb ../src/c_regex_traits.cpp
+
+vc6-stlport/libboost_regex-vc6-mt-gdp-1_34/cpp_regex_traits.obj: ../src/cpp_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/libboost_regex-vc6-mt-gdp-1_34/ -Fdvc6-stlport/libboost_regex-vc6-mt-gdp-1_34.pdb ../src/cpp_regex_traits.cpp
+
+vc6-stlport/libboost_regex-vc6-mt-gdp-1_34/cregex.obj: ../src/cregex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/libboost_regex-vc6-mt-gdp-1_34/ -Fdvc6-stlport/libboost_regex-vc6-mt-gdp-1_34.pdb ../src/cregex.cpp
+
+vc6-stlport/libboost_regex-vc6-mt-gdp-1_34/fileiter.obj: ../src/fileiter.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/libboost_regex-vc6-mt-gdp-1_34/ -Fdvc6-stlport/libboost_regex-vc6-mt-gdp-1_34.pdb ../src/fileiter.cpp
+
+vc6-stlport/libboost_regex-vc6-mt-gdp-1_34/icu.obj: ../src/icu.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/libboost_regex-vc6-mt-gdp-1_34/ -Fdvc6-stlport/libboost_regex-vc6-mt-gdp-1_34.pdb ../src/icu.cpp
+
+vc6-stlport/libboost_regex-vc6-mt-gdp-1_34/instances.obj: ../src/instances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/libboost_regex-vc6-mt-gdp-1_34/ -Fdvc6-stlport/libboost_regex-vc6-mt-gdp-1_34.pdb ../src/instances.cpp
+
+vc6-stlport/libboost_regex-vc6-mt-gdp-1_34/posix_api.obj: ../src/posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/libboost_regex-vc6-mt-gdp-1_34/ -Fdvc6-stlport/libboost_regex-vc6-mt-gdp-1_34.pdb ../src/posix_api.cpp
+
+vc6-stlport/libboost_regex-vc6-mt-gdp-1_34/regex.obj: ../src/regex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/libboost_regex-vc6-mt-gdp-1_34/ -Fdvc6-stlport/libboost_regex-vc6-mt-gdp-1_34.pdb ../src/regex.cpp
+
+vc6-stlport/libboost_regex-vc6-mt-gdp-1_34/regex_debug.obj: ../src/regex_debug.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/libboost_regex-vc6-mt-gdp-1_34/ -Fdvc6-stlport/libboost_regex-vc6-mt-gdp-1_34.pdb ../src/regex_debug.cpp
+
+vc6-stlport/libboost_regex-vc6-mt-gdp-1_34/regex_raw_buffer.obj: ../src/regex_raw_buffer.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/libboost_regex-vc6-mt-gdp-1_34/ -Fdvc6-stlport/libboost_regex-vc6-mt-gdp-1_34.pdb ../src/regex_raw_buffer.cpp
+
+vc6-stlport/libboost_regex-vc6-mt-gdp-1_34/regex_traits_defaults.obj: ../src/regex_traits_defaults.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/libboost_regex-vc6-mt-gdp-1_34/ -Fdvc6-stlport/libboost_regex-vc6-mt-gdp-1_34.pdb ../src/regex_traits_defaults.cpp
+
+vc6-stlport/libboost_regex-vc6-mt-gdp-1_34/static_mutex.obj: ../src/static_mutex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/libboost_regex-vc6-mt-gdp-1_34/ -Fdvc6-stlport/libboost_regex-vc6-mt-gdp-1_34.pdb ../src/static_mutex.cpp
+
+vc6-stlport/libboost_regex-vc6-mt-gdp-1_34/usinstances.obj: ../src/usinstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/libboost_regex-vc6-mt-gdp-1_34/ -Fdvc6-stlport/libboost_regex-vc6-mt-gdp-1_34.pdb ../src/usinstances.cpp
+
+vc6-stlport/libboost_regex-vc6-mt-gdp-1_34/w32_regex_traits.obj: ../src/w32_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/libboost_regex-vc6-mt-gdp-1_34/ -Fdvc6-stlport/libboost_regex-vc6-mt-gdp-1_34.pdb ../src/w32_regex_traits.cpp
+
+vc6-stlport/libboost_regex-vc6-mt-gdp-1_34/wc_regex_traits.obj: ../src/wc_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/libboost_regex-vc6-mt-gdp-1_34/ -Fdvc6-stlport/libboost_regex-vc6-mt-gdp-1_34.pdb ../src/wc_regex_traits.cpp
+
+vc6-stlport/libboost_regex-vc6-mt-gdp-1_34/wide_posix_api.obj: ../src/wide_posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/libboost_regex-vc6-mt-gdp-1_34/ -Fdvc6-stlport/libboost_regex-vc6-mt-gdp-1_34.pdb ../src/wide_posix_api.cpp
+
+vc6-stlport/libboost_regex-vc6-mt-gdp-1_34/winstances.obj: ../src/winstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6-stlport/libboost_regex-vc6-mt-gdp-1_34/ -Fdvc6-stlport/libboost_regex-vc6-mt-gdp-1_34.pdb ../src/winstances.cpp
+
+libboost_regex-vc6-mt-gdp-1_34_dir :
+ @if not exist "vc6-stlport\libboost_regex-vc6-mt-gdp-1_34\$(NULL)" mkdir vc6-stlport\libboost_regex-vc6-mt-gdp-1_34
+
+libboost_regex-vc6-mt-gdp-1_34_clean :
+ del vc6-stlport\libboost_regex-vc6-mt-gdp-1_34\*.obj
+ del vc6-stlport\libboost_regex-vc6-mt-gdp-1_34\*.idb
+ del vc6-stlport\libboost_regex-vc6-mt-gdp-1_34\*.exp
+ del vc6-stlport\libboost_regex-vc6-mt-gdp-1_34\*.pch
+
+./vc6-stlport/libboost_regex-vc6-mt-gdp-1_34.lib : vc6-stlport/libboost_regex-vc6-mt-gdp-1_34/c_regex_traits.obj vc6-stlport/libboost_regex-vc6-mt-gdp-1_34/cpp_regex_traits.obj vc6-stlport/libboost_regex-vc6-mt-gdp-1_34/cregex.obj vc6-stlport/libboost_regex-vc6-mt-gdp-1_34/fileiter.obj vc6-stlport/libboost_regex-vc6-mt-gdp-1_34/icu.obj vc6-stlport/libboost_regex-vc6-mt-gdp-1_34/instances.obj vc6-stlport/libboost_regex-vc6-mt-gdp-1_34/posix_api.obj vc6-stlport/libboost_regex-vc6-mt-gdp-1_34/regex.obj vc6-stlport/libboost_regex-vc6-mt-gdp-1_34/regex_debug.obj vc6-stlport/libboost_regex-vc6-mt-gdp-1_34/regex_raw_buffer.obj vc6-stlport/libboost_regex-vc6-mt-gdp-1_34/regex_traits_defaults.obj vc6-stlport/libboost_regex-vc6-mt-gdp-1_34/static_mutex.obj vc6-stlport/libboost_regex-vc6-mt-gdp-1_34/usinstances.obj vc6-stlport/libboost_regex-vc6-mt-gdp-1_34/w32_regex_traits.obj vc6-stlport/libboost_regex-vc6-mt-gdp-1_34/wc_regex_traits.obj vc6-stlport/libboost_regex-vc6-mt-gdp-1_34/wide_posix_api.obj vc6-stlport/libbo
ost_regex-vc6-mt-gdp-1_34/winstances.obj
+ link -lib /nologo /out:vc6-stlport/libboost_regex-vc6-mt-gdp-1_34.lib $(XSFLAGS) vc6-stlport/libboost_regex-vc6-mt-gdp-1_34/c_regex_traits.obj vc6-stlport/libboost_regex-vc6-mt-gdp-1_34/cpp_regex_traits.obj vc6-stlport/libboost_regex-vc6-mt-gdp-1_34/cregex.obj vc6-stlport/libboost_regex-vc6-mt-gdp-1_34/fileiter.obj vc6-stlport/libboost_regex-vc6-mt-gdp-1_34/icu.obj vc6-stlport/libboost_regex-vc6-mt-gdp-1_34/instances.obj vc6-stlport/libboost_regex-vc6-mt-gdp-1_34/posix_api.obj vc6-stlport/libboost_regex-vc6-mt-gdp-1_34/regex.obj vc6-stlport/libboost_regex-vc6-mt-gdp-1_34/regex_debug.obj vc6-stlport/libboost_regex-vc6-mt-gdp-1_34/regex_raw_buffer.obj vc6-stlport/libboost_regex-vc6-mt-gdp-1_34/regex_traits_defaults.obj vc6-stlport/libboost_regex-vc6-mt-gdp-1_34/static_mutex.obj vc6-stlport/libboost_regex-vc6-mt-gdp-1_34/usinstances.obj vc6-stlport/libboost_regex-vc6-mt-gdp-1_34/w32_regex_traits.obj vc6-stlport/libboost_regex-vc6-mt-gdp-1_34/wc_regex_traits.obj vc6-stlport/libboost_regex-vc6-mt-gdp-1_34/wide
_posix_api.obj vc6-stlport/libboost_regex-vc6-mt-gdp-1_34/winstances.obj
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/build/vc6.mak
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/build/vc6.mak 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,632 @@
+# copyright John Maddock 2006
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt.
+#
+# auto generated makefile for VC6 compiler
+#
+# usage:
+# make
+# brings libraries up to date
+# make install
+# brings libraries up to date and copies binaries to your VC6 /lib and /bin directories (recomended)
+#
+
+#
+# path to ICU library installation goes here:
+#
+ICU_PATH=
+#
+# Add additional compiler options here:
+#
+CXXFLAGS=
+#
+# Add additional include directories here:
+#
+INCLUDES=
+#
+# add additional linker flags here:
+#
+XLFLAGS=
+#
+# add additional static-library creation flags here:
+#
+XSFLAGS=
+
+!IF "$(OS)" == "Windows_NT"
+NULL=
+!ELSE
+NULL=nul
+!ENDIF
+
+!IF "$(MSVCDIR)" == ""
+
+!ENDIF
+
+!IF "$(MSVCDIR)" == ""
+!ERROR Variable MSVCDIR not set.
+!ENDIF
+
+!IF "$(ICU_PATH)" == ""
+ICU_COMPILE_OPTS=
+ICU_LINK_OPTS=
+!MESSAGE Building Boost.Regex without ICU / Unicode support:
+!MESSAGE Hint: set ICU_PATH on the nmake command line to point
+!MESSAGE to your ICU installation if you have one.
+!ELSE
+ICU_COMPILE_OPTS= -DBOOST_HAS_ICU=1 -I"$(ICU_PATH)\include"
+ICU_LINK_OPTS= /LIBPATH:"$(ICU_PATH)\lib" icuin.lib icuuc.lib
+!MESSAGE Building Boost.Regex with ICU in $(ICU_PATH)
+!ENDIF
+
+
+ALL_HEADER= ../../../boost/regex/concepts.hpp ../../../boost/regex/config.hpp ../../../boost/regex/icu.hpp ../../../boost/regex/mfc.hpp ../../../boost/regex/pattern_except.hpp ../../../boost/regex/regex_traits.hpp ../../../boost/regex/user.hpp ../../../boost/regex/v4/basic_regex.hpp ../../../boost/regex/v4/basic_regex_creator.hpp ../../../boost/regex/v4/basic_regex_parser.hpp ../../../boost/regex/v4/c_regex_traits.hpp ../../../boost/regex/v4/char_regex_traits.hpp ../../../boost/regex/v4/cpp_regex_traits.hpp ../../../boost/regex/v4/cregex.hpp ../../../boost/regex/v4/error_type.hpp ../../../boost/regex/v4/fileiter.hpp ../../../boost/regex/v4/instances.hpp ../../../boost/regex/v4/iterator_category.hpp ../../../boost/regex/v4/iterator_traits.hpp ../../../boost/regex/v4/match_flags.hpp ../../../boost/regex/v4/match_results.hpp ../../../boost/regex/v4/mem_block_cache.hpp ../../../boost/regex/v4/perl_matcher.hpp ../../../boost/regex/v4/perl_matcher_common.hpp ../../../boost/regex/v4/perl_matcher_non_recursive.hpp
../../../boost/regex/v4/perl_matcher_recursive.hpp ../../../boost/regex/v4/primary_transform.hpp ../../../boost/regex/v4/protected_call.hpp ../../../boost/regex/v4/regbase.hpp ../../../boost/regex/v4/regex.hpp ../../../boost/regex/v4/regex_cstring.hpp ../../../boost/regex/v4/regex_format.hpp ../../../boost/regex/v4/regex_fwd.hpp ../../../boost/regex/v4/regex_grep.hpp ../../../boost/regex/v4/regex_iterator.hpp ../../../boost/regex/v4/regex_kmp.hpp ../../../boost/regex/v4/regex_match.hpp ../../../boost/regex/v4/regex_merge.hpp ../../../boost/regex/v4/regex_raw_buffer.hpp ../../../boost/regex/v4/regex_replace.hpp ../../../boost/regex/v4/regex_search.hpp ../../../boost/regex/v4/regex_split.hpp ../../../boost/regex/v4/regex_stack.hpp ../../../boost/regex/v4/regex_token_iterator.hpp ../../../boost/regex/v4/regex_traits.hpp ../../../boost/regex/v4/regex_traits_defaults.hpp ../../../boost/regex/v4/regex_workaround.hpp ../../../boost/regex/v4/states.hpp ../../../boost/regex/v4/sub_match.hpp ../../../boost/regex/v4/sy
ntax_type.hpp ../../../boost/regex/v4/u32regex_iterator.hpp ../../../boost/regex/v4/u32regex_token_iterator.hpp ../../../boost/regex/v4/w32_regex_traits.hpp ../../../boost/regex/config/borland.hpp ../../../boost/regex/config/cwchar.hpp
+
+all : main_dir libboost_regex-vc6-s-1_34_dir ./vc6/libboost_regex-vc6-s-1_34.lib libboost_regex-vc6-mt-s-1_34_dir ./vc6/libboost_regex-vc6-mt-s-1_34.lib libboost_regex-vc6-sgd-1_34_dir ./vc6/libboost_regex-vc6-sgd-1_34.lib libboost_regex-vc6-mt-sgd-1_34_dir ./vc6/libboost_regex-vc6-mt-sgd-1_34.lib boost_regex-vc6-mt-gd-1_34_dir ./vc6/boost_regex-vc6-mt-gd-1_34.lib boost_regex-vc6-mt-1_34_dir ./vc6/boost_regex-vc6-mt-1_34.lib libboost_regex-vc6-mt-1_34_dir ./vc6/libboost_regex-vc6-mt-1_34.lib libboost_regex-vc6-mt-gd-1_34_dir ./vc6/libboost_regex-vc6-mt-gd-1_34.lib
+
+clean : libboost_regex-vc6-s-1_34_clean libboost_regex-vc6-mt-s-1_34_clean libboost_regex-vc6-sgd-1_34_clean libboost_regex-vc6-mt-sgd-1_34_clean boost_regex-vc6-mt-gd-1_34_clean boost_regex-vc6-mt-1_34_clean libboost_regex-vc6-mt-1_34_clean libboost_regex-vc6-mt-gd-1_34_clean
+
+install : all
+ copy vc6\libboost_regex-vc6-s-1_34.lib "$(MSVCDIR)\lib"
+ copy vc6\libboost_regex-vc6-mt-s-1_34.lib "$(MSVCDIR)\lib"
+ copy vc6\libboost_regex-vc6-sgd-1_34.lib "$(MSVCDIR)\lib"
+ copy vc6\libboost_regex-vc6-sgd-1_34.pdb "$(MSVCDIR)\lib"
+ copy vc6\libboost_regex-vc6-mt-sgd-1_34.lib "$(MSVCDIR)\lib"
+ copy vc6\libboost_regex-vc6-mt-sgd-1_34.pdb "$(MSVCDIR)\lib"
+ copy vc6\boost_regex-vc6-mt-gd-1_34.lib "$(MSVCDIR)\lib"
+ copy vc6\boost_regex-vc6-mt-gd-1_34.dll "$(MSVCDIR)\bin"
+ copy vc6\boost_regex-vc6-mt-gd-1_34.pdb "$(MSVCDIR)\lib"
+ copy vc6\boost_regex-vc6-mt-1_34.lib "$(MSVCDIR)\lib"
+ copy vc6\boost_regex-vc6-mt-1_34.dll "$(MSVCDIR)\bin"
+ copy vc6\libboost_regex-vc6-mt-1_34.lib "$(MSVCDIR)\lib"
+ copy vc6\libboost_regex-vc6-mt-gd-1_34.lib "$(MSVCDIR)\lib"
+ copy vc6\libboost_regex-vc6-mt-gd-1_34.pdb "$(MSVCDIR)\lib"
+
+main_dir :
+ @if not exist "vc6\$(NULL)" mkdir vc6
+
+
+########################################################
+#
+# section for libboost_regex-vc6-s-1_34.lib
+#
+########################################################
+vc6/libboost_regex-vc6-s-1_34/c_regex_traits.obj: ../src/c_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /c /nologo /ML /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-s-1_34/ -Fdvc6/libboost_regex-vc6-s-1_34.pdb ../src/c_regex_traits.cpp
+
+vc6/libboost_regex-vc6-s-1_34/cpp_regex_traits.obj: ../src/cpp_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /c /nologo /ML /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-s-1_34/ -Fdvc6/libboost_regex-vc6-s-1_34.pdb ../src/cpp_regex_traits.cpp
+
+vc6/libboost_regex-vc6-s-1_34/cregex.obj: ../src/cregex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /c /nologo /ML /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-s-1_34/ -Fdvc6/libboost_regex-vc6-s-1_34.pdb ../src/cregex.cpp
+
+vc6/libboost_regex-vc6-s-1_34/fileiter.obj: ../src/fileiter.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /c /nologo /ML /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-s-1_34/ -Fdvc6/libboost_regex-vc6-s-1_34.pdb ../src/fileiter.cpp
+
+vc6/libboost_regex-vc6-s-1_34/icu.obj: ../src/icu.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /c /nologo /ML /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-s-1_34/ -Fdvc6/libboost_regex-vc6-s-1_34.pdb ../src/icu.cpp
+
+vc6/libboost_regex-vc6-s-1_34/instances.obj: ../src/instances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /c /nologo /ML /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-s-1_34/ -Fdvc6/libboost_regex-vc6-s-1_34.pdb ../src/instances.cpp
+
+vc6/libboost_regex-vc6-s-1_34/posix_api.obj: ../src/posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /c /nologo /ML /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-s-1_34/ -Fdvc6/libboost_regex-vc6-s-1_34.pdb ../src/posix_api.cpp
+
+vc6/libboost_regex-vc6-s-1_34/regex.obj: ../src/regex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /c /nologo /ML /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-s-1_34/ -Fdvc6/libboost_regex-vc6-s-1_34.pdb ../src/regex.cpp
+
+vc6/libboost_regex-vc6-s-1_34/regex_debug.obj: ../src/regex_debug.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /c /nologo /ML /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-s-1_34/ -Fdvc6/libboost_regex-vc6-s-1_34.pdb ../src/regex_debug.cpp
+
+vc6/libboost_regex-vc6-s-1_34/regex_raw_buffer.obj: ../src/regex_raw_buffer.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /c /nologo /ML /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-s-1_34/ -Fdvc6/libboost_regex-vc6-s-1_34.pdb ../src/regex_raw_buffer.cpp
+
+vc6/libboost_regex-vc6-s-1_34/regex_traits_defaults.obj: ../src/regex_traits_defaults.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /c /nologo /ML /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-s-1_34/ -Fdvc6/libboost_regex-vc6-s-1_34.pdb ../src/regex_traits_defaults.cpp
+
+vc6/libboost_regex-vc6-s-1_34/static_mutex.obj: ../src/static_mutex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /c /nologo /ML /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-s-1_34/ -Fdvc6/libboost_regex-vc6-s-1_34.pdb ../src/static_mutex.cpp
+
+vc6/libboost_regex-vc6-s-1_34/usinstances.obj: ../src/usinstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /c /nologo /ML /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-s-1_34/ -Fdvc6/libboost_regex-vc6-s-1_34.pdb ../src/usinstances.cpp
+
+vc6/libboost_regex-vc6-s-1_34/w32_regex_traits.obj: ../src/w32_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /c /nologo /ML /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-s-1_34/ -Fdvc6/libboost_regex-vc6-s-1_34.pdb ../src/w32_regex_traits.cpp
+
+vc6/libboost_regex-vc6-s-1_34/wc_regex_traits.obj: ../src/wc_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /c /nologo /ML /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-s-1_34/ -Fdvc6/libboost_regex-vc6-s-1_34.pdb ../src/wc_regex_traits.cpp
+
+vc6/libboost_regex-vc6-s-1_34/wide_posix_api.obj: ../src/wide_posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /c /nologo /ML /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-s-1_34/ -Fdvc6/libboost_regex-vc6-s-1_34.pdb ../src/wide_posix_api.cpp
+
+vc6/libboost_regex-vc6-s-1_34/winstances.obj: ../src/winstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /c /nologo /ML /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-s-1_34/ -Fdvc6/libboost_regex-vc6-s-1_34.pdb ../src/winstances.cpp
+
+libboost_regex-vc6-s-1_34_dir :
+ @if not exist "vc6\libboost_regex-vc6-s-1_34\$(NULL)" mkdir vc6\libboost_regex-vc6-s-1_34
+
+libboost_regex-vc6-s-1_34_clean :
+ del vc6\libboost_regex-vc6-s-1_34\*.obj
+ del vc6\libboost_regex-vc6-s-1_34\*.idb
+ del vc6\libboost_regex-vc6-s-1_34\*.exp
+ del vc6\libboost_regex-vc6-s-1_34\*.pch
+
+./vc6/libboost_regex-vc6-s-1_34.lib : vc6/libboost_regex-vc6-s-1_34/c_regex_traits.obj vc6/libboost_regex-vc6-s-1_34/cpp_regex_traits.obj vc6/libboost_regex-vc6-s-1_34/cregex.obj vc6/libboost_regex-vc6-s-1_34/fileiter.obj vc6/libboost_regex-vc6-s-1_34/icu.obj vc6/libboost_regex-vc6-s-1_34/instances.obj vc6/libboost_regex-vc6-s-1_34/posix_api.obj vc6/libboost_regex-vc6-s-1_34/regex.obj vc6/libboost_regex-vc6-s-1_34/regex_debug.obj vc6/libboost_regex-vc6-s-1_34/regex_raw_buffer.obj vc6/libboost_regex-vc6-s-1_34/regex_traits_defaults.obj vc6/libboost_regex-vc6-s-1_34/static_mutex.obj vc6/libboost_regex-vc6-s-1_34/usinstances.obj vc6/libboost_regex-vc6-s-1_34/w32_regex_traits.obj vc6/libboost_regex-vc6-s-1_34/wc_regex_traits.obj vc6/libboost_regex-vc6-s-1_34/wide_posix_api.obj vc6/libboost_regex-vc6-s-1_34/winstances.obj
+ link -lib /nologo /out:vc6/libboost_regex-vc6-s-1_34.lib $(XSFLAGS) vc6/libboost_regex-vc6-s-1_34/c_regex_traits.obj vc6/libboost_regex-vc6-s-1_34/cpp_regex_traits.obj vc6/libboost_regex-vc6-s-1_34/cregex.obj vc6/libboost_regex-vc6-s-1_34/fileiter.obj vc6/libboost_regex-vc6-s-1_34/icu.obj vc6/libboost_regex-vc6-s-1_34/instances.obj vc6/libboost_regex-vc6-s-1_34/posix_api.obj vc6/libboost_regex-vc6-s-1_34/regex.obj vc6/libboost_regex-vc6-s-1_34/regex_debug.obj vc6/libboost_regex-vc6-s-1_34/regex_raw_buffer.obj vc6/libboost_regex-vc6-s-1_34/regex_traits_defaults.obj vc6/libboost_regex-vc6-s-1_34/static_mutex.obj vc6/libboost_regex-vc6-s-1_34/usinstances.obj vc6/libboost_regex-vc6-s-1_34/w32_regex_traits.obj vc6/libboost_regex-vc6-s-1_34/wc_regex_traits.obj vc6/libboost_regex-vc6-s-1_34/wide_posix_api.obj vc6/libboost_regex-vc6-s-1_34/winstances.obj
+
+########################################################
+#
+# section for libboost_regex-vc6-mt-s-1_34.lib
+#
+########################################################
+vc6/libboost_regex-vc6-mt-s-1_34/c_regex_traits.obj: ../src/c_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-mt-s-1_34/ -Fdvc6/libboost_regex-vc6-mt-s-1_34.pdb ../src/c_regex_traits.cpp
+
+vc6/libboost_regex-vc6-mt-s-1_34/cpp_regex_traits.obj: ../src/cpp_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-mt-s-1_34/ -Fdvc6/libboost_regex-vc6-mt-s-1_34.pdb ../src/cpp_regex_traits.cpp
+
+vc6/libboost_regex-vc6-mt-s-1_34/cregex.obj: ../src/cregex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-mt-s-1_34/ -Fdvc6/libboost_regex-vc6-mt-s-1_34.pdb ../src/cregex.cpp
+
+vc6/libboost_regex-vc6-mt-s-1_34/fileiter.obj: ../src/fileiter.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-mt-s-1_34/ -Fdvc6/libboost_regex-vc6-mt-s-1_34.pdb ../src/fileiter.cpp
+
+vc6/libboost_regex-vc6-mt-s-1_34/icu.obj: ../src/icu.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-mt-s-1_34/ -Fdvc6/libboost_regex-vc6-mt-s-1_34.pdb ../src/icu.cpp
+
+vc6/libboost_regex-vc6-mt-s-1_34/instances.obj: ../src/instances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-mt-s-1_34/ -Fdvc6/libboost_regex-vc6-mt-s-1_34.pdb ../src/instances.cpp
+
+vc6/libboost_regex-vc6-mt-s-1_34/posix_api.obj: ../src/posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-mt-s-1_34/ -Fdvc6/libboost_regex-vc6-mt-s-1_34.pdb ../src/posix_api.cpp
+
+vc6/libboost_regex-vc6-mt-s-1_34/regex.obj: ../src/regex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-mt-s-1_34/ -Fdvc6/libboost_regex-vc6-mt-s-1_34.pdb ../src/regex.cpp
+
+vc6/libboost_regex-vc6-mt-s-1_34/regex_debug.obj: ../src/regex_debug.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-mt-s-1_34/ -Fdvc6/libboost_regex-vc6-mt-s-1_34.pdb ../src/regex_debug.cpp
+
+vc6/libboost_regex-vc6-mt-s-1_34/regex_raw_buffer.obj: ../src/regex_raw_buffer.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-mt-s-1_34/ -Fdvc6/libboost_regex-vc6-mt-s-1_34.pdb ../src/regex_raw_buffer.cpp
+
+vc6/libboost_regex-vc6-mt-s-1_34/regex_traits_defaults.obj: ../src/regex_traits_defaults.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-mt-s-1_34/ -Fdvc6/libboost_regex-vc6-mt-s-1_34.pdb ../src/regex_traits_defaults.cpp
+
+vc6/libboost_regex-vc6-mt-s-1_34/static_mutex.obj: ../src/static_mutex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-mt-s-1_34/ -Fdvc6/libboost_regex-vc6-mt-s-1_34.pdb ../src/static_mutex.cpp
+
+vc6/libboost_regex-vc6-mt-s-1_34/usinstances.obj: ../src/usinstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-mt-s-1_34/ -Fdvc6/libboost_regex-vc6-mt-s-1_34.pdb ../src/usinstances.cpp
+
+vc6/libboost_regex-vc6-mt-s-1_34/w32_regex_traits.obj: ../src/w32_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-mt-s-1_34/ -Fdvc6/libboost_regex-vc6-mt-s-1_34.pdb ../src/w32_regex_traits.cpp
+
+vc6/libboost_regex-vc6-mt-s-1_34/wc_regex_traits.obj: ../src/wc_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-mt-s-1_34/ -Fdvc6/libboost_regex-vc6-mt-s-1_34.pdb ../src/wc_regex_traits.cpp
+
+vc6/libboost_regex-vc6-mt-s-1_34/wide_posix_api.obj: ../src/wide_posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-mt-s-1_34/ -Fdvc6/libboost_regex-vc6-mt-s-1_34.pdb ../src/wide_posix_api.cpp
+
+vc6/libboost_regex-vc6-mt-s-1_34/winstances.obj: ../src/winstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-mt-s-1_34/ -Fdvc6/libboost_regex-vc6-mt-s-1_34.pdb ../src/winstances.cpp
+
+libboost_regex-vc6-mt-s-1_34_dir :
+ @if not exist "vc6\libboost_regex-vc6-mt-s-1_34\$(NULL)" mkdir vc6\libboost_regex-vc6-mt-s-1_34
+
+libboost_regex-vc6-mt-s-1_34_clean :
+ del vc6\libboost_regex-vc6-mt-s-1_34\*.obj
+ del vc6\libboost_regex-vc6-mt-s-1_34\*.idb
+ del vc6\libboost_regex-vc6-mt-s-1_34\*.exp
+ del vc6\libboost_regex-vc6-mt-s-1_34\*.pch
+
+./vc6/libboost_regex-vc6-mt-s-1_34.lib : vc6/libboost_regex-vc6-mt-s-1_34/c_regex_traits.obj vc6/libboost_regex-vc6-mt-s-1_34/cpp_regex_traits.obj vc6/libboost_regex-vc6-mt-s-1_34/cregex.obj vc6/libboost_regex-vc6-mt-s-1_34/fileiter.obj vc6/libboost_regex-vc6-mt-s-1_34/icu.obj vc6/libboost_regex-vc6-mt-s-1_34/instances.obj vc6/libboost_regex-vc6-mt-s-1_34/posix_api.obj vc6/libboost_regex-vc6-mt-s-1_34/regex.obj vc6/libboost_regex-vc6-mt-s-1_34/regex_debug.obj vc6/libboost_regex-vc6-mt-s-1_34/regex_raw_buffer.obj vc6/libboost_regex-vc6-mt-s-1_34/regex_traits_defaults.obj vc6/libboost_regex-vc6-mt-s-1_34/static_mutex.obj vc6/libboost_regex-vc6-mt-s-1_34/usinstances.obj vc6/libboost_regex-vc6-mt-s-1_34/w32_regex_traits.obj vc6/libboost_regex-vc6-mt-s-1_34/wc_regex_traits.obj vc6/libboost_regex-vc6-mt-s-1_34/wide_posix_api.obj vc6/libboost_regex-vc6-mt-s-1_34/winstances.obj
+ link -lib /nologo /out:vc6/libboost_regex-vc6-mt-s-1_34.lib $(XSFLAGS) vc6/libboost_regex-vc6-mt-s-1_34/c_regex_traits.obj vc6/libboost_regex-vc6-mt-s-1_34/cpp_regex_traits.obj vc6/libboost_regex-vc6-mt-s-1_34/cregex.obj vc6/libboost_regex-vc6-mt-s-1_34/fileiter.obj vc6/libboost_regex-vc6-mt-s-1_34/icu.obj vc6/libboost_regex-vc6-mt-s-1_34/instances.obj vc6/libboost_regex-vc6-mt-s-1_34/posix_api.obj vc6/libboost_regex-vc6-mt-s-1_34/regex.obj vc6/libboost_regex-vc6-mt-s-1_34/regex_debug.obj vc6/libboost_regex-vc6-mt-s-1_34/regex_raw_buffer.obj vc6/libboost_regex-vc6-mt-s-1_34/regex_traits_defaults.obj vc6/libboost_regex-vc6-mt-s-1_34/static_mutex.obj vc6/libboost_regex-vc6-mt-s-1_34/usinstances.obj vc6/libboost_regex-vc6-mt-s-1_34/w32_regex_traits.obj vc6/libboost_regex-vc6-mt-s-1_34/wc_regex_traits.obj vc6/libboost_regex-vc6-mt-s-1_34/wide_posix_api.obj vc6/libboost_regex-vc6-mt-s-1_34/winstances.obj
+
+########################################################
+#
+# section for libboost_regex-vc6-sgd-1_34.lib
+#
+########################################################
+vc6/libboost_regex-vc6-sgd-1_34/c_regex_traits.obj: ../src/c_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MLd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_DEBUG /D_MBCS /D_LIB /FD /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-sgd-1_34/ -Fdvc6/libboost_regex-vc6-sgd-1_34.pdb ../src/c_regex_traits.cpp
+
+vc6/libboost_regex-vc6-sgd-1_34/cpp_regex_traits.obj: ../src/cpp_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MLd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_DEBUG /D_MBCS /D_LIB /FD /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-sgd-1_34/ -Fdvc6/libboost_regex-vc6-sgd-1_34.pdb ../src/cpp_regex_traits.cpp
+
+vc6/libboost_regex-vc6-sgd-1_34/cregex.obj: ../src/cregex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MLd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_DEBUG /D_MBCS /D_LIB /FD /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-sgd-1_34/ -Fdvc6/libboost_regex-vc6-sgd-1_34.pdb ../src/cregex.cpp
+
+vc6/libboost_regex-vc6-sgd-1_34/fileiter.obj: ../src/fileiter.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MLd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_DEBUG /D_MBCS /D_LIB /FD /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-sgd-1_34/ -Fdvc6/libboost_regex-vc6-sgd-1_34.pdb ../src/fileiter.cpp
+
+vc6/libboost_regex-vc6-sgd-1_34/icu.obj: ../src/icu.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MLd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_DEBUG /D_MBCS /D_LIB /FD /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-sgd-1_34/ -Fdvc6/libboost_regex-vc6-sgd-1_34.pdb ../src/icu.cpp
+
+vc6/libboost_regex-vc6-sgd-1_34/instances.obj: ../src/instances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MLd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_DEBUG /D_MBCS /D_LIB /FD /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-sgd-1_34/ -Fdvc6/libboost_regex-vc6-sgd-1_34.pdb ../src/instances.cpp
+
+vc6/libboost_regex-vc6-sgd-1_34/posix_api.obj: ../src/posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MLd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_DEBUG /D_MBCS /D_LIB /FD /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-sgd-1_34/ -Fdvc6/libboost_regex-vc6-sgd-1_34.pdb ../src/posix_api.cpp
+
+vc6/libboost_regex-vc6-sgd-1_34/regex.obj: ../src/regex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MLd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_DEBUG /D_MBCS /D_LIB /FD /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-sgd-1_34/ -Fdvc6/libboost_regex-vc6-sgd-1_34.pdb ../src/regex.cpp
+
+vc6/libboost_regex-vc6-sgd-1_34/regex_debug.obj: ../src/regex_debug.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MLd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_DEBUG /D_MBCS /D_LIB /FD /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-sgd-1_34/ -Fdvc6/libboost_regex-vc6-sgd-1_34.pdb ../src/regex_debug.cpp
+
+vc6/libboost_regex-vc6-sgd-1_34/regex_raw_buffer.obj: ../src/regex_raw_buffer.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MLd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_DEBUG /D_MBCS /D_LIB /FD /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-sgd-1_34/ -Fdvc6/libboost_regex-vc6-sgd-1_34.pdb ../src/regex_raw_buffer.cpp
+
+vc6/libboost_regex-vc6-sgd-1_34/regex_traits_defaults.obj: ../src/regex_traits_defaults.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MLd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_DEBUG /D_MBCS /D_LIB /FD /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-sgd-1_34/ -Fdvc6/libboost_regex-vc6-sgd-1_34.pdb ../src/regex_traits_defaults.cpp
+
+vc6/libboost_regex-vc6-sgd-1_34/static_mutex.obj: ../src/static_mutex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MLd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_DEBUG /D_MBCS /D_LIB /FD /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-sgd-1_34/ -Fdvc6/libboost_regex-vc6-sgd-1_34.pdb ../src/static_mutex.cpp
+
+vc6/libboost_regex-vc6-sgd-1_34/usinstances.obj: ../src/usinstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MLd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_DEBUG /D_MBCS /D_LIB /FD /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-sgd-1_34/ -Fdvc6/libboost_regex-vc6-sgd-1_34.pdb ../src/usinstances.cpp
+
+vc6/libboost_regex-vc6-sgd-1_34/w32_regex_traits.obj: ../src/w32_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MLd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_DEBUG /D_MBCS /D_LIB /FD /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-sgd-1_34/ -Fdvc6/libboost_regex-vc6-sgd-1_34.pdb ../src/w32_regex_traits.cpp
+
+vc6/libboost_regex-vc6-sgd-1_34/wc_regex_traits.obj: ../src/wc_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MLd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_DEBUG /D_MBCS /D_LIB /FD /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-sgd-1_34/ -Fdvc6/libboost_regex-vc6-sgd-1_34.pdb ../src/wc_regex_traits.cpp
+
+vc6/libboost_regex-vc6-sgd-1_34/wide_posix_api.obj: ../src/wide_posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MLd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_DEBUG /D_MBCS /D_LIB /FD /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-sgd-1_34/ -Fdvc6/libboost_regex-vc6-sgd-1_34.pdb ../src/wide_posix_api.cpp
+
+vc6/libboost_regex-vc6-sgd-1_34/winstances.obj: ../src/winstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MLd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_DEBUG /D_MBCS /D_LIB /FD /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-sgd-1_34/ -Fdvc6/libboost_regex-vc6-sgd-1_34.pdb ../src/winstances.cpp
+
+libboost_regex-vc6-sgd-1_34_dir :
+ @if not exist "vc6\libboost_regex-vc6-sgd-1_34\$(NULL)" mkdir vc6\libboost_regex-vc6-sgd-1_34
+
+libboost_regex-vc6-sgd-1_34_clean :
+ del vc6\libboost_regex-vc6-sgd-1_34\*.obj
+ del vc6\libboost_regex-vc6-sgd-1_34\*.idb
+ del vc6\libboost_regex-vc6-sgd-1_34\*.exp
+ del vc6\libboost_regex-vc6-sgd-1_34\*.pch
+
+./vc6/libboost_regex-vc6-sgd-1_34.lib : vc6/libboost_regex-vc6-sgd-1_34/c_regex_traits.obj vc6/libboost_regex-vc6-sgd-1_34/cpp_regex_traits.obj vc6/libboost_regex-vc6-sgd-1_34/cregex.obj vc6/libboost_regex-vc6-sgd-1_34/fileiter.obj vc6/libboost_regex-vc6-sgd-1_34/icu.obj vc6/libboost_regex-vc6-sgd-1_34/instances.obj vc6/libboost_regex-vc6-sgd-1_34/posix_api.obj vc6/libboost_regex-vc6-sgd-1_34/regex.obj vc6/libboost_regex-vc6-sgd-1_34/regex_debug.obj vc6/libboost_regex-vc6-sgd-1_34/regex_raw_buffer.obj vc6/libboost_regex-vc6-sgd-1_34/regex_traits_defaults.obj vc6/libboost_regex-vc6-sgd-1_34/static_mutex.obj vc6/libboost_regex-vc6-sgd-1_34/usinstances.obj vc6/libboost_regex-vc6-sgd-1_34/w32_regex_traits.obj vc6/libboost_regex-vc6-sgd-1_34/wc_regex_traits.obj vc6/libboost_regex-vc6-sgd-1_34/wide_posix_api.obj vc6/libboost_regex-vc6-sgd-1_34/winstances.obj
+ link -lib /nologo /out:vc6/libboost_regex-vc6-sgd-1_34.lib $(XSFLAGS) vc6/libboost_regex-vc6-sgd-1_34/c_regex_traits.obj vc6/libboost_regex-vc6-sgd-1_34/cpp_regex_traits.obj vc6/libboost_regex-vc6-sgd-1_34/cregex.obj vc6/libboost_regex-vc6-sgd-1_34/fileiter.obj vc6/libboost_regex-vc6-sgd-1_34/icu.obj vc6/libboost_regex-vc6-sgd-1_34/instances.obj vc6/libboost_regex-vc6-sgd-1_34/posix_api.obj vc6/libboost_regex-vc6-sgd-1_34/regex.obj vc6/libboost_regex-vc6-sgd-1_34/regex_debug.obj vc6/libboost_regex-vc6-sgd-1_34/regex_raw_buffer.obj vc6/libboost_regex-vc6-sgd-1_34/regex_traits_defaults.obj vc6/libboost_regex-vc6-sgd-1_34/static_mutex.obj vc6/libboost_regex-vc6-sgd-1_34/usinstances.obj vc6/libboost_regex-vc6-sgd-1_34/w32_regex_traits.obj vc6/libboost_regex-vc6-sgd-1_34/wc_regex_traits.obj vc6/libboost_regex-vc6-sgd-1_34/wide_posix_api.obj vc6/libboost_regex-vc6-sgd-1_34/winstances.obj
+
+########################################################
+#
+# section for libboost_regex-vc6-mt-sgd-1_34.lib
+#
+########################################################
+vc6/libboost_regex-vc6-mt-sgd-1_34/c_regex_traits.obj: ../src/c_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-mt-sgd-1_34/ -Fdvc6/libboost_regex-vc6-mt-sgd-1_34.pdb ../src/c_regex_traits.cpp
+
+vc6/libboost_regex-vc6-mt-sgd-1_34/cpp_regex_traits.obj: ../src/cpp_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-mt-sgd-1_34/ -Fdvc6/libboost_regex-vc6-mt-sgd-1_34.pdb ../src/cpp_regex_traits.cpp
+
+vc6/libboost_regex-vc6-mt-sgd-1_34/cregex.obj: ../src/cregex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-mt-sgd-1_34/ -Fdvc6/libboost_regex-vc6-mt-sgd-1_34.pdb ../src/cregex.cpp
+
+vc6/libboost_regex-vc6-mt-sgd-1_34/fileiter.obj: ../src/fileiter.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-mt-sgd-1_34/ -Fdvc6/libboost_regex-vc6-mt-sgd-1_34.pdb ../src/fileiter.cpp
+
+vc6/libboost_regex-vc6-mt-sgd-1_34/icu.obj: ../src/icu.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-mt-sgd-1_34/ -Fdvc6/libboost_regex-vc6-mt-sgd-1_34.pdb ../src/icu.cpp
+
+vc6/libboost_regex-vc6-mt-sgd-1_34/instances.obj: ../src/instances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-mt-sgd-1_34/ -Fdvc6/libboost_regex-vc6-mt-sgd-1_34.pdb ../src/instances.cpp
+
+vc6/libboost_regex-vc6-mt-sgd-1_34/posix_api.obj: ../src/posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-mt-sgd-1_34/ -Fdvc6/libboost_regex-vc6-mt-sgd-1_34.pdb ../src/posix_api.cpp
+
+vc6/libboost_regex-vc6-mt-sgd-1_34/regex.obj: ../src/regex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-mt-sgd-1_34/ -Fdvc6/libboost_regex-vc6-mt-sgd-1_34.pdb ../src/regex.cpp
+
+vc6/libboost_regex-vc6-mt-sgd-1_34/regex_debug.obj: ../src/regex_debug.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-mt-sgd-1_34/ -Fdvc6/libboost_regex-vc6-mt-sgd-1_34.pdb ../src/regex_debug.cpp
+
+vc6/libboost_regex-vc6-mt-sgd-1_34/regex_raw_buffer.obj: ../src/regex_raw_buffer.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-mt-sgd-1_34/ -Fdvc6/libboost_regex-vc6-mt-sgd-1_34.pdb ../src/regex_raw_buffer.cpp
+
+vc6/libboost_regex-vc6-mt-sgd-1_34/regex_traits_defaults.obj: ../src/regex_traits_defaults.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-mt-sgd-1_34/ -Fdvc6/libboost_regex-vc6-mt-sgd-1_34.pdb ../src/regex_traits_defaults.cpp
+
+vc6/libboost_regex-vc6-mt-sgd-1_34/static_mutex.obj: ../src/static_mutex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-mt-sgd-1_34/ -Fdvc6/libboost_regex-vc6-mt-sgd-1_34.pdb ../src/static_mutex.cpp
+
+vc6/libboost_regex-vc6-mt-sgd-1_34/usinstances.obj: ../src/usinstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-mt-sgd-1_34/ -Fdvc6/libboost_regex-vc6-mt-sgd-1_34.pdb ../src/usinstances.cpp
+
+vc6/libboost_regex-vc6-mt-sgd-1_34/w32_regex_traits.obj: ../src/w32_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-mt-sgd-1_34/ -Fdvc6/libboost_regex-vc6-mt-sgd-1_34.pdb ../src/w32_regex_traits.cpp
+
+vc6/libboost_regex-vc6-mt-sgd-1_34/wc_regex_traits.obj: ../src/wc_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-mt-sgd-1_34/ -Fdvc6/libboost_regex-vc6-mt-sgd-1_34.pdb ../src/wc_regex_traits.cpp
+
+vc6/libboost_regex-vc6-mt-sgd-1_34/wide_posix_api.obj: ../src/wide_posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-mt-sgd-1_34/ -Fdvc6/libboost_regex-vc6-mt-sgd-1_34.pdb ../src/wide_posix_api.cpp
+
+vc6/libboost_regex-vc6-mt-sgd-1_34/winstances.obj: ../src/winstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-mt-sgd-1_34/ -Fdvc6/libboost_regex-vc6-mt-sgd-1_34.pdb ../src/winstances.cpp
+
+libboost_regex-vc6-mt-sgd-1_34_dir :
+ @if not exist "vc6\libboost_regex-vc6-mt-sgd-1_34\$(NULL)" mkdir vc6\libboost_regex-vc6-mt-sgd-1_34
+
+libboost_regex-vc6-mt-sgd-1_34_clean :
+ del vc6\libboost_regex-vc6-mt-sgd-1_34\*.obj
+ del vc6\libboost_regex-vc6-mt-sgd-1_34\*.idb
+ del vc6\libboost_regex-vc6-mt-sgd-1_34\*.exp
+ del vc6\libboost_regex-vc6-mt-sgd-1_34\*.pch
+
+./vc6/libboost_regex-vc6-mt-sgd-1_34.lib : vc6/libboost_regex-vc6-mt-sgd-1_34/c_regex_traits.obj vc6/libboost_regex-vc6-mt-sgd-1_34/cpp_regex_traits.obj vc6/libboost_regex-vc6-mt-sgd-1_34/cregex.obj vc6/libboost_regex-vc6-mt-sgd-1_34/fileiter.obj vc6/libboost_regex-vc6-mt-sgd-1_34/icu.obj vc6/libboost_regex-vc6-mt-sgd-1_34/instances.obj vc6/libboost_regex-vc6-mt-sgd-1_34/posix_api.obj vc6/libboost_regex-vc6-mt-sgd-1_34/regex.obj vc6/libboost_regex-vc6-mt-sgd-1_34/regex_debug.obj vc6/libboost_regex-vc6-mt-sgd-1_34/regex_raw_buffer.obj vc6/libboost_regex-vc6-mt-sgd-1_34/regex_traits_defaults.obj vc6/libboost_regex-vc6-mt-sgd-1_34/static_mutex.obj vc6/libboost_regex-vc6-mt-sgd-1_34/usinstances.obj vc6/libboost_regex-vc6-mt-sgd-1_34/w32_regex_traits.obj vc6/libboost_regex-vc6-mt-sgd-1_34/wc_regex_traits.obj vc6/libboost_regex-vc6-mt-sgd-1_34/wide_posix_api.obj vc6/libboost_regex-vc6-mt-sgd-1_34/winstances.obj
+ link -lib /nologo /out:vc6/libboost_regex-vc6-mt-sgd-1_34.lib $(XSFLAGS) vc6/libboost_regex-vc6-mt-sgd-1_34/c_regex_traits.obj vc6/libboost_regex-vc6-mt-sgd-1_34/cpp_regex_traits.obj vc6/libboost_regex-vc6-mt-sgd-1_34/cregex.obj vc6/libboost_regex-vc6-mt-sgd-1_34/fileiter.obj vc6/libboost_regex-vc6-mt-sgd-1_34/icu.obj vc6/libboost_regex-vc6-mt-sgd-1_34/instances.obj vc6/libboost_regex-vc6-mt-sgd-1_34/posix_api.obj vc6/libboost_regex-vc6-mt-sgd-1_34/regex.obj vc6/libboost_regex-vc6-mt-sgd-1_34/regex_debug.obj vc6/libboost_regex-vc6-mt-sgd-1_34/regex_raw_buffer.obj vc6/libboost_regex-vc6-mt-sgd-1_34/regex_traits_defaults.obj vc6/libboost_regex-vc6-mt-sgd-1_34/static_mutex.obj vc6/libboost_regex-vc6-mt-sgd-1_34/usinstances.obj vc6/libboost_regex-vc6-mt-sgd-1_34/w32_regex_traits.obj vc6/libboost_regex-vc6-mt-sgd-1_34/wc_regex_traits.obj vc6/libboost_regex-vc6-mt-sgd-1_34/wide_posix_api.obj vc6/libboost_regex-vc6-mt-sgd-1_34/winstances.obj
+
+########################################################
+#
+# section for boost_regex-vc6-mt-gd-1_34.lib
+#
+########################################################
+vc6/boost_regex-vc6-mt-gd-1_34/c_regex_traits.obj: ../src/c_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /D_DEBUG /DBOOST_REGEX_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/boost_regex-vc6-mt-gd-1_34/ -Fdvc6/boost_regex-vc6-mt-gd-1_34.pdb ../src/c_regex_traits.cpp
+
+vc6/boost_regex-vc6-mt-gd-1_34/cpp_regex_traits.obj: ../src/cpp_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /D_DEBUG /DBOOST_REGEX_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/boost_regex-vc6-mt-gd-1_34/ -Fdvc6/boost_regex-vc6-mt-gd-1_34.pdb ../src/cpp_regex_traits.cpp
+
+vc6/boost_regex-vc6-mt-gd-1_34/cregex.obj: ../src/cregex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /D_DEBUG /DBOOST_REGEX_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/boost_regex-vc6-mt-gd-1_34/ -Fdvc6/boost_regex-vc6-mt-gd-1_34.pdb ../src/cregex.cpp
+
+vc6/boost_regex-vc6-mt-gd-1_34/fileiter.obj: ../src/fileiter.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /D_DEBUG /DBOOST_REGEX_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/boost_regex-vc6-mt-gd-1_34/ -Fdvc6/boost_regex-vc6-mt-gd-1_34.pdb ../src/fileiter.cpp
+
+vc6/boost_regex-vc6-mt-gd-1_34/icu.obj: ../src/icu.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /D_DEBUG /DBOOST_REGEX_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/boost_regex-vc6-mt-gd-1_34/ -Fdvc6/boost_regex-vc6-mt-gd-1_34.pdb ../src/icu.cpp
+
+vc6/boost_regex-vc6-mt-gd-1_34/instances.obj: ../src/instances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /D_DEBUG /DBOOST_REGEX_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/boost_regex-vc6-mt-gd-1_34/ -Fdvc6/boost_regex-vc6-mt-gd-1_34.pdb ../src/instances.cpp
+
+vc6/boost_regex-vc6-mt-gd-1_34/posix_api.obj: ../src/posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /D_DEBUG /DBOOST_REGEX_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/boost_regex-vc6-mt-gd-1_34/ -Fdvc6/boost_regex-vc6-mt-gd-1_34.pdb ../src/posix_api.cpp
+
+vc6/boost_regex-vc6-mt-gd-1_34/regex.obj: ../src/regex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /D_DEBUG /DBOOST_REGEX_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/boost_regex-vc6-mt-gd-1_34/ -Fdvc6/boost_regex-vc6-mt-gd-1_34.pdb ../src/regex.cpp
+
+vc6/boost_regex-vc6-mt-gd-1_34/regex_debug.obj: ../src/regex_debug.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /D_DEBUG /DBOOST_REGEX_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/boost_regex-vc6-mt-gd-1_34/ -Fdvc6/boost_regex-vc6-mt-gd-1_34.pdb ../src/regex_debug.cpp
+
+vc6/boost_regex-vc6-mt-gd-1_34/regex_raw_buffer.obj: ../src/regex_raw_buffer.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /D_DEBUG /DBOOST_REGEX_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/boost_regex-vc6-mt-gd-1_34/ -Fdvc6/boost_regex-vc6-mt-gd-1_34.pdb ../src/regex_raw_buffer.cpp
+
+vc6/boost_regex-vc6-mt-gd-1_34/regex_traits_defaults.obj: ../src/regex_traits_defaults.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /D_DEBUG /DBOOST_REGEX_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/boost_regex-vc6-mt-gd-1_34/ -Fdvc6/boost_regex-vc6-mt-gd-1_34.pdb ../src/regex_traits_defaults.cpp
+
+vc6/boost_regex-vc6-mt-gd-1_34/static_mutex.obj: ../src/static_mutex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /D_DEBUG /DBOOST_REGEX_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/boost_regex-vc6-mt-gd-1_34/ -Fdvc6/boost_regex-vc6-mt-gd-1_34.pdb ../src/static_mutex.cpp
+
+vc6/boost_regex-vc6-mt-gd-1_34/usinstances.obj: ../src/usinstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /D_DEBUG /DBOOST_REGEX_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/boost_regex-vc6-mt-gd-1_34/ -Fdvc6/boost_regex-vc6-mt-gd-1_34.pdb ../src/usinstances.cpp
+
+vc6/boost_regex-vc6-mt-gd-1_34/w32_regex_traits.obj: ../src/w32_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /D_DEBUG /DBOOST_REGEX_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/boost_regex-vc6-mt-gd-1_34/ -Fdvc6/boost_regex-vc6-mt-gd-1_34.pdb ../src/w32_regex_traits.cpp
+
+vc6/boost_regex-vc6-mt-gd-1_34/wc_regex_traits.obj: ../src/wc_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /D_DEBUG /DBOOST_REGEX_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/boost_regex-vc6-mt-gd-1_34/ -Fdvc6/boost_regex-vc6-mt-gd-1_34.pdb ../src/wc_regex_traits.cpp
+
+vc6/boost_regex-vc6-mt-gd-1_34/wide_posix_api.obj: ../src/wide_posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /D_DEBUG /DBOOST_REGEX_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/boost_regex-vc6-mt-gd-1_34/ -Fdvc6/boost_regex-vc6-mt-gd-1_34.pdb ../src/wide_posix_api.cpp
+
+vc6/boost_regex-vc6-mt-gd-1_34/winstances.obj: ../src/winstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /D_DEBUG /DBOOST_REGEX_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/boost_regex-vc6-mt-gd-1_34/ -Fdvc6/boost_regex-vc6-mt-gd-1_34.pdb ../src/winstances.cpp
+
+boost_regex-vc6-mt-gd-1_34_dir :
+ @if not exist "vc6\boost_regex-vc6-mt-gd-1_34\$(NULL)" mkdir vc6\boost_regex-vc6-mt-gd-1_34
+
+boost_regex-vc6-mt-gd-1_34_clean :
+ del vc6\boost_regex-vc6-mt-gd-1_34\*.obj
+ del vc6\boost_regex-vc6-mt-gd-1_34\*.idb
+ del vc6\boost_regex-vc6-mt-gd-1_34\*.exp
+ del vc6\boost_regex-vc6-mt-gd-1_34\*.pch
+
+./vc6/boost_regex-vc6-mt-gd-1_34.lib : vc6/boost_regex-vc6-mt-gd-1_34/c_regex_traits.obj vc6/boost_regex-vc6-mt-gd-1_34/cpp_regex_traits.obj vc6/boost_regex-vc6-mt-gd-1_34/cregex.obj vc6/boost_regex-vc6-mt-gd-1_34/fileiter.obj vc6/boost_regex-vc6-mt-gd-1_34/icu.obj vc6/boost_regex-vc6-mt-gd-1_34/instances.obj vc6/boost_regex-vc6-mt-gd-1_34/posix_api.obj vc6/boost_regex-vc6-mt-gd-1_34/regex.obj vc6/boost_regex-vc6-mt-gd-1_34/regex_debug.obj vc6/boost_regex-vc6-mt-gd-1_34/regex_raw_buffer.obj vc6/boost_regex-vc6-mt-gd-1_34/regex_traits_defaults.obj vc6/boost_regex-vc6-mt-gd-1_34/static_mutex.obj vc6/boost_regex-vc6-mt-gd-1_34/usinstances.obj vc6/boost_regex-vc6-mt-gd-1_34/w32_regex_traits.obj vc6/boost_regex-vc6-mt-gd-1_34/wc_regex_traits.obj vc6/boost_regex-vc6-mt-gd-1_34/wide_posix_api.obj vc6/boost_regex-vc6-mt-gd-1_34/winstances.obj
+ link kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:yes /pdb:"vc6/boost_regex-vc6-mt-gd-1_34.pdb" /debug /machine:I386 /out:"vc6/boost_regex-vc6-mt-gd-1_34.dll" /implib:"vc6/boost_regex-vc6-mt-gd-1_34.lib" /LIBPATH:"$(STLPORT_PATH)\lib" $(XLFLAGS) $(ICU_LINK_OPTS) vc6/boost_regex-vc6-mt-gd-1_34/c_regex_traits.obj vc6/boost_regex-vc6-mt-gd-1_34/cpp_regex_traits.obj vc6/boost_regex-vc6-mt-gd-1_34/cregex.obj vc6/boost_regex-vc6-mt-gd-1_34/fileiter.obj vc6/boost_regex-vc6-mt-gd-1_34/icu.obj vc6/boost_regex-vc6-mt-gd-1_34/instances.obj vc6/boost_regex-vc6-mt-gd-1_34/posix_api.obj vc6/boost_regex-vc6-mt-gd-1_34/regex.obj vc6/boost_regex-vc6-mt-gd-1_34/regex_debug.obj vc6/boost_regex-vc6-mt-gd-1_34/regex_raw_buffer.obj vc6/boost_regex-vc6-mt-gd-1_34/regex_traits_defaults.obj vc6/boost_regex-vc6-mt-gd-1_34/static_mutex.obj vc6/boost_regex-vc6-mt-gd-1_34/usinstances.obj vc6/boost_regex-vc6-mt-gd-
1_34/w32_regex_traits.obj vc6/boost_regex-vc6-mt-gd-1_34/wc_regex_traits.obj vc6/boost_regex-vc6-mt-gd-1_34/wide_posix_api.obj vc6/boost_regex-vc6-mt-gd-1_34/winstances.obj
+
+########################################################
+#
+# section for boost_regex-vc6-mt-1_34.lib
+#
+########################################################
+vc6/boost_regex-vc6-mt-1_34/c_regex_traits.obj: ../src/c_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/boost_regex-vc6-mt-1_34/ -Fdvc6/boost_regex-vc6-mt-1_34.pdb ../src/c_regex_traits.cpp
+
+vc6/boost_regex-vc6-mt-1_34/cpp_regex_traits.obj: ../src/cpp_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/boost_regex-vc6-mt-1_34/ -Fdvc6/boost_regex-vc6-mt-1_34.pdb ../src/cpp_regex_traits.cpp
+
+vc6/boost_regex-vc6-mt-1_34/cregex.obj: ../src/cregex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/boost_regex-vc6-mt-1_34/ -Fdvc6/boost_regex-vc6-mt-1_34.pdb ../src/cregex.cpp
+
+vc6/boost_regex-vc6-mt-1_34/fileiter.obj: ../src/fileiter.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/boost_regex-vc6-mt-1_34/ -Fdvc6/boost_regex-vc6-mt-1_34.pdb ../src/fileiter.cpp
+
+vc6/boost_regex-vc6-mt-1_34/icu.obj: ../src/icu.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/boost_regex-vc6-mt-1_34/ -Fdvc6/boost_regex-vc6-mt-1_34.pdb ../src/icu.cpp
+
+vc6/boost_regex-vc6-mt-1_34/instances.obj: ../src/instances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/boost_regex-vc6-mt-1_34/ -Fdvc6/boost_regex-vc6-mt-1_34.pdb ../src/instances.cpp
+
+vc6/boost_regex-vc6-mt-1_34/posix_api.obj: ../src/posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/boost_regex-vc6-mt-1_34/ -Fdvc6/boost_regex-vc6-mt-1_34.pdb ../src/posix_api.cpp
+
+vc6/boost_regex-vc6-mt-1_34/regex.obj: ../src/regex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/boost_regex-vc6-mt-1_34/ -Fdvc6/boost_regex-vc6-mt-1_34.pdb ../src/regex.cpp
+
+vc6/boost_regex-vc6-mt-1_34/regex_debug.obj: ../src/regex_debug.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/boost_regex-vc6-mt-1_34/ -Fdvc6/boost_regex-vc6-mt-1_34.pdb ../src/regex_debug.cpp
+
+vc6/boost_regex-vc6-mt-1_34/regex_raw_buffer.obj: ../src/regex_raw_buffer.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/boost_regex-vc6-mt-1_34/ -Fdvc6/boost_regex-vc6-mt-1_34.pdb ../src/regex_raw_buffer.cpp
+
+vc6/boost_regex-vc6-mt-1_34/regex_traits_defaults.obj: ../src/regex_traits_defaults.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/boost_regex-vc6-mt-1_34/ -Fdvc6/boost_regex-vc6-mt-1_34.pdb ../src/regex_traits_defaults.cpp
+
+vc6/boost_regex-vc6-mt-1_34/static_mutex.obj: ../src/static_mutex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/boost_regex-vc6-mt-1_34/ -Fdvc6/boost_regex-vc6-mt-1_34.pdb ../src/static_mutex.cpp
+
+vc6/boost_regex-vc6-mt-1_34/usinstances.obj: ../src/usinstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/boost_regex-vc6-mt-1_34/ -Fdvc6/boost_regex-vc6-mt-1_34.pdb ../src/usinstances.cpp
+
+vc6/boost_regex-vc6-mt-1_34/w32_regex_traits.obj: ../src/w32_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/boost_regex-vc6-mt-1_34/ -Fdvc6/boost_regex-vc6-mt-1_34.pdb ../src/w32_regex_traits.cpp
+
+vc6/boost_regex-vc6-mt-1_34/wc_regex_traits.obj: ../src/wc_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/boost_regex-vc6-mt-1_34/ -Fdvc6/boost_regex-vc6-mt-1_34.pdb ../src/wc_regex_traits.cpp
+
+vc6/boost_regex-vc6-mt-1_34/wide_posix_api.obj: ../src/wide_posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/boost_regex-vc6-mt-1_34/ -Fdvc6/boost_regex-vc6-mt-1_34.pdb ../src/wide_posix_api.cpp
+
+vc6/boost_regex-vc6-mt-1_34/winstances.obj: ../src/winstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/boost_regex-vc6-mt-1_34/ -Fdvc6/boost_regex-vc6-mt-1_34.pdb ../src/winstances.cpp
+
+boost_regex-vc6-mt-1_34_dir :
+ @if not exist "vc6\boost_regex-vc6-mt-1_34\$(NULL)" mkdir vc6\boost_regex-vc6-mt-1_34
+
+boost_regex-vc6-mt-1_34_clean :
+ del vc6\boost_regex-vc6-mt-1_34\*.obj
+ del vc6\boost_regex-vc6-mt-1_34\*.idb
+ del vc6\boost_regex-vc6-mt-1_34\*.exp
+ del vc6\boost_regex-vc6-mt-1_34\*.pch
+
+./vc6/boost_regex-vc6-mt-1_34.lib : vc6/boost_regex-vc6-mt-1_34/c_regex_traits.obj vc6/boost_regex-vc6-mt-1_34/cpp_regex_traits.obj vc6/boost_regex-vc6-mt-1_34/cregex.obj vc6/boost_regex-vc6-mt-1_34/fileiter.obj vc6/boost_regex-vc6-mt-1_34/icu.obj vc6/boost_regex-vc6-mt-1_34/instances.obj vc6/boost_regex-vc6-mt-1_34/posix_api.obj vc6/boost_regex-vc6-mt-1_34/regex.obj vc6/boost_regex-vc6-mt-1_34/regex_debug.obj vc6/boost_regex-vc6-mt-1_34/regex_raw_buffer.obj vc6/boost_regex-vc6-mt-1_34/regex_traits_defaults.obj vc6/boost_regex-vc6-mt-1_34/static_mutex.obj vc6/boost_regex-vc6-mt-1_34/usinstances.obj vc6/boost_regex-vc6-mt-1_34/w32_regex_traits.obj vc6/boost_regex-vc6-mt-1_34/wc_regex_traits.obj vc6/boost_regex-vc6-mt-1_34/wide_posix_api.obj vc6/boost_regex-vc6-mt-1_34/winstances.obj
+ link kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:yes /pdb:"vc6/boost_regex-vc6-mt-1_34.pdb" /debug /machine:I386 /out:"vc6/boost_regex-vc6-mt-1_34.dll" /implib:"vc6/boost_regex-vc6-mt-1_34.lib" /LIBPATH:"$(STLPORT_PATH)\lib" $(XLFLAGS) $(ICU_LINK_OPTS) vc6/boost_regex-vc6-mt-1_34/c_regex_traits.obj vc6/boost_regex-vc6-mt-1_34/cpp_regex_traits.obj vc6/boost_regex-vc6-mt-1_34/cregex.obj vc6/boost_regex-vc6-mt-1_34/fileiter.obj vc6/boost_regex-vc6-mt-1_34/icu.obj vc6/boost_regex-vc6-mt-1_34/instances.obj vc6/boost_regex-vc6-mt-1_34/posix_api.obj vc6/boost_regex-vc6-mt-1_34/regex.obj vc6/boost_regex-vc6-mt-1_34/regex_debug.obj vc6/boost_regex-vc6-mt-1_34/regex_raw_buffer.obj vc6/boost_regex-vc6-mt-1_34/regex_traits_defaults.obj vc6/boost_regex-vc6-mt-1_34/static_mutex.obj vc6/boost_regex-vc6-mt-1_34/usinstances.obj vc6/boost_regex-vc6-mt-1_34/w32_regex_traits.obj vc6/boost_regex-vc6-mt-1_
34/wc_regex_traits.obj vc6/boost_regex-vc6-mt-1_34/wide_posix_api.obj vc6/boost_regex-vc6-mt-1_34/winstances.obj
+
+########################################################
+#
+# section for libboost_regex-vc6-mt-1_34.lib
+#
+########################################################
+vc6/libboost_regex-vc6-mt-1_34/c_regex_traits.obj: ../src/c_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-mt-1_34/ -Fdvc6/libboost_regex-vc6-mt-1_34.pdb ../src/c_regex_traits.cpp
+
+vc6/libboost_regex-vc6-mt-1_34/cpp_regex_traits.obj: ../src/cpp_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-mt-1_34/ -Fdvc6/libboost_regex-vc6-mt-1_34.pdb ../src/cpp_regex_traits.cpp
+
+vc6/libboost_regex-vc6-mt-1_34/cregex.obj: ../src/cregex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-mt-1_34/ -Fdvc6/libboost_regex-vc6-mt-1_34.pdb ../src/cregex.cpp
+
+vc6/libboost_regex-vc6-mt-1_34/fileiter.obj: ../src/fileiter.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-mt-1_34/ -Fdvc6/libboost_regex-vc6-mt-1_34.pdb ../src/fileiter.cpp
+
+vc6/libboost_regex-vc6-mt-1_34/icu.obj: ../src/icu.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-mt-1_34/ -Fdvc6/libboost_regex-vc6-mt-1_34.pdb ../src/icu.cpp
+
+vc6/libboost_regex-vc6-mt-1_34/instances.obj: ../src/instances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-mt-1_34/ -Fdvc6/libboost_regex-vc6-mt-1_34.pdb ../src/instances.cpp
+
+vc6/libboost_regex-vc6-mt-1_34/posix_api.obj: ../src/posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-mt-1_34/ -Fdvc6/libboost_regex-vc6-mt-1_34.pdb ../src/posix_api.cpp
+
+vc6/libboost_regex-vc6-mt-1_34/regex.obj: ../src/regex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-mt-1_34/ -Fdvc6/libboost_regex-vc6-mt-1_34.pdb ../src/regex.cpp
+
+vc6/libboost_regex-vc6-mt-1_34/regex_debug.obj: ../src/regex_debug.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-mt-1_34/ -Fdvc6/libboost_regex-vc6-mt-1_34.pdb ../src/regex_debug.cpp
+
+vc6/libboost_regex-vc6-mt-1_34/regex_raw_buffer.obj: ../src/regex_raw_buffer.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-mt-1_34/ -Fdvc6/libboost_regex-vc6-mt-1_34.pdb ../src/regex_raw_buffer.cpp
+
+vc6/libboost_regex-vc6-mt-1_34/regex_traits_defaults.obj: ../src/regex_traits_defaults.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-mt-1_34/ -Fdvc6/libboost_regex-vc6-mt-1_34.pdb ../src/regex_traits_defaults.cpp
+
+vc6/libboost_regex-vc6-mt-1_34/static_mutex.obj: ../src/static_mutex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-mt-1_34/ -Fdvc6/libboost_regex-vc6-mt-1_34.pdb ../src/static_mutex.cpp
+
+vc6/libboost_regex-vc6-mt-1_34/usinstances.obj: ../src/usinstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-mt-1_34/ -Fdvc6/libboost_regex-vc6-mt-1_34.pdb ../src/usinstances.cpp
+
+vc6/libboost_regex-vc6-mt-1_34/w32_regex_traits.obj: ../src/w32_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-mt-1_34/ -Fdvc6/libboost_regex-vc6-mt-1_34.pdb ../src/w32_regex_traits.cpp
+
+vc6/libboost_regex-vc6-mt-1_34/wc_regex_traits.obj: ../src/wc_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-mt-1_34/ -Fdvc6/libboost_regex-vc6-mt-1_34.pdb ../src/wc_regex_traits.cpp
+
+vc6/libboost_regex-vc6-mt-1_34/wide_posix_api.obj: ../src/wide_posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-mt-1_34/ -Fdvc6/libboost_regex-vc6-mt-1_34.pdb ../src/wide_posix_api.cpp
+
+vc6/libboost_regex-vc6-mt-1_34/winstances.obj: ../src/winstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-mt-1_34/ -Fdvc6/libboost_regex-vc6-mt-1_34.pdb ../src/winstances.cpp
+
+libboost_regex-vc6-mt-1_34_dir :
+ @if not exist "vc6\libboost_regex-vc6-mt-1_34\$(NULL)" mkdir vc6\libboost_regex-vc6-mt-1_34
+
+libboost_regex-vc6-mt-1_34_clean :
+ del vc6\libboost_regex-vc6-mt-1_34\*.obj
+ del vc6\libboost_regex-vc6-mt-1_34\*.idb
+ del vc6\libboost_regex-vc6-mt-1_34\*.exp
+ del vc6\libboost_regex-vc6-mt-1_34\*.pch
+
+./vc6/libboost_regex-vc6-mt-1_34.lib : vc6/libboost_regex-vc6-mt-1_34/c_regex_traits.obj vc6/libboost_regex-vc6-mt-1_34/cpp_regex_traits.obj vc6/libboost_regex-vc6-mt-1_34/cregex.obj vc6/libboost_regex-vc6-mt-1_34/fileiter.obj vc6/libboost_regex-vc6-mt-1_34/icu.obj vc6/libboost_regex-vc6-mt-1_34/instances.obj vc6/libboost_regex-vc6-mt-1_34/posix_api.obj vc6/libboost_regex-vc6-mt-1_34/regex.obj vc6/libboost_regex-vc6-mt-1_34/regex_debug.obj vc6/libboost_regex-vc6-mt-1_34/regex_raw_buffer.obj vc6/libboost_regex-vc6-mt-1_34/regex_traits_defaults.obj vc6/libboost_regex-vc6-mt-1_34/static_mutex.obj vc6/libboost_regex-vc6-mt-1_34/usinstances.obj vc6/libboost_regex-vc6-mt-1_34/w32_regex_traits.obj vc6/libboost_regex-vc6-mt-1_34/wc_regex_traits.obj vc6/libboost_regex-vc6-mt-1_34/wide_posix_api.obj vc6/libboost_regex-vc6-mt-1_34/winstances.obj
+ link -lib /nologo /out:vc6/libboost_regex-vc6-mt-1_34.lib $(XSFLAGS) vc6/libboost_regex-vc6-mt-1_34/c_regex_traits.obj vc6/libboost_regex-vc6-mt-1_34/cpp_regex_traits.obj vc6/libboost_regex-vc6-mt-1_34/cregex.obj vc6/libboost_regex-vc6-mt-1_34/fileiter.obj vc6/libboost_regex-vc6-mt-1_34/icu.obj vc6/libboost_regex-vc6-mt-1_34/instances.obj vc6/libboost_regex-vc6-mt-1_34/posix_api.obj vc6/libboost_regex-vc6-mt-1_34/regex.obj vc6/libboost_regex-vc6-mt-1_34/regex_debug.obj vc6/libboost_regex-vc6-mt-1_34/regex_raw_buffer.obj vc6/libboost_regex-vc6-mt-1_34/regex_traits_defaults.obj vc6/libboost_regex-vc6-mt-1_34/static_mutex.obj vc6/libboost_regex-vc6-mt-1_34/usinstances.obj vc6/libboost_regex-vc6-mt-1_34/w32_regex_traits.obj vc6/libboost_regex-vc6-mt-1_34/wc_regex_traits.obj vc6/libboost_regex-vc6-mt-1_34/wide_posix_api.obj vc6/libboost_regex-vc6-mt-1_34/winstances.obj
+
+########################################################
+#
+# section for libboost_regex-vc6-mt-gd-1_34.lib
+#
+########################################################
+vc6/libboost_regex-vc6-mt-gd-1_34/c_regex_traits.obj: ../src/c_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-mt-gd-1_34/ -Fdvc6/libboost_regex-vc6-mt-gd-1_34.pdb ../src/c_regex_traits.cpp
+
+vc6/libboost_regex-vc6-mt-gd-1_34/cpp_regex_traits.obj: ../src/cpp_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-mt-gd-1_34/ -Fdvc6/libboost_regex-vc6-mt-gd-1_34.pdb ../src/cpp_regex_traits.cpp
+
+vc6/libboost_regex-vc6-mt-gd-1_34/cregex.obj: ../src/cregex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-mt-gd-1_34/ -Fdvc6/libboost_regex-vc6-mt-gd-1_34.pdb ../src/cregex.cpp
+
+vc6/libboost_regex-vc6-mt-gd-1_34/fileiter.obj: ../src/fileiter.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-mt-gd-1_34/ -Fdvc6/libboost_regex-vc6-mt-gd-1_34.pdb ../src/fileiter.cpp
+
+vc6/libboost_regex-vc6-mt-gd-1_34/icu.obj: ../src/icu.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-mt-gd-1_34/ -Fdvc6/libboost_regex-vc6-mt-gd-1_34.pdb ../src/icu.cpp
+
+vc6/libboost_regex-vc6-mt-gd-1_34/instances.obj: ../src/instances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-mt-gd-1_34/ -Fdvc6/libboost_regex-vc6-mt-gd-1_34.pdb ../src/instances.cpp
+
+vc6/libboost_regex-vc6-mt-gd-1_34/posix_api.obj: ../src/posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-mt-gd-1_34/ -Fdvc6/libboost_regex-vc6-mt-gd-1_34.pdb ../src/posix_api.cpp
+
+vc6/libboost_regex-vc6-mt-gd-1_34/regex.obj: ../src/regex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-mt-gd-1_34/ -Fdvc6/libboost_regex-vc6-mt-gd-1_34.pdb ../src/regex.cpp
+
+vc6/libboost_regex-vc6-mt-gd-1_34/regex_debug.obj: ../src/regex_debug.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-mt-gd-1_34/ -Fdvc6/libboost_regex-vc6-mt-gd-1_34.pdb ../src/regex_debug.cpp
+
+vc6/libboost_regex-vc6-mt-gd-1_34/regex_raw_buffer.obj: ../src/regex_raw_buffer.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-mt-gd-1_34/ -Fdvc6/libboost_regex-vc6-mt-gd-1_34.pdb ../src/regex_raw_buffer.cpp
+
+vc6/libboost_regex-vc6-mt-gd-1_34/regex_traits_defaults.obj: ../src/regex_traits_defaults.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-mt-gd-1_34/ -Fdvc6/libboost_regex-vc6-mt-gd-1_34.pdb ../src/regex_traits_defaults.cpp
+
+vc6/libboost_regex-vc6-mt-gd-1_34/static_mutex.obj: ../src/static_mutex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-mt-gd-1_34/ -Fdvc6/libboost_regex-vc6-mt-gd-1_34.pdb ../src/static_mutex.cpp
+
+vc6/libboost_regex-vc6-mt-gd-1_34/usinstances.obj: ../src/usinstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-mt-gd-1_34/ -Fdvc6/libboost_regex-vc6-mt-gd-1_34.pdb ../src/usinstances.cpp
+
+vc6/libboost_regex-vc6-mt-gd-1_34/w32_regex_traits.obj: ../src/w32_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-mt-gd-1_34/ -Fdvc6/libboost_regex-vc6-mt-gd-1_34.pdb ../src/w32_regex_traits.cpp
+
+vc6/libboost_regex-vc6-mt-gd-1_34/wc_regex_traits.obj: ../src/wc_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-mt-gd-1_34/ -Fdvc6/libboost_regex-vc6-mt-gd-1_34.pdb ../src/wc_regex_traits.cpp
+
+vc6/libboost_regex-vc6-mt-gd-1_34/wide_posix_api.obj: ../src/wide_posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-mt-gd-1_34/ -Fdvc6/libboost_regex-vc6-mt-gd-1_34.pdb ../src/wide_posix_api.cpp
+
+vc6/libboost_regex-vc6-mt-gd-1_34/winstances.obj: ../src/winstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc6/libboost_regex-vc6-mt-gd-1_34/ -Fdvc6/libboost_regex-vc6-mt-gd-1_34.pdb ../src/winstances.cpp
+
+libboost_regex-vc6-mt-gd-1_34_dir :
+ @if not exist "vc6\libboost_regex-vc6-mt-gd-1_34\$(NULL)" mkdir vc6\libboost_regex-vc6-mt-gd-1_34
+
+libboost_regex-vc6-mt-gd-1_34_clean :
+ del vc6\libboost_regex-vc6-mt-gd-1_34\*.obj
+ del vc6\libboost_regex-vc6-mt-gd-1_34\*.idb
+ del vc6\libboost_regex-vc6-mt-gd-1_34\*.exp
+ del vc6\libboost_regex-vc6-mt-gd-1_34\*.pch
+
+./vc6/libboost_regex-vc6-mt-gd-1_34.lib : vc6/libboost_regex-vc6-mt-gd-1_34/c_regex_traits.obj vc6/libboost_regex-vc6-mt-gd-1_34/cpp_regex_traits.obj vc6/libboost_regex-vc6-mt-gd-1_34/cregex.obj vc6/libboost_regex-vc6-mt-gd-1_34/fileiter.obj vc6/libboost_regex-vc6-mt-gd-1_34/icu.obj vc6/libboost_regex-vc6-mt-gd-1_34/instances.obj vc6/libboost_regex-vc6-mt-gd-1_34/posix_api.obj vc6/libboost_regex-vc6-mt-gd-1_34/regex.obj vc6/libboost_regex-vc6-mt-gd-1_34/regex_debug.obj vc6/libboost_regex-vc6-mt-gd-1_34/regex_raw_buffer.obj vc6/libboost_regex-vc6-mt-gd-1_34/regex_traits_defaults.obj vc6/libboost_regex-vc6-mt-gd-1_34/static_mutex.obj vc6/libboost_regex-vc6-mt-gd-1_34/usinstances.obj vc6/libboost_regex-vc6-mt-gd-1_34/w32_regex_traits.obj vc6/libboost_regex-vc6-mt-gd-1_34/wc_regex_traits.obj vc6/libboost_regex-vc6-mt-gd-1_34/wide_posix_api.obj vc6/libboost_regex-vc6-mt-gd-1_34/winstances.obj
+ link -lib /nologo /out:vc6/libboost_regex-vc6-mt-gd-1_34.lib $(XSFLAGS) vc6/libboost_regex-vc6-mt-gd-1_34/c_regex_traits.obj vc6/libboost_regex-vc6-mt-gd-1_34/cpp_regex_traits.obj vc6/libboost_regex-vc6-mt-gd-1_34/cregex.obj vc6/libboost_regex-vc6-mt-gd-1_34/fileiter.obj vc6/libboost_regex-vc6-mt-gd-1_34/icu.obj vc6/libboost_regex-vc6-mt-gd-1_34/instances.obj vc6/libboost_regex-vc6-mt-gd-1_34/posix_api.obj vc6/libboost_regex-vc6-mt-gd-1_34/regex.obj vc6/libboost_regex-vc6-mt-gd-1_34/regex_debug.obj vc6/libboost_regex-vc6-mt-gd-1_34/regex_raw_buffer.obj vc6/libboost_regex-vc6-mt-gd-1_34/regex_traits_defaults.obj vc6/libboost_regex-vc6-mt-gd-1_34/static_mutex.obj vc6/libboost_regex-vc6-mt-gd-1_34/usinstances.obj vc6/libboost_regex-vc6-mt-gd-1_34/w32_regex_traits.obj vc6/libboost_regex-vc6-mt-gd-1_34/wc_regex_traits.obj vc6/libboost_regex-vc6-mt-gd-1_34/wide_posix_api.obj vc6/libboost_regex-vc6-mt-gd-1_34/winstances.obj
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/build/vc7-stlport.mak
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/build/vc7-stlport.mak 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,496 @@
+# copyright John Maddock 2006
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt.
+#
+# auto generated makefile for VC6+STLPort
+#
+# usage:
+# make
+# brings libraries up to date
+# make install
+# brings libraries up to date and copies binaries to your VC6 /lib and /bin directories (recomended)
+#
+
+#
+# ICU setup:
+#
+ICU_PATH=
+#
+# Add additional compiler options here:
+#
+CXXFLAGS=
+#
+# Add additional include directories here:
+#
+INCLUDES=
+#
+# add additional linker flags here:
+#
+XLFLAGS=
+#
+# add additional static-library creation flags here:
+#
+XSFLAGS=
+
+!IF "$(OS)" == "Windows_NT"
+NULL=
+!ELSE
+NULL=nul
+!ENDIF
+
+!IF "$(MSVCDIR)" == ""
+!ERROR Variable MSVCDIR not set.
+!ENDIF
+
+!IF "$(STLPORT_PATH)" == ""
+!ERROR Variable STLPORT_PATH not set.
+!ENDIF
+
+!IF "$(ICU_PATH)" == ""
+ICU_COMPILE_OPTS=
+ICU_LINK_OPTS=
+!MESSAGE Building Boost.Regex without ICU / Unicode support:
+!MESSAGE Hint: set ICU_PATH on the nmake command line to point
+!MESSAGE to your ICU installation if you have one.
+!ELSE
+ICU_COMPILE_OPTS= -DBOOST_HAS_ICU=1 -I"$(ICU_PATH)\include"
+ICU_LINK_OPTS= /LIBPATH:"$(ICU_PATH)\lib" icuin.lib icuuc.lib
+!MESSAGE Building Boost.Regex with ICU in $(ICU_PATH)
+!ENDIF
+
+
+ALL_HEADER= ../../../boost/regex/concepts.hpp ../../../boost/regex/config.hpp ../../../boost/regex/icu.hpp ../../../boost/regex/mfc.hpp ../../../boost/regex/pattern_except.hpp ../../../boost/regex/regex_traits.hpp ../../../boost/regex/user.hpp ../../../boost/regex/v4/basic_regex.hpp ../../../boost/regex/v4/basic_regex_creator.hpp ../../../boost/regex/v4/basic_regex_parser.hpp ../../../boost/regex/v4/c_regex_traits.hpp ../../../boost/regex/v4/char_regex_traits.hpp ../../../boost/regex/v4/cpp_regex_traits.hpp ../../../boost/regex/v4/cregex.hpp ../../../boost/regex/v4/error_type.hpp ../../../boost/regex/v4/fileiter.hpp ../../../boost/regex/v4/instances.hpp ../../../boost/regex/v4/iterator_category.hpp ../../../boost/regex/v4/iterator_traits.hpp ../../../boost/regex/v4/match_flags.hpp ../../../boost/regex/v4/match_results.hpp ../../../boost/regex/v4/mem_block_cache.hpp ../../../boost/regex/v4/perl_matcher.hpp ../../../boost/regex/v4/perl_matcher_common.hpp ../../../boost/regex/v4/perl_matcher_non_recursive.hpp
../../../boost/regex/v4/perl_matcher_recursive.hpp ../../../boost/regex/v4/primary_transform.hpp ../../../boost/regex/v4/protected_call.hpp ../../../boost/regex/v4/regbase.hpp ../../../boost/regex/v4/regex.hpp ../../../boost/regex/v4/regex_cstring.hpp ../../../boost/regex/v4/regex_format.hpp ../../../boost/regex/v4/regex_fwd.hpp ../../../boost/regex/v4/regex_grep.hpp ../../../boost/regex/v4/regex_iterator.hpp ../../../boost/regex/v4/regex_kmp.hpp ../../../boost/regex/v4/regex_match.hpp ../../../boost/regex/v4/regex_merge.hpp ../../../boost/regex/v4/regex_raw_buffer.hpp ../../../boost/regex/v4/regex_replace.hpp ../../../boost/regex/v4/regex_search.hpp ../../../boost/regex/v4/regex_split.hpp ../../../boost/regex/v4/regex_stack.hpp ../../../boost/regex/v4/regex_token_iterator.hpp ../../../boost/regex/v4/regex_traits.hpp ../../../boost/regex/v4/regex_traits_defaults.hpp ../../../boost/regex/v4/regex_workaround.hpp ../../../boost/regex/v4/states.hpp ../../../boost/regex/v4/sub_match.hpp ../../../boost/regex/v4/sy
ntax_type.hpp ../../../boost/regex/v4/u32regex_iterator.hpp ../../../boost/regex/v4/u32regex_token_iterator.hpp ../../../boost/regex/v4/w32_regex_traits.hpp ../../../boost/regex/config/borland.hpp ../../../boost/regex/config/cwchar.hpp
+
+all : main_dir libboost_regex-vc7-mt-sp-1_34_dir ./vc7-stlport/libboost_regex-vc7-mt-sp-1_34.lib boost_regex-vc7-mt-p-1_34_dir ./vc7-stlport/boost_regex-vc7-mt-p-1_34.lib libboost_regex-vc7-mt-p-1_34_dir ./vc7-stlport/libboost_regex-vc7-mt-p-1_34.lib boost_regex-vc7-mt-gdp-1_34_dir ./vc7-stlport/boost_regex-vc7-mt-gdp-1_34.lib libboost_regex-vc7-mt-sgdp-1_34_dir ./vc7-stlport/libboost_regex-vc7-mt-sgdp-1_34.lib libboost_regex-vc7-mt-gdp-1_34_dir ./vc7-stlport/libboost_regex-vc7-mt-gdp-1_34.lib
+
+clean : libboost_regex-vc7-mt-sp-1_34_clean boost_regex-vc7-mt-p-1_34_clean libboost_regex-vc7-mt-p-1_34_clean boost_regex-vc7-mt-gdp-1_34_clean libboost_regex-vc7-mt-sgdp-1_34_clean libboost_regex-vc7-mt-gdp-1_34_clean
+
+install : stlport_check all
+ copy vc7-stlport\libboost_regex-vc7-mt-sp-1_34.lib "$(MSVCDIR)\lib"
+ copy vc7-stlport\boost_regex-vc7-mt-p-1_34.lib "$(MSVCDIR)\lib"
+ copy vc7-stlport\boost_regex-vc7-mt-p-1_34.dll "$(MSVCDIR)\bin"
+ copy vc7-stlport\libboost_regex-vc7-mt-p-1_34.lib "$(MSVCDIR)\lib"
+ copy vc7-stlport\boost_regex-vc7-mt-gdp-1_34.lib "$(MSVCDIR)\lib"
+ copy vc7-stlport\boost_regex-vc7-mt-gdp-1_34.dll "$(MSVCDIR)\bin"
+ copy vc7-stlport\boost_regex-vc7-mt-gdp-1_34.pdb "$(MSVCDIR)\lib"
+ copy vc7-stlport\libboost_regex-vc7-mt-sgdp-1_34.lib "$(MSVCDIR)\lib"
+ copy vc7-stlport\libboost_regex-vc7-mt-sgdp-1_34.pdb "$(MSVCDIR)\lib"
+ copy vc7-stlport\libboost_regex-vc7-mt-gdp-1_34.lib "$(MSVCDIR)\lib"
+ copy vc7-stlport\libboost_regex-vc7-mt-gdp-1_34.pdb "$(MSVCDIR)\lib"
+
+main_dir :
+ @if not exist "vc7-stlport\$(NULL)" mkdir vc7-stlport
+
+stlport_check : "$(STLPORT_PATH)\stlport\string"
+ echo
+
+
+########################################################
+#
+# section for libboost_regex-vc7-mt-sp-1_34.lib
+#
+########################################################
+vc7-stlport/libboost_regex-vc7-mt-sp-1_34/c_regex_traits.obj: ../src/c_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/libboost_regex-vc7-mt-sp-1_34/ -Fdvc7-stlport/libboost_regex-vc7-mt-sp-1_34.pdb ../src/c_regex_traits.cpp
+
+vc7-stlport/libboost_regex-vc7-mt-sp-1_34/cpp_regex_traits.obj: ../src/cpp_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/libboost_regex-vc7-mt-sp-1_34/ -Fdvc7-stlport/libboost_regex-vc7-mt-sp-1_34.pdb ../src/cpp_regex_traits.cpp
+
+vc7-stlport/libboost_regex-vc7-mt-sp-1_34/cregex.obj: ../src/cregex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/libboost_regex-vc7-mt-sp-1_34/ -Fdvc7-stlport/libboost_regex-vc7-mt-sp-1_34.pdb ../src/cregex.cpp
+
+vc7-stlport/libboost_regex-vc7-mt-sp-1_34/fileiter.obj: ../src/fileiter.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/libboost_regex-vc7-mt-sp-1_34/ -Fdvc7-stlport/libboost_regex-vc7-mt-sp-1_34.pdb ../src/fileiter.cpp
+
+vc7-stlport/libboost_regex-vc7-mt-sp-1_34/icu.obj: ../src/icu.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/libboost_regex-vc7-mt-sp-1_34/ -Fdvc7-stlport/libboost_regex-vc7-mt-sp-1_34.pdb ../src/icu.cpp
+
+vc7-stlport/libboost_regex-vc7-mt-sp-1_34/instances.obj: ../src/instances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/libboost_regex-vc7-mt-sp-1_34/ -Fdvc7-stlport/libboost_regex-vc7-mt-sp-1_34.pdb ../src/instances.cpp
+
+vc7-stlport/libboost_regex-vc7-mt-sp-1_34/posix_api.obj: ../src/posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/libboost_regex-vc7-mt-sp-1_34/ -Fdvc7-stlport/libboost_regex-vc7-mt-sp-1_34.pdb ../src/posix_api.cpp
+
+vc7-stlport/libboost_regex-vc7-mt-sp-1_34/regex.obj: ../src/regex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/libboost_regex-vc7-mt-sp-1_34/ -Fdvc7-stlport/libboost_regex-vc7-mt-sp-1_34.pdb ../src/regex.cpp
+
+vc7-stlport/libboost_regex-vc7-mt-sp-1_34/regex_debug.obj: ../src/regex_debug.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/libboost_regex-vc7-mt-sp-1_34/ -Fdvc7-stlport/libboost_regex-vc7-mt-sp-1_34.pdb ../src/regex_debug.cpp
+
+vc7-stlport/libboost_regex-vc7-mt-sp-1_34/regex_raw_buffer.obj: ../src/regex_raw_buffer.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/libboost_regex-vc7-mt-sp-1_34/ -Fdvc7-stlport/libboost_regex-vc7-mt-sp-1_34.pdb ../src/regex_raw_buffer.cpp
+
+vc7-stlport/libboost_regex-vc7-mt-sp-1_34/regex_traits_defaults.obj: ../src/regex_traits_defaults.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/libboost_regex-vc7-mt-sp-1_34/ -Fdvc7-stlport/libboost_regex-vc7-mt-sp-1_34.pdb ../src/regex_traits_defaults.cpp
+
+vc7-stlport/libboost_regex-vc7-mt-sp-1_34/static_mutex.obj: ../src/static_mutex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/libboost_regex-vc7-mt-sp-1_34/ -Fdvc7-stlport/libboost_regex-vc7-mt-sp-1_34.pdb ../src/static_mutex.cpp
+
+vc7-stlport/libboost_regex-vc7-mt-sp-1_34/usinstances.obj: ../src/usinstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/libboost_regex-vc7-mt-sp-1_34/ -Fdvc7-stlport/libboost_regex-vc7-mt-sp-1_34.pdb ../src/usinstances.cpp
+
+vc7-stlport/libboost_regex-vc7-mt-sp-1_34/w32_regex_traits.obj: ../src/w32_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/libboost_regex-vc7-mt-sp-1_34/ -Fdvc7-stlport/libboost_regex-vc7-mt-sp-1_34.pdb ../src/w32_regex_traits.cpp
+
+vc7-stlport/libboost_regex-vc7-mt-sp-1_34/wc_regex_traits.obj: ../src/wc_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/libboost_regex-vc7-mt-sp-1_34/ -Fdvc7-stlport/libboost_regex-vc7-mt-sp-1_34.pdb ../src/wc_regex_traits.cpp
+
+vc7-stlport/libboost_regex-vc7-mt-sp-1_34/wide_posix_api.obj: ../src/wide_posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/libboost_regex-vc7-mt-sp-1_34/ -Fdvc7-stlport/libboost_regex-vc7-mt-sp-1_34.pdb ../src/wide_posix_api.cpp
+
+vc7-stlport/libboost_regex-vc7-mt-sp-1_34/winstances.obj: ../src/winstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/libboost_regex-vc7-mt-sp-1_34/ -Fdvc7-stlport/libboost_regex-vc7-mt-sp-1_34.pdb ../src/winstances.cpp
+
+libboost_regex-vc7-mt-sp-1_34_dir :
+ @if not exist "vc7-stlport\libboost_regex-vc7-mt-sp-1_34\$(NULL)" mkdir vc7-stlport\libboost_regex-vc7-mt-sp-1_34
+
+libboost_regex-vc7-mt-sp-1_34_clean :
+ del vc7-stlport\libboost_regex-vc7-mt-sp-1_34\*.obj
+ del vc7-stlport\libboost_regex-vc7-mt-sp-1_34\*.idb
+ del vc7-stlport\libboost_regex-vc7-mt-sp-1_34\*.exp
+ del vc7-stlport\libboost_regex-vc7-mt-sp-1_34\*.pch
+
+./vc7-stlport/libboost_regex-vc7-mt-sp-1_34.lib : vc7-stlport/libboost_regex-vc7-mt-sp-1_34/c_regex_traits.obj vc7-stlport/libboost_regex-vc7-mt-sp-1_34/cpp_regex_traits.obj vc7-stlport/libboost_regex-vc7-mt-sp-1_34/cregex.obj vc7-stlport/libboost_regex-vc7-mt-sp-1_34/fileiter.obj vc7-stlport/libboost_regex-vc7-mt-sp-1_34/icu.obj vc7-stlport/libboost_regex-vc7-mt-sp-1_34/instances.obj vc7-stlport/libboost_regex-vc7-mt-sp-1_34/posix_api.obj vc7-stlport/libboost_regex-vc7-mt-sp-1_34/regex.obj vc7-stlport/libboost_regex-vc7-mt-sp-1_34/regex_debug.obj vc7-stlport/libboost_regex-vc7-mt-sp-1_34/regex_raw_buffer.obj vc7-stlport/libboost_regex-vc7-mt-sp-1_34/regex_traits_defaults.obj vc7-stlport/libboost_regex-vc7-mt-sp-1_34/static_mutex.obj vc7-stlport/libboost_regex-vc7-mt-sp-1_34/usinstances.obj vc7-stlport/libboost_regex-vc7-mt-sp-1_34/w32_regex_traits.obj vc7-stlport/libboost_regex-vc7-mt-sp-1_34/wc_regex_traits.obj vc7-stlport/libboost_regex-vc7-mt-sp-1_34/wide_posix_api.obj vc7-stlport/libboost_regex-vc7-mt-
sp-1_34/winstances.obj
+ link -lib /nologo /out:vc7-stlport/libboost_regex-vc7-mt-sp-1_34.lib $(XSFLAGS) vc7-stlport/libboost_regex-vc7-mt-sp-1_34/c_regex_traits.obj vc7-stlport/libboost_regex-vc7-mt-sp-1_34/cpp_regex_traits.obj vc7-stlport/libboost_regex-vc7-mt-sp-1_34/cregex.obj vc7-stlport/libboost_regex-vc7-mt-sp-1_34/fileiter.obj vc7-stlport/libboost_regex-vc7-mt-sp-1_34/icu.obj vc7-stlport/libboost_regex-vc7-mt-sp-1_34/instances.obj vc7-stlport/libboost_regex-vc7-mt-sp-1_34/posix_api.obj vc7-stlport/libboost_regex-vc7-mt-sp-1_34/regex.obj vc7-stlport/libboost_regex-vc7-mt-sp-1_34/regex_debug.obj vc7-stlport/libboost_regex-vc7-mt-sp-1_34/regex_raw_buffer.obj vc7-stlport/libboost_regex-vc7-mt-sp-1_34/regex_traits_defaults.obj vc7-stlport/libboost_regex-vc7-mt-sp-1_34/static_mutex.obj vc7-stlport/libboost_regex-vc7-mt-sp-1_34/usinstances.obj vc7-stlport/libboost_regex-vc7-mt-sp-1_34/w32_regex_traits.obj vc7-stlport/libboost_regex-vc7-mt-sp-1_34/wc_regex_traits.obj vc7-stlport/libboost_regex-vc7-mt-sp-1_34/wide_posix_api.obj vc
7-stlport/libboost_regex-vc7-mt-sp-1_34/winstances.obj
+
+########################################################
+#
+# section for boost_regex-vc7-mt-p-1_34.lib
+#
+########################################################
+vc7-stlport/boost_regex-vc7-mt-p-1_34/c_regex_traits.obj: ../src/c_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /I"$(STLPORT_PATH)\stlport" /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/boost_regex-vc7-mt-p-1_34/ -Fdvc7-stlport/boost_regex-vc7-mt-p-1_34.pdb ../src/c_regex_traits.cpp
+
+vc7-stlport/boost_regex-vc7-mt-p-1_34/cpp_regex_traits.obj: ../src/cpp_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /I"$(STLPORT_PATH)\stlport" /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/boost_regex-vc7-mt-p-1_34/ -Fdvc7-stlport/boost_regex-vc7-mt-p-1_34.pdb ../src/cpp_regex_traits.cpp
+
+vc7-stlport/boost_regex-vc7-mt-p-1_34/cregex.obj: ../src/cregex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /I"$(STLPORT_PATH)\stlport" /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/boost_regex-vc7-mt-p-1_34/ -Fdvc7-stlport/boost_regex-vc7-mt-p-1_34.pdb ../src/cregex.cpp
+
+vc7-stlport/boost_regex-vc7-mt-p-1_34/fileiter.obj: ../src/fileiter.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /I"$(STLPORT_PATH)\stlport" /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/boost_regex-vc7-mt-p-1_34/ -Fdvc7-stlport/boost_regex-vc7-mt-p-1_34.pdb ../src/fileiter.cpp
+
+vc7-stlport/boost_regex-vc7-mt-p-1_34/icu.obj: ../src/icu.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /I"$(STLPORT_PATH)\stlport" /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/boost_regex-vc7-mt-p-1_34/ -Fdvc7-stlport/boost_regex-vc7-mt-p-1_34.pdb ../src/icu.cpp
+
+vc7-stlport/boost_regex-vc7-mt-p-1_34/instances.obj: ../src/instances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /I"$(STLPORT_PATH)\stlport" /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/boost_regex-vc7-mt-p-1_34/ -Fdvc7-stlport/boost_regex-vc7-mt-p-1_34.pdb ../src/instances.cpp
+
+vc7-stlport/boost_regex-vc7-mt-p-1_34/posix_api.obj: ../src/posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /I"$(STLPORT_PATH)\stlport" /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/boost_regex-vc7-mt-p-1_34/ -Fdvc7-stlport/boost_regex-vc7-mt-p-1_34.pdb ../src/posix_api.cpp
+
+vc7-stlport/boost_regex-vc7-mt-p-1_34/regex.obj: ../src/regex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /I"$(STLPORT_PATH)\stlport" /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/boost_regex-vc7-mt-p-1_34/ -Fdvc7-stlport/boost_regex-vc7-mt-p-1_34.pdb ../src/regex.cpp
+
+vc7-stlport/boost_regex-vc7-mt-p-1_34/regex_debug.obj: ../src/regex_debug.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /I"$(STLPORT_PATH)\stlport" /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/boost_regex-vc7-mt-p-1_34/ -Fdvc7-stlport/boost_regex-vc7-mt-p-1_34.pdb ../src/regex_debug.cpp
+
+vc7-stlport/boost_regex-vc7-mt-p-1_34/regex_raw_buffer.obj: ../src/regex_raw_buffer.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /I"$(STLPORT_PATH)\stlport" /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/boost_regex-vc7-mt-p-1_34/ -Fdvc7-stlport/boost_regex-vc7-mt-p-1_34.pdb ../src/regex_raw_buffer.cpp
+
+vc7-stlport/boost_regex-vc7-mt-p-1_34/regex_traits_defaults.obj: ../src/regex_traits_defaults.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /I"$(STLPORT_PATH)\stlport" /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/boost_regex-vc7-mt-p-1_34/ -Fdvc7-stlport/boost_regex-vc7-mt-p-1_34.pdb ../src/regex_traits_defaults.cpp
+
+vc7-stlport/boost_regex-vc7-mt-p-1_34/static_mutex.obj: ../src/static_mutex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /I"$(STLPORT_PATH)\stlport" /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/boost_regex-vc7-mt-p-1_34/ -Fdvc7-stlport/boost_regex-vc7-mt-p-1_34.pdb ../src/static_mutex.cpp
+
+vc7-stlport/boost_regex-vc7-mt-p-1_34/usinstances.obj: ../src/usinstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /I"$(STLPORT_PATH)\stlport" /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/boost_regex-vc7-mt-p-1_34/ -Fdvc7-stlport/boost_regex-vc7-mt-p-1_34.pdb ../src/usinstances.cpp
+
+vc7-stlport/boost_regex-vc7-mt-p-1_34/w32_regex_traits.obj: ../src/w32_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /I"$(STLPORT_PATH)\stlport" /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/boost_regex-vc7-mt-p-1_34/ -Fdvc7-stlport/boost_regex-vc7-mt-p-1_34.pdb ../src/w32_regex_traits.cpp
+
+vc7-stlport/boost_regex-vc7-mt-p-1_34/wc_regex_traits.obj: ../src/wc_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /I"$(STLPORT_PATH)\stlport" /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/boost_regex-vc7-mt-p-1_34/ -Fdvc7-stlport/boost_regex-vc7-mt-p-1_34.pdb ../src/wc_regex_traits.cpp
+
+vc7-stlport/boost_regex-vc7-mt-p-1_34/wide_posix_api.obj: ../src/wide_posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /I"$(STLPORT_PATH)\stlport" /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/boost_regex-vc7-mt-p-1_34/ -Fdvc7-stlport/boost_regex-vc7-mt-p-1_34.pdb ../src/wide_posix_api.cpp
+
+vc7-stlport/boost_regex-vc7-mt-p-1_34/winstances.obj: ../src/winstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /I"$(STLPORT_PATH)\stlport" /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/boost_regex-vc7-mt-p-1_34/ -Fdvc7-stlport/boost_regex-vc7-mt-p-1_34.pdb ../src/winstances.cpp
+
+boost_regex-vc7-mt-p-1_34_dir :
+ @if not exist "vc7-stlport\boost_regex-vc7-mt-p-1_34\$(NULL)" mkdir vc7-stlport\boost_regex-vc7-mt-p-1_34
+
+boost_regex-vc7-mt-p-1_34_clean :
+ del vc7-stlport\boost_regex-vc7-mt-p-1_34\*.obj
+ del vc7-stlport\boost_regex-vc7-mt-p-1_34\*.idb
+ del vc7-stlport\boost_regex-vc7-mt-p-1_34\*.exp
+ del vc7-stlport\boost_regex-vc7-mt-p-1_34\*.pch
+
+./vc7-stlport/boost_regex-vc7-mt-p-1_34.lib : vc7-stlport/boost_regex-vc7-mt-p-1_34/c_regex_traits.obj vc7-stlport/boost_regex-vc7-mt-p-1_34/cpp_regex_traits.obj vc7-stlport/boost_regex-vc7-mt-p-1_34/cregex.obj vc7-stlport/boost_regex-vc7-mt-p-1_34/fileiter.obj vc7-stlport/boost_regex-vc7-mt-p-1_34/icu.obj vc7-stlport/boost_regex-vc7-mt-p-1_34/instances.obj vc7-stlport/boost_regex-vc7-mt-p-1_34/posix_api.obj vc7-stlport/boost_regex-vc7-mt-p-1_34/regex.obj vc7-stlport/boost_regex-vc7-mt-p-1_34/regex_debug.obj vc7-stlport/boost_regex-vc7-mt-p-1_34/regex_raw_buffer.obj vc7-stlport/boost_regex-vc7-mt-p-1_34/regex_traits_defaults.obj vc7-stlport/boost_regex-vc7-mt-p-1_34/static_mutex.obj vc7-stlport/boost_regex-vc7-mt-p-1_34/usinstances.obj vc7-stlport/boost_regex-vc7-mt-p-1_34/w32_regex_traits.obj vc7-stlport/boost_regex-vc7-mt-p-1_34/wc_regex_traits.obj vc7-stlport/boost_regex-vc7-mt-p-1_34/wide_posix_api.obj vc7-stlport/boost_regex-vc7-mt-p-1_34/winstances.obj
+ link kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:yes /pdb:"vc7-stlport/boost_regex-vc7-mt-p-1_34.pdb" /debug /machine:I386 /out:"vc7-stlport/boost_regex-vc7-mt-p-1_34.dll" /implib:"vc7-stlport/boost_regex-vc7-mt-p-1_34.lib" /LIBPATH:"$(STLPORT_PATH)\lib" $(XLFLAGS) $(ICU_LINK_OPTS) vc7-stlport/boost_regex-vc7-mt-p-1_34/c_regex_traits.obj vc7-stlport/boost_regex-vc7-mt-p-1_34/cpp_regex_traits.obj vc7-stlport/boost_regex-vc7-mt-p-1_34/cregex.obj vc7-stlport/boost_regex-vc7-mt-p-1_34/fileiter.obj vc7-stlport/boost_regex-vc7-mt-p-1_34/icu.obj vc7-stlport/boost_regex-vc7-mt-p-1_34/instances.obj vc7-stlport/boost_regex-vc7-mt-p-1_34/posix_api.obj vc7-stlport/boost_regex-vc7-mt-p-1_34/regex.obj vc7-stlport/boost_regex-vc7-mt-p-1_34/regex_debug.obj vc7-stlport/boost_regex-vc7-mt-p-1_34/regex_raw_buffer.obj vc7-stlport/boost_regex-vc7-mt-p-1_34/regex_traits_defaults.obj vc7-stlport/boost_regex
-vc7-mt-p-1_34/static_mutex.obj vc7-stlport/boost_regex-vc7-mt-p-1_34/usinstances.obj vc7-stlport/boost_regex-vc7-mt-p-1_34/w32_regex_traits.obj vc7-stlport/boost_regex-vc7-mt-p-1_34/wc_regex_traits.obj vc7-stlport/boost_regex-vc7-mt-p-1_34/wide_posix_api.obj vc7-stlport/boost_regex-vc7-mt-p-1_34/winstances.obj
+
+########################################################
+#
+# section for libboost_regex-vc7-mt-p-1_34.lib
+#
+########################################################
+vc7-stlport/libboost_regex-vc7-mt-p-1_34/c_regex_traits.obj: ../src/c_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/libboost_regex-vc7-mt-p-1_34/ -Fdvc7-stlport/libboost_regex-vc7-mt-p-1_34.pdb ../src/c_regex_traits.cpp
+
+vc7-stlport/libboost_regex-vc7-mt-p-1_34/cpp_regex_traits.obj: ../src/cpp_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/libboost_regex-vc7-mt-p-1_34/ -Fdvc7-stlport/libboost_regex-vc7-mt-p-1_34.pdb ../src/cpp_regex_traits.cpp
+
+vc7-stlport/libboost_regex-vc7-mt-p-1_34/cregex.obj: ../src/cregex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/libboost_regex-vc7-mt-p-1_34/ -Fdvc7-stlport/libboost_regex-vc7-mt-p-1_34.pdb ../src/cregex.cpp
+
+vc7-stlport/libboost_regex-vc7-mt-p-1_34/fileiter.obj: ../src/fileiter.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/libboost_regex-vc7-mt-p-1_34/ -Fdvc7-stlport/libboost_regex-vc7-mt-p-1_34.pdb ../src/fileiter.cpp
+
+vc7-stlport/libboost_regex-vc7-mt-p-1_34/icu.obj: ../src/icu.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/libboost_regex-vc7-mt-p-1_34/ -Fdvc7-stlport/libboost_regex-vc7-mt-p-1_34.pdb ../src/icu.cpp
+
+vc7-stlport/libboost_regex-vc7-mt-p-1_34/instances.obj: ../src/instances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/libboost_regex-vc7-mt-p-1_34/ -Fdvc7-stlport/libboost_regex-vc7-mt-p-1_34.pdb ../src/instances.cpp
+
+vc7-stlport/libboost_regex-vc7-mt-p-1_34/posix_api.obj: ../src/posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/libboost_regex-vc7-mt-p-1_34/ -Fdvc7-stlport/libboost_regex-vc7-mt-p-1_34.pdb ../src/posix_api.cpp
+
+vc7-stlport/libboost_regex-vc7-mt-p-1_34/regex.obj: ../src/regex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/libboost_regex-vc7-mt-p-1_34/ -Fdvc7-stlport/libboost_regex-vc7-mt-p-1_34.pdb ../src/regex.cpp
+
+vc7-stlport/libboost_regex-vc7-mt-p-1_34/regex_debug.obj: ../src/regex_debug.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/libboost_regex-vc7-mt-p-1_34/ -Fdvc7-stlport/libboost_regex-vc7-mt-p-1_34.pdb ../src/regex_debug.cpp
+
+vc7-stlport/libboost_regex-vc7-mt-p-1_34/regex_raw_buffer.obj: ../src/regex_raw_buffer.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/libboost_regex-vc7-mt-p-1_34/ -Fdvc7-stlport/libboost_regex-vc7-mt-p-1_34.pdb ../src/regex_raw_buffer.cpp
+
+vc7-stlport/libboost_regex-vc7-mt-p-1_34/regex_traits_defaults.obj: ../src/regex_traits_defaults.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/libboost_regex-vc7-mt-p-1_34/ -Fdvc7-stlport/libboost_regex-vc7-mt-p-1_34.pdb ../src/regex_traits_defaults.cpp
+
+vc7-stlport/libboost_regex-vc7-mt-p-1_34/static_mutex.obj: ../src/static_mutex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/libboost_regex-vc7-mt-p-1_34/ -Fdvc7-stlport/libboost_regex-vc7-mt-p-1_34.pdb ../src/static_mutex.cpp
+
+vc7-stlport/libboost_regex-vc7-mt-p-1_34/usinstances.obj: ../src/usinstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/libboost_regex-vc7-mt-p-1_34/ -Fdvc7-stlport/libboost_regex-vc7-mt-p-1_34.pdb ../src/usinstances.cpp
+
+vc7-stlport/libboost_regex-vc7-mt-p-1_34/w32_regex_traits.obj: ../src/w32_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/libboost_regex-vc7-mt-p-1_34/ -Fdvc7-stlport/libboost_regex-vc7-mt-p-1_34.pdb ../src/w32_regex_traits.cpp
+
+vc7-stlport/libboost_regex-vc7-mt-p-1_34/wc_regex_traits.obj: ../src/wc_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/libboost_regex-vc7-mt-p-1_34/ -Fdvc7-stlport/libboost_regex-vc7-mt-p-1_34.pdb ../src/wc_regex_traits.cpp
+
+vc7-stlport/libboost_regex-vc7-mt-p-1_34/wide_posix_api.obj: ../src/wide_posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/libboost_regex-vc7-mt-p-1_34/ -Fdvc7-stlport/libboost_regex-vc7-mt-p-1_34.pdb ../src/wide_posix_api.cpp
+
+vc7-stlport/libboost_regex-vc7-mt-p-1_34/winstances.obj: ../src/winstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/libboost_regex-vc7-mt-p-1_34/ -Fdvc7-stlport/libboost_regex-vc7-mt-p-1_34.pdb ../src/winstances.cpp
+
+libboost_regex-vc7-mt-p-1_34_dir :
+ @if not exist "vc7-stlport\libboost_regex-vc7-mt-p-1_34\$(NULL)" mkdir vc7-stlport\libboost_regex-vc7-mt-p-1_34
+
+libboost_regex-vc7-mt-p-1_34_clean :
+ del vc7-stlport\libboost_regex-vc7-mt-p-1_34\*.obj
+ del vc7-stlport\libboost_regex-vc7-mt-p-1_34\*.idb
+ del vc7-stlport\libboost_regex-vc7-mt-p-1_34\*.exp
+ del vc7-stlport\libboost_regex-vc7-mt-p-1_34\*.pch
+
+./vc7-stlport/libboost_regex-vc7-mt-p-1_34.lib : vc7-stlport/libboost_regex-vc7-mt-p-1_34/c_regex_traits.obj vc7-stlport/libboost_regex-vc7-mt-p-1_34/cpp_regex_traits.obj vc7-stlport/libboost_regex-vc7-mt-p-1_34/cregex.obj vc7-stlport/libboost_regex-vc7-mt-p-1_34/fileiter.obj vc7-stlport/libboost_regex-vc7-mt-p-1_34/icu.obj vc7-stlport/libboost_regex-vc7-mt-p-1_34/instances.obj vc7-stlport/libboost_regex-vc7-mt-p-1_34/posix_api.obj vc7-stlport/libboost_regex-vc7-mt-p-1_34/regex.obj vc7-stlport/libboost_regex-vc7-mt-p-1_34/regex_debug.obj vc7-stlport/libboost_regex-vc7-mt-p-1_34/regex_raw_buffer.obj vc7-stlport/libboost_regex-vc7-mt-p-1_34/regex_traits_defaults.obj vc7-stlport/libboost_regex-vc7-mt-p-1_34/static_mutex.obj vc7-stlport/libboost_regex-vc7-mt-p-1_34/usinstances.obj vc7-stlport/libboost_regex-vc7-mt-p-1_34/w32_regex_traits.obj vc7-stlport/libboost_regex-vc7-mt-p-1_34/wc_regex_traits.obj vc7-stlport/libboost_regex-vc7-mt-p-1_34/wide_posix_api.obj vc7-stlport/libboost_regex-vc7-mt-p-1_34/winstances
.obj
+ link -lib /nologo /out:vc7-stlport/libboost_regex-vc7-mt-p-1_34.lib $(XSFLAGS) vc7-stlport/libboost_regex-vc7-mt-p-1_34/c_regex_traits.obj vc7-stlport/libboost_regex-vc7-mt-p-1_34/cpp_regex_traits.obj vc7-stlport/libboost_regex-vc7-mt-p-1_34/cregex.obj vc7-stlport/libboost_regex-vc7-mt-p-1_34/fileiter.obj vc7-stlport/libboost_regex-vc7-mt-p-1_34/icu.obj vc7-stlport/libboost_regex-vc7-mt-p-1_34/instances.obj vc7-stlport/libboost_regex-vc7-mt-p-1_34/posix_api.obj vc7-stlport/libboost_regex-vc7-mt-p-1_34/regex.obj vc7-stlport/libboost_regex-vc7-mt-p-1_34/regex_debug.obj vc7-stlport/libboost_regex-vc7-mt-p-1_34/regex_raw_buffer.obj vc7-stlport/libboost_regex-vc7-mt-p-1_34/regex_traits_defaults.obj vc7-stlport/libboost_regex-vc7-mt-p-1_34/static_mutex.obj vc7-stlport/libboost_regex-vc7-mt-p-1_34/usinstances.obj vc7-stlport/libboost_regex-vc7-mt-p-1_34/w32_regex_traits.obj vc7-stlport/libboost_regex-vc7-mt-p-1_34/wc_regex_traits.obj vc7-stlport/libboost_regex-vc7-mt-p-1_34/wide_posix_api.obj vc7-stlport/libboos
t_regex-vc7-mt-p-1_34/winstances.obj
+
+########################################################
+#
+# section for boost_regex-vc7-mt-gdp-1_34.lib
+#
+########################################################
+vc7-stlport/boost_regex-vc7-mt-gdp-1_34/c_regex_traits.obj: ../src/c_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_DYN_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/boost_regex-vc7-mt-gdp-1_34/ -Fdvc7-stlport/boost_regex-vc7-mt-gdp-1_34.pdb ../src/c_regex_traits.cpp
+
+vc7-stlport/boost_regex-vc7-mt-gdp-1_34/cpp_regex_traits.obj: ../src/cpp_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_DYN_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/boost_regex-vc7-mt-gdp-1_34/ -Fdvc7-stlport/boost_regex-vc7-mt-gdp-1_34.pdb ../src/cpp_regex_traits.cpp
+
+vc7-stlport/boost_regex-vc7-mt-gdp-1_34/cregex.obj: ../src/cregex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_DYN_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/boost_regex-vc7-mt-gdp-1_34/ -Fdvc7-stlport/boost_regex-vc7-mt-gdp-1_34.pdb ../src/cregex.cpp
+
+vc7-stlport/boost_regex-vc7-mt-gdp-1_34/fileiter.obj: ../src/fileiter.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_DYN_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/boost_regex-vc7-mt-gdp-1_34/ -Fdvc7-stlport/boost_regex-vc7-mt-gdp-1_34.pdb ../src/fileiter.cpp
+
+vc7-stlport/boost_regex-vc7-mt-gdp-1_34/icu.obj: ../src/icu.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_DYN_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/boost_regex-vc7-mt-gdp-1_34/ -Fdvc7-stlport/boost_regex-vc7-mt-gdp-1_34.pdb ../src/icu.cpp
+
+vc7-stlport/boost_regex-vc7-mt-gdp-1_34/instances.obj: ../src/instances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_DYN_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/boost_regex-vc7-mt-gdp-1_34/ -Fdvc7-stlport/boost_regex-vc7-mt-gdp-1_34.pdb ../src/instances.cpp
+
+vc7-stlport/boost_regex-vc7-mt-gdp-1_34/posix_api.obj: ../src/posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_DYN_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/boost_regex-vc7-mt-gdp-1_34/ -Fdvc7-stlport/boost_regex-vc7-mt-gdp-1_34.pdb ../src/posix_api.cpp
+
+vc7-stlport/boost_regex-vc7-mt-gdp-1_34/regex.obj: ../src/regex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_DYN_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/boost_regex-vc7-mt-gdp-1_34/ -Fdvc7-stlport/boost_regex-vc7-mt-gdp-1_34.pdb ../src/regex.cpp
+
+vc7-stlport/boost_regex-vc7-mt-gdp-1_34/regex_debug.obj: ../src/regex_debug.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_DYN_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/boost_regex-vc7-mt-gdp-1_34/ -Fdvc7-stlport/boost_regex-vc7-mt-gdp-1_34.pdb ../src/regex_debug.cpp
+
+vc7-stlport/boost_regex-vc7-mt-gdp-1_34/regex_raw_buffer.obj: ../src/regex_raw_buffer.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_DYN_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/boost_regex-vc7-mt-gdp-1_34/ -Fdvc7-stlport/boost_regex-vc7-mt-gdp-1_34.pdb ../src/regex_raw_buffer.cpp
+
+vc7-stlport/boost_regex-vc7-mt-gdp-1_34/regex_traits_defaults.obj: ../src/regex_traits_defaults.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_DYN_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/boost_regex-vc7-mt-gdp-1_34/ -Fdvc7-stlport/boost_regex-vc7-mt-gdp-1_34.pdb ../src/regex_traits_defaults.cpp
+
+vc7-stlport/boost_regex-vc7-mt-gdp-1_34/static_mutex.obj: ../src/static_mutex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_DYN_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/boost_regex-vc7-mt-gdp-1_34/ -Fdvc7-stlport/boost_regex-vc7-mt-gdp-1_34.pdb ../src/static_mutex.cpp
+
+vc7-stlport/boost_regex-vc7-mt-gdp-1_34/usinstances.obj: ../src/usinstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_DYN_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/boost_regex-vc7-mt-gdp-1_34/ -Fdvc7-stlport/boost_regex-vc7-mt-gdp-1_34.pdb ../src/usinstances.cpp
+
+vc7-stlport/boost_regex-vc7-mt-gdp-1_34/w32_regex_traits.obj: ../src/w32_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_DYN_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/boost_regex-vc7-mt-gdp-1_34/ -Fdvc7-stlport/boost_regex-vc7-mt-gdp-1_34.pdb ../src/w32_regex_traits.cpp
+
+vc7-stlport/boost_regex-vc7-mt-gdp-1_34/wc_regex_traits.obj: ../src/wc_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_DYN_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/boost_regex-vc7-mt-gdp-1_34/ -Fdvc7-stlport/boost_regex-vc7-mt-gdp-1_34.pdb ../src/wc_regex_traits.cpp
+
+vc7-stlport/boost_regex-vc7-mt-gdp-1_34/wide_posix_api.obj: ../src/wide_posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_DYN_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/boost_regex-vc7-mt-gdp-1_34/ -Fdvc7-stlport/boost_regex-vc7-mt-gdp-1_34.pdb ../src/wide_posix_api.cpp
+
+vc7-stlport/boost_regex-vc7-mt-gdp-1_34/winstances.obj: ../src/winstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_DYN_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/boost_regex-vc7-mt-gdp-1_34/ -Fdvc7-stlport/boost_regex-vc7-mt-gdp-1_34.pdb ../src/winstances.cpp
+
+boost_regex-vc7-mt-gdp-1_34_dir :
+ @if not exist "vc7-stlport\boost_regex-vc7-mt-gdp-1_34\$(NULL)" mkdir vc7-stlport\boost_regex-vc7-mt-gdp-1_34
+
+boost_regex-vc7-mt-gdp-1_34_clean :
+ del vc7-stlport\boost_regex-vc7-mt-gdp-1_34\*.obj
+ del vc7-stlport\boost_regex-vc7-mt-gdp-1_34\*.idb
+ del vc7-stlport\boost_regex-vc7-mt-gdp-1_34\*.exp
+ del vc7-stlport\boost_regex-vc7-mt-gdp-1_34\*.pch
+
+./vc7-stlport/boost_regex-vc7-mt-gdp-1_34.lib : vc7-stlport/boost_regex-vc7-mt-gdp-1_34/c_regex_traits.obj vc7-stlport/boost_regex-vc7-mt-gdp-1_34/cpp_regex_traits.obj vc7-stlport/boost_regex-vc7-mt-gdp-1_34/cregex.obj vc7-stlport/boost_regex-vc7-mt-gdp-1_34/fileiter.obj vc7-stlport/boost_regex-vc7-mt-gdp-1_34/icu.obj vc7-stlport/boost_regex-vc7-mt-gdp-1_34/instances.obj vc7-stlport/boost_regex-vc7-mt-gdp-1_34/posix_api.obj vc7-stlport/boost_regex-vc7-mt-gdp-1_34/regex.obj vc7-stlport/boost_regex-vc7-mt-gdp-1_34/regex_debug.obj vc7-stlport/boost_regex-vc7-mt-gdp-1_34/regex_raw_buffer.obj vc7-stlport/boost_regex-vc7-mt-gdp-1_34/regex_traits_defaults.obj vc7-stlport/boost_regex-vc7-mt-gdp-1_34/static_mutex.obj vc7-stlport/boost_regex-vc7-mt-gdp-1_34/usinstances.obj vc7-stlport/boost_regex-vc7-mt-gdp-1_34/w32_regex_traits.obj vc7-stlport/boost_regex-vc7-mt-gdp-1_34/wc_regex_traits.obj vc7-stlport/boost_regex-vc7-mt-gdp-1_34/wide_posix_api.obj vc7-stlport/boost_regex-vc7-mt-gdp-1_34/winstances.obj
+ link kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:yes /pdb:"vc7-stlport/boost_regex-vc7-mt-gdp-1_34.pdb" /debug /machine:I386 /out:"vc7-stlport/boost_regex-vc7-mt-gdp-1_34.dll" /implib:"vc7-stlport/boost_regex-vc7-mt-gdp-1_34.lib" /LIBPATH:"$(STLPORT_PATH)\lib" $(XLFLAGS) $(ICU_LINK_OPTS) vc7-stlport/boost_regex-vc7-mt-gdp-1_34/c_regex_traits.obj vc7-stlport/boost_regex-vc7-mt-gdp-1_34/cpp_regex_traits.obj vc7-stlport/boost_regex-vc7-mt-gdp-1_34/cregex.obj vc7-stlport/boost_regex-vc7-mt-gdp-1_34/fileiter.obj vc7-stlport/boost_regex-vc7-mt-gdp-1_34/icu.obj vc7-stlport/boost_regex-vc7-mt-gdp-1_34/instances.obj vc7-stlport/boost_regex-vc7-mt-gdp-1_34/posix_api.obj vc7-stlport/boost_regex-vc7-mt-gdp-1_34/regex.obj vc7-stlport/boost_regex-vc7-mt-gdp-1_34/regex_debug.obj vc7-stlport/boost_regex-vc7-mt-gdp-1_34/regex_raw_buffer.obj vc7-stlport/boost_regex-vc7-mt-gdp-1_34/regex_traits_defaults
.obj vc7-stlport/boost_regex-vc7-mt-gdp-1_34/static_mutex.obj vc7-stlport/boost_regex-vc7-mt-gdp-1_34/usinstances.obj vc7-stlport/boost_regex-vc7-mt-gdp-1_34/w32_regex_traits.obj vc7-stlport/boost_regex-vc7-mt-gdp-1_34/wc_regex_traits.obj vc7-stlport/boost_regex-vc7-mt-gdp-1_34/wide_posix_api.obj vc7-stlport/boost_regex-vc7-mt-gdp-1_34/winstances.obj
+
+########################################################
+#
+# section for libboost_regex-vc7-mt-sgdp-1_34.lib
+#
+########################################################
+vc7-stlport/libboost_regex-vc7-mt-sgdp-1_34/c_regex_traits.obj: ../src/c_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D__STL_DEBUG /D_STLP_DEBUG /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/libboost_regex-vc7-mt-sgdp-1_34/ -Fdvc7-stlport/libboost_regex-vc7-mt-sgdp-1_34.pdb ../src/c_regex_traits.cpp
+
+vc7-stlport/libboost_regex-vc7-mt-sgdp-1_34/cpp_regex_traits.obj: ../src/cpp_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D__STL_DEBUG /D_STLP_DEBUG /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/libboost_regex-vc7-mt-sgdp-1_34/ -Fdvc7-stlport/libboost_regex-vc7-mt-sgdp-1_34.pdb ../src/cpp_regex_traits.cpp
+
+vc7-stlport/libboost_regex-vc7-mt-sgdp-1_34/cregex.obj: ../src/cregex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D__STL_DEBUG /D_STLP_DEBUG /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/libboost_regex-vc7-mt-sgdp-1_34/ -Fdvc7-stlport/libboost_regex-vc7-mt-sgdp-1_34.pdb ../src/cregex.cpp
+
+vc7-stlport/libboost_regex-vc7-mt-sgdp-1_34/fileiter.obj: ../src/fileiter.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D__STL_DEBUG /D_STLP_DEBUG /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/libboost_regex-vc7-mt-sgdp-1_34/ -Fdvc7-stlport/libboost_regex-vc7-mt-sgdp-1_34.pdb ../src/fileiter.cpp
+
+vc7-stlport/libboost_regex-vc7-mt-sgdp-1_34/icu.obj: ../src/icu.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D__STL_DEBUG /D_STLP_DEBUG /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/libboost_regex-vc7-mt-sgdp-1_34/ -Fdvc7-stlport/libboost_regex-vc7-mt-sgdp-1_34.pdb ../src/icu.cpp
+
+vc7-stlport/libboost_regex-vc7-mt-sgdp-1_34/instances.obj: ../src/instances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D__STL_DEBUG /D_STLP_DEBUG /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/libboost_regex-vc7-mt-sgdp-1_34/ -Fdvc7-stlport/libboost_regex-vc7-mt-sgdp-1_34.pdb ../src/instances.cpp
+
+vc7-stlport/libboost_regex-vc7-mt-sgdp-1_34/posix_api.obj: ../src/posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D__STL_DEBUG /D_STLP_DEBUG /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/libboost_regex-vc7-mt-sgdp-1_34/ -Fdvc7-stlport/libboost_regex-vc7-mt-sgdp-1_34.pdb ../src/posix_api.cpp
+
+vc7-stlport/libboost_regex-vc7-mt-sgdp-1_34/regex.obj: ../src/regex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D__STL_DEBUG /D_STLP_DEBUG /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/libboost_regex-vc7-mt-sgdp-1_34/ -Fdvc7-stlport/libboost_regex-vc7-mt-sgdp-1_34.pdb ../src/regex.cpp
+
+vc7-stlport/libboost_regex-vc7-mt-sgdp-1_34/regex_debug.obj: ../src/regex_debug.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D__STL_DEBUG /D_STLP_DEBUG /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/libboost_regex-vc7-mt-sgdp-1_34/ -Fdvc7-stlport/libboost_regex-vc7-mt-sgdp-1_34.pdb ../src/regex_debug.cpp
+
+vc7-stlport/libboost_regex-vc7-mt-sgdp-1_34/regex_raw_buffer.obj: ../src/regex_raw_buffer.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D__STL_DEBUG /D_STLP_DEBUG /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/libboost_regex-vc7-mt-sgdp-1_34/ -Fdvc7-stlport/libboost_regex-vc7-mt-sgdp-1_34.pdb ../src/regex_raw_buffer.cpp
+
+vc7-stlport/libboost_regex-vc7-mt-sgdp-1_34/regex_traits_defaults.obj: ../src/regex_traits_defaults.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D__STL_DEBUG /D_STLP_DEBUG /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/libboost_regex-vc7-mt-sgdp-1_34/ -Fdvc7-stlport/libboost_regex-vc7-mt-sgdp-1_34.pdb ../src/regex_traits_defaults.cpp
+
+vc7-stlport/libboost_regex-vc7-mt-sgdp-1_34/static_mutex.obj: ../src/static_mutex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D__STL_DEBUG /D_STLP_DEBUG /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/libboost_regex-vc7-mt-sgdp-1_34/ -Fdvc7-stlport/libboost_regex-vc7-mt-sgdp-1_34.pdb ../src/static_mutex.cpp
+
+vc7-stlport/libboost_regex-vc7-mt-sgdp-1_34/usinstances.obj: ../src/usinstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D__STL_DEBUG /D_STLP_DEBUG /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/libboost_regex-vc7-mt-sgdp-1_34/ -Fdvc7-stlport/libboost_regex-vc7-mt-sgdp-1_34.pdb ../src/usinstances.cpp
+
+vc7-stlport/libboost_regex-vc7-mt-sgdp-1_34/w32_regex_traits.obj: ../src/w32_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D__STL_DEBUG /D_STLP_DEBUG /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/libboost_regex-vc7-mt-sgdp-1_34/ -Fdvc7-stlport/libboost_regex-vc7-mt-sgdp-1_34.pdb ../src/w32_regex_traits.cpp
+
+vc7-stlport/libboost_regex-vc7-mt-sgdp-1_34/wc_regex_traits.obj: ../src/wc_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D__STL_DEBUG /D_STLP_DEBUG /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/libboost_regex-vc7-mt-sgdp-1_34/ -Fdvc7-stlport/libboost_regex-vc7-mt-sgdp-1_34.pdb ../src/wc_regex_traits.cpp
+
+vc7-stlport/libboost_regex-vc7-mt-sgdp-1_34/wide_posix_api.obj: ../src/wide_posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D__STL_DEBUG /D_STLP_DEBUG /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/libboost_regex-vc7-mt-sgdp-1_34/ -Fdvc7-stlport/libboost_regex-vc7-mt-sgdp-1_34.pdb ../src/wide_posix_api.cpp
+
+vc7-stlport/libboost_regex-vc7-mt-sgdp-1_34/winstances.obj: ../src/winstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D__STL_DEBUG /D_STLP_DEBUG /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/libboost_regex-vc7-mt-sgdp-1_34/ -Fdvc7-stlport/libboost_regex-vc7-mt-sgdp-1_34.pdb ../src/winstances.cpp
+
+libboost_regex-vc7-mt-sgdp-1_34_dir :
+ @if not exist "vc7-stlport\libboost_regex-vc7-mt-sgdp-1_34\$(NULL)" mkdir vc7-stlport\libboost_regex-vc7-mt-sgdp-1_34
+
+libboost_regex-vc7-mt-sgdp-1_34_clean :
+ del vc7-stlport\libboost_regex-vc7-mt-sgdp-1_34\*.obj
+ del vc7-stlport\libboost_regex-vc7-mt-sgdp-1_34\*.idb
+ del vc7-stlport\libboost_regex-vc7-mt-sgdp-1_34\*.exp
+ del vc7-stlport\libboost_regex-vc7-mt-sgdp-1_34\*.pch
+
+./vc7-stlport/libboost_regex-vc7-mt-sgdp-1_34.lib : vc7-stlport/libboost_regex-vc7-mt-sgdp-1_34/c_regex_traits.obj vc7-stlport/libboost_regex-vc7-mt-sgdp-1_34/cpp_regex_traits.obj vc7-stlport/libboost_regex-vc7-mt-sgdp-1_34/cregex.obj vc7-stlport/libboost_regex-vc7-mt-sgdp-1_34/fileiter.obj vc7-stlport/libboost_regex-vc7-mt-sgdp-1_34/icu.obj vc7-stlport/libboost_regex-vc7-mt-sgdp-1_34/instances.obj vc7-stlport/libboost_regex-vc7-mt-sgdp-1_34/posix_api.obj vc7-stlport/libboost_regex-vc7-mt-sgdp-1_34/regex.obj vc7-stlport/libboost_regex-vc7-mt-sgdp-1_34/regex_debug.obj vc7-stlport/libboost_regex-vc7-mt-sgdp-1_34/regex_raw_buffer.obj vc7-stlport/libboost_regex-vc7-mt-sgdp-1_34/regex_traits_defaults.obj vc7-stlport/libboost_regex-vc7-mt-sgdp-1_34/static_mutex.obj vc7-stlport/libboost_regex-vc7-mt-sgdp-1_34/usinstances.obj vc7-stlport/libboost_regex-vc7-mt-sgdp-1_34/w32_regex_traits.obj vc7-stlport/libboost_regex-vc7-mt-sgdp-1_34/wc_regex_traits.obj vc7-stlport/libboost_regex-vc7-mt-sgdp-1_34/wide_posix_api.obj
vc7-stlport/libboost_regex-vc7-mt-sgdp-1_34/winstances.obj
+ link -lib /nologo /out:vc7-stlport/libboost_regex-vc7-mt-sgdp-1_34.lib $(XSFLAGS) vc7-stlport/libboost_regex-vc7-mt-sgdp-1_34/c_regex_traits.obj vc7-stlport/libboost_regex-vc7-mt-sgdp-1_34/cpp_regex_traits.obj vc7-stlport/libboost_regex-vc7-mt-sgdp-1_34/cregex.obj vc7-stlport/libboost_regex-vc7-mt-sgdp-1_34/fileiter.obj vc7-stlport/libboost_regex-vc7-mt-sgdp-1_34/icu.obj vc7-stlport/libboost_regex-vc7-mt-sgdp-1_34/instances.obj vc7-stlport/libboost_regex-vc7-mt-sgdp-1_34/posix_api.obj vc7-stlport/libboost_regex-vc7-mt-sgdp-1_34/regex.obj vc7-stlport/libboost_regex-vc7-mt-sgdp-1_34/regex_debug.obj vc7-stlport/libboost_regex-vc7-mt-sgdp-1_34/regex_raw_buffer.obj vc7-stlport/libboost_regex-vc7-mt-sgdp-1_34/regex_traits_defaults.obj vc7-stlport/libboost_regex-vc7-mt-sgdp-1_34/static_mutex.obj vc7-stlport/libboost_regex-vc7-mt-sgdp-1_34/usinstances.obj vc7-stlport/libboost_regex-vc7-mt-sgdp-1_34/w32_regex_traits.obj vc7-stlport/libboost_regex-vc7-mt-sgdp-1_34/wc_regex_traits.obj vc7-stlport/libboost_regex-vc7-
mt-sgdp-1_34/wide_posix_api.obj vc7-stlport/libboost_regex-vc7-mt-sgdp-1_34/winstances.obj
+
+########################################################
+#
+# section for libboost_regex-vc7-mt-gdp-1_34.lib
+#
+########################################################
+vc7-stlport/libboost_regex-vc7-mt-gdp-1_34/c_regex_traits.obj: ../src/c_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/libboost_regex-vc7-mt-gdp-1_34/ -Fdvc7-stlport/libboost_regex-vc7-mt-gdp-1_34.pdb ../src/c_regex_traits.cpp
+
+vc7-stlport/libboost_regex-vc7-mt-gdp-1_34/cpp_regex_traits.obj: ../src/cpp_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/libboost_regex-vc7-mt-gdp-1_34/ -Fdvc7-stlport/libboost_regex-vc7-mt-gdp-1_34.pdb ../src/cpp_regex_traits.cpp
+
+vc7-stlport/libboost_regex-vc7-mt-gdp-1_34/cregex.obj: ../src/cregex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/libboost_regex-vc7-mt-gdp-1_34/ -Fdvc7-stlport/libboost_regex-vc7-mt-gdp-1_34.pdb ../src/cregex.cpp
+
+vc7-stlport/libboost_regex-vc7-mt-gdp-1_34/fileiter.obj: ../src/fileiter.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/libboost_regex-vc7-mt-gdp-1_34/ -Fdvc7-stlport/libboost_regex-vc7-mt-gdp-1_34.pdb ../src/fileiter.cpp
+
+vc7-stlport/libboost_regex-vc7-mt-gdp-1_34/icu.obj: ../src/icu.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/libboost_regex-vc7-mt-gdp-1_34/ -Fdvc7-stlport/libboost_regex-vc7-mt-gdp-1_34.pdb ../src/icu.cpp
+
+vc7-stlport/libboost_regex-vc7-mt-gdp-1_34/instances.obj: ../src/instances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/libboost_regex-vc7-mt-gdp-1_34/ -Fdvc7-stlport/libboost_regex-vc7-mt-gdp-1_34.pdb ../src/instances.cpp
+
+vc7-stlport/libboost_regex-vc7-mt-gdp-1_34/posix_api.obj: ../src/posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/libboost_regex-vc7-mt-gdp-1_34/ -Fdvc7-stlport/libboost_regex-vc7-mt-gdp-1_34.pdb ../src/posix_api.cpp
+
+vc7-stlport/libboost_regex-vc7-mt-gdp-1_34/regex.obj: ../src/regex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/libboost_regex-vc7-mt-gdp-1_34/ -Fdvc7-stlport/libboost_regex-vc7-mt-gdp-1_34.pdb ../src/regex.cpp
+
+vc7-stlport/libboost_regex-vc7-mt-gdp-1_34/regex_debug.obj: ../src/regex_debug.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/libboost_regex-vc7-mt-gdp-1_34/ -Fdvc7-stlport/libboost_regex-vc7-mt-gdp-1_34.pdb ../src/regex_debug.cpp
+
+vc7-stlport/libboost_regex-vc7-mt-gdp-1_34/regex_raw_buffer.obj: ../src/regex_raw_buffer.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/libboost_regex-vc7-mt-gdp-1_34/ -Fdvc7-stlport/libboost_regex-vc7-mt-gdp-1_34.pdb ../src/regex_raw_buffer.cpp
+
+vc7-stlport/libboost_regex-vc7-mt-gdp-1_34/regex_traits_defaults.obj: ../src/regex_traits_defaults.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/libboost_regex-vc7-mt-gdp-1_34/ -Fdvc7-stlport/libboost_regex-vc7-mt-gdp-1_34.pdb ../src/regex_traits_defaults.cpp
+
+vc7-stlport/libboost_regex-vc7-mt-gdp-1_34/static_mutex.obj: ../src/static_mutex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/libboost_regex-vc7-mt-gdp-1_34/ -Fdvc7-stlport/libboost_regex-vc7-mt-gdp-1_34.pdb ../src/static_mutex.cpp
+
+vc7-stlport/libboost_regex-vc7-mt-gdp-1_34/usinstances.obj: ../src/usinstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/libboost_regex-vc7-mt-gdp-1_34/ -Fdvc7-stlport/libboost_regex-vc7-mt-gdp-1_34.pdb ../src/usinstances.cpp
+
+vc7-stlport/libboost_regex-vc7-mt-gdp-1_34/w32_regex_traits.obj: ../src/w32_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/libboost_regex-vc7-mt-gdp-1_34/ -Fdvc7-stlport/libboost_regex-vc7-mt-gdp-1_34.pdb ../src/w32_regex_traits.cpp
+
+vc7-stlport/libboost_regex-vc7-mt-gdp-1_34/wc_regex_traits.obj: ../src/wc_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/libboost_regex-vc7-mt-gdp-1_34/ -Fdvc7-stlport/libboost_regex-vc7-mt-gdp-1_34.pdb ../src/wc_regex_traits.cpp
+
+vc7-stlport/libboost_regex-vc7-mt-gdp-1_34/wide_posix_api.obj: ../src/wide_posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/libboost_regex-vc7-mt-gdp-1_34/ -Fdvc7-stlport/libboost_regex-vc7-mt-gdp-1_34.pdb ../src/wide_posix_api.cpp
+
+vc7-stlport/libboost_regex-vc7-mt-gdp-1_34/winstances.obj: ../src/winstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7-stlport/libboost_regex-vc7-mt-gdp-1_34/ -Fdvc7-stlport/libboost_regex-vc7-mt-gdp-1_34.pdb ../src/winstances.cpp
+
+libboost_regex-vc7-mt-gdp-1_34_dir :
+ @if not exist "vc7-stlport\libboost_regex-vc7-mt-gdp-1_34\$(NULL)" mkdir vc7-stlport\libboost_regex-vc7-mt-gdp-1_34
+
+libboost_regex-vc7-mt-gdp-1_34_clean :
+ del vc7-stlport\libboost_regex-vc7-mt-gdp-1_34\*.obj
+ del vc7-stlport\libboost_regex-vc7-mt-gdp-1_34\*.idb
+ del vc7-stlport\libboost_regex-vc7-mt-gdp-1_34\*.exp
+ del vc7-stlport\libboost_regex-vc7-mt-gdp-1_34\*.pch
+
+./vc7-stlport/libboost_regex-vc7-mt-gdp-1_34.lib : vc7-stlport/libboost_regex-vc7-mt-gdp-1_34/c_regex_traits.obj vc7-stlport/libboost_regex-vc7-mt-gdp-1_34/cpp_regex_traits.obj vc7-stlport/libboost_regex-vc7-mt-gdp-1_34/cregex.obj vc7-stlport/libboost_regex-vc7-mt-gdp-1_34/fileiter.obj vc7-stlport/libboost_regex-vc7-mt-gdp-1_34/icu.obj vc7-stlport/libboost_regex-vc7-mt-gdp-1_34/instances.obj vc7-stlport/libboost_regex-vc7-mt-gdp-1_34/posix_api.obj vc7-stlport/libboost_regex-vc7-mt-gdp-1_34/regex.obj vc7-stlport/libboost_regex-vc7-mt-gdp-1_34/regex_debug.obj vc7-stlport/libboost_regex-vc7-mt-gdp-1_34/regex_raw_buffer.obj vc7-stlport/libboost_regex-vc7-mt-gdp-1_34/regex_traits_defaults.obj vc7-stlport/libboost_regex-vc7-mt-gdp-1_34/static_mutex.obj vc7-stlport/libboost_regex-vc7-mt-gdp-1_34/usinstances.obj vc7-stlport/libboost_regex-vc7-mt-gdp-1_34/w32_regex_traits.obj vc7-stlport/libboost_regex-vc7-mt-gdp-1_34/wc_regex_traits.obj vc7-stlport/libboost_regex-vc7-mt-gdp-1_34/wide_posix_api.obj vc7-stlport/libbo
ost_regex-vc7-mt-gdp-1_34/winstances.obj
+ link -lib /nologo /out:vc7-stlport/libboost_regex-vc7-mt-gdp-1_34.lib $(XSFLAGS) vc7-stlport/libboost_regex-vc7-mt-gdp-1_34/c_regex_traits.obj vc7-stlport/libboost_regex-vc7-mt-gdp-1_34/cpp_regex_traits.obj vc7-stlport/libboost_regex-vc7-mt-gdp-1_34/cregex.obj vc7-stlport/libboost_regex-vc7-mt-gdp-1_34/fileiter.obj vc7-stlport/libboost_regex-vc7-mt-gdp-1_34/icu.obj vc7-stlport/libboost_regex-vc7-mt-gdp-1_34/instances.obj vc7-stlport/libboost_regex-vc7-mt-gdp-1_34/posix_api.obj vc7-stlport/libboost_regex-vc7-mt-gdp-1_34/regex.obj vc7-stlport/libboost_regex-vc7-mt-gdp-1_34/regex_debug.obj vc7-stlport/libboost_regex-vc7-mt-gdp-1_34/regex_raw_buffer.obj vc7-stlport/libboost_regex-vc7-mt-gdp-1_34/regex_traits_defaults.obj vc7-stlport/libboost_regex-vc7-mt-gdp-1_34/static_mutex.obj vc7-stlport/libboost_regex-vc7-mt-gdp-1_34/usinstances.obj vc7-stlport/libboost_regex-vc7-mt-gdp-1_34/w32_regex_traits.obj vc7-stlport/libboost_regex-vc7-mt-gdp-1_34/wc_regex_traits.obj vc7-stlport/libboost_regex-vc7-mt-gdp-1_34/wide
_posix_api.obj vc7-stlport/libboost_regex-vc7-mt-gdp-1_34/winstances.obj
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/build/vc7.mak
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/build/vc7.mak 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,632 @@
+# copyright John Maddock 2006
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt.
+#
+# auto generated makefile for VC6 compiler
+#
+# usage:
+# make
+# brings libraries up to date
+# make install
+# brings libraries up to date and copies binaries to your VC6 /lib and /bin directories (recomended)
+#
+
+#
+# path to ICU library installation goes here:
+#
+ICU_PATH=
+#
+# Add additional compiler options here:
+#
+CXXFLAGS=
+#
+# Add additional include directories here:
+#
+INCLUDES=
+#
+# add additional linker flags here:
+#
+XLFLAGS=
+#
+# add additional static-library creation flags here:
+#
+XSFLAGS=
+
+!IF "$(OS)" == "Windows_NT"
+NULL=
+!ELSE
+NULL=nul
+!ENDIF
+
+!IF "$(MSVCDIR)" == ""
+
+!ENDIF
+
+!IF "$(MSVCDIR)" == ""
+!ERROR Variable MSVCDIR not set.
+!ENDIF
+
+!IF "$(ICU_PATH)" == ""
+ICU_COMPILE_OPTS=
+ICU_LINK_OPTS=
+!MESSAGE Building Boost.Regex without ICU / Unicode support:
+!MESSAGE Hint: set ICU_PATH on the nmake command line to point
+!MESSAGE to your ICU installation if you have one.
+!ELSE
+ICU_COMPILE_OPTS= -DBOOST_HAS_ICU=1 -I"$(ICU_PATH)\include"
+ICU_LINK_OPTS= /LIBPATH:"$(ICU_PATH)\lib" icuin.lib icuuc.lib
+!MESSAGE Building Boost.Regex with ICU in $(ICU_PATH)
+!ENDIF
+
+
+ALL_HEADER= ../../../boost/regex/concepts.hpp ../../../boost/regex/config.hpp ../../../boost/regex/icu.hpp ../../../boost/regex/mfc.hpp ../../../boost/regex/pattern_except.hpp ../../../boost/regex/regex_traits.hpp ../../../boost/regex/user.hpp ../../../boost/regex/v4/basic_regex.hpp ../../../boost/regex/v4/basic_regex_creator.hpp ../../../boost/regex/v4/basic_regex_parser.hpp ../../../boost/regex/v4/c_regex_traits.hpp ../../../boost/regex/v4/char_regex_traits.hpp ../../../boost/regex/v4/cpp_regex_traits.hpp ../../../boost/regex/v4/cregex.hpp ../../../boost/regex/v4/error_type.hpp ../../../boost/regex/v4/fileiter.hpp ../../../boost/regex/v4/instances.hpp ../../../boost/regex/v4/iterator_category.hpp ../../../boost/regex/v4/iterator_traits.hpp ../../../boost/regex/v4/match_flags.hpp ../../../boost/regex/v4/match_results.hpp ../../../boost/regex/v4/mem_block_cache.hpp ../../../boost/regex/v4/perl_matcher.hpp ../../../boost/regex/v4/perl_matcher_common.hpp ../../../boost/regex/v4/perl_matcher_non_recursive.hpp
../../../boost/regex/v4/perl_matcher_recursive.hpp ../../../boost/regex/v4/primary_transform.hpp ../../../boost/regex/v4/protected_call.hpp ../../../boost/regex/v4/regbase.hpp ../../../boost/regex/v4/regex.hpp ../../../boost/regex/v4/regex_cstring.hpp ../../../boost/regex/v4/regex_format.hpp ../../../boost/regex/v4/regex_fwd.hpp ../../../boost/regex/v4/regex_grep.hpp ../../../boost/regex/v4/regex_iterator.hpp ../../../boost/regex/v4/regex_kmp.hpp ../../../boost/regex/v4/regex_match.hpp ../../../boost/regex/v4/regex_merge.hpp ../../../boost/regex/v4/regex_raw_buffer.hpp ../../../boost/regex/v4/regex_replace.hpp ../../../boost/regex/v4/regex_search.hpp ../../../boost/regex/v4/regex_split.hpp ../../../boost/regex/v4/regex_stack.hpp ../../../boost/regex/v4/regex_token_iterator.hpp ../../../boost/regex/v4/regex_traits.hpp ../../../boost/regex/v4/regex_traits_defaults.hpp ../../../boost/regex/v4/regex_workaround.hpp ../../../boost/regex/v4/states.hpp ../../../boost/regex/v4/sub_match.hpp ../../../boost/regex/v4/sy
ntax_type.hpp ../../../boost/regex/v4/u32regex_iterator.hpp ../../../boost/regex/v4/u32regex_token_iterator.hpp ../../../boost/regex/v4/w32_regex_traits.hpp ../../../boost/regex/config/borland.hpp ../../../boost/regex/config/cwchar.hpp
+
+all : main_dir libboost_regex-vc7-s-1_34_dir ./vc7/libboost_regex-vc7-s-1_34.lib libboost_regex-vc7-mt-s-1_34_dir ./vc7/libboost_regex-vc7-mt-s-1_34.lib libboost_regex-vc7-sgd-1_34_dir ./vc7/libboost_regex-vc7-sgd-1_34.lib libboost_regex-vc7-mt-sgd-1_34_dir ./vc7/libboost_regex-vc7-mt-sgd-1_34.lib boost_regex-vc7-mt-gd-1_34_dir ./vc7/boost_regex-vc7-mt-gd-1_34.lib boost_regex-vc7-mt-1_34_dir ./vc7/boost_regex-vc7-mt-1_34.lib libboost_regex-vc7-mt-1_34_dir ./vc7/libboost_regex-vc7-mt-1_34.lib libboost_regex-vc7-mt-gd-1_34_dir ./vc7/libboost_regex-vc7-mt-gd-1_34.lib
+
+clean : libboost_regex-vc7-s-1_34_clean libboost_regex-vc7-mt-s-1_34_clean libboost_regex-vc7-sgd-1_34_clean libboost_regex-vc7-mt-sgd-1_34_clean boost_regex-vc7-mt-gd-1_34_clean boost_regex-vc7-mt-1_34_clean libboost_regex-vc7-mt-1_34_clean libboost_regex-vc7-mt-gd-1_34_clean
+
+install : all
+ copy vc7\libboost_regex-vc7-s-1_34.lib "$(MSVCDIR)\lib"
+ copy vc7\libboost_regex-vc7-mt-s-1_34.lib "$(MSVCDIR)\lib"
+ copy vc7\libboost_regex-vc7-sgd-1_34.lib "$(MSVCDIR)\lib"
+ copy vc7\libboost_regex-vc7-sgd-1_34.pdb "$(MSVCDIR)\lib"
+ copy vc7\libboost_regex-vc7-mt-sgd-1_34.lib "$(MSVCDIR)\lib"
+ copy vc7\libboost_regex-vc7-mt-sgd-1_34.pdb "$(MSVCDIR)\lib"
+ copy vc7\boost_regex-vc7-mt-gd-1_34.lib "$(MSVCDIR)\lib"
+ copy vc7\boost_regex-vc7-mt-gd-1_34.dll "$(MSVCDIR)\bin"
+ copy vc7\boost_regex-vc7-mt-gd-1_34.pdb "$(MSVCDIR)\lib"
+ copy vc7\boost_regex-vc7-mt-1_34.lib "$(MSVCDIR)\lib"
+ copy vc7\boost_regex-vc7-mt-1_34.dll "$(MSVCDIR)\bin"
+ copy vc7\libboost_regex-vc7-mt-1_34.lib "$(MSVCDIR)\lib"
+ copy vc7\libboost_regex-vc7-mt-gd-1_34.lib "$(MSVCDIR)\lib"
+ copy vc7\libboost_regex-vc7-mt-gd-1_34.pdb "$(MSVCDIR)\lib"
+
+main_dir :
+ @if not exist "vc7\$(NULL)" mkdir vc7
+
+
+########################################################
+#
+# section for libboost_regex-vc7-s-1_34.lib
+#
+########################################################
+vc7/libboost_regex-vc7-s-1_34/c_regex_traits.obj: ../src/c_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /c /nologo /ML /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-s-1_34/ -Fdvc7/libboost_regex-vc7-s-1_34.pdb ../src/c_regex_traits.cpp
+
+vc7/libboost_regex-vc7-s-1_34/cpp_regex_traits.obj: ../src/cpp_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /c /nologo /ML /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-s-1_34/ -Fdvc7/libboost_regex-vc7-s-1_34.pdb ../src/cpp_regex_traits.cpp
+
+vc7/libboost_regex-vc7-s-1_34/cregex.obj: ../src/cregex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /c /nologo /ML /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-s-1_34/ -Fdvc7/libboost_regex-vc7-s-1_34.pdb ../src/cregex.cpp
+
+vc7/libboost_regex-vc7-s-1_34/fileiter.obj: ../src/fileiter.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /c /nologo /ML /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-s-1_34/ -Fdvc7/libboost_regex-vc7-s-1_34.pdb ../src/fileiter.cpp
+
+vc7/libboost_regex-vc7-s-1_34/icu.obj: ../src/icu.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /c /nologo /ML /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-s-1_34/ -Fdvc7/libboost_regex-vc7-s-1_34.pdb ../src/icu.cpp
+
+vc7/libboost_regex-vc7-s-1_34/instances.obj: ../src/instances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /c /nologo /ML /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-s-1_34/ -Fdvc7/libboost_regex-vc7-s-1_34.pdb ../src/instances.cpp
+
+vc7/libboost_regex-vc7-s-1_34/posix_api.obj: ../src/posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /c /nologo /ML /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-s-1_34/ -Fdvc7/libboost_regex-vc7-s-1_34.pdb ../src/posix_api.cpp
+
+vc7/libboost_regex-vc7-s-1_34/regex.obj: ../src/regex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /c /nologo /ML /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-s-1_34/ -Fdvc7/libboost_regex-vc7-s-1_34.pdb ../src/regex.cpp
+
+vc7/libboost_regex-vc7-s-1_34/regex_debug.obj: ../src/regex_debug.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /c /nologo /ML /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-s-1_34/ -Fdvc7/libboost_regex-vc7-s-1_34.pdb ../src/regex_debug.cpp
+
+vc7/libboost_regex-vc7-s-1_34/regex_raw_buffer.obj: ../src/regex_raw_buffer.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /c /nologo /ML /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-s-1_34/ -Fdvc7/libboost_regex-vc7-s-1_34.pdb ../src/regex_raw_buffer.cpp
+
+vc7/libboost_regex-vc7-s-1_34/regex_traits_defaults.obj: ../src/regex_traits_defaults.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /c /nologo /ML /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-s-1_34/ -Fdvc7/libboost_regex-vc7-s-1_34.pdb ../src/regex_traits_defaults.cpp
+
+vc7/libboost_regex-vc7-s-1_34/static_mutex.obj: ../src/static_mutex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /c /nologo /ML /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-s-1_34/ -Fdvc7/libboost_regex-vc7-s-1_34.pdb ../src/static_mutex.cpp
+
+vc7/libboost_regex-vc7-s-1_34/usinstances.obj: ../src/usinstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /c /nologo /ML /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-s-1_34/ -Fdvc7/libboost_regex-vc7-s-1_34.pdb ../src/usinstances.cpp
+
+vc7/libboost_regex-vc7-s-1_34/w32_regex_traits.obj: ../src/w32_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /c /nologo /ML /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-s-1_34/ -Fdvc7/libboost_regex-vc7-s-1_34.pdb ../src/w32_regex_traits.cpp
+
+vc7/libboost_regex-vc7-s-1_34/wc_regex_traits.obj: ../src/wc_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /c /nologo /ML /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-s-1_34/ -Fdvc7/libboost_regex-vc7-s-1_34.pdb ../src/wc_regex_traits.cpp
+
+vc7/libboost_regex-vc7-s-1_34/wide_posix_api.obj: ../src/wide_posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /c /nologo /ML /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-s-1_34/ -Fdvc7/libboost_regex-vc7-s-1_34.pdb ../src/wide_posix_api.cpp
+
+vc7/libboost_regex-vc7-s-1_34/winstances.obj: ../src/winstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /c /nologo /ML /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-s-1_34/ -Fdvc7/libboost_regex-vc7-s-1_34.pdb ../src/winstances.cpp
+
+libboost_regex-vc7-s-1_34_dir :
+ @if not exist "vc7\libboost_regex-vc7-s-1_34\$(NULL)" mkdir vc7\libboost_regex-vc7-s-1_34
+
+libboost_regex-vc7-s-1_34_clean :
+ del vc7\libboost_regex-vc7-s-1_34\*.obj
+ del vc7\libboost_regex-vc7-s-1_34\*.idb
+ del vc7\libboost_regex-vc7-s-1_34\*.exp
+ del vc7\libboost_regex-vc7-s-1_34\*.pch
+
+./vc7/libboost_regex-vc7-s-1_34.lib : vc7/libboost_regex-vc7-s-1_34/c_regex_traits.obj vc7/libboost_regex-vc7-s-1_34/cpp_regex_traits.obj vc7/libboost_regex-vc7-s-1_34/cregex.obj vc7/libboost_regex-vc7-s-1_34/fileiter.obj vc7/libboost_regex-vc7-s-1_34/icu.obj vc7/libboost_regex-vc7-s-1_34/instances.obj vc7/libboost_regex-vc7-s-1_34/posix_api.obj vc7/libboost_regex-vc7-s-1_34/regex.obj vc7/libboost_regex-vc7-s-1_34/regex_debug.obj vc7/libboost_regex-vc7-s-1_34/regex_raw_buffer.obj vc7/libboost_regex-vc7-s-1_34/regex_traits_defaults.obj vc7/libboost_regex-vc7-s-1_34/static_mutex.obj vc7/libboost_regex-vc7-s-1_34/usinstances.obj vc7/libboost_regex-vc7-s-1_34/w32_regex_traits.obj vc7/libboost_regex-vc7-s-1_34/wc_regex_traits.obj vc7/libboost_regex-vc7-s-1_34/wide_posix_api.obj vc7/libboost_regex-vc7-s-1_34/winstances.obj
+ link -lib /nologo /out:vc7/libboost_regex-vc7-s-1_34.lib $(XSFLAGS) vc7/libboost_regex-vc7-s-1_34/c_regex_traits.obj vc7/libboost_regex-vc7-s-1_34/cpp_regex_traits.obj vc7/libboost_regex-vc7-s-1_34/cregex.obj vc7/libboost_regex-vc7-s-1_34/fileiter.obj vc7/libboost_regex-vc7-s-1_34/icu.obj vc7/libboost_regex-vc7-s-1_34/instances.obj vc7/libboost_regex-vc7-s-1_34/posix_api.obj vc7/libboost_regex-vc7-s-1_34/regex.obj vc7/libboost_regex-vc7-s-1_34/regex_debug.obj vc7/libboost_regex-vc7-s-1_34/regex_raw_buffer.obj vc7/libboost_regex-vc7-s-1_34/regex_traits_defaults.obj vc7/libboost_regex-vc7-s-1_34/static_mutex.obj vc7/libboost_regex-vc7-s-1_34/usinstances.obj vc7/libboost_regex-vc7-s-1_34/w32_regex_traits.obj vc7/libboost_regex-vc7-s-1_34/wc_regex_traits.obj vc7/libboost_regex-vc7-s-1_34/wide_posix_api.obj vc7/libboost_regex-vc7-s-1_34/winstances.obj
+
+########################################################
+#
+# section for libboost_regex-vc7-mt-s-1_34.lib
+#
+########################################################
+vc7/libboost_regex-vc7-mt-s-1_34/c_regex_traits.obj: ../src/c_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-mt-s-1_34/ -Fdvc7/libboost_regex-vc7-mt-s-1_34.pdb ../src/c_regex_traits.cpp
+
+vc7/libboost_regex-vc7-mt-s-1_34/cpp_regex_traits.obj: ../src/cpp_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-mt-s-1_34/ -Fdvc7/libboost_regex-vc7-mt-s-1_34.pdb ../src/cpp_regex_traits.cpp
+
+vc7/libboost_regex-vc7-mt-s-1_34/cregex.obj: ../src/cregex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-mt-s-1_34/ -Fdvc7/libboost_regex-vc7-mt-s-1_34.pdb ../src/cregex.cpp
+
+vc7/libboost_regex-vc7-mt-s-1_34/fileiter.obj: ../src/fileiter.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-mt-s-1_34/ -Fdvc7/libboost_regex-vc7-mt-s-1_34.pdb ../src/fileiter.cpp
+
+vc7/libboost_regex-vc7-mt-s-1_34/icu.obj: ../src/icu.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-mt-s-1_34/ -Fdvc7/libboost_regex-vc7-mt-s-1_34.pdb ../src/icu.cpp
+
+vc7/libboost_regex-vc7-mt-s-1_34/instances.obj: ../src/instances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-mt-s-1_34/ -Fdvc7/libboost_regex-vc7-mt-s-1_34.pdb ../src/instances.cpp
+
+vc7/libboost_regex-vc7-mt-s-1_34/posix_api.obj: ../src/posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-mt-s-1_34/ -Fdvc7/libboost_regex-vc7-mt-s-1_34.pdb ../src/posix_api.cpp
+
+vc7/libboost_regex-vc7-mt-s-1_34/regex.obj: ../src/regex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-mt-s-1_34/ -Fdvc7/libboost_regex-vc7-mt-s-1_34.pdb ../src/regex.cpp
+
+vc7/libboost_regex-vc7-mt-s-1_34/regex_debug.obj: ../src/regex_debug.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-mt-s-1_34/ -Fdvc7/libboost_regex-vc7-mt-s-1_34.pdb ../src/regex_debug.cpp
+
+vc7/libboost_regex-vc7-mt-s-1_34/regex_raw_buffer.obj: ../src/regex_raw_buffer.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-mt-s-1_34/ -Fdvc7/libboost_regex-vc7-mt-s-1_34.pdb ../src/regex_raw_buffer.cpp
+
+vc7/libboost_regex-vc7-mt-s-1_34/regex_traits_defaults.obj: ../src/regex_traits_defaults.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-mt-s-1_34/ -Fdvc7/libboost_regex-vc7-mt-s-1_34.pdb ../src/regex_traits_defaults.cpp
+
+vc7/libboost_regex-vc7-mt-s-1_34/static_mutex.obj: ../src/static_mutex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-mt-s-1_34/ -Fdvc7/libboost_regex-vc7-mt-s-1_34.pdb ../src/static_mutex.cpp
+
+vc7/libboost_regex-vc7-mt-s-1_34/usinstances.obj: ../src/usinstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-mt-s-1_34/ -Fdvc7/libboost_regex-vc7-mt-s-1_34.pdb ../src/usinstances.cpp
+
+vc7/libboost_regex-vc7-mt-s-1_34/w32_regex_traits.obj: ../src/w32_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-mt-s-1_34/ -Fdvc7/libboost_regex-vc7-mt-s-1_34.pdb ../src/w32_regex_traits.cpp
+
+vc7/libboost_regex-vc7-mt-s-1_34/wc_regex_traits.obj: ../src/wc_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-mt-s-1_34/ -Fdvc7/libboost_regex-vc7-mt-s-1_34.pdb ../src/wc_regex_traits.cpp
+
+vc7/libboost_regex-vc7-mt-s-1_34/wide_posix_api.obj: ../src/wide_posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-mt-s-1_34/ -Fdvc7/libboost_regex-vc7-mt-s-1_34.pdb ../src/wide_posix_api.cpp
+
+vc7/libboost_regex-vc7-mt-s-1_34/winstances.obj: ../src/winstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-mt-s-1_34/ -Fdvc7/libboost_regex-vc7-mt-s-1_34.pdb ../src/winstances.cpp
+
+libboost_regex-vc7-mt-s-1_34_dir :
+ @if not exist "vc7\libboost_regex-vc7-mt-s-1_34\$(NULL)" mkdir vc7\libboost_regex-vc7-mt-s-1_34
+
+libboost_regex-vc7-mt-s-1_34_clean :
+ del vc7\libboost_regex-vc7-mt-s-1_34\*.obj
+ del vc7\libboost_regex-vc7-mt-s-1_34\*.idb
+ del vc7\libboost_regex-vc7-mt-s-1_34\*.exp
+ del vc7\libboost_regex-vc7-mt-s-1_34\*.pch
+
+./vc7/libboost_regex-vc7-mt-s-1_34.lib : vc7/libboost_regex-vc7-mt-s-1_34/c_regex_traits.obj vc7/libboost_regex-vc7-mt-s-1_34/cpp_regex_traits.obj vc7/libboost_regex-vc7-mt-s-1_34/cregex.obj vc7/libboost_regex-vc7-mt-s-1_34/fileiter.obj vc7/libboost_regex-vc7-mt-s-1_34/icu.obj vc7/libboost_regex-vc7-mt-s-1_34/instances.obj vc7/libboost_regex-vc7-mt-s-1_34/posix_api.obj vc7/libboost_regex-vc7-mt-s-1_34/regex.obj vc7/libboost_regex-vc7-mt-s-1_34/regex_debug.obj vc7/libboost_regex-vc7-mt-s-1_34/regex_raw_buffer.obj vc7/libboost_regex-vc7-mt-s-1_34/regex_traits_defaults.obj vc7/libboost_regex-vc7-mt-s-1_34/static_mutex.obj vc7/libboost_regex-vc7-mt-s-1_34/usinstances.obj vc7/libboost_regex-vc7-mt-s-1_34/w32_regex_traits.obj vc7/libboost_regex-vc7-mt-s-1_34/wc_regex_traits.obj vc7/libboost_regex-vc7-mt-s-1_34/wide_posix_api.obj vc7/libboost_regex-vc7-mt-s-1_34/winstances.obj
+ link -lib /nologo /out:vc7/libboost_regex-vc7-mt-s-1_34.lib $(XSFLAGS) vc7/libboost_regex-vc7-mt-s-1_34/c_regex_traits.obj vc7/libboost_regex-vc7-mt-s-1_34/cpp_regex_traits.obj vc7/libboost_regex-vc7-mt-s-1_34/cregex.obj vc7/libboost_regex-vc7-mt-s-1_34/fileiter.obj vc7/libboost_regex-vc7-mt-s-1_34/icu.obj vc7/libboost_regex-vc7-mt-s-1_34/instances.obj vc7/libboost_regex-vc7-mt-s-1_34/posix_api.obj vc7/libboost_regex-vc7-mt-s-1_34/regex.obj vc7/libboost_regex-vc7-mt-s-1_34/regex_debug.obj vc7/libboost_regex-vc7-mt-s-1_34/regex_raw_buffer.obj vc7/libboost_regex-vc7-mt-s-1_34/regex_traits_defaults.obj vc7/libboost_regex-vc7-mt-s-1_34/static_mutex.obj vc7/libboost_regex-vc7-mt-s-1_34/usinstances.obj vc7/libboost_regex-vc7-mt-s-1_34/w32_regex_traits.obj vc7/libboost_regex-vc7-mt-s-1_34/wc_regex_traits.obj vc7/libboost_regex-vc7-mt-s-1_34/wide_posix_api.obj vc7/libboost_regex-vc7-mt-s-1_34/winstances.obj
+
+########################################################
+#
+# section for libboost_regex-vc7-sgd-1_34.lib
+#
+########################################################
+vc7/libboost_regex-vc7-sgd-1_34/c_regex_traits.obj: ../src/c_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MLd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-sgd-1_34/ -Fdvc7/libboost_regex-vc7-sgd-1_34.pdb ../src/c_regex_traits.cpp
+
+vc7/libboost_regex-vc7-sgd-1_34/cpp_regex_traits.obj: ../src/cpp_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MLd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-sgd-1_34/ -Fdvc7/libboost_regex-vc7-sgd-1_34.pdb ../src/cpp_regex_traits.cpp
+
+vc7/libboost_regex-vc7-sgd-1_34/cregex.obj: ../src/cregex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MLd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-sgd-1_34/ -Fdvc7/libboost_regex-vc7-sgd-1_34.pdb ../src/cregex.cpp
+
+vc7/libboost_regex-vc7-sgd-1_34/fileiter.obj: ../src/fileiter.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MLd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-sgd-1_34/ -Fdvc7/libboost_regex-vc7-sgd-1_34.pdb ../src/fileiter.cpp
+
+vc7/libboost_regex-vc7-sgd-1_34/icu.obj: ../src/icu.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MLd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-sgd-1_34/ -Fdvc7/libboost_regex-vc7-sgd-1_34.pdb ../src/icu.cpp
+
+vc7/libboost_regex-vc7-sgd-1_34/instances.obj: ../src/instances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MLd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-sgd-1_34/ -Fdvc7/libboost_regex-vc7-sgd-1_34.pdb ../src/instances.cpp
+
+vc7/libboost_regex-vc7-sgd-1_34/posix_api.obj: ../src/posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MLd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-sgd-1_34/ -Fdvc7/libboost_regex-vc7-sgd-1_34.pdb ../src/posix_api.cpp
+
+vc7/libboost_regex-vc7-sgd-1_34/regex.obj: ../src/regex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MLd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-sgd-1_34/ -Fdvc7/libboost_regex-vc7-sgd-1_34.pdb ../src/regex.cpp
+
+vc7/libboost_regex-vc7-sgd-1_34/regex_debug.obj: ../src/regex_debug.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MLd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-sgd-1_34/ -Fdvc7/libboost_regex-vc7-sgd-1_34.pdb ../src/regex_debug.cpp
+
+vc7/libboost_regex-vc7-sgd-1_34/regex_raw_buffer.obj: ../src/regex_raw_buffer.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MLd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-sgd-1_34/ -Fdvc7/libboost_regex-vc7-sgd-1_34.pdb ../src/regex_raw_buffer.cpp
+
+vc7/libboost_regex-vc7-sgd-1_34/regex_traits_defaults.obj: ../src/regex_traits_defaults.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MLd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-sgd-1_34/ -Fdvc7/libboost_regex-vc7-sgd-1_34.pdb ../src/regex_traits_defaults.cpp
+
+vc7/libboost_regex-vc7-sgd-1_34/static_mutex.obj: ../src/static_mutex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MLd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-sgd-1_34/ -Fdvc7/libboost_regex-vc7-sgd-1_34.pdb ../src/static_mutex.cpp
+
+vc7/libboost_regex-vc7-sgd-1_34/usinstances.obj: ../src/usinstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MLd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-sgd-1_34/ -Fdvc7/libboost_regex-vc7-sgd-1_34.pdb ../src/usinstances.cpp
+
+vc7/libboost_regex-vc7-sgd-1_34/w32_regex_traits.obj: ../src/w32_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MLd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-sgd-1_34/ -Fdvc7/libboost_regex-vc7-sgd-1_34.pdb ../src/w32_regex_traits.cpp
+
+vc7/libboost_regex-vc7-sgd-1_34/wc_regex_traits.obj: ../src/wc_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MLd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-sgd-1_34/ -Fdvc7/libboost_regex-vc7-sgd-1_34.pdb ../src/wc_regex_traits.cpp
+
+vc7/libboost_regex-vc7-sgd-1_34/wide_posix_api.obj: ../src/wide_posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MLd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-sgd-1_34/ -Fdvc7/libboost_regex-vc7-sgd-1_34.pdb ../src/wide_posix_api.cpp
+
+vc7/libboost_regex-vc7-sgd-1_34/winstances.obj: ../src/winstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MLd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-sgd-1_34/ -Fdvc7/libboost_regex-vc7-sgd-1_34.pdb ../src/winstances.cpp
+
+libboost_regex-vc7-sgd-1_34_dir :
+ @if not exist "vc7\libboost_regex-vc7-sgd-1_34\$(NULL)" mkdir vc7\libboost_regex-vc7-sgd-1_34
+
+libboost_regex-vc7-sgd-1_34_clean :
+ del vc7\libboost_regex-vc7-sgd-1_34\*.obj
+ del vc7\libboost_regex-vc7-sgd-1_34\*.idb
+ del vc7\libboost_regex-vc7-sgd-1_34\*.exp
+ del vc7\libboost_regex-vc7-sgd-1_34\*.pch
+
+./vc7/libboost_regex-vc7-sgd-1_34.lib : vc7/libboost_regex-vc7-sgd-1_34/c_regex_traits.obj vc7/libboost_regex-vc7-sgd-1_34/cpp_regex_traits.obj vc7/libboost_regex-vc7-sgd-1_34/cregex.obj vc7/libboost_regex-vc7-sgd-1_34/fileiter.obj vc7/libboost_regex-vc7-sgd-1_34/icu.obj vc7/libboost_regex-vc7-sgd-1_34/instances.obj vc7/libboost_regex-vc7-sgd-1_34/posix_api.obj vc7/libboost_regex-vc7-sgd-1_34/regex.obj vc7/libboost_regex-vc7-sgd-1_34/regex_debug.obj vc7/libboost_regex-vc7-sgd-1_34/regex_raw_buffer.obj vc7/libboost_regex-vc7-sgd-1_34/regex_traits_defaults.obj vc7/libboost_regex-vc7-sgd-1_34/static_mutex.obj vc7/libboost_regex-vc7-sgd-1_34/usinstances.obj vc7/libboost_regex-vc7-sgd-1_34/w32_regex_traits.obj vc7/libboost_regex-vc7-sgd-1_34/wc_regex_traits.obj vc7/libboost_regex-vc7-sgd-1_34/wide_posix_api.obj vc7/libboost_regex-vc7-sgd-1_34/winstances.obj
+ link -lib /nologo /out:vc7/libboost_regex-vc7-sgd-1_34.lib $(XSFLAGS) vc7/libboost_regex-vc7-sgd-1_34/c_regex_traits.obj vc7/libboost_regex-vc7-sgd-1_34/cpp_regex_traits.obj vc7/libboost_regex-vc7-sgd-1_34/cregex.obj vc7/libboost_regex-vc7-sgd-1_34/fileiter.obj vc7/libboost_regex-vc7-sgd-1_34/icu.obj vc7/libboost_regex-vc7-sgd-1_34/instances.obj vc7/libboost_regex-vc7-sgd-1_34/posix_api.obj vc7/libboost_regex-vc7-sgd-1_34/regex.obj vc7/libboost_regex-vc7-sgd-1_34/regex_debug.obj vc7/libboost_regex-vc7-sgd-1_34/regex_raw_buffer.obj vc7/libboost_regex-vc7-sgd-1_34/regex_traits_defaults.obj vc7/libboost_regex-vc7-sgd-1_34/static_mutex.obj vc7/libboost_regex-vc7-sgd-1_34/usinstances.obj vc7/libboost_regex-vc7-sgd-1_34/w32_regex_traits.obj vc7/libboost_regex-vc7-sgd-1_34/wc_regex_traits.obj vc7/libboost_regex-vc7-sgd-1_34/wide_posix_api.obj vc7/libboost_regex-vc7-sgd-1_34/winstances.obj
+
+########################################################
+#
+# section for libboost_regex-vc7-mt-sgd-1_34.lib
+#
+########################################################
+vc7/libboost_regex-vc7-mt-sgd-1_34/c_regex_traits.obj: ../src/c_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-mt-sgd-1_34/ -Fdvc7/libboost_regex-vc7-mt-sgd-1_34.pdb ../src/c_regex_traits.cpp
+
+vc7/libboost_regex-vc7-mt-sgd-1_34/cpp_regex_traits.obj: ../src/cpp_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-mt-sgd-1_34/ -Fdvc7/libboost_regex-vc7-mt-sgd-1_34.pdb ../src/cpp_regex_traits.cpp
+
+vc7/libboost_regex-vc7-mt-sgd-1_34/cregex.obj: ../src/cregex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-mt-sgd-1_34/ -Fdvc7/libboost_regex-vc7-mt-sgd-1_34.pdb ../src/cregex.cpp
+
+vc7/libboost_regex-vc7-mt-sgd-1_34/fileiter.obj: ../src/fileiter.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-mt-sgd-1_34/ -Fdvc7/libboost_regex-vc7-mt-sgd-1_34.pdb ../src/fileiter.cpp
+
+vc7/libboost_regex-vc7-mt-sgd-1_34/icu.obj: ../src/icu.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-mt-sgd-1_34/ -Fdvc7/libboost_regex-vc7-mt-sgd-1_34.pdb ../src/icu.cpp
+
+vc7/libboost_regex-vc7-mt-sgd-1_34/instances.obj: ../src/instances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-mt-sgd-1_34/ -Fdvc7/libboost_regex-vc7-mt-sgd-1_34.pdb ../src/instances.cpp
+
+vc7/libboost_regex-vc7-mt-sgd-1_34/posix_api.obj: ../src/posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-mt-sgd-1_34/ -Fdvc7/libboost_regex-vc7-mt-sgd-1_34.pdb ../src/posix_api.cpp
+
+vc7/libboost_regex-vc7-mt-sgd-1_34/regex.obj: ../src/regex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-mt-sgd-1_34/ -Fdvc7/libboost_regex-vc7-mt-sgd-1_34.pdb ../src/regex.cpp
+
+vc7/libboost_regex-vc7-mt-sgd-1_34/regex_debug.obj: ../src/regex_debug.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-mt-sgd-1_34/ -Fdvc7/libboost_regex-vc7-mt-sgd-1_34.pdb ../src/regex_debug.cpp
+
+vc7/libboost_regex-vc7-mt-sgd-1_34/regex_raw_buffer.obj: ../src/regex_raw_buffer.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-mt-sgd-1_34/ -Fdvc7/libboost_regex-vc7-mt-sgd-1_34.pdb ../src/regex_raw_buffer.cpp
+
+vc7/libboost_regex-vc7-mt-sgd-1_34/regex_traits_defaults.obj: ../src/regex_traits_defaults.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-mt-sgd-1_34/ -Fdvc7/libboost_regex-vc7-mt-sgd-1_34.pdb ../src/regex_traits_defaults.cpp
+
+vc7/libboost_regex-vc7-mt-sgd-1_34/static_mutex.obj: ../src/static_mutex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-mt-sgd-1_34/ -Fdvc7/libboost_regex-vc7-mt-sgd-1_34.pdb ../src/static_mutex.cpp
+
+vc7/libboost_regex-vc7-mt-sgd-1_34/usinstances.obj: ../src/usinstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-mt-sgd-1_34/ -Fdvc7/libboost_regex-vc7-mt-sgd-1_34.pdb ../src/usinstances.cpp
+
+vc7/libboost_regex-vc7-mt-sgd-1_34/w32_regex_traits.obj: ../src/w32_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-mt-sgd-1_34/ -Fdvc7/libboost_regex-vc7-mt-sgd-1_34.pdb ../src/w32_regex_traits.cpp
+
+vc7/libboost_regex-vc7-mt-sgd-1_34/wc_regex_traits.obj: ../src/wc_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-mt-sgd-1_34/ -Fdvc7/libboost_regex-vc7-mt-sgd-1_34.pdb ../src/wc_regex_traits.cpp
+
+vc7/libboost_regex-vc7-mt-sgd-1_34/wide_posix_api.obj: ../src/wide_posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-mt-sgd-1_34/ -Fdvc7/libboost_regex-vc7-mt-sgd-1_34.pdb ../src/wide_posix_api.cpp
+
+vc7/libboost_regex-vc7-mt-sgd-1_34/winstances.obj: ../src/winstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-mt-sgd-1_34/ -Fdvc7/libboost_regex-vc7-mt-sgd-1_34.pdb ../src/winstances.cpp
+
+libboost_regex-vc7-mt-sgd-1_34_dir :
+ @if not exist "vc7\libboost_regex-vc7-mt-sgd-1_34\$(NULL)" mkdir vc7\libboost_regex-vc7-mt-sgd-1_34
+
+libboost_regex-vc7-mt-sgd-1_34_clean :
+ del vc7\libboost_regex-vc7-mt-sgd-1_34\*.obj
+ del vc7\libboost_regex-vc7-mt-sgd-1_34\*.idb
+ del vc7\libboost_regex-vc7-mt-sgd-1_34\*.exp
+ del vc7\libboost_regex-vc7-mt-sgd-1_34\*.pch
+
+./vc7/libboost_regex-vc7-mt-sgd-1_34.lib : vc7/libboost_regex-vc7-mt-sgd-1_34/c_regex_traits.obj vc7/libboost_regex-vc7-mt-sgd-1_34/cpp_regex_traits.obj vc7/libboost_regex-vc7-mt-sgd-1_34/cregex.obj vc7/libboost_regex-vc7-mt-sgd-1_34/fileiter.obj vc7/libboost_regex-vc7-mt-sgd-1_34/icu.obj vc7/libboost_regex-vc7-mt-sgd-1_34/instances.obj vc7/libboost_regex-vc7-mt-sgd-1_34/posix_api.obj vc7/libboost_regex-vc7-mt-sgd-1_34/regex.obj vc7/libboost_regex-vc7-mt-sgd-1_34/regex_debug.obj vc7/libboost_regex-vc7-mt-sgd-1_34/regex_raw_buffer.obj vc7/libboost_regex-vc7-mt-sgd-1_34/regex_traits_defaults.obj vc7/libboost_regex-vc7-mt-sgd-1_34/static_mutex.obj vc7/libboost_regex-vc7-mt-sgd-1_34/usinstances.obj vc7/libboost_regex-vc7-mt-sgd-1_34/w32_regex_traits.obj vc7/libboost_regex-vc7-mt-sgd-1_34/wc_regex_traits.obj vc7/libboost_regex-vc7-mt-sgd-1_34/wide_posix_api.obj vc7/libboost_regex-vc7-mt-sgd-1_34/winstances.obj
+ link -lib /nologo /out:vc7/libboost_regex-vc7-mt-sgd-1_34.lib $(XSFLAGS) vc7/libboost_regex-vc7-mt-sgd-1_34/c_regex_traits.obj vc7/libboost_regex-vc7-mt-sgd-1_34/cpp_regex_traits.obj vc7/libboost_regex-vc7-mt-sgd-1_34/cregex.obj vc7/libboost_regex-vc7-mt-sgd-1_34/fileiter.obj vc7/libboost_regex-vc7-mt-sgd-1_34/icu.obj vc7/libboost_regex-vc7-mt-sgd-1_34/instances.obj vc7/libboost_regex-vc7-mt-sgd-1_34/posix_api.obj vc7/libboost_regex-vc7-mt-sgd-1_34/regex.obj vc7/libboost_regex-vc7-mt-sgd-1_34/regex_debug.obj vc7/libboost_regex-vc7-mt-sgd-1_34/regex_raw_buffer.obj vc7/libboost_regex-vc7-mt-sgd-1_34/regex_traits_defaults.obj vc7/libboost_regex-vc7-mt-sgd-1_34/static_mutex.obj vc7/libboost_regex-vc7-mt-sgd-1_34/usinstances.obj vc7/libboost_regex-vc7-mt-sgd-1_34/w32_regex_traits.obj vc7/libboost_regex-vc7-mt-sgd-1_34/wc_regex_traits.obj vc7/libboost_regex-vc7-mt-sgd-1_34/wide_posix_api.obj vc7/libboost_regex-vc7-mt-sgd-1_34/winstances.obj
+
+########################################################
+#
+# section for boost_regex-vc7-mt-gd-1_34.lib
+#
+########################################################
+vc7/boost_regex-vc7-mt-gd-1_34/c_regex_traits.obj: ../src/c_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /D_DEBUG /DBOOST_REGEX_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/boost_regex-vc7-mt-gd-1_34/ -Fdvc7/boost_regex-vc7-mt-gd-1_34.pdb ../src/c_regex_traits.cpp
+
+vc7/boost_regex-vc7-mt-gd-1_34/cpp_regex_traits.obj: ../src/cpp_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /D_DEBUG /DBOOST_REGEX_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/boost_regex-vc7-mt-gd-1_34/ -Fdvc7/boost_regex-vc7-mt-gd-1_34.pdb ../src/cpp_regex_traits.cpp
+
+vc7/boost_regex-vc7-mt-gd-1_34/cregex.obj: ../src/cregex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /D_DEBUG /DBOOST_REGEX_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/boost_regex-vc7-mt-gd-1_34/ -Fdvc7/boost_regex-vc7-mt-gd-1_34.pdb ../src/cregex.cpp
+
+vc7/boost_regex-vc7-mt-gd-1_34/fileiter.obj: ../src/fileiter.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /D_DEBUG /DBOOST_REGEX_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/boost_regex-vc7-mt-gd-1_34/ -Fdvc7/boost_regex-vc7-mt-gd-1_34.pdb ../src/fileiter.cpp
+
+vc7/boost_regex-vc7-mt-gd-1_34/icu.obj: ../src/icu.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /D_DEBUG /DBOOST_REGEX_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/boost_regex-vc7-mt-gd-1_34/ -Fdvc7/boost_regex-vc7-mt-gd-1_34.pdb ../src/icu.cpp
+
+vc7/boost_regex-vc7-mt-gd-1_34/instances.obj: ../src/instances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /D_DEBUG /DBOOST_REGEX_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/boost_regex-vc7-mt-gd-1_34/ -Fdvc7/boost_regex-vc7-mt-gd-1_34.pdb ../src/instances.cpp
+
+vc7/boost_regex-vc7-mt-gd-1_34/posix_api.obj: ../src/posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /D_DEBUG /DBOOST_REGEX_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/boost_regex-vc7-mt-gd-1_34/ -Fdvc7/boost_regex-vc7-mt-gd-1_34.pdb ../src/posix_api.cpp
+
+vc7/boost_regex-vc7-mt-gd-1_34/regex.obj: ../src/regex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /D_DEBUG /DBOOST_REGEX_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/boost_regex-vc7-mt-gd-1_34/ -Fdvc7/boost_regex-vc7-mt-gd-1_34.pdb ../src/regex.cpp
+
+vc7/boost_regex-vc7-mt-gd-1_34/regex_debug.obj: ../src/regex_debug.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /D_DEBUG /DBOOST_REGEX_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/boost_regex-vc7-mt-gd-1_34/ -Fdvc7/boost_regex-vc7-mt-gd-1_34.pdb ../src/regex_debug.cpp
+
+vc7/boost_regex-vc7-mt-gd-1_34/regex_raw_buffer.obj: ../src/regex_raw_buffer.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /D_DEBUG /DBOOST_REGEX_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/boost_regex-vc7-mt-gd-1_34/ -Fdvc7/boost_regex-vc7-mt-gd-1_34.pdb ../src/regex_raw_buffer.cpp
+
+vc7/boost_regex-vc7-mt-gd-1_34/regex_traits_defaults.obj: ../src/regex_traits_defaults.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /D_DEBUG /DBOOST_REGEX_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/boost_regex-vc7-mt-gd-1_34/ -Fdvc7/boost_regex-vc7-mt-gd-1_34.pdb ../src/regex_traits_defaults.cpp
+
+vc7/boost_regex-vc7-mt-gd-1_34/static_mutex.obj: ../src/static_mutex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /D_DEBUG /DBOOST_REGEX_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/boost_regex-vc7-mt-gd-1_34/ -Fdvc7/boost_regex-vc7-mt-gd-1_34.pdb ../src/static_mutex.cpp
+
+vc7/boost_regex-vc7-mt-gd-1_34/usinstances.obj: ../src/usinstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /D_DEBUG /DBOOST_REGEX_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/boost_regex-vc7-mt-gd-1_34/ -Fdvc7/boost_regex-vc7-mt-gd-1_34.pdb ../src/usinstances.cpp
+
+vc7/boost_regex-vc7-mt-gd-1_34/w32_regex_traits.obj: ../src/w32_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /D_DEBUG /DBOOST_REGEX_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/boost_regex-vc7-mt-gd-1_34/ -Fdvc7/boost_regex-vc7-mt-gd-1_34.pdb ../src/w32_regex_traits.cpp
+
+vc7/boost_regex-vc7-mt-gd-1_34/wc_regex_traits.obj: ../src/wc_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /D_DEBUG /DBOOST_REGEX_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/boost_regex-vc7-mt-gd-1_34/ -Fdvc7/boost_regex-vc7-mt-gd-1_34.pdb ../src/wc_regex_traits.cpp
+
+vc7/boost_regex-vc7-mt-gd-1_34/wide_posix_api.obj: ../src/wide_posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /D_DEBUG /DBOOST_REGEX_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/boost_regex-vc7-mt-gd-1_34/ -Fdvc7/boost_regex-vc7-mt-gd-1_34.pdb ../src/wide_posix_api.cpp
+
+vc7/boost_regex-vc7-mt-gd-1_34/winstances.obj: ../src/winstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /D_DEBUG /DBOOST_REGEX_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/boost_regex-vc7-mt-gd-1_34/ -Fdvc7/boost_regex-vc7-mt-gd-1_34.pdb ../src/winstances.cpp
+
+boost_regex-vc7-mt-gd-1_34_dir :
+ @if not exist "vc7\boost_regex-vc7-mt-gd-1_34\$(NULL)" mkdir vc7\boost_regex-vc7-mt-gd-1_34
+
+boost_regex-vc7-mt-gd-1_34_clean :
+ del vc7\boost_regex-vc7-mt-gd-1_34\*.obj
+ del vc7\boost_regex-vc7-mt-gd-1_34\*.idb
+ del vc7\boost_regex-vc7-mt-gd-1_34\*.exp
+ del vc7\boost_regex-vc7-mt-gd-1_34\*.pch
+
+./vc7/boost_regex-vc7-mt-gd-1_34.lib : vc7/boost_regex-vc7-mt-gd-1_34/c_regex_traits.obj vc7/boost_regex-vc7-mt-gd-1_34/cpp_regex_traits.obj vc7/boost_regex-vc7-mt-gd-1_34/cregex.obj vc7/boost_regex-vc7-mt-gd-1_34/fileiter.obj vc7/boost_regex-vc7-mt-gd-1_34/icu.obj vc7/boost_regex-vc7-mt-gd-1_34/instances.obj vc7/boost_regex-vc7-mt-gd-1_34/posix_api.obj vc7/boost_regex-vc7-mt-gd-1_34/regex.obj vc7/boost_regex-vc7-mt-gd-1_34/regex_debug.obj vc7/boost_regex-vc7-mt-gd-1_34/regex_raw_buffer.obj vc7/boost_regex-vc7-mt-gd-1_34/regex_traits_defaults.obj vc7/boost_regex-vc7-mt-gd-1_34/static_mutex.obj vc7/boost_regex-vc7-mt-gd-1_34/usinstances.obj vc7/boost_regex-vc7-mt-gd-1_34/w32_regex_traits.obj vc7/boost_regex-vc7-mt-gd-1_34/wc_regex_traits.obj vc7/boost_regex-vc7-mt-gd-1_34/wide_posix_api.obj vc7/boost_regex-vc7-mt-gd-1_34/winstances.obj
+ link kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:yes /pdb:"vc7/boost_regex-vc7-mt-gd-1_34.pdb" /debug /machine:I386 /out:"vc7/boost_regex-vc7-mt-gd-1_34.dll" /implib:"vc7/boost_regex-vc7-mt-gd-1_34.lib" /LIBPATH:"$(STLPORT_PATH)\lib" $(XLFLAGS) $(ICU_LINK_OPTS) vc7/boost_regex-vc7-mt-gd-1_34/c_regex_traits.obj vc7/boost_regex-vc7-mt-gd-1_34/cpp_regex_traits.obj vc7/boost_regex-vc7-mt-gd-1_34/cregex.obj vc7/boost_regex-vc7-mt-gd-1_34/fileiter.obj vc7/boost_regex-vc7-mt-gd-1_34/icu.obj vc7/boost_regex-vc7-mt-gd-1_34/instances.obj vc7/boost_regex-vc7-mt-gd-1_34/posix_api.obj vc7/boost_regex-vc7-mt-gd-1_34/regex.obj vc7/boost_regex-vc7-mt-gd-1_34/regex_debug.obj vc7/boost_regex-vc7-mt-gd-1_34/regex_raw_buffer.obj vc7/boost_regex-vc7-mt-gd-1_34/regex_traits_defaults.obj vc7/boost_regex-vc7-mt-gd-1_34/static_mutex.obj vc7/boost_regex-vc7-mt-gd-1_34/usinstances.obj vc7/boost_regex-vc7-mt-gd-
1_34/w32_regex_traits.obj vc7/boost_regex-vc7-mt-gd-1_34/wc_regex_traits.obj vc7/boost_regex-vc7-mt-gd-1_34/wide_posix_api.obj vc7/boost_regex-vc7-mt-gd-1_34/winstances.obj
+
+########################################################
+#
+# section for boost_regex-vc7-mt-1_34.lib
+#
+########################################################
+vc7/boost_regex-vc7-mt-1_34/c_regex_traits.obj: ../src/c_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/boost_regex-vc7-mt-1_34/ -Fdvc7/boost_regex-vc7-mt-1_34.pdb ../src/c_regex_traits.cpp
+
+vc7/boost_regex-vc7-mt-1_34/cpp_regex_traits.obj: ../src/cpp_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/boost_regex-vc7-mt-1_34/ -Fdvc7/boost_regex-vc7-mt-1_34.pdb ../src/cpp_regex_traits.cpp
+
+vc7/boost_regex-vc7-mt-1_34/cregex.obj: ../src/cregex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/boost_regex-vc7-mt-1_34/ -Fdvc7/boost_regex-vc7-mt-1_34.pdb ../src/cregex.cpp
+
+vc7/boost_regex-vc7-mt-1_34/fileiter.obj: ../src/fileiter.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/boost_regex-vc7-mt-1_34/ -Fdvc7/boost_regex-vc7-mt-1_34.pdb ../src/fileiter.cpp
+
+vc7/boost_regex-vc7-mt-1_34/icu.obj: ../src/icu.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/boost_regex-vc7-mt-1_34/ -Fdvc7/boost_regex-vc7-mt-1_34.pdb ../src/icu.cpp
+
+vc7/boost_regex-vc7-mt-1_34/instances.obj: ../src/instances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/boost_regex-vc7-mt-1_34/ -Fdvc7/boost_regex-vc7-mt-1_34.pdb ../src/instances.cpp
+
+vc7/boost_regex-vc7-mt-1_34/posix_api.obj: ../src/posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/boost_regex-vc7-mt-1_34/ -Fdvc7/boost_regex-vc7-mt-1_34.pdb ../src/posix_api.cpp
+
+vc7/boost_regex-vc7-mt-1_34/regex.obj: ../src/regex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/boost_regex-vc7-mt-1_34/ -Fdvc7/boost_regex-vc7-mt-1_34.pdb ../src/regex.cpp
+
+vc7/boost_regex-vc7-mt-1_34/regex_debug.obj: ../src/regex_debug.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/boost_regex-vc7-mt-1_34/ -Fdvc7/boost_regex-vc7-mt-1_34.pdb ../src/regex_debug.cpp
+
+vc7/boost_regex-vc7-mt-1_34/regex_raw_buffer.obj: ../src/regex_raw_buffer.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/boost_regex-vc7-mt-1_34/ -Fdvc7/boost_regex-vc7-mt-1_34.pdb ../src/regex_raw_buffer.cpp
+
+vc7/boost_regex-vc7-mt-1_34/regex_traits_defaults.obj: ../src/regex_traits_defaults.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/boost_regex-vc7-mt-1_34/ -Fdvc7/boost_regex-vc7-mt-1_34.pdb ../src/regex_traits_defaults.cpp
+
+vc7/boost_regex-vc7-mt-1_34/static_mutex.obj: ../src/static_mutex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/boost_regex-vc7-mt-1_34/ -Fdvc7/boost_regex-vc7-mt-1_34.pdb ../src/static_mutex.cpp
+
+vc7/boost_regex-vc7-mt-1_34/usinstances.obj: ../src/usinstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/boost_regex-vc7-mt-1_34/ -Fdvc7/boost_regex-vc7-mt-1_34.pdb ../src/usinstances.cpp
+
+vc7/boost_regex-vc7-mt-1_34/w32_regex_traits.obj: ../src/w32_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/boost_regex-vc7-mt-1_34/ -Fdvc7/boost_regex-vc7-mt-1_34.pdb ../src/w32_regex_traits.cpp
+
+vc7/boost_regex-vc7-mt-1_34/wc_regex_traits.obj: ../src/wc_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/boost_regex-vc7-mt-1_34/ -Fdvc7/boost_regex-vc7-mt-1_34.pdb ../src/wc_regex_traits.cpp
+
+vc7/boost_regex-vc7-mt-1_34/wide_posix_api.obj: ../src/wide_posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/boost_regex-vc7-mt-1_34/ -Fdvc7/boost_regex-vc7-mt-1_34.pdb ../src/wide_posix_api.cpp
+
+vc7/boost_regex-vc7-mt-1_34/winstances.obj: ../src/winstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/boost_regex-vc7-mt-1_34/ -Fdvc7/boost_regex-vc7-mt-1_34.pdb ../src/winstances.cpp
+
+boost_regex-vc7-mt-1_34_dir :
+ @if not exist "vc7\boost_regex-vc7-mt-1_34\$(NULL)" mkdir vc7\boost_regex-vc7-mt-1_34
+
+boost_regex-vc7-mt-1_34_clean :
+ del vc7\boost_regex-vc7-mt-1_34\*.obj
+ del vc7\boost_regex-vc7-mt-1_34\*.idb
+ del vc7\boost_regex-vc7-mt-1_34\*.exp
+ del vc7\boost_regex-vc7-mt-1_34\*.pch
+
+./vc7/boost_regex-vc7-mt-1_34.lib : vc7/boost_regex-vc7-mt-1_34/c_regex_traits.obj vc7/boost_regex-vc7-mt-1_34/cpp_regex_traits.obj vc7/boost_regex-vc7-mt-1_34/cregex.obj vc7/boost_regex-vc7-mt-1_34/fileiter.obj vc7/boost_regex-vc7-mt-1_34/icu.obj vc7/boost_regex-vc7-mt-1_34/instances.obj vc7/boost_regex-vc7-mt-1_34/posix_api.obj vc7/boost_regex-vc7-mt-1_34/regex.obj vc7/boost_regex-vc7-mt-1_34/regex_debug.obj vc7/boost_regex-vc7-mt-1_34/regex_raw_buffer.obj vc7/boost_regex-vc7-mt-1_34/regex_traits_defaults.obj vc7/boost_regex-vc7-mt-1_34/static_mutex.obj vc7/boost_regex-vc7-mt-1_34/usinstances.obj vc7/boost_regex-vc7-mt-1_34/w32_regex_traits.obj vc7/boost_regex-vc7-mt-1_34/wc_regex_traits.obj vc7/boost_regex-vc7-mt-1_34/wide_posix_api.obj vc7/boost_regex-vc7-mt-1_34/winstances.obj
+ link kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:yes /pdb:"vc7/boost_regex-vc7-mt-1_34.pdb" /debug /machine:I386 /out:"vc7/boost_regex-vc7-mt-1_34.dll" /implib:"vc7/boost_regex-vc7-mt-1_34.lib" /LIBPATH:"$(STLPORT_PATH)\lib" $(XLFLAGS) $(ICU_LINK_OPTS) vc7/boost_regex-vc7-mt-1_34/c_regex_traits.obj vc7/boost_regex-vc7-mt-1_34/cpp_regex_traits.obj vc7/boost_regex-vc7-mt-1_34/cregex.obj vc7/boost_regex-vc7-mt-1_34/fileiter.obj vc7/boost_regex-vc7-mt-1_34/icu.obj vc7/boost_regex-vc7-mt-1_34/instances.obj vc7/boost_regex-vc7-mt-1_34/posix_api.obj vc7/boost_regex-vc7-mt-1_34/regex.obj vc7/boost_regex-vc7-mt-1_34/regex_debug.obj vc7/boost_regex-vc7-mt-1_34/regex_raw_buffer.obj vc7/boost_regex-vc7-mt-1_34/regex_traits_defaults.obj vc7/boost_regex-vc7-mt-1_34/static_mutex.obj vc7/boost_regex-vc7-mt-1_34/usinstances.obj vc7/boost_regex-vc7-mt-1_34/w32_regex_traits.obj vc7/boost_regex-vc7-mt-1_
34/wc_regex_traits.obj vc7/boost_regex-vc7-mt-1_34/wide_posix_api.obj vc7/boost_regex-vc7-mt-1_34/winstances.obj
+
+########################################################
+#
+# section for libboost_regex-vc7-mt-1_34.lib
+#
+########################################################
+vc7/libboost_regex-vc7-mt-1_34/c_regex_traits.obj: ../src/c_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-mt-1_34/ -Fdvc7/libboost_regex-vc7-mt-1_34.pdb ../src/c_regex_traits.cpp
+
+vc7/libboost_regex-vc7-mt-1_34/cpp_regex_traits.obj: ../src/cpp_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-mt-1_34/ -Fdvc7/libboost_regex-vc7-mt-1_34.pdb ../src/cpp_regex_traits.cpp
+
+vc7/libboost_regex-vc7-mt-1_34/cregex.obj: ../src/cregex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-mt-1_34/ -Fdvc7/libboost_regex-vc7-mt-1_34.pdb ../src/cregex.cpp
+
+vc7/libboost_regex-vc7-mt-1_34/fileiter.obj: ../src/fileiter.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-mt-1_34/ -Fdvc7/libboost_regex-vc7-mt-1_34.pdb ../src/fileiter.cpp
+
+vc7/libboost_regex-vc7-mt-1_34/icu.obj: ../src/icu.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-mt-1_34/ -Fdvc7/libboost_regex-vc7-mt-1_34.pdb ../src/icu.cpp
+
+vc7/libboost_regex-vc7-mt-1_34/instances.obj: ../src/instances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-mt-1_34/ -Fdvc7/libboost_regex-vc7-mt-1_34.pdb ../src/instances.cpp
+
+vc7/libboost_regex-vc7-mt-1_34/posix_api.obj: ../src/posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-mt-1_34/ -Fdvc7/libboost_regex-vc7-mt-1_34.pdb ../src/posix_api.cpp
+
+vc7/libboost_regex-vc7-mt-1_34/regex.obj: ../src/regex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-mt-1_34/ -Fdvc7/libboost_regex-vc7-mt-1_34.pdb ../src/regex.cpp
+
+vc7/libboost_regex-vc7-mt-1_34/regex_debug.obj: ../src/regex_debug.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-mt-1_34/ -Fdvc7/libboost_regex-vc7-mt-1_34.pdb ../src/regex_debug.cpp
+
+vc7/libboost_regex-vc7-mt-1_34/regex_raw_buffer.obj: ../src/regex_raw_buffer.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-mt-1_34/ -Fdvc7/libboost_regex-vc7-mt-1_34.pdb ../src/regex_raw_buffer.cpp
+
+vc7/libboost_regex-vc7-mt-1_34/regex_traits_defaults.obj: ../src/regex_traits_defaults.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-mt-1_34/ -Fdvc7/libboost_regex-vc7-mt-1_34.pdb ../src/regex_traits_defaults.cpp
+
+vc7/libboost_regex-vc7-mt-1_34/static_mutex.obj: ../src/static_mutex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-mt-1_34/ -Fdvc7/libboost_regex-vc7-mt-1_34.pdb ../src/static_mutex.cpp
+
+vc7/libboost_regex-vc7-mt-1_34/usinstances.obj: ../src/usinstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-mt-1_34/ -Fdvc7/libboost_regex-vc7-mt-1_34.pdb ../src/usinstances.cpp
+
+vc7/libboost_regex-vc7-mt-1_34/w32_regex_traits.obj: ../src/w32_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-mt-1_34/ -Fdvc7/libboost_regex-vc7-mt-1_34.pdb ../src/w32_regex_traits.cpp
+
+vc7/libboost_regex-vc7-mt-1_34/wc_regex_traits.obj: ../src/wc_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-mt-1_34/ -Fdvc7/libboost_regex-vc7-mt-1_34.pdb ../src/wc_regex_traits.cpp
+
+vc7/libboost_regex-vc7-mt-1_34/wide_posix_api.obj: ../src/wide_posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-mt-1_34/ -Fdvc7/libboost_regex-vc7-mt-1_34.pdb ../src/wide_posix_api.cpp
+
+vc7/libboost_regex-vc7-mt-1_34/winstances.obj: ../src/winstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-mt-1_34/ -Fdvc7/libboost_regex-vc7-mt-1_34.pdb ../src/winstances.cpp
+
+libboost_regex-vc7-mt-1_34_dir :
+ @if not exist "vc7\libboost_regex-vc7-mt-1_34\$(NULL)" mkdir vc7\libboost_regex-vc7-mt-1_34
+
+libboost_regex-vc7-mt-1_34_clean :
+ del vc7\libboost_regex-vc7-mt-1_34\*.obj
+ del vc7\libboost_regex-vc7-mt-1_34\*.idb
+ del vc7\libboost_regex-vc7-mt-1_34\*.exp
+ del vc7\libboost_regex-vc7-mt-1_34\*.pch
+
+./vc7/libboost_regex-vc7-mt-1_34.lib : vc7/libboost_regex-vc7-mt-1_34/c_regex_traits.obj vc7/libboost_regex-vc7-mt-1_34/cpp_regex_traits.obj vc7/libboost_regex-vc7-mt-1_34/cregex.obj vc7/libboost_regex-vc7-mt-1_34/fileiter.obj vc7/libboost_regex-vc7-mt-1_34/icu.obj vc7/libboost_regex-vc7-mt-1_34/instances.obj vc7/libboost_regex-vc7-mt-1_34/posix_api.obj vc7/libboost_regex-vc7-mt-1_34/regex.obj vc7/libboost_regex-vc7-mt-1_34/regex_debug.obj vc7/libboost_regex-vc7-mt-1_34/regex_raw_buffer.obj vc7/libboost_regex-vc7-mt-1_34/regex_traits_defaults.obj vc7/libboost_regex-vc7-mt-1_34/static_mutex.obj vc7/libboost_regex-vc7-mt-1_34/usinstances.obj vc7/libboost_regex-vc7-mt-1_34/w32_regex_traits.obj vc7/libboost_regex-vc7-mt-1_34/wc_regex_traits.obj vc7/libboost_regex-vc7-mt-1_34/wide_posix_api.obj vc7/libboost_regex-vc7-mt-1_34/winstances.obj
+ link -lib /nologo /out:vc7/libboost_regex-vc7-mt-1_34.lib $(XSFLAGS) vc7/libboost_regex-vc7-mt-1_34/c_regex_traits.obj vc7/libboost_regex-vc7-mt-1_34/cpp_regex_traits.obj vc7/libboost_regex-vc7-mt-1_34/cregex.obj vc7/libboost_regex-vc7-mt-1_34/fileiter.obj vc7/libboost_regex-vc7-mt-1_34/icu.obj vc7/libboost_regex-vc7-mt-1_34/instances.obj vc7/libboost_regex-vc7-mt-1_34/posix_api.obj vc7/libboost_regex-vc7-mt-1_34/regex.obj vc7/libboost_regex-vc7-mt-1_34/regex_debug.obj vc7/libboost_regex-vc7-mt-1_34/regex_raw_buffer.obj vc7/libboost_regex-vc7-mt-1_34/regex_traits_defaults.obj vc7/libboost_regex-vc7-mt-1_34/static_mutex.obj vc7/libboost_regex-vc7-mt-1_34/usinstances.obj vc7/libboost_regex-vc7-mt-1_34/w32_regex_traits.obj vc7/libboost_regex-vc7-mt-1_34/wc_regex_traits.obj vc7/libboost_regex-vc7-mt-1_34/wide_posix_api.obj vc7/libboost_regex-vc7-mt-1_34/winstances.obj
+
+########################################################
+#
+# section for libboost_regex-vc7-mt-gd-1_34.lib
+#
+########################################################
+vc7/libboost_regex-vc7-mt-gd-1_34/c_regex_traits.obj: ../src/c_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-mt-gd-1_34/ -Fdvc7/libboost_regex-vc7-mt-gd-1_34.pdb ../src/c_regex_traits.cpp
+
+vc7/libboost_regex-vc7-mt-gd-1_34/cpp_regex_traits.obj: ../src/cpp_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-mt-gd-1_34/ -Fdvc7/libboost_regex-vc7-mt-gd-1_34.pdb ../src/cpp_regex_traits.cpp
+
+vc7/libboost_regex-vc7-mt-gd-1_34/cregex.obj: ../src/cregex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-mt-gd-1_34/ -Fdvc7/libboost_regex-vc7-mt-gd-1_34.pdb ../src/cregex.cpp
+
+vc7/libboost_regex-vc7-mt-gd-1_34/fileiter.obj: ../src/fileiter.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-mt-gd-1_34/ -Fdvc7/libboost_regex-vc7-mt-gd-1_34.pdb ../src/fileiter.cpp
+
+vc7/libboost_regex-vc7-mt-gd-1_34/icu.obj: ../src/icu.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-mt-gd-1_34/ -Fdvc7/libboost_regex-vc7-mt-gd-1_34.pdb ../src/icu.cpp
+
+vc7/libboost_regex-vc7-mt-gd-1_34/instances.obj: ../src/instances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-mt-gd-1_34/ -Fdvc7/libboost_regex-vc7-mt-gd-1_34.pdb ../src/instances.cpp
+
+vc7/libboost_regex-vc7-mt-gd-1_34/posix_api.obj: ../src/posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-mt-gd-1_34/ -Fdvc7/libboost_regex-vc7-mt-gd-1_34.pdb ../src/posix_api.cpp
+
+vc7/libboost_regex-vc7-mt-gd-1_34/regex.obj: ../src/regex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-mt-gd-1_34/ -Fdvc7/libboost_regex-vc7-mt-gd-1_34.pdb ../src/regex.cpp
+
+vc7/libboost_regex-vc7-mt-gd-1_34/regex_debug.obj: ../src/regex_debug.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-mt-gd-1_34/ -Fdvc7/libboost_regex-vc7-mt-gd-1_34.pdb ../src/regex_debug.cpp
+
+vc7/libboost_regex-vc7-mt-gd-1_34/regex_raw_buffer.obj: ../src/regex_raw_buffer.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-mt-gd-1_34/ -Fdvc7/libboost_regex-vc7-mt-gd-1_34.pdb ../src/regex_raw_buffer.cpp
+
+vc7/libboost_regex-vc7-mt-gd-1_34/regex_traits_defaults.obj: ../src/regex_traits_defaults.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-mt-gd-1_34/ -Fdvc7/libboost_regex-vc7-mt-gd-1_34.pdb ../src/regex_traits_defaults.cpp
+
+vc7/libboost_regex-vc7-mt-gd-1_34/static_mutex.obj: ../src/static_mutex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-mt-gd-1_34/ -Fdvc7/libboost_regex-vc7-mt-gd-1_34.pdb ../src/static_mutex.cpp
+
+vc7/libboost_regex-vc7-mt-gd-1_34/usinstances.obj: ../src/usinstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-mt-gd-1_34/ -Fdvc7/libboost_regex-vc7-mt-gd-1_34.pdb ../src/usinstances.cpp
+
+vc7/libboost_regex-vc7-mt-gd-1_34/w32_regex_traits.obj: ../src/w32_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-mt-gd-1_34/ -Fdvc7/libboost_regex-vc7-mt-gd-1_34.pdb ../src/w32_regex_traits.cpp
+
+vc7/libboost_regex-vc7-mt-gd-1_34/wc_regex_traits.obj: ../src/wc_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-mt-gd-1_34/ -Fdvc7/libboost_regex-vc7-mt-gd-1_34.pdb ../src/wc_regex_traits.cpp
+
+vc7/libboost_regex-vc7-mt-gd-1_34/wide_posix_api.obj: ../src/wide_posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-mt-gd-1_34/ -Fdvc7/libboost_regex-vc7-mt-gd-1_34.pdb ../src/wide_posix_api.cpp
+
+vc7/libboost_regex-vc7-mt-gd-1_34/winstances.obj: ../src/winstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc7/libboost_regex-vc7-mt-gd-1_34/ -Fdvc7/libboost_regex-vc7-mt-gd-1_34.pdb ../src/winstances.cpp
+
+libboost_regex-vc7-mt-gd-1_34_dir :
+ @if not exist "vc7\libboost_regex-vc7-mt-gd-1_34\$(NULL)" mkdir vc7\libboost_regex-vc7-mt-gd-1_34
+
+libboost_regex-vc7-mt-gd-1_34_clean :
+ del vc7\libboost_regex-vc7-mt-gd-1_34\*.obj
+ del vc7\libboost_regex-vc7-mt-gd-1_34\*.idb
+ del vc7\libboost_regex-vc7-mt-gd-1_34\*.exp
+ del vc7\libboost_regex-vc7-mt-gd-1_34\*.pch
+
+./vc7/libboost_regex-vc7-mt-gd-1_34.lib : vc7/libboost_regex-vc7-mt-gd-1_34/c_regex_traits.obj vc7/libboost_regex-vc7-mt-gd-1_34/cpp_regex_traits.obj vc7/libboost_regex-vc7-mt-gd-1_34/cregex.obj vc7/libboost_regex-vc7-mt-gd-1_34/fileiter.obj vc7/libboost_regex-vc7-mt-gd-1_34/icu.obj vc7/libboost_regex-vc7-mt-gd-1_34/instances.obj vc7/libboost_regex-vc7-mt-gd-1_34/posix_api.obj vc7/libboost_regex-vc7-mt-gd-1_34/regex.obj vc7/libboost_regex-vc7-mt-gd-1_34/regex_debug.obj vc7/libboost_regex-vc7-mt-gd-1_34/regex_raw_buffer.obj vc7/libboost_regex-vc7-mt-gd-1_34/regex_traits_defaults.obj vc7/libboost_regex-vc7-mt-gd-1_34/static_mutex.obj vc7/libboost_regex-vc7-mt-gd-1_34/usinstances.obj vc7/libboost_regex-vc7-mt-gd-1_34/w32_regex_traits.obj vc7/libboost_regex-vc7-mt-gd-1_34/wc_regex_traits.obj vc7/libboost_regex-vc7-mt-gd-1_34/wide_posix_api.obj vc7/libboost_regex-vc7-mt-gd-1_34/winstances.obj
+ link -lib /nologo /out:vc7/libboost_regex-vc7-mt-gd-1_34.lib $(XSFLAGS) vc7/libboost_regex-vc7-mt-gd-1_34/c_regex_traits.obj vc7/libboost_regex-vc7-mt-gd-1_34/cpp_regex_traits.obj vc7/libboost_regex-vc7-mt-gd-1_34/cregex.obj vc7/libboost_regex-vc7-mt-gd-1_34/fileiter.obj vc7/libboost_regex-vc7-mt-gd-1_34/icu.obj vc7/libboost_regex-vc7-mt-gd-1_34/instances.obj vc7/libboost_regex-vc7-mt-gd-1_34/posix_api.obj vc7/libboost_regex-vc7-mt-gd-1_34/regex.obj vc7/libboost_regex-vc7-mt-gd-1_34/regex_debug.obj vc7/libboost_regex-vc7-mt-gd-1_34/regex_raw_buffer.obj vc7/libboost_regex-vc7-mt-gd-1_34/regex_traits_defaults.obj vc7/libboost_regex-vc7-mt-gd-1_34/static_mutex.obj vc7/libboost_regex-vc7-mt-gd-1_34/usinstances.obj vc7/libboost_regex-vc7-mt-gd-1_34/w32_regex_traits.obj vc7/libboost_regex-vc7-mt-gd-1_34/wc_regex_traits.obj vc7/libboost_regex-vc7-mt-gd-1_34/wide_posix_api.obj vc7/libboost_regex-vc7-mt-gd-1_34/winstances.obj
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/build/vc71-stlport.mak
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/build/vc71-stlport.mak 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,496 @@
+# copyright John Maddock 2006
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt.
+#
+# auto generated makefile for VC6+STLPort
+#
+# usage:
+# make
+# brings libraries up to date
+# make install
+# brings libraries up to date and copies binaries to your VC6 /lib and /bin directories (recomended)
+#
+
+#
+# ICU setup:
+#
+ICU_PATH=
+#
+# Add additional compiler options here:
+#
+CXXFLAGS=
+#
+# Add additional include directories here:
+#
+INCLUDES=
+#
+# add additional linker flags here:
+#
+XLFLAGS=
+#
+# add additional static-library creation flags here:
+#
+XSFLAGS=
+
+!IF "$(OS)" == "Windows_NT"
+NULL=
+!ELSE
+NULL=nul
+!ENDIF
+
+!IF "$(MSVCDIR)" == ""
+!ERROR Variable MSVCDIR not set.
+!ENDIF
+
+!IF "$(STLPORT_PATH)" == ""
+!ERROR Variable STLPORT_PATH not set.
+!ENDIF
+
+!IF "$(ICU_PATH)" == ""
+ICU_COMPILE_OPTS=
+ICU_LINK_OPTS=
+!MESSAGE Building Boost.Regex without ICU / Unicode support:
+!MESSAGE Hint: set ICU_PATH on the nmake command line to point
+!MESSAGE to your ICU installation if you have one.
+!ELSE
+ICU_COMPILE_OPTS= -DBOOST_HAS_ICU=1 -I"$(ICU_PATH)\include"
+ICU_LINK_OPTS= /LIBPATH:"$(ICU_PATH)\lib" icuin.lib icuuc.lib
+!MESSAGE Building Boost.Regex with ICU in $(ICU_PATH)
+!ENDIF
+
+
+ALL_HEADER= ../../../boost/regex/concepts.hpp ../../../boost/regex/config.hpp ../../../boost/regex/icu.hpp ../../../boost/regex/mfc.hpp ../../../boost/regex/pattern_except.hpp ../../../boost/regex/regex_traits.hpp ../../../boost/regex/user.hpp ../../../boost/regex/v4/basic_regex.hpp ../../../boost/regex/v4/basic_regex_creator.hpp ../../../boost/regex/v4/basic_regex_parser.hpp ../../../boost/regex/v4/c_regex_traits.hpp ../../../boost/regex/v4/char_regex_traits.hpp ../../../boost/regex/v4/cpp_regex_traits.hpp ../../../boost/regex/v4/cregex.hpp ../../../boost/regex/v4/error_type.hpp ../../../boost/regex/v4/fileiter.hpp ../../../boost/regex/v4/instances.hpp ../../../boost/regex/v4/iterator_category.hpp ../../../boost/regex/v4/iterator_traits.hpp ../../../boost/regex/v4/match_flags.hpp ../../../boost/regex/v4/match_results.hpp ../../../boost/regex/v4/mem_block_cache.hpp ../../../boost/regex/v4/perl_matcher.hpp ../../../boost/regex/v4/perl_matcher_common.hpp ../../../boost/regex/v4/perl_matcher_non_recursive.hpp
../../../boost/regex/v4/perl_matcher_recursive.hpp ../../../boost/regex/v4/primary_transform.hpp ../../../boost/regex/v4/protected_call.hpp ../../../boost/regex/v4/regbase.hpp ../../../boost/regex/v4/regex.hpp ../../../boost/regex/v4/regex_cstring.hpp ../../../boost/regex/v4/regex_format.hpp ../../../boost/regex/v4/regex_fwd.hpp ../../../boost/regex/v4/regex_grep.hpp ../../../boost/regex/v4/regex_iterator.hpp ../../../boost/regex/v4/regex_kmp.hpp ../../../boost/regex/v4/regex_match.hpp ../../../boost/regex/v4/regex_merge.hpp ../../../boost/regex/v4/regex_raw_buffer.hpp ../../../boost/regex/v4/regex_replace.hpp ../../../boost/regex/v4/regex_search.hpp ../../../boost/regex/v4/regex_split.hpp ../../../boost/regex/v4/regex_stack.hpp ../../../boost/regex/v4/regex_token_iterator.hpp ../../../boost/regex/v4/regex_traits.hpp ../../../boost/regex/v4/regex_traits_defaults.hpp ../../../boost/regex/v4/regex_workaround.hpp ../../../boost/regex/v4/states.hpp ../../../boost/regex/v4/sub_match.hpp ../../../boost/regex/v4/sy
ntax_type.hpp ../../../boost/regex/v4/u32regex_iterator.hpp ../../../boost/regex/v4/u32regex_token_iterator.hpp ../../../boost/regex/v4/w32_regex_traits.hpp ../../../boost/regex/config/borland.hpp ../../../boost/regex/config/cwchar.hpp
+
+all : main_dir libboost_regex-vc71-mt-sp-1_34_dir ./vc71-stlport/libboost_regex-vc71-mt-sp-1_34.lib boost_regex-vc71-mt-p-1_34_dir ./vc71-stlport/boost_regex-vc71-mt-p-1_34.lib libboost_regex-vc71-mt-p-1_34_dir ./vc71-stlport/libboost_regex-vc71-mt-p-1_34.lib boost_regex-vc71-mt-gdp-1_34_dir ./vc71-stlport/boost_regex-vc71-mt-gdp-1_34.lib libboost_regex-vc71-mt-sgdp-1_34_dir ./vc71-stlport/libboost_regex-vc71-mt-sgdp-1_34.lib libboost_regex-vc71-mt-gdp-1_34_dir ./vc71-stlport/libboost_regex-vc71-mt-gdp-1_34.lib
+
+clean : libboost_regex-vc71-mt-sp-1_34_clean boost_regex-vc71-mt-p-1_34_clean libboost_regex-vc71-mt-p-1_34_clean boost_regex-vc71-mt-gdp-1_34_clean libboost_regex-vc71-mt-sgdp-1_34_clean libboost_regex-vc71-mt-gdp-1_34_clean
+
+install : stlport_check all
+ copy vc71-stlport\libboost_regex-vc71-mt-sp-1_34.lib "$(MSVCDIR)\lib"
+ copy vc71-stlport\boost_regex-vc71-mt-p-1_34.lib "$(MSVCDIR)\lib"
+ copy vc71-stlport\boost_regex-vc71-mt-p-1_34.dll "$(MSVCDIR)\bin"
+ copy vc71-stlport\libboost_regex-vc71-mt-p-1_34.lib "$(MSVCDIR)\lib"
+ copy vc71-stlport\boost_regex-vc71-mt-gdp-1_34.lib "$(MSVCDIR)\lib"
+ copy vc71-stlport\boost_regex-vc71-mt-gdp-1_34.dll "$(MSVCDIR)\bin"
+ copy vc71-stlport\boost_regex-vc71-mt-gdp-1_34.pdb "$(MSVCDIR)\lib"
+ copy vc71-stlport\libboost_regex-vc71-mt-sgdp-1_34.lib "$(MSVCDIR)\lib"
+ copy vc71-stlport\libboost_regex-vc71-mt-sgdp-1_34.pdb "$(MSVCDIR)\lib"
+ copy vc71-stlport\libboost_regex-vc71-mt-gdp-1_34.lib "$(MSVCDIR)\lib"
+ copy vc71-stlport\libboost_regex-vc71-mt-gdp-1_34.pdb "$(MSVCDIR)\lib"
+
+main_dir :
+ @if not exist "vc71-stlport\$(NULL)" mkdir vc71-stlport
+
+stlport_check : "$(STLPORT_PATH)\stlport\string"
+ echo
+
+
+########################################################
+#
+# section for libboost_regex-vc71-mt-sp-1_34.lib
+#
+########################################################
+vc71-stlport/libboost_regex-vc71-mt-sp-1_34/c_regex_traits.obj: ../src/c_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/libboost_regex-vc71-mt-sp-1_34/ -Fdvc71-stlport/libboost_regex-vc71-mt-sp-1_34.pdb ../src/c_regex_traits.cpp
+
+vc71-stlport/libboost_regex-vc71-mt-sp-1_34/cpp_regex_traits.obj: ../src/cpp_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/libboost_regex-vc71-mt-sp-1_34/ -Fdvc71-stlport/libboost_regex-vc71-mt-sp-1_34.pdb ../src/cpp_regex_traits.cpp
+
+vc71-stlport/libboost_regex-vc71-mt-sp-1_34/cregex.obj: ../src/cregex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/libboost_regex-vc71-mt-sp-1_34/ -Fdvc71-stlport/libboost_regex-vc71-mt-sp-1_34.pdb ../src/cregex.cpp
+
+vc71-stlport/libboost_regex-vc71-mt-sp-1_34/fileiter.obj: ../src/fileiter.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/libboost_regex-vc71-mt-sp-1_34/ -Fdvc71-stlport/libboost_regex-vc71-mt-sp-1_34.pdb ../src/fileiter.cpp
+
+vc71-stlport/libboost_regex-vc71-mt-sp-1_34/icu.obj: ../src/icu.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/libboost_regex-vc71-mt-sp-1_34/ -Fdvc71-stlport/libboost_regex-vc71-mt-sp-1_34.pdb ../src/icu.cpp
+
+vc71-stlport/libboost_regex-vc71-mt-sp-1_34/instances.obj: ../src/instances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/libboost_regex-vc71-mt-sp-1_34/ -Fdvc71-stlport/libboost_regex-vc71-mt-sp-1_34.pdb ../src/instances.cpp
+
+vc71-stlport/libboost_regex-vc71-mt-sp-1_34/posix_api.obj: ../src/posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/libboost_regex-vc71-mt-sp-1_34/ -Fdvc71-stlport/libboost_regex-vc71-mt-sp-1_34.pdb ../src/posix_api.cpp
+
+vc71-stlport/libboost_regex-vc71-mt-sp-1_34/regex.obj: ../src/regex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/libboost_regex-vc71-mt-sp-1_34/ -Fdvc71-stlport/libboost_regex-vc71-mt-sp-1_34.pdb ../src/regex.cpp
+
+vc71-stlport/libboost_regex-vc71-mt-sp-1_34/regex_debug.obj: ../src/regex_debug.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/libboost_regex-vc71-mt-sp-1_34/ -Fdvc71-stlport/libboost_regex-vc71-mt-sp-1_34.pdb ../src/regex_debug.cpp
+
+vc71-stlport/libboost_regex-vc71-mt-sp-1_34/regex_raw_buffer.obj: ../src/regex_raw_buffer.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/libboost_regex-vc71-mt-sp-1_34/ -Fdvc71-stlport/libboost_regex-vc71-mt-sp-1_34.pdb ../src/regex_raw_buffer.cpp
+
+vc71-stlport/libboost_regex-vc71-mt-sp-1_34/regex_traits_defaults.obj: ../src/regex_traits_defaults.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/libboost_regex-vc71-mt-sp-1_34/ -Fdvc71-stlport/libboost_regex-vc71-mt-sp-1_34.pdb ../src/regex_traits_defaults.cpp
+
+vc71-stlport/libboost_regex-vc71-mt-sp-1_34/static_mutex.obj: ../src/static_mutex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/libboost_regex-vc71-mt-sp-1_34/ -Fdvc71-stlport/libboost_regex-vc71-mt-sp-1_34.pdb ../src/static_mutex.cpp
+
+vc71-stlport/libboost_regex-vc71-mt-sp-1_34/usinstances.obj: ../src/usinstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/libboost_regex-vc71-mt-sp-1_34/ -Fdvc71-stlport/libboost_regex-vc71-mt-sp-1_34.pdb ../src/usinstances.cpp
+
+vc71-stlport/libboost_regex-vc71-mt-sp-1_34/w32_regex_traits.obj: ../src/w32_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/libboost_regex-vc71-mt-sp-1_34/ -Fdvc71-stlport/libboost_regex-vc71-mt-sp-1_34.pdb ../src/w32_regex_traits.cpp
+
+vc71-stlport/libboost_regex-vc71-mt-sp-1_34/wc_regex_traits.obj: ../src/wc_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/libboost_regex-vc71-mt-sp-1_34/ -Fdvc71-stlport/libboost_regex-vc71-mt-sp-1_34.pdb ../src/wc_regex_traits.cpp
+
+vc71-stlport/libboost_regex-vc71-mt-sp-1_34/wide_posix_api.obj: ../src/wide_posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/libboost_regex-vc71-mt-sp-1_34/ -Fdvc71-stlport/libboost_regex-vc71-mt-sp-1_34.pdb ../src/wide_posix_api.cpp
+
+vc71-stlport/libboost_regex-vc71-mt-sp-1_34/winstances.obj: ../src/winstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/libboost_regex-vc71-mt-sp-1_34/ -Fdvc71-stlport/libboost_regex-vc71-mt-sp-1_34.pdb ../src/winstances.cpp
+
+libboost_regex-vc71-mt-sp-1_34_dir :
+ @if not exist "vc71-stlport\libboost_regex-vc71-mt-sp-1_34\$(NULL)" mkdir vc71-stlport\libboost_regex-vc71-mt-sp-1_34
+
+libboost_regex-vc71-mt-sp-1_34_clean :
+ del vc71-stlport\libboost_regex-vc71-mt-sp-1_34\*.obj
+ del vc71-stlport\libboost_regex-vc71-mt-sp-1_34\*.idb
+ del vc71-stlport\libboost_regex-vc71-mt-sp-1_34\*.exp
+ del vc71-stlport\libboost_regex-vc71-mt-sp-1_34\*.pch
+
+./vc71-stlport/libboost_regex-vc71-mt-sp-1_34.lib : vc71-stlport/libboost_regex-vc71-mt-sp-1_34/c_regex_traits.obj vc71-stlport/libboost_regex-vc71-mt-sp-1_34/cpp_regex_traits.obj vc71-stlport/libboost_regex-vc71-mt-sp-1_34/cregex.obj vc71-stlport/libboost_regex-vc71-mt-sp-1_34/fileiter.obj vc71-stlport/libboost_regex-vc71-mt-sp-1_34/icu.obj vc71-stlport/libboost_regex-vc71-mt-sp-1_34/instances.obj vc71-stlport/libboost_regex-vc71-mt-sp-1_34/posix_api.obj vc71-stlport/libboost_regex-vc71-mt-sp-1_34/regex.obj vc71-stlport/libboost_regex-vc71-mt-sp-1_34/regex_debug.obj vc71-stlport/libboost_regex-vc71-mt-sp-1_34/regex_raw_buffer.obj vc71-stlport/libboost_regex-vc71-mt-sp-1_34/regex_traits_defaults.obj vc71-stlport/libboost_regex-vc71-mt-sp-1_34/static_mutex.obj vc71-stlport/libboost_regex-vc71-mt-sp-1_34/usinstances.obj vc71-stlport/libboost_regex-vc71-mt-sp-1_34/w32_regex_traits.obj vc71-stlport/libboost_regex-vc71-mt-sp-1_34/wc_regex_traits.obj vc71-stlport/libboost_regex-vc71-mt-sp-1_34/wide_posix_api.obj
vc71-stlport/libboost_regex-vc71-mt-sp-1_34/winstances.obj
+ link -lib /nologo /out:vc71-stlport/libboost_regex-vc71-mt-sp-1_34.lib $(XSFLAGS) vc71-stlport/libboost_regex-vc71-mt-sp-1_34/c_regex_traits.obj vc71-stlport/libboost_regex-vc71-mt-sp-1_34/cpp_regex_traits.obj vc71-stlport/libboost_regex-vc71-mt-sp-1_34/cregex.obj vc71-stlport/libboost_regex-vc71-mt-sp-1_34/fileiter.obj vc71-stlport/libboost_regex-vc71-mt-sp-1_34/icu.obj vc71-stlport/libboost_regex-vc71-mt-sp-1_34/instances.obj vc71-stlport/libboost_regex-vc71-mt-sp-1_34/posix_api.obj vc71-stlport/libboost_regex-vc71-mt-sp-1_34/regex.obj vc71-stlport/libboost_regex-vc71-mt-sp-1_34/regex_debug.obj vc71-stlport/libboost_regex-vc71-mt-sp-1_34/regex_raw_buffer.obj vc71-stlport/libboost_regex-vc71-mt-sp-1_34/regex_traits_defaults.obj vc71-stlport/libboost_regex-vc71-mt-sp-1_34/static_mutex.obj vc71-stlport/libboost_regex-vc71-mt-sp-1_34/usinstances.obj vc71-stlport/libboost_regex-vc71-mt-sp-1_34/w32_regex_traits.obj vc71-stlport/libboost_regex-vc71-mt-sp-1_34/wc_regex_traits.obj vc71-stlport/libboost_regex-vc7
1-mt-sp-1_34/wide_posix_api.obj vc71-stlport/libboost_regex-vc71-mt-sp-1_34/winstances.obj
+
+########################################################
+#
+# section for boost_regex-vc71-mt-p-1_34.lib
+#
+########################################################
+vc71-stlport/boost_regex-vc71-mt-p-1_34/c_regex_traits.obj: ../src/c_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /I"$(STLPORT_PATH)\stlport" /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/boost_regex-vc71-mt-p-1_34/ -Fdvc71-stlport/boost_regex-vc71-mt-p-1_34.pdb ../src/c_regex_traits.cpp
+
+vc71-stlport/boost_regex-vc71-mt-p-1_34/cpp_regex_traits.obj: ../src/cpp_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /I"$(STLPORT_PATH)\stlport" /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/boost_regex-vc71-mt-p-1_34/ -Fdvc71-stlport/boost_regex-vc71-mt-p-1_34.pdb ../src/cpp_regex_traits.cpp
+
+vc71-stlport/boost_regex-vc71-mt-p-1_34/cregex.obj: ../src/cregex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /I"$(STLPORT_PATH)\stlport" /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/boost_regex-vc71-mt-p-1_34/ -Fdvc71-stlport/boost_regex-vc71-mt-p-1_34.pdb ../src/cregex.cpp
+
+vc71-stlport/boost_regex-vc71-mt-p-1_34/fileiter.obj: ../src/fileiter.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /I"$(STLPORT_PATH)\stlport" /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/boost_regex-vc71-mt-p-1_34/ -Fdvc71-stlport/boost_regex-vc71-mt-p-1_34.pdb ../src/fileiter.cpp
+
+vc71-stlport/boost_regex-vc71-mt-p-1_34/icu.obj: ../src/icu.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /I"$(STLPORT_PATH)\stlport" /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/boost_regex-vc71-mt-p-1_34/ -Fdvc71-stlport/boost_regex-vc71-mt-p-1_34.pdb ../src/icu.cpp
+
+vc71-stlport/boost_regex-vc71-mt-p-1_34/instances.obj: ../src/instances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /I"$(STLPORT_PATH)\stlport" /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/boost_regex-vc71-mt-p-1_34/ -Fdvc71-stlport/boost_regex-vc71-mt-p-1_34.pdb ../src/instances.cpp
+
+vc71-stlport/boost_regex-vc71-mt-p-1_34/posix_api.obj: ../src/posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /I"$(STLPORT_PATH)\stlport" /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/boost_regex-vc71-mt-p-1_34/ -Fdvc71-stlport/boost_regex-vc71-mt-p-1_34.pdb ../src/posix_api.cpp
+
+vc71-stlport/boost_regex-vc71-mt-p-1_34/regex.obj: ../src/regex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /I"$(STLPORT_PATH)\stlport" /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/boost_regex-vc71-mt-p-1_34/ -Fdvc71-stlport/boost_regex-vc71-mt-p-1_34.pdb ../src/regex.cpp
+
+vc71-stlport/boost_regex-vc71-mt-p-1_34/regex_debug.obj: ../src/regex_debug.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /I"$(STLPORT_PATH)\stlport" /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/boost_regex-vc71-mt-p-1_34/ -Fdvc71-stlport/boost_regex-vc71-mt-p-1_34.pdb ../src/regex_debug.cpp
+
+vc71-stlport/boost_regex-vc71-mt-p-1_34/regex_raw_buffer.obj: ../src/regex_raw_buffer.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /I"$(STLPORT_PATH)\stlport" /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/boost_regex-vc71-mt-p-1_34/ -Fdvc71-stlport/boost_regex-vc71-mt-p-1_34.pdb ../src/regex_raw_buffer.cpp
+
+vc71-stlport/boost_regex-vc71-mt-p-1_34/regex_traits_defaults.obj: ../src/regex_traits_defaults.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /I"$(STLPORT_PATH)\stlport" /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/boost_regex-vc71-mt-p-1_34/ -Fdvc71-stlport/boost_regex-vc71-mt-p-1_34.pdb ../src/regex_traits_defaults.cpp
+
+vc71-stlport/boost_regex-vc71-mt-p-1_34/static_mutex.obj: ../src/static_mutex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /I"$(STLPORT_PATH)\stlport" /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/boost_regex-vc71-mt-p-1_34/ -Fdvc71-stlport/boost_regex-vc71-mt-p-1_34.pdb ../src/static_mutex.cpp
+
+vc71-stlport/boost_regex-vc71-mt-p-1_34/usinstances.obj: ../src/usinstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /I"$(STLPORT_PATH)\stlport" /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/boost_regex-vc71-mt-p-1_34/ -Fdvc71-stlport/boost_regex-vc71-mt-p-1_34.pdb ../src/usinstances.cpp
+
+vc71-stlport/boost_regex-vc71-mt-p-1_34/w32_regex_traits.obj: ../src/w32_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /I"$(STLPORT_PATH)\stlport" /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/boost_regex-vc71-mt-p-1_34/ -Fdvc71-stlport/boost_regex-vc71-mt-p-1_34.pdb ../src/w32_regex_traits.cpp
+
+vc71-stlport/boost_regex-vc71-mt-p-1_34/wc_regex_traits.obj: ../src/wc_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /I"$(STLPORT_PATH)\stlport" /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/boost_regex-vc71-mt-p-1_34/ -Fdvc71-stlport/boost_regex-vc71-mt-p-1_34.pdb ../src/wc_regex_traits.cpp
+
+vc71-stlport/boost_regex-vc71-mt-p-1_34/wide_posix_api.obj: ../src/wide_posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /I"$(STLPORT_PATH)\stlport" /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/boost_regex-vc71-mt-p-1_34/ -Fdvc71-stlport/boost_regex-vc71-mt-p-1_34.pdb ../src/wide_posix_api.cpp
+
+vc71-stlport/boost_regex-vc71-mt-p-1_34/winstances.obj: ../src/winstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /I"$(STLPORT_PATH)\stlport" /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/boost_regex-vc71-mt-p-1_34/ -Fdvc71-stlport/boost_regex-vc71-mt-p-1_34.pdb ../src/winstances.cpp
+
+boost_regex-vc71-mt-p-1_34_dir :
+ @if not exist "vc71-stlport\boost_regex-vc71-mt-p-1_34\$(NULL)" mkdir vc71-stlport\boost_regex-vc71-mt-p-1_34
+
+boost_regex-vc71-mt-p-1_34_clean :
+ del vc71-stlport\boost_regex-vc71-mt-p-1_34\*.obj
+ del vc71-stlport\boost_regex-vc71-mt-p-1_34\*.idb
+ del vc71-stlport\boost_regex-vc71-mt-p-1_34\*.exp
+ del vc71-stlport\boost_regex-vc71-mt-p-1_34\*.pch
+
+./vc71-stlport/boost_regex-vc71-mt-p-1_34.lib : vc71-stlport/boost_regex-vc71-mt-p-1_34/c_regex_traits.obj vc71-stlport/boost_regex-vc71-mt-p-1_34/cpp_regex_traits.obj vc71-stlport/boost_regex-vc71-mt-p-1_34/cregex.obj vc71-stlport/boost_regex-vc71-mt-p-1_34/fileiter.obj vc71-stlport/boost_regex-vc71-mt-p-1_34/icu.obj vc71-stlport/boost_regex-vc71-mt-p-1_34/instances.obj vc71-stlport/boost_regex-vc71-mt-p-1_34/posix_api.obj vc71-stlport/boost_regex-vc71-mt-p-1_34/regex.obj vc71-stlport/boost_regex-vc71-mt-p-1_34/regex_debug.obj vc71-stlport/boost_regex-vc71-mt-p-1_34/regex_raw_buffer.obj vc71-stlport/boost_regex-vc71-mt-p-1_34/regex_traits_defaults.obj vc71-stlport/boost_regex-vc71-mt-p-1_34/static_mutex.obj vc71-stlport/boost_regex-vc71-mt-p-1_34/usinstances.obj vc71-stlport/boost_regex-vc71-mt-p-1_34/w32_regex_traits.obj vc71-stlport/boost_regex-vc71-mt-p-1_34/wc_regex_traits.obj vc71-stlport/boost_regex-vc71-mt-p-1_34/wide_posix_api.obj vc71-stlport/boost_regex-vc71-mt-p-1_34/winstances.obj
+ link kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:yes /pdb:"vc71-stlport/boost_regex-vc71-mt-p-1_34.pdb" /debug /machine:I386 /out:"vc71-stlport/boost_regex-vc71-mt-p-1_34.dll" /implib:"vc71-stlport/boost_regex-vc71-mt-p-1_34.lib" /LIBPATH:"$(STLPORT_PATH)\lib" $(XLFLAGS) $(ICU_LINK_OPTS) vc71-stlport/boost_regex-vc71-mt-p-1_34/c_regex_traits.obj vc71-stlport/boost_regex-vc71-mt-p-1_34/cpp_regex_traits.obj vc71-stlport/boost_regex-vc71-mt-p-1_34/cregex.obj vc71-stlport/boost_regex-vc71-mt-p-1_34/fileiter.obj vc71-stlport/boost_regex-vc71-mt-p-1_34/icu.obj vc71-stlport/boost_regex-vc71-mt-p-1_34/instances.obj vc71-stlport/boost_regex-vc71-mt-p-1_34/posix_api.obj vc71-stlport/boost_regex-vc71-mt-p-1_34/regex.obj vc71-stlport/boost_regex-vc71-mt-p-1_34/regex_debug.obj vc71-stlport/boost_regex-vc71-mt-p-1_34/regex_raw_buffer.obj vc71-stlport/boost_regex-vc71-mt-p-1_34/regex_traits_defaults
.obj vc71-stlport/boost_regex-vc71-mt-p-1_34/static_mutex.obj vc71-stlport/boost_regex-vc71-mt-p-1_34/usinstances.obj vc71-stlport/boost_regex-vc71-mt-p-1_34/w32_regex_traits.obj vc71-stlport/boost_regex-vc71-mt-p-1_34/wc_regex_traits.obj vc71-stlport/boost_regex-vc71-mt-p-1_34/wide_posix_api.obj vc71-stlport/boost_regex-vc71-mt-p-1_34/winstances.obj
+
+########################################################
+#
+# section for libboost_regex-vc71-mt-p-1_34.lib
+#
+########################################################
+vc71-stlport/libboost_regex-vc71-mt-p-1_34/c_regex_traits.obj: ../src/c_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/libboost_regex-vc71-mt-p-1_34/ -Fdvc71-stlport/libboost_regex-vc71-mt-p-1_34.pdb ../src/c_regex_traits.cpp
+
+vc71-stlport/libboost_regex-vc71-mt-p-1_34/cpp_regex_traits.obj: ../src/cpp_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/libboost_regex-vc71-mt-p-1_34/ -Fdvc71-stlport/libboost_regex-vc71-mt-p-1_34.pdb ../src/cpp_regex_traits.cpp
+
+vc71-stlport/libboost_regex-vc71-mt-p-1_34/cregex.obj: ../src/cregex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/libboost_regex-vc71-mt-p-1_34/ -Fdvc71-stlport/libboost_regex-vc71-mt-p-1_34.pdb ../src/cregex.cpp
+
+vc71-stlport/libboost_regex-vc71-mt-p-1_34/fileiter.obj: ../src/fileiter.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/libboost_regex-vc71-mt-p-1_34/ -Fdvc71-stlport/libboost_regex-vc71-mt-p-1_34.pdb ../src/fileiter.cpp
+
+vc71-stlport/libboost_regex-vc71-mt-p-1_34/icu.obj: ../src/icu.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/libboost_regex-vc71-mt-p-1_34/ -Fdvc71-stlport/libboost_regex-vc71-mt-p-1_34.pdb ../src/icu.cpp
+
+vc71-stlport/libboost_regex-vc71-mt-p-1_34/instances.obj: ../src/instances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/libboost_regex-vc71-mt-p-1_34/ -Fdvc71-stlport/libboost_regex-vc71-mt-p-1_34.pdb ../src/instances.cpp
+
+vc71-stlport/libboost_regex-vc71-mt-p-1_34/posix_api.obj: ../src/posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/libboost_regex-vc71-mt-p-1_34/ -Fdvc71-stlport/libboost_regex-vc71-mt-p-1_34.pdb ../src/posix_api.cpp
+
+vc71-stlport/libboost_regex-vc71-mt-p-1_34/regex.obj: ../src/regex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/libboost_regex-vc71-mt-p-1_34/ -Fdvc71-stlport/libboost_regex-vc71-mt-p-1_34.pdb ../src/regex.cpp
+
+vc71-stlport/libboost_regex-vc71-mt-p-1_34/regex_debug.obj: ../src/regex_debug.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/libboost_regex-vc71-mt-p-1_34/ -Fdvc71-stlport/libboost_regex-vc71-mt-p-1_34.pdb ../src/regex_debug.cpp
+
+vc71-stlport/libboost_regex-vc71-mt-p-1_34/regex_raw_buffer.obj: ../src/regex_raw_buffer.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/libboost_regex-vc71-mt-p-1_34/ -Fdvc71-stlport/libboost_regex-vc71-mt-p-1_34.pdb ../src/regex_raw_buffer.cpp
+
+vc71-stlport/libboost_regex-vc71-mt-p-1_34/regex_traits_defaults.obj: ../src/regex_traits_defaults.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/libboost_regex-vc71-mt-p-1_34/ -Fdvc71-stlport/libboost_regex-vc71-mt-p-1_34.pdb ../src/regex_traits_defaults.cpp
+
+vc71-stlport/libboost_regex-vc71-mt-p-1_34/static_mutex.obj: ../src/static_mutex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/libboost_regex-vc71-mt-p-1_34/ -Fdvc71-stlport/libboost_regex-vc71-mt-p-1_34.pdb ../src/static_mutex.cpp
+
+vc71-stlport/libboost_regex-vc71-mt-p-1_34/usinstances.obj: ../src/usinstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/libboost_regex-vc71-mt-p-1_34/ -Fdvc71-stlport/libboost_regex-vc71-mt-p-1_34.pdb ../src/usinstances.cpp
+
+vc71-stlport/libboost_regex-vc71-mt-p-1_34/w32_regex_traits.obj: ../src/w32_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/libboost_regex-vc71-mt-p-1_34/ -Fdvc71-stlport/libboost_regex-vc71-mt-p-1_34.pdb ../src/w32_regex_traits.cpp
+
+vc71-stlport/libboost_regex-vc71-mt-p-1_34/wc_regex_traits.obj: ../src/wc_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/libboost_regex-vc71-mt-p-1_34/ -Fdvc71-stlport/libboost_regex-vc71-mt-p-1_34.pdb ../src/wc_regex_traits.cpp
+
+vc71-stlport/libboost_regex-vc71-mt-p-1_34/wide_posix_api.obj: ../src/wide_posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/libboost_regex-vc71-mt-p-1_34/ -Fdvc71-stlport/libboost_regex-vc71-mt-p-1_34.pdb ../src/wide_posix_api.cpp
+
+vc71-stlport/libboost_regex-vc71-mt-p-1_34/winstances.obj: ../src/winstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/libboost_regex-vc71-mt-p-1_34/ -Fdvc71-stlport/libboost_regex-vc71-mt-p-1_34.pdb ../src/winstances.cpp
+
+libboost_regex-vc71-mt-p-1_34_dir :
+ @if not exist "vc71-stlport\libboost_regex-vc71-mt-p-1_34\$(NULL)" mkdir vc71-stlport\libboost_regex-vc71-mt-p-1_34
+
+libboost_regex-vc71-mt-p-1_34_clean :
+ del vc71-stlport\libboost_regex-vc71-mt-p-1_34\*.obj
+ del vc71-stlport\libboost_regex-vc71-mt-p-1_34\*.idb
+ del vc71-stlport\libboost_regex-vc71-mt-p-1_34\*.exp
+ del vc71-stlport\libboost_regex-vc71-mt-p-1_34\*.pch
+
+./vc71-stlport/libboost_regex-vc71-mt-p-1_34.lib : vc71-stlport/libboost_regex-vc71-mt-p-1_34/c_regex_traits.obj vc71-stlport/libboost_regex-vc71-mt-p-1_34/cpp_regex_traits.obj vc71-stlport/libboost_regex-vc71-mt-p-1_34/cregex.obj vc71-stlport/libboost_regex-vc71-mt-p-1_34/fileiter.obj vc71-stlport/libboost_regex-vc71-mt-p-1_34/icu.obj vc71-stlport/libboost_regex-vc71-mt-p-1_34/instances.obj vc71-stlport/libboost_regex-vc71-mt-p-1_34/posix_api.obj vc71-stlport/libboost_regex-vc71-mt-p-1_34/regex.obj vc71-stlport/libboost_regex-vc71-mt-p-1_34/regex_debug.obj vc71-stlport/libboost_regex-vc71-mt-p-1_34/regex_raw_buffer.obj vc71-stlport/libboost_regex-vc71-mt-p-1_34/regex_traits_defaults.obj vc71-stlport/libboost_regex-vc71-mt-p-1_34/static_mutex.obj vc71-stlport/libboost_regex-vc71-mt-p-1_34/usinstances.obj vc71-stlport/libboost_regex-vc71-mt-p-1_34/w32_regex_traits.obj vc71-stlport/libboost_regex-vc71-mt-p-1_34/wc_regex_traits.obj vc71-stlport/libboost_regex-vc71-mt-p-1_34/wide_posix_api.obj vc71-stlport/libb
oost_regex-vc71-mt-p-1_34/winstances.obj
+ link -lib /nologo /out:vc71-stlport/libboost_regex-vc71-mt-p-1_34.lib $(XSFLAGS) vc71-stlport/libboost_regex-vc71-mt-p-1_34/c_regex_traits.obj vc71-stlport/libboost_regex-vc71-mt-p-1_34/cpp_regex_traits.obj vc71-stlport/libboost_regex-vc71-mt-p-1_34/cregex.obj vc71-stlport/libboost_regex-vc71-mt-p-1_34/fileiter.obj vc71-stlport/libboost_regex-vc71-mt-p-1_34/icu.obj vc71-stlport/libboost_regex-vc71-mt-p-1_34/instances.obj vc71-stlport/libboost_regex-vc71-mt-p-1_34/posix_api.obj vc71-stlport/libboost_regex-vc71-mt-p-1_34/regex.obj vc71-stlport/libboost_regex-vc71-mt-p-1_34/regex_debug.obj vc71-stlport/libboost_regex-vc71-mt-p-1_34/regex_raw_buffer.obj vc71-stlport/libboost_regex-vc71-mt-p-1_34/regex_traits_defaults.obj vc71-stlport/libboost_regex-vc71-mt-p-1_34/static_mutex.obj vc71-stlport/libboost_regex-vc71-mt-p-1_34/usinstances.obj vc71-stlport/libboost_regex-vc71-mt-p-1_34/w32_regex_traits.obj vc71-stlport/libboost_regex-vc71-mt-p-1_34/wc_regex_traits.obj vc71-stlport/libboost_regex-vc71-mt-p-1_34/wide
_posix_api.obj vc71-stlport/libboost_regex-vc71-mt-p-1_34/winstances.obj
+
+########################################################
+#
+# section for boost_regex-vc71-mt-gdp-1_34.lib
+#
+########################################################
+vc71-stlport/boost_regex-vc71-mt-gdp-1_34/c_regex_traits.obj: ../src/c_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_DYN_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/boost_regex-vc71-mt-gdp-1_34/ -Fdvc71-stlport/boost_regex-vc71-mt-gdp-1_34.pdb ../src/c_regex_traits.cpp
+
+vc71-stlport/boost_regex-vc71-mt-gdp-1_34/cpp_regex_traits.obj: ../src/cpp_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_DYN_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/boost_regex-vc71-mt-gdp-1_34/ -Fdvc71-stlport/boost_regex-vc71-mt-gdp-1_34.pdb ../src/cpp_regex_traits.cpp
+
+vc71-stlport/boost_regex-vc71-mt-gdp-1_34/cregex.obj: ../src/cregex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_DYN_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/boost_regex-vc71-mt-gdp-1_34/ -Fdvc71-stlport/boost_regex-vc71-mt-gdp-1_34.pdb ../src/cregex.cpp
+
+vc71-stlport/boost_regex-vc71-mt-gdp-1_34/fileiter.obj: ../src/fileiter.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_DYN_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/boost_regex-vc71-mt-gdp-1_34/ -Fdvc71-stlport/boost_regex-vc71-mt-gdp-1_34.pdb ../src/fileiter.cpp
+
+vc71-stlport/boost_regex-vc71-mt-gdp-1_34/icu.obj: ../src/icu.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_DYN_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/boost_regex-vc71-mt-gdp-1_34/ -Fdvc71-stlport/boost_regex-vc71-mt-gdp-1_34.pdb ../src/icu.cpp
+
+vc71-stlport/boost_regex-vc71-mt-gdp-1_34/instances.obj: ../src/instances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_DYN_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/boost_regex-vc71-mt-gdp-1_34/ -Fdvc71-stlport/boost_regex-vc71-mt-gdp-1_34.pdb ../src/instances.cpp
+
+vc71-stlport/boost_regex-vc71-mt-gdp-1_34/posix_api.obj: ../src/posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_DYN_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/boost_regex-vc71-mt-gdp-1_34/ -Fdvc71-stlport/boost_regex-vc71-mt-gdp-1_34.pdb ../src/posix_api.cpp
+
+vc71-stlport/boost_regex-vc71-mt-gdp-1_34/regex.obj: ../src/regex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_DYN_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/boost_regex-vc71-mt-gdp-1_34/ -Fdvc71-stlport/boost_regex-vc71-mt-gdp-1_34.pdb ../src/regex.cpp
+
+vc71-stlport/boost_regex-vc71-mt-gdp-1_34/regex_debug.obj: ../src/regex_debug.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_DYN_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/boost_regex-vc71-mt-gdp-1_34/ -Fdvc71-stlport/boost_regex-vc71-mt-gdp-1_34.pdb ../src/regex_debug.cpp
+
+vc71-stlport/boost_regex-vc71-mt-gdp-1_34/regex_raw_buffer.obj: ../src/regex_raw_buffer.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_DYN_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/boost_regex-vc71-mt-gdp-1_34/ -Fdvc71-stlport/boost_regex-vc71-mt-gdp-1_34.pdb ../src/regex_raw_buffer.cpp
+
+vc71-stlport/boost_regex-vc71-mt-gdp-1_34/regex_traits_defaults.obj: ../src/regex_traits_defaults.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_DYN_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/boost_regex-vc71-mt-gdp-1_34/ -Fdvc71-stlport/boost_regex-vc71-mt-gdp-1_34.pdb ../src/regex_traits_defaults.cpp
+
+vc71-stlport/boost_regex-vc71-mt-gdp-1_34/static_mutex.obj: ../src/static_mutex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_DYN_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/boost_regex-vc71-mt-gdp-1_34/ -Fdvc71-stlport/boost_regex-vc71-mt-gdp-1_34.pdb ../src/static_mutex.cpp
+
+vc71-stlport/boost_regex-vc71-mt-gdp-1_34/usinstances.obj: ../src/usinstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_DYN_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/boost_regex-vc71-mt-gdp-1_34/ -Fdvc71-stlport/boost_regex-vc71-mt-gdp-1_34.pdb ../src/usinstances.cpp
+
+vc71-stlport/boost_regex-vc71-mt-gdp-1_34/w32_regex_traits.obj: ../src/w32_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_DYN_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/boost_regex-vc71-mt-gdp-1_34/ -Fdvc71-stlport/boost_regex-vc71-mt-gdp-1_34.pdb ../src/w32_regex_traits.cpp
+
+vc71-stlport/boost_regex-vc71-mt-gdp-1_34/wc_regex_traits.obj: ../src/wc_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_DYN_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/boost_regex-vc71-mt-gdp-1_34/ -Fdvc71-stlport/boost_regex-vc71-mt-gdp-1_34.pdb ../src/wc_regex_traits.cpp
+
+vc71-stlport/boost_regex-vc71-mt-gdp-1_34/wide_posix_api.obj: ../src/wide_posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_DYN_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/boost_regex-vc71-mt-gdp-1_34/ -Fdvc71-stlport/boost_regex-vc71-mt-gdp-1_34.pdb ../src/wide_posix_api.cpp
+
+vc71-stlport/boost_regex-vc71-mt-gdp-1_34/winstances.obj: ../src/winstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_DYN_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/boost_regex-vc71-mt-gdp-1_34/ -Fdvc71-stlport/boost_regex-vc71-mt-gdp-1_34.pdb ../src/winstances.cpp
+
+boost_regex-vc71-mt-gdp-1_34_dir :
+ @if not exist "vc71-stlport\boost_regex-vc71-mt-gdp-1_34\$(NULL)" mkdir vc71-stlport\boost_regex-vc71-mt-gdp-1_34
+
+boost_regex-vc71-mt-gdp-1_34_clean :
+ del vc71-stlport\boost_regex-vc71-mt-gdp-1_34\*.obj
+ del vc71-stlport\boost_regex-vc71-mt-gdp-1_34\*.idb
+ del vc71-stlport\boost_regex-vc71-mt-gdp-1_34\*.exp
+ del vc71-stlport\boost_regex-vc71-mt-gdp-1_34\*.pch
+
+./vc71-stlport/boost_regex-vc71-mt-gdp-1_34.lib : vc71-stlport/boost_regex-vc71-mt-gdp-1_34/c_regex_traits.obj vc71-stlport/boost_regex-vc71-mt-gdp-1_34/cpp_regex_traits.obj vc71-stlport/boost_regex-vc71-mt-gdp-1_34/cregex.obj vc71-stlport/boost_regex-vc71-mt-gdp-1_34/fileiter.obj vc71-stlport/boost_regex-vc71-mt-gdp-1_34/icu.obj vc71-stlport/boost_regex-vc71-mt-gdp-1_34/instances.obj vc71-stlport/boost_regex-vc71-mt-gdp-1_34/posix_api.obj vc71-stlport/boost_regex-vc71-mt-gdp-1_34/regex.obj vc71-stlport/boost_regex-vc71-mt-gdp-1_34/regex_debug.obj vc71-stlport/boost_regex-vc71-mt-gdp-1_34/regex_raw_buffer.obj vc71-stlport/boost_regex-vc71-mt-gdp-1_34/regex_traits_defaults.obj vc71-stlport/boost_regex-vc71-mt-gdp-1_34/static_mutex.obj vc71-stlport/boost_regex-vc71-mt-gdp-1_34/usinstances.obj vc71-stlport/boost_regex-vc71-mt-gdp-1_34/w32_regex_traits.obj vc71-stlport/boost_regex-vc71-mt-gdp-1_34/wc_regex_traits.obj vc71-stlport/boost_regex-vc71-mt-gdp-1_34/wide_posix_api.obj vc71-stlport/boost_regex-vc71-mt-g
dp-1_34/winstances.obj
+ link kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:yes /pdb:"vc71-stlport/boost_regex-vc71-mt-gdp-1_34.pdb" /debug /machine:I386 /out:"vc71-stlport/boost_regex-vc71-mt-gdp-1_34.dll" /implib:"vc71-stlport/boost_regex-vc71-mt-gdp-1_34.lib" /LIBPATH:"$(STLPORT_PATH)\lib" $(XLFLAGS) $(ICU_LINK_OPTS) vc71-stlport/boost_regex-vc71-mt-gdp-1_34/c_regex_traits.obj vc71-stlport/boost_regex-vc71-mt-gdp-1_34/cpp_regex_traits.obj vc71-stlport/boost_regex-vc71-mt-gdp-1_34/cregex.obj vc71-stlport/boost_regex-vc71-mt-gdp-1_34/fileiter.obj vc71-stlport/boost_regex-vc71-mt-gdp-1_34/icu.obj vc71-stlport/boost_regex-vc71-mt-gdp-1_34/instances.obj vc71-stlport/boost_regex-vc71-mt-gdp-1_34/posix_api.obj vc71-stlport/boost_regex-vc71-mt-gdp-1_34/regex.obj vc71-stlport/boost_regex-vc71-mt-gdp-1_34/regex_debug.obj vc71-stlport/boost_regex-vc71-mt-gdp-1_34/regex_raw_buffer.obj vc71-stlport/boost_regex-vc71-mt-gd
p-1_34/regex_traits_defaults.obj vc71-stlport/boost_regex-vc71-mt-gdp-1_34/static_mutex.obj vc71-stlport/boost_regex-vc71-mt-gdp-1_34/usinstances.obj vc71-stlport/boost_regex-vc71-mt-gdp-1_34/w32_regex_traits.obj vc71-stlport/boost_regex-vc71-mt-gdp-1_34/wc_regex_traits.obj vc71-stlport/boost_regex-vc71-mt-gdp-1_34/wide_posix_api.obj vc71-stlport/boost_regex-vc71-mt-gdp-1_34/winstances.obj
+
+########################################################
+#
+# section for libboost_regex-vc71-mt-sgdp-1_34.lib
+#
+########################################################
+vc71-stlport/libboost_regex-vc71-mt-sgdp-1_34/c_regex_traits.obj: ../src/c_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D__STL_DEBUG /D_STLP_DEBUG /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/libboost_regex-vc71-mt-sgdp-1_34/ -Fdvc71-stlport/libboost_regex-vc71-mt-sgdp-1_34.pdb ../src/c_regex_traits.cpp
+
+vc71-stlport/libboost_regex-vc71-mt-sgdp-1_34/cpp_regex_traits.obj: ../src/cpp_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D__STL_DEBUG /D_STLP_DEBUG /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/libboost_regex-vc71-mt-sgdp-1_34/ -Fdvc71-stlport/libboost_regex-vc71-mt-sgdp-1_34.pdb ../src/cpp_regex_traits.cpp
+
+vc71-stlport/libboost_regex-vc71-mt-sgdp-1_34/cregex.obj: ../src/cregex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D__STL_DEBUG /D_STLP_DEBUG /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/libboost_regex-vc71-mt-sgdp-1_34/ -Fdvc71-stlport/libboost_regex-vc71-mt-sgdp-1_34.pdb ../src/cregex.cpp
+
+vc71-stlport/libboost_regex-vc71-mt-sgdp-1_34/fileiter.obj: ../src/fileiter.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D__STL_DEBUG /D_STLP_DEBUG /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/libboost_regex-vc71-mt-sgdp-1_34/ -Fdvc71-stlport/libboost_regex-vc71-mt-sgdp-1_34.pdb ../src/fileiter.cpp
+
+vc71-stlport/libboost_regex-vc71-mt-sgdp-1_34/icu.obj: ../src/icu.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D__STL_DEBUG /D_STLP_DEBUG /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/libboost_regex-vc71-mt-sgdp-1_34/ -Fdvc71-stlport/libboost_regex-vc71-mt-sgdp-1_34.pdb ../src/icu.cpp
+
+vc71-stlport/libboost_regex-vc71-mt-sgdp-1_34/instances.obj: ../src/instances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D__STL_DEBUG /D_STLP_DEBUG /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/libboost_regex-vc71-mt-sgdp-1_34/ -Fdvc71-stlport/libboost_regex-vc71-mt-sgdp-1_34.pdb ../src/instances.cpp
+
+vc71-stlport/libboost_regex-vc71-mt-sgdp-1_34/posix_api.obj: ../src/posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D__STL_DEBUG /D_STLP_DEBUG /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/libboost_regex-vc71-mt-sgdp-1_34/ -Fdvc71-stlport/libboost_regex-vc71-mt-sgdp-1_34.pdb ../src/posix_api.cpp
+
+vc71-stlport/libboost_regex-vc71-mt-sgdp-1_34/regex.obj: ../src/regex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D__STL_DEBUG /D_STLP_DEBUG /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/libboost_regex-vc71-mt-sgdp-1_34/ -Fdvc71-stlport/libboost_regex-vc71-mt-sgdp-1_34.pdb ../src/regex.cpp
+
+vc71-stlport/libboost_regex-vc71-mt-sgdp-1_34/regex_debug.obj: ../src/regex_debug.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D__STL_DEBUG /D_STLP_DEBUG /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/libboost_regex-vc71-mt-sgdp-1_34/ -Fdvc71-stlport/libboost_regex-vc71-mt-sgdp-1_34.pdb ../src/regex_debug.cpp
+
+vc71-stlport/libboost_regex-vc71-mt-sgdp-1_34/regex_raw_buffer.obj: ../src/regex_raw_buffer.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D__STL_DEBUG /D_STLP_DEBUG /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/libboost_regex-vc71-mt-sgdp-1_34/ -Fdvc71-stlport/libboost_regex-vc71-mt-sgdp-1_34.pdb ../src/regex_raw_buffer.cpp
+
+vc71-stlport/libboost_regex-vc71-mt-sgdp-1_34/regex_traits_defaults.obj: ../src/regex_traits_defaults.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D__STL_DEBUG /D_STLP_DEBUG /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/libboost_regex-vc71-mt-sgdp-1_34/ -Fdvc71-stlport/libboost_regex-vc71-mt-sgdp-1_34.pdb ../src/regex_traits_defaults.cpp
+
+vc71-stlport/libboost_regex-vc71-mt-sgdp-1_34/static_mutex.obj: ../src/static_mutex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D__STL_DEBUG /D_STLP_DEBUG /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/libboost_regex-vc71-mt-sgdp-1_34/ -Fdvc71-stlport/libboost_regex-vc71-mt-sgdp-1_34.pdb ../src/static_mutex.cpp
+
+vc71-stlport/libboost_regex-vc71-mt-sgdp-1_34/usinstances.obj: ../src/usinstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D__STL_DEBUG /D_STLP_DEBUG /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/libboost_regex-vc71-mt-sgdp-1_34/ -Fdvc71-stlport/libboost_regex-vc71-mt-sgdp-1_34.pdb ../src/usinstances.cpp
+
+vc71-stlport/libboost_regex-vc71-mt-sgdp-1_34/w32_regex_traits.obj: ../src/w32_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D__STL_DEBUG /D_STLP_DEBUG /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/libboost_regex-vc71-mt-sgdp-1_34/ -Fdvc71-stlport/libboost_regex-vc71-mt-sgdp-1_34.pdb ../src/w32_regex_traits.cpp
+
+vc71-stlport/libboost_regex-vc71-mt-sgdp-1_34/wc_regex_traits.obj: ../src/wc_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D__STL_DEBUG /D_STLP_DEBUG /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/libboost_regex-vc71-mt-sgdp-1_34/ -Fdvc71-stlport/libboost_regex-vc71-mt-sgdp-1_34.pdb ../src/wc_regex_traits.cpp
+
+vc71-stlport/libboost_regex-vc71-mt-sgdp-1_34/wide_posix_api.obj: ../src/wide_posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D__STL_DEBUG /D_STLP_DEBUG /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/libboost_regex-vc71-mt-sgdp-1_34/ -Fdvc71-stlport/libboost_regex-vc71-mt-sgdp-1_34.pdb ../src/wide_posix_api.cpp
+
+vc71-stlport/libboost_regex-vc71-mt-sgdp-1_34/winstances.obj: ../src/winstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D__STL_DEBUG /D_STLP_DEBUG /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/libboost_regex-vc71-mt-sgdp-1_34/ -Fdvc71-stlport/libboost_regex-vc71-mt-sgdp-1_34.pdb ../src/winstances.cpp
+
+libboost_regex-vc71-mt-sgdp-1_34_dir :
+ @if not exist "vc71-stlport\libboost_regex-vc71-mt-sgdp-1_34\$(NULL)" mkdir vc71-stlport\libboost_regex-vc71-mt-sgdp-1_34
+
+libboost_regex-vc71-mt-sgdp-1_34_clean :
+ del vc71-stlport\libboost_regex-vc71-mt-sgdp-1_34\*.obj
+ del vc71-stlport\libboost_regex-vc71-mt-sgdp-1_34\*.idb
+ del vc71-stlport\libboost_regex-vc71-mt-sgdp-1_34\*.exp
+ del vc71-stlport\libboost_regex-vc71-mt-sgdp-1_34\*.pch
+
+./vc71-stlport/libboost_regex-vc71-mt-sgdp-1_34.lib : vc71-stlport/libboost_regex-vc71-mt-sgdp-1_34/c_regex_traits.obj vc71-stlport/libboost_regex-vc71-mt-sgdp-1_34/cpp_regex_traits.obj vc71-stlport/libboost_regex-vc71-mt-sgdp-1_34/cregex.obj vc71-stlport/libboost_regex-vc71-mt-sgdp-1_34/fileiter.obj vc71-stlport/libboost_regex-vc71-mt-sgdp-1_34/icu.obj vc71-stlport/libboost_regex-vc71-mt-sgdp-1_34/instances.obj vc71-stlport/libboost_regex-vc71-mt-sgdp-1_34/posix_api.obj vc71-stlport/libboost_regex-vc71-mt-sgdp-1_34/regex.obj vc71-stlport/libboost_regex-vc71-mt-sgdp-1_34/regex_debug.obj vc71-stlport/libboost_regex-vc71-mt-sgdp-1_34/regex_raw_buffer.obj vc71-stlport/libboost_regex-vc71-mt-sgdp-1_34/regex_traits_defaults.obj vc71-stlport/libboost_regex-vc71-mt-sgdp-1_34/static_mutex.obj vc71-stlport/libboost_regex-vc71-mt-sgdp-1_34/usinstances.obj vc71-stlport/libboost_regex-vc71-mt-sgdp-1_34/w32_regex_traits.obj vc71-stlport/libboost_regex-vc71-mt-sgdp-1_34/wc_regex_traits.obj vc71-stlport/libboost_regex-vc7
1-mt-sgdp-1_34/wide_posix_api.obj vc71-stlport/libboost_regex-vc71-mt-sgdp-1_34/winstances.obj
+ link -lib /nologo /out:vc71-stlport/libboost_regex-vc71-mt-sgdp-1_34.lib $(XSFLAGS) vc71-stlport/libboost_regex-vc71-mt-sgdp-1_34/c_regex_traits.obj vc71-stlport/libboost_regex-vc71-mt-sgdp-1_34/cpp_regex_traits.obj vc71-stlport/libboost_regex-vc71-mt-sgdp-1_34/cregex.obj vc71-stlport/libboost_regex-vc71-mt-sgdp-1_34/fileiter.obj vc71-stlport/libboost_regex-vc71-mt-sgdp-1_34/icu.obj vc71-stlport/libboost_regex-vc71-mt-sgdp-1_34/instances.obj vc71-stlport/libboost_regex-vc71-mt-sgdp-1_34/posix_api.obj vc71-stlport/libboost_regex-vc71-mt-sgdp-1_34/regex.obj vc71-stlport/libboost_regex-vc71-mt-sgdp-1_34/regex_debug.obj vc71-stlport/libboost_regex-vc71-mt-sgdp-1_34/regex_raw_buffer.obj vc71-stlport/libboost_regex-vc71-mt-sgdp-1_34/regex_traits_defaults.obj vc71-stlport/libboost_regex-vc71-mt-sgdp-1_34/static_mutex.obj vc71-stlport/libboost_regex-vc71-mt-sgdp-1_34/usinstances.obj vc71-stlport/libboost_regex-vc71-mt-sgdp-1_34/w32_regex_traits.obj vc71-stlport/libboost_regex-vc71-mt-sgdp-1_34/wc_regex_traits.obj
 vc71-stlport/libboost_regex-vc71-mt-sgdp-1_34/wide_posix_api.obj vc71-stlport/libboost_regex-vc71-mt-sgdp-1_34/winstances.obj
+
+########################################################
+#
+# section for libboost_regex-vc71-mt-gdp-1_34.lib
+#
+########################################################
+vc71-stlport/libboost_regex-vc71-mt-gdp-1_34/c_regex_traits.obj: ../src/c_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/libboost_regex-vc71-mt-gdp-1_34/ -Fdvc71-stlport/libboost_regex-vc71-mt-gdp-1_34.pdb ../src/c_regex_traits.cpp
+
+vc71-stlport/libboost_regex-vc71-mt-gdp-1_34/cpp_regex_traits.obj: ../src/cpp_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/libboost_regex-vc71-mt-gdp-1_34/ -Fdvc71-stlport/libboost_regex-vc71-mt-gdp-1_34.pdb ../src/cpp_regex_traits.cpp
+
+vc71-stlport/libboost_regex-vc71-mt-gdp-1_34/cregex.obj: ../src/cregex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/libboost_regex-vc71-mt-gdp-1_34/ -Fdvc71-stlport/libboost_regex-vc71-mt-gdp-1_34.pdb ../src/cregex.cpp
+
+vc71-stlport/libboost_regex-vc71-mt-gdp-1_34/fileiter.obj: ../src/fileiter.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/libboost_regex-vc71-mt-gdp-1_34/ -Fdvc71-stlport/libboost_regex-vc71-mt-gdp-1_34.pdb ../src/fileiter.cpp
+
+vc71-stlport/libboost_regex-vc71-mt-gdp-1_34/icu.obj: ../src/icu.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/libboost_regex-vc71-mt-gdp-1_34/ -Fdvc71-stlport/libboost_regex-vc71-mt-gdp-1_34.pdb ../src/icu.cpp
+
+vc71-stlport/libboost_regex-vc71-mt-gdp-1_34/instances.obj: ../src/instances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/libboost_regex-vc71-mt-gdp-1_34/ -Fdvc71-stlport/libboost_regex-vc71-mt-gdp-1_34.pdb ../src/instances.cpp
+
+vc71-stlport/libboost_regex-vc71-mt-gdp-1_34/posix_api.obj: ../src/posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/libboost_regex-vc71-mt-gdp-1_34/ -Fdvc71-stlport/libboost_regex-vc71-mt-gdp-1_34.pdb ../src/posix_api.cpp
+
+vc71-stlport/libboost_regex-vc71-mt-gdp-1_34/regex.obj: ../src/regex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/libboost_regex-vc71-mt-gdp-1_34/ -Fdvc71-stlport/libboost_regex-vc71-mt-gdp-1_34.pdb ../src/regex.cpp
+
+vc71-stlport/libboost_regex-vc71-mt-gdp-1_34/regex_debug.obj: ../src/regex_debug.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/libboost_regex-vc71-mt-gdp-1_34/ -Fdvc71-stlport/libboost_regex-vc71-mt-gdp-1_34.pdb ../src/regex_debug.cpp
+
+vc71-stlport/libboost_regex-vc71-mt-gdp-1_34/regex_raw_buffer.obj: ../src/regex_raw_buffer.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/libboost_regex-vc71-mt-gdp-1_34/ -Fdvc71-stlport/libboost_regex-vc71-mt-gdp-1_34.pdb ../src/regex_raw_buffer.cpp
+
+vc71-stlport/libboost_regex-vc71-mt-gdp-1_34/regex_traits_defaults.obj: ../src/regex_traits_defaults.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/libboost_regex-vc71-mt-gdp-1_34/ -Fdvc71-stlport/libboost_regex-vc71-mt-gdp-1_34.pdb ../src/regex_traits_defaults.cpp
+
+vc71-stlport/libboost_regex-vc71-mt-gdp-1_34/static_mutex.obj: ../src/static_mutex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/libboost_regex-vc71-mt-gdp-1_34/ -Fdvc71-stlport/libboost_regex-vc71-mt-gdp-1_34.pdb ../src/static_mutex.cpp
+
+vc71-stlport/libboost_regex-vc71-mt-gdp-1_34/usinstances.obj: ../src/usinstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/libboost_regex-vc71-mt-gdp-1_34/ -Fdvc71-stlport/libboost_regex-vc71-mt-gdp-1_34.pdb ../src/usinstances.cpp
+
+vc71-stlport/libboost_regex-vc71-mt-gdp-1_34/w32_regex_traits.obj: ../src/w32_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/libboost_regex-vc71-mt-gdp-1_34/ -Fdvc71-stlport/libboost_regex-vc71-mt-gdp-1_34.pdb ../src/w32_regex_traits.cpp
+
+vc71-stlport/libboost_regex-vc71-mt-gdp-1_34/wc_regex_traits.obj: ../src/wc_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/libboost_regex-vc71-mt-gdp-1_34/ -Fdvc71-stlport/libboost_regex-vc71-mt-gdp-1_34.pdb ../src/wc_regex_traits.cpp
+
+vc71-stlport/libboost_regex-vc71-mt-gdp-1_34/wide_posix_api.obj: ../src/wide_posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/libboost_regex-vc71-mt-gdp-1_34/ -Fdvc71-stlport/libboost_regex-vc71-mt-gdp-1_34.pdb ../src/wide_posix_api.cpp
+
+vc71-stlport/libboost_regex-vc71-mt-gdp-1_34/winstances.obj: ../src/winstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71-stlport/libboost_regex-vc71-mt-gdp-1_34/ -Fdvc71-stlport/libboost_regex-vc71-mt-gdp-1_34.pdb ../src/winstances.cpp
+
+libboost_regex-vc71-mt-gdp-1_34_dir :
+ @if not exist "vc71-stlport\libboost_regex-vc71-mt-gdp-1_34\$(NULL)" mkdir vc71-stlport\libboost_regex-vc71-mt-gdp-1_34
+
+libboost_regex-vc71-mt-gdp-1_34_clean :
+ del vc71-stlport\libboost_regex-vc71-mt-gdp-1_34\*.obj
+ del vc71-stlport\libboost_regex-vc71-mt-gdp-1_34\*.idb
+ del vc71-stlport\libboost_regex-vc71-mt-gdp-1_34\*.exp
+ del vc71-stlport\libboost_regex-vc71-mt-gdp-1_34\*.pch
+
+./vc71-stlport/libboost_regex-vc71-mt-gdp-1_34.lib : vc71-stlport/libboost_regex-vc71-mt-gdp-1_34/c_regex_traits.obj vc71-stlport/libboost_regex-vc71-mt-gdp-1_34/cpp_regex_traits.obj vc71-stlport/libboost_regex-vc71-mt-gdp-1_34/cregex.obj vc71-stlport/libboost_regex-vc71-mt-gdp-1_34/fileiter.obj vc71-stlport/libboost_regex-vc71-mt-gdp-1_34/icu.obj vc71-stlport/libboost_regex-vc71-mt-gdp-1_34/instances.obj vc71-stlport/libboost_regex-vc71-mt-gdp-1_34/posix_api.obj vc71-stlport/libboost_regex-vc71-mt-gdp-1_34/regex.obj vc71-stlport/libboost_regex-vc71-mt-gdp-1_34/regex_debug.obj vc71-stlport/libboost_regex-vc71-mt-gdp-1_34/regex_raw_buffer.obj vc71-stlport/libboost_regex-vc71-mt-gdp-1_34/regex_traits_defaults.obj vc71-stlport/libboost_regex-vc71-mt-gdp-1_34/static_mutex.obj vc71-stlport/libboost_regex-vc71-mt-gdp-1_34/usinstances.obj vc71-stlport/libboost_regex-vc71-mt-gdp-1_34/w32_regex_traits.obj vc71-stlport/libboost_regex-vc71-mt-gdp-1_34/wc_regex_traits.obj vc71-stlport/libboost_regex-vc71-mt-gdp-1_34/wi
de_posix_api.obj vc71-stlport/libboost_regex-vc71-mt-gdp-1_34/winstances.obj
+ link -lib /nologo /out:vc71-stlport/libboost_regex-vc71-mt-gdp-1_34.lib $(XSFLAGS) vc71-stlport/libboost_regex-vc71-mt-gdp-1_34/c_regex_traits.obj vc71-stlport/libboost_regex-vc71-mt-gdp-1_34/cpp_regex_traits.obj vc71-stlport/libboost_regex-vc71-mt-gdp-1_34/cregex.obj vc71-stlport/libboost_regex-vc71-mt-gdp-1_34/fileiter.obj vc71-stlport/libboost_regex-vc71-mt-gdp-1_34/icu.obj vc71-stlport/libboost_regex-vc71-mt-gdp-1_34/instances.obj vc71-stlport/libboost_regex-vc71-mt-gdp-1_34/posix_api.obj vc71-stlport/libboost_regex-vc71-mt-gdp-1_34/regex.obj vc71-stlport/libboost_regex-vc71-mt-gdp-1_34/regex_debug.obj vc71-stlport/libboost_regex-vc71-mt-gdp-1_34/regex_raw_buffer.obj vc71-stlport/libboost_regex-vc71-mt-gdp-1_34/regex_traits_defaults.obj vc71-stlport/libboost_regex-vc71-mt-gdp-1_34/static_mutex.obj vc71-stlport/libboost_regex-vc71-mt-gdp-1_34/usinstances.obj vc71-stlport/libboost_regex-vc71-mt-gdp-1_34/w32_regex_traits.obj vc71-stlport/libboost_regex-vc71-mt-gdp-1_34/wc_regex_traits.obj vc71-stlport/li
bboost_regex-vc71-mt-gdp-1_34/wide_posix_api.obj vc71-stlport/libboost_regex-vc71-mt-gdp-1_34/winstances.obj
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/build/vc71.mak
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/build/vc71.mak 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,632 @@
+# copyright John Maddock 2006
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt.
+#
+# auto generated makefile for VC6 compiler
+#
+# usage:
+# make
+# brings libraries up to date
+# make install
+# brings libraries up to date and copies binaries to your VC6 /lib and /bin directories (recomended)
+#
+
+#
+# path to ICU library installation goes here:
+#
+ICU_PATH=
+#
+# Add additional compiler options here:
+#
+CXXFLAGS=
+#
+# Add additional include directories here:
+#
+INCLUDES=
+#
+# add additional linker flags here:
+#
+XLFLAGS=
+#
+# add additional static-library creation flags here:
+#
+XSFLAGS=
+
+!IF "$(OS)" == "Windows_NT"
+NULL=
+!ELSE
+NULL=nul
+!ENDIF
+
+!IF "$(MSVCDIR)" == ""
+MSVCDIR=$(VS71COMNTOOLS)..\..\VC7
+!ENDIF
+
+!IF "$(MSVCDIR)" == ""
+!ERROR Variable MSVCDIR not set.
+!ENDIF
+
+!IF "$(ICU_PATH)" == ""
+ICU_COMPILE_OPTS=
+ICU_LINK_OPTS=
+!MESSAGE Building Boost.Regex without ICU / Unicode support:
+!MESSAGE Hint: set ICU_PATH on the nmake command line to point
+!MESSAGE to your ICU installation if you have one.
+!ELSE
+ICU_COMPILE_OPTS= -DBOOST_HAS_ICU=1 -I"$(ICU_PATH)\include"
+ICU_LINK_OPTS= /LIBPATH:"$(ICU_PATH)\lib" icuin.lib icuuc.lib
+!MESSAGE Building Boost.Regex with ICU in $(ICU_PATH)
+!ENDIF
+
+
+ALL_HEADER= ../../../boost/regex/concepts.hpp ../../../boost/regex/config.hpp ../../../boost/regex/icu.hpp ../../../boost/regex/mfc.hpp ../../../boost/regex/pattern_except.hpp ../../../boost/regex/regex_traits.hpp ../../../boost/regex/user.hpp ../../../boost/regex/v4/basic_regex.hpp ../../../boost/regex/v4/basic_regex_creator.hpp ../../../boost/regex/v4/basic_regex_parser.hpp ../../../boost/regex/v4/c_regex_traits.hpp ../../../boost/regex/v4/char_regex_traits.hpp ../../../boost/regex/v4/cpp_regex_traits.hpp ../../../boost/regex/v4/cregex.hpp ../../../boost/regex/v4/error_type.hpp ../../../boost/regex/v4/fileiter.hpp ../../../boost/regex/v4/instances.hpp ../../../boost/regex/v4/iterator_category.hpp ../../../boost/regex/v4/iterator_traits.hpp ../../../boost/regex/v4/match_flags.hpp ../../../boost/regex/v4/match_results.hpp ../../../boost/regex/v4/mem_block_cache.hpp ../../../boost/regex/v4/perl_matcher.hpp ../../../boost/regex/v4/perl_matcher_common.hpp ../../../boost/regex/v4/perl_matcher_non_recursive.hpp
../../../boost/regex/v4/perl_matcher_recursive.hpp ../../../boost/regex/v4/primary_transform.hpp ../../../boost/regex/v4/protected_call.hpp ../../../boost/regex/v4/regbase.hpp ../../../boost/regex/v4/regex.hpp ../../../boost/regex/v4/regex_cstring.hpp ../../../boost/regex/v4/regex_format.hpp ../../../boost/regex/v4/regex_fwd.hpp ../../../boost/regex/v4/regex_grep.hpp ../../../boost/regex/v4/regex_iterator.hpp ../../../boost/regex/v4/regex_kmp.hpp ../../../boost/regex/v4/regex_match.hpp ../../../boost/regex/v4/regex_merge.hpp ../../../boost/regex/v4/regex_raw_buffer.hpp ../../../boost/regex/v4/regex_replace.hpp ../../../boost/regex/v4/regex_search.hpp ../../../boost/regex/v4/regex_split.hpp ../../../boost/regex/v4/regex_stack.hpp ../../../boost/regex/v4/regex_token_iterator.hpp ../../../boost/regex/v4/regex_traits.hpp ../../../boost/regex/v4/regex_traits_defaults.hpp ../../../boost/regex/v4/regex_workaround.hpp ../../../boost/regex/v4/states.hpp ../../../boost/regex/v4/sub_match.hpp ../../../boost/regex/v4/sy
ntax_type.hpp ../../../boost/regex/v4/u32regex_iterator.hpp ../../../boost/regex/v4/u32regex_token_iterator.hpp ../../../boost/regex/v4/w32_regex_traits.hpp ../../../boost/regex/config/borland.hpp ../../../boost/regex/config/cwchar.hpp
+
+all : main_dir libboost_regex-vc71-s-1_34_dir ./vc71/libboost_regex-vc71-s-1_34.lib libboost_regex-vc71-mt-s-1_34_dir ./vc71/libboost_regex-vc71-mt-s-1_34.lib libboost_regex-vc71-sgd-1_34_dir ./vc71/libboost_regex-vc71-sgd-1_34.lib libboost_regex-vc71-mt-sgd-1_34_dir ./vc71/libboost_regex-vc71-mt-sgd-1_34.lib boost_regex-vc71-mt-gd-1_34_dir ./vc71/boost_regex-vc71-mt-gd-1_34.lib boost_regex-vc71-mt-1_34_dir ./vc71/boost_regex-vc71-mt-1_34.lib libboost_regex-vc71-mt-1_34_dir ./vc71/libboost_regex-vc71-mt-1_34.lib libboost_regex-vc71-mt-gd-1_34_dir ./vc71/libboost_regex-vc71-mt-gd-1_34.lib
+
+clean : libboost_regex-vc71-s-1_34_clean libboost_regex-vc71-mt-s-1_34_clean libboost_regex-vc71-sgd-1_34_clean libboost_regex-vc71-mt-sgd-1_34_clean boost_regex-vc71-mt-gd-1_34_clean boost_regex-vc71-mt-1_34_clean libboost_regex-vc71-mt-1_34_clean libboost_regex-vc71-mt-gd-1_34_clean
+
+install : all
+ copy vc71\libboost_regex-vc71-s-1_34.lib "$(MSVCDIR)\lib"
+ copy vc71\libboost_regex-vc71-mt-s-1_34.lib "$(MSVCDIR)\lib"
+ copy vc71\libboost_regex-vc71-sgd-1_34.lib "$(MSVCDIR)\lib"
+ copy vc71\libboost_regex-vc71-sgd-1_34.pdb "$(MSVCDIR)\lib"
+ copy vc71\libboost_regex-vc71-mt-sgd-1_34.lib "$(MSVCDIR)\lib"
+ copy vc71\libboost_regex-vc71-mt-sgd-1_34.pdb "$(MSVCDIR)\lib"
+ copy vc71\boost_regex-vc71-mt-gd-1_34.lib "$(MSVCDIR)\lib"
+ copy vc71\boost_regex-vc71-mt-gd-1_34.dll "$(MSVCDIR)\bin"
+ copy vc71\boost_regex-vc71-mt-gd-1_34.pdb "$(MSVCDIR)\lib"
+ copy vc71\boost_regex-vc71-mt-1_34.lib "$(MSVCDIR)\lib"
+ copy vc71\boost_regex-vc71-mt-1_34.dll "$(MSVCDIR)\bin"
+ copy vc71\libboost_regex-vc71-mt-1_34.lib "$(MSVCDIR)\lib"
+ copy vc71\libboost_regex-vc71-mt-gd-1_34.lib "$(MSVCDIR)\lib"
+ copy vc71\libboost_regex-vc71-mt-gd-1_34.pdb "$(MSVCDIR)\lib"
+
+main_dir :
+ @if not exist "vc71\$(NULL)" mkdir vc71
+
+
+########################################################
+#
+# section for libboost_regex-vc71-s-1_34.lib
+#
+########################################################
+vc71/libboost_regex-vc71-s-1_34/c_regex_traits.obj: ../src/c_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /c /nologo /ML /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-s-1_34/ -Fdvc71/libboost_regex-vc71-s-1_34.pdb ../src/c_regex_traits.cpp
+
+vc71/libboost_regex-vc71-s-1_34/cpp_regex_traits.obj: ../src/cpp_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /c /nologo /ML /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-s-1_34/ -Fdvc71/libboost_regex-vc71-s-1_34.pdb ../src/cpp_regex_traits.cpp
+
+vc71/libboost_regex-vc71-s-1_34/cregex.obj: ../src/cregex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /c /nologo /ML /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-s-1_34/ -Fdvc71/libboost_regex-vc71-s-1_34.pdb ../src/cregex.cpp
+
+vc71/libboost_regex-vc71-s-1_34/fileiter.obj: ../src/fileiter.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /c /nologo /ML /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-s-1_34/ -Fdvc71/libboost_regex-vc71-s-1_34.pdb ../src/fileiter.cpp
+
+vc71/libboost_regex-vc71-s-1_34/icu.obj: ../src/icu.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /c /nologo /ML /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-s-1_34/ -Fdvc71/libboost_regex-vc71-s-1_34.pdb ../src/icu.cpp
+
+vc71/libboost_regex-vc71-s-1_34/instances.obj: ../src/instances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /c /nologo /ML /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-s-1_34/ -Fdvc71/libboost_regex-vc71-s-1_34.pdb ../src/instances.cpp
+
+vc71/libboost_regex-vc71-s-1_34/posix_api.obj: ../src/posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /c /nologo /ML /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-s-1_34/ -Fdvc71/libboost_regex-vc71-s-1_34.pdb ../src/posix_api.cpp
+
+vc71/libboost_regex-vc71-s-1_34/regex.obj: ../src/regex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /c /nologo /ML /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-s-1_34/ -Fdvc71/libboost_regex-vc71-s-1_34.pdb ../src/regex.cpp
+
+vc71/libboost_regex-vc71-s-1_34/regex_debug.obj: ../src/regex_debug.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /c /nologo /ML /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-s-1_34/ -Fdvc71/libboost_regex-vc71-s-1_34.pdb ../src/regex_debug.cpp
+
+vc71/libboost_regex-vc71-s-1_34/regex_raw_buffer.obj: ../src/regex_raw_buffer.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /c /nologo /ML /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-s-1_34/ -Fdvc71/libboost_regex-vc71-s-1_34.pdb ../src/regex_raw_buffer.cpp
+
+vc71/libboost_regex-vc71-s-1_34/regex_traits_defaults.obj: ../src/regex_traits_defaults.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /c /nologo /ML /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-s-1_34/ -Fdvc71/libboost_regex-vc71-s-1_34.pdb ../src/regex_traits_defaults.cpp
+
+vc71/libboost_regex-vc71-s-1_34/static_mutex.obj: ../src/static_mutex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /c /nologo /ML /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-s-1_34/ -Fdvc71/libboost_regex-vc71-s-1_34.pdb ../src/static_mutex.cpp
+
+vc71/libboost_regex-vc71-s-1_34/usinstances.obj: ../src/usinstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /c /nologo /ML /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-s-1_34/ -Fdvc71/libboost_regex-vc71-s-1_34.pdb ../src/usinstances.cpp
+
+vc71/libboost_regex-vc71-s-1_34/w32_regex_traits.obj: ../src/w32_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /c /nologo /ML /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-s-1_34/ -Fdvc71/libboost_regex-vc71-s-1_34.pdb ../src/w32_regex_traits.cpp
+
+vc71/libboost_regex-vc71-s-1_34/wc_regex_traits.obj: ../src/wc_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /c /nologo /ML /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-s-1_34/ -Fdvc71/libboost_regex-vc71-s-1_34.pdb ../src/wc_regex_traits.cpp
+
+vc71/libboost_regex-vc71-s-1_34/wide_posix_api.obj: ../src/wide_posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /c /nologo /ML /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-s-1_34/ -Fdvc71/libboost_regex-vc71-s-1_34.pdb ../src/wide_posix_api.cpp
+
+vc71/libboost_regex-vc71-s-1_34/winstances.obj: ../src/winstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /c /nologo /ML /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-s-1_34/ -Fdvc71/libboost_regex-vc71-s-1_34.pdb ../src/winstances.cpp
+
+libboost_regex-vc71-s-1_34_dir :
+ @if not exist "vc71\libboost_regex-vc71-s-1_34\$(NULL)" mkdir vc71\libboost_regex-vc71-s-1_34
+
+libboost_regex-vc71-s-1_34_clean :
+ del vc71\libboost_regex-vc71-s-1_34\*.obj
+ del vc71\libboost_regex-vc71-s-1_34\*.idb
+ del vc71\libboost_regex-vc71-s-1_34\*.exp
+ del vc71\libboost_regex-vc71-s-1_34\*.pch
+
+./vc71/libboost_regex-vc71-s-1_34.lib : vc71/libboost_regex-vc71-s-1_34/c_regex_traits.obj vc71/libboost_regex-vc71-s-1_34/cpp_regex_traits.obj vc71/libboost_regex-vc71-s-1_34/cregex.obj vc71/libboost_regex-vc71-s-1_34/fileiter.obj vc71/libboost_regex-vc71-s-1_34/icu.obj vc71/libboost_regex-vc71-s-1_34/instances.obj vc71/libboost_regex-vc71-s-1_34/posix_api.obj vc71/libboost_regex-vc71-s-1_34/regex.obj vc71/libboost_regex-vc71-s-1_34/regex_debug.obj vc71/libboost_regex-vc71-s-1_34/regex_raw_buffer.obj vc71/libboost_regex-vc71-s-1_34/regex_traits_defaults.obj vc71/libboost_regex-vc71-s-1_34/static_mutex.obj vc71/libboost_regex-vc71-s-1_34/usinstances.obj vc71/libboost_regex-vc71-s-1_34/w32_regex_traits.obj vc71/libboost_regex-vc71-s-1_34/wc_regex_traits.obj vc71/libboost_regex-vc71-s-1_34/wide_posix_api.obj vc71/libboost_regex-vc71-s-1_34/winstances.obj
+ link -lib /nologo /out:vc71/libboost_regex-vc71-s-1_34.lib $(XSFLAGS) vc71/libboost_regex-vc71-s-1_34/c_regex_traits.obj vc71/libboost_regex-vc71-s-1_34/cpp_regex_traits.obj vc71/libboost_regex-vc71-s-1_34/cregex.obj vc71/libboost_regex-vc71-s-1_34/fileiter.obj vc71/libboost_regex-vc71-s-1_34/icu.obj vc71/libboost_regex-vc71-s-1_34/instances.obj vc71/libboost_regex-vc71-s-1_34/posix_api.obj vc71/libboost_regex-vc71-s-1_34/regex.obj vc71/libboost_regex-vc71-s-1_34/regex_debug.obj vc71/libboost_regex-vc71-s-1_34/regex_raw_buffer.obj vc71/libboost_regex-vc71-s-1_34/regex_traits_defaults.obj vc71/libboost_regex-vc71-s-1_34/static_mutex.obj vc71/libboost_regex-vc71-s-1_34/usinstances.obj vc71/libboost_regex-vc71-s-1_34/w32_regex_traits.obj vc71/libboost_regex-vc71-s-1_34/wc_regex_traits.obj vc71/libboost_regex-vc71-s-1_34/wide_posix_api.obj vc71/libboost_regex-vc71-s-1_34/winstances.obj
+
+########################################################
+#
+# section for libboost_regex-vc71-mt-s-1_34.lib
+#
+########################################################
+vc71/libboost_regex-vc71-mt-s-1_34/c_regex_traits.obj: ../src/c_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-mt-s-1_34/ -Fdvc71/libboost_regex-vc71-mt-s-1_34.pdb ../src/c_regex_traits.cpp
+
+vc71/libboost_regex-vc71-mt-s-1_34/cpp_regex_traits.obj: ../src/cpp_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-mt-s-1_34/ -Fdvc71/libboost_regex-vc71-mt-s-1_34.pdb ../src/cpp_regex_traits.cpp
+
+vc71/libboost_regex-vc71-mt-s-1_34/cregex.obj: ../src/cregex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-mt-s-1_34/ -Fdvc71/libboost_regex-vc71-mt-s-1_34.pdb ../src/cregex.cpp
+
+vc71/libboost_regex-vc71-mt-s-1_34/fileiter.obj: ../src/fileiter.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-mt-s-1_34/ -Fdvc71/libboost_regex-vc71-mt-s-1_34.pdb ../src/fileiter.cpp
+
+vc71/libboost_regex-vc71-mt-s-1_34/icu.obj: ../src/icu.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-mt-s-1_34/ -Fdvc71/libboost_regex-vc71-mt-s-1_34.pdb ../src/icu.cpp
+
+vc71/libboost_regex-vc71-mt-s-1_34/instances.obj: ../src/instances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-mt-s-1_34/ -Fdvc71/libboost_regex-vc71-mt-s-1_34.pdb ../src/instances.cpp
+
+vc71/libboost_regex-vc71-mt-s-1_34/posix_api.obj: ../src/posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-mt-s-1_34/ -Fdvc71/libboost_regex-vc71-mt-s-1_34.pdb ../src/posix_api.cpp
+
+vc71/libboost_regex-vc71-mt-s-1_34/regex.obj: ../src/regex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-mt-s-1_34/ -Fdvc71/libboost_regex-vc71-mt-s-1_34.pdb ../src/regex.cpp
+
+vc71/libboost_regex-vc71-mt-s-1_34/regex_debug.obj: ../src/regex_debug.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-mt-s-1_34/ -Fdvc71/libboost_regex-vc71-mt-s-1_34.pdb ../src/regex_debug.cpp
+
+vc71/libboost_regex-vc71-mt-s-1_34/regex_raw_buffer.obj: ../src/regex_raw_buffer.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-mt-s-1_34/ -Fdvc71/libboost_regex-vc71-mt-s-1_34.pdb ../src/regex_raw_buffer.cpp
+
+vc71/libboost_regex-vc71-mt-s-1_34/regex_traits_defaults.obj: ../src/regex_traits_defaults.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-mt-s-1_34/ -Fdvc71/libboost_regex-vc71-mt-s-1_34.pdb ../src/regex_traits_defaults.cpp
+
+vc71/libboost_regex-vc71-mt-s-1_34/static_mutex.obj: ../src/static_mutex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-mt-s-1_34/ -Fdvc71/libboost_regex-vc71-mt-s-1_34.pdb ../src/static_mutex.cpp
+
+vc71/libboost_regex-vc71-mt-s-1_34/usinstances.obj: ../src/usinstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-mt-s-1_34/ -Fdvc71/libboost_regex-vc71-mt-s-1_34.pdb ../src/usinstances.cpp
+
+vc71/libboost_regex-vc71-mt-s-1_34/w32_regex_traits.obj: ../src/w32_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-mt-s-1_34/ -Fdvc71/libboost_regex-vc71-mt-s-1_34.pdb ../src/w32_regex_traits.cpp
+
+vc71/libboost_regex-vc71-mt-s-1_34/wc_regex_traits.obj: ../src/wc_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-mt-s-1_34/ -Fdvc71/libboost_regex-vc71-mt-s-1_34.pdb ../src/wc_regex_traits.cpp
+
+vc71/libboost_regex-vc71-mt-s-1_34/wide_posix_api.obj: ../src/wide_posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-mt-s-1_34/ -Fdvc71/libboost_regex-vc71-mt-s-1_34.pdb ../src/wide_posix_api.cpp
+
+vc71/libboost_regex-vc71-mt-s-1_34/winstances.obj: ../src/winstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-mt-s-1_34/ -Fdvc71/libboost_regex-vc71-mt-s-1_34.pdb ../src/winstances.cpp
+
+libboost_regex-vc71-mt-s-1_34_dir :
+ @if not exist "vc71\libboost_regex-vc71-mt-s-1_34\$(NULL)" mkdir vc71\libboost_regex-vc71-mt-s-1_34
+
+libboost_regex-vc71-mt-s-1_34_clean :
+ del vc71\libboost_regex-vc71-mt-s-1_34\*.obj
+ del vc71\libboost_regex-vc71-mt-s-1_34\*.idb
+ del vc71\libboost_regex-vc71-mt-s-1_34\*.exp
+ del vc71\libboost_regex-vc71-mt-s-1_34\*.pch
+
+./vc71/libboost_regex-vc71-mt-s-1_34.lib : vc71/libboost_regex-vc71-mt-s-1_34/c_regex_traits.obj vc71/libboost_regex-vc71-mt-s-1_34/cpp_regex_traits.obj vc71/libboost_regex-vc71-mt-s-1_34/cregex.obj vc71/libboost_regex-vc71-mt-s-1_34/fileiter.obj vc71/libboost_regex-vc71-mt-s-1_34/icu.obj vc71/libboost_regex-vc71-mt-s-1_34/instances.obj vc71/libboost_regex-vc71-mt-s-1_34/posix_api.obj vc71/libboost_regex-vc71-mt-s-1_34/regex.obj vc71/libboost_regex-vc71-mt-s-1_34/regex_debug.obj vc71/libboost_regex-vc71-mt-s-1_34/regex_raw_buffer.obj vc71/libboost_regex-vc71-mt-s-1_34/regex_traits_defaults.obj vc71/libboost_regex-vc71-mt-s-1_34/static_mutex.obj vc71/libboost_regex-vc71-mt-s-1_34/usinstances.obj vc71/libboost_regex-vc71-mt-s-1_34/w32_regex_traits.obj vc71/libboost_regex-vc71-mt-s-1_34/wc_regex_traits.obj vc71/libboost_regex-vc71-mt-s-1_34/wide_posix_api.obj vc71/libboost_regex-vc71-mt-s-1_34/winstances.obj
+ link -lib /nologo /out:vc71/libboost_regex-vc71-mt-s-1_34.lib $(XSFLAGS) vc71/libboost_regex-vc71-mt-s-1_34/c_regex_traits.obj vc71/libboost_regex-vc71-mt-s-1_34/cpp_regex_traits.obj vc71/libboost_regex-vc71-mt-s-1_34/cregex.obj vc71/libboost_regex-vc71-mt-s-1_34/fileiter.obj vc71/libboost_regex-vc71-mt-s-1_34/icu.obj vc71/libboost_regex-vc71-mt-s-1_34/instances.obj vc71/libboost_regex-vc71-mt-s-1_34/posix_api.obj vc71/libboost_regex-vc71-mt-s-1_34/regex.obj vc71/libboost_regex-vc71-mt-s-1_34/regex_debug.obj vc71/libboost_regex-vc71-mt-s-1_34/regex_raw_buffer.obj vc71/libboost_regex-vc71-mt-s-1_34/regex_traits_defaults.obj vc71/libboost_regex-vc71-mt-s-1_34/static_mutex.obj vc71/libboost_regex-vc71-mt-s-1_34/usinstances.obj vc71/libboost_regex-vc71-mt-s-1_34/w32_regex_traits.obj vc71/libboost_regex-vc71-mt-s-1_34/wc_regex_traits.obj vc71/libboost_regex-vc71-mt-s-1_34/wide_posix_api.obj vc71/libboost_regex-vc71-mt-s-1_34/winstances.obj
+
+########################################################
+#
+# section for libboost_regex-vc71-sgd-1_34.lib
+#
+########################################################
+vc71/libboost_regex-vc71-sgd-1_34/c_regex_traits.obj: ../src/c_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MLd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-sgd-1_34/ -Fdvc71/libboost_regex-vc71-sgd-1_34.pdb ../src/c_regex_traits.cpp
+
+vc71/libboost_regex-vc71-sgd-1_34/cpp_regex_traits.obj: ../src/cpp_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MLd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-sgd-1_34/ -Fdvc71/libboost_regex-vc71-sgd-1_34.pdb ../src/cpp_regex_traits.cpp
+
+vc71/libboost_regex-vc71-sgd-1_34/cregex.obj: ../src/cregex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MLd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-sgd-1_34/ -Fdvc71/libboost_regex-vc71-sgd-1_34.pdb ../src/cregex.cpp
+
+vc71/libboost_regex-vc71-sgd-1_34/fileiter.obj: ../src/fileiter.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MLd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-sgd-1_34/ -Fdvc71/libboost_regex-vc71-sgd-1_34.pdb ../src/fileiter.cpp
+
+vc71/libboost_regex-vc71-sgd-1_34/icu.obj: ../src/icu.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MLd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-sgd-1_34/ -Fdvc71/libboost_regex-vc71-sgd-1_34.pdb ../src/icu.cpp
+
+vc71/libboost_regex-vc71-sgd-1_34/instances.obj: ../src/instances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MLd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-sgd-1_34/ -Fdvc71/libboost_regex-vc71-sgd-1_34.pdb ../src/instances.cpp
+
+vc71/libboost_regex-vc71-sgd-1_34/posix_api.obj: ../src/posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MLd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-sgd-1_34/ -Fdvc71/libboost_regex-vc71-sgd-1_34.pdb ../src/posix_api.cpp
+
+vc71/libboost_regex-vc71-sgd-1_34/regex.obj: ../src/regex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MLd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-sgd-1_34/ -Fdvc71/libboost_regex-vc71-sgd-1_34.pdb ../src/regex.cpp
+
+vc71/libboost_regex-vc71-sgd-1_34/regex_debug.obj: ../src/regex_debug.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MLd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-sgd-1_34/ -Fdvc71/libboost_regex-vc71-sgd-1_34.pdb ../src/regex_debug.cpp
+
+vc71/libboost_regex-vc71-sgd-1_34/regex_raw_buffer.obj: ../src/regex_raw_buffer.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MLd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-sgd-1_34/ -Fdvc71/libboost_regex-vc71-sgd-1_34.pdb ../src/regex_raw_buffer.cpp
+
+vc71/libboost_regex-vc71-sgd-1_34/regex_traits_defaults.obj: ../src/regex_traits_defaults.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MLd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-sgd-1_34/ -Fdvc71/libboost_regex-vc71-sgd-1_34.pdb ../src/regex_traits_defaults.cpp
+
+vc71/libboost_regex-vc71-sgd-1_34/static_mutex.obj: ../src/static_mutex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MLd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-sgd-1_34/ -Fdvc71/libboost_regex-vc71-sgd-1_34.pdb ../src/static_mutex.cpp
+
+vc71/libboost_regex-vc71-sgd-1_34/usinstances.obj: ../src/usinstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MLd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-sgd-1_34/ -Fdvc71/libboost_regex-vc71-sgd-1_34.pdb ../src/usinstances.cpp
+
+vc71/libboost_regex-vc71-sgd-1_34/w32_regex_traits.obj: ../src/w32_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MLd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-sgd-1_34/ -Fdvc71/libboost_regex-vc71-sgd-1_34.pdb ../src/w32_regex_traits.cpp
+
+vc71/libboost_regex-vc71-sgd-1_34/wc_regex_traits.obj: ../src/wc_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MLd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-sgd-1_34/ -Fdvc71/libboost_regex-vc71-sgd-1_34.pdb ../src/wc_regex_traits.cpp
+
+vc71/libboost_regex-vc71-sgd-1_34/wide_posix_api.obj: ../src/wide_posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MLd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-sgd-1_34/ -Fdvc71/libboost_regex-vc71-sgd-1_34.pdb ../src/wide_posix_api.cpp
+
+vc71/libboost_regex-vc71-sgd-1_34/winstances.obj: ../src/winstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MLd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-sgd-1_34/ -Fdvc71/libboost_regex-vc71-sgd-1_34.pdb ../src/winstances.cpp
+
+libboost_regex-vc71-sgd-1_34_dir :
+ @if not exist "vc71\libboost_regex-vc71-sgd-1_34\$(NULL)" mkdir vc71\libboost_regex-vc71-sgd-1_34
+
+libboost_regex-vc71-sgd-1_34_clean :
+ del vc71\libboost_regex-vc71-sgd-1_34\*.obj
+ del vc71\libboost_regex-vc71-sgd-1_34\*.idb
+ del vc71\libboost_regex-vc71-sgd-1_34\*.exp
+ del vc71\libboost_regex-vc71-sgd-1_34\*.pch
+
+./vc71/libboost_regex-vc71-sgd-1_34.lib : vc71/libboost_regex-vc71-sgd-1_34/c_regex_traits.obj vc71/libboost_regex-vc71-sgd-1_34/cpp_regex_traits.obj vc71/libboost_regex-vc71-sgd-1_34/cregex.obj vc71/libboost_regex-vc71-sgd-1_34/fileiter.obj vc71/libboost_regex-vc71-sgd-1_34/icu.obj vc71/libboost_regex-vc71-sgd-1_34/instances.obj vc71/libboost_regex-vc71-sgd-1_34/posix_api.obj vc71/libboost_regex-vc71-sgd-1_34/regex.obj vc71/libboost_regex-vc71-sgd-1_34/regex_debug.obj vc71/libboost_regex-vc71-sgd-1_34/regex_raw_buffer.obj vc71/libboost_regex-vc71-sgd-1_34/regex_traits_defaults.obj vc71/libboost_regex-vc71-sgd-1_34/static_mutex.obj vc71/libboost_regex-vc71-sgd-1_34/usinstances.obj vc71/libboost_regex-vc71-sgd-1_34/w32_regex_traits.obj vc71/libboost_regex-vc71-sgd-1_34/wc_regex_traits.obj vc71/libboost_regex-vc71-sgd-1_34/wide_posix_api.obj vc71/libboost_regex-vc71-sgd-1_34/winstances.obj
+ link -lib /nologo /out:vc71/libboost_regex-vc71-sgd-1_34.lib $(XSFLAGS) vc71/libboost_regex-vc71-sgd-1_34/c_regex_traits.obj vc71/libboost_regex-vc71-sgd-1_34/cpp_regex_traits.obj vc71/libboost_regex-vc71-sgd-1_34/cregex.obj vc71/libboost_regex-vc71-sgd-1_34/fileiter.obj vc71/libboost_regex-vc71-sgd-1_34/icu.obj vc71/libboost_regex-vc71-sgd-1_34/instances.obj vc71/libboost_regex-vc71-sgd-1_34/posix_api.obj vc71/libboost_regex-vc71-sgd-1_34/regex.obj vc71/libboost_regex-vc71-sgd-1_34/regex_debug.obj vc71/libboost_regex-vc71-sgd-1_34/regex_raw_buffer.obj vc71/libboost_regex-vc71-sgd-1_34/regex_traits_defaults.obj vc71/libboost_regex-vc71-sgd-1_34/static_mutex.obj vc71/libboost_regex-vc71-sgd-1_34/usinstances.obj vc71/libboost_regex-vc71-sgd-1_34/w32_regex_traits.obj vc71/libboost_regex-vc71-sgd-1_34/wc_regex_traits.obj vc71/libboost_regex-vc71-sgd-1_34/wide_posix_api.obj vc71/libboost_regex-vc71-sgd-1_34/winstances.obj
+
+########################################################
+#
+# section for libboost_regex-vc71-mt-sgd-1_34.lib
+#
+########################################################
+vc71/libboost_regex-vc71-mt-sgd-1_34/c_regex_traits.obj: ../src/c_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-mt-sgd-1_34/ -Fdvc71/libboost_regex-vc71-mt-sgd-1_34.pdb ../src/c_regex_traits.cpp
+
+vc71/libboost_regex-vc71-mt-sgd-1_34/cpp_regex_traits.obj: ../src/cpp_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-mt-sgd-1_34/ -Fdvc71/libboost_regex-vc71-mt-sgd-1_34.pdb ../src/cpp_regex_traits.cpp
+
+vc71/libboost_regex-vc71-mt-sgd-1_34/cregex.obj: ../src/cregex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-mt-sgd-1_34/ -Fdvc71/libboost_regex-vc71-mt-sgd-1_34.pdb ../src/cregex.cpp
+
+vc71/libboost_regex-vc71-mt-sgd-1_34/fileiter.obj: ../src/fileiter.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-mt-sgd-1_34/ -Fdvc71/libboost_regex-vc71-mt-sgd-1_34.pdb ../src/fileiter.cpp
+
+vc71/libboost_regex-vc71-mt-sgd-1_34/icu.obj: ../src/icu.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-mt-sgd-1_34/ -Fdvc71/libboost_regex-vc71-mt-sgd-1_34.pdb ../src/icu.cpp
+
+vc71/libboost_regex-vc71-mt-sgd-1_34/instances.obj: ../src/instances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-mt-sgd-1_34/ -Fdvc71/libboost_regex-vc71-mt-sgd-1_34.pdb ../src/instances.cpp
+
+vc71/libboost_regex-vc71-mt-sgd-1_34/posix_api.obj: ../src/posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-mt-sgd-1_34/ -Fdvc71/libboost_regex-vc71-mt-sgd-1_34.pdb ../src/posix_api.cpp
+
+vc71/libboost_regex-vc71-mt-sgd-1_34/regex.obj: ../src/regex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-mt-sgd-1_34/ -Fdvc71/libboost_regex-vc71-mt-sgd-1_34.pdb ../src/regex.cpp
+
+vc71/libboost_regex-vc71-mt-sgd-1_34/regex_debug.obj: ../src/regex_debug.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-mt-sgd-1_34/ -Fdvc71/libboost_regex-vc71-mt-sgd-1_34.pdb ../src/regex_debug.cpp
+
+vc71/libboost_regex-vc71-mt-sgd-1_34/regex_raw_buffer.obj: ../src/regex_raw_buffer.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-mt-sgd-1_34/ -Fdvc71/libboost_regex-vc71-mt-sgd-1_34.pdb ../src/regex_raw_buffer.cpp
+
+vc71/libboost_regex-vc71-mt-sgd-1_34/regex_traits_defaults.obj: ../src/regex_traits_defaults.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-mt-sgd-1_34/ -Fdvc71/libboost_regex-vc71-mt-sgd-1_34.pdb ../src/regex_traits_defaults.cpp
+
+vc71/libboost_regex-vc71-mt-sgd-1_34/static_mutex.obj: ../src/static_mutex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-mt-sgd-1_34/ -Fdvc71/libboost_regex-vc71-mt-sgd-1_34.pdb ../src/static_mutex.cpp
+
+vc71/libboost_regex-vc71-mt-sgd-1_34/usinstances.obj: ../src/usinstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-mt-sgd-1_34/ -Fdvc71/libboost_regex-vc71-mt-sgd-1_34.pdb ../src/usinstances.cpp
+
+vc71/libboost_regex-vc71-mt-sgd-1_34/w32_regex_traits.obj: ../src/w32_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-mt-sgd-1_34/ -Fdvc71/libboost_regex-vc71-mt-sgd-1_34.pdb ../src/w32_regex_traits.cpp
+
+vc71/libboost_regex-vc71-mt-sgd-1_34/wc_regex_traits.obj: ../src/wc_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-mt-sgd-1_34/ -Fdvc71/libboost_regex-vc71-mt-sgd-1_34.pdb ../src/wc_regex_traits.cpp
+
+vc71/libboost_regex-vc71-mt-sgd-1_34/wide_posix_api.obj: ../src/wide_posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-mt-sgd-1_34/ -Fdvc71/libboost_regex-vc71-mt-sgd-1_34.pdb ../src/wide_posix_api.cpp
+
+vc71/libboost_regex-vc71-mt-sgd-1_34/winstances.obj: ../src/winstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-mt-sgd-1_34/ -Fdvc71/libboost_regex-vc71-mt-sgd-1_34.pdb ../src/winstances.cpp
+
+libboost_regex-vc71-mt-sgd-1_34_dir :
+ @if not exist "vc71\libboost_regex-vc71-mt-sgd-1_34\$(NULL)" mkdir vc71\libboost_regex-vc71-mt-sgd-1_34
+
+libboost_regex-vc71-mt-sgd-1_34_clean :
+ del vc71\libboost_regex-vc71-mt-sgd-1_34\*.obj
+ del vc71\libboost_regex-vc71-mt-sgd-1_34\*.idb
+ del vc71\libboost_regex-vc71-mt-sgd-1_34\*.exp
+ del vc71\libboost_regex-vc71-mt-sgd-1_34\*.pch
+
+./vc71/libboost_regex-vc71-mt-sgd-1_34.lib : vc71/libboost_regex-vc71-mt-sgd-1_34/c_regex_traits.obj vc71/libboost_regex-vc71-mt-sgd-1_34/cpp_regex_traits.obj vc71/libboost_regex-vc71-mt-sgd-1_34/cregex.obj vc71/libboost_regex-vc71-mt-sgd-1_34/fileiter.obj vc71/libboost_regex-vc71-mt-sgd-1_34/icu.obj vc71/libboost_regex-vc71-mt-sgd-1_34/instances.obj vc71/libboost_regex-vc71-mt-sgd-1_34/posix_api.obj vc71/libboost_regex-vc71-mt-sgd-1_34/regex.obj vc71/libboost_regex-vc71-mt-sgd-1_34/regex_debug.obj vc71/libboost_regex-vc71-mt-sgd-1_34/regex_raw_buffer.obj vc71/libboost_regex-vc71-mt-sgd-1_34/regex_traits_defaults.obj vc71/libboost_regex-vc71-mt-sgd-1_34/static_mutex.obj vc71/libboost_regex-vc71-mt-sgd-1_34/usinstances.obj vc71/libboost_regex-vc71-mt-sgd-1_34/w32_regex_traits.obj vc71/libboost_regex-vc71-mt-sgd-1_34/wc_regex_traits.obj vc71/libboost_regex-vc71-mt-sgd-1_34/wide_posix_api.obj vc71/libboost_regex-vc71-mt-sgd-1_34/winstances.obj
+ link -lib /nologo /out:vc71/libboost_regex-vc71-mt-sgd-1_34.lib $(XSFLAGS) vc71/libboost_regex-vc71-mt-sgd-1_34/c_regex_traits.obj vc71/libboost_regex-vc71-mt-sgd-1_34/cpp_regex_traits.obj vc71/libboost_regex-vc71-mt-sgd-1_34/cregex.obj vc71/libboost_regex-vc71-mt-sgd-1_34/fileiter.obj vc71/libboost_regex-vc71-mt-sgd-1_34/icu.obj vc71/libboost_regex-vc71-mt-sgd-1_34/instances.obj vc71/libboost_regex-vc71-mt-sgd-1_34/posix_api.obj vc71/libboost_regex-vc71-mt-sgd-1_34/regex.obj vc71/libboost_regex-vc71-mt-sgd-1_34/regex_debug.obj vc71/libboost_regex-vc71-mt-sgd-1_34/regex_raw_buffer.obj vc71/libboost_regex-vc71-mt-sgd-1_34/regex_traits_defaults.obj vc71/libboost_regex-vc71-mt-sgd-1_34/static_mutex.obj vc71/libboost_regex-vc71-mt-sgd-1_34/usinstances.obj vc71/libboost_regex-vc71-mt-sgd-1_34/w32_regex_traits.obj vc71/libboost_regex-vc71-mt-sgd-1_34/wc_regex_traits.obj vc71/libboost_regex-vc71-mt-sgd-1_34/wide_posix_api.obj vc71/libboost_regex-vc71-mt-sgd-1_34/winstances.obj
+
+########################################################
+#
+# section for boost_regex-vc71-mt-gd-1_34.lib
+#
+########################################################
+vc71/boost_regex-vc71-mt-gd-1_34/c_regex_traits.obj: ../src/c_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /D_DEBUG /DBOOST_REGEX_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/boost_regex-vc71-mt-gd-1_34/ -Fdvc71/boost_regex-vc71-mt-gd-1_34.pdb ../src/c_regex_traits.cpp
+
+vc71/boost_regex-vc71-mt-gd-1_34/cpp_regex_traits.obj: ../src/cpp_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /D_DEBUG /DBOOST_REGEX_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/boost_regex-vc71-mt-gd-1_34/ -Fdvc71/boost_regex-vc71-mt-gd-1_34.pdb ../src/cpp_regex_traits.cpp
+
+vc71/boost_regex-vc71-mt-gd-1_34/cregex.obj: ../src/cregex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /D_DEBUG /DBOOST_REGEX_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/boost_regex-vc71-mt-gd-1_34/ -Fdvc71/boost_regex-vc71-mt-gd-1_34.pdb ../src/cregex.cpp
+
+vc71/boost_regex-vc71-mt-gd-1_34/fileiter.obj: ../src/fileiter.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /D_DEBUG /DBOOST_REGEX_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/boost_regex-vc71-mt-gd-1_34/ -Fdvc71/boost_regex-vc71-mt-gd-1_34.pdb ../src/fileiter.cpp
+
+vc71/boost_regex-vc71-mt-gd-1_34/icu.obj: ../src/icu.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /D_DEBUG /DBOOST_REGEX_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/boost_regex-vc71-mt-gd-1_34/ -Fdvc71/boost_regex-vc71-mt-gd-1_34.pdb ../src/icu.cpp
+
+vc71/boost_regex-vc71-mt-gd-1_34/instances.obj: ../src/instances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /D_DEBUG /DBOOST_REGEX_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/boost_regex-vc71-mt-gd-1_34/ -Fdvc71/boost_regex-vc71-mt-gd-1_34.pdb ../src/instances.cpp
+
+vc71/boost_regex-vc71-mt-gd-1_34/posix_api.obj: ../src/posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /D_DEBUG /DBOOST_REGEX_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/boost_regex-vc71-mt-gd-1_34/ -Fdvc71/boost_regex-vc71-mt-gd-1_34.pdb ../src/posix_api.cpp
+
+vc71/boost_regex-vc71-mt-gd-1_34/regex.obj: ../src/regex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /D_DEBUG /DBOOST_REGEX_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/boost_regex-vc71-mt-gd-1_34/ -Fdvc71/boost_regex-vc71-mt-gd-1_34.pdb ../src/regex.cpp
+
+vc71/boost_regex-vc71-mt-gd-1_34/regex_debug.obj: ../src/regex_debug.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /D_DEBUG /DBOOST_REGEX_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/boost_regex-vc71-mt-gd-1_34/ -Fdvc71/boost_regex-vc71-mt-gd-1_34.pdb ../src/regex_debug.cpp
+
+vc71/boost_regex-vc71-mt-gd-1_34/regex_raw_buffer.obj: ../src/regex_raw_buffer.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /D_DEBUG /DBOOST_REGEX_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/boost_regex-vc71-mt-gd-1_34/ -Fdvc71/boost_regex-vc71-mt-gd-1_34.pdb ../src/regex_raw_buffer.cpp
+
+vc71/boost_regex-vc71-mt-gd-1_34/regex_traits_defaults.obj: ../src/regex_traits_defaults.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /D_DEBUG /DBOOST_REGEX_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/boost_regex-vc71-mt-gd-1_34/ -Fdvc71/boost_regex-vc71-mt-gd-1_34.pdb ../src/regex_traits_defaults.cpp
+
+vc71/boost_regex-vc71-mt-gd-1_34/static_mutex.obj: ../src/static_mutex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /D_DEBUG /DBOOST_REGEX_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/boost_regex-vc71-mt-gd-1_34/ -Fdvc71/boost_regex-vc71-mt-gd-1_34.pdb ../src/static_mutex.cpp
+
+vc71/boost_regex-vc71-mt-gd-1_34/usinstances.obj: ../src/usinstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /D_DEBUG /DBOOST_REGEX_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/boost_regex-vc71-mt-gd-1_34/ -Fdvc71/boost_regex-vc71-mt-gd-1_34.pdb ../src/usinstances.cpp
+
+vc71/boost_regex-vc71-mt-gd-1_34/w32_regex_traits.obj: ../src/w32_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /D_DEBUG /DBOOST_REGEX_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/boost_regex-vc71-mt-gd-1_34/ -Fdvc71/boost_regex-vc71-mt-gd-1_34.pdb ../src/w32_regex_traits.cpp
+
+vc71/boost_regex-vc71-mt-gd-1_34/wc_regex_traits.obj: ../src/wc_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /D_DEBUG /DBOOST_REGEX_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/boost_regex-vc71-mt-gd-1_34/ -Fdvc71/boost_regex-vc71-mt-gd-1_34.pdb ../src/wc_regex_traits.cpp
+
+vc71/boost_regex-vc71-mt-gd-1_34/wide_posix_api.obj: ../src/wide_posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /D_DEBUG /DBOOST_REGEX_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/boost_regex-vc71-mt-gd-1_34/ -Fdvc71/boost_regex-vc71-mt-gd-1_34.pdb ../src/wide_posix_api.cpp
+
+vc71/boost_regex-vc71-mt-gd-1_34/winstances.obj: ../src/winstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /D_DEBUG /DBOOST_REGEX_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/boost_regex-vc71-mt-gd-1_34/ -Fdvc71/boost_regex-vc71-mt-gd-1_34.pdb ../src/winstances.cpp
+
+boost_regex-vc71-mt-gd-1_34_dir :
+ @if not exist "vc71\boost_regex-vc71-mt-gd-1_34\$(NULL)" mkdir vc71\boost_regex-vc71-mt-gd-1_34
+
+boost_regex-vc71-mt-gd-1_34_clean :
+ del vc71\boost_regex-vc71-mt-gd-1_34\*.obj
+ del vc71\boost_regex-vc71-mt-gd-1_34\*.idb
+ del vc71\boost_regex-vc71-mt-gd-1_34\*.exp
+ del vc71\boost_regex-vc71-mt-gd-1_34\*.pch
+
+./vc71/boost_regex-vc71-mt-gd-1_34.lib : vc71/boost_regex-vc71-mt-gd-1_34/c_regex_traits.obj vc71/boost_regex-vc71-mt-gd-1_34/cpp_regex_traits.obj vc71/boost_regex-vc71-mt-gd-1_34/cregex.obj vc71/boost_regex-vc71-mt-gd-1_34/fileiter.obj vc71/boost_regex-vc71-mt-gd-1_34/icu.obj vc71/boost_regex-vc71-mt-gd-1_34/instances.obj vc71/boost_regex-vc71-mt-gd-1_34/posix_api.obj vc71/boost_regex-vc71-mt-gd-1_34/regex.obj vc71/boost_regex-vc71-mt-gd-1_34/regex_debug.obj vc71/boost_regex-vc71-mt-gd-1_34/regex_raw_buffer.obj vc71/boost_regex-vc71-mt-gd-1_34/regex_traits_defaults.obj vc71/boost_regex-vc71-mt-gd-1_34/static_mutex.obj vc71/boost_regex-vc71-mt-gd-1_34/usinstances.obj vc71/boost_regex-vc71-mt-gd-1_34/w32_regex_traits.obj vc71/boost_regex-vc71-mt-gd-1_34/wc_regex_traits.obj vc71/boost_regex-vc71-mt-gd-1_34/wide_posix_api.obj vc71/boost_regex-vc71-mt-gd-1_34/winstances.obj
+ link kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:yes /pdb:"vc71/boost_regex-vc71-mt-gd-1_34.pdb" /debug /machine:I386 /out:"vc71/boost_regex-vc71-mt-gd-1_34.dll" /implib:"vc71/boost_regex-vc71-mt-gd-1_34.lib" /LIBPATH:"$(STLPORT_PATH)\lib" $(XLFLAGS) $(ICU_LINK_OPTS) vc71/boost_regex-vc71-mt-gd-1_34/c_regex_traits.obj vc71/boost_regex-vc71-mt-gd-1_34/cpp_regex_traits.obj vc71/boost_regex-vc71-mt-gd-1_34/cregex.obj vc71/boost_regex-vc71-mt-gd-1_34/fileiter.obj vc71/boost_regex-vc71-mt-gd-1_34/icu.obj vc71/boost_regex-vc71-mt-gd-1_34/instances.obj vc71/boost_regex-vc71-mt-gd-1_34/posix_api.obj vc71/boost_regex-vc71-mt-gd-1_34/regex.obj vc71/boost_regex-vc71-mt-gd-1_34/regex_debug.obj vc71/boost_regex-vc71-mt-gd-1_34/regex_raw_buffer.obj vc71/boost_regex-vc71-mt-gd-1_34/regex_traits_defaults.obj vc71/boost_regex-vc71-mt-gd-1_34/static_mutex.obj vc71/boost_regex-vc71-mt-gd-1_34/usinstance
s.obj vc71/boost_regex-vc71-mt-gd-1_34/w32_regex_traits.obj vc71/boost_regex-vc71-mt-gd-1_34/wc_regex_traits.obj vc71/boost_regex-vc71-mt-gd-1_34/wide_posix_api.obj vc71/boost_regex-vc71-mt-gd-1_34/winstances.obj
+
+########################################################
+#
+# section for boost_regex-vc71-mt-1_34.lib
+#
+########################################################
+vc71/boost_regex-vc71-mt-1_34/c_regex_traits.obj: ../src/c_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/boost_regex-vc71-mt-1_34/ -Fdvc71/boost_regex-vc71-mt-1_34.pdb ../src/c_regex_traits.cpp
+
+vc71/boost_regex-vc71-mt-1_34/cpp_regex_traits.obj: ../src/cpp_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/boost_regex-vc71-mt-1_34/ -Fdvc71/boost_regex-vc71-mt-1_34.pdb ../src/cpp_regex_traits.cpp
+
+vc71/boost_regex-vc71-mt-1_34/cregex.obj: ../src/cregex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/boost_regex-vc71-mt-1_34/ -Fdvc71/boost_regex-vc71-mt-1_34.pdb ../src/cregex.cpp
+
+vc71/boost_regex-vc71-mt-1_34/fileiter.obj: ../src/fileiter.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/boost_regex-vc71-mt-1_34/ -Fdvc71/boost_regex-vc71-mt-1_34.pdb ../src/fileiter.cpp
+
+vc71/boost_regex-vc71-mt-1_34/icu.obj: ../src/icu.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/boost_regex-vc71-mt-1_34/ -Fdvc71/boost_regex-vc71-mt-1_34.pdb ../src/icu.cpp
+
+vc71/boost_regex-vc71-mt-1_34/instances.obj: ../src/instances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/boost_regex-vc71-mt-1_34/ -Fdvc71/boost_regex-vc71-mt-1_34.pdb ../src/instances.cpp
+
+vc71/boost_regex-vc71-mt-1_34/posix_api.obj: ../src/posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/boost_regex-vc71-mt-1_34/ -Fdvc71/boost_regex-vc71-mt-1_34.pdb ../src/posix_api.cpp
+
+vc71/boost_regex-vc71-mt-1_34/regex.obj: ../src/regex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/boost_regex-vc71-mt-1_34/ -Fdvc71/boost_regex-vc71-mt-1_34.pdb ../src/regex.cpp
+
+vc71/boost_regex-vc71-mt-1_34/regex_debug.obj: ../src/regex_debug.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/boost_regex-vc71-mt-1_34/ -Fdvc71/boost_regex-vc71-mt-1_34.pdb ../src/regex_debug.cpp
+
+vc71/boost_regex-vc71-mt-1_34/regex_raw_buffer.obj: ../src/regex_raw_buffer.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/boost_regex-vc71-mt-1_34/ -Fdvc71/boost_regex-vc71-mt-1_34.pdb ../src/regex_raw_buffer.cpp
+
+vc71/boost_regex-vc71-mt-1_34/regex_traits_defaults.obj: ../src/regex_traits_defaults.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/boost_regex-vc71-mt-1_34/ -Fdvc71/boost_regex-vc71-mt-1_34.pdb ../src/regex_traits_defaults.cpp
+
+vc71/boost_regex-vc71-mt-1_34/static_mutex.obj: ../src/static_mutex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/boost_regex-vc71-mt-1_34/ -Fdvc71/boost_regex-vc71-mt-1_34.pdb ../src/static_mutex.cpp
+
+vc71/boost_regex-vc71-mt-1_34/usinstances.obj: ../src/usinstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/boost_regex-vc71-mt-1_34/ -Fdvc71/boost_regex-vc71-mt-1_34.pdb ../src/usinstances.cpp
+
+vc71/boost_regex-vc71-mt-1_34/w32_regex_traits.obj: ../src/w32_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/boost_regex-vc71-mt-1_34/ -Fdvc71/boost_regex-vc71-mt-1_34.pdb ../src/w32_regex_traits.cpp
+
+vc71/boost_regex-vc71-mt-1_34/wc_regex_traits.obj: ../src/wc_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/boost_regex-vc71-mt-1_34/ -Fdvc71/boost_regex-vc71-mt-1_34.pdb ../src/wc_regex_traits.cpp
+
+vc71/boost_regex-vc71-mt-1_34/wide_posix_api.obj: ../src/wide_posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/boost_regex-vc71-mt-1_34/ -Fdvc71/boost_regex-vc71-mt-1_34.pdb ../src/wide_posix_api.cpp
+
+vc71/boost_regex-vc71-mt-1_34/winstances.obj: ../src/winstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/boost_regex-vc71-mt-1_34/ -Fdvc71/boost_regex-vc71-mt-1_34.pdb ../src/winstances.cpp
+
+boost_regex-vc71-mt-1_34_dir :
+ @if not exist "vc71\boost_regex-vc71-mt-1_34\$(NULL)" mkdir vc71\boost_regex-vc71-mt-1_34
+
+boost_regex-vc71-mt-1_34_clean :
+ del vc71\boost_regex-vc71-mt-1_34\*.obj
+ del vc71\boost_regex-vc71-mt-1_34\*.idb
+ del vc71\boost_regex-vc71-mt-1_34\*.exp
+ del vc71\boost_regex-vc71-mt-1_34\*.pch
+
+./vc71/boost_regex-vc71-mt-1_34.lib : vc71/boost_regex-vc71-mt-1_34/c_regex_traits.obj vc71/boost_regex-vc71-mt-1_34/cpp_regex_traits.obj vc71/boost_regex-vc71-mt-1_34/cregex.obj vc71/boost_regex-vc71-mt-1_34/fileiter.obj vc71/boost_regex-vc71-mt-1_34/icu.obj vc71/boost_regex-vc71-mt-1_34/instances.obj vc71/boost_regex-vc71-mt-1_34/posix_api.obj vc71/boost_regex-vc71-mt-1_34/regex.obj vc71/boost_regex-vc71-mt-1_34/regex_debug.obj vc71/boost_regex-vc71-mt-1_34/regex_raw_buffer.obj vc71/boost_regex-vc71-mt-1_34/regex_traits_defaults.obj vc71/boost_regex-vc71-mt-1_34/static_mutex.obj vc71/boost_regex-vc71-mt-1_34/usinstances.obj vc71/boost_regex-vc71-mt-1_34/w32_regex_traits.obj vc71/boost_regex-vc71-mt-1_34/wc_regex_traits.obj vc71/boost_regex-vc71-mt-1_34/wide_posix_api.obj vc71/boost_regex-vc71-mt-1_34/winstances.obj
+ link kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:yes /pdb:"vc71/boost_regex-vc71-mt-1_34.pdb" /debug /machine:I386 /out:"vc71/boost_regex-vc71-mt-1_34.dll" /implib:"vc71/boost_regex-vc71-mt-1_34.lib" /LIBPATH:"$(STLPORT_PATH)\lib" $(XLFLAGS) $(ICU_LINK_OPTS) vc71/boost_regex-vc71-mt-1_34/c_regex_traits.obj vc71/boost_regex-vc71-mt-1_34/cpp_regex_traits.obj vc71/boost_regex-vc71-mt-1_34/cregex.obj vc71/boost_regex-vc71-mt-1_34/fileiter.obj vc71/boost_regex-vc71-mt-1_34/icu.obj vc71/boost_regex-vc71-mt-1_34/instances.obj vc71/boost_regex-vc71-mt-1_34/posix_api.obj vc71/boost_regex-vc71-mt-1_34/regex.obj vc71/boost_regex-vc71-mt-1_34/regex_debug.obj vc71/boost_regex-vc71-mt-1_34/regex_raw_buffer.obj vc71/boost_regex-vc71-mt-1_34/regex_traits_defaults.obj vc71/boost_regex-vc71-mt-1_34/static_mutex.obj vc71/boost_regex-vc71-mt-1_34/usinstances.obj vc71/boost_regex-vc71-mt-1_34/w32_regex_tr
aits.obj vc71/boost_regex-vc71-mt-1_34/wc_regex_traits.obj vc71/boost_regex-vc71-mt-1_34/wide_posix_api.obj vc71/boost_regex-vc71-mt-1_34/winstances.obj
+
+########################################################
+#
+# section for libboost_regex-vc71-mt-1_34.lib
+#
+########################################################
+vc71/libboost_regex-vc71-mt-1_34/c_regex_traits.obj: ../src/c_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-mt-1_34/ -Fdvc71/libboost_regex-vc71-mt-1_34.pdb ../src/c_regex_traits.cpp
+
+vc71/libboost_regex-vc71-mt-1_34/cpp_regex_traits.obj: ../src/cpp_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-mt-1_34/ -Fdvc71/libboost_regex-vc71-mt-1_34.pdb ../src/cpp_regex_traits.cpp
+
+vc71/libboost_regex-vc71-mt-1_34/cregex.obj: ../src/cregex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-mt-1_34/ -Fdvc71/libboost_regex-vc71-mt-1_34.pdb ../src/cregex.cpp
+
+vc71/libboost_regex-vc71-mt-1_34/fileiter.obj: ../src/fileiter.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-mt-1_34/ -Fdvc71/libboost_regex-vc71-mt-1_34.pdb ../src/fileiter.cpp
+
+vc71/libboost_regex-vc71-mt-1_34/icu.obj: ../src/icu.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-mt-1_34/ -Fdvc71/libboost_regex-vc71-mt-1_34.pdb ../src/icu.cpp
+
+vc71/libboost_regex-vc71-mt-1_34/instances.obj: ../src/instances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-mt-1_34/ -Fdvc71/libboost_regex-vc71-mt-1_34.pdb ../src/instances.cpp
+
+vc71/libboost_regex-vc71-mt-1_34/posix_api.obj: ../src/posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-mt-1_34/ -Fdvc71/libboost_regex-vc71-mt-1_34.pdb ../src/posix_api.cpp
+
+vc71/libboost_regex-vc71-mt-1_34/regex.obj: ../src/regex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-mt-1_34/ -Fdvc71/libboost_regex-vc71-mt-1_34.pdb ../src/regex.cpp
+
+vc71/libboost_regex-vc71-mt-1_34/regex_debug.obj: ../src/regex_debug.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-mt-1_34/ -Fdvc71/libboost_regex-vc71-mt-1_34.pdb ../src/regex_debug.cpp
+
+vc71/libboost_regex-vc71-mt-1_34/regex_raw_buffer.obj: ../src/regex_raw_buffer.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-mt-1_34/ -Fdvc71/libboost_regex-vc71-mt-1_34.pdb ../src/regex_raw_buffer.cpp
+
+vc71/libboost_regex-vc71-mt-1_34/regex_traits_defaults.obj: ../src/regex_traits_defaults.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-mt-1_34/ -Fdvc71/libboost_regex-vc71-mt-1_34.pdb ../src/regex_traits_defaults.cpp
+
+vc71/libboost_regex-vc71-mt-1_34/static_mutex.obj: ../src/static_mutex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-mt-1_34/ -Fdvc71/libboost_regex-vc71-mt-1_34.pdb ../src/static_mutex.cpp
+
+vc71/libboost_regex-vc71-mt-1_34/usinstances.obj: ../src/usinstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-mt-1_34/ -Fdvc71/libboost_regex-vc71-mt-1_34.pdb ../src/usinstances.cpp
+
+vc71/libboost_regex-vc71-mt-1_34/w32_regex_traits.obj: ../src/w32_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-mt-1_34/ -Fdvc71/libboost_regex-vc71-mt-1_34.pdb ../src/w32_regex_traits.cpp
+
+vc71/libboost_regex-vc71-mt-1_34/wc_regex_traits.obj: ../src/wc_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-mt-1_34/ -Fdvc71/libboost_regex-vc71-mt-1_34.pdb ../src/wc_regex_traits.cpp
+
+vc71/libboost_regex-vc71-mt-1_34/wide_posix_api.obj: ../src/wide_posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-mt-1_34/ -Fdvc71/libboost_regex-vc71-mt-1_34.pdb ../src/wide_posix_api.cpp
+
+vc71/libboost_regex-vc71-mt-1_34/winstances.obj: ../src/winstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-mt-1_34/ -Fdvc71/libboost_regex-vc71-mt-1_34.pdb ../src/winstances.cpp
+
+libboost_regex-vc71-mt-1_34_dir :
+ @if not exist "vc71\libboost_regex-vc71-mt-1_34\$(NULL)" mkdir vc71\libboost_regex-vc71-mt-1_34
+
+libboost_regex-vc71-mt-1_34_clean :
+ del vc71\libboost_regex-vc71-mt-1_34\*.obj
+ del vc71\libboost_regex-vc71-mt-1_34\*.idb
+ del vc71\libboost_regex-vc71-mt-1_34\*.exp
+ del vc71\libboost_regex-vc71-mt-1_34\*.pch
+
+./vc71/libboost_regex-vc71-mt-1_34.lib : vc71/libboost_regex-vc71-mt-1_34/c_regex_traits.obj vc71/libboost_regex-vc71-mt-1_34/cpp_regex_traits.obj vc71/libboost_regex-vc71-mt-1_34/cregex.obj vc71/libboost_regex-vc71-mt-1_34/fileiter.obj vc71/libboost_regex-vc71-mt-1_34/icu.obj vc71/libboost_regex-vc71-mt-1_34/instances.obj vc71/libboost_regex-vc71-mt-1_34/posix_api.obj vc71/libboost_regex-vc71-mt-1_34/regex.obj vc71/libboost_regex-vc71-mt-1_34/regex_debug.obj vc71/libboost_regex-vc71-mt-1_34/regex_raw_buffer.obj vc71/libboost_regex-vc71-mt-1_34/regex_traits_defaults.obj vc71/libboost_regex-vc71-mt-1_34/static_mutex.obj vc71/libboost_regex-vc71-mt-1_34/usinstances.obj vc71/libboost_regex-vc71-mt-1_34/w32_regex_traits.obj vc71/libboost_regex-vc71-mt-1_34/wc_regex_traits.obj vc71/libboost_regex-vc71-mt-1_34/wide_posix_api.obj vc71/libboost_regex-vc71-mt-1_34/winstances.obj
+ link -lib /nologo /out:vc71/libboost_regex-vc71-mt-1_34.lib $(XSFLAGS) vc71/libboost_regex-vc71-mt-1_34/c_regex_traits.obj vc71/libboost_regex-vc71-mt-1_34/cpp_regex_traits.obj vc71/libboost_regex-vc71-mt-1_34/cregex.obj vc71/libboost_regex-vc71-mt-1_34/fileiter.obj vc71/libboost_regex-vc71-mt-1_34/icu.obj vc71/libboost_regex-vc71-mt-1_34/instances.obj vc71/libboost_regex-vc71-mt-1_34/posix_api.obj vc71/libboost_regex-vc71-mt-1_34/regex.obj vc71/libboost_regex-vc71-mt-1_34/regex_debug.obj vc71/libboost_regex-vc71-mt-1_34/regex_raw_buffer.obj vc71/libboost_regex-vc71-mt-1_34/regex_traits_defaults.obj vc71/libboost_regex-vc71-mt-1_34/static_mutex.obj vc71/libboost_regex-vc71-mt-1_34/usinstances.obj vc71/libboost_regex-vc71-mt-1_34/w32_regex_traits.obj vc71/libboost_regex-vc71-mt-1_34/wc_regex_traits.obj vc71/libboost_regex-vc71-mt-1_34/wide_posix_api.obj vc71/libboost_regex-vc71-mt-1_34/winstances.obj
+
+########################################################
+#
+# section for libboost_regex-vc71-mt-gd-1_34.lib
+#
+########################################################
+vc71/libboost_regex-vc71-mt-gd-1_34/c_regex_traits.obj: ../src/c_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-mt-gd-1_34/ -Fdvc71/libboost_regex-vc71-mt-gd-1_34.pdb ../src/c_regex_traits.cpp
+
+vc71/libboost_regex-vc71-mt-gd-1_34/cpp_regex_traits.obj: ../src/cpp_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-mt-gd-1_34/ -Fdvc71/libboost_regex-vc71-mt-gd-1_34.pdb ../src/cpp_regex_traits.cpp
+
+vc71/libboost_regex-vc71-mt-gd-1_34/cregex.obj: ../src/cregex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-mt-gd-1_34/ -Fdvc71/libboost_regex-vc71-mt-gd-1_34.pdb ../src/cregex.cpp
+
+vc71/libboost_regex-vc71-mt-gd-1_34/fileiter.obj: ../src/fileiter.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-mt-gd-1_34/ -Fdvc71/libboost_regex-vc71-mt-gd-1_34.pdb ../src/fileiter.cpp
+
+vc71/libboost_regex-vc71-mt-gd-1_34/icu.obj: ../src/icu.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-mt-gd-1_34/ -Fdvc71/libboost_regex-vc71-mt-gd-1_34.pdb ../src/icu.cpp
+
+vc71/libboost_regex-vc71-mt-gd-1_34/instances.obj: ../src/instances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-mt-gd-1_34/ -Fdvc71/libboost_regex-vc71-mt-gd-1_34.pdb ../src/instances.cpp
+
+vc71/libboost_regex-vc71-mt-gd-1_34/posix_api.obj: ../src/posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-mt-gd-1_34/ -Fdvc71/libboost_regex-vc71-mt-gd-1_34.pdb ../src/posix_api.cpp
+
+vc71/libboost_regex-vc71-mt-gd-1_34/regex.obj: ../src/regex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-mt-gd-1_34/ -Fdvc71/libboost_regex-vc71-mt-gd-1_34.pdb ../src/regex.cpp
+
+vc71/libboost_regex-vc71-mt-gd-1_34/regex_debug.obj: ../src/regex_debug.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-mt-gd-1_34/ -Fdvc71/libboost_regex-vc71-mt-gd-1_34.pdb ../src/regex_debug.cpp
+
+vc71/libboost_regex-vc71-mt-gd-1_34/regex_raw_buffer.obj: ../src/regex_raw_buffer.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-mt-gd-1_34/ -Fdvc71/libboost_regex-vc71-mt-gd-1_34.pdb ../src/regex_raw_buffer.cpp
+
+vc71/libboost_regex-vc71-mt-gd-1_34/regex_traits_defaults.obj: ../src/regex_traits_defaults.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-mt-gd-1_34/ -Fdvc71/libboost_regex-vc71-mt-gd-1_34.pdb ../src/regex_traits_defaults.cpp
+
+vc71/libboost_regex-vc71-mt-gd-1_34/static_mutex.obj: ../src/static_mutex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-mt-gd-1_34/ -Fdvc71/libboost_regex-vc71-mt-gd-1_34.pdb ../src/static_mutex.cpp
+
+vc71/libboost_regex-vc71-mt-gd-1_34/usinstances.obj: ../src/usinstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-mt-gd-1_34/ -Fdvc71/libboost_regex-vc71-mt-gd-1_34.pdb ../src/usinstances.cpp
+
+vc71/libboost_regex-vc71-mt-gd-1_34/w32_regex_traits.obj: ../src/w32_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-mt-gd-1_34/ -Fdvc71/libboost_regex-vc71-mt-gd-1_34.pdb ../src/w32_regex_traits.cpp
+
+vc71/libboost_regex-vc71-mt-gd-1_34/wc_regex_traits.obj: ../src/wc_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-mt-gd-1_34/ -Fdvc71/libboost_regex-vc71-mt-gd-1_34.pdb ../src/wc_regex_traits.cpp
+
+vc71/libboost_regex-vc71-mt-gd-1_34/wide_posix_api.obj: ../src/wide_posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-mt-gd-1_34/ -Fdvc71/libboost_regex-vc71-mt-gd-1_34.pdb ../src/wide_posix_api.cpp
+
+vc71/libboost_regex-vc71-mt-gd-1_34/winstances.obj: ../src/winstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I../../../ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc71/libboost_regex-vc71-mt-gd-1_34/ -Fdvc71/libboost_regex-vc71-mt-gd-1_34.pdb ../src/winstances.cpp
+
+libboost_regex-vc71-mt-gd-1_34_dir :
+ @if not exist "vc71\libboost_regex-vc71-mt-gd-1_34\$(NULL)" mkdir vc71\libboost_regex-vc71-mt-gd-1_34
+
+libboost_regex-vc71-mt-gd-1_34_clean :
+ del vc71\libboost_regex-vc71-mt-gd-1_34\*.obj
+ del vc71\libboost_regex-vc71-mt-gd-1_34\*.idb
+ del vc71\libboost_regex-vc71-mt-gd-1_34\*.exp
+ del vc71\libboost_regex-vc71-mt-gd-1_34\*.pch
+
+./vc71/libboost_regex-vc71-mt-gd-1_34.lib : vc71/libboost_regex-vc71-mt-gd-1_34/c_regex_traits.obj vc71/libboost_regex-vc71-mt-gd-1_34/cpp_regex_traits.obj vc71/libboost_regex-vc71-mt-gd-1_34/cregex.obj vc71/libboost_regex-vc71-mt-gd-1_34/fileiter.obj vc71/libboost_regex-vc71-mt-gd-1_34/icu.obj vc71/libboost_regex-vc71-mt-gd-1_34/instances.obj vc71/libboost_regex-vc71-mt-gd-1_34/posix_api.obj vc71/libboost_regex-vc71-mt-gd-1_34/regex.obj vc71/libboost_regex-vc71-mt-gd-1_34/regex_debug.obj vc71/libboost_regex-vc71-mt-gd-1_34/regex_raw_buffer.obj vc71/libboost_regex-vc71-mt-gd-1_34/regex_traits_defaults.obj vc71/libboost_regex-vc71-mt-gd-1_34/static_mutex.obj vc71/libboost_regex-vc71-mt-gd-1_34/usinstances.obj vc71/libboost_regex-vc71-mt-gd-1_34/w32_regex_traits.obj vc71/libboost_regex-vc71-mt-gd-1_34/wc_regex_traits.obj vc71/libboost_regex-vc71-mt-gd-1_34/wide_posix_api.obj vc71/libboost_regex-vc71-mt-gd-1_34/winstances.obj
+ link -lib /nologo /out:vc71/libboost_regex-vc71-mt-gd-1_34.lib $(XSFLAGS) vc71/libboost_regex-vc71-mt-gd-1_34/c_regex_traits.obj vc71/libboost_regex-vc71-mt-gd-1_34/cpp_regex_traits.obj vc71/libboost_regex-vc71-mt-gd-1_34/cregex.obj vc71/libboost_regex-vc71-mt-gd-1_34/fileiter.obj vc71/libboost_regex-vc71-mt-gd-1_34/icu.obj vc71/libboost_regex-vc71-mt-gd-1_34/instances.obj vc71/libboost_regex-vc71-mt-gd-1_34/posix_api.obj vc71/libboost_regex-vc71-mt-gd-1_34/regex.obj vc71/libboost_regex-vc71-mt-gd-1_34/regex_debug.obj vc71/libboost_regex-vc71-mt-gd-1_34/regex_raw_buffer.obj vc71/libboost_regex-vc71-mt-gd-1_34/regex_traits_defaults.obj vc71/libboost_regex-vc71-mt-gd-1_34/static_mutex.obj vc71/libboost_regex-vc71-mt-gd-1_34/usinstances.obj vc71/libboost_regex-vc71-mt-gd-1_34/w32_regex_traits.obj vc71/libboost_regex-vc71-mt-gd-1_34/wc_regex_traits.obj vc71/libboost_regex-vc71-mt-gd-1_34/wide_posix_api.obj vc71/libboost_regex-vc71-mt-gd-1_34/winstances.obj
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/build/vc8.mak
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/build/vc8.mak 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,491 @@
+# copyright John Maddock 2006
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt.
+#
+# auto generated makefile for VC6 compiler
+#
+# usage:
+# make
+# brings libraries up to date
+# make install
+# brings libraries up to date and copies binaries to your VC6 /lib and /bin directories (recomended)
+#
+
+#
+# path to ICU library installation goes here:
+#
+ICU_PATH=
+#
+# Add additional compiler options here:
+#
+CXXFLAGS=
+#
+# Add additional include directories here:
+#
+INCLUDES=
+#
+# add additional linker flags here:
+#
+XLFLAGS=
+#
+# add additional static-library creation flags here:
+#
+XSFLAGS=
+
+!IF "$(OS)" == "Windows_NT"
+NULL=
+!ELSE
+NULL=nul
+!ENDIF
+
+!IF "$(MSVCDIR)" == ""
+MSVCDIR=$(VS80COMNTOOLS)..\..\VC
+!ENDIF
+
+!IF "$(MSVCDIR)" == ""
+!ERROR Variable MSVCDIR not set.
+!ENDIF
+
+!IF "$(ICU_PATH)" == ""
+ICU_COMPILE_OPTS=
+ICU_LINK_OPTS=
+!MESSAGE Building Boost.Regex without ICU / Unicode support:
+!MESSAGE Hint: set ICU_PATH on the nmake command line to point
+!MESSAGE to your ICU installation if you have one.
+!ELSE
+ICU_COMPILE_OPTS= -DBOOST_HAS_ICU=1 -I"$(ICU_PATH)\include"
+ICU_LINK_OPTS= /LIBPATH:"$(ICU_PATH)\lib" icuin.lib icuuc.lib
+!MESSAGE Building Boost.Regex with ICU in $(ICU_PATH)
+!ENDIF
+
+
+ALL_HEADER= ../../../boost/regex/concepts.hpp ../../../boost/regex/config.hpp ../../../boost/regex/icu.hpp ../../../boost/regex/mfc.hpp ../../../boost/regex/pattern_except.hpp ../../../boost/regex/regex_traits.hpp ../../../boost/regex/user.hpp ../../../boost/regex/v4/basic_regex.hpp ../../../boost/regex/v4/basic_regex_creator.hpp ../../../boost/regex/v4/basic_regex_parser.hpp ../../../boost/regex/v4/c_regex_traits.hpp ../../../boost/regex/v4/char_regex_traits.hpp ../../../boost/regex/v4/cpp_regex_traits.hpp ../../../boost/regex/v4/cregex.hpp ../../../boost/regex/v4/error_type.hpp ../../../boost/regex/v4/fileiter.hpp ../../../boost/regex/v4/instances.hpp ../../../boost/regex/v4/iterator_category.hpp ../../../boost/regex/v4/iterator_traits.hpp ../../../boost/regex/v4/match_flags.hpp ../../../boost/regex/v4/match_results.hpp ../../../boost/regex/v4/mem_block_cache.hpp ../../../boost/regex/v4/perl_matcher.hpp ../../../boost/regex/v4/perl_matcher_common.hpp ../../../boost/regex/v4/perl_matcher_non_recursive.hpp
../../../boost/regex/v4/perl_matcher_recursive.hpp ../../../boost/regex/v4/primary_transform.hpp ../../../boost/regex/v4/protected_call.hpp ../../../boost/regex/v4/regbase.hpp ../../../boost/regex/v4/regex.hpp ../../../boost/regex/v4/regex_cstring.hpp ../../../boost/regex/v4/regex_format.hpp ../../../boost/regex/v4/regex_fwd.hpp ../../../boost/regex/v4/regex_grep.hpp ../../../boost/regex/v4/regex_iterator.hpp ../../../boost/regex/v4/regex_kmp.hpp ../../../boost/regex/v4/regex_match.hpp ../../../boost/regex/v4/regex_merge.hpp ../../../boost/regex/v4/regex_raw_buffer.hpp ../../../boost/regex/v4/regex_replace.hpp ../../../boost/regex/v4/regex_search.hpp ../../../boost/regex/v4/regex_split.hpp ../../../boost/regex/v4/regex_stack.hpp ../../../boost/regex/v4/regex_token_iterator.hpp ../../../boost/regex/v4/regex_traits.hpp ../../../boost/regex/v4/regex_traits_defaults.hpp ../../../boost/regex/v4/regex_workaround.hpp ../../../boost/regex/v4/states.hpp ../../../boost/regex/v4/sub_match.hpp ../../../boost/regex/v4/sy
ntax_type.hpp ../../../boost/regex/v4/u32regex_iterator.hpp ../../../boost/regex/v4/u32regex_token_iterator.hpp ../../../boost/regex/v4/w32_regex_traits.hpp ../../../boost/regex/config/borland.hpp ../../../boost/regex/config/cwchar.hpp
+
+all : main_dir libboost_regex-vc80-mt-s-1_34_dir ./vc80/libboost_regex-vc80-mt-s-1_34.lib libboost_regex-vc80-mt-sgd-1_34_dir ./vc80/libboost_regex-vc80-mt-sgd-1_34.lib boost_regex-vc80-mt-gd-1_34_dir ./vc80/boost_regex-vc80-mt-gd-1_34.lib boost_regex-vc80-mt-1_34_dir ./vc80/boost_regex-vc80-mt-1_34.lib libboost_regex-vc80-mt-1_34_dir ./vc80/libboost_regex-vc80-mt-1_34.lib libboost_regex-vc80-mt-gd-1_34_dir ./vc80/libboost_regex-vc80-mt-gd-1_34.lib
+
+clean : libboost_regex-vc80-mt-s-1_34_clean libboost_regex-vc80-mt-sgd-1_34_clean boost_regex-vc80-mt-gd-1_34_clean boost_regex-vc80-mt-1_34_clean libboost_regex-vc80-mt-1_34_clean libboost_regex-vc80-mt-gd-1_34_clean
+
+install : all
+ copy vc80\libboost_regex-vc80-mt-s-1_34.lib "$(MSVCDIR)\lib"
+ copy vc80\libboost_regex-vc80-mt-sgd-1_34.lib "$(MSVCDIR)\lib"
+ copy vc80\boost_regex-vc80-mt-gd-1_34.lib "$(MSVCDIR)\lib"
+ copy vc80\boost_regex-vc80-mt-gd-1_34.dll "$(MSVCDIR)\bin"
+ copy vc80\boost_regex-vc80-mt-1_34.lib "$(MSVCDIR)\lib"
+ copy vc80\boost_regex-vc80-mt-1_34.dll "$(MSVCDIR)\bin"
+ copy vc80\libboost_regex-vc80-mt-1_34.lib "$(MSVCDIR)\lib"
+ copy vc80\libboost_regex-vc80-mt-gd-1_34.lib "$(MSVCDIR)\lib"
+ copy vc80\libboost_regex-vc80-mt-gd-1_34.pdb "$(MSVCDIR)\lib"
+
+main_dir :
+ @if not exist "vc80\$(NULL)" mkdir vc80
+
+
+########################################################
+#
+# section for libboost_regex-vc80-mt-s-1_34.lib
+#
+########################################################
+vc80/libboost_regex-vc80-mt-s-1_34/c_regex_traits.obj: ../src/c_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /EHsc /O2 /GF /Gy /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/libboost_regex-vc80-mt-s-1_34/ -Fdvc80/libboost_regex-vc80-mt-s-1_34.pdb ../src/c_regex_traits.cpp
+
+vc80/libboost_regex-vc80-mt-s-1_34/cpp_regex_traits.obj: ../src/cpp_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /EHsc /O2 /GF /Gy /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/libboost_regex-vc80-mt-s-1_34/ -Fdvc80/libboost_regex-vc80-mt-s-1_34.pdb ../src/cpp_regex_traits.cpp
+
+vc80/libboost_regex-vc80-mt-s-1_34/cregex.obj: ../src/cregex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /EHsc /O2 /GF /Gy /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/libboost_regex-vc80-mt-s-1_34/ -Fdvc80/libboost_regex-vc80-mt-s-1_34.pdb ../src/cregex.cpp
+
+vc80/libboost_regex-vc80-mt-s-1_34/fileiter.obj: ../src/fileiter.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /EHsc /O2 /GF /Gy /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/libboost_regex-vc80-mt-s-1_34/ -Fdvc80/libboost_regex-vc80-mt-s-1_34.pdb ../src/fileiter.cpp
+
+vc80/libboost_regex-vc80-mt-s-1_34/icu.obj: ../src/icu.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /EHsc /O2 /GF /Gy /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/libboost_regex-vc80-mt-s-1_34/ -Fdvc80/libboost_regex-vc80-mt-s-1_34.pdb ../src/icu.cpp
+
+vc80/libboost_regex-vc80-mt-s-1_34/instances.obj: ../src/instances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /EHsc /O2 /GF /Gy /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/libboost_regex-vc80-mt-s-1_34/ -Fdvc80/libboost_regex-vc80-mt-s-1_34.pdb ../src/instances.cpp
+
+vc80/libboost_regex-vc80-mt-s-1_34/posix_api.obj: ../src/posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /EHsc /O2 /GF /Gy /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/libboost_regex-vc80-mt-s-1_34/ -Fdvc80/libboost_regex-vc80-mt-s-1_34.pdb ../src/posix_api.cpp
+
+vc80/libboost_regex-vc80-mt-s-1_34/regex.obj: ../src/regex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /EHsc /O2 /GF /Gy /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/libboost_regex-vc80-mt-s-1_34/ -Fdvc80/libboost_regex-vc80-mt-s-1_34.pdb ../src/regex.cpp
+
+vc80/libboost_regex-vc80-mt-s-1_34/regex_debug.obj: ../src/regex_debug.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /EHsc /O2 /GF /Gy /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/libboost_regex-vc80-mt-s-1_34/ -Fdvc80/libboost_regex-vc80-mt-s-1_34.pdb ../src/regex_debug.cpp
+
+vc80/libboost_regex-vc80-mt-s-1_34/regex_raw_buffer.obj: ../src/regex_raw_buffer.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /EHsc /O2 /GF /Gy /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/libboost_regex-vc80-mt-s-1_34/ -Fdvc80/libboost_regex-vc80-mt-s-1_34.pdb ../src/regex_raw_buffer.cpp
+
+vc80/libboost_regex-vc80-mt-s-1_34/regex_traits_defaults.obj: ../src/regex_traits_defaults.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /EHsc /O2 /GF /Gy /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/libboost_regex-vc80-mt-s-1_34/ -Fdvc80/libboost_regex-vc80-mt-s-1_34.pdb ../src/regex_traits_defaults.cpp
+
+vc80/libboost_regex-vc80-mt-s-1_34/static_mutex.obj: ../src/static_mutex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /EHsc /O2 /GF /Gy /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/libboost_regex-vc80-mt-s-1_34/ -Fdvc80/libboost_regex-vc80-mt-s-1_34.pdb ../src/static_mutex.cpp
+
+vc80/libboost_regex-vc80-mt-s-1_34/usinstances.obj: ../src/usinstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /EHsc /O2 /GF /Gy /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/libboost_regex-vc80-mt-s-1_34/ -Fdvc80/libboost_regex-vc80-mt-s-1_34.pdb ../src/usinstances.cpp
+
+vc80/libboost_regex-vc80-mt-s-1_34/w32_regex_traits.obj: ../src/w32_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /EHsc /O2 /GF /Gy /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/libboost_regex-vc80-mt-s-1_34/ -Fdvc80/libboost_regex-vc80-mt-s-1_34.pdb ../src/w32_regex_traits.cpp
+
+vc80/libboost_regex-vc80-mt-s-1_34/wc_regex_traits.obj: ../src/wc_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /EHsc /O2 /GF /Gy /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/libboost_regex-vc80-mt-s-1_34/ -Fdvc80/libboost_regex-vc80-mt-s-1_34.pdb ../src/wc_regex_traits.cpp
+
+vc80/libboost_regex-vc80-mt-s-1_34/wide_posix_api.obj: ../src/wide_posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /EHsc /O2 /GF /Gy /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/libboost_regex-vc80-mt-s-1_34/ -Fdvc80/libboost_regex-vc80-mt-s-1_34.pdb ../src/wide_posix_api.cpp
+
+vc80/libboost_regex-vc80-mt-s-1_34/winstances.obj: ../src/winstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MT /W3 /EHsc /O2 /GF /Gy /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/libboost_regex-vc80-mt-s-1_34/ -Fdvc80/libboost_regex-vc80-mt-s-1_34.pdb ../src/winstances.cpp
+
+libboost_regex-vc80-mt-s-1_34_dir :
+ @if not exist "vc80\libboost_regex-vc80-mt-s-1_34\$(NULL)" mkdir vc80\libboost_regex-vc80-mt-s-1_34
+
+libboost_regex-vc80-mt-s-1_34_clean :
+ del vc80\libboost_regex-vc80-mt-s-1_34\*.obj
+ del vc80\libboost_regex-vc80-mt-s-1_34\*.idb
+ del vc80\libboost_regex-vc80-mt-s-1_34\*.exp
+ del vc80\libboost_regex-vc80-mt-s-1_34\*.pch
+
+./vc80/libboost_regex-vc80-mt-s-1_34.lib : vc80/libboost_regex-vc80-mt-s-1_34/c_regex_traits.obj vc80/libboost_regex-vc80-mt-s-1_34/cpp_regex_traits.obj vc80/libboost_regex-vc80-mt-s-1_34/cregex.obj vc80/libboost_regex-vc80-mt-s-1_34/fileiter.obj vc80/libboost_regex-vc80-mt-s-1_34/icu.obj vc80/libboost_regex-vc80-mt-s-1_34/instances.obj vc80/libboost_regex-vc80-mt-s-1_34/posix_api.obj vc80/libboost_regex-vc80-mt-s-1_34/regex.obj vc80/libboost_regex-vc80-mt-s-1_34/regex_debug.obj vc80/libboost_regex-vc80-mt-s-1_34/regex_raw_buffer.obj vc80/libboost_regex-vc80-mt-s-1_34/regex_traits_defaults.obj vc80/libboost_regex-vc80-mt-s-1_34/static_mutex.obj vc80/libboost_regex-vc80-mt-s-1_34/usinstances.obj vc80/libboost_regex-vc80-mt-s-1_34/w32_regex_traits.obj vc80/libboost_regex-vc80-mt-s-1_34/wc_regex_traits.obj vc80/libboost_regex-vc80-mt-s-1_34/wide_posix_api.obj vc80/libboost_regex-vc80-mt-s-1_34/winstances.obj
+ link -lib /nologo /out:vc80/libboost_regex-vc80-mt-s-1_34.lib $(XSFLAGS) vc80/libboost_regex-vc80-mt-s-1_34/c_regex_traits.obj vc80/libboost_regex-vc80-mt-s-1_34/cpp_regex_traits.obj vc80/libboost_regex-vc80-mt-s-1_34/cregex.obj vc80/libboost_regex-vc80-mt-s-1_34/fileiter.obj vc80/libboost_regex-vc80-mt-s-1_34/icu.obj vc80/libboost_regex-vc80-mt-s-1_34/instances.obj vc80/libboost_regex-vc80-mt-s-1_34/posix_api.obj vc80/libboost_regex-vc80-mt-s-1_34/regex.obj vc80/libboost_regex-vc80-mt-s-1_34/regex_debug.obj vc80/libboost_regex-vc80-mt-s-1_34/regex_raw_buffer.obj vc80/libboost_regex-vc80-mt-s-1_34/regex_traits_defaults.obj vc80/libboost_regex-vc80-mt-s-1_34/static_mutex.obj vc80/libboost_regex-vc80-mt-s-1_34/usinstances.obj vc80/libboost_regex-vc80-mt-s-1_34/w32_regex_traits.obj vc80/libboost_regex-vc80-mt-s-1_34/wc_regex_traits.obj vc80/libboost_regex-vc80-mt-s-1_34/wide_posix_api.obj vc80/libboost_regex-vc80-mt-s-1_34/winstances.obj
+
+########################################################
+#
+# section for libboost_regex-vc80-mt-sgd-1_34.lib
+#
+########################################################
+vc80/libboost_regex-vc80-mt-sgd-1_34/c_regex_traits.obj: ../src/c_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /EHsc /Zi /Od /I..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD /EHsc /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/libboost_regex-vc80-mt-sgd-1_34/ -Fdvc80/libboost_regex-vc80-mt-sgd-1_34.pdb ../src/c_regex_traits.cpp
+
+vc80/libboost_regex-vc80-mt-sgd-1_34/cpp_regex_traits.obj: ../src/cpp_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /EHsc /Zi /Od /I..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD /EHsc /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/libboost_regex-vc80-mt-sgd-1_34/ -Fdvc80/libboost_regex-vc80-mt-sgd-1_34.pdb ../src/cpp_regex_traits.cpp
+
+vc80/libboost_regex-vc80-mt-sgd-1_34/cregex.obj: ../src/cregex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /EHsc /Zi /Od /I..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD /EHsc /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/libboost_regex-vc80-mt-sgd-1_34/ -Fdvc80/libboost_regex-vc80-mt-sgd-1_34.pdb ../src/cregex.cpp
+
+vc80/libboost_regex-vc80-mt-sgd-1_34/fileiter.obj: ../src/fileiter.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /EHsc /Zi /Od /I..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD /EHsc /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/libboost_regex-vc80-mt-sgd-1_34/ -Fdvc80/libboost_regex-vc80-mt-sgd-1_34.pdb ../src/fileiter.cpp
+
+vc80/libboost_regex-vc80-mt-sgd-1_34/icu.obj: ../src/icu.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /EHsc /Zi /Od /I..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD /EHsc /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/libboost_regex-vc80-mt-sgd-1_34/ -Fdvc80/libboost_regex-vc80-mt-sgd-1_34.pdb ../src/icu.cpp
+
+vc80/libboost_regex-vc80-mt-sgd-1_34/instances.obj: ../src/instances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /EHsc /Zi /Od /I..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD /EHsc /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/libboost_regex-vc80-mt-sgd-1_34/ -Fdvc80/libboost_regex-vc80-mt-sgd-1_34.pdb ../src/instances.cpp
+
+vc80/libboost_regex-vc80-mt-sgd-1_34/posix_api.obj: ../src/posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /EHsc /Zi /Od /I..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD /EHsc /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/libboost_regex-vc80-mt-sgd-1_34/ -Fdvc80/libboost_regex-vc80-mt-sgd-1_34.pdb ../src/posix_api.cpp
+
+vc80/libboost_regex-vc80-mt-sgd-1_34/regex.obj: ../src/regex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /EHsc /Zi /Od /I..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD /EHsc /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/libboost_regex-vc80-mt-sgd-1_34/ -Fdvc80/libboost_regex-vc80-mt-sgd-1_34.pdb ../src/regex.cpp
+
+vc80/libboost_regex-vc80-mt-sgd-1_34/regex_debug.obj: ../src/regex_debug.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /EHsc /Zi /Od /I..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD /EHsc /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/libboost_regex-vc80-mt-sgd-1_34/ -Fdvc80/libboost_regex-vc80-mt-sgd-1_34.pdb ../src/regex_debug.cpp
+
+vc80/libboost_regex-vc80-mt-sgd-1_34/regex_raw_buffer.obj: ../src/regex_raw_buffer.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /EHsc /Zi /Od /I..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD /EHsc /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/libboost_regex-vc80-mt-sgd-1_34/ -Fdvc80/libboost_regex-vc80-mt-sgd-1_34.pdb ../src/regex_raw_buffer.cpp
+
+vc80/libboost_regex-vc80-mt-sgd-1_34/regex_traits_defaults.obj: ../src/regex_traits_defaults.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /EHsc /Zi /Od /I..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD /EHsc /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/libboost_regex-vc80-mt-sgd-1_34/ -Fdvc80/libboost_regex-vc80-mt-sgd-1_34.pdb ../src/regex_traits_defaults.cpp
+
+vc80/libboost_regex-vc80-mt-sgd-1_34/static_mutex.obj: ../src/static_mutex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /EHsc /Zi /Od /I..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD /EHsc /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/libboost_regex-vc80-mt-sgd-1_34/ -Fdvc80/libboost_regex-vc80-mt-sgd-1_34.pdb ../src/static_mutex.cpp
+
+vc80/libboost_regex-vc80-mt-sgd-1_34/usinstances.obj: ../src/usinstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /EHsc /Zi /Od /I..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD /EHsc /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/libboost_regex-vc80-mt-sgd-1_34/ -Fdvc80/libboost_regex-vc80-mt-sgd-1_34.pdb ../src/usinstances.cpp
+
+vc80/libboost_regex-vc80-mt-sgd-1_34/w32_regex_traits.obj: ../src/w32_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /EHsc /Zi /Od /I..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD /EHsc /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/libboost_regex-vc80-mt-sgd-1_34/ -Fdvc80/libboost_regex-vc80-mt-sgd-1_34.pdb ../src/w32_regex_traits.cpp
+
+vc80/libboost_regex-vc80-mt-sgd-1_34/wc_regex_traits.obj: ../src/wc_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /EHsc /Zi /Od /I..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD /EHsc /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/libboost_regex-vc80-mt-sgd-1_34/ -Fdvc80/libboost_regex-vc80-mt-sgd-1_34.pdb ../src/wc_regex_traits.cpp
+
+vc80/libboost_regex-vc80-mt-sgd-1_34/wide_posix_api.obj: ../src/wide_posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /EHsc /Zi /Od /I..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD /EHsc /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/libboost_regex-vc80-mt-sgd-1_34/ -Fdvc80/libboost_regex-vc80-mt-sgd-1_34.pdb ../src/wide_posix_api.cpp
+
+vc80/libboost_regex-vc80-mt-sgd-1_34/winstances.obj: ../src/winstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /EHsc /Zi /Od /I..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD /EHsc /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/libboost_regex-vc80-mt-sgd-1_34/ -Fdvc80/libboost_regex-vc80-mt-sgd-1_34.pdb ../src/winstances.cpp
+
+libboost_regex-vc80-mt-sgd-1_34_dir :
+ @if not exist "vc80\libboost_regex-vc80-mt-sgd-1_34\$(NULL)" mkdir vc80\libboost_regex-vc80-mt-sgd-1_34
+
+libboost_regex-vc80-mt-sgd-1_34_clean :
+ del vc80\libboost_regex-vc80-mt-sgd-1_34\*.obj
+ del vc80\libboost_regex-vc80-mt-sgd-1_34\*.idb
+ del vc80\libboost_regex-vc80-mt-sgd-1_34\*.exp
+ del vc80\libboost_regex-vc80-mt-sgd-1_34\*.pch
+
+./vc80/libboost_regex-vc80-mt-sgd-1_34.lib : vc80/libboost_regex-vc80-mt-sgd-1_34/c_regex_traits.obj vc80/libboost_regex-vc80-mt-sgd-1_34/cpp_regex_traits.obj vc80/libboost_regex-vc80-mt-sgd-1_34/cregex.obj vc80/libboost_regex-vc80-mt-sgd-1_34/fileiter.obj vc80/libboost_regex-vc80-mt-sgd-1_34/icu.obj vc80/libboost_regex-vc80-mt-sgd-1_34/instances.obj vc80/libboost_regex-vc80-mt-sgd-1_34/posix_api.obj vc80/libboost_regex-vc80-mt-sgd-1_34/regex.obj vc80/libboost_regex-vc80-mt-sgd-1_34/regex_debug.obj vc80/libboost_regex-vc80-mt-sgd-1_34/regex_raw_buffer.obj vc80/libboost_regex-vc80-mt-sgd-1_34/regex_traits_defaults.obj vc80/libboost_regex-vc80-mt-sgd-1_34/static_mutex.obj vc80/libboost_regex-vc80-mt-sgd-1_34/usinstances.obj vc80/libboost_regex-vc80-mt-sgd-1_34/w32_regex_traits.obj vc80/libboost_regex-vc80-mt-sgd-1_34/wc_regex_traits.obj vc80/libboost_regex-vc80-mt-sgd-1_34/wide_posix_api.obj vc80/libboost_regex-vc80-mt-sgd-1_34/winstances.obj
+ link -lib /nologo /out:vc80/libboost_regex-vc80-mt-sgd-1_34.lib $(XSFLAGS) vc80/libboost_regex-vc80-mt-sgd-1_34/c_regex_traits.obj vc80/libboost_regex-vc80-mt-sgd-1_34/cpp_regex_traits.obj vc80/libboost_regex-vc80-mt-sgd-1_34/cregex.obj vc80/libboost_regex-vc80-mt-sgd-1_34/fileiter.obj vc80/libboost_regex-vc80-mt-sgd-1_34/icu.obj vc80/libboost_regex-vc80-mt-sgd-1_34/instances.obj vc80/libboost_regex-vc80-mt-sgd-1_34/posix_api.obj vc80/libboost_regex-vc80-mt-sgd-1_34/regex.obj vc80/libboost_regex-vc80-mt-sgd-1_34/regex_debug.obj vc80/libboost_regex-vc80-mt-sgd-1_34/regex_raw_buffer.obj vc80/libboost_regex-vc80-mt-sgd-1_34/regex_traits_defaults.obj vc80/libboost_regex-vc80-mt-sgd-1_34/static_mutex.obj vc80/libboost_regex-vc80-mt-sgd-1_34/usinstances.obj vc80/libboost_regex-vc80-mt-sgd-1_34/w32_regex_traits.obj vc80/libboost_regex-vc80-mt-sgd-1_34/wc_regex_traits.obj vc80/libboost_regex-vc80-mt-sgd-1_34/wide_posix_api.obj vc80/libboost_regex-vc80-mt-sgd-1_34/winstances.obj
+
+########################################################
+#
+# section for boost_regex-vc80-mt-gd-1_34.lib
+#
+########################################################
+vc80/boost_regex-vc80-mt-gd-1_34/c_regex_traits.obj: ../src/c_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /EHsc /Zi /Od /I../../../ /D_DEBUG /DBOOST_REGEX_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /EHsc /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/boost_regex-vc80-mt-gd-1_34/ -Fdvc80/boost_regex-vc80-mt-gd-1_34.pdb ../src/c_regex_traits.cpp
+
+vc80/boost_regex-vc80-mt-gd-1_34/cpp_regex_traits.obj: ../src/cpp_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /EHsc /Zi /Od /I../../../ /D_DEBUG /DBOOST_REGEX_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /EHsc /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/boost_regex-vc80-mt-gd-1_34/ -Fdvc80/boost_regex-vc80-mt-gd-1_34.pdb ../src/cpp_regex_traits.cpp
+
+vc80/boost_regex-vc80-mt-gd-1_34/cregex.obj: ../src/cregex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /EHsc /Zi /Od /I../../../ /D_DEBUG /DBOOST_REGEX_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /EHsc /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/boost_regex-vc80-mt-gd-1_34/ -Fdvc80/boost_regex-vc80-mt-gd-1_34.pdb ../src/cregex.cpp
+
+vc80/boost_regex-vc80-mt-gd-1_34/fileiter.obj: ../src/fileiter.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /EHsc /Zi /Od /I../../../ /D_DEBUG /DBOOST_REGEX_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /EHsc /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/boost_regex-vc80-mt-gd-1_34/ -Fdvc80/boost_regex-vc80-mt-gd-1_34.pdb ../src/fileiter.cpp
+
+vc80/boost_regex-vc80-mt-gd-1_34/icu.obj: ../src/icu.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /EHsc /Zi /Od /I../../../ /D_DEBUG /DBOOST_REGEX_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /EHsc /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/boost_regex-vc80-mt-gd-1_34/ -Fdvc80/boost_regex-vc80-mt-gd-1_34.pdb ../src/icu.cpp
+
+vc80/boost_regex-vc80-mt-gd-1_34/instances.obj: ../src/instances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /EHsc /Zi /Od /I../../../ /D_DEBUG /DBOOST_REGEX_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /EHsc /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/boost_regex-vc80-mt-gd-1_34/ -Fdvc80/boost_regex-vc80-mt-gd-1_34.pdb ../src/instances.cpp
+
+vc80/boost_regex-vc80-mt-gd-1_34/posix_api.obj: ../src/posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /EHsc /Zi /Od /I../../../ /D_DEBUG /DBOOST_REGEX_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /EHsc /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/boost_regex-vc80-mt-gd-1_34/ -Fdvc80/boost_regex-vc80-mt-gd-1_34.pdb ../src/posix_api.cpp
+
+vc80/boost_regex-vc80-mt-gd-1_34/regex.obj: ../src/regex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /EHsc /Zi /Od /I../../../ /D_DEBUG /DBOOST_REGEX_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /EHsc /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/boost_regex-vc80-mt-gd-1_34/ -Fdvc80/boost_regex-vc80-mt-gd-1_34.pdb ../src/regex.cpp
+
+vc80/boost_regex-vc80-mt-gd-1_34/regex_debug.obj: ../src/regex_debug.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /EHsc /Zi /Od /I../../../ /D_DEBUG /DBOOST_REGEX_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /EHsc /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/boost_regex-vc80-mt-gd-1_34/ -Fdvc80/boost_regex-vc80-mt-gd-1_34.pdb ../src/regex_debug.cpp
+
+vc80/boost_regex-vc80-mt-gd-1_34/regex_raw_buffer.obj: ../src/regex_raw_buffer.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /EHsc /Zi /Od /I../../../ /D_DEBUG /DBOOST_REGEX_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /EHsc /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/boost_regex-vc80-mt-gd-1_34/ -Fdvc80/boost_regex-vc80-mt-gd-1_34.pdb ../src/regex_raw_buffer.cpp
+
+vc80/boost_regex-vc80-mt-gd-1_34/regex_traits_defaults.obj: ../src/regex_traits_defaults.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /EHsc /Zi /Od /I../../../ /D_DEBUG /DBOOST_REGEX_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /EHsc /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/boost_regex-vc80-mt-gd-1_34/ -Fdvc80/boost_regex-vc80-mt-gd-1_34.pdb ../src/regex_traits_defaults.cpp
+
+vc80/boost_regex-vc80-mt-gd-1_34/static_mutex.obj: ../src/static_mutex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /EHsc /Zi /Od /I../../../ /D_DEBUG /DBOOST_REGEX_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /EHsc /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/boost_regex-vc80-mt-gd-1_34/ -Fdvc80/boost_regex-vc80-mt-gd-1_34.pdb ../src/static_mutex.cpp
+
+vc80/boost_regex-vc80-mt-gd-1_34/usinstances.obj: ../src/usinstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /EHsc /Zi /Od /I../../../ /D_DEBUG /DBOOST_REGEX_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /EHsc /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/boost_regex-vc80-mt-gd-1_34/ -Fdvc80/boost_regex-vc80-mt-gd-1_34.pdb ../src/usinstances.cpp
+
+vc80/boost_regex-vc80-mt-gd-1_34/w32_regex_traits.obj: ../src/w32_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /EHsc /Zi /Od /I../../../ /D_DEBUG /DBOOST_REGEX_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /EHsc /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/boost_regex-vc80-mt-gd-1_34/ -Fdvc80/boost_regex-vc80-mt-gd-1_34.pdb ../src/w32_regex_traits.cpp
+
+vc80/boost_regex-vc80-mt-gd-1_34/wc_regex_traits.obj: ../src/wc_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /EHsc /Zi /Od /I../../../ /D_DEBUG /DBOOST_REGEX_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /EHsc /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/boost_regex-vc80-mt-gd-1_34/ -Fdvc80/boost_regex-vc80-mt-gd-1_34.pdb ../src/wc_regex_traits.cpp
+
+vc80/boost_regex-vc80-mt-gd-1_34/wide_posix_api.obj: ../src/wide_posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /EHsc /Zi /Od /I../../../ /D_DEBUG /DBOOST_REGEX_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /EHsc /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/boost_regex-vc80-mt-gd-1_34/ -Fdvc80/boost_regex-vc80-mt-gd-1_34.pdb ../src/wide_posix_api.cpp
+
+vc80/boost_regex-vc80-mt-gd-1_34/winstances.obj: ../src/winstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /EHsc /Zi /Od /I../../../ /D_DEBUG /DBOOST_REGEX_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /EHsc /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/boost_regex-vc80-mt-gd-1_34/ -Fdvc80/boost_regex-vc80-mt-gd-1_34.pdb ../src/winstances.cpp
+
+boost_regex-vc80-mt-gd-1_34_dir :
+ @if not exist "vc80\boost_regex-vc80-mt-gd-1_34\$(NULL)" mkdir vc80\boost_regex-vc80-mt-gd-1_34
+
+boost_regex-vc80-mt-gd-1_34_clean :
+ del vc80\boost_regex-vc80-mt-gd-1_34\*.obj
+ del vc80\boost_regex-vc80-mt-gd-1_34\*.idb
+ del vc80\boost_regex-vc80-mt-gd-1_34\*.exp
+ del vc80\boost_regex-vc80-mt-gd-1_34\*.pch
+
+./vc80/boost_regex-vc80-mt-gd-1_34.lib : vc80/boost_regex-vc80-mt-gd-1_34/c_regex_traits.obj vc80/boost_regex-vc80-mt-gd-1_34/cpp_regex_traits.obj vc80/boost_regex-vc80-mt-gd-1_34/cregex.obj vc80/boost_regex-vc80-mt-gd-1_34/fileiter.obj vc80/boost_regex-vc80-mt-gd-1_34/icu.obj vc80/boost_regex-vc80-mt-gd-1_34/instances.obj vc80/boost_regex-vc80-mt-gd-1_34/posix_api.obj vc80/boost_regex-vc80-mt-gd-1_34/regex.obj vc80/boost_regex-vc80-mt-gd-1_34/regex_debug.obj vc80/boost_regex-vc80-mt-gd-1_34/regex_raw_buffer.obj vc80/boost_regex-vc80-mt-gd-1_34/regex_traits_defaults.obj vc80/boost_regex-vc80-mt-gd-1_34/static_mutex.obj vc80/boost_regex-vc80-mt-gd-1_34/usinstances.obj vc80/boost_regex-vc80-mt-gd-1_34/w32_regex_traits.obj vc80/boost_regex-vc80-mt-gd-1_34/wc_regex_traits.obj vc80/boost_regex-vc80-mt-gd-1_34/wide_posix_api.obj vc80/boost_regex-vc80-mt-gd-1_34/winstances.obj
+ link kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:yes /pdb:"vc80/boost_regex-vc80-mt-gd-1_34.pdb" /debug /machine:I386 /out:"vc80/boost_regex-vc80-mt-gd-1_34.dll" /implib:"vc80/boost_regex-vc80-mt-gd-1_34.lib" /LIBPATH:"$(STLPORT_PATH)\lib" $(XLFLAGS) $(ICU_LINK_OPTS) vc80/boost_regex-vc80-mt-gd-1_34/c_regex_traits.obj vc80/boost_regex-vc80-mt-gd-1_34/cpp_regex_traits.obj vc80/boost_regex-vc80-mt-gd-1_34/cregex.obj vc80/boost_regex-vc80-mt-gd-1_34/fileiter.obj vc80/boost_regex-vc80-mt-gd-1_34/icu.obj vc80/boost_regex-vc80-mt-gd-1_34/instances.obj vc80/boost_regex-vc80-mt-gd-1_34/posix_api.obj vc80/boost_regex-vc80-mt-gd-1_34/regex.obj vc80/boost_regex-vc80-mt-gd-1_34/regex_debug.obj vc80/boost_regex-vc80-mt-gd-1_34/regex_raw_buffer.obj vc80/boost_regex-vc80-mt-gd-1_34/regex_traits_defaults.obj vc80/boost_regex-vc80-mt-gd-1_34/static_mutex.obj vc80/boost_regex-vc80-mt-gd-1_34/usinstance
s.obj vc80/boost_regex-vc80-mt-gd-1_34/w32_regex_traits.obj vc80/boost_regex-vc80-mt-gd-1_34/wc_regex_traits.obj vc80/boost_regex-vc80-mt-gd-1_34/wide_posix_api.obj vc80/boost_regex-vc80-mt-gd-1_34/winstances.obj
+
+########################################################
+#
+# section for boost_regex-vc80-mt-1_34.lib
+#
+########################################################
+vc80/boost_regex-vc80-mt-1_34/c_regex_traits.obj: ../src/c_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /EHsc /O2 /GF /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/boost_regex-vc80-mt-1_34/ -Fdvc80/boost_regex-vc80-mt-1_34.pdb ../src/c_regex_traits.cpp
+
+vc80/boost_regex-vc80-mt-1_34/cpp_regex_traits.obj: ../src/cpp_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /EHsc /O2 /GF /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/boost_regex-vc80-mt-1_34/ -Fdvc80/boost_regex-vc80-mt-1_34.pdb ../src/cpp_regex_traits.cpp
+
+vc80/boost_regex-vc80-mt-1_34/cregex.obj: ../src/cregex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /EHsc /O2 /GF /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/boost_regex-vc80-mt-1_34/ -Fdvc80/boost_regex-vc80-mt-1_34.pdb ../src/cregex.cpp
+
+vc80/boost_regex-vc80-mt-1_34/fileiter.obj: ../src/fileiter.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /EHsc /O2 /GF /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/boost_regex-vc80-mt-1_34/ -Fdvc80/boost_regex-vc80-mt-1_34.pdb ../src/fileiter.cpp
+
+vc80/boost_regex-vc80-mt-1_34/icu.obj: ../src/icu.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /EHsc /O2 /GF /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/boost_regex-vc80-mt-1_34/ -Fdvc80/boost_regex-vc80-mt-1_34.pdb ../src/icu.cpp
+
+vc80/boost_regex-vc80-mt-1_34/instances.obj: ../src/instances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /EHsc /O2 /GF /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/boost_regex-vc80-mt-1_34/ -Fdvc80/boost_regex-vc80-mt-1_34.pdb ../src/instances.cpp
+
+vc80/boost_regex-vc80-mt-1_34/posix_api.obj: ../src/posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /EHsc /O2 /GF /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/boost_regex-vc80-mt-1_34/ -Fdvc80/boost_regex-vc80-mt-1_34.pdb ../src/posix_api.cpp
+
+vc80/boost_regex-vc80-mt-1_34/regex.obj: ../src/regex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /EHsc /O2 /GF /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/boost_regex-vc80-mt-1_34/ -Fdvc80/boost_regex-vc80-mt-1_34.pdb ../src/regex.cpp
+
+vc80/boost_regex-vc80-mt-1_34/regex_debug.obj: ../src/regex_debug.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /EHsc /O2 /GF /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/boost_regex-vc80-mt-1_34/ -Fdvc80/boost_regex-vc80-mt-1_34.pdb ../src/regex_debug.cpp
+
+vc80/boost_regex-vc80-mt-1_34/regex_raw_buffer.obj: ../src/regex_raw_buffer.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /EHsc /O2 /GF /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/boost_regex-vc80-mt-1_34/ -Fdvc80/boost_regex-vc80-mt-1_34.pdb ../src/regex_raw_buffer.cpp
+
+vc80/boost_regex-vc80-mt-1_34/regex_traits_defaults.obj: ../src/regex_traits_defaults.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /EHsc /O2 /GF /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/boost_regex-vc80-mt-1_34/ -Fdvc80/boost_regex-vc80-mt-1_34.pdb ../src/regex_traits_defaults.cpp
+
+vc80/boost_regex-vc80-mt-1_34/static_mutex.obj: ../src/static_mutex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /EHsc /O2 /GF /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/boost_regex-vc80-mt-1_34/ -Fdvc80/boost_regex-vc80-mt-1_34.pdb ../src/static_mutex.cpp
+
+vc80/boost_regex-vc80-mt-1_34/usinstances.obj: ../src/usinstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /EHsc /O2 /GF /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/boost_regex-vc80-mt-1_34/ -Fdvc80/boost_regex-vc80-mt-1_34.pdb ../src/usinstances.cpp
+
+vc80/boost_regex-vc80-mt-1_34/w32_regex_traits.obj: ../src/w32_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /EHsc /O2 /GF /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/boost_regex-vc80-mt-1_34/ -Fdvc80/boost_regex-vc80-mt-1_34.pdb ../src/w32_regex_traits.cpp
+
+vc80/boost_regex-vc80-mt-1_34/wc_regex_traits.obj: ../src/wc_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /EHsc /O2 /GF /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/boost_regex-vc80-mt-1_34/ -Fdvc80/boost_regex-vc80-mt-1_34.pdb ../src/wc_regex_traits.cpp
+
+vc80/boost_regex-vc80-mt-1_34/wide_posix_api.obj: ../src/wide_posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /EHsc /O2 /GF /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/boost_regex-vc80-mt-1_34/ -Fdvc80/boost_regex-vc80-mt-1_34.pdb ../src/wide_posix_api.cpp
+
+vc80/boost_regex-vc80-mt-1_34/winstances.obj: ../src/winstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /EHsc /O2 /GF /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/boost_regex-vc80-mt-1_34/ -Fdvc80/boost_regex-vc80-mt-1_34.pdb ../src/winstances.cpp
+
+boost_regex-vc80-mt-1_34_dir :
+ @if not exist "vc80\boost_regex-vc80-mt-1_34\$(NULL)" mkdir vc80\boost_regex-vc80-mt-1_34
+
+boost_regex-vc80-mt-1_34_clean :
+ del vc80\boost_regex-vc80-mt-1_34\*.obj
+ del vc80\boost_regex-vc80-mt-1_34\*.idb
+ del vc80\boost_regex-vc80-mt-1_34\*.exp
+ del vc80\boost_regex-vc80-mt-1_34\*.pch
+
+./vc80/boost_regex-vc80-mt-1_34.lib : vc80/boost_regex-vc80-mt-1_34/c_regex_traits.obj vc80/boost_regex-vc80-mt-1_34/cpp_regex_traits.obj vc80/boost_regex-vc80-mt-1_34/cregex.obj vc80/boost_regex-vc80-mt-1_34/fileiter.obj vc80/boost_regex-vc80-mt-1_34/icu.obj vc80/boost_regex-vc80-mt-1_34/instances.obj vc80/boost_regex-vc80-mt-1_34/posix_api.obj vc80/boost_regex-vc80-mt-1_34/regex.obj vc80/boost_regex-vc80-mt-1_34/regex_debug.obj vc80/boost_regex-vc80-mt-1_34/regex_raw_buffer.obj vc80/boost_regex-vc80-mt-1_34/regex_traits_defaults.obj vc80/boost_regex-vc80-mt-1_34/static_mutex.obj vc80/boost_regex-vc80-mt-1_34/usinstances.obj vc80/boost_regex-vc80-mt-1_34/w32_regex_traits.obj vc80/boost_regex-vc80-mt-1_34/wc_regex_traits.obj vc80/boost_regex-vc80-mt-1_34/wide_posix_api.obj vc80/boost_regex-vc80-mt-1_34/winstances.obj
+ link kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:yes /pdb:"vc80/boost_regex-vc80-mt-1_34.pdb" /debug /machine:I386 /out:"vc80/boost_regex-vc80-mt-1_34.dll" /implib:"vc80/boost_regex-vc80-mt-1_34.lib" /LIBPATH:"$(STLPORT_PATH)\lib" $(XLFLAGS) $(ICU_LINK_OPTS) vc80/boost_regex-vc80-mt-1_34/c_regex_traits.obj vc80/boost_regex-vc80-mt-1_34/cpp_regex_traits.obj vc80/boost_regex-vc80-mt-1_34/cregex.obj vc80/boost_regex-vc80-mt-1_34/fileiter.obj vc80/boost_regex-vc80-mt-1_34/icu.obj vc80/boost_regex-vc80-mt-1_34/instances.obj vc80/boost_regex-vc80-mt-1_34/posix_api.obj vc80/boost_regex-vc80-mt-1_34/regex.obj vc80/boost_regex-vc80-mt-1_34/regex_debug.obj vc80/boost_regex-vc80-mt-1_34/regex_raw_buffer.obj vc80/boost_regex-vc80-mt-1_34/regex_traits_defaults.obj vc80/boost_regex-vc80-mt-1_34/static_mutex.obj vc80/boost_regex-vc80-mt-1_34/usinstances.obj vc80/boost_regex-vc80-mt-1_34/w32_regex_tr
aits.obj vc80/boost_regex-vc80-mt-1_34/wc_regex_traits.obj vc80/boost_regex-vc80-mt-1_34/wide_posix_api.obj vc80/boost_regex-vc80-mt-1_34/winstances.obj
+
+########################################################
+#
+# section for libboost_regex-vc80-mt-1_34.lib
+#
+########################################################
+vc80/libboost_regex-vc80-mt-1_34/c_regex_traits.obj: ../src/c_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /EHsc /O2 /GF /Gy /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/libboost_regex-vc80-mt-1_34/ -Fdvc80/libboost_regex-vc80-mt-1_34.pdb ../src/c_regex_traits.cpp
+
+vc80/libboost_regex-vc80-mt-1_34/cpp_regex_traits.obj: ../src/cpp_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /EHsc /O2 /GF /Gy /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/libboost_regex-vc80-mt-1_34/ -Fdvc80/libboost_regex-vc80-mt-1_34.pdb ../src/cpp_regex_traits.cpp
+
+vc80/libboost_regex-vc80-mt-1_34/cregex.obj: ../src/cregex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /EHsc /O2 /GF /Gy /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/libboost_regex-vc80-mt-1_34/ -Fdvc80/libboost_regex-vc80-mt-1_34.pdb ../src/cregex.cpp
+
+vc80/libboost_regex-vc80-mt-1_34/fileiter.obj: ../src/fileiter.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /EHsc /O2 /GF /Gy /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/libboost_regex-vc80-mt-1_34/ -Fdvc80/libboost_regex-vc80-mt-1_34.pdb ../src/fileiter.cpp
+
+vc80/libboost_regex-vc80-mt-1_34/icu.obj: ../src/icu.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /EHsc /O2 /GF /Gy /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/libboost_regex-vc80-mt-1_34/ -Fdvc80/libboost_regex-vc80-mt-1_34.pdb ../src/icu.cpp
+
+vc80/libboost_regex-vc80-mt-1_34/instances.obj: ../src/instances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /EHsc /O2 /GF /Gy /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/libboost_regex-vc80-mt-1_34/ -Fdvc80/libboost_regex-vc80-mt-1_34.pdb ../src/instances.cpp
+
+vc80/libboost_regex-vc80-mt-1_34/posix_api.obj: ../src/posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /EHsc /O2 /GF /Gy /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/libboost_regex-vc80-mt-1_34/ -Fdvc80/libboost_regex-vc80-mt-1_34.pdb ../src/posix_api.cpp
+
+vc80/libboost_regex-vc80-mt-1_34/regex.obj: ../src/regex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /EHsc /O2 /GF /Gy /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/libboost_regex-vc80-mt-1_34/ -Fdvc80/libboost_regex-vc80-mt-1_34.pdb ../src/regex.cpp
+
+vc80/libboost_regex-vc80-mt-1_34/regex_debug.obj: ../src/regex_debug.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /EHsc /O2 /GF /Gy /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/libboost_regex-vc80-mt-1_34/ -Fdvc80/libboost_regex-vc80-mt-1_34.pdb ../src/regex_debug.cpp
+
+vc80/libboost_regex-vc80-mt-1_34/regex_raw_buffer.obj: ../src/regex_raw_buffer.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /EHsc /O2 /GF /Gy /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/libboost_regex-vc80-mt-1_34/ -Fdvc80/libboost_regex-vc80-mt-1_34.pdb ../src/regex_raw_buffer.cpp
+
+vc80/libboost_regex-vc80-mt-1_34/regex_traits_defaults.obj: ../src/regex_traits_defaults.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /EHsc /O2 /GF /Gy /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/libboost_regex-vc80-mt-1_34/ -Fdvc80/libboost_regex-vc80-mt-1_34.pdb ../src/regex_traits_defaults.cpp
+
+vc80/libboost_regex-vc80-mt-1_34/static_mutex.obj: ../src/static_mutex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /EHsc /O2 /GF /Gy /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/libboost_regex-vc80-mt-1_34/ -Fdvc80/libboost_regex-vc80-mt-1_34.pdb ../src/static_mutex.cpp
+
+vc80/libboost_regex-vc80-mt-1_34/usinstances.obj: ../src/usinstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /EHsc /O2 /GF /Gy /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/libboost_regex-vc80-mt-1_34/ -Fdvc80/libboost_regex-vc80-mt-1_34.pdb ../src/usinstances.cpp
+
+vc80/libboost_regex-vc80-mt-1_34/w32_regex_traits.obj: ../src/w32_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /EHsc /O2 /GF /Gy /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/libboost_regex-vc80-mt-1_34/ -Fdvc80/libboost_regex-vc80-mt-1_34.pdb ../src/w32_regex_traits.cpp
+
+vc80/libboost_regex-vc80-mt-1_34/wc_regex_traits.obj: ../src/wc_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /EHsc /O2 /GF /Gy /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/libboost_regex-vc80-mt-1_34/ -Fdvc80/libboost_regex-vc80-mt-1_34.pdb ../src/wc_regex_traits.cpp
+
+vc80/libboost_regex-vc80-mt-1_34/wide_posix_api.obj: ../src/wide_posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /EHsc /O2 /GF /Gy /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/libboost_regex-vc80-mt-1_34/ -Fdvc80/libboost_regex-vc80-mt-1_34.pdb ../src/wide_posix_api.cpp
+
+vc80/libboost_regex-vc80-mt-1_34/winstances.obj: ../src/winstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MD /W3 /EHsc /O2 /GF /Gy /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /Zc:wchar_t /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/libboost_regex-vc80-mt-1_34/ -Fdvc80/libboost_regex-vc80-mt-1_34.pdb ../src/winstances.cpp
+
+libboost_regex-vc80-mt-1_34_dir :
+ @if not exist "vc80\libboost_regex-vc80-mt-1_34\$(NULL)" mkdir vc80\libboost_regex-vc80-mt-1_34
+
+libboost_regex-vc80-mt-1_34_clean :
+ del vc80\libboost_regex-vc80-mt-1_34\*.obj
+ del vc80\libboost_regex-vc80-mt-1_34\*.idb
+ del vc80\libboost_regex-vc80-mt-1_34\*.exp
+ del vc80\libboost_regex-vc80-mt-1_34\*.pch
+
+./vc80/libboost_regex-vc80-mt-1_34.lib : vc80/libboost_regex-vc80-mt-1_34/c_regex_traits.obj vc80/libboost_regex-vc80-mt-1_34/cpp_regex_traits.obj vc80/libboost_regex-vc80-mt-1_34/cregex.obj vc80/libboost_regex-vc80-mt-1_34/fileiter.obj vc80/libboost_regex-vc80-mt-1_34/icu.obj vc80/libboost_regex-vc80-mt-1_34/instances.obj vc80/libboost_regex-vc80-mt-1_34/posix_api.obj vc80/libboost_regex-vc80-mt-1_34/regex.obj vc80/libboost_regex-vc80-mt-1_34/regex_debug.obj vc80/libboost_regex-vc80-mt-1_34/regex_raw_buffer.obj vc80/libboost_regex-vc80-mt-1_34/regex_traits_defaults.obj vc80/libboost_regex-vc80-mt-1_34/static_mutex.obj vc80/libboost_regex-vc80-mt-1_34/usinstances.obj vc80/libboost_regex-vc80-mt-1_34/w32_regex_traits.obj vc80/libboost_regex-vc80-mt-1_34/wc_regex_traits.obj vc80/libboost_regex-vc80-mt-1_34/wide_posix_api.obj vc80/libboost_regex-vc80-mt-1_34/winstances.obj
+ link -lib /nologo /out:vc80/libboost_regex-vc80-mt-1_34.lib $(XSFLAGS) vc80/libboost_regex-vc80-mt-1_34/c_regex_traits.obj vc80/libboost_regex-vc80-mt-1_34/cpp_regex_traits.obj vc80/libboost_regex-vc80-mt-1_34/cregex.obj vc80/libboost_regex-vc80-mt-1_34/fileiter.obj vc80/libboost_regex-vc80-mt-1_34/icu.obj vc80/libboost_regex-vc80-mt-1_34/instances.obj vc80/libboost_regex-vc80-mt-1_34/posix_api.obj vc80/libboost_regex-vc80-mt-1_34/regex.obj vc80/libboost_regex-vc80-mt-1_34/regex_debug.obj vc80/libboost_regex-vc80-mt-1_34/regex_raw_buffer.obj vc80/libboost_regex-vc80-mt-1_34/regex_traits_defaults.obj vc80/libboost_regex-vc80-mt-1_34/static_mutex.obj vc80/libboost_regex-vc80-mt-1_34/usinstances.obj vc80/libboost_regex-vc80-mt-1_34/w32_regex_traits.obj vc80/libboost_regex-vc80-mt-1_34/wc_regex_traits.obj vc80/libboost_regex-vc80-mt-1_34/wide_posix_api.obj vc80/libboost_regex-vc80-mt-1_34/winstances.obj
+
+########################################################
+#
+# section for libboost_regex-vc80-mt-gd-1_34.lib
+#
+########################################################
+vc80/libboost_regex-vc80-mt-gd-1_34/c_regex_traits.obj: ../src/c_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /EHsc /Zi /Od /I../../../ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /EHsc /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/libboost_regex-vc80-mt-gd-1_34/ -Fdvc80/libboost_regex-vc80-mt-gd-1_34.pdb ../src/c_regex_traits.cpp
+
+vc80/libboost_regex-vc80-mt-gd-1_34/cpp_regex_traits.obj: ../src/cpp_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /EHsc /Zi /Od /I../../../ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /EHsc /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/libboost_regex-vc80-mt-gd-1_34/ -Fdvc80/libboost_regex-vc80-mt-gd-1_34.pdb ../src/cpp_regex_traits.cpp
+
+vc80/libboost_regex-vc80-mt-gd-1_34/cregex.obj: ../src/cregex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /EHsc /Zi /Od /I../../../ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /EHsc /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/libboost_regex-vc80-mt-gd-1_34/ -Fdvc80/libboost_regex-vc80-mt-gd-1_34.pdb ../src/cregex.cpp
+
+vc80/libboost_regex-vc80-mt-gd-1_34/fileiter.obj: ../src/fileiter.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /EHsc /Zi /Od /I../../../ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /EHsc /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/libboost_regex-vc80-mt-gd-1_34/ -Fdvc80/libboost_regex-vc80-mt-gd-1_34.pdb ../src/fileiter.cpp
+
+vc80/libboost_regex-vc80-mt-gd-1_34/icu.obj: ../src/icu.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /EHsc /Zi /Od /I../../../ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /EHsc /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/libboost_regex-vc80-mt-gd-1_34/ -Fdvc80/libboost_regex-vc80-mt-gd-1_34.pdb ../src/icu.cpp
+
+vc80/libboost_regex-vc80-mt-gd-1_34/instances.obj: ../src/instances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /EHsc /Zi /Od /I../../../ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /EHsc /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/libboost_regex-vc80-mt-gd-1_34/ -Fdvc80/libboost_regex-vc80-mt-gd-1_34.pdb ../src/instances.cpp
+
+vc80/libboost_regex-vc80-mt-gd-1_34/posix_api.obj: ../src/posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /EHsc /Zi /Od /I../../../ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /EHsc /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/libboost_regex-vc80-mt-gd-1_34/ -Fdvc80/libboost_regex-vc80-mt-gd-1_34.pdb ../src/posix_api.cpp
+
+vc80/libboost_regex-vc80-mt-gd-1_34/regex.obj: ../src/regex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /EHsc /Zi /Od /I../../../ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /EHsc /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/libboost_regex-vc80-mt-gd-1_34/ -Fdvc80/libboost_regex-vc80-mt-gd-1_34.pdb ../src/regex.cpp
+
+vc80/libboost_regex-vc80-mt-gd-1_34/regex_debug.obj: ../src/regex_debug.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /EHsc /Zi /Od /I../../../ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /EHsc /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/libboost_regex-vc80-mt-gd-1_34/ -Fdvc80/libboost_regex-vc80-mt-gd-1_34.pdb ../src/regex_debug.cpp
+
+vc80/libboost_regex-vc80-mt-gd-1_34/regex_raw_buffer.obj: ../src/regex_raw_buffer.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /EHsc /Zi /Od /I../../../ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /EHsc /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/libboost_regex-vc80-mt-gd-1_34/ -Fdvc80/libboost_regex-vc80-mt-gd-1_34.pdb ../src/regex_raw_buffer.cpp
+
+vc80/libboost_regex-vc80-mt-gd-1_34/regex_traits_defaults.obj: ../src/regex_traits_defaults.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /EHsc /Zi /Od /I../../../ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /EHsc /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/libboost_regex-vc80-mt-gd-1_34/ -Fdvc80/libboost_regex-vc80-mt-gd-1_34.pdb ../src/regex_traits_defaults.cpp
+
+vc80/libboost_regex-vc80-mt-gd-1_34/static_mutex.obj: ../src/static_mutex.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /EHsc /Zi /Od /I../../../ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /EHsc /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/libboost_regex-vc80-mt-gd-1_34/ -Fdvc80/libboost_regex-vc80-mt-gd-1_34.pdb ../src/static_mutex.cpp
+
+vc80/libboost_regex-vc80-mt-gd-1_34/usinstances.obj: ../src/usinstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /EHsc /Zi /Od /I../../../ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /EHsc /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/libboost_regex-vc80-mt-gd-1_34/ -Fdvc80/libboost_regex-vc80-mt-gd-1_34.pdb ../src/usinstances.cpp
+
+vc80/libboost_regex-vc80-mt-gd-1_34/w32_regex_traits.obj: ../src/w32_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /EHsc /Zi /Od /I../../../ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /EHsc /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/libboost_regex-vc80-mt-gd-1_34/ -Fdvc80/libboost_regex-vc80-mt-gd-1_34.pdb ../src/w32_regex_traits.cpp
+
+vc80/libboost_regex-vc80-mt-gd-1_34/wc_regex_traits.obj: ../src/wc_regex_traits.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /EHsc /Zi /Od /I../../../ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /EHsc /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/libboost_regex-vc80-mt-gd-1_34/ -Fdvc80/libboost_regex-vc80-mt-gd-1_34.pdb ../src/wc_regex_traits.cpp
+
+vc80/libboost_regex-vc80-mt-gd-1_34/wide_posix_api.obj: ../src/wide_posix_api.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /EHsc /Zi /Od /I../../../ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /EHsc /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/libboost_regex-vc80-mt-gd-1_34/ -Fdvc80/libboost_regex-vc80-mt-gd-1_34.pdb ../src/wide_posix_api.cpp
+
+vc80/libboost_regex-vc80-mt-gd-1_34/winstances.obj: ../src/winstances.cpp $(ALL_HEADER)
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /EHsc /Zi /Od /I../../../ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /EHsc /c $(CXXFLAGS) $(ICU_COMPILE_OPTS) -Y- -Fo./vc80/libboost_regex-vc80-mt-gd-1_34/ -Fdvc80/libboost_regex-vc80-mt-gd-1_34.pdb ../src/winstances.cpp
+
+libboost_regex-vc80-mt-gd-1_34_dir :
+ @if not exist "vc80\libboost_regex-vc80-mt-gd-1_34\$(NULL)" mkdir vc80\libboost_regex-vc80-mt-gd-1_34
+
+libboost_regex-vc80-mt-gd-1_34_clean :
+ del vc80\libboost_regex-vc80-mt-gd-1_34\*.obj
+ del vc80\libboost_regex-vc80-mt-gd-1_34\*.idb
+ del vc80\libboost_regex-vc80-mt-gd-1_34\*.exp
+ del vc80\libboost_regex-vc80-mt-gd-1_34\*.pch
+
+./vc80/libboost_regex-vc80-mt-gd-1_34.lib : vc80/libboost_regex-vc80-mt-gd-1_34/c_regex_traits.obj vc80/libboost_regex-vc80-mt-gd-1_34/cpp_regex_traits.obj vc80/libboost_regex-vc80-mt-gd-1_34/cregex.obj vc80/libboost_regex-vc80-mt-gd-1_34/fileiter.obj vc80/libboost_regex-vc80-mt-gd-1_34/icu.obj vc80/libboost_regex-vc80-mt-gd-1_34/instances.obj vc80/libboost_regex-vc80-mt-gd-1_34/posix_api.obj vc80/libboost_regex-vc80-mt-gd-1_34/regex.obj vc80/libboost_regex-vc80-mt-gd-1_34/regex_debug.obj vc80/libboost_regex-vc80-mt-gd-1_34/regex_raw_buffer.obj vc80/libboost_regex-vc80-mt-gd-1_34/regex_traits_defaults.obj vc80/libboost_regex-vc80-mt-gd-1_34/static_mutex.obj vc80/libboost_regex-vc80-mt-gd-1_34/usinstances.obj vc80/libboost_regex-vc80-mt-gd-1_34/w32_regex_traits.obj vc80/libboost_regex-vc80-mt-gd-1_34/wc_regex_traits.obj vc80/libboost_regex-vc80-mt-gd-1_34/wide_posix_api.obj vc80/libboost_regex-vc80-mt-gd-1_34/winstances.obj
+ link -lib /nologo /out:vc80/libboost_regex-vc80-mt-gd-1_34.lib $(XSFLAGS) vc80/libboost_regex-vc80-mt-gd-1_34/c_regex_traits.obj vc80/libboost_regex-vc80-mt-gd-1_34/cpp_regex_traits.obj vc80/libboost_regex-vc80-mt-gd-1_34/cregex.obj vc80/libboost_regex-vc80-mt-gd-1_34/fileiter.obj vc80/libboost_regex-vc80-mt-gd-1_34/icu.obj vc80/libboost_regex-vc80-mt-gd-1_34/instances.obj vc80/libboost_regex-vc80-mt-gd-1_34/posix_api.obj vc80/libboost_regex-vc80-mt-gd-1_34/regex.obj vc80/libboost_regex-vc80-mt-gd-1_34/regex_debug.obj vc80/libboost_regex-vc80-mt-gd-1_34/regex_raw_buffer.obj vc80/libboost_regex-vc80-mt-gd-1_34/regex_traits_defaults.obj vc80/libboost_regex-vc80-mt-gd-1_34/static_mutex.obj vc80/libboost_regex-vc80-mt-gd-1_34/usinstances.obj vc80/libboost_regex-vc80-mt-gd-1_34/w32_regex_traits.obj vc80/libboost_regex-vc80-mt-gd-1_34/wc_regex_traits.obj vc80/libboost_regex-vc80-mt-gd-1_34/wide_posix_api.obj vc80/libboost_regex-vc80-mt-gd-1_34/winstances.obj
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/build/vc_gen.sh
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/build/vc_gen.sh 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,491 @@
+#! /bin/bash
+
+# copyright John Maddock 2003
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt.
+
+libname=""
+src=""
+header=""
+all_dep=""
+
+# current makefile:
+out=""
+# temporary file:
+tout=""
+# install target temp file:
+iout=""
+# debug flag:
+debug="no"
+# compile options:
+opts=""
+# main output sub-directory:
+subdir=""
+stlport_suffix=""
+# extra debug /RTc options:
+debug_extra=""
+
+function vc6_gen_lib()
+{
+ all_dep="$all_dep $libname""_dir ./$subdir$stlport_suffix/$libname.lib"
+ echo " copy $subdir$stlport_suffix\\$libname.lib "'"$'"(MSVCDIR)\\lib"'"' >> $iout
+ if test $debug == "yes"; then
+ echo " copy $subdir$stlport_suffix\\$libname.pdb "'"$'"(MSVCDIR)\\lib"'"' >> $iout
+ fi
+#
+# set up section comments:
+ cat >> $tout << EOF
+########################################################
+#
+# section for $libname.lib
+#
+########################################################
+EOF
+#
+# process source files:
+ all_obj=""
+ for file in $src
+ do
+ obj=`echo "$file" | sed 's/.*src\/\(.*\)cpp/\1obj/g'`
+ obj="$subdir$stlport_suffix/$libname/$obj"
+ all_obj="$all_obj $obj"
+ echo "$obj: $file \$(ALL_HEADER)" >> $tout
+ echo " cl \$(INCLUDES) $opts \$(CXXFLAGS) \$(ICU_COMPILE_OPTS) -Y- -Fo./$subdir$stlport_suffix/$libname/ -Fd$subdir$stlport_suffix/$libname.pdb $file" >> $tout
+ echo "" >> $tout
+ done
+#
+# now for the directories for this library:
+ echo "$libname"_dir : >> $tout
+ echo " @if not exist \"$subdir$stlport_suffix\\$libname\\\$(NULL)\" mkdir $subdir$stlport_suffix\\$libname" >> $tout
+ echo "" >> $tout
+#
+# now for the clean options for this library:
+ all_clean="$all_clean $libname""_clean"
+ echo "$libname"_clean : >> $tout
+ echo " del $subdir$stlport_suffix\\$libname\\"'*.obj' >> $tout
+ echo " del $subdir$stlport_suffix\\$libname\\"'*.idb' >> $tout
+ echo " del $subdir$stlport_suffix\\$libname\\"'*.exp' >> $tout
+ echo " del $subdir$stlport_suffix\\$libname\\"'*.pch' >> $tout
+ echo "" >> $tout
+#
+# now for the main target for this library:
+ echo ./$subdir$stlport_suffix/$libname.lib : $all_obj >> $tout
+ echo " link -lib /nologo /out:$subdir$stlport_suffix/$libname.lib \$(XSFLAGS) $all_obj" >> $tout
+ echo "" >> $tout
+}
+
+function vc6_gen_dll()
+{
+ all_dep="$all_dep $libname""_dir ./$subdir$stlport_suffix/$libname.lib"
+ echo " copy $subdir$stlport_suffix\\$libname.lib "'"$'"(MSVCDIR)\\lib"'"' >> $iout
+ echo " copy $subdir$stlport_suffix\\$libname.dll "'"$'"(MSVCDIR)\\bin"'"' >> $iout
+ if test $debug == "yes"; then
+ echo " copy $subdir$stlport_suffix\\$libname.pdb "'"$'"(MSVCDIR)\\lib"'"' >> $iout
+ fi
+#
+# set up section comments:
+ cat >> $tout << EOF
+########################################################
+#
+# section for $libname.lib
+#
+########################################################
+EOF
+#
+# process source files:
+ all_obj=""
+ for file in $src
+ do
+ obj=`echo "$file" | sed 's/.*src\/\(.*\)cpp/\1obj/g'`
+ obj="$subdir$stlport_suffix/$libname/$obj"
+ all_obj="$all_obj $obj"
+ echo "$obj: $file \$(ALL_HEADER)" >> $tout
+ echo " cl \$(INCLUDES) $opts \$(CXXFLAGS) \$(ICU_COMPILE_OPTS) -Y- -Fo./$subdir$stlport_suffix/$libname/ -Fd$subdir$stlport_suffix/$libname.pdb $file" >> $tout
+ echo "" >> $tout
+ done
+#
+# now for the directories for this library:
+ echo "$libname"_dir : >> $tout
+ echo " @if not exist \"$subdir$stlport_suffix\\$libname\\\$(NULL)\" mkdir $subdir$stlport_suffix\\$libname" >> $tout
+ echo "" >> $tout
+#
+# now for the clean options for this library:
+ all_clean="$all_clean $libname""_clean"
+ echo "$libname"_clean : >> $tout
+ echo " del $subdir$stlport_suffix\\$libname\\"'*.obj' >> $tout
+ echo " del $subdir$stlport_suffix\\$libname\\"'*.idb' >> $tout
+ echo " del $subdir$stlport_suffix\\$libname\\"'*.exp' >> $tout
+ echo " del $subdir$stlport_suffix\\$libname\\"'*.pch' >> $tout
+ echo "" >> $tout
+#
+# now for the main target for this library:
+ echo ./$subdir$stlport_suffix/$libname.lib : $all_obj >> $tout
+ echo " link kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:yes /pdb:\"$subdir$stlport_suffix/$libname.pdb\" /debug /machine:I386 /out:\"$subdir$stlport_suffix/$libname.dll\" /implib:\"$subdir$stlport_suffix/$libname.lib\" /LIBPATH:\"\$(STLPORT_PATH)\\lib\" \$(XLFLAGS) \$(ICU_LINK_OPTS) $all_obj" >> $tout
+ echo "" >> $tout
+}
+
+is_stlport="no"
+
+function vc6_gen()
+{
+ debug="no"
+ tout="temp"
+ iout="temp_install"
+ all_dep="main_dir"
+ all_clean=""
+ echo > $out
+ echo > $tout
+ rm -f $iout
+ stlport_suffix=""
+
+ if test ${subdir} != "vc80" ; then
+ libname="libboost_regex-${subdir}-s-${boost_version}"
+ opts='/c /nologo /ML /W3 '$EH_OPTS' /O2 '$PROC_OPTS' /GF /Gy /I..\..\..\ /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD '"$release_extra"' '
+ vc6_gen_lib
+ fi
+
+ libname="libboost_regex-${subdir}-mt-s-${boost_version}"
+ opts='/nologo /MT /W3 '$EH_OPTS' /O2 '$PROC_OPTS' /GF /Gy /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD '"$release_extra"' /c'
+ vc6_gen_lib
+
+ if test ${subdir} != "vc80" ; then
+ debug="yes"
+ libname="libboost_regex-${subdir}-sgd-${boost_version}"
+ opts='/nologo /MLd /W3 /Gm '$EH_OPTS' /Zi /Od /I..\..\..\ /DWIN32 /D_DEBUG /D_MBCS /D_LIB /FD '"$debug_extra"' /c '
+ vc6_gen_lib
+ fi
+
+ libname="libboost_regex-${subdir}-mt-sgd-${boost_version}"
+ opts='/nologo /MTd /W3 /Gm '$EH_OPTS' /Zi /Od /I..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD '"$debug_extra"' /c'
+ vc6_gen_lib
+
+ libname="boost_regex-${subdir}-mt-gd-${boost_version}"
+ opts='/nologo /MDd /W3 /Gm '$EH_OPTS' /Zi /Od /I../../../ /D_DEBUG /DBOOST_REGEX_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD '"$debug_extra"' /c'
+ vc6_gen_dll
+
+ debug="no"
+ opts='/nologo /MD /W3 '$EH_OPTS' /O2 '$PROC_OPTS' /GF /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD '"$release_extra"' /c'
+ libname="boost_regex-${subdir}-mt-${boost_version}"
+ vc6_gen_dll
+
+ debug="no"
+ opts='/nologo /MD /W3 '$EH_OPTS' /O2 '$PROC_OPTS' /GF /Gy /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD '"$release_extra"' /c'
+ libname="libboost_regex-${subdir}-mt-${boost_version}"
+ vc6_gen_lib
+
+ debug="yes"
+ libname="libboost_regex-${subdir}-mt-gd-${boost_version}"
+ opts='/nologo /MDd /W3 /Gm '$EH_OPTS' /Zi /Od /I../../../ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD '"$debug_extra"' /c'
+ vc6_gen_lib
+
+ VC8_CHECK=""
+ echo ${subdir}
+ if test ${subdir} = "vc80" ; then
+ VC8_CHECK='MSVCDIR=$(VS80COMNTOOLS)..\..\VC'
+ echo setting VC8 setup to: ${VC8_CHECK}
+ else
+ if test ${subdir} = "vc71" ; then
+ VC8_CHECK='MSVCDIR=$(VS71COMNTOOLS)..\..\VC7'
+ echo setting VC71 setup to: ${VC8_CHECK}
+ fi
+ fi
+
+ cat > $out << EOF
+# copyright John Maddock 2006
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt.
+#
+# auto generated makefile for VC6 compiler
+#
+# usage:
+# make
+# brings libraries up to date
+# make install
+# brings libraries up to date and copies binaries to your VC6 /lib and /bin directories (recomended)
+#
+
+#
+# path to ICU library installation goes here:
+#
+ICU_PATH=
+#
+# Add additional compiler options here:
+#
+CXXFLAGS=
+#
+# Add additional include directories here:
+#
+INCLUDES=
+#
+# add additional linker flags here:
+#
+XLFLAGS=
+#
+# add additional static-library creation flags here:
+#
+XSFLAGS=
+
+!IF "\$(OS)" == "Windows_NT"
+NULL=
+!ELSE
+NULL=nul
+!ENDIF
+
+!IF "\$(MSVCDIR)" == ""
+$VC8_CHECK
+!ENDIF
+
+!IF "\$(MSVCDIR)" == ""
+!ERROR Variable MSVCDIR not set.
+!ENDIF
+
+!IF "\$(ICU_PATH)" == ""
+ICU_COMPILE_OPTS=
+ICU_LINK_OPTS=
+!MESSAGE Building Boost.Regex without ICU / Unicode support:
+!MESSAGE Hint: set ICU_PATH on the nmake command line to point
+!MESSAGE to your ICU installation if you have one.
+!ELSE
+ICU_COMPILE_OPTS= -DBOOST_HAS_ICU=1 -I"\$(ICU_PATH)\\include"
+ICU_LINK_OPTS= /LIBPATH:"\$(ICU_PATH)\\lib" icuin.lib icuuc.lib
+!MESSAGE Building Boost.Regex with ICU in \$(ICU_PATH)
+!ENDIF
+
+EOF
+ echo "" >> $out
+ echo "ALL_HEADER=$header" >> $out
+ echo "" >> $out
+ echo "all : $all_dep" >> $out
+ echo >> $out
+ echo "clean : $all_clean" >> $out
+ echo >> $out
+ echo "install : all" >> $out
+ cat $iout >> $out
+ echo >> $out
+ echo main_dir : >> $out
+ echo " @if not exist \"$subdir$stlport_suffix\\\$(NULL)\" mkdir $subdir$stlport_suffix" >> $out
+ echo "" >> $out
+
+ cat $tout >> $out
+}
+
+function vc6_stlp_gen()
+{
+ debug="no"
+ tout="temp"
+ iout="temp_install"
+ all_dep="main_dir"
+ all_clean=""
+ echo > $out
+ echo > $tout
+ rm -f $iout
+ stlport_suffix="-stlport"
+
+ libname="libboost_regex-${subdir}-mt-sp-${boost_version}"
+ opts='/nologo /MT /W3 '$EH_OPTS' /O2 '$PROC_OPTS' /GF /Gy /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB '"$release_extra"' /c'
+ vc6_gen_lib
+
+ debug="true"
+ libname="libboost_regex-${subdir}-mt-sgdp-${boost_version}"
+ opts='/nologo /MTd /W3 /Gm '$EH_OPTS' /Zi /Od /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB '"$debug_extra"' /c'
+ #vc6_gen_lib
+
+ libname="boost_regex-${subdir}-mt-gdp-${boost_version}"
+ opts='/nologo /MDd /W3 /Gm '$EH_OPTS' /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_DYN_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL '"$debug_extra"' /c'
+ #vc6_gen_dll
+
+ debug="no"
+ opts='/nologo /MD /W3 '$EH_OPTS' /O2 '$PROC_OPTS' /GF /I"$(STLPORT_PATH)\stlport" /Gy /I../../../ /DBOOST_REGEX_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL '"$release_extra"' /c'
+ libname="boost_regex-${subdir}-mt-p-${boost_version}"
+ vc6_gen_dll
+
+ debug="no"
+ opts='/nologo /MD /W3 '$EH_OPTS' /O2 '$PROC_OPTS' /GF /Gy /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL '"$release_extra"' /c'
+ libname="libboost_regex-${subdir}-mt-p-${boost_version}"
+ vc6_gen_lib
+
+ debug="true"
+ libname="libboost_regex-${subdir}-mt-gdp-${boost_version}"
+ opts='/nologo /MDd /W3 /Gm '$EH_OPTS' /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL '"$debug_extra"' /c'
+ #vc6_gen_lib
+
+# debug STLPort mode:
+ debug="yes"
+ opts='/nologo /MDd /W3 /Gm '$EH_OPTS' /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_DYN_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL '"$debug_extra"' /c'
+ libname="boost_regex-${subdir}-mt-gdp-${boost_version}"
+ vc6_gen_dll
+ libname="libboost_regex-${subdir}-mt-sgdp-${boost_version}"
+ opts='/nologo /MTd /W3 /Gm '$EH_OPTS' /Zi /Od /I"$(STLPORT_PATH)\stlport" /I..\..\..\ /D__STL_DEBUG /D_STLP_DEBUG /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB '"$debug_extra"' /c'
+ vc6_gen_lib
+ opts='/nologo /MDd /W3 /Gm '$EH_OPTS' /Zi /Od /I"$(STLPORT_PATH)\stlport" /I../../../ /DBOOST_REGEX_STATIC_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL '"$debug_extra"' /c'
+ libname="libboost_regex-${subdir}-mt-gdp-${boost_version}"
+ vc6_gen_lib
+
+ cat > $out << EOF
+# copyright John Maddock 2006
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt.
+#
+# auto generated makefile for VC6+STLPort
+#
+# usage:
+# make
+# brings libraries up to date
+# make install
+# brings libraries up to date and copies binaries to your VC6 /lib and /bin directories (recomended)
+#
+
+#
+# ICU setup:
+#
+ICU_PATH=
+#
+# Add additional compiler options here:
+#
+CXXFLAGS=
+#
+# Add additional include directories here:
+#
+INCLUDES=
+#
+# add additional linker flags here:
+#
+XLFLAGS=
+#
+# add additional static-library creation flags here:
+#
+XSFLAGS=
+
+!IF "\$(OS)" == "Windows_NT"
+NULL=
+!ELSE
+NULL=nul
+!ENDIF
+
+!IF "\$(MSVCDIR)" == ""
+!ERROR Variable MSVCDIR not set.
+!ENDIF
+
+!IF "\$(STLPORT_PATH)" == ""
+!ERROR Variable STLPORT_PATH not set.
+!ENDIF
+
+!IF "\$(ICU_PATH)" == ""
+ICU_COMPILE_OPTS=
+ICU_LINK_OPTS=
+!MESSAGE Building Boost.Regex without ICU / Unicode support:
+!MESSAGE Hint: set ICU_PATH on the nmake command line to point
+!MESSAGE to your ICU installation if you have one.
+!ELSE
+ICU_COMPILE_OPTS= -DBOOST_HAS_ICU=1 -I"\$(ICU_PATH)\\include"
+ICU_LINK_OPTS= /LIBPATH:"\$(ICU_PATH)\\lib" icuin.lib icuuc.lib
+!MESSAGE Building Boost.Regex with ICU in \$(ICU_PATH)
+!ENDIF
+
+EOF
+ echo "" >> $out
+ echo "ALL_HEADER=$header" >> $out
+ echo "" >> $out
+ echo "all : $all_dep" >> $out
+ echo >> $out
+ echo "clean : $all_clean" >> $out
+ echo >> $out
+ echo "install : stlport_check all" >> $out
+ cat $iout >> $out
+ echo >> $out
+ echo main_dir : >> $out
+ echo " @if not exist \"$subdir$stlport_suffix\\\$(NULL)\" mkdir $subdir$stlport_suffix" >> $out
+ echo "" >> $out
+ echo 'stlport_check : "$(STLPORT_PATH)\stlport\string"' >> $out
+ echo " echo" >> $out
+ echo "" >> $out
+
+ cat $tout >> $out
+}
+
+
+. common.sh
+
+#
+# options that change with compiler version:
+#
+EH_OPTS="/GX"
+PROC_OPTS="/GB"
+
+#
+# generate vc6 makefile:
+debug_extra="$EH_OPTS"
+out="vc6.mak"
+subdir="vc6"
+vc6_gen
+#
+# generate vc6-stlport makefile:
+is_stlport="yes"
+out="vc6-stlport.mak"
+no_single="yes"
+subdir="vc6"
+vc6_stlp_gen
+#
+# generate vc7 makefile:
+debug_extra="$EH_OPTS /RTC1 /Zc:wchar_t"
+release_extra="/Zc:wchar_t"
+is_stlport="no"
+out="vc7.mak"
+no_single="no"
+subdir="vc7"
+vc6_gen
+#
+# generate vc7-stlport makefile:
+is_stlport="yes"
+out="vc7-stlport.mak"
+no_single="yes"
+subdir="vc7"
+vc6_stlp_gen
+#
+# generate vc71 makefile:
+is_stlport="no"
+out="vc71.mak"
+no_single="no"
+subdir="vc71"
+vc6_gen
+#
+# generate vc71-stlport makefile:
+is_stlport="yes"
+out="vc71-stlport.mak"
+no_single="yes"
+subdir="vc71"
+vc6_stlp_gen
+#
+# generate vc8 makefile:
+EH_OPTS="/EHsc"
+PROC_OPTS=""
+debug_extra="$EH_OPTS"
+is_stlport="no"
+out="vc8.mak"
+no_single="no"
+subdir="vc80"
+vc6_gen
+
+
+#
+# remove tmep files;
+rm -f $tout $iout
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/doc/bad_expression.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/doc/bad_expression.html 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,81 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+ <head>
+ <title>Boost.Regex: regex_error</title>
+ <meta name="generator" content="HTML Tidy, see www.w3.org">
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <link rel="stylesheet" type="text/css" href="../../../boost.css">
+ </head>
+ <body>
+ <p></p>
+ <table id="Table1" cellspacing="1" cellpadding="1" width="100%" border="0">
+ <tr>
+ <td valign="top" width="300">
+ <h3>C++ Boost</h3>
+ </td>
+ <td width="353">
+ <h1 align="center">Boost.Regex</h1>
+ <h2 align="center">class regex_error</h2>
+ </td>
+ <td width="50">
+ <h3>Boost.Regex Index</h3>
+ </td>
+ </tr>
+ </table>
+ <br>
+ <br>
+ <hr>
+ <h3>Synopsis</h3>
+ <p>#include &lt;boost/pattern_except.hpp&gt;</p>
+ <p>The class <code>regex_error</code> defines the type of objects thrown as
+ exceptions to report errors during the conversion from a string representing a
+ regular expression to a finite state machine.&nbsp;&nbsp;</p>
+ <pre>
+<b>namespace</b> boost{
+
+<b>class</b> regex_error : <b>public</b> std::runtime_error
+{
+<b>public</b>:
+ <b>explicit</b> regex_error(<b>const</b> std::string& s, regex_constants::error_type err, std::ptrdiff_t pos);
+ <b>explicit</b> regex_error(boost::regex_constants::error_type err);
+ boost::regex_constants::error_type code()<b>const</b>;
+ std::ptrdiff_t position()<b>const</b>;
+};
+
+typedef regex_error bad_pattern; // for backwards compatibility
+typedef regex_error bad_expression; // for backwards compatibility
+
+} // namespace boost
+</pre>
+ <h3>Description</h3>
+ <pre>
+regex_error(<b>const</b> std::string& s, regex_constants::error_type err, std::ptrdiff_t pos);
+regex_error(boost::regex_constants::error_type err);</pre>
+ <p><b>Effects:</b> Constructs an object of class <code>regex_error</code>.</p>
+ <pre>
+boost::regex_constants::error_type code()<b>const</b>;</pre>
+ <p><b>Effects:</b> returns the error code that represents parsing error that occurred.</p>
+ <pre>
+std::ptrdiff_t position()<b>const</b>; </pre>
+ <p><b>Effects:</b> returns the location in the expression where parsing stopped.</p>
+ <P>Footnotes: the choice of <code>std::runtime_error</code> as the base class for <code>
+ regex_error</code> is moot; depending upon how the library is used
+ exceptions may be either logic errors (programmer supplied expressions) or run
+ time errors (user supplied expressions).&nbsp; The library previously used <code>bad_pattern</code>
+ and <code>bad_expression</code> for errors, these have been replaced by the
+ single class <code>regex_error</code> to keep the library in synchronization
+ with the standardization proposal.</P>
+ <p></p>
+ <hr>
+ <p>Revised
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->
+ 24&nbsp;June 2004&nbsp;
+ <!--webbot bot="Timestamp" endspan i-checksum="39359" --></p>
+ <p><i>© Copyright John Maddock&nbsp;1998-
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%Y" startspan --> 2004<!--webbot bot="Timestamp" endspan i-checksum="39359" --></i></p>
+ <P><I>Use, modification and distribution are subject to the Boost Software License,
+ Version 1.0. (See accompanying file LICENSE_1_0.txt
+ or copy at http://www.boost.org/LICENSE_1_0.txt)</I></P>
+ </body>
+</html>
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/doc/basic_regex.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/doc/basic_regex.html 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,906 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+ <head>
+ <title>Boost.Regex: basic_regex</title>
+ <meta name="generator" content="HTML Tidy, see www.w3.org">
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <link rel="stylesheet" type="text/css" href="../../../boost.css">
+ </head>
+ <body>
+ <table id="Table1" cellspacing="1" cellpadding="1" width="100%" border="0">
+ <tr>
+ <td valign="top" width="300">
+ <h3>C++ Boost</h3>
+ </td>
+ <td width="353">
+ <h1 align="center">Boost.Regex</h1>
+ <h2 align="center">basic_regex</h2>
+ </td>
+ <td width="50">
+ <h3>Boost.Regex Index</h3>
+ </td>
+ </tr>
+ </table>
+ <br>
+ <br>
+ <hr>
+ <h3>Synopsis</h3>
+ <pre>
+#include &lt;boost/regex.hpp&gt;
+</pre>
+ <p>The template class <em>basic_regex</em> encapsulates regular expression parsing
+ and compilation. The class takes two template parameters:</p>
+ <p><b><i>charT</i></b>: determines the character type, i.e. either char or
+ wchar_t; see <EM>charT concept</EM>.</p>
+ <p><b><i>traits</i></b>: determines the behavior of the character type, for
+ example which character class names are recognized. A default traits class is
+ provided: regex_traits<charT>.&nbsp; See
+ also <EM>traits concept</EM>.</p>
+ <p>For ease of use there are two typedefs that define the two standard <i>basic_regex</i>
+ instances, unless you want to use custom traits classes or non-standard
+ character types, you won't need to use anything other than these:</p>
+ <pre>
+<b>namespace</b> boost{
+<b>template</b> &lt;<b>class</b> charT, <b>class</b> traits = regex_traits&lt;charT&gt; &gt;
+<b>class</b> basic_regex;
+<b>typedef</b> basic_regex&lt;<b>char</b>&gt; regex;
+<b>typedef</b> basic_regex&lt;<b>wchar_t&gt;</b> wregex;
+}
+</pre>
+ <p>The definition of <i>basic_regex</i> follows: it is based very closely on class
+ basic_string, and fulfils the requirements for a constant-container of <i>charT</i>.</p>
+ <pre>
+namespace boost{
+
+template &lt;class charT, class traits = regex_traits&lt;charT&gt; &gt;
+class basic_regex {
+ public:
+ // types:
+ typedef charT value_type;
+ typedef implementation-specific const_iterator;
+ typedef const_iterator iterator;
+ typedef charT&amp; reference;
+ typedef const charT&amp; const_reference;
+ typedef std::ptrdiff_t difference_type;
+ typedef std::size_t size_type;
+ typedef regex_constants::syntax_option_type flag_type;
+ typedef typename traits::locale_type locale_type;
+
+ // constants:
+ // main option selection:
+ static const regex_constants::syntax_option_type normal = regex_constants::normal;
+ static const regex_constants::syntax_option_type ECMAScript = normal;
+ static const regex_constants::syntax_option_type JavaScript = normal;
+ static const regex_constants::syntax_option_type JScript = normal;
+ static const regex_constants::syntax_option_type basic = regex_constants::basic;
+ static const regex_constants::syntax_option_type extended = regex_constants::extended;
+ static const regex_constants::syntax_option_type awk = regex_constants::awk;
+ static const regex_constants::syntax_option_type grep = regex_constants::grep;
+ static const regex_constants::syntax_option_type egrep = regex_constants::egrep;
+ static const regex_constants::syntax_option_type sed = basic = regex_constants::sed;
+ static const regex_constants::syntax_option_type perl = regex_constants::perl;
+ static const regex_constants::syntax_option_type literal = regex_constants::literal;
+ // modifiers specific to perl expressions:
+ static const regex_constants::syntax_option_type no_mod_m = regex_constants::no_mod_m;
+ static const regex_constants::syntax_option_type no_mod_s = regex_constants::no_mod_s;
+ static const regex_constants::syntax_option_type mod_s = regex_constants::mod_s;
+ static const regex_constants::syntax_option_type mod_x = regex_constants::mod_x;
+ // modifiers specific to POSIX basic expressions:
+ static const regex_constants::syntax_option_type bk_plus_qm = regex_constants::bk_plus_qm;
+ static const regex_constants::syntax_option_type bk_vbar = regex_constants::bk_vbar
+ static const regex_constants::syntax_option_type no_char_classes = regex_constants::no_char_classes
+ static const regex_constants::syntax_option_type no_intervals = regex_constants::no_intervals
+ // common modifiers:
+ static const regex_constants::syntax_option_type nosubs = regex_constants::nosubs;
+ static const regex_constants::syntax_option_type optimize = regex_constants::optimize;
+ static const regex_constants::syntax_option_type collate = regex_constants::collate;
+ static const regex_constants::syntax_option_type newline_alt = regex_constants::newline_alt;
+ static const regex_constants::syntax_option_type no_except = regex_constants::newline_alt;
+
+ // construct/copy/destroy:
+ explicit basic_regex ();
+ explicit basic_regex(const charT* p, flag_type f = regex_constants::normal);
+ basic_regex(const charT* p1, const charT* p2, flag_type f = regex_constants::normal);
+ basic_regex(const charT* p, size_type len, flag_type f);
+ basic_regex(const basic_regex&amp;);
+ template &lt;class ST, class SA&gt;
+ explicit basic_regex(const basic_string&lt;charT, ST, SA&gt;&amp; p, flag_type f = regex_constants::normal);
+ template &lt;class InputIterator&gt;
+ basic_regex(InputIterator first, InputIterator last, flag_type f = regex_constants::normal);
+
+ ~basic_regex();
+ basic_regex&amp; operator=(const basic_regex&amp;);
+ basic_regex&amp; operator= (const charT* ptr);
+ template &lt;class ST, class SA&gt;
+ basic_regex&amp; operator= (const basic_string&lt;charT, ST, SA&gt;&amp; p);
+ // iterators:
+ const_iterator begin() const;
+ const_iterator end() const;
+ // capacity:
+ size_type size() const;
+ size_type max_size() const;
+ bool empty() const;
+ unsigned mark_count()const;
+ //
+ // modifiers:
+ basic_regex&amp; assign(const basic_regex&amp; that);
+ basic_regex&amp; assign(const charT* ptr, flag_type f = regex_constants::normal);
+ basic_regex&amp; assign(const charT* ptr, unsigned int len, flag_type f);
+ template &lt;class string_traits, class A&gt;
+ basic_regex&amp; assign(const basic_string&lt;charT, string_traits, A&gt;&amp; s,
+ flag_type f = regex_constants::normal);
+ template &lt;class InputIterator&gt;
+ basic_regex&amp; assign(InputIterator first, InputIterator last,
+ flag_type f = regex_constants::normal);
+
+ // const operations:
+ flag_type flags() const;
+ int status()const;
+ basic_string&lt;charT&gt; str() const;
+ int compare(basic_regex&amp;) const;
+ // locale:
+ locale_type imbue(locale_type loc);
+ locale_type getloc() const;
+ // swap
+ void swap(basic_regex&amp;) throw();
+};
+
+template &lt;class charT, class traits&gt;
+bool operator == (const basic_regex&lt;charT, traits&gt;&amp; lhs,
+ const basic_regex&lt;charT, traits&gt;&amp; rhs);
+template &lt;class charT, class traits&gt;
+bool operator != (const basic_regex&lt;charT, traits&gt;&amp; lhs,
+ const basic_regex&lt;charT, traits&gt;&amp; rhs);
+template &lt;class charT, class traits&gt;
+bool operator &lt; (const basic_regex&lt;charT, traits&gt;&amp; lhs,
+ const basic_regex&lt;charT, traits&gt;&amp; rhs);
+template &lt;class charT, class traits&gt;
+bool operator &lt;= (const basic_regex&lt;charT, traits&gt;&amp; lhs,
+ const basic_regex&lt;charT, traits&gt;&amp; rhs);
+template &lt;class charT, class traits&gt;
+bool operator &gt;= (const basic_regex&lt;charT, traits&gt;&amp; lhs,
+ const basic_regex&lt;charT, traits&gt;&amp; rhs);
+template &lt;class charT, class traits&gt;
+bool operator &gt; (const basic_regex&lt;charT, traits&gt;&amp; lhs,
+ const basic_regex&lt;charT, traits&gt;&amp; rhs);
+
+template &lt;class charT, class io_traits, class re_traits&gt;
+basic_ostream&lt;charT, io_traits&gt;&amp;
+ operator &lt;&lt; (basic_ostream&lt;charT, io_traits&gt;&amp; os,
+ const basic_regex&lt;charT, re_traits&gt;&amp; e);
+
+template &lt;class charT, class traits&gt;
+void swap(basic_regex&lt;charT, traits&gt;&amp; e1,
+ basic_regex&lt;charT, traits&gt;&amp; e2);
+
+typedef basic_regex&lt;char&gt; regex;
+typedef basic_regex&lt;wchar_t&gt; wregex;
+
+} // namespace boost
+</pre>
+ <h3>Description</h3>
+ <p>Class&nbsp;<em>basic_regex</em> has the following public member functions:</p>
+ <h4>basic_regex constants</h4>
+ <pre>
+// main option selection:
+static const regex_constants::syntax_option_type normal = regex_constants::normal;
+static const regex_constants::syntax_option_type ECMAScript = normal;
+static const regex_constants::syntax_option_type JavaScript = normal;
+static const regex_constants::syntax_option_type JScript = normal;
+static const regex_constants::syntax_option_type basic = regex_constants::basic;
+static const regex_constants::syntax_option_type extended = regex_constants::extended;
+static const regex_constants::syntax_option_type awk = regex_constants::awk;
+static const regex_constants::syntax_option_type grep = regex_constants::grep;
+static const regex_constants::syntax_option_type egrep = regex_constants::egrep;
+static const regex_constants::syntax_option_type sed = regex_constants::sed;
+static const regex_constants::syntax_option_type perl = regex_constants::perl;
+static const regex_constants::syntax_option_type literal = regex_constants::literal;
+// modifiers specific to perl expressions:
+static const regex_constants::syntax_option_type no_mod_m = regex_constants::no_mod_m;
+static const regex_constants::syntax_option_type no_mod_s = regex_constants::no_mod_s;
+static const regex_constants::syntax_option_type mod_s = regex_constants::mod_s;
+static const regex_constants::syntax_option_type mod_x = regex_constants::mod_x;
+// modifiers specific to POSIX basic expressions:
+static const regex_constants::syntax_option_type bk_plus_qm = regex_constants::bk_plus_qm;
+static const regex_constants::syntax_option_type bk_vbar = regex_constants::bk_vbar
+static const regex_constants::syntax_option_type no_char_classes = regex_constants::no_char_classes
+static const regex_constants::syntax_option_type no_intervals = regex_constants::no_intervals
+// common modifiers:
+static const regex_constants::syntax_option_type nosubs = regex_constants::nosubs;
+static const regex_constants::syntax_option_type optimize = regex_constants::optimize;
+static const regex_constants::syntax_option_type collate = regex_constants::collate;
+static const regex_constants::syntax_option_type newline_alt = regex_constants::newline_alt;
+</pre>
+ <p>The static constant members are provided as synonyms for the constants declared
+ in namespace <code>boost::regex_constants</code>; for each constant of type <code><A href="syntax_option_type.html">
+ syntax_option_type</A></code> declared in namespace <code>boost::regex_constants</code>
+ then a constant with the same name, type and value is declared within the scope
+ of <code>basic_regex</code>.</p>
+ <h4>basic_regex constructors</h4>
+ <pre><A name=c1> basic_regex();
+</pre>
+ <P><b>Effects:</b> Constructs an object of class <code>basic_regex</code>. The
+ postconditions of this function are indicated in the table:</P>
+ <div align="center">
+ <center>
+ <table id="Table2" cellspacing="1" cellpadding="7" width="624" border="1">
+ <tbody>
+ <tr>
+ <td valign="top" width="50%">
+ <p><b>Element</b></p>
+ </td>
+ <td valign="top" width="50%">
+ <p><b>Value</b></p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" width="50%">
+ <p>empty()</p>
+ </td>
+ <td valign="top" width="50%">
+ <p>true</p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" width="50%">
+ <p>size()</p>
+ </td>
+ <td valign="top" width="50%">
+ <p>0</p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" width="50%">
+ <p>str()</p>
+ </td>
+ <td valign="top" width="50%">
+ <p>basic_string&lt;charT&gt;()</p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </center>
+ </div>
+ <pre><A name=c2><BR> basic_regex(const charT* p, flag_type f = regex_constants::normal);
+
+</pre>
+ <P><b>Requires:</b> <i>p</i> shall not be a null pointer.</P>
+ <p><b>Throws:</b> <code>bad_expression</code> if <i>p</i> is not a valid regular
+ expression, unless the flag no_except is set in <EM>f</EM>.</p>
+ <p><b>Effects:</b> Constructs an object of class <code>basic_regex</code>; the
+ object's internal finite state machine is constructed from the regular
+ expression contained in the null-terminated string <i>p</i>, and interpreted
+ according to the option flags&nbsp;specified
+ in <i>f</i>. The postconditions of this function are indicated in the table:</p>
+ <div align="center">
+ <center>
+ <table id="Table3" cellspacing="1" cellpadding="7" width="624" border="1">
+ <tbody>
+ <tr>
+ <td valign="top" width="50%">
+ <p><b>Element</b></p>
+ </td>
+ <td valign="top" width="50%">
+ <p><b>Value</b></p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" width="50%">
+ <p>empty()</p>
+ </td>
+ <td valign="top" width="50%">
+ <p>false</p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" width="50%">
+ <p>size()</p>
+ </td>
+ <td valign="top" width="50%">
+ <p>char_traits&lt;charT&gt;::length(p)</p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" width="50%">
+ <p>str()</p>
+ </td>
+ <td valign="top" width="50%">
+ <p>basic_string&lt;charT&gt;(p)</p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" width="50%">
+ <p>flags()</p>
+ </td>
+ <td valign="top" width="50%">
+ <p>f</p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" width="50%">
+ <p>mark_count()</p>
+ </td>
+ <td valign="top" width="50%">
+ <p>The number of marked sub-expressions within the expression.</p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </center>
+ </div>
+ <pre>
+
+</pre>
+ <PRE><A name=c3></A>basic_regex(const charT* p1, const charT* p2, flag_type f = regex_constants::normal);</PRE>
+ <p><b>Requires:</b> <i>p1</i> and <i>p2</i> are not null pointers, <code>p1 &lt; p2</code>.</p>
+ <p><b>Throws:</b> <code>bad_expression</code> if [p1,p2) is not a valid regular
+ expression, unless the flag no_except is set in <EM>f</EM>.</p>
+ <p><b>Effects:</b> Constructs an object of class <code>basic_regex</code>; the
+ object's internal finite state machine is constructed from the regular
+ expression contained in the sequence of characters [p1,p2), and interpreted
+ according the option flags specified in <i>f</i>.
+ The postconditions of this function are indicated in the table:</p>
+ <div align="center">
+ <center>
+ <table id="Table4" cellspacing="1" cellpadding="7" width="624" border="1">
+ <tbody>
+ <tr>
+ <td valign="top" width="50%">
+ <p><b>Element</b></p>
+ </td>
+ <td valign="top" width="50%">
+ <p><b>Value</b></p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" width="50%">
+ <p>empty()</p>
+ </td>
+ <td valign="top" width="50%">
+ <p>false</p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" width="50%">
+ <p>size()</p>
+ </td>
+ <td valign="top" width="50%">
+ <p>std::distance(p1,p2)</p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" width="50%">
+ <p>str()</p>
+ </td>
+ <td valign="top" width="50%">
+ <p>basic_string&lt;charT&gt;(p1,p2)</p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" width="50%">
+ <p>flags()</p>
+ </td>
+ <td valign="top" width="50%">
+ <p>f</p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" width="50%">
+ <p>mark_count()</p>
+ </td>
+ <td valign="top" width="50%">
+ <p>The number of marked sub-expressions within the expression.</p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </center>
+ </div>
+ <pre>
+
+</pre>
+ <pre><A name=c4></A>basic_regex(const charT* p, size_type len, flag_type f);
+</pre>
+ <p><b>Requires:</b> <i>p</i> shall not be a null pointer, <code>len &lt; max_size()</code>.</p>
+ <p><b>Throws:</b> <code>bad_expression</code> if <i>p</i> is not a valid regular
+ expression, unless the flag no_except is set in <EM>f</EM>.</p>
+ <p><b>Effects:</b> Constructs an object of class <code>basic_regex</code>; the
+ object's internal finite state machine is constructed from the regular
+ expression contained in the sequence of characters [p, p+len), and interpreted
+ according the option flags specified in <i>f</i>.
+ The postconditions of this function are indicated in the table:</p>
+ <div align="center">
+ <center>
+ <table id="Table5" cellspacing="1" cellpadding="7" width="624" border="1">
+ <tbody>
+ <tr>
+ <td valign="top" width="50%">
+ <p><b>Element</b></p>
+ </td>
+ <td valign="top" width="50%">
+ <p><b>Value</b></p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" width="50%">
+ <p>empty()</p>
+ </td>
+ <td valign="top" width="50%">
+ <p>false</p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" width="50%">
+ <p>size()</p>
+ </td>
+ <td valign="top" width="50%">
+ <p>len</p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" width="50%">
+ <p>str()</p>
+ </td>
+ <td valign="top" width="50%">
+ <p>basic_string&lt;charT&gt;(p, len)</p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" width="50%">
+ <p>flags()</p>
+ </td>
+ <td valign="top" width="50%">
+ <p>f</p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" width="50%">
+ <p>mark_count()</p>
+ </td>
+ <td valign="top" width="50%">
+ <p>The number of marked sub-expressions within the expression.</p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </center>
+ </div>
+ <pre><A name=c5></A><BR>basic_regex(const basic_regex&amp; e);
+</pre>
+ <p><b>Effects:</b> Constructs an object of class <code>basic_regex</code> as a
+ copy of the object <i>e</i>. The postconditions of this function are indicated
+ in the table:</p>
+ <div align="center">
+ <center>
+ <table id="Table6" cellspacing="1" cellpadding="7" width="624" border="1">
+ <tbody>
+ <tr>
+ <td valign="top" width="50%">
+ <p><b>Element</b></p>
+ </td>
+ <td valign="top" width="50%">
+ <p><b>Value</b></p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" width="50%">
+ <p>empty()</p>
+ </td>
+ <td valign="top" width="50%">
+ <p>e.empty()</p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" width="50%">
+ <p>size()</p>
+ </td>
+ <td valign="top" width="50%">
+ <p>e.size()</p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" width="50%">
+ <p>str()</p>
+ </td>
+ <td valign="top" width="50%">
+ <p>e.str()</p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" width="50%">
+ <p>flags()</p>
+ </td>
+ <td valign="top" width="50%">
+ <p>e.flags()</p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" width="50%">
+ <p>mark_count()</p>
+ </td>
+ <td valign="top" width="50%">
+ <p>e.mark_count()</p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </center>
+ </div>
+ <pre><BR>
+template &lt;class ST, class SA&gt;
+<A name=c6></A>basic_regex(const basic_string&lt;charT, ST, SA&gt;&amp; s, flag_type f = regex_constants::normal);
+</pre>
+ <p><b>Throws:</b> <code>bad_expression</code> if <i>s</i> is not a valid regular
+ expression, unless the flag no_except is set in <EM>f</EM>.</p>
+ <p><b>Effects:</b> Constructs an object of class <code>basic_regex</code>; the
+ object's internal finite state machine is constructed from the regular
+ expression contained in the string <i>s</i>, and interpreted according to the <a href="syntax_option_type.html">
+ option flags</a> specified in <i>f</i>. The postconditions of this function
+ are indicated in the table:</p>
+ <div align="center">
+ <center>
+ <table id="Table7" cellspacing="1" cellpadding="7" width="624" border="1">
+ <tbody>
+ <tr>
+ <td valign="top" width="50%">
+ <p><b>Element</b></p>
+ </td>
+ <td valign="top" width="50%">
+ <p><b>Value</b></p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" width="50%">
+ <p>empty()</p>
+ </td>
+ <td valign="top" width="50%">
+ <p>false</p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" width="50%">
+ <p>size()</p>
+ </td>
+ <td valign="top" width="50%">
+ <p>s.size()</p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" width="50%">
+ <p>str()</p>
+ </td>
+ <td valign="top" width="50%">
+ <p>s</p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" width="50%">
+ <p>flags()</p>
+ </td>
+ <td valign="top" width="50%">
+ <p>f</p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" width="50%">
+ <p>mark_count()</p>
+ </td>
+ <td valign="top" width="50%">
+ <p>The number of marked sub-expressions within the expression.</p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </center>
+ </div>
+ <pre><BR>
+template &lt;class ForwardIterator&gt;
+<A name=c7></A>basic_regex(ForwardIterator first, ForwardIterator last, flag_type f = regex_constants::normal);
+</pre>
+ <p><b>Throws:</b> <code>bad_expression</code> if the sequence <i>[first, last)</i>
+ is not a valid regular expression, unless the flag no_except is set in <EM>f</EM>.</p>
+ <p><b>Effects:</b> Constructs an object of class <code>basic_regex</code>; the
+ object's internal finite state machine is constructed from the regular
+ expression contained in the sequence of characters [first, last), and
+ interpreted according to the option flags
+ specified in <i>f</i>. The postconditions of this function are indicated in the
+ table:</p>
+ <div align="center">
+ <center>
+ <table id="Table8" cellspacing="1" cellpadding="7" width="624" border="1">
+ <tbody>
+ <tr>
+ <td valign="top" width="50%">
+ <p><b>Element</b></p>
+ </td>
+ <td valign="top" width="50%">
+ <p><b>Value</b></p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" width="50%">
+ <p>empty()</p>
+ </td>
+ <td valign="top" width="50%">
+ <p>false</p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" width="50%">
+ <p>size()</p>
+ </td>
+ <td valign="top" width="50%">
+ <p>distance(first,last)</p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" width="50%">
+ <p>str()</p>
+ </td>
+ <td valign="top" width="50%">
+ <p>basic_string&lt;charT&gt;(first,last)</p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" width="50%">
+ <p>flags()</p>
+ </td>
+ <td valign="top" width="50%">
+ <p>f</p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" width="50%">
+ <p>mark_count()</p>
+ </td>
+ <td valign="top" width="50%">
+ <p>The number of marked sub-expressions within the expression.</p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </center>
+ </div>
+ <pre><A name=o1></A>
+basic_regex&amp; operator=(const basic_regex&amp; e);
+</pre>
+ <p><b>Effects:</b> Returns the result of <code>assign(e.str(), e.flags())</code>.</p>
+ <pre><A name=o2></A>basic_regex&amp; operator=(const charT* ptr);
+</pre>
+ <p><b>Requires:</b> <i>p</i> shall not be a null pointer.</p>
+ <p><b>Effects:</b> Returns the result of <code>assign(ptr)</code>.</p>
+ <pre><A name=o3></A>
+template &lt;class ST, class SA&gt;
+basic_regex&amp; operator=(const basic_string&lt;charT, ST, SA&gt;&amp; p);
+</pre>
+ <p><b>Effects:</b> Returns the result of <code>assign(p)</code>.</p>
+ <h4>basic_regex iterators</h4>
+ <pre><A name=m1>
+const_iterator begin() const;
+</pre>
+ <p><b>Effects:</b> Returns a starting iterator to a sequence of characters
+ representing the regular expression.</p>
+ <pre><A name=m2>
+const_iterator end() const;
+</pre>
+ <p><b>Effects:</b> Returns termination iterator to a sequence of characters
+ representing the regular expression.</p>
+ <h4>basic_regex capacity</h4>
+ <pre><A name=m3>
+size_type size() const;
+</pre>
+ <p><b>Effects:</b> Returns the length of the sequence of characters representing
+ the regular expression.</p>
+ <pre><A name=m4>
+size_type max_size() const;
+</pre>
+ <p><b>Effects:</b> Returns the maximum length of the sequence of characters
+ representing the regular expression.</p>
+ <pre><A name=m5></A>
+bool empty() const;
+</pre>
+ <p><b>Effects:</b> Returns <b>true</b> if the object does not contain a valid
+ regular expression, otherwise <b>false</b>.</p>
+ <pre><A name=m6></A>unsigned mark_count() const;
+</pre>
+ <p><b>Effects:</b> Returns the number of marked sub-expressions within the regular
+ expresion.</p>
+ <h4>basic_regex assign</h4>
+ <pre><A name=a1>
+basic_regex&amp; assign(const basic_regex&amp; that);
+</pre>
+ <p><b>Effects:</b> Returns <code>assign(that.str(), that.flags())</code>.</p>
+ <pre><A name=a2></A>
+basic_regex&amp; assign(const charT* ptr, flag_type f = regex_constants::normal);
+</pre>
+ <p><b>Effects:</b> Returns <code>assign(string_type(ptr), f)</code>.</p>
+ <PRE><A name=a3></A><A name=a3></A>basic_regex&amp; assign(const charT* ptr, unsigned int len, flag_type f);</PRE>
+ <P><B>Effects:</B> Returns <CODE>assign(string_type(ptr, len), f)</CODE>.</P>
+ <PRE><A name=a4></A>template &lt;class string_traits, class A&gt;
+<A name=a6></A>basic_regex&amp; assign(const basic_string&lt;charT, string_traits, A&gt;&amp; s,
+ flag_type f = regex_constants::normal);
+</PRE>
+ <p><b>Throws:</b> <code>bad_expression</code> if <i>s</i> is not a valid regular
+ expression, unless the flag no_except is set in <EM>f</EM>.</p>
+ <p><b>Returns:</b> <code>*this</code>.</p>
+ <p><b>Effects:</b> Assigns the regular expression contained in the string <i>s</i>,
+ interpreted according the option flags specified
+ in <i>f</i>. The postconditions of this function are indicated in the table:</p>
+ <div align="center">
+ <center>
+ <table id="Table9" cellspacing="1" cellpadding="7" width="624" border="1">
+ <tbody>
+ <tr>
+ <td valign="top" width="50%">
+ <p><b>Element</b></p>
+ </td>
+ <td valign="top" width="50%">
+ <p><b>Value</b></p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" width="50%">
+ <p>empty()</p>
+ </td>
+ <td valign="top" width="50%">
+ <p>false</p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" width="50%">
+ <p>size()</p>
+ </td>
+ <td valign="top" width="50%">
+ <p>s.size()</p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" width="50%">
+ <p>str()</p>
+ </td>
+ <td valign="top" width="50%">
+ <p>s</p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" width="50%">
+ <p>flags()</p>
+ </td>
+ <td valign="top" width="50%">
+ <p>f</p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" width="50%">
+ <p>mark_count()</p>
+ </td>
+ <td valign="top" width="50%">
+ <p>The number of marked sub-expressions within the expression.</p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </center>
+ </div>
+ <pre>
+
+</pre>
+ <pre><A name=a5></A>template &lt;class InputIterator&gt;
+basic_regex&amp; assign(InputIterator first, InputIterator last,
+ flag_type f = regex_constants::normal);
+</pre>
+ <p><b>Requires:</b> The type InputIterator corresponds to the Input Iterator
+ requirements (24.1.1).</p>
+ <p><b>Effects:</b> Returns <code>assign(string_type(first, last), f)</code>.</p>
+ <h4>basic_regex constant operations</h4>
+ <pre><A name=m7></A><A name=m8></A>flag_type flags() const;
+</pre>
+ <p><b>Effects:</b> Returns a copy of the regular expression syntax flags that were
+ passed to the object's constructor, or the last call to <code>assign.</code></p>
+ <CODE>
+ <PRE><A name=m7></A><A name=m8></A><A name=m8b></A>int status() const;</PRE>
+ </CODE>
+ <P><STRONG>Effects</STRONG>: Returns zero if the expression contains a valid
+ regular expression, otherwise an error code.&nbsp;
+ This member function is retained for use in environments that cannot use
+ exception handling.</P>
+ <pre><A name=m9></A>basic_string&lt;charT&gt; str() const;
+</pre>
+ <p><b>Effects:</b> Returns a copy of the character sequence passed to the object's
+ constructor, or the last call to <code>assign.</code></p>
+ <pre><A name=m10></A>int compare(basic_regex&amp; e)const;
+</pre>
+ <p><b>Effects:</b> If <code>flags() == e.flags()</code> then returns <code>str().compare(e.str())</code>,
+ otherwise returns <code>flags() - e.flags()</code>.</p>
+ <h4>basic_regex locale</h4>
+ <pre><A name=m11></A>locale_type imbue(locale_type l);
+</pre>
+ <p><b>Effects:</b> Returns the result of <code>traits_inst.imbue(l)</code> where <code>
+ traits_inst</code> is a (default initialized) instance of the template
+ parameter <code>traits</code> stored within the object. Calls to imbue
+ invalidate any currently contained regular expression.</p>
+ <p><b>Postcondition:</b> <code>empty() == true</code>.</p>
+ <pre><A name=m12></A>
+locale_type getloc() const;
+</pre>
+ <p><b>Effects:</b> Returns the result of <code>traits_inst.getloc()</code> where <code>
+ traits_inst</code> is a (default initialized) instance of the template
+ parameter <code>traits</code> stored within the object.</p>
+ <h4>basic_regex swap</h4>
+ <pre><A name=m13>
+void swap(basic_regex&amp; e) throw();
+</pre>
+ <p><b>Effects:</b> Swaps the contents of the two regular expressions.</p>
+ <p><b>Postcondition:</b> <code>*this</code> contains the characters that were in <i>e</i>,
+ <i>e</i> contains the regular expression that was in <code>*this</code>.</p>
+ <p><b>Complexity:</b> constant time.</p>
+ <h4>basic_regex non-member functions</h4>
+ <h5>basic_regex non-member comparison operators&nbsp;</h5>
+ <P>Comparisons between basic_regex objects are provided on an experimental basis:
+ please note that these are likely to be removed from the standard library
+ proposal, so use with care if you are writing portable code.</P>
+ <pre><A name=o4></A>
+template &lt;class charT, class traits&gt;
+bool operator == (const basic_regex&lt;charT, traits&gt;&amp; lhs,
+ const basic_regex&lt;charT, traits&gt;&amp; rhs);
+</pre>
+ <p><b>Effects:</b> Returns <code>lhs.compare(rhs) == 0</code>.</p>
+ <pre><A name=o5></A>
+template &lt;class charT, class traits&gt;
+bool operator != (const basic_regex&lt;charT, traits&gt;&amp; lhs,
+ const basic_regex&lt;charT, traits&gt;&amp; rhs);
+</pre>
+ <p><b>Effects:</b> Returns <code>lhs.compare(rhs) != 0</code>.</p>
+ <pre><A name=o7></A>
+template &lt;class charT, class traits&gt;
+bool operator &lt; (const basic_regex&lt;charT, traits&gt;&amp; lhs,
+ const basic_regex&lt;charT, traits&gt;&amp; rhs);
+</pre>
+ <p><b>Effects:</b> Returns <code>lhs.compare(rhs) &lt; 0</code>.</p>
+ <pre><A name=o8></A>
+template &lt;class charT, class traits&gt;
+bool operator &lt;= (const basic_regex&lt;charT, traits&gt;&amp; lhs,
+ const basic_regex&lt;charT, traits&gt;&amp; rhs);
+</pre>
+ <p><b>Effects:</b> Returns <code>lhs.compare(rhs) &lt;= 0</code>.</p>
+ <pre><A name=o9></A>
+template &lt;class charT, class traits&gt;
+bool operator &gt;= (const basic_regex&lt;charT, traits&gt;&amp; lhs,
+ const basic_regex&lt;charT, traits&gt;&amp; rhs);
+</pre>
+ <p><b>Effects:</b> Returns <code>lhs.compare(rhs) &gt;= 0</code>.</p>
+ <pre><A name=o10></A>
+template &lt;class charT, class traits&gt;
+bool operator &gt; (const basic_regex&lt;charT, traits&gt;&amp; lhs,
+ const basic_regex&lt;charT, traits&gt;&amp; rhs);
+</pre>
+ <p><b>Effects:</b> Returns <code>lhs.compare(rhs) &gt; 0</code>.</p>
+ <h5>basic_regex inserter.</h5>
+ <P>The basic_regex stream inserter is provided on an experimental basis, and
+ outputs the textual representation of the expression to the stream:</P>
+ <pre><A name=o11></A>
+template &lt;class charT, class io_traits, class re_traits&gt;
+basic_ostream&lt;charT, io_traits&gt;&amp;
+ operator &lt;&lt; (basic_ostream&lt;charT, io_traits&gt;&amp; os
+ const basic_regex&lt;charT, re_traits&gt;&amp; e);
+</pre>
+ <p><b>Effects:</b> Returns (os &lt;&lt; e.str()).</p>
+ <h5>basic_regex non-member swap</h5>
+ <pre><A name=o12></A>
+template &lt;class charT, class traits&gt;
+void swap(basic_regex&lt;charT, traits&gt;&amp; lhs,
+ basic_regex&lt;charT, traits&gt;&amp; rhs);
+</pre>
+ <p><b>Effects:</b> calls <code>lhs.swap(rhs)</code>.</p>
+ <hr>
+ <p>Revised 7 Aug
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->
+ 2004&nbsp;
+ <!--webbot bot="Timestamp" endspan i-checksum="39359" --></p>
+ <p><i>© Copyright John Maddock&nbsp;1998-
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%Y" startspan --> 2004<!--webbot bot="Timestamp" endspan i-checksum="39359" --></i></p>
+ <P><I>Use, modification and distribution are subject to the Boost Software License,
+ Version 1.0. (See accompanying file LICENSE_1_0.txt
+ or copy at http://www.boost.org/LICENSE_1_0.txt)</I></P>
+ </body>
+</html>

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/doc/captures.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/doc/captures.html 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,254 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+ <head>
+ <title>Boost.Regex: Understanding Captures</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <link rel="stylesheet" type="text/css" href="../../../boost.css">
+ </head>
+ <body>
+ <P>
+ <TABLE id="Table1" cellSpacing="1" cellPadding="1" width="100%" border="0">
+ <TR>
+ <td valign="top" width="300">
+ <h3>C++ Boost</h3>
+ </td>
+ <TD width="353">
+ <H1 align="center">Boost.Regex</H1>
+ <H2 align="center">Understanding Captures</H2>
+ </TD>
+ <td width="50">
+ <h3>Boost.Regex Index</h3>
+ </td>
+ </TR>
+ </TABLE>
+ </P>
+ <HR>
+ <p></p>
+ <P>Captures are the iterator ranges that are "captured" by marked sub-expressions
+ as a regular expression gets matched.&nbsp; Each marked sub-expression can
+ result in more than one capture, if it is matched more than once.&nbsp; This
+ document explains how captures and marked sub-expressions in Boost.Regex are
+ represented and accessed.</P>
+ <H2>Marked sub-expressions</H2>
+ <P>Every time a Perl regular expression contains a parenthesis group (), it spits
+ out an extra field, known as a marked sub-expression, for example the
+ expression:</P>
+ <PRE>(\w+)\W+(\w+)</PRE>
+ <P>
+ Has two marked sub-expressions (known as $1 and $2 respectively), in addition
+ the complete match is known as $&amp;, everything before the first match as $`,
+ and everything after the match as $'.&nbsp; So if the above expression is
+ searched for within "@abc def--", then we obtain:</P>
+ <BLOCKQUOTE dir="ltr" style="MARGIN-RIGHT: 0px">
+ <P>
+ <TABLE id="Table2" cellSpacing="1" cellPadding="1" width="300" border="0">
+ <TR>
+ <TD>
+ <P dir="ltr" style="MARGIN-RIGHT: 0px">$`</P>
+ </TD>
+ <TD>"@"</TD>
+ </TR>
+ <TR>
+ <TD>$&amp;</TD>
+ <TD>"abc def"</TD>
+ </TR>
+ <TR>
+ <TD>$1</TD>
+ <TD>"abc"</TD>
+ </TR>
+ <TR>
+ <TD>$2</TD>
+ <TD>"def"</TD>
+ </TR>
+ <TR>
+ <TD>$'</TD>
+ <TD>"--"</TD>
+ </TR>
+ </TABLE>
+ </P>
+ </BLOCKQUOTE>
+ <P>In Boost.regex all these are accessible via the match_results
+ class that gets filled in when calling one of the matching algorithms (regex_search,
+ regex_match, or regex_iterator).&nbsp;
+ So given:</P>
+ <PRE>boost::match_results&lt;IteratorType&gt; m;</PRE>
+ <P>The Perl and Boost.Regex equivalents are as follows:</P>
+ <BLOCKQUOTE dir="ltr" style="MARGIN-RIGHT: 0px">
+ <P>
+ <TABLE id="Table3" cellSpacing="1" cellPadding="1" width="300" border="0">
+ <TR>
+ <TD><STRONG>Perl</STRONG></TD>
+ <TD><STRONG>Boost.Regex</STRONG></TD>
+ </TR>
+ <TR>
+ <TD>$`</TD>
+ <TD>m.prefix()</TD>
+ </TR>
+ <TR>
+ <TD>$&amp;</TD>
+ <TD>m[0]</TD>
+ </TR>
+ <TR>
+ <TD>$n</TD>
+ <TD>m[n]</TD>
+ </TR>
+ <TR>
+ <TD>$'</TD>
+ <TD>m.suffix()</TD>
+ </TR>
+ </TABLE>
+ </P>
+ </BLOCKQUOTE>
+ <P>
+ <P>In Boost.Regex each sub-expression match is represented by a <A href="sub_match.html">
+ sub_match</A> object, this is basically just a pair of iterators denoting
+ the start and end possition of the sub-expression match, but there are some
+ additional operators provided so that objects of type sub_match behave a lot
+ like a std::basic_string: for example they are implicitly <A href="sub_match.html#m3">
+ convertible to a basic_string</A>, they can be <A href="sub_match.html#o21">compared
+ to a string</A>, added to a string, or <A href="sub_match.html#oi">
+ streamed out to an output stream</A>.</P>
+ <H2>Unmatched Sub-Expressions</H2>
+ <P>When a regular expression match is found there is no need for all of the marked
+ sub-expressions to have participated in the match, for example the expression:</P>
+ <P>(abc)|(def)</P>
+ <P>can match either $1 or $2, but never both at the same time.&nbsp; In
+ Boost.Regex you can determine which sub-expressions matched by accessing the <A href="sub_match.html#m1">
+ sub_match::matched</A> data member.</P>
+ <H2>Repeated Captures</H2>
+ <P>When a marked sub-expression is repeated, then the sub-expression gets
+ "captured" multiple times, however normally only the final capture is
+ available, for example if</P>
+ <PRE>(?:(\w+)\W+)+</PRE>
+ <P>is matched against</P>
+ <PRE>one fine day</PRE>
+ <P>Then $1 will contain the string "day", and all the previous captures will have
+ been forgotten.</P>
+ <P>However, Boost.Regex has an experimental feature that allows all the capture
+ information to be retained - this is accessed either via the <A href="match_results.html#m17">
+ match_results::captures</A> member function or the sub_match::captures
+ member function.&nbsp; These functions return a container that contains a
+ sequence of all the captures obtained during the regular expression
+ matching.&nbsp; The following example program shows how this information may be
+ used:</P>
+ <PRE>#include &lt;boost/regex.hpp&gt;
+#include &lt;iostream&gt;
+
+
+void print_captures(const std::string&amp; regx, const std::string&amp; text)
+{
+ boost::regex e(regx);
+ boost::smatch what;
+ std::cout &lt;&lt; "Expression: \"" &lt;&lt; regx &lt;&lt; "\"\n";
+ std::cout &lt;&lt; "Text: \"" &lt;&lt; text &lt;&lt; "\"\n";
+ if(boost::regex_match(text, what, e, boost::match_extra))
+ {
+ unsigned i, j;
+ std::cout &lt;&lt; "** Match found **\n Sub-Expressions:\n";
+ for(i = 0; i &lt; what.size(); ++i)
+ std::cout &lt;&lt; " $" &lt;&lt; i &lt;&lt; " = \"" &lt;&lt; what[i] &lt;&lt; "\"\n";
+ std::cout &lt;&lt; " Captures:\n";
+ for(i = 0; i &lt; what.size(); ++i)
+ {
+ std::cout &lt;&lt; " $" &lt;&lt; i &lt;&lt; " = {";
+ for(j = 0; j &lt; what.captures(i).size(); ++j)
+ {
+ if(j)
+ std::cout &lt;&lt; ", ";
+ else
+ std::cout &lt;&lt; " ";
+ std::cout &lt;&lt; "\"" &lt;&lt; what.captures(i)[j] &lt;&lt; "\"";
+ }
+ std::cout &lt;&lt; " }\n";
+ }
+ }
+ else
+ {
+ std::cout &lt;&lt; "** No Match found **\n";
+ }
+}
+
+int main(int , char* [])
+{
+ print_captures("(([[:lower:]]+)|([[:upper:]]+))+", "aBBcccDDDDDeeeeeeee");
+ print_captures("(.*)bar|(.*)bah", "abcbar");
+ print_captures("(.*)bar|(.*)bah", "abcbah");
+ print_captures("^(?:(\\w+)|(?&gt;\\W+))*$", "now is the time for all good men to come to the aid of the party");
+ return 0;
+}</PRE>
+ <P>Which produces the following output:</P>
+ <PRE>Expression: "(([[:lower:]]+)|([[:upper:]]+))+"
+Text: "aBBcccDDDDDeeeeeeee"
+** Match found **
+ Sub-Expressions:
+ $0 = "aBBcccDDDDDeeeeeeee"
+ $1 = "eeeeeeee"
+ $2 = "eeeeeeee"
+ $3 = "DDDDD"
+ Captures:
+ $0 = { "aBBcccDDDDDeeeeeeee" }
+ $1 = { "a", "BB", "ccc", "DDDDD", "eeeeeeee" }
+ $2 = { "a", "ccc", "eeeeeeee" }
+ $3 = { "BB", "DDDDD" }
+Expression: "(.*)bar|(.*)bah"
+Text: "abcbar"
+** Match found **
+ Sub-Expressions:
+ $0 = "abcbar"
+ $1 = "abc"
+ $2 = ""
+ Captures:
+ $0 = { "abcbar" }
+ $1 = { "abc" }
+ $2 = { }
+Expression: "(.*)bar|(.*)bah"
+Text: "abcbah"
+** Match found **
+ Sub-Expressions:
+ $0 = "abcbah"
+ $1 = ""
+ $2 = "abc"
+ Captures:
+ $0 = { "abcbah" }
+ $1 = { }
+ $2 = { "abc" }
+Expression: "^(?:(\w+)|(?&gt;\W+))*$"
+Text: "now is the time for all good men to come to the aid of the party"
+** Match found **
+ Sub-Expressions:
+ $0 = "now is the time for all good men to come to the aid of the party"
+ $1 = "party"
+ Captures:
+ $0 = { "now is the time for all good men to come to the aid of the party" }
+ $1 = { "now", "is", "the", "time", "for", "all", "good", "men", "to", "come", "to", "the", "aid", "of", "the", "party" }
+</PRE>
+ <P>Unfortunately enabling this feature has an impact on performance (even if you
+ don't use it), and a much bigger impact if you do use it, therefore to use this
+ feature you need to:</P>
+ <UL>
+ <LI>
+ Define BOOST_REGEX_MATCH_EXTRA for all translation units including the library
+ source (the best way to do this is to uncomment this define in <A href="../../../boost/regex/user.hpp">
+ boost/regex/user.hpp</A>
+ and then rebuild everything.
+ <LI>
+ Pass the match_extra flag to the particular
+ algorithms where you actually need the captures information (regex_search,
+ regex_match, or regex_iterator).
+ </LI>
+ </UL>
+ <P>
+ <HR>
+ <P></P>
+ <P></P>
+ <p>Revised&nbsp;
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->
+ 12&nbsp;Dec 2003
+ <!--webbot bot="Timestamp" endspan i-checksum="39359" --></p>
+ <p><i>© Copyright John Maddock&nbsp;
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%Y" startspan --> 2003<!--webbot bot="Timestamp" endspan i-checksum="39359" --></i></p>
+ <P><I>Use, modification and distribution are subject to the Boost Software License,
+ Version 1.0. (See accompanying file LICENSE_1_0.txt
+ or copy at http://www.boost.org/LICENSE_1_0.txt)</I></P>
+ </body>
+</html>

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/doc/character_class_names.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/doc/character_class_names.html 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,326 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+ <head>
+ <title>Boost.Regex: Character Class Names</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <link rel="stylesheet" type="text/css" href="../../../boost.css">
+ </head>
+ <body>
+ <P>
+ <TABLE id="Table1" cellSpacing="1" cellPadding="1" width="100%" border="0">
+ <TR>
+ <td valign="top" width="300">
+ <h3>C++ Boost</h3>
+ </td>
+ <TD width="353">
+ <H1 align="center">Boost.Regex</H1>
+ <H2 align="center">Character Class Names.</H2>
+ </TD>
+ <td width="50">
+ <h3>Boost.Regex Index</h3>
+ </td>
+ </TR>
+ </TABLE>
+ </P>
+ <HR>
+ <p></p>
+ <H3>Contents</H3>
+ <dl class="index">
+ <dt>Character Classes that are Always Supported <dt><a href="#unicode">
+ Character classes that are supported by Unicode Regular Expressions</a></dt>
+ </dl>
+ <H3><A name="always"></A>Character Classes that are Always Supported</H3>
+ <P>The following character class names are always supported by Boost.Regex:</P>
+ <P>
+ <TABLE id="Table2" cellSpacing="1" cellPadding="1" width="100%" border="1">
+ <TR>
+ <TD><STRONG>Name</STRONG></TD>
+ <TD><STRONG>POSIX-standard name</STRONG></TD>
+ <TD><STRONG>Description</STRONG></TD>
+ </TR>
+ <TR>
+ <TD>alnum</TD>
+ <TD>Yes</TD>
+ <TD>Any alpha-numeric character.</TD>
+ </TR>
+ <TR>
+ <TD>alpha</TD>
+ <TD>Yes</TD>
+ <TD>Any alphabetic character.</TD>
+ </TR>
+ <TR>
+ <TD>blank</TD>
+ <TD>Yes</TD>
+ <TD>Any whitespace character that is not a line separator.</TD>
+ </TR>
+ <TR>
+ <TD>cntrl</TD>
+ <TD>Yes</TD>
+ <TD>Any control character.</TD>
+ </TR>
+ <TR>
+ <TD>d</TD>
+ <TD>No</TD>
+ <TD>Any decimal digit</TD>
+ </TR>
+ <TR>
+ <TD>digit</TD>
+ <TD>Yes</TD>
+ <TD>Any decimal digit.</TD>
+ </TR>
+ <TR>
+ <TD>graph</TD>
+ <TD>Yes</TD>
+ <TD>Any graphical character.</TD>
+ </TR>
+ <TR>
+ <TD>l</TD>
+ <TD>No</TD>
+ <TD>Any lower case character.</TD>
+ </TR>
+ <TR>
+ <TD>lower</TD>
+ <TD>Yes</TD>
+ <TD>Any lower case character.</TD>
+ </TR>
+ <TR>
+ <TD>print</TD>
+ <TD>Yes</TD>
+ <TD>Any printable character.</TD>
+ </TR>
+ <TR>
+ <TD>punct</TD>
+ <TD>Yes</TD>
+ <TD>Any punctuation character.</TD>
+ </TR>
+ <TR>
+ <TD>s</TD>
+ <TD>No</TD>
+ <TD>Any whitespace character.</TD>
+ </TR>
+ <TR>
+ <TD>space</TD>
+ <TD>Yes</TD>
+ <TD>Any whitespace character.</TD>
+ </TR>
+ <TR>
+ <TD>unicode</TD>
+ <TD>No</TD>
+ <TD>Any extended character whose code point is above 255 in value.</TD>
+ </TR>
+ <TR>
+ <TD>u</TD>
+ <TD>No</TD>
+ <TD>Any upper case character.</TD>
+ </TR>
+ <TR>
+ <TD>upper</TD>
+ <TD>Yes</TD>
+ <TD>Any upper case character.</TD>
+ </TR>
+ <TR>
+ <TD>w</TD>
+ <TD>No</TD>
+ <TD>Any word character (alphanumeric characters plus the underscore).</TD>
+ </TR>
+ <TR>
+ <TD>word</TD>
+ <TD>No</TD>
+ <TD>Any word character (alphanumeric characters plus the underscore).</TD>
+ </TR>
+ <TR>
+ <TD>xdigit</TD>
+ <TD>Yes</TD>
+ <TD>Any hexadecimal digit character.</TD>
+ </TR>
+ </TABLE>
+ </P>
+ <P>
+ <H3><A name="unicode"></A>Character classes that are supported by Unicode Regular
+ Expressions</H3>
+ <P>The following character classes are only supported by <A href="icu_strings.html">Unicode
+ Regular Expressions</A>: that is those that use the u32regex type.&nbsp; The
+ names used are the same as those from <A href="http://www.unicode.org/versions/Unicode4.0.0/ch04.pdf#G124142">
+ Chapter 4 of the Unicode standard</A>.</P>
+ <table width="100%" ID="Table3">
+ <tr>
+ <td><b>Short Name</b></td>
+ <td><b>Long Name</b></td>
+ </tr>
+ <tr>
+ <td>
+ </td>
+ <td>ASCII</td>
+ </tr>
+ <tr>
+ <td>
+ </td>
+ <td>Any</td>
+ </tr>
+ <tr>
+ <td>
+ </td>
+ <td>Assigned</td>
+ </tr>
+ <tr>
+ <td>C*</td>
+ <td>Other</td>
+ </tr>
+ <tr>
+ <td>Cc</td>
+ <td>Control</td>
+ </tr>
+ <tr>
+ <td>Cf</td>
+ <td>Format</td>
+ </tr>
+ <tr>
+ <td>Cn</td>
+ <td>Not Assigned</td>
+ </tr>
+ <tr>
+ <td>Co</td>
+ <td>Private Use</td>
+ </tr>
+ <tr>
+ <td>Cs</td>
+ <td>Surrogate</td>
+ </tr>
+ <tr>
+ <td>L*</td>
+ <td>Letter</td>
+ </tr>
+ <tr>
+ <td>Ll</td>
+ <td>Lowercase Letter</td>
+ </tr>
+ <tr>
+ <td>Lm</td>
+ <td>Modifier Letter</td>
+ </tr>
+ <tr>
+ <td>Lo</td>
+ <td>Other Letter</td>
+ </tr>
+ <tr>
+ <td>Lt</td>
+ <td>Titlecase</td>
+ </tr>
+ <tr>
+ <td>Lu</td>
+ <td>Uppercase Letter</td>
+ </tr>
+ <tr>
+ <td>M*</td>
+ <td>Mark</td>
+ </tr>
+ <tr>
+ <td>Mc</td>
+ <td>Spacing Combining Mark</td>
+ </tr>
+ <tr>
+ <td>Me</td>
+ <td>Enclosing Mark</td>
+ </tr>
+ <tr>
+ <td>Mn</td>
+ <td>Non-Spacing Mark</td>
+ </tr>
+ <tr>
+ <td>N*</td>
+ <td>Number</td>
+ </tr>
+ <tr>
+ <td>Nd</td>
+ <td>Decimal Digit Number</td>
+ </tr>
+ <tr>
+ <td>Nl</td>
+ <td>Letter Number</td>
+ </tr>
+ <tr>
+ <td>No</td>
+ <td>Other Number</td>
+ </tr>
+ <tr>
+ <td>P*</td>
+ <td>Punctuation</td>
+ </tr>
+ <tr>
+ <td>Pc</td>
+ <td>Connector Punctuation</td>
+ </tr>
+ <tr>
+ <td>Pd</td>
+ <td>Dash Punctuation</td>
+ </tr>
+ <tr>
+ <td>Pe</td>
+ <td>Close Punctuation</td>
+ </tr>
+ <tr>
+ <td>Pf</td>
+ <td>Final Punctuation</td>
+ </tr>
+ <tr>
+ <td>Pi</td>
+ <td>Initial Punctuation</td>
+ </tr>
+ <tr>
+ <td>Po</td>
+ <td>Other Punctuation</td>
+ </tr>
+ <tr>
+ <td>Ps</td>
+ <td>Open Punctuation</td>
+ </tr>
+ <tr>
+ <td>S*</td>
+ <td>Symbol</td>
+ </tr>
+ <tr>
+ <td>Sc</td>
+ <td>Currency Symbol</td>
+ </tr>
+ <tr>
+ <td>Sk</td>
+ <td>Modifier Symbol</td>
+ </tr>
+ <tr>
+ <td>Sm</td>
+ <td>Math Symbol</td>
+ </tr>
+ <tr>
+ <td>So</td>
+ <td>Other Symbol</td>
+ </tr>
+ <tr>
+ <td>Z*</td>
+ <td>Separator</td>
+ </tr>
+ <tr>
+ <td>Zl</td>
+ <td>Line Separator</td>
+ </tr>
+ <tr>
+ <td>Zp</td>
+ <td>Paragraph Separator</td>
+ </tr>
+ <tr>
+ <td>Zs</td>
+ <td>Space Separator</td>
+ </tr>
+ </table>
+ <HR>
+ <P></P>
+ <P></P>
+ <p>Revised&nbsp;&nbsp;
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->
+ 10&nbsp;Jan 2005&nbsp;
+ <!--webbot bot="Timestamp" endspan i-checksum="39359" --></p>
+ <p><i>© Copyright John Maddock&nbsp;2004-5</i></p>
+ <P><I>Use, modification and distribution are subject to the Boost Software License,
+ Version 1.0. (See accompanying file LICENSE_1_0.txt
+ or copy at http://www.boost.org/LICENSE_1_0.txt)</I></P>
+ </body>
+</html>

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/doc/collating_names.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/doc/collating_names.html 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,368 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+ <head>
+ <title>Boost.Regex: Collating Element Names</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <link rel="stylesheet" type="text/css" href="../../../boost.css">
+ </head>
+ <body>
+ <P>
+ <TABLE id="Table1" cellSpacing="1" cellPadding="1" width="100%" border="0">
+ <TR>
+ <td valign="top" width="300">
+ <h3>C++ Boost</h3>
+ </td>
+ <TD width="353">
+ <H1 align="center">Boost.Regex</H1>
+ <H2 align="center">Collating Element Names</H2>
+ </TD>
+ <td width="50">
+ <h3>Boost.Regex Index</h3>
+ </td>
+ </TR>
+ </TABLE>
+ </P>
+ <HR>
+ <p></p>
+ <H3>Contents</H3>
+ <dl class="index">
+ <dt>Digraphs</dt>
+ <dt>POSIX Symbolic Names</dt>
+ <dt>Unicode Symbolic Names</dt>
+ </dl>
+ <H3><A name="digraphs"></A>Digraphs</H3>
+ <P>The following are treated as valid digraphs when used as a collating name:</P>
+ <P>"ae", "Ae", "AE", "ch", "Ch", "CH", "ll", "Ll", "LL", "ss", "Ss", "SS", "nj",
+ "Nj", "NJ", "dz", "Dz", "DZ", "lj", "Lj", "LJ".</P>
+ <H3><A name="posix"></A>POSIX Symbolic Names</H3>
+ <P>The following symbolic names are recognised as valid collating element names,
+ in addition to any single character:</P>
+ <P>
+ <TABLE id="Table2" cellSpacing="1" cellPadding="1" width="50%" border="1">
+ <TR>
+ <TD><STRONG>Name</STRONG></TD>
+ <TD><STRONG>Character</STRONG></TD>
+ </TR>
+ <TR>
+ <TD>NUL</TD>
+ <TD>\x00</TD>
+ </TR>
+ <TR>
+ <TD>SOH</TD>
+ <TD>\x01</TD>
+ </TR>
+ <TR>
+ <TD>STX</TD>
+ <TD>\x02</TD>
+ </TR>
+ <TR>
+ <TD>ETX</TD>
+ <TD>\x03</TD>
+ </TR>
+ <TR>
+ <TD>EOT</TD>
+ <TD>\x04</TD>
+ </TR>
+ <TR>
+ <TD>ENQ</TD>
+ <TD>\x05</TD>
+ </TR>
+ <TR>
+ <TD>ACK</TD>
+ <TD>\x06</TD>
+ </TR>
+ <TR>
+ <TD>alert</TD>
+ <TD>\x07</TD>
+ </TR>
+ <TR>
+ <TD>backspace</TD>
+ <TD>\x08</TD>
+ </TR>
+ <TR>
+ <TD>tab</TD>
+ <TD>\t</TD>
+ </TR>
+ <TR>
+ <TD>newline</TD>
+ <TD>\n</TD>
+ </TR>
+ <TR>
+ <TD>vertical-tab</TD>
+ <TD>\v</TD>
+ </TR>
+ <TR>
+ <TD>form-feed</TD>
+ <TD>\f</TD>
+ </TR>
+ <TR>
+ <TD>carriage-return</TD>
+ <TD>\r</TD>
+ </TR>
+ <TR>
+ <TD>SO</TD>
+ <TD>\xE</TD>
+ </TR>
+ <TR>
+ <TD>SI</TD>
+ <TD>\xF</TD>
+ </TR>
+ <TR>
+ <TD>DLE</TD>
+ <TD>\x10</TD>
+ </TR>
+ <TR>
+ <TD>DC1</TD>
+ <TD>\x11</TD>
+ </TR>
+ <TR>
+ <TD>DC2</TD>
+ <TD>\x12</TD>
+ </TR>
+ <TR>
+ <TD>DC3</TD>
+ <TD>\x13</TD>
+ </TR>
+ <TR>
+ <TD>DC4</TD>
+ <TD>\x14</TD>
+ </TR>
+ <TR>
+ <TD>NAK</TD>
+ <TD>\x15</TD>
+ </TR>
+ <TR>
+ <TD>SYN</TD>
+ <TD>\x16</TD>
+ </TR>
+ <TR>
+ <TD>ETB</TD>
+ <TD>\x17</TD>
+ </TR>
+ <TR>
+ <TD>CAN</TD>
+ <TD>\x18</TD>
+ </TR>
+ <TR>
+ <TD>EM</TD>
+ <TD>\x19</TD>
+ </TR>
+ <TR>
+ <TD>SUB</TD>
+ <TD>\x1A</TD>
+ </TR>
+ <TR>
+ <TD>ESC</TD>
+ <TD>\x1B</TD>
+ </TR>
+ <TR>
+ <TD>IS4</TD>
+ <TD>\x1C</TD>
+ </TR>
+ <TR>
+ <TD>IS3</TD>
+ <TD>\x1D</TD>
+ </TR>
+ <TR>
+ <TD>IS2</TD>
+ <TD>\x1E</TD>
+ </TR>
+ <TR>
+ <TD>IS1</TD>
+ <TD>\x1F</TD>
+ </TR>
+ <TR>
+ <TD>space</TD>
+ <TD>\x20</TD>
+ </TR>
+ <TR>
+ <TD>exclamation-mark</TD>
+ <TD>!</TD>
+ </TR>
+ <TR>
+ <TD>quotation-mark</TD>
+ <TD>"</TD>
+ </TR>
+ <TR>
+ <TD>number-sign</TD>
+ <TD>#</TD>
+ </TR>
+ <TR>
+ <TD>dollar-sign</TD>
+ <TD>$</TD>
+ </TR>
+ <TR>
+ <TD>percent-sign</TD>
+ <TD>%</TD>
+ </TR>
+ <TR>
+ <TD>ampersand</TD>
+ <TD>&amp;</TD>
+ </TR>
+ <TR>
+ <TD>apostrophe</TD>
+ <TD>'</TD>
+ </TR>
+ <TR>
+ <TD>left-parenthesis</TD>
+ <TD>(</TD>
+ </TR>
+ <TR>
+ <TD>right-parenthesis</TD>
+ <TD>)</TD>
+ </TR>
+ <TR>
+ <TD>asterisk</TD>
+ <TD>*</TD>
+ </TR>
+ <TR>
+ <TD>plus-sign</TD>
+ <TD>+</TD>
+ </TR>
+ <TR>
+ <TD>comma</TD>
+ <TD>,</TD>
+ </TR>
+ <TR>
+ <TD>hyphen</TD>
+ <TD>-</TD>
+ </TR>
+ <TR>
+ <TD>period</TD>
+ <TD>.</TD>
+ </TR>
+ <TR>
+ <TD>slash</TD>
+ <TD>/</TD>
+ </TR>
+ <TR>
+ <TD>zero</TD>
+ <TD>0</TD>
+ </TR>
+ <TR>
+ <TD>one</TD>
+ <TD>1</TD>
+ </TR>
+ <TR>
+ <TD>two</TD>
+ <TD>2</TD>
+ </TR>
+ <TR>
+ <TD>three</TD>
+ <TD>3</TD>
+ </TR>
+ <TR>
+ <TD>four</TD>
+ <TD>4</TD>
+ </TR>
+ <TR>
+ <TD>five</TD>
+ <TD>5</TD>
+ </TR>
+ <TR>
+ <TD>six</TD>
+ <TD>6</TD>
+ </TR>
+ <TR>
+ <TD>seven</TD>
+ <TD>7</TD>
+ </TR>
+ <TR>
+ <TD>eight</TD>
+ <TD>8</TD>
+ </TR>
+ <TR>
+ <TD>nine</TD>
+ <TD>9</TD>
+ </TR>
+ <TR>
+ <TD>colon</TD>
+ <TD>:</TD>
+ </TR>
+ <TR>
+ <TD>semicolon</TD>
+ <TD>;</TD>
+ </TR>
+ <TR>
+ <TD>less-than-sign</TD>
+ <TD>&lt;</TD>
+ </TR>
+ <TR>
+ <TD>equals-sign</TD>
+ <TD>=</TD>
+ </TR>
+ <TR>
+ <TD>greater-than-sign</TD>
+ <TD>&gt;</TD>
+ </TR>
+ <TR>
+ <TD>question-mark</TD>
+ <TD>?</TD>
+ </TR>
+ <TR>
+ <TD>commercial-at</TD>
+ <TD>@</TD>
+ </TR>
+ <TR>
+ <TD>left-square-bracket</TD>
+ <TD>[</TD>
+ </TR>
+ <TR>
+ <TD>backslash</TD>
+ <TD>\</TD>
+ </TR>
+ <TR>
+ <TD>right-square-bracket</TD>
+ <TD>]</TD>
+ </TR>
+ <TR>
+ <TD>circumflex</TD>
+ <TD>~</TD>
+ </TR>
+ <TR>
+ <TD>underscore</TD>
+ <TD>_</TD>
+ </TR>
+ <TR>
+ <TD>grave-accent</TD>
+ <TD>`</TD>
+ </TR>
+ <TR>
+ <TD>left-curly-bracket</TD>
+ <TD>{</TD>
+ </TR>
+ <TR>
+ <TD>vertical-line</TD>
+ <TD>|</TD>
+ </TR>
+ <TR>
+ <TD>right-curly-bracket</TD>
+ <TD>}</TD>
+ </TR>
+ <TR>
+ <TD>tilde</TD>
+ <TD>~</TD>
+ </TR>
+ <TR>
+ <TD>DEL</TD>
+ <TD>\x7F</TD>
+ </TR>
+ </TABLE>
+ </P>
+ <P>
+ <H3><A name="unicode"></A>Named Unicode Characters</H3>
+ <P>When using Unicode aware regular expressions (with
+ the <EM>u32regex </EM>type), all the normal symbolic names for Unicode
+ characters (those given in Unidata.txt) are recognised.</P>
+ <P>
+ <HR>
+ </P>
+ <P></P>
+ <p>Revised 12 Jan 2005
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan --></p>
+ <p><i>© Copyright John Maddock&nbsp;2004-2005</i></p>
+ <P><I>Use, modification and distribution are subject to the Boost Software License,
+ Version 1.0. (See accompanying file LICENSE_1_0.txt
+ or copy at http://www.boost.org/LICENSE_1_0.txt)</I></P>
+ </body>
+</html>

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/doc/concepts.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/doc/concepts.html 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,453 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+ <head>
+ <title>Boost.Regex: Index</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <link rel="stylesheet" type="text/css" href="../../../boost.css">
+ </head>
+ <body>
+ <P>
+ <TABLE id="Table1" cellSpacing="1" cellPadding="1" width="100%" border="0">
+ <TR>
+ <td valign="top" width="300">
+ <h3>C++ Boost</h3>
+ </td>
+ <TD width="353">
+ <H1 align="center">Boost.Regex</H1>
+ <H2 align="center">Concepts</H2>
+ </TD>
+ <td width="50">
+ <h3>Boost.Regex Index</h3>
+ </td>
+ </TR>
+ </TABLE>
+ </P>
+ <HR>
+ <p></p>
+ <H3><A name="charT"></A>charT requirements</H3>
+ <P>Type charT used a template argument to <A href="basic_regex.html">class template
+ basic_regex</A>, must have a trivial default constructor, copy constructor,
+ assignment operator, and destructor.&nbsp; In addition the following
+ requirements must be met for objects; c of type charT, c1 and c2 of type charT
+ const, and i of type int:</P>
+ <P>
+ <TABLE id="Table2" cellSpacing="1" cellPadding="1" width="100%" border="1">
+ <TR>
+ <TD><STRONG>Expression</STRONG></TD>
+ <TD><STRONG>Return type</STRONG></TD>
+ <TD><STRONG>Assertion / Note / Pre- / Post-condition</STRONG></TD>
+ </TR>
+ <TR>
+ <TD>charT c</TD>
+ <TD>charT</TD>
+ <TD>Default constructor (must be trivial).</TD>
+ </TR>
+ <TR>
+ <TD>charT c(c1)</TD>
+ <TD>charT</TD>
+ <TD>Copy constructor (must be trivial).</TD>
+ </TR>
+ <TR>
+ <TD>c1 = c2</TD>
+ <TD>charT</TD>
+ <TD>Assignment operator (must be trivial).</TD>
+ </TR>
+ <TR>
+ <TD>c1 == c2</TD>
+ <TD>bool</TD>
+ <TD>true if&nbsp;c1 has the same value&nbsp;as c2.</TD>
+ </TR>
+ <TR>
+ <TD>c1 != c2</TD>
+ <TD>bool</TD>
+ <TD>true if c1 and c2 are not equal.</TD>
+ </TR>
+ <TR>
+ <TD>c1 &lt; c2</TD>
+ <TD>bool</TD>
+ <TD>true if the value of c1 is less than c2.</TD>
+ </TR>
+ <TR>
+ <TD>c1 &gt; c2</TD>
+ <TD>bool</TD>
+ <TD>true if the value of c1 is greater than c2.</TD>
+ </TR>
+ <TR>
+ <TD>c1 &lt;= c2</TD>
+ <TD>bool</TD>
+ <TD>true if c1 is less than or equal to c2.</TD>
+ </TR>
+ <TR>
+ <TD>c1 &gt;= c2</TD>
+ <TD>bool</TD>
+ <TD>true if c1 is greater than or equal to c2.</TD>
+ </TR>
+ <TR>
+ <TD>intmax_t i = c1</TD>
+ <TD>int</TD>
+ <TD>
+ <P>charT must be convertible to an integral type.</P>
+ <P>Note: type charT is not required to support this operation, if the traits class
+ used supports the full Boost-specific interface, rather than&nbsp;the minimal
+ standardised-interface (see traits class requirements below).</P>
+ </TD>
+ </TR>
+ <TR>
+ <TD>charT c(i);</TD>
+ <TD>charT</TD>
+ <TD>charT must be constructable from an integral type.</TD>
+ </TR>
+ </TABLE>
+ </P>
+ <H3><A name="traits"></A>traits requirements</H3>
+ <P>There are two sets of requirements for the traits template argument to
+ basic_regex: a mininal interface (which is part of the regex standardization
+ proposal), and an optional Boost-specific enhanced interface.</P>
+ <H4>Minimal requirements.</H4>
+ <P>In the following table X denotes a traits class defining types and functions
+ for the character container type charT; u is an object of type X; v is an
+ object of type const X; p is a value of type const charT*; I1 and I2 are Input
+ Iterators; c is a value of type const charT; s is an object of type
+ X::string_type; cs is an object of type const X::string_type; b is a value of
+ type bool; I is a value of type int; F1 and F2 are values of type const charT*;
+ and loc is an object of type X::locale_type.</P>
+ <P>
+ <TABLE id="Table3" cellSpacing="1" cellPadding="7" width="100%" border="1">
+ <TR>
+ <TD vAlign="top" width="28%">
+ <P><STRONG>Expression</STRONG></P>
+ </TD>
+ <TD vAlign="top" width="28%">
+ <P><STRONG>Return type</STRONG></P>
+ </TD>
+ <TD vAlign="top" width="45%">
+ <P><STRONG>Assertion / Note
+ <BR>
+ Pre / Post condition</STRONG></P>
+ </TD>
+ </TR>
+ <TR>
+ <TD vAlign="top" width="28%">
+ <P>X::char_type</P>
+ </TD>
+ <TD vAlign="top" width="28%">
+ <P>charT</P>
+ </TD>
+ <TD vAlign="top" width="45%">
+ <P>The character container type used in the implementation of class template <CODE>basic_regex</CODE>.</P>
+ </TD>
+ </TR>
+ <TR>
+ <TD vAlign="top" width="28%">
+ <P>X::size_type</P>
+ </TD>
+ <TD vAlign="top" width="28%">
+ <P>&nbsp;</P>
+ </TD>
+ <TD vAlign="top" width="45%">
+ <P>An unsigned integer type, capable of holding the length of a null-terminated
+ string of charT's.</P>
+ </TD>
+ </TR>
+ <TR>
+ <TD vAlign="top" width="28%">
+ <P>X::string_type</P>
+ </TD>
+ <TD vAlign="top" width="28%">
+ <P>std::basic_string&lt;charT&gt; or std::vector&lt;charT&gt;</P>
+ </TD>
+ <TD vAlign="top" width="45%">
+ <P>&nbsp;</P>
+ </TD>
+ </TR>
+ <TR>
+ <TD vAlign="top" width="28%">
+ <P>X::locale_type</P>
+ </TD>
+ <TD vAlign="top" width="28%">
+ <P>Implementation defined</P>
+ </TD>
+ <TD vAlign="top" width="45%">
+ <P>A copy constructible type that represents the locale used by the traits class.</P>
+ </TD>
+ </TR>
+ <TR>
+ <TD vAlign="top" width="28%">
+ <P>X::char_class_type</P>
+ </TD>
+ <TD vAlign="top" width="28%">
+ <P>Implementation defined</P>
+ </TD>
+ <TD vAlign="top" width="45%">
+ <P>A bitmask type representing a particular character classification. Multiple
+ values of this type can be bitwise-or'ed together to obtain a new valid value.</P>
+ </TD>
+ </TR>
+ <TR>
+ <TD vAlign="top" width="28%">
+ <P>X::length(p)</P>
+ </TD>
+ <TD vAlign="top" width="28%">
+ <P>X::size_type</P>
+ </TD>
+ <TD vAlign="top" width="45%">
+ <P>Yields the smallest <CODE>i</CODE> such that <CODE>p[i] == 0</CODE>. Complexity
+ is linear in <CODE>i</CODE>.</P>
+ </TD>
+ </TR>
+ <TR>
+ <TD vAlign="top" width="28%">
+ <P>v.translate(c)</P>
+ </TD>
+ <TD vAlign="top" width="28%">
+ <P>X::char_type</P>
+ </TD>
+ <TD vAlign="top" width="45%">
+ <P>Returns a character such that for any character d that is to be considered
+ equivalent to c then v.translate(c) == v.translate(d).</P>
+ </TD>
+ </TR>
+ <TR>
+ <TD vAlign="top" width="28%">
+ <P>v.translate_nocase(c)</P>
+ </TD>
+ <TD vAlign="top" width="28%">X::char_type</TD>
+ <TD vAlign="top" width="45%">For all characters C that are to be considered
+ equivalent to c when comparisons are to be performed without regard to case,
+ then v.translate_- nocase(c) == v.translate_- nocase(C).</TD>
+ </TR>
+ <TR>
+ <TD vAlign="top" width="28%">
+ <P>v.transform(F1, F2)</P>
+ </TD>
+ <TD vAlign="top" width="28%">
+ <P>X::string_type</P>
+ </TD>
+ <TD vAlign="top" width="45%">
+ <P>Returns a sort key for the character sequence designated by the iterator range
+ [F1, F2) such that if the character sequence [G1, G2) sorts before the
+ character sequence [H1, H2) then v.transform(G1, G2) &lt; v.transform(H1,
+ H2).&nbsp;</P>
+ </TD>
+ </TR>
+ <TR>
+ <TD vAlign="top" width="28%">
+ <P>v.transform_primary(F1, F2)</P>
+ </TD>
+ <TD vAlign="top" width="28%">
+ <P>X::string_type</P>
+ </TD>
+ <TD vAlign="top" width="45%">
+ <P>Returns a sort key for the character sequence designated by the iterator range
+ [F1, F2) such that if the character sequence [G1, G2) sorts before the
+ character sequence [H1, H2) when character case is not considered then
+ v.transform_primary(G1, G2) &lt; v.transform_- primary(H1, H2).</P>
+ </TD>
+ </TR>
+ <TR>
+ <TD vAlign="top" width="28%">
+ <P>v.lookup_classname(F1, F2)</P>
+ </TD>
+ <TD vAlign="top" width="28%">
+ <P>X::char_class_type</P>
+ </TD>
+ <TD vAlign="top" width="45%">
+ <P>Converts the character sequence designated by the iterator range [F1,F2) into a
+ bitmask type that can subsequently be passed to isctype. Values returned from
+ lookup_classname can be safely bitwise or'ed together. Returns 0 if the
+ character sequence is not the name of a character class recognized by X. The
+ value returned shall be independent of the case of the characters in the
+ sequence.</P>
+ </TD>
+ </TR>
+ <TR>
+ <TD vAlign="top" width="28%">
+ <P>v.lookup_collatename(F1, F2)</P>
+ </TD>
+ <TD vAlign="top" width="28%">
+ <P>X::string_type</P>
+ </TD>
+ <TD vAlign="top" width="45%">
+ <P>Returns a sequence of characters that represents the collating element
+ consisting of the character sequence designated by the iterator range [F1, F2).
+ Returns an empty string if the character sequence is not a valid collating
+ element.</P>
+ </TD>
+ </TR>
+ <TR>
+ <TD vAlign="top" width="28%">
+ <P>v.isctype(c, v.lookup_classname (F1, F2))</P>
+ </TD>
+ <TD vAlign="top" width="28%">
+ <P>bool</P>
+ </TD>
+ <TD vAlign="top" width="45%">
+ <P>Returns true if character c is a member of the character class designated by
+ the iterator range [F1, F2), false otherwise.</P>
+ </TD>
+ </TR>
+ <TR>
+ <TD vAlign="top" width="28%">
+ <P>v.value(c, i)</P>
+ </TD>
+ <TD vAlign="top" width="28%">
+ <P>int</P>
+ </TD>
+ <TD vAlign="top" width="45%">
+ <P>Returns the value represented by the digit c in base I if the character c is a
+ valid digit in base I; otherwise returns -1. [Note: the value of I will only be
+ 8, 10, or 16. -end note]</P>
+ </TD>
+ </TR>
+ <TR>
+ <TD vAlign="top" width="28%">
+ <P>u.imbue(loc)</P>
+ </TD>
+ <TD vAlign="top" width="28%">
+ <P>X::locale_type</P>
+ </TD>
+ <TD vAlign="top" width="45%">
+ <P>Imbues <CODE>u</CODE> with the locale <CODE>loc</CODE>, returns the previous
+ locale used by u if any.&nbsp;</P>
+ </TD>
+ </TR>
+ <TR>
+ <TD vAlign="top" width="28%">
+ <P>v.getloc()</P>
+ </TD>
+ <TD vAlign="top" width="28%">
+ <P>X::locale_type</P>
+ </TD>
+ <TD vAlign="top" width="45%">
+ <P>Returns the current locale used by <CODE>v</CODE> if any.&nbsp;</P>
+ </TD>
+ </TR>
+ <TR>
+ <TD vAlign="top" width="28%">
+ <P>v.error_string(i)</P>
+ </TD>
+ <TD vAlign="top" width="28%">
+ <P>std::string</P>
+ </TD>
+ <TD vAlign="top" width="45%">
+ <P>Returns a human readable error string for the error condition <CODE>i</CODE>,
+ where <CODE>i</CODE> is one of the values enumerated by type <CODE>regex_constants::error_type</CODE>.&nbsp;
+ If the value <CODE>i</CODE> is not recognized then returns the string "Unknown
+ error" or a localized equivalent.</P>
+ </TD>
+ </TR>
+ </TABLE>
+ </P>
+ <H4>Additional Optional Requirements</H4>
+ <P>The following additional requirements are strictly optional, however in order
+ for basic_regex to take advantage of these additional interfaces, all of the
+ following requirements must be met; basic_regex will detect the presence or
+ absense of member <EM>boost_extensions_tag </EM>and configure itself
+ appropriately.</P>
+ <P>
+ <TABLE id="Table4" cellSpacing="1" cellPadding="1" width="100%" border="1">
+ <TR>
+ <TD><STRONG>Expression</STRONG></TD>
+ <TD width="231"><STRONG>Result</STRONG></TD>
+ <TD>
+ <P><STRONG>Assertion / Note
+ <BR>
+ Pre / Post condition</STRONG></P>
+ </TD>
+ </TR>
+ <TR>
+ <TD>X::boost_extensions_tag</TD>
+ <TD width="231">An unspecified type.</TD>
+ <TD>When present, all of the extensions listed in this table must be present.</TD>
+ </TR>
+ <TR>
+ <TD>
+ <P>v.syntax_type(c)</P>
+ </TD>
+ <TD width="231">regex_constants::syntax_type</TD>
+ <TD>
+ <P>Returns a symbolic value of type <CODE>regex_constants::syntax_type </CODE>that
+ signifies the meaning of character <CODE>c</CODE> within the regular expression
+ grammar.</P>
+ </TD>
+ </TR>
+ <TR>
+ <TD>v.escape_syntax_type(c)</TD>
+ <TD width="231">regex_constants::escape_syntax_type</TD>
+ <TD>
+ <P>Returns a symbolic value of type <CODE>regex_constants::escape_syntax_type</CODE>,
+ that signifies the meaning of character <CODE>c</CODE>&nbsp;within the regular
+ expression grammar, when <CODE>c</CODE> has been preceded by an escape
+ character. Precondition: if <CODE>b</CODE> is the character preceding <CODE>c</CODE>
+ in the expression being parsed then: <CODE>v.syntax_type(b) == syntax_escape</CODE></P>
+ </TD>
+ </TR>
+ <TR>
+ <TD>
+ <P>v.translate(c, b)</P>
+ </TD>
+ <TD width="231">X::char_type</TD>
+ <TD>
+ <P>Returns a character <CODE>d</CODE> such that: for any character <CODE>d</CODE> that
+ is to be considered equivalent to <CODE>c</CODE>&nbsp;then <CODE>v.translate(c,false)==v.translate(d,false)</CODE>.
+ Likewise for all characters <CODE>C</CODE> that are to be considered equivalent
+ to <CODE>c</CODE> when comparisons are to be performed without regard to case,
+ then <CODE>v.translate(c,true)==v.translate(C,true)</CODE>.</P>
+ </TD>
+ </TR>
+ <TR>
+ <TD>
+ <P>v.toi(I1, I2, i)</P>
+ </TD>
+ <TD width="231">An integer type capable of holding either a charT or an int.</TD>
+ <TD>
+ <P>Behaves as follows: if <CODE>p==q</CODE> or if <CODE>*p </CODE>is not a digit
+ character then returns -1. Otherwise performs formatted numeric input on the
+ sequence [p,q) and returns the result as an int. Postcondition: either <CODE>p ==
+ q</CODE> or <CODE>*p</CODE> is a non-digit character.</P>
+ </TD>
+ </TR>
+ <TR>
+ <TD>
+ <P>v.error_string(i)</P>
+ </TD>
+ <TD width="231">std::string</TD>
+ <TD>
+ <P>Returns a human readable error string for the error condition <CODE>i</CODE>,
+ where <CODE>i</CODE> is one of the values enumerated by type <CODE><A href="error_type.html">
+ regex_constants::error_type</A></CODE>.&nbsp; If the value <CODE>i</CODE>
+ is not recognized then returns the string "Unknown error" or a localized
+ equivalent.</P>
+ </TD>
+ </TR>
+ <TR>
+ <TD>v.tolower(c)</TD>
+ <TD width="231">X::char_type</TD>
+ <TD>Converts c to lower case, used for Perl-style \l and \L formating operations.</TD>
+ </TR>
+ <TR>
+ <TD>v.toupper(c)</TD>
+ <TD width="231">X::char_type</TD>
+ <TD>Converts c to upper case, used for Perl-style \u and \U formating operations.</TD>
+ </TR>
+ </TABLE>
+ </P>
+ <H3><A name="iterator"></A>Iterator Rrequirements</H3>
+ <P>
+ <P>The regular expression algorithms (and iterators) take all require a
+ Bidirectional-Iterator.</P>
+ <P>
+ <HR>
+ </P>
+ <P></P>
+ <p>Revised
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->
+ 24&nbsp;June 2004&nbsp;
+ <!--webbot bot="Timestamp" endspan i-checksum="39359" --></p>
+ <p><i>© Copyright John Maddock&nbsp;1998-
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%Y" startspan --> 2004<!--webbot bot="Timestamp" endspan i-checksum="39359" --></i></p>
+ <P><I>Use, modification and distribution are subject to the Boost Software License,
+ Version 1.0. (See accompanying file LICENSE_1_0.txt
+ or copy at http://www.boost.org/LICENSE_1_0.txt)</I></P>
+ </body>
+</html>

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/doc/configuration.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/doc/configuration.html 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,155 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+ <head>
+ <title>Boost.Regex: Configuration and setup</title>
+ <meta name="generator" content="HTML Tidy, see www.w3.org">
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <link rel="stylesheet" type="text/css" href="../../../boost.css">
+ </head>
+ <body>
+ <table id="Table1" cellspacing="1" cellpadding="1" width="100%" border="0">
+ <tr>
+ <td valign="top" width="300">
+ <h3>C++ Boost</h3>
+ </td>
+ <td width="353">
+ <h1 align="center">Boost.Regex</h1>
+ <h2 align="center">Configuration and setup</h2>
+ </td>
+ <td width="50">
+ <h3>Boost.Regex Index</h3>
+ </td>
+ </tr>
+ </table>
+ <br>
+ <br>
+ <hr>
+ <h2>Contents</h2>
+ <dl class="index">
+ <dt>Compiler setup <dt><a href="#locale">Locale and traits class
+ selection</a> <dt>Linkage Options <dt><a href="#algorithm">Algorithm
+ Selection</a> <dt>Algorithm Tuning</dt>
+ </dl>
+ <h3><a name="compiler"></a>Compiler setup.</h3>
+ <p>You shouldn't need to do anything special to configure boost.regex for use with
+ your compiler - the boost.config subsystem
+ should already take care of it, if you do have problems (or you are using a
+ particularly obscure compiler or platform) then boost.config&nbsp;has
+ a&nbsp;configure script.</p>
+ <h3><a name="locale"></a>Locale and traits class selection.</h3>
+ <p>The following macros (see user.hpp)
+ control how boost.regex interacts with the user's locale:</p>
+ <table id="Table2" cellspacing="1" cellpadding="1" width="100%" border="1">
+ <tr>
+ <td width="265">BOOST_REGEX_USE_C_LOCALE</td>
+ <td>
+ Forces boost.regex to use the global C locale in its traits class support: this
+ is now deprecated in favour of the C++ locale.</td>
+ </tr>
+ <tr>
+ <td width="265">BOOST_REGEX_USE_CPP_LOCALE</td>
+ <td>Forces boost.regex to use std::locale in it's default traits class, regular
+ expressions can then be imbued with an instance&nbsp;specific locale.&nbsp;
+ This is the default behaviour on non-Windows platforms.</td>
+ </tr>
+ <tr>
+ <td width="265">BOOST_REGEX_NO_W32</td>
+ <td>Tells boost.regex not to use any Win32 API's even when available (implies
+ BOOST_REGEX_USE_CPP_LOCALE unless BOOST_REGEX_USE_C_LOCALE is set).</td>
+ </tr>
+ </table>
+ <br>
+ <br>
+ <h3><a name="linkage"></a>Linkage Options</h3>
+ <table id="Table3" cellspacing="1" cellpadding="1" width="100%" border="1">
+ <tr>
+ <td>BOOST_REGEX_DYN_LINK</td>
+ <td>For Microsoft and Borland C++ builds, this tells boost.regex that it should
+ link to the dll build of the boost.regex.&nbsp; By default boost.regex will
+ link to its static library build, even if the dynamic C runtime library is in
+ use.</td>
+ </tr>
+ <tr>
+ <td>BOOST_REGEX_NO_LIB</td>
+ <td>For Microsoft and Borland C++ builds, this tells boost.regex that it should
+ not automatically select the library to link to.</td>
+ </tr>
+ </table>
+ <br>
+ <br>
+ <h3><a name="algorithm"></a>Algorithm Selection</h3>
+ <table id="Table4" cellspacing="1" cellpadding="1" width="100%" border="1">
+ <tr>
+ <td width="253">BOOST_REGEX_RECURSIVE</td>
+ <td>Tells boost.regex to use a stack-recursive matching algorithm.&nbsp; This is
+ generally the fastest option (although there is very little in it), but can
+ cause stack overflow in extreme cases, on Win32 this can be handled safely, but
+ this is not the case on other platforms.</td>
+ </tr>
+ <tr>
+ <td width="253">BOOST_REGEX_NON_RECURSIVE</td>
+ <td>Tells boost.regex to use a non-stack recursive matching algorithm, this can be
+ slightly slower than the alternative, but is always safe no matter how
+ pathological the regular expression.&nbsp; This is the default on non-Win32
+ platforms.</td>
+ </tr>
+ </table>
+ <br>
+ <br>
+ <h3><a name="tuning"></a>Algorithm Tuning</h3>
+ <p>The following option applies only if BOOST_REGEX_RECURSIVE is set.</p>
+ <table id="Table6" cellspacing="1" cellpadding="1" width="100%" border="1">
+ <tr>
+ <td>BOOST_REGEX_HAS_MS_STACK_GUARD</td>
+ <td>Tells boost.regex that Microsoft style __try - __except blocks are supported,
+ and can be used to safely trap stack overflow.</td>
+ </tr>
+ </table>
+ <br>
+ <br>
+ <p>The following options apply only if BOOST_REGEX_NON_RECURSIVE is set.</p>
+ <table id="Table5" cellspacing="1" cellpadding="1" width="100%" border="1">
+ <tr>
+ <td>BOOST_REGEX_BLOCKSIZE</td>
+ <td>In non-recursive mode, boost.regex uses largish blocks of memory to act as a
+ stack for the state machine, the larger the block size then the fewer
+ allocations that will take place.&nbsp; This defaults to 4096 bytes, which is
+ large enough to match the vast majority of regular expressions&nbsp;without
+ further allocations, however, you can choose smaller or larger values depending
+ upon your platforms characteristics.</td>
+ </tr>
+ <tr>
+ <td>BOOST_REGEX_MAX_BLOCKS</td>
+ <td>Tells boost.regex how many blocks of size BOOST_REGEX_BLOCKSIZE it is
+ permitted to use.&nbsp; If this value is exceeded then boost.regex will stop
+ trying to find a match and throw a std::runtime_error.&nbsp; Defaults to 1024,
+ don't forget to tweek this value if you alter BOOST_REGEX_BLOCKSIZE by much.</td>
+ </tr>
+ <tr>
+ <td>BOOST_REGEX_MAX_CACHE_BLOCKS</td>
+ <td>Tells boost.regex how many memory blocks to store in it's internal cache -
+ memory blocks are taken from this cache rather than by calling ::operator
+ new.&nbsp; Generally speeking this can be an order of magnitude faster than
+ calling ::opertator new each time a memory block is required, but has the
+ downside that boost.regex can end up caching a large chunk of memory (by
+ default up to 16 blocks each of BOOST_REGEX_BLOCKSIZE size).&nbsp; If memory is
+ tight then try defining this to 0 (disables all caching), or if that is too
+ slow, then a value of 1 or 2, may be sufficient.&nbsp; On the other hand, on
+ large multi-processor, multi-threaded systems, you may find that a higher value
+ is in order.</td>
+ </tr>
+ </table>
+ <br>
+ <br>
+ <hr>
+ <p>Revised&nbsp;
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->
+ 23 June 2004&nbsp;
+ <!--webbot bot="Timestamp" endspan i-checksum="39359" --></p>
+ <p><i>© Copyright John Maddock&nbsp;1998-
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%Y" startspan --> 2004<!--webbot bot="Timestamp" endspan i-checksum="39359" --></i></p>
+ <P><I>Use, modification and distribution are subject to the Boost Software License,
+ Version 1.0. (See accompanying file LICENSE_1_0.txt
+ or copy at http://www.boost.org/LICENSE_1_0.txt)</I></P>
+ </body>
+</html>

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/doc/contacts.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/doc/contacts.html 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,87 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+ <head>
+ <title>Boost.Regex: Contacts</title>
+ <meta name="generator" content="HTML Tidy, see www.w3.org">
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <link rel="stylesheet" type="text/css" href="../../../boost.css">
+ </head>
+ <body>
+ <p></p>
+ <table id="Table1" cellspacing="1" cellpadding="1" width="100%" border="0">
+ <tr>
+ <td valign="top" width="300">
+ <h3>C++ Boost</h3>
+ </td>
+ <td width="353">
+ <h1 align="center">Boost.Regex</h1>
+ <h2 align="center">Contacts and Acknowledgements</h2>
+ </td>
+ <td width="50">
+ <h3>Boost.Regex Index</h3>
+ </td>
+ </tr>
+ </table>
+ <BR>
+ <BR>
+ <HR>
+ <P>The author can be contacted at john_at_[hidden];&nbsp;the home page for
+ this library is at www.boost.org.</P>
+ <P>I am indebted to <A href="http://www.cs.princeton.edu/~rs/">Robert Sedgewick's
+ "Algorithms in C++" </A>for forcing me to think about algorithms and their
+ performance, and to the folks at boost for
+ forcing me to <I>think</I>, period.</P>
+ <P>Eric Niebler, author of the <A href="http://research.microsoft.com/projects/greta">
+ GRETA regular expression component</A>, has shared several important ideas,
+ in a series of long discussions.</P>
+ <P>Pete Becker, of Dinkumware Ltd, has
+ helped enormously with the standardisation proposal language.</P>
+ <P>The following people have all contributed useful comments or fixes: Dave
+ Abrahams, Mike Allison, Edan Ayal, Jayashree Balasubramanian, Jan Bölsche,
+ Beman Dawes, Paul Baxter, David Bergman, David Dennerline, Edward Diener, Peter
+ Dimov, Robert Dunn, Fabio Forno, Tobias Gabrielsson, Rob Gillen, Marc Gregoire,
+ Chris Hecker, Nick Hodapp, Jesse Jones, Martin Jost, Boris Krasnovskiy, Jan
+ Hermelink, Max Leung, Wei-hao Lin, Jens Maurer, Richard Peters, Heiko Schmidt,
+ Jason Shirk, Gerald Slacik, Scobie Smith, Mike Smyth, Alexander Sokolovsky,
+ Hervé Poirier, Michael Raykh, Marc Recht, Scott VanCamp, Bruno Voigt, Alexey
+ Voinov, Jerry Waldorf, Rob Ward, Lealon Watts, John Wismar, Thomas Witt and
+ Yuval Yosef. I am also grateful to the manuals supplied with the Henry Spencer,
+ Perl and GNU regular expression libraries - wherever possible I have tried to
+ maintain compatibility with these libraries and with the POSIX standard - the
+ code however is entirely my own, including any bugs! I can absolutely guarantee
+ that I will not fix any bugs I don't know about, so if you have any comments or
+ spot any bugs, please get in touch.</P>
+ <P>Useful further information can be found at:</P>
+ <P>Short&nbsp;tutorials on regular expressions can be <A href="http://etext.lib.virginia.edu/helpsheets/regex.html">
+ found here</A> and&nbsp;here.</P>
+ <P>The main book on regular expressions is <A href="http://www.oreilly.com/catalog/regex/">
+ Mastering Regular Expressions, published by O'Reilly</A>.</P>
+ <P>Information on the <A href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/papers/2003/n1429.htm">
+ Boost.regex standardization proposal</A>, along with other <A href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/papers/2003/n1475.html">
+ standard library extension proposals</A> can be found on the <A href="http://anubis.dkuug.dk/jtc1/sc22/wg21/">
+ C++ Committees web pages</A>.</P>
+ <P>The<a href="http://www.opengroup.org/onlinepubs/7908799/toc.htm">Open Unix
+ Specification</a> contains a wealth of useful material, including the
+ regular expression syntax, and specifications for <a href="http://www.opengroup.org/onlinepubs/7908799/xsh/regex.h.html">
+ &lt;regex.h&gt;</a> and <a href="http://www.opengroup.org/onlinepubs/7908799/xsh/nl_types.h.html">
+ &lt;nl_types.h&gt;</a>.</P>
+ <p>The Pattern Matching Pointers
+ site is a "must visit" resource for anyone interested in pattern matching.</p>
+ <p>Glimpse and Agrep, use a
+ simplified regular expression syntax to achieve faster search times.</p>
+ <p>Udi Manber and <a href="http://www.dcc.uchile.cl/~rbaeza/">
+ Ricardo Baeza-Yates</a> both have a selection of useful pattern matching
+ papers available from their respective web sites.</p>
+ <p></p>
+ <hr>
+ <p>Revised
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->
+ 24 Oct 2003
+ <!--webbot bot="Timestamp" endspan i-checksum="39359" --></p>
+ <p><i>© Copyright John Maddock&nbsp;1998-
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%Y" startspan --> 2003<!--webbot bot="Timestamp" endspan i-checksum="39359" --></i></p>
+ <P><I>Use, modification and distribution are subject to the Boost Software License,
+ Version 1.0. (See accompanying file LICENSE_1_0.txt
+ or copy at http://www.boost.org/LICENSE_1_0.txt)</I></P>
+ </body>
+</html>

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/doc/error_type.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/doc/error_type.html 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,139 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+ <head>
+ <title>Boost.Regex: error_type</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <LINK href="../../../boost.css" type="text/css" rel="stylesheet"></head>
+ <body>
+ <P>
+ <TABLE id="Table1" cellSpacing="1" cellPadding="1" width="100%" border="0">
+ <TR>
+ <td vAlign="top" width="300">
+ <h3>C++ Boost</h3>
+ </td>
+ <TD width="353">
+ <H1 align="center">Boost.Regex</H1>
+ <H2 align="center">error_type</H2>
+ </TD>
+ <td width="50">
+ <h3>Boost.Regex Index</h3>
+ </td>
+ </TR>
+ </TABLE>
+ </P>
+ <HR>
+ <H3>Contents</H3>
+ <dl class="index">
+ <dt>Synopsis <dt>Description</dt></dl>
+ <H3><A name="synopsis"></A>Synopsis</H3>
+ <P>Type error type represents the different types of errors that can be raised by
+ the library when parsing a regular expression.</P>
+ <pre>
+namespace boost{ namespace regex_constants{
+
+typedef implementation-specific-type error_type;
+
+static const error_type error_collate;
+static const error_type error_ctype;
+static const error_type error_escape;
+static const error_type error_backref;
+static const error_type error_brack;
+static const error_type error_paren;
+static const error_type error_brace;
+static const error_type error_badbrace;
+static const error_type error_range;
+static const error_type error_space;
+static const error_type error_badrepeat;
+static const error_type error_complexity;
+static const error_type error_stack;
+static const error_type error_bad_pattern;
+
+} // namespace regex_constants
+} // namespace boost
+</pre>
+ <P>&nbsp;</P>
+ <H3><A name="description"></A>Description</H3>
+ <P>The type error_type is an implementation-specific enumeration type that may
+ take one of the following values:</P>
+ <P>
+ <TABLE id="Table2" cellSpacing="1" cellPadding="1" width="100%" border="1">
+ <TR>
+ <TD><STRONG>Constant</STRONG></TD>
+ <TD><STRONG>Meaning</STRONG></TD>
+ </TR>
+ <TR>
+ <TD>error_collate</TD>
+ <TD>An invalid collating element was specified in a [[.name.]] block.</TD>
+ </TR>
+ <TR>
+ <TD>error_ctype</TD>
+ <TD>An invalid character class name was specified in a [[:name:]] block.</TD>
+ </TR>
+ <TR>
+ <TD>error_escape</TD>
+ <TD>An invalid or trailing escape was encountered.</TD>
+ </TR>
+ <TR>
+ <TD>error_backref</TD>
+ <TD>A back-reference to a non-existant marked sub-expression was encountered.</TD>
+ </TR>
+ <TR>
+ <TD>error_brack</TD>
+ <TD>An invalid character set [...] was encountered.</TD>
+ </TR>
+ <TR>
+ <TD>error_paren</TD>
+ <TD>
+ <P>Mismatched '(' and ')'.</P>
+ </TD>
+ </TR>
+ <TR>
+ <TD>error_brace</TD>
+ <TD>Mismatched '{' and '}'.</TD>
+ </TR>
+ <TR>
+ <TD>error_badbrace</TD>
+ <TD>Invalid contents of a {...} block.</TD>
+ </TR>
+ <TR>
+ <TD>error_range</TD>
+ <TD>A character range was invalid, for example [d-a].</TD>
+ </TR>
+ <TR>
+ <TD>error_space</TD>
+ <TD>Out of memory.</TD>
+ </TR>
+ <TR>
+ <TD>error_badrepeat</TD>
+ <TD>An attempt to repeat something that can not be repeated - for example a*+</TD>
+ </TR>
+ <TR>
+ <TD>error_complexity</TD>
+ <TD>The expression became too complex to handle.</TD>
+ </TR>
+ <TR>
+ <TD>error_stack</TD>
+ <TD>Out of program stack space.</TD>
+ </TR>
+ <TR>
+ <TD>error_bad_pattern</TD>
+ <TD>Other unspecified errors.</TD>
+ </TR>
+ </TABLE>
+ </P>
+ <H3><A name="examples"></A>
+ <HR>
+ </H3>
+ <p>Revised&nbsp;
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->
+ 24 June 2004&nbsp;
+ <!--webbot bot="Timestamp" endspan i-checksum="39359" -->
+ </p>
+ <p><i>© Copyright John Maddock&nbsp;1998-
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%Y" startspan --> 2004<!--webbot bot="Timestamp" endspan i-checksum="39359" --></i></p>
+ <P><I>Use, modification and distribution are subject to the Boost Software License,
+ Version 1.0. (See accompanying file LICENSE_1_0.txt
+ or copy at http://www.boost.org/LICENSE_1_0.txt)</I></P>
+ </body>
+</html>
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/doc/examples.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/doc/examples.html 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,117 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+ <head>
+ <title>Boost.Regex: Examples</title>
+ <meta name="generator" content="HTML Tidy, see www.w3.org">
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <link rel="stylesheet" type="text/css" href="../../../boost.css">
+ </head>
+ <body>
+ <p></p>
+ <table id="Table1" cellspacing="1" cellpadding="1" width="100%" border="0">
+ <tr>
+ <td valign="top" width="300">
+ <h3>C++ Boost</h3>
+ </td>
+ <td width="353">
+ <h1 align="center">Boost.Regex</h1>
+ <h2 align="center">Examples</h2>
+ </td>
+ <td width="50">
+ <h3>Boost.Regex Index</h3>
+ </td>
+ </tr>
+ </table>
+ <BR>
+ <BR>
+ <HR>
+ <H3>Test Programs</H3>
+ <H4>regress:</H4>
+ <P>A regression test application that gives the matching/searching algorithms a
+ full workout. The presence of this program is your guarantee that the library
+ will behave as claimed - at least as far as those items tested are concerned -
+ if anyone spots anything that isn't being tested I'd be glad to hear about it.</P>
+ <P>Directory: libs/regex/test/regress.</P>
+ <P>Files: basic_tests.cpp <A href="../test/regress/test_deprecated.cpp">
+ test_deprecated.cpp</A> main.cpp.</P>
+ <H4>bad_expression_test:</H4>
+ <P>Verifies that "bad" regular expressions don't cause the matcher to go into
+ infinite loops, but to throw an exception instead.</P>
+ <P>Directory: libs/regex/test/pathology.</P>
+ <P>Files: bad_expression_test.cpp.</P>
+ <H4>recursion_test:</H4>
+ <P>Verifies that the matcher can't overrun the stack (no matter what the
+ expression).</P>
+ <P>Directory: libs/regex/test/pathology.</P>
+ <P>Files: recursion_test.cpp.</P>
+ <H4>concepts:</H4>
+ <P>Verifies that the library meets all documented concepts (a compile only test).</P>
+ <P>Directory: libs/regex/test/concepts.</P>
+ <P>Files: concept_check.cpp.</P>
+ <H4>captures_test:</H4>
+ <P>Test code for captures.</P>
+ <P>Directory: libs/test/captures.</P>
+ <P>Files: captures_test.cpp.</P>
+ <H3>Example programs</H3>
+ <H4>grep</H4>
+ <P>A simple grep implementation, run with the -h command line option to find out
+ its usage.</P>
+ <P>Files: grep.cpp</P>
+ <H4>timer.exe</H4>
+ <P>A simple interactive expression matching application, the results of all
+ matches are timed, allowing the programmer to optimize their regular
+ expressions where performance is critical.</P>
+ <P>Files: regex_timer.cpp.</P>
+ <H4>Code snippets</H4>
+ <P>The snippets examples contain the code examples used in the documentation:</P>
+ <P>captures_example.cpp:
+ Demonstrates the use of captures.</P>
+ <P>credit_card_example.cpp:
+ Credit card number formatting code.</P>
+ <P>partial_regex_grep.cpp:
+ Search example using partial matches.</P>
+ <P>partial_regex_match.cpp:
+ regex_match example using partial matches.</P>
+ <P>regex_iterator_example.cpp:
+ Iterating through a series of matches.</P>
+ <P>regex_match_example.cpp:
+ ftp based regex_match example.</P>
+ <P>regex_merge_example.cpp:
+ regex_merge example: converts a C++ file to syntax highlighted HTML.</P>
+ <P>regex_replace_example.cpp:
+ regex_replace example: converts a C++ file to syntax highlighted HTML</P>
+ <P>regex_search_example.cpp:
+ regex_search example: searches a cpp file for class definitions.</P>
+ <P>regex_token_iterator_eg_1.cpp:
+ split a string into a series of tokens.</P>
+ <P>regex_token_iterator_eg_2.cpp:
+ enumerate the linked URL's in a HTML file.</P>
+ <P>The following are deprecated:</P>
+ <P>regex_grep_example_1.cpp:
+ regex_grep example 1: searches a cpp file for class definitions.</P>
+ <P>regex_grep_example_2.cpp:
+ regex_grep example 2: searches a cpp file for class definitions, using a global
+ callback function.</P>
+ <P>regex_grep_example_3.cpp:
+ regex_grep example 2: searches a cpp file for class definitions, using a bound
+ member function callback.</P>
+ <P>regex_grep_example_4.cpp:
+ regex_grep example 2: searches a cpp file for class definitions, using a C++
+ Builder closure as a callback.</P>
+ <P>regex_split_example_1.cpp:
+ regex_split example: split a string into tokens.</P>
+ <P>regex_split_example_2.cpp
+ : regex_split example: spit out linked URL's.</P>
+ <P></P>
+ <HR>
+ <p>Revised&nbsp;
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->
+ 28 June 2004&nbsp;
+ <!--webbot bot="Timestamp" endspan i-checksum="39359" --></p>
+ <p><i>© Copyright John Maddock&nbsp;1998-
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%Y" startspan --> 2004<!--webbot bot="Timestamp" endspan i-checksum="39359" --></i></p>
+ <P><I>Use, modification and distribution are subject to the Boost Software License,
+ Version 1.0. (See accompanying file LICENSE_1_0.txt
+ or copy at http://www.boost.org/LICENSE_1_0.txt)</I></P>
+ </body>
+</html>

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/doc/faq.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/doc/faq.html 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,114 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+ <head>
+ <title>Boost.Regex: FAQ</title>
+ <meta name="generator" content="HTML Tidy, see www.w3.org">
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <link rel="stylesheet" type="text/css" href="../../../boost.css">
+ </head>
+ <body>
+ <p></p>
+ <table id="Table1" cellspacing="1" cellpadding="1" width="100%" border="0">
+ <tr>
+ <td valign="top" width="300">
+ <h3>C++ Boost</h3>
+ </td>
+ <td width="353">
+ <h1 align="center">Boost.Regex</h1>
+ <h2 align="center">FAQ</h2>
+ </td>
+ <td width="50">
+ <h3>Boost.Regex Index</h3>
+ </td>
+ </tr>
+ </table>
+ <br>
+ <br>
+ <hr>
+ <font color="#ff0000"><font color="#ff0000"></font></font>
+ <p><font color="#ff0000"><font color="#ff0000"><font color="#ff0000">&nbsp;Q. Why can't I
+ use the "convenience" versions of regex_match / regex_search / regex_grep /
+ regex_format / regex_merge?</font></font></font></p>
+ <p>A. These versions may or may not be available depending upon the capabilities
+ of your compiler, the rules determining the format of these functions are quite
+ complex - and only the versions visible to a standard compliant compiler are
+ given in the help. To find out what your compiler supports, run
+ &lt;boost/regex.hpp&gt; through your C++ pre-processor, and search the output
+ file for the function that you are interested in.<font color="#ff0000"><font color="#ff0000"></font></font></p>
+ <p><font color="#ff0000"><font color="#ff0000">Q. I can't get regex++ to work with
+ escape characters, what's going on?</font></font></p>
+ <p>A. If you embed regular expressions in C++ code, then remember that escape
+ characters are processed twice: once by the C++ compiler, and once by the
+ regex++ expression compiler, so to pass the regular expression \d+ to regex++,
+ you need to embed "\\d+" in your code. Likewise to match a literal backslash
+ you will need to embed "\\\\" in your code. <font color="#ff0000"></font>
+ </p>
+ <p><font color="#ff0000">Q. Why does using parenthesis in a POSIX regular expression
+ change the result of a match?</font></p>
+ <p>For POSIX (extended and basic) regular expressions, but not for perl regexes,
+ parentheses don't only mark; they determine what the best match is as well.
+ When the expression is compiled as a POSIX basic or extended regex then
+ Boost.regex follows the POSIX standard leftmost longest rule for determining
+ what matched. So if there is more than one possible match after considering the
+ whole expression, it looks next at the first sub-expression and then the second
+ sub-expression and so on. So...</p>
+ <pre>
+"(0*)([0-9]*)" against "00123" would produce
+$1 = "00"
+$2 = "123"
+</pre>
+ <p>where as</p>
+ <pre>
+"0*([0-9])*" against "00123" would produce
+$1 = "00123"
+</pre>
+ <p>If you think about it, had $1 only matched the "123", this would be "less good"
+ than the match "00123" which is both further to the left and longer. If you
+ want $1 to match only the "123" part, then you need to use something like:</p>
+ <pre>
+"0*([1-9][0-9]*)"
+</pre>
+ <p>as the expression.</p>
+ <p><font color="#ff0000">Q. Why don't character ranges work properly (POSIX mode
+ only)?</font><br>
+ A. The POSIX standard specifies that character range expressions are locale
+ sensitive - so for example the expression [A-Z] will match any collating
+ element that collates between 'A' and 'Z'. That means that for most locales
+ other than "C" or "POSIX", [A-Z] would match the single character 't' for
+ example, which is not what most people expect - or at least not what most
+ people have come to expect from regular expression engines. For this reason,
+ the default behaviour of boost.regex (perl mode) is to turn locale sensitive
+ collation off by not setting the regex_constants::collate compile time flag.
+ However if you set a non-default compile time flag - for example
+ regex_constants::extended or regex_constants::basic, then locale dependent
+ collation will be enabled, this also applies to the POSIX API functions which
+ use either regex_constants::extended or regex_constants::basic internally. <i>[Note
+ - when regex_constants::nocollate in effect, the library behaves "as if" the
+ LC_COLLATE locale category were always "C", regardless of what its actually set
+ to - end note</i>].</p>
+ <p><font color="#ff0000">Q. Why are there no throw specifications on any of the
+ functions? What exceptions can the library throw?</font></p>
+ <p>A. Not all compilers support (or honor) throw specifications, others support
+ them but with reduced efficiency. Throw specifications may be added at a later
+ date as compilers begin to handle this better. The library should throw only
+ three types of exception: boost::bad_expression can be thrown by basic_regex
+ when compiling a regular expression, std::runtime_error can be thrown when a
+ call to basic_regex::imbue tries to open a message catalogue that doesn't
+ exist, or when a call to regex_search or regex_match results in an
+ "everlasting" search,&nbsp;or when a call to RegEx::GrepFiles or
+ RegEx::FindFiles tries to open a file that cannot be opened, finally
+ std::bad_alloc can be thrown by just about any of the functions in this
+ library.</p>
+ <p></p>
+ <hr>
+ <p>Revised
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->
+ 24 Oct 2003
+ <!--webbot bot="Timestamp" endspan i-checksum="39359" --></p>
+ <p><i>© Copyright John Maddock&nbsp;1998-
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%Y" startspan --> 2003<!--webbot bot="Timestamp" endspan i-checksum="39359" --></i></p>
+ <P><I>Use, modification and distribution are subject to the Boost Software License,
+ Version 1.0. (See accompanying file LICENSE_1_0.txt
+ or copy at http://www.boost.org/LICENSE_1_0.txt)</I></P>
+ </body>
+</html>

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/doc/format_boost_syntax.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/doc/format_boost_syntax.html 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,163 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+ <head>
+ <title>Boost.Regex: Boost-Extended Format String Syntax</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <link rel="stylesheet" type="text/css" href="../../../boost.css">
+ </head>
+ <body>
+ <P>
+ <TABLE id="Table1" cellSpacing="1" cellPadding="1" width="100%" border="0">
+ <TR>
+ <td valign="top" width="300">
+ <h3>C++ Boost</h3>
+ </td>
+ <TD width="353">
+ <H1 align="center">Boost.Regex</H1>
+ <H2 align="center">Boost-Extended Format String Syntax</H2>
+ </TD>
+ <td width="50">
+ <h3>Boost.Regex Index</h3>
+ </td>
+ </TR>
+ </TABLE>
+ </P>
+ <P>Boost-Extended&nbsp;format strings treat all characters as literals except for
+ '$', '\', '(', ')', '?', ':' and '\'.</P>
+ <H4>Grouping</H4>
+ <P>The characters '(' and ')' perform lexical grouping, use \( and \) if you want
+ a to output literal parenthesis.</P>
+ <H4>Conditionals</H4>
+ <P>The character '?' begins a conditional expression, the general form is:</P>
+ <PRE>?Ntrue-expression:false-expression</PRE>
+ <P>where N is decimal digit.</P>
+ <P>If sub-expression <EM>N</EM> was matched, then true-expression is evaluated and
+ sent to output, otherwise false-expression is evaluated and sent to output.</P>
+ <P>You will normally need to surround a conditional-expression with parenthesis in
+ order to prevent ambiguities.</P>
+ <H4>Placeholder Sequences</H4>
+ <P>Placeholder sequences specify that some part of what matched the regular
+ expression should be sent to output as follows:</P>
+ <P>
+ <TABLE id="Table2" cellSpacing="4" cellPadding="1" width="100%" border="0">
+ <TR>
+ <TD><STRONG>Placeholder</STRONG></TD>
+ <TD><STRONG>Meaning</STRONG></TD>
+ </TR>
+ <TR>
+ <TD>$&amp;</TD>
+ <TD>Outputs what matched the whole expression.</TD>
+ </TR>
+ <TR>
+ <TD>$`</TD>
+ <TD>Outputs the text between the end of the last match found (or the start of the
+ text if no previous match was found), and the start of the current match.</TD>
+ </TR>
+ <TR>
+ <TD>$'</TD>
+ <TD>Outputs all the text following the end of the current match.</TD>
+ </TR>
+ <TR>
+ <TD>$$</TD>
+ <TD>Outputs a literal '$'</TD>
+ </TR>
+ <TR>
+ <TD>$n</TD>
+ <TD>Outputs what matched the n'th sub-expression.</TD>
+ </TR>
+ </TABLE>
+ </P>
+ <P>Any $-placeholder sequence not listed above, results in '$' being treated as a
+ literal.</P>
+ <H4>Escape Sequences</H4>
+ <P>An escape character followed by any character <EM>x</EM>, outputs that
+ character unless <EM>x</EM> is one of the escape sequences shown below.</P>
+ <P>
+ <TABLE id="Table3" cellSpacing="4" cellPadding="1" width="100%" border="0">
+ <TR>
+ <TD><STRONG>Escape</STRONG></TD>
+ <TD><STRONG>Meaning</STRONG></TD>
+ </TR>
+ <TR>
+ <TD>\a</TD>
+ <TD>Outputs the bell character: '\a'.</TD>
+ </TR>
+ <TR>
+ <TD>\e</TD>
+ <TD>Outputs the ANSI escape character (code point 27).</TD>
+ </TR>
+ <TR>
+ <TD>\f</TD>
+ <TD>Outputs a form feed character: '\f'</TD>
+ </TR>
+ <TR>
+ <TD>\n</TD>
+ <TD>Outputs a newline character: '\n'.</TD>
+ </TR>
+ <TR>
+ <TD>\r</TD>
+ <TD>Outputs a carriage return character: '\r'.</TD>
+ </TR>
+ <TR>
+ <TD>\t</TD>
+ <TD>Outputs a tab character: '\t'.</TD>
+ </TR>
+ <TR>
+ <TD>\v</TD>
+ <TD>Outputs a vertical tab character: '\v'.</TD>
+ </TR>
+ <TR>
+ <TD>\xDD</TD>
+ <TD>Outputs the character whose hexadecimal code point is 0xDD</TD>
+ </TR>
+ <TR>
+ <TD>\x{DDDD}</TD>
+ <TD>Outputs the character whose hexadecimal code point is 0xDDDDD</TD>
+ </TR>
+ <TR>
+ <TD>\cX</TD>
+ <TD>Outputs the ANSI escape sequence "escape-X".</TD>
+ </TR>
+ <TR>
+ <TD>\D</TD>
+ <TD>If <EM>D</EM> is a decimal digit in the range 1-9, then outputs the text that
+ matched sub-expression <EM>D</EM>.</TD>
+ </TR>
+ <TR>
+ <TD>\l</TD>
+ <TD>Causes the next character to be outputted, to be output in lower case.</TD>
+ </TR>
+ <TR>
+ <TD>\u</TD>
+ <TD>Causes the next character to be outputted, to be output in upper case.</TD>
+ </TR>
+ <TR>
+ <TD>\L</TD>
+ <TD>Causes all subsequent characters to be output in lower case, until a \E is
+ found.</TD>
+ </TR>
+ <TR>
+ <TD>\U</TD>
+ <TD>Causes all subsequent characters to be output in upper case, until a \E is
+ found.</TD>
+ </TR>
+ <TR>
+ <TD>\E</TD>
+ <TD>Terminates a \L or \U sequence.</TD>
+ </TR>
+ </TABLE>
+ </P>
+ <P>
+ <HR>
+ <P></P>
+ <P></P>
+ <p>Revised
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->
+ 24 Nov 2004
+ <!--webbot bot="Timestamp" endspan i-checksum="39359" --></p>
+ <p><i>© Copyright John Maddock&nbsp;2004</i></p>
+ <P><I>Use, modification and distribution are subject to the Boost Software License,
+ Version 1.0. (See accompanying file LICENSE_1_0.txt
+ or copy at http://www.boost.org/LICENSE_1_0.txt)</I></P>
+ </body>
+</html>

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/doc/format_perl_syntax.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/doc/format_perl_syntax.html 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,150 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+ <head>
+ <title>Boost.Regex: Perl-Style Format String Syntax</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <link rel="stylesheet" type="text/css" href="../../../boost.css">
+ </head>
+ <body>
+ <P>
+ <TABLE id="Table1" cellSpacing="1" cellPadding="1" width="100%" border="0">
+ <TR>
+ <td valign="top" width="300">
+ <h3>C++ Boost</h3>
+ </td>
+ <TD width="353">
+ <H1 align="center">Boost.Regex</H1>
+ <H2 align="center">Perl-Style Format String Syntax</H2>
+ </TD>
+ <td width="50">
+ <h3>Boost.Regex Index</h3>
+ </td>
+ </TR>
+ </TABLE>
+ </P>
+ <P>Perl-style format strings treat all characters as literals except '$' and '\'
+ which start placeholder and escape sequences respectively.</P>
+ <P>Placeholder sequences specify that some part of what matched the regular
+ expression should be sent to output as follows:</P>
+ <P>
+ <TABLE id="Table2" cellSpacing="4" cellPadding="1" width="100%" border="0">
+ <TR>
+ <TD><STRONG>Placeholder</STRONG></TD>
+ <TD><STRONG>Meaning</STRONG></TD>
+ </TR>
+ <TR>
+ <TD>$&amp;</TD>
+ <TD>Outputs what matched the whole expression.</TD>
+ </TR>
+ <TR>
+ <TD>$`</TD>
+ <TD>Outputs the text between the end of the last match found (or the start of the
+ text if no previous match was found), and the start of the current match.</TD>
+ </TR>
+ <TR>
+ <TD>$'</TD>
+ <TD>Outputs all the text following the end of the current match.</TD>
+ </TR>
+ <TR>
+ <TD>$$</TD>
+ <TD>Outputs a literal '$'</TD>
+ </TR>
+ <TR>
+ <TD>$n</TD>
+ <TD>Outputs what matched the n'th sub-expression.</TD>
+ </TR>
+ </TABLE>
+ </P>
+ <P>Any $-placeholder sequence not listed above, results in '$' being treated as a
+ literal.</P>
+ <P>An escape character followed by any character <EM>x</EM>, outputs that
+ character unless <EM>x</EM> is one of the escape sequences shown below.</P>
+ <P>
+ <TABLE id="Table3" cellSpacing="4" cellPadding="1" width="100%" border="0">
+ <TR>
+ <TD><STRONG>Escape</STRONG></TD>
+ <TD><STRONG>Meaning</STRONG></TD>
+ </TR>
+ <TR>
+ <TD>\a</TD>
+ <TD>Outputs the bell character: '\a'.</TD>
+ </TR>
+ <TR>
+ <TD>\e</TD>
+ <TD>Outputs the ANSI escape character (code point 27).</TD>
+ </TR>
+ <TR>
+ <TD>\f</TD>
+ <TD>Outputs a form feed character: '\f'</TD>
+ </TR>
+ <TR>
+ <TD>\n</TD>
+ <TD>Outputs a newline character: '\n'.</TD>
+ </TR>
+ <TR>
+ <TD>\r</TD>
+ <TD>Outputs a carriage return character: '\r'.</TD>
+ </TR>
+ <TR>
+ <TD>\t</TD>
+ <TD>Outputs a tab character: '\t'.</TD>
+ </TR>
+ <TR>
+ <TD>\v</TD>
+ <TD>Outputs a vertical tab character: '\v'.</TD>
+ </TR>
+ <TR>
+ <TD>\xDD</TD>
+ <TD>Outputs the character whose hexadecimal code point is 0xDD</TD>
+ </TR>
+ <TR>
+ <TD>\x{DDDD}</TD>
+ <TD>Outputs the character whose hexadecimal code point is 0xDDDDD</TD>
+ </TR>
+ <TR>
+ <TD>\cX</TD>
+ <TD>Outputs the ANSI escape sequence "escape-X".</TD>
+ </TR>
+ <TR>
+ <TD>\D</TD>
+ <TD>If <EM>D</EM> is a decimal digit in the range 1-9, then outputs the text that
+ matched sub-expression <EM>D</EM>.</TD>
+ </TR>
+ <TR>
+ <TD>\l</TD>
+ <TD>Causes the next character to be outputted, to be output in lower case.</TD>
+ </TR>
+ <TR>
+ <TD>\u</TD>
+ <TD>Causes the next character to be outputted, to be output in upper case.</TD>
+ </TR>
+ <TR>
+ <TD>\L</TD>
+ <TD>Causes all subsequent characters to be output in lower case, until a \E is
+ found.</TD>
+ </TR>
+ <TR>
+ <TD>\U</TD>
+ <TD>Causes all subsequent characters to be output in upper case, until a \E is
+ found.</TD>
+ </TR>
+ <TR>
+ <TD>\E</TD>
+ <TD>Terminates a \L or \U sequence.</TD>
+ </TR>
+ </TABLE>
+ </P>
+ <P>
+ <HR>
+ <P></P>
+ <P></P>
+ <p>Revised
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->
+ 24 Nov 2004
+ <!--webbot bot="Timestamp" endspan i-checksum="39359" --></p>
+ <p><i>© Copyright John Maddock&nbsp;2004</i></p>
+ <P><I>Use, modification and distribution are subject to the Boost Software License,
+ Version 1.0. (See accompanying file LICENSE_1_0.txt
+ or copy at http://www.boost.org/LICENSE_1_0.txt)</I></P>
+ </body>
+</html>

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/doc/format_sed_syntax.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/doc/format_sed_syntax.html 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,109 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+ <head>
+ <title>Boost.Regex: Sed-Style Format String Syntax</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <link rel="stylesheet" type="text/css" href="../../../boost.css">
+ </head>
+ <body>
+ <P>
+ <TABLE id="Table1" cellSpacing="1" cellPadding="1" width="100%" border="0">
+ <TR>
+ <td valign="top" width="300">
+ <h3>C++ Boost</h3>
+ </td>
+ <TD width="353">
+ <H1 align="center">Boost.Regex</H1>
+ <H2 align="center">Sed-Style Format String Syntax</H2>
+ </TD>
+ <td width="50">
+ <h3>Boost.Regex Index</h3>
+ </td>
+ </TR>
+ </TABLE>
+ </P>
+ <P>Sed-style format strings treat all characters as literals except:</P>
+ <P>
+ <TABLE id="Table2" cellSpacing="4" cellPadding="3" width="100%" border="0">
+ <TR>
+ <TD>&amp;</TD>
+ <TD>The ampersand character is replaced in the output stream by the the whole of
+ what matched the regular expression.&nbsp; Use \&amp; to output a literal
+ '&amp;' character.</TD>
+ </TR>
+ <TR>
+ <TD>\</TD>
+ <TD>Specifies an escape sequence.</TD>
+ </TR>
+ </TABLE>
+ </P>
+ <P>
+ <P>An escape character followed by any character <EM>x</EM>, outputs that
+ character unless <EM>x</EM> is one of the escape sequences shown below.</P>
+ <P>
+ <TABLE id="Table3" cellSpacing="4" cellPadding="1" width="100%" border="0">
+ <TR>
+ <TD><STRONG>Escape</STRONG></TD>
+ <TD><STRONG>Meaning</STRONG></TD>
+ </TR>
+ <TR>
+ <TD>\a</TD>
+ <TD>Outputs the bell character: '\a'.</TD>
+ </TR>
+ <TR>
+ <TD>\e</TD>
+ <TD>Outputs the ANSI escape character (code point 27).</TD>
+ </TR>
+ <TR>
+ <TD>\f</TD>
+ <TD>Outputs a form feed character: '\f'</TD>
+ </TR>
+ <TR>
+ <TD>\n</TD>
+ <TD>Outputs a newline character: '\n'.</TD>
+ </TR>
+ <TR>
+ <TD>\r</TD>
+ <TD>Outputs a carriage return character: '\r'.</TD>
+ </TR>
+ <TR>
+ <TD>\t</TD>
+ <TD>Outputs a tab character: '\t'.</TD>
+ </TR>
+ <TR>
+ <TD>\v</TD>
+ <TD>Outputs a vertical tab character: '\v'.</TD>
+ </TR>
+ <TR>
+ <TD>\xDD</TD>
+ <TD>Outputs the character whose hexadecimal code point is 0xDD</TD>
+ </TR>
+ <TR>
+ <TD>\x{DDDD}</TD>
+ <TD>Outputs the character whose hexadecimal code point is 0xDDDDD</TD>
+ </TR>
+ <TR>
+ <TD>\cX</TD>
+ <TD>Outputs the ANSI escape sequence "escape-X".</TD>
+ </TR>
+ <TR>
+ <TD>\D</TD>
+ <TD>If <EM>D</EM> is a decimal digit in the range 1-9, then outputs the text that
+ matched sub-expression <EM>D</EM>.</TD>
+ </TR>
+ </TABLE>
+ </P>
+ <P>
+ <HR>
+ </P>
+ <P></P>
+ <p>Revised
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->
+ 24 Nov 2004
+ <!--webbot bot="Timestamp" endspan i-checksum="39359" --></p>
+ <p><i>© Copyright John Maddock&nbsp;2004</i></p>
+ <P><I>Use, modification and distribution are subject to the Boost Software License,
+ Version 1.0. (See accompanying file LICENSE_1_0.txt
+ or copy at http://www.boost.org/LICENSE_1_0.txt)</I></P>
+ </body>
+</html>

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/doc/format_syntax.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/doc/format_syntax.html 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,52 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+ <head>
+ <title>Boost.Regex: Format String Syntax</title>
+ <meta name="generator" content="HTML Tidy, see www.w3.org">
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <link rel="stylesheet" type="text/css" href="../../../boost.css">
+ </head>
+ <body>
+ <p></p>
+ <table id="Table1" cellspacing="1" cellpadding="1" width="100%" border="0">
+ <tr>
+ <td valign="top" width="300">
+ <h3>C++ Boost</h3>
+ </td>
+ <td width="353">
+ <h1 align="center">Boost.Regex</h1>
+ <h2 align="center">Format String Syntax</h2>
+ </td>
+ <td width="50">
+ <h3>Boost.Regex Index</h3>
+ </td>
+ </tr>
+ </table>
+ <br>
+ <br>
+ <hr>
+ <p>Format strings are used by the algorithm regex_replace&nbsp;and
+ by match_results::format, and are used to
+ transform one string into another.</p>
+ <p>
+ There are three kind of format string: Sed, Perl and Boost-extended.</p>
+ <P>Alternatively, when the flag <code>format_literal</code> is passed to one of these
+ functions, then the format string is treated as a string literal, and is copied
+ unchanged to the output.</P>
+ <P>Sed Style Format Strings<BR>
+ Perl Style Format Strings<BR>
+ Boost-Extended Format Strings</P>
+ <p></p>
+ <hr>
+ <p>Revised
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->
+ 24 Nov 2004
+ <!--webbot bot="Timestamp" endspan i-checksum="39359" --></p>
+ <p><i>© Copyright John Maddock&nbsp;1998-
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%Y" startspan -->
+ 2004</i></p>
+ <P><I>Use, modification and distribution are subject to the Boost Software License,
+ Version 1.0. (See accompanying file LICENSE_1_0.txt
+ or copy at http://www.boost.org/LICENSE_1_0.txt)</I></P>
+ </body>
+</html>

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/doc/gcc-performance.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/doc/gcc-performance.html 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,543 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
+<html>
+ <head>
+ <title>Regular Expression Performance Comparison (gcc 3.2)</title>
+ <meta name="generator" content="HTML Tidy, see www.w3.org">
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
+ <META content="C:\PROGRAM FILES\MICROSOFT OFFICE\OFFICE\html.dot" name="Template">
+ <meta name="GENERATOR" content="Microsoft FrontPage Express 2.0">
+ </head>
+ <body bgcolor="#ffffff" link="#0000ff" vlink="#800080">
+ <h2>Regular Expression Performance Comparison</h2>
+ <p>The following tables provide comparisons between the following regular
+ expression libraries:</p>
+ <p>The Boost regex library.</p>
+ <p>The GNU regular expression library.</p>
+ <p>Philip Hazel's PCRE library.</p>
+ <h3>Details</h3>
+ <p>Machine: Intel Pentium 4 2.8GHz PC.</p>
+ <p>Compiler: GNU C++ version 3.2 20020927 (prerelease).</p>
+ <p>C++ Standard Library: GNU libstdc++ version 20020927.</p>
+ <p>OS: Cygwin.</p>
+ <p>Boost version: 1.31.0.</p>
+ <p>PCRE version: 4.1.</p>
+ <p>As ever care should be taken in interpreting the results, only sensible regular
+ expressions (rather than pathological cases) are given, most are taken from the
+ Boost regex examples, or from the <a href="http://www.regxlib.com/">Library of
+ Regular Expressions</a>. In addition, some variation in the relative
+ performance of these libraries can be expected on other machines - as memory
+ access and processor caching effects can be quite large for most finite state
+ machine algorithms. In each case the first figure given is the relative time
+ taken (so a value of 1.0 is as good as it gets), while the second figure is the
+ actual time taken.</p>
+ <h3>Averages</h3>
+ <p>The following are the average relative scores for all the tests: the perfect
+ regular expression library&nbsp;would score 1, in practice anything less than 2
+ is pretty good.</p>
+ <table border="1" cellspacing="1">
+ <tr>
+ <td><strong>Boost</strong></td>
+ <td><strong>Boost + C++ locale</strong></td>
+ <td><strong>POSIX</strong></td>
+ <td><strong>PCRE</strong></td>
+ </tr>
+ <tr>
+ <td>1.4503</td>
+ <td>1.49124</td>
+ <td>108.372</td>
+ <td>1.56255</td>
+ </tr>
+ </table>
+ <br>
+ <br>
+ <h3>Comparison 1: Long Search</h3>
+ <p>For each of the following regular expressions the time taken to find all
+ occurrences of the expression within a long English language text was measured
+ (mtent12.txt
+ from Project Gutenberg, 19Mb).&nbsp;</p>
+ <table border="1" cellspacing="1">
+ <tr>
+ <td><strong>Expression</strong></td>
+ <td><strong>Boost</strong></td>
+ <td><strong>Boost + C++ locale</strong></td>
+ <td><strong>POSIX</strong></td>
+ <td><strong>PCRE</strong></td>
+ </tr>
+ <tr>
+ <td><code>Twain</code></td>
+ <td>3.49<br>
+ (0.205s)</td>
+ <td>4.09<br>
+ (0.24s)</td>
+ <td>65.2<br>
+ (3.83s)</td>
+ <td><font color="#008000">1<br>
+ (0.0588s)</font></td>
+ </tr>
+ <tr>
+ <td><code>Huck[[:alpha:]]+</code></td>
+ <td>3.86<br>
+ (0.203s)</td>
+ <td>4.52<br>
+ (0.238s)</td>
+ <td>100<br>
+ (5.26s)</td>
+ <td><font color="#008000">1<br>
+ (0.0526s)</font></td>
+ </tr>
+ <tr>
+ <td><code>[[:alpha:]]+ing</code></td>
+ <td><font color="#008000">1.01<br>
+ (1.23s)</font></td>
+ <td><font color="#008000">1<br>
+ (1.22s)</font></td>
+ <td>4.95<br>
+ (6.04s)</td>
+ <td>4.67<br>
+ (5.71s)</td>
+ </tr>
+ <tr>
+ <td><code>^[^ ]*?Twain</code></td>
+ <td><font color="#008000">1<br>
+ (0.31s)</font></td>
+ <td><font color="#008000">1.05<br>
+ (0.326s)</font></td>
+ <td>NA</td>
+ <td>3.32<br>
+ (1.03s)</td>
+ </tr>
+ <tr>
+ <td><code>Tom|Sawyer|Huckleberry|Finn</code></td>
+ <td><font color="#008000">1.02<br>
+ (0.125s)</font></td>
+ <td><font color="#008000">1<br>
+ (0.123s)</font></td>
+ <td>165<br>
+ (20.3s)</td>
+ <td><font color="#008000">1.08<br>
+ (0.133s)</font></td>
+ </tr>
+ <tr>
+ <td><code> (Tom|Sawyer|Huckleberry|Finn).{0,30}river|river.{0,30}(Tom|Sawyer|Huckleberry|Finn)</code></td>
+ <td><font color="#008000">1<br>
+ (0.345s)</font></td>
+ <td><font color="#008000">1.03<br>
+ (0.355s)</font></td>
+ <td>NA</td>
+ <td>1.71<br>
+ (0.59s)</td>
+ </tr>
+ </table>
+ <br>
+ <br>
+ <h3>Comparison 2: Medium Sized Search</h3>
+ <p>For each of the following regular expressions the time taken to find all
+ occurrences of the expression within a medium sized English language text was
+ measured (the first 50K from mtent12.txt).&nbsp;</p>
+ <table border="1" cellspacing="1">
+ <tr>
+ <td><strong>Expression</strong></td>
+ <td><strong>Boost</strong></td>
+ <td><strong>Boost + C++ locale</strong></td>
+ <td><strong>POSIX</strong></td>
+ <td><strong>PCRE</strong></td>
+ </tr>
+ <tr>
+ <td><code>Twain</code></td>
+ <td>1.8<br>
+ (0.000519s)</td>
+ <td>2.14<br>
+ (0.000616s)</td>
+ <td>9.08<br>
+ (0.00262s)</td>
+ <td><font color="#008000">1<br>
+ (0.000289s)</font></td>
+ </tr>
+ <tr>
+ <td><code>Huck[[:alpha:]]+</code></td>
+ <td>3.65<br>
+ (0.000499s)</td>
+ <td>4.36<br>
+ (0.000597s)</td>
+ <td><font color="#008000">1<br>
+ (0.000137s)</font></td>
+ <td>1.43<br>
+ (0.000196s)</td>
+ </tr>
+ <tr>
+ <td><code>[[:alpha:]]+ing</code></td>
+ <td><font color="#008000">1<br>
+ (0.00258s)</font></td>
+ <td><font color="#008000">1<br>
+ (0.00258s)</font></td>
+ <td>5.28<br>
+ (0.0136s)</td>
+ <td>5.63<br>
+ (0.0145s)</td>
+ </tr>
+ <tr>
+ <td><code>^[^ ]*?Twain</code></td>
+ <td><font color="#008000">1<br>
+ (0.000929s)</font></td>
+ <td><font color="#008000">1.03<br>
+ (0.000957s)</font></td>
+ <td>NA</td>
+ <td>2.82<br>
+ (0.00262s)</td>
+ </tr>
+ <tr>
+ <td><code>Tom|Sawyer|Huckleberry|Finn</code></td>
+ <td><font color="#008000">1<br>
+ (0.000812s)</font></td>
+ <td><font color="#008000">1<br>
+ (0.000812s)</font></td>
+ <td>60.1<br>
+ (0.0488s)</td>
+ <td>1.28<br>
+ (0.00104s)</td>
+ </tr>
+ <tr>
+ <td><code> (Tom|Sawyer|Huckleberry|Finn).{0,30}river|river.{0,30}(Tom|Sawyer|Huckleberry|Finn)</code></td>
+ <td><font color="#008000">1.02<br>
+ (0.00178s)</font></td>
+ <td><font color="#008000">1<br>
+ (0.00174s)</font></td>
+ <td>242<br>
+ (0.421s)</td>
+ <td>1.3<br>
+ (0.00227s)</td>
+ </tr>
+ </table>
+ <br>
+ <br>
+ <h3>Comparison 3:&nbsp;C++ Code&nbsp;Search</h3>
+ <p>For each of the following regular expressions the time taken to find all
+ occurrences of the expression within the C++ source file <a href="../../../boost/crc.hpp">
+ boost/crc.hpp</a>&nbsp;was measured.&nbsp;</p>
+ <table border="1" cellspacing="1">
+ <tr>
+ <td><strong>Expression</strong></td>
+ <td><strong>Boost</strong></td>
+ <td><strong>Boost + C++ locale</strong></td>
+ <td><strong>POSIX</strong></td>
+ <td><strong>PCRE</strong></td>
+ </tr>
+ <tr>
+ <td><code> ^(template[[:space:]]*&lt;[^;:{]+&gt;[[:space:]]*)?(class|struct)[[:space:]]*(\&lt;\w+\&gt;([
+ ]*\([^)]*\))?[[:space:]]*)*(\&lt;\w*\&gt;)[[:space:]]*(&lt;[^;:{]+&gt;[[:space:]]*)?(\{|:[^;\{()]*\{)</code></td>
+ <td><font color="#008000">1.04<br>
+ (0.000144s)</font></td>
+ <td><font color="#008000">1<br>
+ (0.000139s)</font></td>
+ <td>862<br>
+ (0.12s)</td>
+ <td>4.56<br>
+ (0.000636s)</td>
+ </tr>
+ <tr>
+ <td><code>(^[
+ ]*#(?:[^\\\n]|\\[^\n_[:punct:][:alnum:]]*[\n[:punct:][:word:]])*)|(//[^\n]*|/\*.*?\*/)|\&lt;([+-]?(?:(?:0x[[:xdigit:]]+)|(?:(?:[[:digit:]]*\.)?[[:digit:]]+(?:[eE][+-]?[[:digit:]]+)?))u?(?:(?:int(?:8|16|32|64))|L)?)\&gt;|('(?:[^\\']|\\.)*'|"(?:[^\\"]|\\.)*")|\&lt;(__asm|__cdecl|__declspec|__export|__far16|__fastcall|__fortran|__import|__pascal|__rtti|__stdcall|_asm|_cdecl|__except|_export|_far16|_fastcall|__finally|_fortran|_import|_pascal|_stdcall|__thread|__try|asm|auto|bool|break|case|catch|cdecl|char|class|const|const_cast|continue|default|delete|do|double|dynamic_cast|else|enum|explicit|extern|false|float|for|friend|goto|if|inline|int|long|mutable|namespace|new|operator|pascal|private|protected|public|register|reinterpret_cast|return|short|signed|sizeof|static|static_cast|struct|switch|template|this|throw|true|try|typedef|typeid|typename|union|unsigned|using|virtual|void|volatile|wchar_t|while)\&gt;</code></td>
+ <td><font color="#008000">1<br>
+ (0.0139s)</font></td>
+ <td><font color="#008000">1.01<br>
+ (0.0141s)</font></td>
+ <td>NA</td>
+ <td>1.55<br>
+ (0.0216s)</td>
+ </tr>
+ <tr>
+ <td><code>^[ ]*#[ ]*include[ ]+("[^"]+"|&lt;[^&gt;]+&gt;)</code></td>
+ <td><font color="#008000">1.04<br>
+ (0.000332s)</font></td>
+ <td><font color="#008000">1<br>
+ (0.000318s)</font></td>
+ <td>130<br>
+ (0.0413s)</td>
+ <td>1.72<br>
+ (0.000547s)</td>
+ </tr>
+ <tr>
+ <td><code>^[ ]*#[ ]*include[ ]+("boost/[^"]+"|&lt;boost/[^&gt;]+&gt;)</code></td>
+ <td><font color="#008000">1.02<br>
+ (0.000323s)</font></td>
+ <td><font color="#008000">1<br>
+ (0.000318s)</font></td>
+ <td>150<br>
+ (0.0476s)</td>
+ <td>1.72<br>
+ (0.000547s)</td>
+ </tr>
+ </table>
+ <br>
+ <h3></h3>
+ <H3>Comparison 4: HTML Document Search
+ </H3>
+ <p>For each of the following regular expressions the time taken to find all
+ occurrences of the expression within the html file libs/libraries.htm
+ was measured.&nbsp;</p>
+ <table border="1" cellspacing="1">
+ <tr>
+ <td><strong>Expression</strong></td>
+ <td><strong>Boost</strong></td>
+ <td><strong>Boost + C++ locale</strong></td>
+ <td><strong>POSIX</strong></td>
+ <td><strong>PCRE</strong></td>
+ </tr>
+ <tr>
+ <td><code>beman|john|dave</code></td>
+ <td><font color="#008000">1.03<br>
+ (0.000367s)</font></td>
+ <td><font color="#008000">1<br>
+ (0.000357s)</font></td>
+ <td>47.4<br>
+ (0.0169s)</td>
+ <td>1.16<br>
+ (0.000416s)</td>
+ </tr>
+ <tr>
+ <td><code>&lt;p&gt;.*?&lt;/p&gt;</code></td>
+ <td>1.25<br>
+ (0.000459s)</td>
+ <td><font color="#008000">1<br>
+ (0.000367s)</font></td>
+ <td>NA</td>
+ <td><font color="#008000">1.03<br>
+ (0.000376s)</font></td>
+ </tr>
+ <tr>
+ <td><code> &lt;a[^&gt;]+href=("[^"]*"|[^[:space:]]+)[^&gt;]*&gt;</code></td>
+ <td><font color="#008000">1<br>
+ (0.000509s)</font></td>
+ <td><font color="#008000">1.02<br>
+ (0.000518s)</font></td>
+ <td>305<br>
+ (0.155s)</td>
+ <td><font color="#008000">1.1<br>
+ (0.000558s)</font></td>
+ </tr>
+ <tr>
+ <td><code> &lt;h[12345678][^&gt;]*&gt;.*?&lt;/h[12345678]&gt;</code></td>
+ <td><font color="#008000">1.04<br>
+ (0.00025s)</font></td>
+ <td><font color="#008000">1<br>
+ (0.00024s)</font></td>
+ <td>NA</td>
+ <td>1.16<br>
+ (0.000279s)</td>
+ </tr>
+ <tr>
+ <td><code> &lt;img[^&gt;]+src=("[^"]*"|[^[:space:]]+)[^&gt;]*&gt;</code></td>
+ <td>2.22<br>
+ (0.000489s)</td>
+ <td>1.69<br>
+ (0.000372s)</td>
+ <td>148<br>
+ (0.0326s)</td>
+ <td><font color="#008000">1<br>
+ (0.00022s)</font></td>
+ </tr>
+ <tr>
+ <td><code> &lt;font[^&gt;]+face=("[^"]*"|[^[:space:]]+)[^&gt;]*&gt;.*?&lt;/font&gt;</code></td>
+ <td>1.71<br>
+ (0.000371s)</td>
+ <td>1.75<br>
+ (0.000381s)</td>
+ <td>NA</td>
+ <td><font color="#008000">1<br>
+ (0.000218s)</font></td>
+ </tr>
+ </table>
+ <br>
+ <br>
+ <h3>Comparison 3: Simple Matches</h3>
+ <p>For each of the following regular expressions the time taken to match against
+ the text indicated was measured.&nbsp;</p>
+ <table border="1" cellspacing="1">
+ <tr>
+ <td><strong>Expression</strong></td>
+ <td><strong>Text</strong></td>
+ <td><strong>Boost</strong></td>
+ <td><strong>Boost + C++ locale</strong></td>
+ <td><strong>POSIX</strong></td>
+ <td><strong>PCRE</strong></td>
+ </tr>
+ <tr>
+ <td><code>abc</code></td>
+ <td>abc</td>
+ <td>1.36<br>
+ (2.15e-07s)</td>
+ <td>1.36<br>
+ (2.15e-07s)</td>
+ <td>2.76<br>
+ (4.34e-07s)</td>
+ <td><font color="#008000">1<br>
+ (1.58e-07s)</font></td>
+ </tr>
+ <tr>
+ <td><code>^([0-9]+)(\-| |$)(.*)$</code></td>
+ <td>100- this is a line of ftp response which contains a message string</td>
+ <td>1.55<br>
+ (7.26e-07s)</td>
+ <td>1.51<br>
+ (7.07e-07s)</td>
+ <td>319<br>
+ (0.000149s)</td>
+ <td><font color="#008000">1<br>
+ (4.67e-07s)</font></td>
+ </tr>
+ <tr>
+ <td><code>([[:digit:]]{4}[- ]){3}[[:digit:]]{3,4}</code></td>
+ <td>1234-5678-1234-456</td>
+ <td>1.96<br>
+ (9.54e-07s)</td>
+ <td>1.96<br>
+ (9.54e-07s)</td>
+ <td>44.5<br>
+ (2.17e-05s)</td>
+ <td><font color="#008000">1<br>
+ (4.87e-07s)</font></td>
+ </tr>
+ <tr>
+ <td><code> ^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$</code></td>
+ <td>john_at_[hidden]</td>
+ <td>1.22<br>
+ (1.51e-06s)</td>
+ <td>1.23<br>
+ (1.53e-06s)</td>
+ <td>162<br>
+ (0.000201s)</td>
+ <td><font color="#008000">1<br>
+ (1.24e-06s)</font></td>
+ </tr>
+ <tr>
+ <td><code> ^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$</code></td>
+ <td>foo12_at_[hidden]</td>
+ <td>1.28<br>
+ (1.47e-06s)</td>
+ <td>1.3<br>
+ (1.49e-06s)</td>
+ <td>104<br>
+ (0.00012s)</td>
+ <td><font color="#008000">1<br>
+ (1.15e-06s)</font></td>
+ </tr>
+ <tr>
+ <td><code> ^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$</code></td>
+ <td>bob.smith_at_[hidden]</td>
+ <td>1.28<br>
+ (1.47e-06s)</td>
+ <td>1.3<br>
+ (1.49e-06s)</td>
+ <td>113<br>
+ (0.00013s)</td>
+ <td><font color="#008000">1<br>
+ (1.15e-06s)</font></td>
+ </tr>
+ <tr>
+ <td><code>^[a-zA-Z]{1,2}[0-9][0-9A-Za-z]{0,1} {0,1}[0-9][A-Za-z]{2}$</code></td>
+ <td>EH10 2QQ</td>
+ <td>1.38<br>
+ (4.68e-07s)</td>
+ <td>1.41<br>
+ (4.77e-07s)</td>
+ <td>13.5<br>
+ (4.59e-06s)</td>
+ <td><font color="#008000">1<br>
+ (3.39e-07s)</font></td>
+ </tr>
+ <tr>
+ <td><code>^[a-zA-Z]{1,2}[0-9][0-9A-Za-z]{0,1} {0,1}[0-9][A-Za-z]{2}$</code></td>
+ <td>G1 1AA</td>
+ <td>1.28<br>
+ (4.35e-07s)</td>
+ <td>1.25<br>
+ (4.25e-07s)</td>
+ <td>11.7<br>
+ (3.97e-06s)</td>
+ <td><font color="#008000">1<br>
+ (3.39e-07s)</font></td>
+ </tr>
+ <tr>
+ <td><code>^[a-zA-Z]{1,2}[0-9][0-9A-Za-z]{0,1} {0,1}[0-9][A-Za-z]{2}$</code></td>
+ <td>SW1 1ZZ</td>
+ <td>1.32<br>
+ (4.53e-07s)</td>
+ <td>1.31<br>
+ (4.49e-07s)</td>
+ <td>12.2<br>
+ (4.2e-06s)</td>
+ <td><font color="#008000">1<br>
+ (3.44e-07s)</font></td>
+ </tr>
+ <tr>
+ <td><code> ^[[:digit:]]{1,2}/[[:digit:]]{1,2}/[[:digit:]]{4}$</code></td>
+ <td>4/1/2001</td>
+ <td>1.16<br>
+ (3.82e-07s)</td>
+ <td>1.2<br>
+ (3.96e-07s)</td>
+ <td>13.9<br>
+ (4.59e-06s)</td>
+ <td><font color="#008000">1<br>
+ (3.29e-07s)</font></td>
+ </tr>
+ <tr>
+ <td><code> ^[[:digit:]]{1,2}/[[:digit:]]{1,2}/[[:digit:]]{4}$</code></td>
+ <td>12/12/2001</td>
+ <td>1.38<br>
+ (4.49e-07s)</td>
+ <td>1.38<br>
+ (4.49e-07s)</td>
+ <td>16<br>
+ (5.2e-06s)</td>
+ <td><font color="#008000">1<br>
+ (3.25e-07s)</font></td>
+ </tr>
+ <tr>
+ <td><code>^[-+]?[[:digit:]]*\.?[[:digit:]]*$</code></td>
+ <td>123</td>
+ <td>1.19<br>
+ (7.64e-07s)</td>
+ <td>1.16<br>
+ (7.45e-07s)</td>
+ <td>7.51<br>
+ (4.81e-06s)</td>
+ <td><font color="#008000">1<br>
+ (6.4e-07s)</font></td>
+ </tr>
+ <tr>
+ <td><code>^[-+]?[[:digit:]]*\.?[[:digit:]]*$</code></td>
+ <td>+3.14159</td>
+ <td>1.32<br>
+ (8.97e-07s)</td>
+ <td>1.31<br>
+ (8.88e-07s)</td>
+ <td>14<br>
+ (9.48e-06s)</td>
+ <td><font color="#008000">1<br>
+ (6.78e-07s)</font></td>
+ </tr>
+ <tr>
+ <td><code>^[-+]?[[:digit:]]*\.?[[:digit:]]*$</code></td>
+ <td>-3.14159</td>
+ <td>1.32<br>
+ (8.97e-07s)</td>
+ <td>1.31<br>
+ (8.88e-07s)</td>
+ <td>14<br>
+ (9.48e-06s)</td>
+ <td><font color="#008000">1<br>
+ (6.78e-07s)</font></td>
+ </tr>
+ </table>
+ <br>
+ <br>
+ <hr>
+ <p><i>© Copyright John Maddock&nbsp;2003</i></p>
+ <P><I>Use, modification and distribution are subject to the Boost Software License,
+ Version 1.0. (See accompanying file LICENSE_1_0.txt
+ or copy at http://www.boost.org/LICENSE_1_0.txt)</I></P>
+ </body>
+</html>
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/doc/headers.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/doc/headers.html 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,48 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+ <head>
+ <title>Boost.Regex: Headers</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <link rel="stylesheet" type="text/css" href="../../../boost.css">
+ </head>
+ <body>
+ <P>
+ <TABLE id="Table1" cellSpacing="1" cellPadding="1" width="100%" border="0">
+ <TR>
+ <td valign="top" width="300">
+ <h3>C++ Boost</h3>
+ </td>
+ <TD width="353">
+ <H1 align="center">Boost.Regex</H1>
+ <H2 align="center">Headers</H2>
+ </TD>
+ <td width="50">
+ <h3>Boost.Regex Index</h3>
+ </td>
+ </TR>
+ </TABLE>
+ </P>
+ <HR>
+ <p></p>
+ <P>There are two main headers used by this library: &lt;boost/regex.hpp&gt;
+ provides full access to the main template library, while
+ &lt;boost/cregex.hpp&gt; provides access to the (deprecated) high level class
+ RegEx, and the POSIX API functions.
+ </P>
+ <P>There is also a header containing only forward declarations
+ &lt;boost/regex_fwd.hpp&gt; for use when an interface is dependent upon
+ boost::basic_regex, but otherwise does not need the full definitions.</P>
+ <P>
+ <HR>
+ <P></P>
+ <p>Revised&nbsp;
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->
+ 28 June 2004&nbsp;
+ <!--webbot bot="Timestamp" endspan i-checksum="39359" --></p>
+ <p><i>© Copyright John Maddock&nbsp;1998-
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%Y" startspan --> 2004<!--webbot bot="Timestamp" endspan i-checksum="39359" --></i></p>
+ <P><I>Use, modification and distribution are subject to the Boost Software License,
+ Version 1.0. (See accompanying file LICENSE_1_0.txt
+ or copy at http://www.boost.org/LICENSE_1_0.txt)</I></P>
+ </body>
+</html>

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/doc/history.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/doc/history.html 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,177 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+ <head>
+ <title>Boost.Regex: History</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <link rel="stylesheet" type="text/css" href="../../../boost.css">
+ </head>
+ <body>
+ <P>
+ <TABLE id="Table1" cellSpacing="1" cellPadding="1" width="100%" border="0">
+ <TR>
+ <td valign="top" width="300">
+ <h3>C++ Boost</h3>
+ </td>
+ <TD width="353">
+ <H1 align="center">Boost.Regex</H1>
+ <H2 align="center">History</H2>
+ </TD>
+ <td width="50">
+ <h3>Boost.Regex Index</h3>
+ </td>
+ </TR>
+ </TABLE>
+ </P>
+ <HR>
+ <p></p>
+ <P>Boost 1.34</P>
+ <UL>
+ <LI>
+ Fix for non-greedy repeats and partial matches not working correctly in some
+ cases.
+ <LI>
+ Fix for non-greedy repeats on VC++ not working in some cases (bug report
+ 1515830).
+ <LI>
+ Changed match_results::position() to return a valid result when *this
+ represents a partial match.</LI>
+ </UL>
+ <P>Boost 1.33.1</P>
+ <UL>
+ <LI>
+ Fixed broken makefiles.
+ <LI>
+ Fixed configuration setup to allow building with VC7.1 - STLport-4.6.2 when
+ using /Zc:wchar_t.
+ <LI>
+ Moved declarations class-inline in static_mutex.hpp so that SGI Irix compiler
+ can cope.
+ <LI>
+ Added needed standard library #includes to fileiter.hpp, regex_workaround.hpp
+ and cpp_regex_traits.hpp.
+ <LI>
+ Fixed a bug where non-greedy repeats could in certain strange curcumstances
+ repeat more times than their maximum value.
+ <LI>
+ Fixed the value returned by basic_regex&lt;&gt;::empty() from a default
+ constructed object.
+ <LI>
+ Changed the deffinition of regex_error to make it backwards compatible with
+ Boost-1.32.0.
+ <LI>
+ Disabled external templates for Intel C++ 8.0 and earlier - otherwise
+ unresolved references can occur.
+ <LI>
+ Rewritten extern template code for gcc so that only specific member functions
+ are exported: otherwise strange unresolved references can occur when linking
+ and mixing debug and non-debug code.
+ <LI>
+ Initialise all the data members of the unicode_iterators: this keeps gcc from
+ issuing needless warnings.
+ <LI>
+ Ported the ICU integration code to VC6 and VC7.
+ <LI>
+ Ensured code is STLport debug mode clean.
+ <LI>
+ Fixed lookbehind assertions so that fixed length repeats are permitted, and so
+ that regex iteration allows lookbehind to look back before the current search
+ range (into the last match).
+ <LI>
+ Fixed strange bug with non-greedy repeats inside forward lookahead assertions.
+ <LI>
+ Enabled negated character classes inside character sets.
+ <LI>
+ Fixed regression so that [a-z-] is a valid expression again.
+ <LI>
+ Fixed bug that allowed some invalid expressions to be accepted.</LI></UL>
+ <P>Boost 1.33.0.</P>
+ <UL>
+ <LI>
+ Completely rewritten expression parsing code, and traits class support; now
+ conforms to the standardization proposal.
+ <LI>
+ <STRONG>Breaking Change:</STRONG> The <A href="syntax_option_type.html">syntax
+ options</A> that can be passed to <A href="basic_regex.html">basic_regex
+ constructors</A> have been rationalized.&nbsp; The default option (perl) now
+ has a value of zero, and it is now clearly documented which options apply to
+ which <A href="syntax.html">regular expression syntax styles (perl,
+ POSIX-extended, POSIX-basic etc)</A>.&nbsp; Some of the more esoteric
+ options have now been removed, so there is the possibility that existing code
+ may fail to compile: however equivalent functionality should still be
+ available.
+ <LI>
+ <STRONG>Breaking Change: </STRONG>
+ POSIX-extended and POSIX-basic regular expressions now enforce the letter of
+ the POSIX standard much more closely than before.
+ <LI>
+ Added support for (?imsx-imsx) constructs.
+ <LI>
+ Added <A href="syntax_perl.html#Perl">support for lookbehind expressions
+ (?&lt;=positive-lookbehind) and (?&lt;!negative-lookbehind)</A>.
+ <LI>
+ Added <A href="syntax_perl.html#Perl">support for conditional expressions
+ (?(assertion)true-expresion|false-expression)</A>.
+ <LI>
+ Added MFC/ATL string wrappers.
+ <LI>
+ Added Unicode support; based on ICU.
+ <LI>
+ Changed newline support to recognise \f as a line separator (all character
+ types), and \x85 as a line separator for wide characters / Unicode only.
+ <LI>
+ Added a new format flag format_literal
+ that treats the replace string as a literal, rather than a Perl or Sed style <A href="format_syntax.html">
+ format string</A>.
+ <LI>
+ Errors are now reported by throwing exceptions of type <A href="bad_expression.html">
+ <code>regex_error</code></A>. The types used previously - <code>bad_expression</code>
+ and <code>bad_pattern</code> - are now just typedefs for <code>regex_error</code>.
+ Type <code>regex_error</code> has a couple of new members: <code>code()</code> to
+ report an error code rather than a string, and <code>position()</code> to
+ report where in the expression the error occured.</LI></UL>
+ <P>Boost 1.32.1.</P>
+ <UL>
+ <LI>
+ Fixed bug in partial matches of bounded repeats of '.'.</LI></UL>
+ <P>Boost 1.31.0.</P>
+ <UL>
+ <LI>
+ Completely rewritten pattern matching code - it is now up to 10 times faster
+ than before.
+ <LI>
+ Reorganized documentation.
+ <LI>
+ Deprecated all interfaces that are not part of the <A href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/papers/2003/n1429.htm">
+ regular expression standardization proposal</A>.
+ <LI>
+ Added regex_iterator and <A href="regex_token_iterator.html">
+ regex_token_iterator</A>
+ .
+ <LI>
+ Added support for Perl style independent sub-expressions.
+ <LI>
+ Added non-member operators to the sub_match class,
+ so that you can compare sub_match's with strings, or add them to a string to
+ produce a new string.
+ <LI>
+ Added experimental support for <A href="captures.html">extended capture
+ information</A>.
+ <LI>
+ Changed the match flags so that they are a distinct type (not an integer), if
+ you try to pass the match flags as an integer rather than<A href="match_flag_type.html">
+ match_flag_type</A> to the regex algorithms then you will now get a compiler
+ error.</LI></UL>
+ <P>
+ <HR>
+ <P></P>
+ <p>Revised&nbsp;
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->
+ 28 June 2004&nbsp;
+ <!--webbot bot="Timestamp" endspan i-checksum="39359" --></p>
+ <p><i>© Copyright John Maddock&nbsp;1998-
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%Y" startspan --> 2004<!--webbot bot="Timestamp" endspan i-checksum="39359" --></i></p>
+ <P><I>Use, modification and distribution are subject to the Boost Software License,
+ Version 1.0. (See accompanying file LICENSE_1_0.txt
+ or copy at http://www.boost.org/LICENSE_1_0.txt)</I></P>
+ </body>
+</html>

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/doc/icu_strings.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/doc/icu_strings.html 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,468 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+ <head>
+ <title>Boost.Regex: Working With Unicode and ICU String Types</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <LINK href="../../../boost.css" type="text/css" rel="stylesheet"></head>
+ <body>
+ <P>
+ <TABLE id="Table1" cellSpacing="1" cellPadding="1" width="100%" border="0">
+ <TR>
+ <td vAlign="top" width="300">
+ <h3>C++ Boost</h3>
+ </td>
+ <TD width="353">
+ <H1 align="center">Boost.Regex</H1>
+ <H2 align="center">Working With Unicode and ICU String Types.</H2>
+ </TD>
+ <td width="50">
+ <h3>Boost.Regex Index</h3>
+ </td>
+ </TR>
+ </TABLE>
+ </P>
+ <HR>
+ <p></p>
+ <H3>Contents</H3>
+ <dl class="index">
+ <dt>Introduction</dt>
+ <dt>Unicode regular expression types</dt>
+ <dt>Regular Expression Algorithms
+ <dd>
+ <dl class="index">
+ <dt>u32regex_match</dt>
+ <dt>u32regex_search</dt>
+ <dt>u32regex_replace</dt>
+ </dl>
+ </dd>
+ </dt>
+ <dt>Iterators
+ <dd>
+ <dl class="index">
+ <dt>u32regex_iterator</dt>
+ <dt>u32regex_token_iterator</dt>
+ </dl>
+ </dd>
+ </dt>
+ </dl>
+ <H3><A name="introduction"></A>Introduction</H3>
+ <P>The header:</P>
+ <PRE>&lt;boost/regex/icu.hpp&gt;</PRE>
+ <P>contains the data types and algorithms necessary for working with regular
+ expressions in a Unicode aware environment.&nbsp;
+ </P>
+ <P>In order to use this header you will need <A href="http://www.ibm.com/software/globalization/icu/">
+ the ICU library</A>, and you will need to have built the Boost.Regex library
+ with ICU support enabled.</P>
+ <P>The header will enable you to:</P>
+ <UL>
+ <LI>
+ Create regular expressions that treat Unicode strings as sequences of UTF-32
+ code points.
+ <LI>
+ Create regular expressions that support various Unicode data properties,
+ including character classification.
+ <LI>
+ Transparently search Unicode strings that are encoded as either UTF-8, UTF-16
+ or UTF-32.</LI></UL>
+ <H3><A name="types"></A>Unicode regular expression types</H3>
+ <P>Header &lt;boost/regex/icu.hpp&gt; provides a regular expression&nbsp;traits
+ class that handles UTF-32 characters:</P>
+ <PRE>class icu_regex_traits;</PRE>
+ <P>and a regular expression type based upon that:</P>
+ <PRE>typedef basic_regex&lt;UChar32,icu_regex_traits&gt; u32regex;</PRE>
+ <P>The type <EM>u32regex</EM> is regular expression type to use for all Unicode
+ regular expressions; internally it uses UTF-32 code points, but can be created
+ from, and used to search, either UTF-8, or UTF-16 encoded strings as well as
+ UTF-32 ones.</P>
+ <P>The constructors, and <A href="basic_regex.html#a1">
+ assign</A> member functions of u32regex, require UTF-32 encoded strings, but
+ there are a series of overloaded algorithms called make_u32regex which allow
+ regular expressions to be created from UTF-8, UTF-16, or UTF-32 encoded
+ strings:</P>
+ <PRE>template &lt;class InputIterator&gt;
+u32regex make_u32regex(InputIterator i, InputIterator j, boost::regex_constants::syntax_option_type opt);
+</PRE>
+ <P><STRONG>Effects:</STRONG> Creates a regular expression object from the iterator
+ sequence [i,j). The character encoding of the sequence is determined based upon <code>
+ sizeof(*i)</code>: 1 implies UTF-8, 2 implies UTF-16, and 4 implies UTF-32.</P>
+ <PRE>u32regex make_u32regex(const char* p, boost::regex_constants::syntax_option_type opt = boost::regex_constants::perl);
+</PRE>
+ <P><STRONG>Effects:</STRONG> Creates a regular expression object from the
+ Null-terminated UTF-8 characater sequence <EM>p</EM>.</P>
+ <PRE>u32regex make_u32regex(const unsigned char* p, boost::regex_constants::syntax_option_type opt = boost::regex_constants::perl);</PRE>
+ <P><STRONG>Effects:</STRONG> Creates a regular expression object from the
+ Null-terminated UTF-8 characater sequence <EM>p</EM>.u32regex
+ make_u32regex(const wchar_t* p, boost::regex_constants::syntax_option_type opt
+ = boost::regex_constants::perl);</P>
+ <P><STRONG>Effects:</STRONG> Creates a regular expression object from the
+ Null-terminated characater sequence <EM>p</EM>.&nbsp; The character encoding of
+ the sequence is determined based upon <CODE>sizeof(wchar_t)</CODE>: 1 implies
+ UTF-8, 2 implies UTF-16, and 4 implies UTF-32.</P>
+ <PRE>u32regex make_u32regex(const UChar* p, boost::regex_constants::syntax_option_type opt = boost::regex_constants::perl);</PRE>
+ <P><STRONG>Effects:</STRONG> Creates a regular expression object from the
+ Null-terminated UTF-16 characater sequence <EM>p</EM>.</P>
+ <PRE>template&lt;class C, class T, class A&gt;
+u32regex make_u32regex(const std::basic_string&lt;C, T, A&gt;&amp; s, boost::regex_constants::syntax_option_type opt = boost::regex_constants::perl);</PRE>
+ <P><STRONG>Effects:</STRONG> Creates a regular expression object from the string <EM>s</EM>.&nbsp;
+ The character encoding of the string is determined based upon <CODE>sizeof(C)</CODE>:
+ 1 implies UTF-8, 2 implies UTF-16, and 4 implies UTF-32.</P>
+ <PRE>u32regex make_u32regex(const UnicodeString&amp; s, boost::regex_constants::syntax_option_type opt = boost::regex_constants::perl);</PRE>
+ <P><STRONG>Effects:</STRONG> Creates a regular expression object from the UTF-16
+ encoding string <EM>s</EM>.</P>
+ <H3><A name="algo"></A>Regular Expression Algorithms</H3>
+ <P>The regular expression algorithms regex_match, <A href="regex_search.html">
+ regex_search</A> and regex_replace all
+ expect that the character sequence upon which they operate, is encoded in the
+ same character encoding as the regular expression object with which they are
+ used.&nbsp; For Unicode regular expressions that behavior is undesirable: while
+ we may want to process the data in UTF-32 "chunks", the actual data is much
+ more likely to encoded as either UTF-8 or UTF-16.&nbsp; Therefore the header
+ &lt;boost/regex/icu.hpp&gt; provides a series of thin wrappers around these
+ algorithms, called u32regex_match, u32regex_search, and u32regex_replace.&nbsp;
+ These wrappers use iterator-adapters internally to make external UTF-8 or
+ UTF-16 data look as though it's really a UTF-32 sequence, that can then be
+ passed on to the "real" algorithm.</P>
+ <H4><A name="u32regex_match"></A>u32regex_match</H4>
+ <P>For each regex_match algorithm defined by
+ &lt;boost/regex.hpp&gt;, then &lt;boost/regex/icu.hpp&gt; defines an overloaded
+ algorithm that takes the same arguments, but which is called <EM>u32regex_match</EM>,
+ and which will accept UTF-8, UTF-16 or UTF-32 encoded data, as well as an
+ ICU&nbsp;UnicodeString as input.</P>
+ <P><STRONG>Example: </STRONG>match a password, encoded in a UTF-16 UnicodeString:</P>
+ <PRE>//
+// Find out if *password* meets our password requirements,
+// as defined by the regular expression *requirements*.
+//
+bool is_valid_password(const UnicodeString&amp; password, const UnicodeString&amp; requirements)
+{
+ return boost::u32regex_match(password, boost::make_u32regex(requirements));
+}
+</PRE>
+ <P>
+ <P><STRONG>Example: </STRONG>match a UTF-8 encoded filename:</P>
+ <PRE>//
+// Extract filename part of a path from a UTF-8 encoded std::string and return the result
+// as another std::string:
+//
+std::string get_filename(const std::string&amp; path)
+{
+ boost::u32regex r = boost::make_u32regex("(?:\\A|.*\\\\)([^\\\\]+)");
+ boost::smatch what;
+ if(boost::u32regex_match(path, what, r))
+ {
+ // extract $1 as a CString:
+ return what.str(1);
+ }
+ else
+ {
+ throw std::runtime_error("Invalid pathname");
+ }
+}
+</PRE>
+ <H4><A name="u32regex_search"></A>u32regex_search</H4>
+ <P>For each regex_search algorithm defined by
+ &lt;boost/regex.hpp&gt;, then &lt;boost/regex/icu.hpp&gt; defines an overloaded
+ algorithm that takes the same arguments, but which is called <EM>u32regex_search</EM>,
+ and which will accept UTF-8, UTF-16 or UTF-32 encoded data, as well as an
+ ICU&nbsp;UnicodeString as input.</P>
+ <P><STRONG>Example: </STRONG>search for a character sequence in a specific
+ language block:
+ </P>
+ <PRE>UnicodeString extract_greek(const UnicodeString&amp; text)
+{
+ // searches through some UTF-16 encoded text for a block encoded in Greek,
+ // this expression is imperfect, but the best we can do for now - searching
+ // for specific scripts is actually pretty hard to do right.
+ //
+ // Here we search for a character sequence that begins with a Greek letter,
+ // and continues with characters that are either not-letters ( [^[:L*:]] )
+ // or are characters in the Greek character block ( [\\x{370}-\\x{3FF}] ).
+ //
+ boost::u32regex r = boost::make_u32regex(L"[\\x{370}-\\x{3FF}](?:[^[:L*:]]|[\\x{370}-\\x{3FF}])*");
+ boost::u16match what;
+ if(boost::u32regex_search(text, what, r))
+ {
+ // extract $0 as a CString:
+ return UnicodeString(what[0].first, what.length(0));
+ }
+ else
+ {
+ throw std::runtime_error("No Greek found!");
+ }
+}</PRE>
+ <H4><A name="u32regex_replace"></A>u32regex_replace</H4>
+ <P>For each regex_replace algorithm defined by
+ &lt;boost/regex.hpp&gt;, then &lt;boost/regex/icu.hpp&gt; defines an overloaded
+ algorithm that takes the same arguments, but which is called <EM>u32regex_replace</EM>,
+ and which will accept UTF-8, UTF-16 or UTF-32 encoded data, as well as an
+ ICU&nbsp;UnicodeString as input.&nbsp; The input sequence and the format string
+ specifier passed to the algorithm, can be encoded independently (for example
+ one can be UTF-8, the other in UTF-16), but the result string / output iterator
+ argument must use the same character encoding as the text being searched.</P>
+ <P><STRONG>Example: </STRONG>Credit card number reformatting:</P>
+ <PRE>//
+// Take a credit card number as a string of digits,
+// and reformat it as a human readable string with "-"
+// separating each group of four digit;,
+// note that we're mixing a UTF-32 regex, with a UTF-16
+// string and a UTF-8 format specifier, and it still all
+// just works:
+//
+const boost::u32regex e = boost::make_u32regex("\\A(\\d{3,4})[- ]?(\\d{4})[- ]?(\\d{4})[- ]?(\\d{4})\\z");
+const char* human_format = "$1-$2-$3-$4";
+
+UnicodeString human_readable_card_number(const UnicodeString&amp; s)
+{
+ return boost::u32regex_replace(s, e, human_format);
+}</PRE>
+ <P>
+ <H2><A name="iterators"></A>Iterators</H2>
+ <H3><A name="u32regex_iterator"></A>u32regex_iterator</H3>
+ <P>Type u32regex_iterator is in all respects the same as <A href="regex_iterator.html">
+ regex_iterator</A> except that since the regular expression type is always
+ u32regex it only takes one template parameter (the iterator type). It also
+ calls u32regex_search internally, allowing it to interface correctly with
+ UTF-8, UTF-16, and UTF-32 data:</P>
+ <PRE>
+template &lt;class BidirectionalIterator&gt;
+class u32regex_iterator
+{
+ // for members see regex_iterator
+};
+
+typedef u32regex_iterator&lt;const char*&gt; utf8regex_iterator;
+typedef u32regex_iterator&lt;const UChar*&gt; utf16regex_iterator;
+typedef u32regex_iterator&lt;const UChar32*&gt; utf32regex_iterator;
+</PRE>
+ <P>In order to simplify the construction of a u32regex_iterator from a string,
+ there are a series of non-member helper functions called
+ make_u32regex_iterator:</P>
+ <PRE>
+u32regex_iterator&lt;const char*&gt;
+ make_u32regex_iterator(const char* s,
+ const u32regex&amp; e,
+ regex_constants::match_flag_type m = regex_constants::match_default);
+
+u32regex_iterator&lt;const wchar_t*&gt;
+ make_u32regex_iterator(const wchar_t* s,
+ const u32regex&amp; e,
+ regex_constants::match_flag_type m = regex_constants::match_default);
+
+u32regex_iterator&lt;const UChar*&gt;
+ make_u32regex_iterator(const UChar* s,
+ const u32regex&amp; e,
+ regex_constants::match_flag_type m = regex_constants::match_default);
+
+template &lt;class charT, class Traits, class Alloc&gt;
+u32regex_iterator&lt;typename std::basic_string&lt;charT, Traits, Alloc&gt;::const_iterator&gt;
+ make_u32regex_iterator(const std::basic_string&lt;charT, Traits, Alloc&gt;&amp; s,
+ const u32regex&amp; e,
+ regex_constants::match_flag_type m = regex_constants::match_default);
+
+u32regex_iterator&lt;const UChar*&gt;
+ make_u32regex_iterator(const UnicodeString&amp; s,
+ const u32regex&amp; e,
+ regex_constants::match_flag_type m = regex_constants::match_default);</PRE>
+ <P>
+ <P>Each of these overloads returns an iterator that enumerates all occurrences of
+ expression <EM>e</EM>, in text <EM>s</EM>, using match_flags <EM>m.</EM></P>
+ <P><STRONG>Example</STRONG>: search for international currency symbols, along with
+ their associated numeric value:</P>
+ <PRE>
+void enumerate_currencies(const std::string&amp; text)
+{
+ // enumerate and print all the currency symbols, along
+ // with any associated numeric values:
+ const char* re =
+ "([[:Sc:]][[:Cf:][:Cc:][:Z*:]]*)?"
+ "([[:Nd:]]+(?:[[:Po:]][[:Nd:]]+)?)?"
+ "(?(1)"
+ "|(?(2)"
+ "[[:Cf:][:Cc:][:Z*:]]*"
+ ")"
+ "[[:Sc:]]"
+ ")";
+ boost::u32regex r = boost::make_u32regex(re);
+ boost::u32regex_iterator&lt;std::string::const_iterator&gt; i(boost::make_u32regex_iterator(text, r)), j;
+ while(i != j)
+ {
+ std::cout &lt;&lt; (*i)[0] &lt;&lt; std::endl;
+ ++i;
+ }
+}</PRE>
+ <P>
+ <P>Calling
+ </P>
+ <PRE>enumerate_currencies(" $100.23 or £198.12 ");</PRE>
+ <P>Yields the output:</P>
+ <PRE>$100.23<BR>£198.12</PRE>
+ <P>Provided of course that the input is encoded as UTF-8.</P>
+ <H3><A name="u32regex_token_iterator"></A>u32regex_token_iterator</H3>
+ <P>Type u32regex_token_iterator is in all respects the same as <A href="regex_token_iterator.html">
+ regex_token_iterator</A> except that since the regular expression type is
+ always u32regex it only takes one template parameter (the iterator type).&nbsp;
+ It also calls u32regex_search internally, allowing it to interface correctly
+ with UTF-8, UTF-16, and UTF-32 data:</P>
+ <PRE>template &lt;class BidirectionalIterator&gt;
+class u32regex_token_iterator
+{
+ // for members see regex_token_iterator
+};
+
+typedef u32regex_token_iterator&lt;const char*&gt; utf8regex_token_iterator;
+typedef u32regex_token_iterator&lt;const UChar*&gt; utf16regex_token_iterator;
+typedef u32regex_token_iterator&lt;const UChar32*&gt; utf32regex_token_iterator;
+</PRE>
+ <P>In order to simplify the construction of a u32regex_token_iterator from a
+ string, there are a series of non-member helper functions called
+ make_u32regex_token_iterator:</P>
+ <PRE>
+u32regex_token_iterator&lt;const char*&gt;
+ make_u32regex_token_iterator(const char* s,
+ const u32regex&amp; e,
+ int sub,
+ regex_constants::match_flag_type m = regex_constants::match_default);
+
+u32regex_token_iterator&lt;const wchar_t*&gt;
+ make_u32regex_token_iterator(const wchar_t* s,
+ const u32regex&amp; e,
+ int sub,
+ regex_constants::match_flag_type m = regex_constants::match_default);
+
+u32regex_token_iterator&lt;const UChar*&gt;
+ make_u32regex_token_iterator(const UChar* s,
+ const u32regex&amp; e,
+ int sub,
+ regex_constants::match_flag_type m = regex_constants::match_default);
+
+template &lt;class charT, class Traits, class Alloc&gt;
+u32regex_token_iterator&lt;typename std::basic_string&lt;charT, Traits, Alloc&gt;::const_iterator&gt;
+ make_u32regex_token_iterator(const std::basic_string&lt;charT, Traits, Alloc&gt;&amp; s,
+ const u32regex&amp; e,
+ int sub,
+ regex_constants::match_flag_type m = regex_constants::match_default);
+
+u32regex_token_iterator&lt;const UChar*&gt;
+ make_u32regex_token_iterator(const UnicodeString&amp; s,
+ const u32regex&amp; e,
+ int sub,
+ regex_constants::match_flag_type m = regex_constants::match_default);</PRE>
+ <P>
+ <P>Each of these overloads returns an iterator that enumerates all occurrences of
+ marked sub-expression <EM>sub</EM> in regular expression&nbsp;<EM>e</EM>, found
+ in text <EM>s</EM>, using match_flags <EM>m.</EM></P>
+ <PRE>
+template &lt;std::size_t N&gt;
+u32regex_token_iterator&lt;const char*&gt;
+ make_u32regex_token_iterator(const char* p,
+ const u32regex&amp; e,
+ const int (&amp;submatch)[N],
+ regex_constants::match_flag_type m = regex_constants::match_default);
+
+template &lt;std::size_t N&gt;
+u32regex_token_iterator&lt;const wchar_t*&gt;
+ make_u32regex_token_iterator(const wchar_t* p,
+ const u32regex&amp; e,
+ const int (&amp;submatch)[N],
+ regex_constants::match_flag_type m = regex_constants::match_default);
+
+template &lt;std::size_t N&gt;
+u32regex_token_iterator&lt;const UChar*&gt;
+ make_u32regex_token_iterator(const UChar* p,
+ const u32regex&amp; e,
+ const int (&amp;submatch)[N],
+ regex_constants::match_flag_type m = regex_constants::match_default);
+
+template &lt;class charT, class Traits, class Alloc, std::size_t N&gt;
+u32regex_token_iterator&lt;typename std::basic_string&lt;charT, Traits, Alloc&gt;::const_iterator&gt;
+ make_u32regex_token_iterator(const std::basic_string&lt;charT, Traits, Alloc&gt;&amp; p,
+ const u32regex&amp; e,
+ const int (&amp;submatch)[N],
+ regex_constants::match_flag_type m = regex_constants::match_default);
+
+template &lt;std::size_t N&gt;
+u32regex_token_iterator&lt;const UChar*&gt;
+ make_u32regex_token_iterator(const UnicodeString&amp; s,
+ const u32regex&amp; e,
+ const int (&amp;submatch)[N],
+ regex_constants::match_flag_type m = regex_constants::match_default);
+</PRE>
+ <P>Each of these overloads returns an iterator that enumerates one sub-expression
+ for each&nbsp;<EM>submatch</EM> in regular expression&nbsp;<EM>e</EM>, found in
+ text <EM>s</EM>, using match_flags <EM>m.</EM></P>
+ <PRE>
+u32regex_token_iterator&lt;const char*&gt;
+ make_u32regex_token_iterator(const char* p,
+ const u32regex&amp; e,
+ const std::vector&lt;int&gt;&amp; submatch,
+ regex_constants::match_flag_type m = regex_constants::match_default);
+
+u32regex_token_iterator&lt;const wchar_t*&gt;
+ make_u32regex_token_iterator(const wchar_t* p,
+ const u32regex&amp; e,
+ const std::vector&lt;int&gt;&amp; submatch,
+ regex_constants::match_flag_type m = regex_constants::match_default);
+
+u32regex_token_iterator&lt;const UChar*&gt;
+ make_u32regex_token_iterator(const UChar* p,
+ const u32regex&amp; e,
+ const std::vector&lt;int&gt;&amp; submatch,
+ regex_constants::match_flag_type m = regex_constants::match_default);
+
+template &lt;class charT, class Traits, class Alloc&gt;
+u32regex_token_iterator&lt;typename std::basic_string&lt;charT, Traits, Alloc&gt;::const_iterator&gt;
+ make_u32regex_token_iterator(const std::basic_string&lt;charT, Traits, Alloc&gt;&amp; p,
+ const u32regex&amp; e,
+ const std::vector&lt;int&gt;&amp; submatch,
+ regex_constants::match_flag_type m = regex_constants::match_default);
+
+u32regex_token_iterator&lt;const UChar*&gt;
+ make_u32regex_token_iterator(const UnicodeString&amp; s,
+ const u32regex&amp; e,
+ const std::vector&lt;int&gt;&amp; submatch,
+ regex_constants::match_flag_type m = regex_constants::match_default);
+</PRE>
+ <P>Each of these overloads returns an iterator that enumerates one sub-expression
+ for each&nbsp;<EM>submatch</EM> in regular expression&nbsp;<EM>e</EM>, found in
+ text <EM>s</EM>, using match_flags <EM>m.</EM></P>
+ <P><STRONG>Example</STRONG>: search for international currency symbols, along with
+ their associated numeric value:</P>
+ <PRE>
+void enumerate_currencies2(const std::string&amp; text)
+{
+ // enumerate and print all the currency symbols, along
+ // with any associated numeric values:
+ const char* re =
+ "([[:Sc:]][[:Cf:][:Cc:][:Z*:]]*)?"
+ "([[:Nd:]]+(?:[[:Po:]][[:Nd:]]+)?)?"
+ "(?(1)"
+ "|(?(2)"
+ "[[:Cf:][:Cc:][:Z*:]]*"
+ ")"
+ "[[:Sc:]]"
+ ")";
+ boost::u32regex r = boost::make_u32regex(re);
+ boost::u32regex_token_iterator&lt;std::string::const_iterator&gt;
+ i(boost::make_u32regex_token_iterator(text, r, 1)), j;
+ while(i != j)
+ {
+ std::cout &lt;&lt; *i &lt;&lt; std::endl;
+ ++i;
+ }
+}
+</PRE>
+ <P>
+ <HR>
+ <p>Revised&nbsp;
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->
+ 05 Jan 2005&nbsp;
+ <!--webbot bot="Timestamp" endspan i-checksum="39359" --></p>
+ <p><i>© Copyright John Maddock&nbsp;2005</i></p>
+ <P><I>Use, modification and distribution are subject to the Boost Software License,
+ Version 1.0. (See accompanying file LICENSE_1_0.txt
+ or copy at http://www.boost.org/LICENSE_1_0.txt)</I></P>
+ </body>
+</html>
+
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/doc/implementation.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/doc/implementation.html 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,43 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+ <head>
+ <title>Boost.Regex: Implementation</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <link rel="stylesheet" type="text/css" href="../../../boost.css">
+ </head>
+ <body>
+ <P>
+ <TABLE id="Table1" cellSpacing="1" cellPadding="1" width="100%" border="0">
+ <TR>
+ <td valign="top" width="300">
+ <h3>C++ Boost</h3>
+ </td>
+ <TD width="353">
+ <H1 align="center">Boost.Regex</H1>
+ <H2 align="center">Implementation</H2>
+ </TD>
+ <td width="50">
+ <h3>Boost.Regex Index</h3>
+ </td>
+ </TR>
+ </TABLE>
+ </P>
+ <HR>
+ <p></p>
+ <P>Todo.</P>
+ <P>
+ <HR>
+ <P></P>
+ <p>Revised
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->
+ 24 Oct 2003
+ <!--webbot bot="Timestamp" endspan i-checksum="39359" --></p>
+ <p><i>© Copyright John Maddock&nbsp;1998-
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%Y" startspan -->
+ 2003<!--webbot bot="Timestamp" endspan i-checksum="39359" --></i></p>
+ <P><I>Use, modification and distribution are subject to the Boost Software License,
+ Version 1.0. (See accompanying file LICENSE_1_0.txt
+ or copy at http://www.boost.org/LICENSE_1_0.txt)</I></P>
+ </body>
+</html>
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/doc/index.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/doc/index.html 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,166 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+ <head>
+ <title>Boost.Regex: Index</title>
+ <meta name="generator" content="HTML Tidy, see www.w3.org">
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <link rel="stylesheet" type="text/css" href="../../../boost.css">
+ </head>
+ <body>
+ <table summary="contains the boost libraries logo and a page header"
+ id="Table1" cellspacing="1" cellpadding="1" width="100%" border="0">
+ <tr>
+ <td valign="top" width="300">
+ <h3>C++ Boost</h3>
+ </td>
+ <td width="353">
+ <h1 align="center">Boost.Regex</h1>
+ <h2 align="center">Index</h2>
+ </td>
+ <td width="50">
+ <h3>Boost Libraries Index</h3>
+ </td>
+ </tr>
+ </table>
+ <br>
+ <br>
+ <hr>
+ <h2>Contents</h2>
+ <p>This documentation is also available in PDF format.</p>
+ <dl class="index">
+ <dt>Overview <dt><a href="configuration.html">Configuration
+ and setup</a> <dt>Installation
+ <dd>
+ <dl class="index">
+ <dt>Building with bjam (preferred)
+ <dt>Building with Unicode/ICU support
+ <dt>Building via Makefiles
+ <dd><dl class="index">
+ <dt>Borland C++ Builder
+ <dt><a href="install.html#vc">Microsoft
+ Visual C++</a>
+ <dt>GNU G++
+ <dt><a href="install.html#sun">
+ Sun Forte Compiler</a>
+ <dt>Other compilers
+ </dt>
+ </dl></dd>
+ </dl>
+ <dt>Backgrounders
+ <dd>
+ <dl class="index">
+ <dt>Regular Expression Syntax
+ <dd>
+ <dl class="index">
+ <dt>Perl Regular Expressions</dt>
+ <dt>POSIX-Extended Regular Expressions</dt>
+ <dt>POSIX-Basic Regular Expressions</dt>
+ </dl>
+ </dd>
+ <dt>Format String Syntax
+ <dd>
+ <dl class="index">
+ <dt>Perl Format Syntax</dt>
+ <dt>Sed Format Syntax</dt>
+ <dt>Boost-Extended Format Syntax</dt>
+ </dl>
+ </dd>
+ <dt>Partial matches: matches against incomplete or infinitely long texts
+ <dt>Understanding Captures</dt>
+ <dt>Unicode Support (requires ICU)</dt>
+ <dt>Working With Non-Standard String Types</dt>
+ <dd>
+ <dl>
+ <dt>MFC/ATL Strings</dt>
+ <dt>ICU Strings</dt>
+ </dl>
+ </dd>
+ </dl>
+ </dd>
+ <dt>Reference
+ <dd>
+ <dl class="index">
+ <dt>Types
+ <dd>
+ <dl class="index">
+ <dt>syntax_option_type <dt><a href="error_type.html">
+ error_type</a> <dt>match_flag_type <dt><a href="bad_expression.html">
+ class&nbsp;regex_error</a> <dt>class regex_traits
+ <dt>class template basic_regex <dt><a href="sub_match.html">
+ class template sub_match</a> <dt><a href="match_results.html">class template
+ match_results</a></dt>
+ </dl>
+ <dt>Algorithms
+ <dd>
+ <dl class="index">
+ <dt>regex_match <dt>regex_search
+ <dt>regex_replace</dt>
+ </dl>
+ <dt>Iterators
+ <dd>
+ <dl class="index">
+ <dt>regex_iterator <dt><a href="regex_token_iterator.html">
+ regex_token_iterator</a></dt>
+ </dl>
+ <dt>Typedefs
+ <dd>
+ <dl class="index">
+ <dt>regex&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[ =
+ basic_regex&lt;char&gt; ] <dt>wregex&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[
+ = basic_regex&lt;wchar_t&gt; ] <dt>cmatch&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[
+ = match_results&lt;const char*&gt; ] <dt>wcmatch&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[
+ = match_results&lt;const wchar_t*&gt; ] <dt>smatch&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[
+ = match_results&lt;std::string::const_iterator&gt; ] <dt><a href="match_results.html">
+ wsmatch</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[ =
+ match_results&lt;std::wstring::const_iterator&gt; ] <dt><a href="regex_iterator.html">
+ cregex_iterator</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[ = regex_iterator&lt;const
+ char*&gt;] <dt>wcregex_iterator&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[
+ = regex_iterator&lt;const wchar_t*&gt;] <dt>sregex_iterator&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[
+ = regex_iterator&lt;std::string::const_iterator&gt;] <dt><a href="regex_iterator.html">
+ wsregex_iterator</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[ =
+ regex_iterator&lt;std::wstring::const_iterator&gt;] <dt><a href="regex_token_iterator.html">
+ cregex_token_iterator</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[ =
+ regex_token_iterator&lt;const char*&gt;] <dt>wcregex_token_iterator&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[
+ = regex_token_iterator&lt;const wchar_t*&gt;] <dt><a href="regex_token_iterator.html">
+ sregex_token_iterator</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[ =
+ regex_token_iterator&lt;std::string::const_iterator&gt;] <dt><a href="regex_token_iterator.html">
+ wsregex_token_iterator</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[ =
+ regex_token_iterator&lt;std::wstring::const_iterator&gt;]</dt>
+ </dl>
+ <dt>Deprecated interfaces
+ <dd>
+ <dl class="index">
+ <dt>POSIX API Compatibility Functions
+ <dt>class regbase <dt><a href="reg_expression.html">class
+ template reg_expression</a> <dt>Algorithm regex_grep
+ <dt>Algorithm regex_format <dt><a href="regex_merge.html">
+ Algorithm regex_merge</a> <dt>Algorithm regex_split
+ <dt>class RegEx</dt>
+ </dl>
+ </dd>
+ </dl>
+ <dt>FAQ <dt>Appendix
+ <dd>
+ <dl class="index">
+ <dt>Implementation <dt><a href="thread_safety.html">Thread
+ Safety</a> <dt>Localisation <dt><a href="examples.html">
+ Examples</a> <dt>Headers <dt><a href="redistributables.html">
+ Redistributables and Library Names</a> <dt><a href="standards.html">Standards
+ Conformance</a> <dt>History <dt><a href="performance.html">
+ Performance</a> <dt>Contacts and Acknowledgements</dt>
+ </dl>
+ </dd>
+ </dl>
+ <hr>
+ <p>Revised
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->
+ 24&nbsp;June 2004&nbsp;
+ <!--webbot bot="Timestamp" endspan i-checksum="39359" --></p>
+ <p><i>© Copyright John Maddock&nbsp;1998-
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%Y" startspan --> 2004<!--webbot bot="Timestamp" endspan i-checksum="39359" --></i></p>
+ <P><I>Use, modification and distribution are subject to the Boost Software License,
+ Version 1.0. (See accompanying file LICENSE_1_0.txt
+ or copy at http://www.boost.org/LICENSE_1_0.txt)</I></P>
+ </body>
+</html>
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/doc/install.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/doc/install.html 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,260 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+ <head>
+ <title>Boost.Regex: Installation</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <LINK href="../../../boost.css" type="text/css" rel="stylesheet"></head>
+ <body>
+ <P>
+ <TABLE id="Table1" cellSpacing="1" cellPadding="1" width="100%" border="0">
+ <TR>
+ <td vAlign="top" width="300">
+ <h3>C++ Boost</h3>
+ </td>
+ <TD width="353">
+ <H1 align="center">Boost.Regex</H1>
+ <H2 align="center">Installation</H2>
+ </TD>
+ <td width="50">
+ <h3>Boost.Regex Index</h3>
+ </td>
+ </TR>
+ </TABLE>
+ </P>
+ <HR>
+ <P>When you extract the library from its zip file, you must preserve its internal
+ directory structure (for example by using the -d option when extracting). If
+ you didn't do that when extracting, then you'd better stop reading this, delete
+ the files you just extracted, and try again!
+ </P>
+ <P>This library should not need configuring before use; most popular
+ compilers/standard libraries/platforms are already supported "as is". If you do
+ experience configuration problems, or just want to test the configuration with
+ your compiler, then the process is the same as for all of boost; see the <A href="../../config/config.htm">
+ configuration library documentation</A>.</P>
+ <P>The library will encase all code inside namespace boost.
+ </P>
+ <P>Unlike some other template libraries, this library consists of a mixture of
+ template code (in the headers) and static code and data (in cpp files).
+ Consequently it is necessary to build the library's support code into a library
+ or archive file before you can use it, instructions for specific platforms are
+ as follows:
+ </P>
+ <H3><A name="bjam"></A>Building with bjam</H3>
+ <P>This is now the preferred method for building and installing this library,
+ please refer to the <A href="../../../more/getting_started.html">getting started
+ guide</A> for more information.</P>
+ <H3><A name="unicode"></A>Building With Unicode and ICU Support</H3>
+ <P>A default build of this library does not enable <A href="unicode.html">Unciode
+ support</A> via ICU.&nbsp; There is no need to enable this support if you
+ don't need it, but if you use ICU for your Unicode support already, and want to
+ work with Unicode-aware regular expressions then read on.</P>
+ <P>Most of the information you will need is in the <A href="../../../more/getting_started.html">
+ getting started guide</A>, the only additional step you need to take is to
+ tell bjam that you want Boost.Regex to use ICU and optionally to tell bjam
+ where ICU is located.</P>
+ <P>If you're building on a Unix-like platform, and ICU is already installed in
+ you're compilers search path (with an install&nbsp;prefix of /usr or /usr/local
+ for example), then set the environment variable HAVE_ICU to enable ICU
+ support.&nbsp; For example you might build with the command line:</P>
+ <PRE>bjam -sHAVE_ICU=1 --toolset=toolset-name install</PRE>
+ <P>If ICU is not already in your compilers path then you need to set the
+ environment variable ICU_PATH to point to the route directory of your ICU
+ installation, for example if ICU was installed to /usr/local/icu/3.3 you might
+ use:</P>
+ <PRE>bjam -sICU_PATH=/usr/local/icu/3.3 --toolset=toolset-name install</PRE>
+ <P>Note that ICU is a C++ library just like Boost is, as such your copy of ICU
+ must have been built with the same C++ compiler (and compiler version) that you
+ are using to build Boost.&nbsp; <STRONG>Boost.Regex will not work correctly unless
+ you ensure that this is the case:</STRONG> it is up to you to ensure that
+ the version of ICU you are using is binary compatible with the toolset you use
+ to build Boost.</P>
+ <H2><A name="make"></A>Building via makefiles</H2>
+ <H3><A name="bcb"></A>Borland C++ Builder:
+ </H3>
+ <UL>
+ <LI>
+ Open up a console window and change to the &lt;boost&gt;\libs\regex\build
+ directory.
+ <LI>
+ Select the appropriate makefile (bcb4.mak for C++ Builder 4, bcb5.mak for C++
+ Builder 5, and bcb6.mak for C++ Builder 6).
+ <LI>
+ Invoke the makefile (pass the full path to your version of make if you have
+ more than one version installed, the makefile relies on the path to make to
+ obtain your C++ Builder installation directory and tools) for example:
+ </LI>
+ </UL>
+ <PRE>make -fbcb5.mak</PRE>
+ <P>The build process will build a variety of .lib and .dll files (the exact number
+ depends upon the version of Borland's tools you are using) the .lib and dll
+ files will be in a sub-directory called bcb4 or bcb5 depending upon the
+ makefile used. To install the libraries into your development system use:</P>
+ <PRE>make -fbcb5.mak install</PRE>
+ <P>library files will be copied to &lt;BCROOT&gt;/lib and the dll's to
+ &lt;BCROOT&gt;/bin, where &lt;BCROOT&gt; corresponds to the install path of
+ your Borland C++ tools.
+ </P>
+ <P>You may also remove temporary files created during the build process (excluding
+ lib and dll files) by using:</P>
+ <PRE>make -fbcb5.mak clean</PRE>
+ <P>Finally when you use regex++ it is only necessary for you to add the
+ &lt;boost&gt; root director to your list of include directories for that
+ project. It is not necessary for you to manually add a .lib file to the
+ project; the headers will automatically select the correct .lib file for your
+ build mode and tell the linker to include it. There is one caveat however: the
+ library can not tell the difference between VCL and non-VCL enabled builds when
+ building a GUI application from the command line, if you build from the command
+ line with the 5.5 command line tools then you must define the pre-processor
+ symbol _NO_VCL in order to ensure that the correct link libraries are selected:
+ the C++ Builder IDE normally sets this automatically. Hint, users of the 5.5
+ command line tools may want to add a -D_NO_VCL to bcc32.cfg in order to set
+ this option permanently.
+ </P>
+ <P>If you would prefer to do a dynamic link to the regex libraries when using the
+ dll runtime then define BOOST_REGEX_DYN_LINK (you must do this if you want to
+ use boost.regex in multiple dll's), otherwise Boost.regex will be statically
+ linked by default.&nbsp;</P>
+ <P>If you want to suppress automatic linking altogether (and supply your own
+ custom build of the lib) then define BOOST_REGEX_NO_LIB.</P>
+ <P>If you are building with C++ Builder 6, you will find that
+ &lt;boost/regex.hpp&gt; can not be used in a pre-compiled header (the actual
+ problem is in &lt;locale&gt; which gets included by &lt;boost/regex.hpp&gt;),
+ if this causes problems for you, then try defining BOOST_NO_STD_LOCALE when
+ building, this will disable some features throughout boost, but may save you a
+ lot in compile times!</P>
+ <H3><A name="vc"></A>Microsoft Visual C++ 6, 7, 7.1 and 8</H3>
+ <P>You need version 6 of MSVC to build this library. If you are using VC5 then you
+ may want to look at one of the previous releases of this <A href="http://ourworld.compuserve.com/homepages/john_maddock/regexpp.htm">
+ library</A>
+ </P>
+ <P>Open up a command prompt, which has the necessary MSVC environment variables
+ defined (for example by using the batch file Vcvars32.bat installed by the
+ Visual Studio installation), and change to the &lt;boost&gt;\libs\regex\build
+ directory.
+ </P>
+ <P>Select the correct makefile - vc6.mak for "vanilla" Visual C++ 6 or
+ vc6-stlport.mak if you are using STLPort.</P>
+ <P>Invoke the makefile like this:</P>
+ <PRE>nmake -fvc6.mak</PRE>
+ <P>You will now have a collection of lib and dll files in a "vc6" subdirectory, to
+ install these into your development system use:</P>
+ <PRE>nmake -fvc6.mak install</PRE>
+ <P>The lib files will be copied to your &lt;VC6&gt;\lib directory and the dll
+ files to &lt;VC6&gt;\bin, where &lt;VC6&gt; is the root of your Visual C++ 6
+ installation.</P>
+ <P>You can delete all the temporary files created during the build (excluding lib
+ and dll files) using:</P>
+ <PRE>nmake -fvc6.mak clean </PRE>
+ <P>If you want to build with ICU support, then you need to pass the path to your
+ ICU directory to the makefile, for example with:
+ </P>
+ <PRE>nmake ICU_PATH=c:\open-source\icu -fvc71.mak install</PRE>
+ <P>Finally when you use regex++ it is only necessary for you to add the
+ &lt;boost&gt; root directory to your list of include directories for that
+ project. It is not necessary for you to manually add a .lib file to the
+ project; the headers will automatically select the correct .lib file for your
+ build mode and tell the linker to include it.
+ </P>
+ <P>Note that if you want to dynamically link to the regex library when using the
+ dynamic C++ runtime, define BOOST_REGEX_DYN_LINK when building your project.</P>
+ <P>If you want to add the source directly to your project then define
+ BOOST_REGEX_NO_LIB to disable automatic library selection.</P>
+ <P>There are several important caveats to remember when using boost.regex with
+ Microsoft's Compiler:</P>
+ <UL>
+ <LI>
+ There have been some reports of compiler-optimization bugs affecting this
+ library, (particularly with VC6 versions prior to service patch 5) the
+ workaround is to build the library using /Oityb1 rather than /O2. That is to
+ use all optimization settings except /Oa. This problem is reported to affect
+ some standard library code as well (in fact I'm not sure if the problem is with
+ the regex code or the underlying standard library), so it's probably worthwhile
+ applying this workaround in normal practice in any case.
+ <LI>
+ If you have replaced the C++ standard library that comes with VC6, then when
+ you build the library you must ensure that the environment variables "INCLUDE"
+ and "LIB" have been updated to reflect the include and library paths for the
+ new library - see vcvars32.bat (part of your Visual Studio installation) for
+ more details.
+ <LI>
+ If you are building with the full STLPort v4.x, then use the vc6-stlport.mak
+ file provided and set the environment variable STLPORT_PATH to point to the
+ location of your STLPort installation (Note that the full STLPort libraries
+ appear not to support single-thread static builds).
+ <LI>
+ If you are building your application with /Zc:wchar_t then you will need to
+ modify the makefile to add /Zc:wchar_t before building the library.
+ </LI>
+ </UL>
+ <H3><A name="gcc"></A>GCC(2.95 and 3.x)
+ </H3>
+ <P>You can build with gcc using the normal boost Jamfile in
+ &lt;boost&gt;/libs/regex/build, alternatively there is a conservative makefile
+ for the g++ compiler. From the command prompt change to the
+ &lt;boost&gt;/libs/regex/build directory and type:
+ </P>
+ <PRE>make -fgcc.mak </PRE>
+ <P>At the end of the build process you should have a gcc sub-directory containing
+ release and debug versions of the library (libboost_regex.a and
+ libboost_regex_debug.a). When you build projects that use regex++, you will
+ need to add the boost install directory to your list of include paths and add
+ &lt;boost&gt;/libs/regex/build/gcc/libboost_regex.a to your list of library
+ files.
+ </P>
+ <P>There is also a makefile to build the library as a shared library:</P>
+ <PRE>make -fgcc-shared.mak</PRE>
+ <P>which will build libboost_regex.so and libboost_regex_debug.so.</P>
+ <P>Both of the these makefiles support the following environment variables:</P>
+ <P>ICU_PATH: tells the makefile to build with Unicode support, set to the path
+ where your ICU installation is located, for example with: <code>make
+ ICU_PATH=/usr/local install -fgcc.mak</code></P>
+ <P>CXXFLAGS: extra compiler options - note that this applies to both the debug and
+ release builds.</P>
+ <P>INCLUDES: additional include directories.</P>
+ <P>LDFLAGS: additional linker options.</P>
+ <P>LIBS: additional library files.</P>
+ <P>For the more adventurous there is a configure script in
+ &lt;boost&gt;/libs/config; see the <A href="../../config/config.htm">config
+ library documentation</A>.</P>
+ <H3><A name="sun"></A>Sun Workshop 6.1</H3>
+ <P>There is a makefile for the sun (6.1) compiler (C++ version 3.12). From the
+ command prompt change to the &lt;boost&gt;/libs/regex/build directory and type:
+ </P>
+ <PRE>dmake -f sunpro.mak </PRE>
+ <P>At the end of the build process you should have a sunpro sub-directory
+ containing single and multithread versions of the library (libboost_regex.a,
+ libboost_regex.so, libboost_regex_mt.a and libboost_regex_mt.so). When you
+ build projects that use regex++, you will need to add the boost install
+ directory to your list of include paths and add
+ &lt;boost&gt;/libs/regex/build/sunpro/ to your library search path.
+ </P>
+ <P>Both of the these makefiles support the following environment variables:</P>
+ <P>CXXFLAGS: extra compiler options - note that this applies to both the single
+ and multithreaded builds.</P>
+ <P>INCLUDES: additional include directories.</P>
+ <P>LDFLAGS: additional linker options.</P>
+ <P>LIBS: additional library files.</P>
+ <P>LIBSUFFIX: a suffix to mangle the library name with (defaults to nothing).</P>
+ <P>This makefile does not set any architecture specific options like -xarch=v9,
+ you can set these by defining the appropriate macros, for example:</P>
+ <PRE>dmake CXXFLAGS="-xarch=v9" LDFLAGS="-xarch=v9" LIBSUFFIX="_v9" -f sunpro.mak</PRE>
+ <P>will build v9 variants of the regex library named libboost_regex_v9.a etc.</P>
+ <H3><A name="other"></A>Makefiles for Other compilers:
+ </H3>
+ <P>There is a generic makefile (generic.mak )
+ provided in &lt;boost-root&gt;/libs/regex/build - see that makefile for details
+ of environment variables that need to be set before use.
+ <HR>
+ <P></P>
+ <p>Revised&nbsp;
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->
+ 09 Jan 2005&nbsp;
+ <!--webbot bot="Timestamp" endspan i-checksum="39359" --></p>
+ <p><i>© Copyright John Maddock&nbsp;1998-
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%Y" startspan --> 2005<!--webbot bot="Timestamp" endspan i-checksum="39359" --></i></p>
+ <P><I>Use, modification and distribution are subject to the Boost Software License,
+ Version 1.0. (See accompanying file LICENSE_1_0.txt
+ or copy at http://www.boost.org/LICENSE_1_0.txt)</I></P>
+ </body>
+</html>

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/doc/introduction.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/doc/introduction.html 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,181 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+ <head>
+ <title>Boost.Regex: Introduction</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <link rel="stylesheet" type="text/css" href="../../../boost.css">
+ </head>
+ <body>
+ <P>
+ <TABLE id="Table1" cellSpacing="1" cellPadding="1" width="100%" border="0">
+ <TR>
+ <td valign="top" width="300">
+ <h3>C++ Boost</h3>
+ </td>
+ <TD width="353">
+ <H1 align="center">Boost.Regex</H1>
+ <H2 align="center">Introduction</H2>
+ </TD>
+ <td width="50">
+ <h3>Boost.Regex Index</h3>
+ </td>
+ </TR>
+ </TABLE>
+ </P>
+ <HR>
+ <p></p>
+ <P>Regular expressions are a form of pattern-matching that are often used in text
+ processing; many users will be familiar with the Unix utilities <I>grep</I>, <I>sed</I>
+ and <I>awk</I>, and the programming language <I>Perl</I>, each of which make
+ extensive use of regular expressions. Traditionally C++ users have been limited
+ to the POSIX C API's for manipulating regular expressions, and while regex++
+ does provide these API's, they do not represent the best way to use the
+ library. For example regex++ can cope with wide character strings, or search
+ and replace operations (in a manner analogous to either sed or Perl), something
+ that traditional C libraries can not do.</P>
+ <P>The class boost::basic_regex is the key class in
+ this library; it represents a "machine readable" regular expression, and is
+ very closely modeled on std::basic_string, think of it as a string plus the
+ actual state-machine required by the regular expression algorithms. Like
+ std::basic_string there are two typedefs that are almost always the means by
+ which this class is referenced:</P>
+ <pre><B>namespace </B>boost{
+
+<B>template</B> &lt;<B>class</B> charT,
+<B> class</B> traits = regex_traits&lt;charT&gt; &gt;
+<B>class</B> basic_regex;
+
+<B>typedef</B> basic_regex&lt;<B>char</B>&gt; regex;
+<B>typedef</B> basic_regex&lt;<B>wchar_t&gt;</B> wregex;
+
+}</pre>
+ <P>To see how this library can be used, imagine that we are writing a credit card
+ processing application. Credit card numbers generally come as a string of
+ 16-digits, separated into groups of 4-digits, and separated by either a space
+ or a hyphen. Before storing a credit card number in a database (not necessarily
+ something your customers will appreciate!), we may want to verify that the
+ number is in the correct format. To match any digit we could use the regular
+ expression [0-9], however ranges of characters like this are actually locale
+ dependent. Instead we should use the POSIX standard form [[:digit:]], or the
+ regex++ and Perl shorthand for this \d (note that many older libraries tended
+ to be hard-coded to the C-locale, consequently this was not an issue for them).
+ That leaves us with the following regular expression to validate credit card
+ number formats:</P>
+ <PRE>(\d{4}[- ]){3}\d{4}</PRE>
+ <P>Here the parenthesis act to group (and mark for future reference)
+ sub-expressions, and the {4} means "repeat exactly 4 times". This is an example
+ of the extended regular expression syntax used by Perl, awk and egrep. Regex++
+ also supports the older "basic" syntax used by sed and grep, but this is
+ generally less useful, unless you already have some basic regular expressions
+ that you need to reuse.</P>
+ <P>Now let's take that expression and place it in some C++ code to validate the
+ format of a credit card number:</P>
+ <PRE><B>bool</B> validate_card_format(<B>const</B> std::string& s)
+{
+ <B>static</B> <B>const</B> boost::regex e("(\\d{4}[- ]){3}\\d{4}");
+ <B>return</B> regex_match(s, e);
+}</PRE>
+ <P>Note how we had to add some extra escapes to the expression: remember that the
+ escape is seen once by the C++ compiler, before it gets to be seen by the
+ regular expression engine, consequently escapes in regular expressions have to
+ be doubled up when embedding them in C/C++ code. Also note that all the
+ examples assume that your compiler supports Koenig lookup, if yours doesn't
+ (for example VC6), then you will have to add some boost:: prefixes to some of
+ the function calls in the examples.</P>
+ <P>Those of you who are familiar with credit card processing, will have realized
+ that while the format used above is suitable for human readable card numbers,
+ it does not represent the format required by online credit card systems; these
+ require the number as a string of 16 (or possibly 15) digits, without any
+ intervening spaces. What we need is a means to convert easily between the two
+ formats, and this is where search and replace comes in. Those who are familiar
+ with the utilities <I>sed</I> and <I>Perl</I> will already be ahead here; we
+ need two strings - one a regular expression - the other a "<A href="format_syntax.html">format
+ string</A>" that provides a description of the text to replace the match
+ with. In regex++ this search and replace operation is performed with the
+ algorithm regex_replace, for our credit card
+ example we can write two algorithms like this to provide the format
+ conversions:</P>
+ <PRE><I>// match any format with the regular expression:
+</I><B>const</B> boost::regex e("\\A(\\d{3,4})[- ]?(\\d{4})[- ]?(\\d{4})[- ]?(\\d{4})\\z");
+<B>const</B> std::string machine_format("\\1\\2\\3\\4");
+<B>const</B> std::string human_format("\\1-\\2-\\3-\\4");
+
+std::string machine_readable_card_number(<B>const</B> std::string s)
+{
+ <B>return</B> regex_replace(s, e, machine_format, boost::match_default | boost::format_sed);
+}
+
+std::string human_readable_card_number(<B>const</B> std::string s)
+{
+ <B>return</B> regex_replace(s, e, human_format, boost::match_default | boost::format_sed);
+}</PRE>
+ <P>Here we've used marked sub-expressions in the regular expression to split out
+ the four parts of the card number as separate fields, the format string then
+ uses the sed-like syntax to replace the matched text with the reformatted
+ version.</P>
+ <P>In the examples above, we haven't directly manipulated the results of a regular
+ expression match, however in general the result of a match contains a number of
+ sub-expression matches in addition to the overall match. When the library needs
+ to report a regular expression match it does so using an instance of the class <A href="match_results.html">
+ match_results</A>, as before there are typedefs of this class for the most
+ common cases:
+ </P>
+ <PRE><B>namespace </B>boost{
+<B>typedef</B> match_results&lt;<B>const</B> <B>char</B>*&gt; cmatch;
+<B>typedef</B> match_results&lt;<B>const</B> <B>wchar_t</B>*&gt; wcmatch;
+<STRONG>typedef</STRONG> match_results&lt;std::string::const_iterator&gt; smatch;
+<STRONG>typedef</STRONG> match_results&lt;std::wstring::const_iterator&gt; wsmatch;
+}</PRE>
+ <P>The algorithms regex_search and&nbsp;regex_match
+ make use of match_results to report what matched; the difference between these
+ algorithms is that regex_match will only find
+ matches that consume <EM>all</EM> of the input text, where as <A href="regex_search.html">
+ regex_search</A> will <EM>search</EM> for a match anywhere within the text
+ being matched.</P>
+ <P>Note that these algorithms are not restricted to searching regular C-strings,
+ any bidirectional iterator type can be searched, allowing for the possibility
+ of seamlessly searching almost any kind of data.
+ </P>
+ <P>For search and replace operations, in addition to the algorithm <A href="regex_replace.html">
+ regex_replace</A> that we have already seen, the match_results
+ class has a format member that takes the result of a match and a format string,
+ and produces a new string by merging the two.</P>
+ <P>For iterating through all occurences of an expression within a text, there are
+ two iterator types: regex_iterator will
+ enumerate over the match_results objects
+ found, while regex_token_iterator will
+ enumerate a series of strings (similar to perl style split operations).</P>
+ <P>For those that dislike templates, there is a high level wrapper class RegEx
+ that is an encapsulation of the lower level template code - it provides a
+ simplified interface for those that don't need the full power of the library,
+ and supports only narrow characters, and the "extended" regular expression
+ syntax. This class is now deprecated as it does not form part of the regular
+ expressions C++ standard library proposal.
+ </P>
+ <P>The POSIX API functions: regcomp, regexec, regfree
+ and regerror, are available in both narrow character and Unicode versions, and
+ are provided for those who need compatibility with these API's.
+ </P>
+ <P>Finally, note that the library now has run-time localization
+ support, and recognizes the full POSIX regular expression syntax - including
+ advanced features like multi-character collating elements and equivalence
+ classes - as well as providing compatibility with other regular expression
+ libraries including GNU and BSD4 regex packages, and to a more limited extent
+ Perl 5.
+ </P>
+ <P>
+ <HR>
+ <P></P>
+ <p>Revised
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->
+ 24 Oct 2003
+ <!--webbot bot="Timestamp" endspan i-checksum="39359" --></p>
+ <p><i>© Copyright John Maddock&nbsp;1998-
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%Y" startspan -->
+ 2003<!--webbot bot="Timestamp" endspan i-checksum="39359" --></i></p>
+ <P><I>Use, modification and distribution are subject to the Boost Software License,
+ Version 1.0. (See accompanying file LICENSE_1_0.txt
+ or copy at http://www.boost.org/LICENSE_1_0.txt)</I></P>
+ </body>
+</html>
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/doc/localisation.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/doc/localisation.html 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,808 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+ <head>
+ <title>Boost.Regex: Localisation</title>
+ <meta name="generator" content="HTML Tidy, see www.w3.org">
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <link rel="stylesheet" type="text/css" href="../../../boost.css">
+ </head>
+ <body>
+ <p></p>
+ <table id="Table1" cellspacing="1" cellpadding="1" width="100%" border="0">
+ <tr>
+ <td valign="top" width="300">
+ <h3>C++ Boost</h3>
+ </td>
+ <td width="353">
+ <h1 align="center">Boost.Regex</h1>
+ <h2 align="center">Localisation</h2>
+ </td>
+ <td width="50">
+ <h3>Boost.Regex Index</h3>
+ </td>
+ </tr>
+ </table>
+ <br>
+ <br>
+ <hr>
+ <p>Boost.regex&nbsp;provides extensive support for run-time localization, the
+ localization model used can be split into two parts: front-end and back-end.</p>
+ <p>Front-end localization deals with everything which the user sees - error
+ messages, and the regular expression syntax itself. For example a French
+ application could change [[:word:]] to [[:mot:]] and \w to \m. Modifying the
+ front end locale requires active support from the developer, by providing the
+ library with a message catalogue to load, containing the localized strings.
+ Front-end locale is affected by the LC_MESSAGES category only.</p>
+ <p>Back-end localization deals with everything that occurs after the expression
+ has been parsed - in other words everything that the user does not see or
+ interact with directly. It deals with case conversion, collation, and character
+ class membership. The back-end locale does not require any intervention from
+ the developer - the library will acquire all the information it requires for
+ the current locale from the underlying operating system / run time library.
+ This means that if the program user does not interact with regular expressions
+ directly - for example if the expressions are embedded in your C++ code - then
+ no explicit localization is required, as the library will take care of
+ everything for you. For example embedding the expression [[:word:]]+ in your
+ code will always match a whole word, if the program is run on a machine with,
+ for example, a Greek locale, then it will still match a whole word, but in
+ Greek characters rather than Latin ones. The back-end locale is affected by the
+ LC_TYPE and LC_COLLATE categories.</p>
+ <p>There are three separate localization mechanisms supported by boost.regex:</p>
+ <h3>Win32 localization model.</h3>
+ <p>This is the default model when the library is compiled under Win32, and is
+ encapsulated by the traits class w32_regex_traits. When this model is in effect
+ each basic_regex object gets it's own LCID, by default this is the users
+ default setting as returned by GetUserDefaultLCID, but you can call <EM>imbue</EM>
+ on the basic_regex object to set it's locale to some other LCID if you wish.
+ All the settings used by boost.regex are acquired directly from the operating
+ system bypassing the C run time library. Front-end localization requires a
+ resource dll, containing a string table with the user-defined strings. The
+ traits class exports the function:</p>
+ <p>static std::string set_message_catalogue(const std::string&amp; s);</p>
+ <p>which needs to be called with a string identifying the name of the resource
+ dll, <i>before</i> your code compiles any regular expressions (but not
+ necessarily before you construct any <i>basic_regex</i> instances):</p>
+ <p>
+ boost::w32_regex_traits&lt;char&gt;::set_message_catalogue("mydll.dll");</p>
+ <p>
+ The library provides full Unicode support under NT, under Windows 9x the
+ library degrades gracefully - characters 0 to 255 are supported, the remainder
+ are treated as "unknown" graphic characters.</p>
+ <h3>C localization model.</h3>
+ <p>This model has been deprecated in favor of the C++ localoe for all non-Windows
+ compilers that support&nbsp;it.&nbsp; This locale is encapsulated by the traits
+ class <i>c_regex_traits</i>, Win32 users can force this model to take effect by
+ defining the pre-processor symbol BOOST_REGEX_USE_C_LOCALE. When this model is
+ in effect there is a single global locale, as set by <i>setlocale</i>. All
+ settings are acquired from your run time library, consequently Unicode support
+ is dependent upon your run time library implementation.</p>
+ <P>Front end localization is not supported.</P>
+ <P>Note that calling <i>setlocale</i> invalidates all compiled regular
+ expressions, calling <tt>setlocale(LC_ALL, "C")</tt> will make this library
+ behave equivalent to most traditional regular expression libraries including
+ version 1 of this library.</P>
+ <h3>C++ localization model.</h3>
+ <p>This model is the default for non-Windows compilers.</p>
+ <P>
+ When this model is in effect each instance of basic_regex&lt;&gt; has its own
+ instance of std::locale, class basic_regex&lt;&gt; also has a member function <i>imbue</i>
+ which allows the locale for the expression to be set on a per-instance basis.
+ Front end localization requires a POSIX message catalogue, which will be loaded
+ via the std::messages facet of the expression's locale, the traits class
+ exports the symbol:</P>
+ <p>static std::string set_message_catalogue(const std::string&amp; s);</p>
+ <p>which needs to be called with a string identifying the name of the message
+ catalogue, <i>before</i> your code compiles any regular expressions (but not
+ necessarily before you construct any <i>basic_regex</i> instances):</p>
+ <p>
+ boost::cpp_regex_traits&lt;char&gt;::set_message_catalogue("mycatalogue");</p>
+ <p>Note that calling basic_regex&lt;&gt;::imbue will invalidate any expression
+ currently compiled in that instance of basic_regex&lt;&gt;.</p>
+ <P>Finally note that if you build the library with a non-default localization
+ model, then the appropriate pre-processor symbol (BOOST_REGEX_USE_C_LOCALE or
+ BOOST_REGEX_USE_CPP_LOCALE) must be defined both when you build the support
+ library, and when you include &lt;boost/regex.hpp&gt; or
+ &lt;boost/cregex.hpp&gt; in your code. The best way to ensure this is to add
+ the #define to &lt;boost/regex/user.hpp&gt;.</P>
+ <h3>Providing a message catalogue:</h3>
+ <p>
+ In order to localize the front end of the library, you need to provide the
+ library with the appropriate message strings contained either in a resource
+ dll's string table (Win32 model), or a POSIX message catalogue (C++ models). In
+ the latter case the messages must appear in message set zero of the catalogue.
+ The messages and their id's are as follows:<br>
+ &nbsp;</p>
+ <p></p>
+ <table id="Table2" cellspacing="0" cellpadding="6" width="624" border="0">
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="21%">Message id</td>
+ <td valign="top" width="32%">Meaning</td>
+ <td valign="top" width="29%">Default value</td>
+ <td valign="top" width="9%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="21%">101</td>
+ <td valign="top" width="32%">The character used to start a sub-expression.</td>
+ <td valign="top" width="29%">"("</td>
+ <td valign="top" width="9%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="21%">102</td>
+ <td valign="top" width="32%">The character used to end a sub-expression
+ declaration.</td>
+ <td valign="top" width="29%">")"</td>
+ <td valign="top" width="9%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="21%">103</td>
+ <td valign="top" width="32%">The character used to denote an end of line
+ assertion.</td>
+ <td valign="top" width="29%">"$"</td>
+ <td valign="top" width="9%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="21%">104</td>
+ <td valign="top" width="32%">The character used to denote the start of line
+ assertion.</td>
+ <td valign="top" width="29%">"^"</td>
+ <td valign="top" width="9%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="21%">105</td>
+ <td valign="top" width="32%">The character used to denote the "match any character
+ expression".</td>
+ <td valign="top" width="29%">"."</td>
+ <td valign="top" width="9%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="21%">106</td>
+ <td valign="top" width="32%">The match zero or more times repetition operator.</td>
+ <td valign="top" width="29%">"*"</td>
+ <td valign="top" width="9%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="21%">107</td>
+ <td valign="top" width="32%">The match one or more repetition operator.</td>
+ <td valign="top" width="29%">"+"</td>
+ <td valign="top" width="9%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="21%">108</td>
+ <td valign="top" width="32%">The match zero or one repetition operator.</td>
+ <td valign="top" width="29%">"?"</td>
+ <td valign="top" width="9%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="21%">109</td>
+ <td valign="top" width="32%">The character set opening character.</td>
+ <td valign="top" width="29%">"["</td>
+ <td valign="top" width="9%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="21%">110</td>
+ <td valign="top" width="32%">The character set closing character.</td>
+ <td valign="top" width="29%">"]"</td>
+ <td valign="top" width="9%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="21%">111</td>
+ <td valign="top" width="32%">The alternation operator.</td>
+ <td valign="top" width="29%">"|"</td>
+ <td valign="top" width="9%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="21%">112</td>
+ <td valign="top" width="32%">The escape character.</td>
+ <td valign="top" width="29%">"\\"</td>
+ <td valign="top" width="9%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="21%">113</td>
+ <td valign="top" width="32%">The hash character (not currently used).</td>
+ <td valign="top" width="29%">"#"</td>
+ <td valign="top" width="9%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="21%">114</td>
+ <td valign="top" width="32%">The range operator.</td>
+ <td valign="top" width="29%">"-"</td>
+ <td valign="top" width="9%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="21%">115</td>
+ <td valign="top" width="32%">The repetition operator opening character.</td>
+ <td valign="top" width="29%">"{"</td>
+ <td valign="top" width="9%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="21%">116</td>
+ <td valign="top" width="32%">The repetition operator closing character.</td>
+ <td valign="top" width="29%">"}"</td>
+ <td valign="top" width="9%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="21%">117</td>
+ <td valign="top" width="32%">The digit characters.</td>
+ <td valign="top" width="29%">"0123456789"</td>
+ <td valign="top" width="9%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="21%">118</td>
+ <td valign="top" width="32%">The character which when preceded by an escape
+ character represents the word boundary assertion.</td>
+ <td valign="top" width="29%">"b"</td>
+ <td valign="top" width="9%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="21%">119</td>
+ <td valign="top" width="32%">The character which when preceded by an escape
+ character represents the non-word boundary assertion.</td>
+ <td valign="top" width="29%">"B"</td>
+ <td valign="top" width="9%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="21%">120</td>
+ <td valign="top" width="32%">The character which when preceded by an escape
+ character represents the word-start boundary assertion.</td>
+ <td valign="top" width="29%">"&lt;"</td>
+ <td valign="top" width="9%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="21%">121</td>
+ <td valign="top" width="32%">The character which when preceded by an escape
+ character represents the word-end boundary assertion.</td>
+ <td valign="top" width="29%">"&gt;"</td>
+ <td valign="top" width="9%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="21%">122</td>
+ <td valign="top" width="32%">The character which when preceded by an escape
+ character represents any word character.</td>
+ <td valign="top" width="29%">"w"</td>
+ <td valign="top" width="9%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="21%">123</td>
+ <td valign="top" width="32%">The character which when preceded by an escape
+ character represents a non-word character.</td>
+ <td valign="top" width="29%">"W"</td>
+ <td valign="top" width="9%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="21%">124</td>
+ <td valign="top" width="32%">The character which when preceded by an escape
+ character represents a start of buffer assertion.</td>
+ <td valign="top" width="29%">"`A"</td>
+ <td valign="top" width="9%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="21%">125</td>
+ <td valign="top" width="32%">The character which when preceded by an escape
+ character represents an end of buffer assertion.</td>
+ <td valign="top" width="29%">"'z"</td>
+ <td valign="top" width="9%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="21%">126</td>
+ <td valign="top" width="32%">The newline character.</td>
+ <td valign="top" width="29%">"\n"</td>
+ <td valign="top" width="9%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="21%">127</td>
+ <td valign="top" width="32%">The comma separator.</td>
+ <td valign="top" width="29%">","</td>
+ <td valign="top" width="9%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="21%">128</td>
+ <td valign="top" width="32%">The character which when preceded by an escape
+ character represents the bell character.</td>
+ <td valign="top" width="29%">"a"</td>
+ <td valign="top" width="9%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="21%">129</td>
+ <td valign="top" width="32%">The character which when preceded by an escape
+ character represents the form feed character.</td>
+ <td valign="top" width="29%">"f"</td>
+ <td valign="top" width="9%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="21%">130</td>
+ <td valign="top" width="32%">The character which when preceded by an escape
+ character represents the newline character.</td>
+ <td valign="top" width="29%">"n"</td>
+ <td valign="top" width="9%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="21%">131</td>
+ <td valign="top" width="32%">The character which when preceded by an escape
+ character represents the carriage return character.</td>
+ <td valign="top" width="29%">"r"</td>
+ <td valign="top" width="9%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="21%">132</td>
+ <td valign="top" width="32%">The character which when preceded by an escape
+ character represents the tab character.</td>
+ <td valign="top" width="29%">"t"</td>
+ <td valign="top" width="9%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="21%">133</td>
+ <td valign="top" width="32%">The character which when preceded by an escape
+ character represents the vertical tab character.</td>
+ <td valign="top" width="29%">"v"</td>
+ <td valign="top" width="9%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="21%">134</td>
+ <td valign="top" width="32%">The character which when preceded by an escape
+ character represents the start of a hexadecimal character constant.</td>
+ <td valign="top" width="29%">"x"</td>
+ <td valign="top" width="9%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="21%">135</td>
+ <td valign="top" width="32%">The character which when preceded by an escape
+ character represents the start of an ASCII escape character.</td>
+ <td valign="top" width="29%">"c"</td>
+ <td valign="top" width="9%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="21%">136</td>
+ <td valign="top" width="32%">The colon character.</td>
+ <td valign="top" width="29%">":"</td>
+ <td valign="top" width="9%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="21%">137</td>
+ <td valign="top" width="32%">The equals character.</td>
+ <td valign="top" width="29%">"="</td>
+ <td valign="top" width="9%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="21%">138</td>
+ <td valign="top" width="32%">The character which when preceded by an escape
+ character represents the ASCII escape character.</td>
+ <td valign="top" width="29%">"e"</td>
+ <td valign="top" width="9%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="21%">139</td>
+ <td valign="top" width="32%">The character which when preceded by an escape
+ character represents any lower case character.</td>
+ <td valign="top" width="29%">"l"</td>
+ <td valign="top" width="9%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="21%">140</td>
+ <td valign="top" width="32%">The character which when preceded by an escape
+ character represents any non-lower case character.</td>
+ <td valign="top" width="29%">"L"</td>
+ <td valign="top" width="9%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="21%">141</td>
+ <td valign="top" width="32%">The character which when preceded by an escape
+ character represents any upper case character.</td>
+ <td valign="top" width="29%">"u"</td>
+ <td valign="top" width="9%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="21%">142</td>
+ <td valign="top" width="32%">The character which when preceded by an escape
+ character represents any non-upper case character.</td>
+ <td valign="top" width="29%">"U"</td>
+ <td valign="top" width="9%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="21%">143</td>
+ <td valign="top" width="32%">The character which when preceded by an escape
+ character represents any space character.</td>
+ <td valign="top" width="29%">"s"</td>
+ <td valign="top" width="9%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="21%">144</td>
+ <td valign="top" width="32%">The character which when preceded by an escape
+ character represents any non-space character.</td>
+ <td valign="top" width="29%">"S"</td>
+ <td valign="top" width="9%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="21%">145</td>
+ <td valign="top" width="32%">The character which when preceded by an escape
+ character represents any digit character.</td>
+ <td valign="top" width="29%">"d"</td>
+ <td valign="top" width="9%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="21%">146</td>
+ <td valign="top" width="32%">The character which when preceded by an escape
+ character represents any non-digit character.</td>
+ <td valign="top" width="29%">"D"</td>
+ <td valign="top" width="9%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="21%">147</td>
+ <td valign="top" width="32%">The character which when preceded by an escape
+ character represents the end quote operator.</td>
+ <td valign="top" width="29%">"E"</td>
+ <td valign="top" width="9%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="21%">148</td>
+ <td valign="top" width="32%">The character which when preceded by an escape
+ character represents the start quote operator.</td>
+ <td valign="top" width="29%">"Q"</td>
+ <td valign="top" width="9%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="21%">149</td>
+ <td valign="top" width="32%">The character which when preceded by an escape
+ character represents a Unicode combining character sequence.</td>
+ <td valign="top" width="29%">"X"</td>
+ <td valign="top" width="9%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="21%">150</td>
+ <td valign="top" width="32%">The character which when preceded by an escape
+ character represents any single character.</td>
+ <td valign="top" width="29%">"C"</td>
+ <td valign="top" width="9%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="21%">151</td>
+ <td valign="top" width="32%">The character which when preceded by an escape
+ character represents end of buffer operator.</td>
+ <td valign="top" width="29%">"Z"</td>
+ <td valign="top" width="9%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="21%">152</td>
+ <td valign="top" width="32%">The character which when preceded by an escape
+ character represents the continuation assertion.</td>
+ <td valign="top" width="29%">"G"</td>
+ <td valign="top" width="9%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td>&nbsp;</td>
+ <td>153</td>
+ <td>The character which when preceeded by (? indicates a zero width negated
+ forward lookahead assert.</td>
+ <td>!</td>
+ <td>&nbsp;</td>
+ </tr>
+ </table>
+ <br>
+ <br>
+ <p>Custom error messages are loaded as follows:&nbsp;</p>
+ <p></p>
+ <table id="Table3" cellspacing="0" cellpadding="7" width="624" border="0">
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="22%">Message ID</td>
+ <td valign="top" width="32%">Error message ID</td>
+ <td valign="top" width="31%">Default string</td>
+ <td valign="top" width="7%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="22%">201</td>
+ <td valign="top" width="32%">REG_NOMATCH</td>
+ <td valign="top" width="31%">"No match"</td>
+ <td valign="top" width="7%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="22%">202</td>
+ <td valign="top" width="32%">REG_BADPAT</td>
+ <td valign="top" width="31%">"Invalid regular expression"</td>
+ <td valign="top" width="7%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="22%">203</td>
+ <td valign="top" width="32%">REG_ECOLLATE</td>
+ <td valign="top" width="31%">"Invalid collation character"</td>
+ <td valign="top" width="7%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="22%">204</td>
+ <td valign="top" width="32%">REG_ECTYPE</td>
+ <td valign="top" width="31%">"Invalid character class name"</td>
+ <td valign="top" width="7%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="22%">205</td>
+ <td valign="top" width="32%">REG_EESCAPE</td>
+ <td valign="top" width="31%">"Trailing backslash"</td>
+ <td valign="top" width="7%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="22%">206</td>
+ <td valign="top" width="32%">REG_ESUBREG</td>
+ <td valign="top" width="31%">"Invalid back reference"</td>
+ <td valign="top" width="7%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="22%">207</td>
+ <td valign="top" width="32%">REG_EBRACK</td>
+ <td valign="top" width="31%">"Unmatched [ or [^"</td>
+ <td valign="top" width="7%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="22%">208</td>
+ <td valign="top" width="32%">REG_EPAREN</td>
+ <td valign="top" width="31%">"Unmatched ( or \\("</td>
+ <td valign="top" width="7%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="22%">209</td>
+ <td valign="top" width="32%">REG_EBRACE</td>
+ <td valign="top" width="31%">"Unmatched \\{"</td>
+ <td valign="top" width="7%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="22%">210</td>
+ <td valign="top" width="32%">REG_BADBR</td>
+ <td valign="top" width="31%">"Invalid content of \\{\\}"</td>
+ <td valign="top" width="7%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="22%">211</td>
+ <td valign="top" width="32%">REG_ERANGE</td>
+ <td valign="top" width="31%">"Invalid range end"</td>
+ <td valign="top" width="7%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="22%">212</td>
+ <td valign="top" width="32%">REG_ESPACE</td>
+ <td valign="top" width="31%">"Memory exhausted"</td>
+ <td valign="top" width="7%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="22%">213</td>
+ <td valign="top" width="32%">REG_BADRPT</td>
+ <td valign="top" width="31%">"Invalid preceding regular expression"</td>
+ <td valign="top" width="7%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="22%">214</td>
+ <td valign="top" width="32%">REG_EEND</td>
+ <td valign="top" width="31%">"Premature end of regular expression"</td>
+ <td valign="top" width="7%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="22%">215</td>
+ <td valign="top" width="32%">REG_ESIZE</td>
+ <td valign="top" width="31%">"Regular expression too big"</td>
+ <td valign="top" width="7%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="22%">216</td>
+ <td valign="top" width="32%">REG_ERPAREN</td>
+ <td valign="top" width="31%">"Unmatched ) or \\)"</td>
+ <td valign="top" width="7%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="22%">217</td>
+ <td valign="top" width="32%">REG_EMPTY</td>
+ <td valign="top" width="31%">"Empty expression"</td>
+ <td valign="top" width="7%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="22%">218</td>
+ <td valign="top" width="32%">REG_E_UNKNOWN</td>
+ <td valign="top" width="31%">"Unknown error"</td>
+ <td valign="top" width="7%">&nbsp;</td>
+ </tr>
+ </table>
+ <br>
+ <br>
+ <p>Custom character class names are loaded as followed:&nbsp;</p>
+ <p></p>
+ <table id="Table4" cellspacing="0" cellpadding="7" width="624" border="0">
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="22%">Message ID</td>
+ <td valign="top" width="32%">Description</td>
+ <td valign="top" width="31%">Equivalent default class name</td>
+ <td valign="top" width="7%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="22%">300</td>
+ <td valign="top" width="32%">The character class name for alphanumeric characters.</td>
+ <td valign="top" width="31%">"alnum"</td>
+ <td valign="top" width="7%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="22%">301</td>
+ <td valign="top" width="32%">The character class name for alphabetic characters.</td>
+ <td valign="top" width="31%">"alpha"</td>
+ <td valign="top" width="7%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="22%">302</td>
+ <td valign="top" width="32%">The character class name for control characters.</td>
+ <td valign="top" width="31%">"cntrl"</td>
+ <td valign="top" width="7%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="22%">303</td>
+ <td valign="top" width="32%">The character class name for digit characters.</td>
+ <td valign="top" width="31%">"digit"</td>
+ <td valign="top" width="7%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="22%">304</td>
+ <td valign="top" width="32%">The character class name for graphics characters.</td>
+ <td valign="top" width="31%">"graph"</td>
+ <td valign="top" width="7%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="22%">305</td>
+ <td valign="top" width="32%">The character class name for lower case characters.</td>
+ <td valign="top" width="31%">"lower"</td>
+ <td valign="top" width="7%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="22%">306</td>
+ <td valign="top" width="32%">The character class name for printable characters.</td>
+ <td valign="top" width="31%">"print"</td>
+ <td valign="top" width="7%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="22%">307</td>
+ <td valign="top" width="32%">The character class name for punctuation characters.</td>
+ <td valign="top" width="31%">"punct"</td>
+ <td valign="top" width="7%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="22%">308</td>
+ <td valign="top" width="32%">The character class name for space characters.</td>
+ <td valign="top" width="31%">"space"</td>
+ <td valign="top" width="7%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="22%">309</td>
+ <td valign="top" width="32%">The character class name for upper case characters.</td>
+ <td valign="top" width="31%">"upper"</td>
+ <td valign="top" width="7%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="22%">310</td>
+ <td valign="top" width="32%">The character class name for hexadecimal characters.</td>
+ <td valign="top" width="31%">"xdigit"</td>
+ <td valign="top" width="7%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="22%">311</td>
+ <td valign="top" width="32%">The character class name for blank characters.</td>
+ <td valign="top" width="31%">"blank"</td>
+ <td valign="top" width="7%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="22%">312</td>
+ <td valign="top" width="32%">The character class name for word characters.</td>
+ <td valign="top" width="31%">"word"</td>
+ <td valign="top" width="7%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="8%">&nbsp;</td>
+ <td valign="top" width="22%">313</td>
+ <td valign="top" width="32%">The character class name for Unicode characters.</td>
+ <td valign="top" width="31%">"unicode"</td>
+ <td valign="top" width="7%">&nbsp;</td>
+ </tr>
+ </table>
+ <br>
+ <br>
+ <p>Finally, custom collating element names are loaded starting from message id
+ 400, and terminating when the first load thereafter fails. Each message looks
+ something like: "tagname string" where <i>tagname</i> is the name used inside
+ [[.tagname.]] and <i>string</i> is the actual text of the collating element.
+ Note that the value of collating element [[.zero.]] is used for the conversion
+ of strings to numbers - if you replace this with another value then that will
+ be used for string parsing - for example use the Unicode character 0x0660 for
+ [[.zero.]] if you want to use Unicode Arabic-Indic digits in your regular
+ expressions in place of Latin digits.</p>
+ <p>Note that the POSIX defined names for character classes and collating elements
+ are always available - even if custom names are defined, in contrast, custom
+ error messages, and custom syntax messages replace the default ones.</p>
+ <p></p>
+ <hr>
+ <p>Revised&nbsp;
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->
+ 26 June 2004&nbsp;
+ <!--webbot bot="Timestamp" endspan i-checksum="39359" --></p>
+ <p><i>© Copyright John Maddock&nbsp;1998-
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%Y" startspan --> 2004<!--webbot bot="Timestamp" endspan i-checksum="39359" --></i></p>
+ <P><I>Use, modification and distribution are subject to the Boost Software License,
+ Version 1.0. (See accompanying file LICENSE_1_0.txt
+ or copy at http://www.boost.org/LICENSE_1_0.txt)</I></P>
+ </body>
+</html>

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/doc/match_flag_type.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/doc/match_flag_type.html 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,295 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+ <head>
+ <title>Boost.Regex: match_flag_type</title>
+ <meta name="generator" content="HTML Tidy, see www.w3.org">
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <link rel="stylesheet" type="text/css" href="../../../boost.css">
+ </head>
+ <body>
+ <p></p>
+ <table id="Table1" cellspacing="1" cellpadding="1" width="100%" border="0">
+ <tr>
+ <td valign="top" width="300">
+ <h3>C++ Boost</h3>
+ </td>
+ <td width="353">
+ <h1 align="center">Boost.Regex</h1>
+ <h2 align="center">match_flag_type</h2>
+ </td>
+ <td width="50">
+ <h3>Boost.Regex Index</h3>
+ </td>
+ </tr>
+ </table>
+ <br>
+ <br>
+ <hr>
+ <h3>Synopsis</h3>
+ <p>The type <code>match_flag_type</code> is an implementation specific bitmask
+ type (17.3.2.1.2) that controls how a regular expression is matched against a
+ character sequence.&nbsp; The behavior of the format flags is described in more
+ detail in the format syntax guide.</p>
+ <pre>
+namespace boost{ namespace regex_constants{
+
+typedef <EM>implemenation-specific-bitmask-type</EM> match_flag_type;
+
+static const match_flag_type match_default = 0;
+static const match_flag_type match_not_bob;
+static const match_flag_type match_not_eob;
+static const match_flag_type match_not_bol;
+static const match_flag_type match_not_eol;
+static const match_flag_type match_not_bow;
+static const match_flag_type match_not_eow;
+static const match_flag_type match_any;
+static const match_flag_type match_not_null;
+static const match_flag_type match_continuous;
+static const match_flag_type match_partial;
+static const match_flag_type match_single_line;
+static const match_flag_type match_prev_avail;
+static const match_flag_type match_not_dot_newline;
+static const match_flag_type match_not_dot_null;
+
+static const match_flag_type format_default = 0;
+static const match_flag_type format_sed;
+static const match_flag_type format_perl;
+static const match_flag_type format_literal; <BR>
+static const match_flag_type format_no_copy;
+static const match_flag_type format_first_only;
+static const match_flag_type format_all;
+
+} // namespace regex_constants
+} // namespace boost
+</pre>
+ <h3>Description</h3>
+ <p>The type <code>match_flag_type</code> is an implementation specific bitmask
+ type (17.3.2.1.2). When matching a regular expression against a sequence of
+ characters [first, last) then setting its elements has the effects listed in
+ the table below:</p>
+ <p></p>
+ <table id="Table2" cellspacing="1" cellpadding="7" width="100%" border="0">
+ <tr>
+ <td valign="top" width="50%">
+ <p><STRONG>Element</STRONG></p>
+ </td>
+ <td valign="top" width="50%">
+ <p><STRONG>Effect if set</STRONG></p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" width="50%">
+ <p>match_default</p>
+ </td>
+ <td valign="top" width="50%">
+ <p>Specifies that matching of regular expressions proceeds without any
+ modification of the normal rules used in ECMA-262, ECMAScript Language
+ Specification, Chapter 15 part 10, RegExp (Regular Expression) Objects (FWD.1)</p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" width="50%">match_not_bob</td>
+ <td valign="top" width="50%">Specifies that the expressions "\A" and
+ "\`"&nbsp;should not match against the sub-sequence [first,first).</td>
+ </tr>
+ <tr>
+ <td valign="top" width="50%">match_not_eob</td>
+ <td valign="top" width="50%">Specifies that the expressions "\'", "\z" and
+ "\Z"&nbsp;should not match against the sub-sequence [last,last).</td>
+ </tr>
+ <tr>
+ <td valign="top" width="50%">
+ <p>match_not_bol</p>
+ </td>
+ <td valign="top" width="50%">
+ <p>Specifies that the expression "^" should not be matched against the
+ sub-sequence [first,first).</p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" width="50%">
+ <p>match_not_eol</p>
+ </td>
+ <td valign="top" width="50%">
+ <p>Specifies that the expression "$" should not be matched against the
+ sub-sequence [last,last).</p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" width="50%">
+ <p>match_not_bow</p>
+ </td>
+ <td valign="top" width="50%">
+ <p>Specifies that the expressions "\&lt;" and&nbsp;"\b" should not be matched
+ against the sub-sequence [first,first).</p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" width="50%">
+ <p>match_not_eow</p>
+ </td>
+ <td valign="top" width="50%">
+ <p>Specifies that the expressions "\&gt;" and&nbsp;"\b" should not be matched
+ against the sub-sequence [last,last).</p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" width="50%">
+ <p>match_any</p>
+ </td>
+ <td valign="top" width="50%">
+ <p>Specifies that if more than one match is possible then any match is an
+ acceptable result: this will still find the leftmost match, but may not find
+ the "best" match at that position.&nbsp; Use this flag if you care about the
+ speed of matching, but don't care what was matched (only whether there is one
+ or not).</p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" width="50%">
+ <p>match_not_null</p>
+ </td>
+ <td valign="top" width="50%">
+ <p>Specifies that the expression can not be matched against an empty sequence.</p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" width="50%">
+ <p>match_continuous</p>
+ </td>
+ <td valign="top" width="50%">
+ <p>Specifies that the expression must match a sub-sequence that begins at <i>first</i>.</p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" width="50%">
+ <p>match_partial</p>
+ </td>
+ <td valign="top" width="50%">
+ <p>Specifies that if no match can be found, then it is acceptable to return a
+ match [from, last) such that from!= last, if there could exist some longer
+ sequence of characters [from,to) of which [from,last) is a prefix, and which
+ would result in a full match.</p>
+ <P>This flag is used when matching incomplete or very long texts, see the <A href="partial_matches.html">
+ partial matches documentation</A> for more information.</P>
+ </td>
+ </tr>
+ <TR>
+ <TD vAlign="top" width="50%">match_extra</TD>
+ <TD vAlign="top" width="50%">Instructs the matching engine to retain all available <A href="captures.html">
+ capture</A> information; if a capturing group is repeated then information
+ about every repeat is available via match_results::captures()
+ or sub_match_captures().</TD>
+ </TR>
+ <TR>
+ <TD vAlign="top" width="50%">match_single_line</TD>
+ <TD vAlign="top" width="50%">Equivalent to the inverse of Perl's m/ modifier;
+ prevents ^ from matching after an embedded newline character (so that it only
+ matches at the start of the text being matched), and $ from matching before an
+ embedded newline (so that it only matches at the end of the text being
+ matched).</TD>
+ </TR>
+ <tr>
+ <td valign="top" width="50%">
+ <p>match_prev_avail</p>
+ </td>
+ <td valign="top" width="50%">
+ <p>Specifies that <code>--first</code> is a valid iterator position, when this
+ flag is set then the flags <code>match_not_bol</code> and <code>match_not_bow</code>
+ are ignored by the regular expression algorithms (RE.7) and iterators (RE.8).</p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" width="50%">match_not_dot_newline</td>
+ <td valign="top" width="50%">Specifies that the expression "." does not match a
+ newline character.&nbsp; This is the inverse of Perl's s/ modifier.</td>
+ </tr>
+ <tr>
+ <td valign="top" width="50%">match_not_dot_null</td>
+ <td valign="top" width="50%">Specified that the expression "." does not match a
+ character null '\0'.</td>
+ </tr>
+ <tr>
+ <td valign="top" width="50%">
+ <p>format_default</p>
+ </td>
+ <td valign="top" width="50%">
+ <p>Specifies that when a regular expression match is to be replaced by a new
+ string, that the new string is constructed using the rules used by the
+ ECMAScript replace function in ECMA-262, ECMAScript Language Specification,
+ Chapter 15 part 5.4.11 String.prototype.replace. (FWD.1). In addition during
+ search and replace operations then all non-overlapping occurrences of the
+ regular expression are located and replaced, and sections of the input that did
+ not match the expression, are copied unchanged to the output string.</p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" width="50%">
+ <p>format_sed</p>
+ </td>
+ <td valign="top" width="50%">
+ <p>Specifies that when a regular expression match is to be replaced by a new
+ string, that the new string is constructed using the rules used by the Unix sed
+ utility in IEEE Std 1003.1-2001, Portable Operating SystemInterface (POSIX ),
+ Shells and Utilities..</p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" width="50%">
+ <p>format_perl</p>
+ </td>
+ <td valign="top" width="50%">
+ <p>
+ Specifies that when a regular expression match is to be replaced by a new
+ string, that the new string is constructed using the same rules as Perl 5.</p>
+ </td>
+ </tr>
+ <TR>
+ <TD vAlign="top" width="50%">format_literal</TD>
+ <TD vAlign="top" width="50%">Specified that when a regular expression match is to
+ be replaced by a new string, that the new string is a literal copy of the
+ replacement text.</TD>
+ </TR>
+ <tr>
+ <td valign="top" width="50%" height="32">format_all</td>
+ <td valign="top" width="50%" height="32">Specifies that all syntax extensions are
+ enabled, including conditional (?ddexpression1:expression2) replacements: see
+ the format string guide for more details.</td>
+ </tr>
+ <tr>
+ <td valign="top" width="50%">
+ <p>format_no_copy</p>
+ </td>
+ <td valign="top" width="50%">
+ <p>When specified during a search and replace operation, then sections of the
+ character container sequence being searched that do match the regular
+ expression, are not copied to the output string.</p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" width="50%">
+ <p>format_first_only</p>
+ </td>
+ <td valign="top" width="50%">
+ <p>When specified during a search and replace operation, then only the first
+ occurrence of the regular expression is replaced.</p>
+ </td>
+ </tr>
+ </table>
+ <br>
+ <br>
+ <p></p>
+ <hr>
+ <br>
+ <br>
+ <p>Revised
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->
+ 04 Feb 2004
+ <!--webbot bot="Timestamp" endspan i-checksum="39359" --></p>
+ <p><i>© Copyright John Maddock&nbsp;1998-
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%Y" startspan --> 2004<!--webbot bot="Timestamp" endspan i-checksum="39359" --></i></p>
+ <P><I>Use, modification and distribution are subject to the Boost Software License,
+ Version 1.0. (See accompanying file LICENSE_1_0.txt
+ or copy at http://www.boost.org/LICENSE_1_0.txt)</I></P>
+ </body>
+</html>

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/doc/match_results.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/doc/match_results.html 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,459 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+ <head>
+ <title>Boost.Regex: class match_results</title>
+ <meta content="HTML Tidy, see www.w3.org" name="generator">
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <LINK href="../../../boost.css" type="text/css" rel="stylesheet"></head>
+ <body>
+ <p></p>
+ <table id="Table1" cellSpacing="1" cellPadding="1" width="100%" border="0">
+ <tr>
+ <td vAlign="top" width="300">
+ <h3>C++ Boost</h3>
+ </td>
+ <td width="353">
+ <h1 align="center">Boost.Regex</h1>
+ <h2 align="center">class match_results</h2>
+ </td>
+ <td width="50">
+ <h3>Boost.Regex Index</h3>
+ </td>
+ </tr>
+ </table>
+ <br>
+ <br>
+ <hr>
+ <h3>Contents</h3>
+ <dl class="index">
+ <dt>Synopsis <dt>Description </dt>
+ </dl>
+ <h3><a name="synopsis"></a>Synopsis</h3>
+ <p>#include &lt;boost/regex.hpp&gt;</p>
+ <p>Regular expressions are different from many simple pattern-matching algorithms
+ in that as well as finding an overall match they can also produce
+ sub-expression matches: each sub-expression being delimited in the pattern by a
+ pair of parenthesis (...). There has to be some method for reporting
+ sub-expression matches back to the user: this is achieved this by defining a
+ class <i>match_results</i> that acts as an indexed collection of sub-expression
+ matches, each sub-expression match being contained in an object of type <i><A href="sub_match.html">
+ sub_match</A></i> .</p>
+ <p>Template class match_results denotes a collection of character sequences
+ representing the result of a regular expression match. Objects of type
+ match_results are passed to the algorithms regex_match
+ and regex_search, and are returned by the
+ iterator regex_iterator .&nbsp; Storage for
+ the collection is allocated and freed as necessary by the member functions of
+ class match_results.</p>
+ <p>The template class match_results conforms to the requirements of a Sequence, as
+ specified in (lib.sequence.reqmts), except that only operations defined for
+ const-qualified Sequences are supported.</p>
+ <p>Class template match_results is most commonly used as one of the typedefs
+ cmatch, wcmatch, smatch, or wsmatch:</p>
+ <pre>template &lt;class BidirectionalIterator,
+ class Allocator = std::allocator&lt;sub_match&lt;BidirectionalIterator&gt; &gt;
+class match_results;
+
+typedef match_results&lt;const char*&gt; cmatch;
+typedef match_results&lt;const wchar_t*&gt; wcmatch;
+typedef match_results&lt;string::const_iterator&gt; smatch;
+typedef match_results&lt;wstring::const_iterator&gt; wsmatch;
+
+template &lt;class BidirectionalIterator,
+ class Allocator = std::allocator&lt;sub_match&lt;BidirectionalIterator&gt; &gt;
+class match_results
+{
+public:
+ typedef sub_match&lt;BidirectionalIterator&gt; value_type;
+ typedef const value_type&amp; const_reference;
+ typedef const_reference reference;
+ typedef implementation defined const_iterator;
+ typedef const_iterator iterator;
+ typedef typename iterator_traits&lt;BidirectionalIterator&gt;::difference_type difference_type;
+ typedef typename Allocator::size_type size_type;
+ typedef Allocator allocator_type;
+ typedef typename iterator_traits&lt;BidirectionalIterator&gt;::value_type char_type;
+ typedef basic_string&lt;char_type&gt; string_type;
+
+ // construct/copy/destroy:
+ explicit match_results(const Allocator&amp; a = Allocator());
+ match_results(const match_results&amp; m);
+ match_results&amp; operator=(const match_results&amp; m);
+ ~match_results();
+
+ // size:
+ size_type size() const;
+ size_type max_size() const;
+ bool empty() const;
+ // element access:
+ difference_type length(int sub = 0) const;
+ difference_type position(unsigned int sub = 0) const;
+ string_type str(int sub = 0) const;
+ const_reference operator[](int n) const;
+
+ const_reference prefix() const;
+
+ const_reference suffix() const;
+ const_iterator begin() const;
+ const_iterator end() const;
+ // format:
+ template &lt;class OutputIterator&gt;
+ OutputIterator format(OutputIterator out,
+ const string_type&amp; fmt,
+ match_flag_type flags = format_default) const;
+ string_type format(const string_type&amp; fmt,
+ match_flag_type flags = format_default) const;
+
+ allocator_type get_allocator() const;
+ void swap(match_results&amp; that);
+
+#ifdef BOOST_REGEX_MATCH_EXTRA
+ typedef typename value_type::capture_sequence_type capture_sequence_type;
+ const capture_sequence_type&amp; captures(std::size_t i)const;
+#endif
+
+};
+
+template &lt;class BidirectionalIterator, class Allocator&gt;
+bool operator == (const match_results&lt;BidirectionalIterator, Allocator&gt;&amp; m1,
+ const match_results&lt;BidirectionalIterator, Allocator&gt;&amp; m2);
+template &lt;class BidirectionalIterator, class Allocator&gt;
+bool operator != (const match_results&lt;BidirectionalIterator, Allocator&gt;&amp; m1,
+ const match_results&lt;BidirectionalIterator, Allocator&gt;&amp; m2);
+
+template &lt;class charT, class traits, class BidirectionalIterator, class Allocator&gt;
+basic_ostream&lt;charT, traits&gt;&amp;
+ operator &lt;&lt; (basic_ostream&lt;charT, traits&gt;&amp; os,
+ const match_results&lt;BidirectionalIterator, Allocator&gt;&amp; m);
+
+template &lt;class BidirectionalIterator, class Allocator&gt;
+void swap(match_results&lt;BidirectionalIterator, Allocator&gt;&amp; m1,
+ match_results&lt;BidirectionalIterator, Allocator&gt;&amp; m2);
+</pre>
+ <h3><a name="description"></a>Description</h3>
+ <h4>match_results constructors</h4>
+ <p>In all <code>match_results</code> constructors, a copy of the Allocator
+ argument is used for any memory allocation performed by the constructor or
+ member functions during the lifetime of the object.</p>
+ <pre><A name=c1></A>
+match_results(const Allocator&amp; a = Allocator());
+</pre>
+ <b></b>
+ <p><b>Effects:</b> Constructs an object of class match_results. The postconditions
+ of this function are indicated in the table:</p>
+ <p align="center"></p>
+ <center>
+ <table id="Table2" cellSpacing="1" cellPadding="7" width="624" border="1">
+ <tbody>
+ <tr>
+ <td vAlign="top" width="50%"><b></b>
+ <p><b>Element</b></p>
+ </td>
+ <td vAlign="top" width="50%"><b></b>
+ <p><b>Value</b></p>
+ </td>
+ </tr>
+ <tr>
+ <td vAlign="top" width="50%">
+ <p>empty()</p>
+ </td>
+ <td vAlign="top" width="50%">
+ <p>true</p>
+ </td>
+ </tr>
+ <tr>
+ <td vAlign="top" width="50%">
+ <p>size()</p>
+ </td>
+ <td vAlign="top" width="50%">
+ <p>0</p>
+ </td>
+ </tr>
+ <tr>
+ <td vAlign="top" width="50%">
+ <p>str()</p>
+ </td>
+ <td vAlign="top" width="50%">
+ <p>basic_string&lt;charT&gt;()</p>
+ </td>
+ </tr>
+ </tbody></table>
+ </center>
+ <p>&nbsp;</p>
+ <pre><A name=c2></A>
+match_results(const match_results&amp; m);
+</pre>
+ <b></b>
+ <p><b>Effects:</b> Constructs an object of class match_results, as a copy of m.</p>
+ <pre><A name=c3></A>
+match_results&amp; operator=(const match_results&amp; m);
+</pre>
+ <b></b>
+ <p><b>Effects:</b> Assigns m to *this. The postconditions of this function are
+ indicated in the table:</p>
+ <p align="center"></p>
+ <center>
+ <table id="Table3" cellSpacing="1" cellPadding="7" width="624" border="1">
+ <tbody>
+ <tr>
+ <td vAlign="top" width="50%"><b></b>
+ <p><b>Element</b></p>
+ </td>
+ <td vAlign="top" width="50%"><b></b>
+ <p><b>Value</b></p>
+ </td>
+ </tr>
+ <tr>
+ <td vAlign="top" width="50%">
+ <p>empty()</p>
+ </td>
+ <td vAlign="top" width="50%">
+ <p>m.empty().</p>
+ </td>
+ </tr>
+ <tr>
+ <td vAlign="top" width="50%">
+ <p>size()</p>
+ </td>
+ <td vAlign="top" width="50%">
+ <p>m.size().</p>
+ </td>
+ </tr>
+ <tr>
+ <td vAlign="top" width="50%">
+ <p>str(n)</p>
+ </td>
+ <td vAlign="top" width="50%">
+ <p>m.str(n) for all integers n &lt; m.size().</p>
+ </td>
+ </tr>
+ <tr>
+ <td vAlign="top" width="50%">
+ <p>prefix()</p>
+ </td>
+ <td vAlign="top" width="50%">
+ <p>m.prefix().</p>
+ </td>
+ </tr>
+ <tr>
+ <td vAlign="top" width="50%">
+ <p>suffix()</p>
+ </td>
+ <td vAlign="top" width="50%">
+ <p>m.suffix().</p>
+ </td>
+ </tr>
+ <tr>
+ <td vAlign="top" width="50%">
+ <p>(*this)[n]</p>
+ </td>
+ <td vAlign="top" width="50%">
+ <p>m[n] for all integers n &lt; m.size().</p>
+ </td>
+ </tr>
+ <tr>
+ <td vAlign="top" width="50%">
+ <p>length(n)</p>
+ </td>
+ <td vAlign="top" width="50%">
+ <p>m.length(n) for all integers n &lt; m.size().</p>
+ </td>
+ </tr>
+ <tr>
+ <td vAlign="top" width="50%">
+ <p>position(n)</p>
+ </td>
+ <td vAlign="top" width="50%">
+ <p>m.position(n) for all integers n &lt; m.size().</p>
+ </td>
+ </tr>
+ </tbody></table>
+ </center>
+ <h4>match_results size</h4>
+ <pre><A name=m1></A>
+size_type size()const;
+</pre>
+ <b></b>
+ <p><b>Effects:</b> Returns the number of sub_match elements stored in *this; that
+ is the number of marked sub-expressions in the regular expression that was
+ matched plus one.</p>
+ <pre><A name=m2></A>
+size_type max_size()const;
+</pre>
+ <b></b>
+ <p><b>Effects:</b> Returns the maximum number of sub_match elements that can be
+ stored in *this.</p>
+ <pre><A name=m3></A>
+bool empty()const;
+</pre>
+ <b></b>
+ <p><b>Effects:</b> Returns <code>size() == 0</code>.</p>
+ <h4>match_results element access</h4>
+ <pre><A name=m4></A>
+difference_type length(int sub = 0)const;
+</pre>
+ <b></b>
+ <p><b>Effects:</b> Returns the length of sub-expression <EM>sub</EM>, that is to
+ say: <code>(*this)[sub].length()</code>.</p>
+ <pre><A name=m5></A>
+difference_type position(unsigned int sub = 0)const;
+</pre>
+ <b></b>
+ <p><b>Effects:</b> Returns the starting location of sub-expression <EM>sub</EM>,
+ or -1 if <EM>sub</EM> was not matched.&nbsp; Note that if this represents a <A href="partial_matches.html">
+ partial match</A> , then <code>position()</code> will return the location of
+ the partial match even though <code>(*this)[0].matched</code> is <EM>false</EM>.</p>
+ <pre><A name=m6></A>
+string_type str(int sub = 0)const;
+</pre>
+ <b></b>
+ <p><b>Effects:</b> Returns sub-expression <EM>sub</EM> as a string:&nbsp; <code>string_type((*this)[sub]).</code></p>
+ <pre><A name=m7></A>
+const_reference operator[](int n) const;
+</pre>
+ <b></b>
+ <p><b>Effects:</b> Returns a reference to the <code>sub_match</code> object
+ representing the character sequence that matched marked sub-expression <i>n</i>.
+ If <code>n == 0</code> then returns a reference to a <code>sub_match</code> object
+ representing the character sequence that matched the whole regular
+ expression.&nbsp; If <EM>n</EM> is out of range, or if <EM>n</EM> is an
+ unmatched sub-expression, then returns a sub_match object whose <EM>matched</EM>
+ member is <EM>false</EM>.</p>
+ <pre><A name=m8></A>
+const_reference prefix()const;
+</pre>
+ <b></b>
+ <p><b>Effects:</b> Returns a reference to the <code>sub_match</code> object
+ representing the character sequence from the start of the string being
+ matched/searched, to the start of the match found.</p>
+ <pre><A name=m9></A>
+const_reference suffix()const;
+</pre>
+ <b></b>
+ <p><b>Effects:</b> Returns a reference to the <code>sub_match</code> object
+ representing the character sequence from the end of the match found to the end
+ of the string being matched/searched.</p>
+ <pre><A name=m10></A>
+const_iterator begin()const;
+</pre>
+ <b></b>
+ <p><b>Effects:</b> Returns a starting iterator that enumerates over all the marked
+ sub-expression matches stored in *this.</p>
+ <pre><A name=m11></A>
+const_iterator end()const;
+</pre>
+ <b></b>
+ <p><b>Effects:</b> Returns a terminating iterator that enumerates over all the
+ marked sub-expression matches stored in *this.</p>
+ <h4><A name="format"></A>match_results reformatting</h4>
+ <pre><A name=m12></A>template &lt;class OutputIterator&gt;
+OutputIterator format(OutputIterator out,
+ const string_type&amp; fmt,
+ match_flag_type flags = format_default);
+</pre>
+ <b></b>
+ <p><b>Requires:</b> The type OutputIterator conforms to the Output Iterator
+ requirements (24.1.2).</p>
+ <b></b>
+ <p><b>Effects:</b> Copies the character sequence <i>[fmt.begin(), fmt.end())</i> to
+ OutputIterator <i>out</i>. For each format specifier or escape sequence in <i>fmt</i>,
+ replace that sequence with either the character(s) it represents, or the
+ sequence of characters within *this to which it refers. The bitmasks specified
+ in <i>flags</i> determines what <A href="format_syntax.html">
+ format specifiers or escape sequences are recognized</A>, by default this is
+ the format used by ECMA-262, ECMAScript Language Specification, Chapter 15 part
+ 5.4.11 String.prototype.replace.</p>
+ <b></b>
+ <p><b>Returns:</b> <i>out</i>.</p>
+ <pre><A name=m13></A>
+string_type format(const string_type&amp; fmt,
+ match_flag_type flags = format_default);
+</pre>
+ <b></b>
+ <p><b>Effects:</b> Returns a copy of the string <i>fmt</i>. For each format
+ specifier or escape sequence in <i>fmt</i>, replace that sequence with either
+ the character(s) it represents, or the sequence of characters within *this to
+ which it refers. The bitmasks specified in <i>flags</i>
+ determines what <A href="format_syntax.html">format specifiers or escape sequences
+ are recognized</A>, by default this is the format used by ECMA-262,
+ ECMAScript Language Specification, Chapter 15 part 5.4.11
+ String.prototype.replace.</p>
+ <H4>Allocator access</H4>
+ <pre><A name=m14>allocator_type get_allocator()const;
+</pre>
+ <b></b>
+ <p><b>Effects:</b> Returns a copy of the Allocator that was passed to the object's
+ constructor.</p>
+ <H4><A name="m15"></A>Swap</H4>
+ <PRE>void swap(match_results&amp; that);
+</PRE>
+ <b></b>
+ <p><b>Effects:</b> Swaps the contents of the two sequences.</p>
+ <b></b>
+ <p><b>Postcondition:</b> <code>*this</code> contains the sequence of matched
+ sub-expressions that were in <code>that</code>, <code>that</code> contains the
+ sequence of matched sub-expressions that were in <code>*this</code>.</p>
+ <b></b>
+ <p><b>Complexity:</b> constant time.</p>
+ <H4>Captures</H4>
+ <PRE><A name=m16></A>typedef typename value_type::capture_sequence_type capture_sequence_type;</PRE>
+ <P>Defines an implementation-specific type that&nbsp;satisfies the requirements of
+ a standard library Sequence (21.1.1 including the optional Table 68
+ operations),&nbsp;whose value_type is a <EM>sub_match&lt;BidirectionalIterator&gt;</EM>.&nbsp;This
+ type happens to be <EM>std::vector&lt;sub_match&lt;BidirectionalIterator&gt; &gt;</EM>,
+ but you shouldn't actually rely on that.</P>
+ <PRE><A name=m17></A>const capture_sequence_type&amp; captures(std::size_t i)const; </PRE>
+ <P><STRONG>Effects:</STRONG> returns a sequence containing all the captures
+ obtained for sub-expression <EM>i</EM>.</P>
+ <P><STRONG>Returns:</STRONG> <code>(*this)[i].captures();</code></P>
+ <P><STRONG>Preconditions:</STRONG> the library must be built and used with
+ BOOST_REGEX_MATCH_EXTRA defined, and you must pass the flag <A href="match_flag_type.html">
+ match_extra</A> to the regex matching functions (regex_match,
+ regex_search, regex_iterator
+ or regex_token_iterator) in order for
+ this member function to be defined and return useful information.</P>
+ <P><STRONG>Rationale:</STRONG> Enabling this feature has several consequences:
+ </P>
+ <UL>
+ <LI>
+ sub_match occupies more memory resulting in complex expressions running out of
+ memory or stack space more quickly during matching.
+ <LI>
+ The matching algorithms are less efficient at handling some features
+ (independent sub-expressions for example), even when match_extra is not used.
+ <LI>
+ The matching algorithms are much less efficient (i.e. slower), when match_extra
+ is used.&nbsp; Mostly this is down to the extra memory allocations that have to
+ take place.</LI></UL>
+ <h4>match_results non-members</h4>
+ <PRE><A name=n1></A>template &lt;class BidirectionalIterator, class Allocator&gt;
+bool operator == (const match_results&lt;BidirectionalIterator, Allocator&gt;&amp; m1,
+ const match_results&lt;BidirectionalIterator, Allocator&gt;&amp; m2);</PRE>
+ <P><B>Effects:</B> Compares the two sequences for equality.</P>
+ <PRE><A name=n2></A>template &lt;class BidirectionalIterator, class Allocator&gt;
+bool operator != (const match_results&lt;BidirectionalIterator, Allocator&gt;&amp; m1,
+ const match_results&lt;BidirectionalIterator, Allocator&gt;&amp; m2);</PRE>
+ <P><B>Effects:</B> Compares the two sequences for inequality.</P>
+ <PRE><A name=n3></A>template &lt;class charT, class traits, class BidirectionalIterator, class Allocator&gt;
+basic_ostream&lt;charT, traits&gt;&amp;
+ operator &lt;&lt; (basic_ostream&lt;charT, traits&gt;&amp; os,
+ const match_results&lt;BidirectionalIterator, Allocator&gt;&amp; m);</PRE>
+ <P><B>Effects:</B> Writes the contents of <EM>m</EM> to the stream <EM>os</EM> as
+ if by calling <code>os &lt;&lt; m.str();</code> Returns <EM>os</EM>..</P>
+ <PRE><A name=n4></A>template &lt;class BidirectionalIterator, class Allocator&gt;
+void swap(match_results&lt;BidirectionalIterator, Allocator&gt;&amp; m1,
+ match_results&lt;BidirectionalIterator, Allocator&gt;&amp; m2);</PRE>
+ <P><B>Effects:</B> Swaps the contents of the two sequences.</P>
+ <p></p>
+ <hr>
+ <p>Revised
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->
+ 24 Oct 2003
+ <!--webbot bot="Timestamp" endspan i-checksum="39359" --></p>
+ <p><i>© Copyright John Maddock&nbsp;1998-
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%Y" startspan --> 2003<!--webbot bot="Timestamp" endspan i-checksum="39359" --></i></p>
+ <P><I>Use, modification and distribution are subject to the Boost Software License,
+ Version 1.0. (See accompanying file LICENSE_1_0.txt
+ or copy at http://www.boost.org/LICENSE_1_0.txt)</I></P>
+ </body>
+</html>

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/doc/mfc_strings.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/doc/mfc_strings.html 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,294 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+ <head>
+ <title>Boost.Regex: Working With MFC/ATL String Types</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <LINK href="../../../boost.css" type="text/css" rel="stylesheet"></head>
+ <body>
+ <P>
+ <TABLE id="Table1" cellSpacing="1" cellPadding="1" width="100%" border="0">
+ <TR>
+ <td vAlign="top" width="300">
+ <h3>C++ Boost</h3>
+ </td>
+ <TD width="353">
+ <H1 align="center">Boost.Regex</H1>
+ <H2 align="center">Working With MFC/ATL String Types.</H2>
+ </TD>
+ <td width="50">
+ <h3>Boost.Regex Index</h3>
+ </td>
+ </TR>
+ </TABLE>
+ </P>
+ <HR>
+ <H3>Contents</H3>
+ <dl class="index">
+ <dt>Introduction <dt>Types <dt><A href="#create">Regular
+ Expression Creation</A> <dt>Overloaded Algorithms
+ <dd>
+ <dl>
+ <dt>regex_match <dt>regex_search
+ <dt>regex_replace </dt>
+ </dl>
+ <dt>Iterators
+ <dd>
+ <dl>
+ <dt>regex_iterator creation helper <dt><A href="#regex_token_iterator">
+ regex_token_iterator creation helpers</A></dt>
+ </dl>
+ </dd>
+ </dl>
+ <H3><a name="intro"></a>Introduction</H3>
+ <P>The header &lt;boost/regex/mfc.hpp&gt; provides Boost.Regex support for MFC
+ string types: note that this support requires Visual Studio .NET (Visual C++ 7)
+ or later, where all of the MFC and ATL string types are based around
+ the&nbsp;CSimpleStringT class template.&nbsp;</P>
+ <P>In the following documentation, whenever you see CSimpleStringT&lt;charT&gt;,
+ then you can substitute any of the following MFC/ATL types (all of which
+ inherit from&nbsp;CSimpleStringT):</P>
+ <P>CString<BR>
+ CStringA<BR>
+ CStringW<BR>
+ CAtlString<BR>
+ CAtlStringA<BR>
+ CAtlStringW<BR>
+ CStringT&lt;charT,traits&gt;<BR>
+ CFixedStringT&lt;charT,N&gt;<BR>
+ CSimpleStringT&lt;charT&gt;</B></P>
+ <H3><A name="types"></A>Types</H3>
+ <P>The following typedefs are provided for the convenience of those working with
+ TCHAR's:</P>
+ <PRE>typedef basic_regex&lt;TCHAR&gt; tregex;
+typedef match_results&lt;TCHAR const*&gt; tmatch;
+typedef regex_iterator&lt;TCHAR const*&gt; tregex_iterator;
+typedef regex_token_iterator&lt;TCHAR const*&gt; tregex_token_iterator;
+</PRE>
+ <P>If you are working with explicitly narrow or wide characters rather than TCHAR,
+ then use the regular Boost.Regex types instead.</P>
+ <H3><A name="create"></A>Regular Expression Creation</H3>
+ <P>The following helper function is available to assist in the creation of a
+ regular expression from an MFC/ATL string type:</P>
+ <pre>template &lt;class charT&gt;
+basic_regex&lt;charT&gt;
+ make_regex(const ATL::CSimpleStringT&lt;charT&gt;&amp; s,
+ ::boost::regex_constants::syntax_option_type f = boost::regex_constants::normal);</pre>
+ <P><STRONG>Effects</STRONG>: returns basic_regex&lt;charT&gt;(s.GetString(),
+ s.GetString() + s.GetLength(), f);</P>
+ <H3><A name="algo"></A>Overloaded Algorithms</H3>
+ <P>For each regular expression algorithm that's overloaded for a std::basic_string
+ argument, there is also one overloaded for the MFC/ATL string types.&nbsp;
+ These algorithm signatures&nbsp;all look a lot more complex than they actually
+ are, but for completeness here they are anyway:</P>
+ <H4><A name="regex_match"></A>regex_match</H4>
+ <P>There are two overloads, the first reports what matched in a match_results
+ structure, the second does not.&nbsp;
+ </P>
+ <P>All the usual caveats for regex_match apply, in
+ particular the algorithm will only report a successful match if <STRONG>all of the
+ input text matches the expression</STRONG>, if this isn't what you want then
+ use regex_search instead.</P>
+ <PRE>template &lt;class charT, class T, class A&gt;
+bool regex_match(
+ const ATL::CSimpleStringT&lt;charT&gt;&amp; s,
+ match_results&lt;const B*, A&gt;&amp; what,
+ const basic_regex&lt;charT, T&gt;&amp; e,
+ boost::regex_constants::match_flag_type f = boost::regex_constants::match_default); </PRE>
+ <P>
+ <P><STRONG>Effects</STRONG>: returns ::boost::regex_match(s.GetString(),
+ s.GetString() + s.GetLength(), what, e, f);</P>
+ <p><strong>Example:</strong></p>
+ <pre>//
+// Extract filename part of a path from a CString and return the result
+// as another CString:
+//
+CString get_filename(const CString&amp; path)
+{
+ boost::tregex r(__T("(?:\\A|.*\\\\)([^\\\\]+)"));
+ boost::tmatch what;
+ if(boost::regex_match(path, what, r))
+ {
+ // extract $1 as a CString:
+ return CString(what[1].first, what.length(1));
+ }
+ else
+ {
+ throw std::runtime_error("Invalid pathname");
+ }
+}
+ </pre>
+ <hr>
+ <PRE>template &lt;class charT, class T&gt;
+bool regex_match(
+ const ATL::CSimpleStringT&lt;charT&gt;&amp; s,
+ const basic_regex&lt;B, T&gt;&amp; e,
+ boost::regex_constants::match_flag_type f = boost::regex_constants::match_default)</PRE>
+ <P>
+ <P><STRONG>Effects</STRONG>: returns ::boost::regex_match(s.GetString(),
+ s.GetString() + s.GetLength(), e, f);</P>
+ <p><strong>Example:</strong></p>
+ <pre>//
+// Find out if *password* meets our password requirements,
+// as defined by the regular expression *requirements*.
+//
+bool is_valid_password(const CString&amp; password, const CString&amp; requirements)
+{
+ return boost::regex_match(password, boost::make_regex(requirements));
+} </pre>
+ <hr>
+ <H4><A name="regex_search"></A>regex_search</H4>
+ <P>There are two additional overloads for regex_search,
+ the first reports what matched the second does not:</P>
+ <PRE>template &lt;class charT, class A, class T&gt;
+bool regex_search(const ATL::CSimpleStringT&lt;charT&gt;&amp; s,
+ match_results&lt;const charT*, A&gt;&amp; what,
+ const basic_regex&lt;charT, T&gt;&amp; e,
+ boost::regex_constants::match_flag_type f = boost::regex_constants::match_default)</PRE>
+ <P><STRONG>Effects</STRONG>: returns ::boost::regex_search(s.GetString(),
+ s.GetString() + s.GetLength(), what, e, f);</P>
+ <P><STRONG>Example:</STRONG>: Postcode extraction from an address string.</P>
+ <pre>CString extract_postcode(const CString&amp; address)
+{
+ // searches throw address for a UK postcode and returns the result,
+ // the expression used is by Phil A. on www.regxlib.com:
+ boost::tregex r(__T("^(([A-Z]{1,2}[0-9]{1,2})|([A-Z]{1,2}[0-9][A-Z]))\\s?([0-9][A-Z]{2})$"));
+ boost::tmatch what;
+ if(boost::regex_search(address, what, r))
+ {
+ // extract $0 as a CString:
+ return CString(what[0].first, what.length());
+ }
+ else
+ {
+ throw std::runtime_error("No postcode found");
+ }
+} </pre>
+ <hr>
+ <pre>template &lt;class charT, class T&gt;
+inline bool regex_search(const ATL::CSimpleStringT&lt;charT&gt;&amp; s,
+ const basic_regex&lt;charT, T&gt;&amp; e,
+ boost::regex_constants::match_flag_type f = boost::regex_constants::match_default)
+</pre>
+ <P><STRONG>Effects</STRONG>: returns ::boost::regex_search(s.GetString(),
+ s.GetString() + s.GetLength(), e, f);</P>
+ <hr>
+ <H4><A name="regex_replace"></A>regex_replace</H4>
+ <P>There are two additional overloads for regex_replace,
+ the first sends output to an output iterator, while the second creates a new
+ string</P>
+ <PRE>template &lt;class OutputIterator, class BidirectionalIterator, class traits, class
+ charT&gt;
+OutputIterator regex_replace(OutputIterator out,
+ BidirectionalIterator first,
+ BidirectionalIterator last,
+ const basic_regex&lt;charT, traits&gt;&amp; e,
+ const ATL::CSimpleStringT&lt;charT&gt;&amp; fmt,
+ match_flag_type flags = match_default)
+</PRE>
+ <P><STRONG>Effects</STRONG>: returns ::boost::regex_replace(out,
+ first, last, e, fmt.GetString(), flags);</P>
+ <pre>template &lt;class traits, charT&gt;
+ATL::CSimpleStringT&lt;charT&gt; regex_replace(const ATL::CSimpleStringT&lt;charT&gt;&amp; s,
+ const basic_regex&lt;charT, traits&gt;&amp; e,
+ const ATL::CSimpleStringT&lt;charT&gt;&amp; fmt,
+ match_flag_type flags = match_default)</pre>
+ <P><STRONG>Effects</STRONG>: returns a new string created using <A href="regex_replace.html">
+ regex_replace</A>, and the same memory manager as string <EM>s</EM>.</P>
+ <P><STRONG>Example:</STRONG></P>
+ <PRE>//
+// Take a credit card number as a string of digits,
+// and reformat it as a human readable string with "-"
+// separating each group of four digits:
+//
+const boost::tregex e(__T("\\A(\\d{3,4})[- ]?(\\d{4})[- ]?(\\d{4})[- ]?(\\d{4})\\z"));
+const CString human_format = __T("$1-$2-$3-$4");
+
+CString human_readable_card_number(const CString&amp; s)
+{
+ return boost::regex_replace(s, e, human_format);
+}
+ </PRE>
+ <H3><a name="iterators"></a>Iterators</H3>
+ <P>The following helper functions are provided to ease the conversion from an
+ MFC/ATL string to a regex_iterator or <A href="regex_token_iterator.html">
+ regex_token_iterator</A>:</P>
+ <H4><A name="regex_iterator"></A>regex_iterator creation helper</H4>
+ <PRE>template &lt;class charT&gt;
+regex_iterator&lt;charT const*&gt;
+ make_regex_iterator(
+ const ATL::CSimpleStringT&lt;charT&gt;&amp; s,
+ const basic_regex&lt;charT&gt;&amp; e,
+ ::boost::regex_constants::match_flag_type f = boost::regex_constants::match_default);
+</PRE>
+ <p><STRONG>Effects:</STRONG>returns regex_iterator(s.GetString(),
+ s.GetString() + s.GetLength(), e, f);</p>
+ <p><strong>Example:</strong></p>
+ <pre>void enumerate_links(const CString&amp; html)
+{
+ // enumerate and print all the <a> links in some HTML text,
+ // the expression used is by Andew Lee on www.regxlib.com:
+ boost::tregex r(__T("href=[\"\']((http:\\/\\/|\\.\\/|\\/)?\\w+(\\.\\w+)*(\\/\\w+(\\.\\w+)?)*(\\/|\\?\\w*=\\w*(&amp;\\w*=\\w*)*)?)[\"\']"));
+ boost::tregex_iterator i(boost::make_regex_iterator(html, r)), j;
+ while(i != j)
+ {
+ std::cout &lt;&lt; (*i)[1] &lt;&lt; std::endl;
+ ++i;
+ }
+}
+ </pre>
+ <hr>
+ <H4><A name="regex_token_iterator"></A>regex_token_iterator creation helpers</H4>
+ <PRE>template &lt;class charT&gt;
+regex_token_iterator&lt;charT const*&gt;
+ make_regex_token_iterator(
+ const ATL::CSimpleStringT&lt;charT&gt;&amp; s,
+ const basic_regex&lt;charT&gt;&amp; e,
+ int sub = 0,
+ ::boost::regex_constants::match_flag_type f = boost::regex_constants::match_default);
+</PRE>
+ <p><STRONG>Effects:</STRONG>returns regex_token_iterator(s.GetString(),
+ s.GetString() + s.GetLength(), e, sub, f);</p>
+ <pre>template &lt;class charT&gt;
+regex_token_iterator&lt;charT const*&gt;
+ make_regex_token_iterator(
+ const ATL::CSimpleStringT&lt;charT&gt;&amp; s,
+ const basic_regex&lt;charT&gt;&amp; e,
+ const std::vector&lt;int&gt;&amp; subs,
+ ::boost::regex_constants::match_flag_type f = boost::regex_constants::match_default);
+</pre>
+ <p><STRONG>Effects:</STRONG>returns regex_token_iterator(s.GetString(),
+ s.GetString() + s.GetLength(), e, subs, f);</p>
+ <pre>template &lt;class charT, std::size_t N&gt;
+regex_token_iterator&lt;charT const*&gt;
+ make_regex_token_iterator(
+ const ATL::CSimpleStringT&lt;charT&gt;&amp; s,
+ const basic_regex&lt;charT&gt;&amp; e,
+ const int (&amp; subs)[N],
+ ::boost::regex_constants::match_flag_type f = boost::regex_constants::match_default);
+</pre>
+ <p><STRONG>Effects: </STRONG>returns regex_token_iterator(s.GetString(),
+ s.GetString() + s.GetLength(), e, subs, f);</p>
+ <P><STRONG>Example:</STRONG></P>
+ <PRE>void enumerate_links2(const CString&amp; html)
+{
+ // enumerate and print all the <a> links in some HTML text,
+ // the expression used is by Andew Lee on www.regxlib.com:
+ boost::tregex r(__T("href=[\"\']((http:\\/\\/|\\.\\/|\\/)?\\w+(\\.\\w+)*(\\/\\w+(\\.\\w+)?)*(\\/|\\?\\w*=\\w*(&amp;\\w*=\\w*)*)?)[\"\']"));
+ boost::tregex_token_iterator i(boost::make_regex_token_iterator(html, r, 1)), j;
+ while(i != j)
+ {
+ std::cout &lt;&lt; *i &lt;&lt; std::endl;
+ ++i;
+ }
+} </PRE>
+ <HR>
+ <p>Revised&nbsp;
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->
+ 21&nbsp;Dec 2004
+ <!--webbot bot="Timestamp" endspan i-checksum="39359" --></p>
+ <p><i>© Copyright John Maddock&nbsp;2004</i></p>
+ <P><I>Use, modification and distribution are subject to the Boost Software License,
+ Version 1.0. (See accompanying file LICENSE_1_0.txt
+ or copy at http://www.boost.org/LICENSE_1_0.txt)</I></P>
+ </body>
+</html>

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/doc/non_standard_strings.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/doc/non_standard_strings.html 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,53 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+ <head>
+ <title>Boost.Regex: Working With Non-Standard String Types</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <link rel="stylesheet" type="text/css" href="../../../boost.css">
+ </head>
+ <body>
+ <P>
+ <TABLE id="Table1" cellSpacing="1" cellPadding="1" width="100%" border="0">
+ <TR>
+ <td valign="top" width="300">
+ <h3>C++ Boost</h3>
+ </td>
+ <TD width="353">
+ <H1 align="center">Boost.Regex</H1>
+ <H2 align="center">Working With Non-Standard String Types.</H2>
+ </TD>
+ <td width="50">
+ <h3>Boost.Regex Index</h3>
+ </td>
+ </TR>
+ </TABLE>
+ </P>
+ <HR>
+ <p></p>
+ <P>The Boost.Regex algorithms and iterators are all iterator-based, with
+ convenience overloads of the algorithms provided that convert standard library
+ string types to iterator pairs internally.&nbsp; If you want to search a
+ non-standard string type then the trick is to convert that string into an
+ iterator pair: so far I haven't come across any string types that can't be
+ handled this way, even if they're not officially iterator based.&nbsp;
+ Certainly any string type that provides access to it's internal buffer, along
+ with it's length, can be converted into a pair of pointers (which can be used
+ as iterators).</P>
+ <P>Some non-standard string types are sufficiently common that wappers have been
+ provided for them:</P>
+ <P>MFC/ATL Strings.<BR>
+ ICU Strings.</P>
+ <P>
+ <HR>
+ <P></P>
+ <p>Revised
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->
+ 24 Nov 2004
+ <!--webbot bot="Timestamp" endspan i-checksum="39359" --></p>
+ <p><i>© Copyright John Maddock&nbsp;1998-
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%Y" startspan --> 2004<!--webbot bot="Timestamp" endspan i-checksum="39359" --></i></p>
+ <P><I>Use, modification and distribution are subject to the Boost Software License,
+ Version 1.0. (See accompanying file LICENSE_1_0.txt
+ or copy at http://www.boost.org/LICENSE_1_0.txt)</I></P>
+ </body>
+</html>

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/doc/partial_matches.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/doc/partial_matches.html 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,195 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+ <head>
+ <title>Boost.Regex: Partial Matches</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <link rel="stylesheet" type="text/css" href="../../../boost.css">
+ </head>
+ <body>
+ <P>
+ <TABLE id="Table1" cellSpacing="1" cellPadding="1" width="100%" border="0">
+ <TR>
+ <td valign="top" width="300">
+ <h3>C++ Boost</h3>
+ </td>
+ <TD width="353">
+ <H1 align="center">Boost.Regex</H1>
+ <H2 align="center">Partial Matches</H2>
+ </TD>
+ <td width="50">
+ <h3>Boost.Regex Index</h3>
+ </td>
+ </TR>
+ </TABLE>
+ </P>
+ <HR>
+ <p></p>
+ <P>The match-flag <CODE>match_partial</CODE> can
+ be passed to the following algorithms: regex_match,
+ regex_search, and regex_grep,
+ and used with the iterator regex_iterator.
+ When used it indicates that partial as well as full matches should be found. A
+ partial match is one that matched one or more characters at the end of the text
+ input, but did not match all of the regular expression (although it may have
+ done so had more input been available). Partial matches are typically used when
+ either validating data input (checking each character as it is entered on the
+ keyboard), or when searching texts that are either too long to load into memory
+ (or even into a memory mapped file), or are of indeterminate length (for
+ example the source may be a socket or similar). Partial and full matches can be
+ differentiated as shown in the following table (the variable M represents an
+ instance of match_results<> as filled in
+ by regex_match, regex_search or regex_grep):<BR>
+ </P>
+ <P>
+ <TABLE id="Table2" cellSpacing="0" cellPadding="7" width="100%" border="0">
+ <TR>
+ <TD vAlign="top" width="20%">&nbsp;</TD>
+ <TD vAlign="top" width="20%">Result</TD>
+ <TD vAlign="top" width="20%">M[0].matched</TD>
+ <TD vAlign="top" width="20%">M[0].first</TD>
+ <TD vAlign="top" width="20%">M[0].second</TD>
+ </TR>
+ <TR>
+ <TD vAlign="top" width="20%">No match</TD>
+ <TD vAlign="top" width="20%">False</TD>
+ <TD vAlign="top" width="20%">Undefined</TD>
+ <TD vAlign="top" width="20%">Undefined</TD>
+ <TD vAlign="top" width="20%">Undefined</TD>
+ </TR>
+ <TR>
+ <TD vAlign="top" width="20%">Partial match</TD>
+ <TD vAlign="top" width="20%">True</TD>
+ <TD vAlign="top" width="20%">False</TD>
+ <TD vAlign="top" width="20%">Start of partial match.</TD>
+ <TD vAlign="top" width="20%">End of partial match (end of text).</TD>
+ </TR>
+ <TR>
+ <TD vAlign="top" width="20%">Full match</TD>
+ <TD vAlign="top" width="20%">True</TD>
+ <TD vAlign="top" width="20%">True</TD>
+ <TD vAlign="top" width="20%">Start of full match.</TD>
+ <TD vAlign="top" width="20%">End of full match.</TD>
+ </TR>
+ </TABLE>
+ </P>
+ <P>Be aware that using partial matches can sometimes result in somewhat imperfect
+ behavior:</P>
+ <UL>
+ <LI>
+ There are some expressions, such as ".*abc" that will always produce a partial
+ match.&nbsp; This problem can be reduced by careful construction of the regular
+ expressions used, or by setting flags like match_not_dot_newline so that
+ expressions like .* can't match past line boundaries.</LI>
+ <LI>
+ Boost.Regex currently prefers leftmost matches to full matches, so for example
+ matching "abc|b" against "ab" produces a partial match&nbsp;against the "ab"
+ rather than a full match against "b".&nbsp; It's more efficient to work this
+ way, but may not be the behavior you want in all situations.</LI></UL>
+ <P>The following example
+ tests to see whether the text could be a valid credit card number, as the user
+ presses a key, the character entered would be added to the string being built
+ up, and passed to <CODE>is_possible_card_number</CODE>. If this returns true
+ then the text could be a valid card number, so the user interface's OK button
+ would be enabled. If it returns false, then this is not yet a valid card
+ number, but could be with more input, so the user interface would disable the
+ OK button. Finally, if the procedure throws an exception the input could never
+ become a valid number, and the inputted character must be discarded, and a
+ suitable error indication displayed to the user.</P>
+ <PRE>#include &lt;string&gt;
+#include &lt;iostream&gt;
+#include &lt;boost/regex.hpp&gt;
+
+boost::regex e("(\\d{3,4})[- ]?(\\d{4})[- ]?(\\d{4})[- ]?(\\d{4})");
+
+bool is_possible_card_number(const std::string&amp; input)
+{
+ //
+ // return false for partial match, true for full match, or throw for
+ // impossible match based on what we have so far...
+ boost::match_results&lt;std::string::const_iterator&gt; what;
+ if(0 == boost::regex_match(input, what, e, boost::match_default | boost::match_partial))
+ {
+ // the input so far could not possibly be valid so reject it:
+ throw std::runtime_error("Invalid data entered - this could not possibly be a valid card number");
+ }
+ // OK so far so good, but have we finished?
+ if(what[0].matched)
+ {
+ // excellent, we have a result:
+ return true;
+ }
+ // what we have so far is only a partial match...
+ return false;
+}</PRE>
+ <P>In the following example,
+ text input is taken from a stream containing an unknown amount of text; this
+ example simply counts the number of html tags encountered in the stream. The
+ text is loaded into a buffer and searched a part at a time, if a partial match
+ was encountered, then the partial match gets searched a second time as the
+ start of the next batch of text:</P>
+ <PRE>#include &lt;iostream&gt;
+#include &lt;fstream&gt;
+#include &lt;sstream&gt;
+#include &lt;string&gt;
+#include &lt;boost/regex.hpp&gt;
+
+// match some kind of html tag:
+boost::regex e("&lt;[^&gt;]*&gt;");
+// count how many:
+unsigned int tags = 0;
+// saved position of partial match:
+char* next_pos = 0;
+
+bool grep_callback(const boost::match_results&lt;char*&gt;&amp; m)
+{
+ if(m[0].matched == false)
+ {
+ // save position and return:
+ next_pos = m[0].first;
+ }
+ else
+ ++tags;
+ return true;
+}
+
+void search(std::istream&amp; is)
+{
+ char buf[4096];
+ next_pos = buf + sizeof(buf);
+ bool have_more = true;
+ while(have_more)
+ {
+ // how much do we copy forward from last try:
+ unsigned leftover = (buf + sizeof(buf)) - next_pos;
+ // and how much is left to fill:
+ unsigned size = next_pos - buf;
+ // copy forward whatever we have left:
+ memcpy(buf, next_pos, leftover);
+ // fill the rest from the stream:
+ unsigned read = is.readsome(buf + leftover, size);
+ // check to see if we've run out of text:
+ have_more = read == size;
+ // reset next_pos:
+ next_pos = buf + sizeof(buf);
+ // and then grep:
+ boost::regex_grep(grep_callback,
+ buf,
+ buf + read + leftover,
+ e,
+ boost::match_default | boost::match_partial);
+ }
+}</PRE>
+ <P>
+ <HR>
+ <P></P>
+ <p>Revised
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->
+ 24 Oct 2003
+ <!--webbot bot="Timestamp" endspan i-checksum="39359" --></p>
+ <p><i>© Copyright John Maddock&nbsp;1998-
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%Y" startspan --> 2003<!--webbot bot="Timestamp" endspan i-checksum="39359" --></i></p>
+ <P><I>Use, modification and distribution are subject to the Boost Software License,
+ Version 1.0. (See accompanying file LICENSE_1_0.txt
+ or copy at http://www.boost.org/LICENSE_1_0.txt)</I></P>
+ </body>
+</html>

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/doc/performance.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/doc/performance.html 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,52 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+ <head>
+ <title>Boost.Regex: Performance</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <link rel="stylesheet" type="text/css" href="../../../boost.css">
+ </head>
+ <body>
+ <P>
+ <TABLE id="Table1" cellSpacing="1" cellPadding="1" width="100%" border="0">
+ <TR>
+ <td valign="top" width="300">
+ <h3>C++ Boost</h3>
+ </td>
+ <TD width="353">
+ <H1 align="center">Boost.Regex</H1>
+ <H2 align="center">Performance</H2>
+ </TD>
+ <td width="50">
+ <h3>Boost.Regex Index</h3>
+ </td>
+ </TR>
+ </TABLE>
+ </P>
+ <HR>
+ <p></p>
+ <P>The performance of Boost.regex in both recursive and non-recursive modes should
+ be broadly comparable to other regular expression libraries: recursive mode is
+ slightly faster (especially where memory allocation requires thread
+ synchronisation), but not by much.&nbsp; The following pages compare
+ Boost.regex with various other regular expression libraries for the following
+ compilers:</P>
+ <P><A href="vc71-performance.html">Visual Studio.Net 2003 (recursive Boost.regex
+ implementation)</A>.</P>
+ <P><A href="gcc-performance.html">Gcc 3.2 (cygwin) (non-recursive Boost.regex
+ implementation).</A></P>
+ <P>
+ <HR>
+ <P></P>
+ <p>Revised
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->
+ 24 Oct 2003
+ <!--webbot bot="Timestamp" endspan i-checksum="39359" --></p>
+ <p><i>© Copyright John Maddock&nbsp;1998-
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%Y" startspan -->
+ 2003<!--webbot bot="Timestamp" endspan i-checksum="39359" --></i></p>
+ <P><I>Use, modification and distribution are subject to the Boost Software License,
+ Version 1.0. (See accompanying file LICENSE_1_0.txt
+ or copy at http://www.boost.org/LICENSE_1_0.txt)</I></P>
+ </body>
+</html>
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/doc/posix_api.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/doc/posix_api.html 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,286 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+ <head>
+ <title>Boost.Regex: POSIX API Compatibility Functions</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <link rel="stylesheet" type="text/css" href="../../../boost.css">
+ </head>
+ <body>
+ <P>
+ <TABLE id="Table1" cellSpacing="1" cellPadding="1" width="100%" border="0">
+ <TR>
+ <td valign="top" width="300">
+ <h3>C++ Boost</h3>
+ </td>
+ <TD width="353">
+ <H1 align="center">Boost.Regex</H1>
+ <H2 align="center">POSIX API Compatibility Functions</H2>
+ </TD>
+ <td width="50">
+ <h3>Boost.Regex Index</h3>
+ </td>
+ </TR>
+ </TABLE>
+ </P>
+ <HR>
+ <p></p>
+ <PRE>#include &lt;boost/cregex.hpp&gt;
+<I>or</I>:
+#include &lt;boost/regex.h&gt;</PRE>
+ <P>The following functions are available for users who need a POSIX compatible C
+ library, they are available in both Unicode and narrow character versions, the
+ standard POSIX API names are macros that expand to one version or the other
+ depending upon whether UNICODE is defined or not.
+ </P>
+ <P><B>Important</B>: Note that all the symbols defined here are enclosed inside
+ namespace <I>boost</I> when used in C++ programs, unless you use #include
+ &lt;boost/regex.h&gt; instead - in which case the symbols are still defined in
+ namespace boost, but are made available in the global namespace as well.</P>
+ <P>The functions are defined as:
+ </P>
+ <PRE>extern "C" {
+<B>int</B> regcompA(regex_tA*, <B>const</B> <B>char</B>*, <B>int</B>);
+<B>unsigned</B> <B>int</B> regerrorA(<B>int</B>, <B>const</B> regex_tA*, <B>char</B>*, <B>unsigned</B> <B>int</B>);
+<B>int</B> regexecA(<B>const</B> regex_tA*, <B>const</B> <B>char</B>*, <B>unsigned</B> <B>int</B>, regmatch_t*, <B>int</B>);
+<B>void</B> regfreeA(regex_tA*);
+
+<B>int</B> regcompW(regex_tW*, <B>const</B> <B>wchar_t</B>*, <B>int</B>);
+<B>unsigned</B> <B>int</B> regerrorW(<B>int</B>, <B>const</B> regex_tW*, <B>wchar_t</B>*, <B>unsigned</B> <B>int</B>);
+<B>int</B> regexecW(<B>const</B> regex_tW*, <B>const</B> <B>wchar_t</B>*, <B>unsigned</B> <B>int</B>, regmatch_t*, <B>int</B>);
+<B>void</B> regfreeW(regex_tW*);
+
+#ifdef UNICODE
+#define regcomp regcompW
+#define regerror regerrorW
+#define regexec regexecW
+#define regfree regfreeW
+#define regex_t regex_tW
+#else
+#define regcomp regcompA
+#define regerror regerrorA
+#define regexec regexecA
+#define regfree regfreeA
+#define regex_t regex_tA
+#endif
+}</PRE>
+ <P>All the functions operate on structure <B>regex_t</B>, which exposes two public
+ members:
+ </P>
+ <P><B>unsigned int re_nsub</B> this is filled in by <B>regcomp</B> and indicates
+ the number of sub-expressions contained in the regular expression.
+ </P>
+ <P><B>const TCHAR* re_endp</B> points to the end of the expression to compile when
+ the flag REG_PEND is set.
+ </P>
+ <P><I>Footnote: regex_t is actually a #define - it is either regex_tA or regex_tW
+ depending upon whether UNICODE is defined or not, TCHAR is either char or
+ wchar_t again depending upon the macro UNICODE.</I>
+ </P>
+ <H3>regcomp</H3>
+ <P><B>regcomp</B> takes a pointer to a <B>regex_t</B>, a pointer to the expression
+ to compile and a flags parameter which can be a combination of:
+ <BR>
+ &nbsp;
+ </P>
+ <P>
+ <TABLE id="Table2" cellSpacing="0" cellPadding="7" width="100%" border="0">
+ <TR>
+ <TD width="5%">&nbsp;</TD>
+ <TD vAlign="top" width="45%">REG_EXTENDED</TD>
+ <TD vAlign="top" width="45%">Compiles modern regular expressions. Equivalent to
+ regbase::char_classes | regbase::intervals | regbase::bk_refs.</TD>
+ <TD width="5%">&nbsp;</TD>
+ </TR>
+ <TR>
+ <TD width="5%">&nbsp;</TD>
+ <TD vAlign="top" width="45%">REG_BASIC</TD>
+ <TD vAlign="top" width="45%">Compiles basic (obsolete) regular expression syntax.
+ Equivalent to regbase::char_classes | regbase::intervals | regbase::limited_ops
+ | regbase::bk_braces | regbase::bk_parens | regbase::bk_refs.</TD>
+ <TD width="5%">&nbsp;</TD>
+ </TR>
+ <TR>
+ <TD width="5%">&nbsp;</TD>
+ <TD vAlign="top" width="45%">REG_NOSPEC</TD>
+ <TD vAlign="top" width="45%">All characters are ordinary, the expression is a
+ literal string.</TD>
+ <TD width="5%">&nbsp;</TD>
+ </TR>
+ <TR>
+ <TD width="5%">&nbsp;</TD>
+ <TD vAlign="top" width="45%">REG_ICASE</TD>
+ <TD vAlign="top" width="45%">Compiles for matching that ignores character case.</TD>
+ <TD width="5%">&nbsp;</TD>
+ </TR>
+ <TR>
+ <TD width="5%">&nbsp;</TD>
+ <TD vAlign="top" width="45%">REG_NOSUB</TD>
+ <TD vAlign="top" width="45%">Has no effect in this library.</TD>
+ <TD width="5%">&nbsp;</TD>
+ </TR>
+ <TR>
+ <TD width="5%">&nbsp;</TD>
+ <TD vAlign="top" width="45%">REG_NEWLINE</TD>
+ <TD vAlign="top" width="45%">When this flag is set a dot does not match the
+ newline character.</TD>
+ <TD width="5%">&nbsp;</TD>
+ </TR>
+ <TR>
+ <TD width="5%">&nbsp;</TD>
+ <TD vAlign="top" width="45%">REG_PEND</TD>
+ <TD vAlign="top" width="45%">When this flag is set the re_endp parameter of the
+ regex_t structure must point to the end of the regular expression to compile.</TD>
+ <TD width="5%">&nbsp;</TD>
+ </TR>
+ <TR>
+ <TD width="5%">&nbsp;</TD>
+ <TD vAlign="top" width="45%">REG_NOCOLLATE</TD>
+ <TD vAlign="top" width="45%">When this flag is set then locale dependent collation
+ for character ranges is turned off.</TD>
+ <TD width="5%">&nbsp;</TD>
+ </TR>
+ <TR>
+ <TD width="5%">&nbsp;</TD>
+ <TD vAlign="top" width="45%">REG_ESCAPE_IN_LISTS<BR>
+ , , ,
+ </TD>
+ <TD vAlign="top" width="45%">When this flag is set, then escape sequences are
+ permitted in bracket expressions (character sets).</TD>
+ <TD width="5%">&nbsp;</TD>
+ </TR>
+ <TR>
+ <TD width="5%">&nbsp;</TD>
+ <TD vAlign="top" width="45%">REG_NEWLINE_ALT&nbsp;</TD>
+ <TD vAlign="top" width="45%">When this flag is set then the newline character is
+ equivalent to the alternation operator |.</TD>
+ <TD width="5%">&nbsp;</TD>
+ </TR>
+ <TR>
+ <TD width="5%">&nbsp;</TD>
+ <TD vAlign="top" width="45%">REG_PERL&nbsp;</TD>
+ <TD vAlign="top" width="45%">Compiles Perl like regular expressions.</TD>
+ <TD width="5%">&nbsp;</TD>
+ </TR>
+ <TR>
+ <TD width="5%">&nbsp;</TD>
+ <TD vAlign="top" width="45%">REG_AWK</TD>
+ <TD vAlign="top" width="45%">A shortcut for awk-like behavior: REG_EXTENDED |
+ REG_ESCAPE_IN_LISTS</TD>
+ <TD width="5%">&nbsp;</TD>
+ </TR>
+ <TR>
+ <TD width="5%">&nbsp;</TD>
+ <TD vAlign="top" width="45%">REG_GREP</TD>
+ <TD vAlign="top" width="45%">A shortcut for grep like behavior: REG_BASIC |
+ REG_NEWLINE_ALT</TD>
+ <TD width="5%">&nbsp;</TD>
+ </TR>
+ <TR>
+ <TD width="5%">&nbsp;</TD>
+ <TD vAlign="top" width="45%">REG_EGREP</TD>
+ <TD vAlign="top" width="45%">&nbsp;A shortcut for egrep like behavior:
+ REG_EXTENDED | REG_NEWLINE_ALT</TD>
+ <TD width="5%">&nbsp;</TD>
+ </TR>
+ </TABLE>
+ </P>
+ <H3>regerror</H3>
+ <P>regerror takes the following parameters, it maps an error code to a human
+ readable string:
+ <BR>
+ </P>
+ <P>
+ <TABLE id="Table3" cellSpacing="0" cellPadding="7" width="100%" border="0">
+ <TR>
+ <TD width="5%">&nbsp;</TD>
+ <TD vAlign="top" width="50%">int code</TD>
+ <TD vAlign="top" width="50%">The error code.</TD>
+ <TD width="5%">&nbsp;</TD>
+ </TR>
+ <TR>
+ <TD>&nbsp;</TD>
+ <TD vAlign="top" width="50%">const regex_t* e</TD>
+ <TD vAlign="top" width="50%">The regular expression (can be null).</TD>
+ <TD>&nbsp;</TD>
+ </TR>
+ <TR>
+ <TD>&nbsp;</TD>
+ <TD vAlign="top" width="50%">char* buf</TD>
+ <TD vAlign="top" width="50%">The buffer to fill in with the error message.</TD>
+ <TD>&nbsp;</TD>
+ </TR>
+ <TR>
+ <TD>&nbsp;</TD>
+ <TD vAlign="top" width="50%">unsigned int buf_size</TD>
+ <TD vAlign="top" width="50%">The length of buf.</TD>
+ <TD>&nbsp;</TD>
+ </TR>
+ </TABLE>
+ </P>
+ <P>If the error code is OR'ed with REG_ITOA then the message that results is the
+ printable name of the code rather than a message, for example "REG_BADPAT". If
+ the code is REG_ATIO then <B>e</B> must not be null and <B>e-&gt;re_pend</B> must
+ point to the printable name of an error code, the return value is then the
+ value of the error code. For any other value of <B>code</B>, the return value
+ is the number of characters in the error message, if the return value is
+ greater than or equal to <B>buf_size</B> then <B>regerror</B> will have to be
+ called again with a larger buffer.</P>
+ <H3>regexec</H3>
+ <P><B>regexec</B> finds the first occurrence of expression <B>e</B> within string <B>buf</B>.
+ If <B>len</B> is non-zero then *<B>m</B> is filled in with what matched the
+ regular expression, <B>m[0]</B> contains what matched the whole string, <B>m[1] </B>
+ the first sub-expression etc, see <B>regmatch_t</B> in the header file
+ declaration for more details. The <B>eflags</B> parameter can be a combination
+ of:
+ <BR>
+ &nbsp;
+ </P>
+ <P>
+ <TABLE id="Table4" cellSpacing="0" cellPadding="7" width="100%" border="0">
+ <TR>
+ <TD width="5%">&nbsp;</TD>
+ <TD vAlign="top" width="50%">REG_NOTBOL</TD>
+ <TD vAlign="top" width="50%">Parameter <B>buf </B>does not represent the start of
+ a line.</TD>
+ <TD width="5%">&nbsp;</TD>
+ </TR>
+ <TR>
+ <TD>&nbsp;</TD>
+ <TD vAlign="top" width="50%">REG_NOTEOL</TD>
+ <TD vAlign="top" width="50%">Parameter <B>buf</B> does not terminate at the end of
+ a line.</TD>
+ <TD>&nbsp;</TD>
+ </TR>
+ <TR>
+ <TD>&nbsp;</TD>
+ <TD vAlign="top" width="50%">REG_STARTEND</TD>
+ <TD vAlign="top" width="50%">The string searched starts at buf + pmatch[0].rm_so
+ and ends at buf + pmatch[0].rm_eo.</TD>
+ <TD>&nbsp;</TD>
+ </TR>
+ </TABLE>
+ </P>
+ <H3>regfree</H3>
+ <P>Finally <B>regfree</B> frees all the memory that was allocated by regcomp.
+ </P>
+ <P><I>Footnote: this is an abridged reference to the POSIX API functions, it is
+ provided for compatibility with other libraries, rather than an API to be used
+ in new code (unless you need access from a language other than C++). This
+ version of these functions should also happily coexist with other versions, as
+ the names used are macros that expand to the actual function names.</I>
+ <P>
+ <HR>
+ <P></P>
+ <p>Revised
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->
+ 24 Oct 2003
+ <!--webbot bot="Timestamp" endspan i-checksum="39359" --></p>
+ <p><i>© Copyright John Maddock&nbsp;1998-
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%Y" startspan -->
+ 2003<!--webbot bot="Timestamp" endspan i-checksum="39359" --></i></p>
+ <P><I>Use, modification and distribution are subject to the Boost Software License,
+ Version 1.0. (See accompanying file LICENSE_1_0.txt
+ or copy at http://www.boost.org/LICENSE_1_0.txt)</I></P>
+ </body>
+</html>
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/doc/redistributables.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/doc/redistributables.html 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,55 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+ <head>
+ <title>Boost.Regex: Redistributables and Library Names</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <link rel="stylesheet" type="text/css" href="../../../boost.css">
+ </head>
+ <body>
+ <P>
+ <TABLE id="Table1" cellSpacing="1" cellPadding="1" width="100%" border="0">
+ <TR>
+ <td valign="top" width="300">
+ <h3>C++ Boost</h3>
+ </td>
+ <TD width="353">
+ <H1 align="center">Boost.Regex</H1>
+ <H2 align="center">Redistributables and Library Names</H2>
+ </TD>
+ <td width="50">
+ <h3>Boost.Regex Index</h3>
+ </td>
+ </TR>
+ </TABLE>
+ </P>
+ <HR>
+ <p></p>
+ <P>If you are using Microsoft or Borland C++ and link to a dll version of the run
+ time library, then you can choose to also link to a dll version of boost.regex
+ by defining the symbol BOOST_REGEX_DYN_LINK when you compile your code. While
+ these dll's are redistributable, there are no "standard" versions, so when
+ installing on the users PC, you should place these in a directory private to
+ your application, and not in the PC's directory path. Note that if you link to
+ a static version of your run time library, then you will also link to a static
+ version of boost.regex and no dll's will need to be distributed. The possible
+ boost.regex dll and library names are computed according to the <A href="../../../more/getting_started.html#step5">
+ formula given in the getting started guide</A>.
+ </P>
+ <P>Note: you can disable automatic library selection by defining the symbol
+ BOOST_REGEX_NO_LIB when compiling, this is useful if you want to build
+ Boost.Regex yourself in your IDE, or if you need to debug boost.regex.
+ </P>
+ <P>
+ <HR>
+ <P></P>
+ <p>Revised&nbsp;
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->
+ 28 June 2004&nbsp;
+ <!--webbot bot="Timestamp" endspan i-checksum="39359" --></p>
+ <p><i>© Copyright John Maddock&nbsp;1998-
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%Y" startspan --> 2004<!--webbot bot="Timestamp" endspan i-checksum="39359" --></i></p>
+ <P><I>Use, modification and distribution are subject to the Boost Software License,
+ Version 1.0. (See accompanying file LICENSE_1_0.txt
+ or copy at http://www.boost.org/LICENSE_1_0.txt)</I></P>
+ </body>
+</html>

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/doc/reg_expression.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/doc/reg_expression.html 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,44 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+ <head>
+ <title>Boost.Regex: Class reg_expression (deprecated)</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <link rel="stylesheet" type="text/css" href="../../../boost.css">
+ </head>
+ <body>
+ <P>
+ <TABLE id="Table1" cellSpacing="1" cellPadding="1" width="100%" border="0">
+ <TR>
+ <td valign="top" width="300">
+ <h3>C++ Boost</h3>
+ </td>
+ <TD width="353">
+ <H1 align="center">Boost.Regex</H1>
+ <H2 align="center">Class reg_expression (deprecated)</H2>
+ </TD>
+ <td width="50">
+ <h3>Boost.Regex Index</h3>
+ </td>
+ </TR>
+ </TABLE>
+ </P>
+ <HR>
+ <p></p>
+ <P>The use of class template reg_expression is deprecated: use <A href="basic_regex.html">
+ basic_regex</A> instead.</P>
+ <P>
+ <HR>
+ <P></P>
+ <p>Revised
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->
+ 24 Oct 2003
+ <!--webbot bot="Timestamp" endspan i-checksum="39359" --></p>
+ <p><i>© Copyright John Maddock&nbsp;1998-
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%Y" startspan -->
+ 2003<!--webbot bot="Timestamp" endspan i-checksum="39359" --></i></p>
+ <P><I>Use, modification and distribution are subject to the Boost Software License,
+ Version 1.0. (See accompanying file LICENSE_1_0.txt
+ or copy at http://www.boost.org/LICENSE_1_0.txt)</I></P>
+ </body>
+</html>
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/doc/regbase.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/doc/regbase.html 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,82 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head>
+<meta name="generator" content="HTML Tidy, see www.w3.org">
+<title>Boost.Regex: regbase</title>
+<meta http-equiv="Content-Type" content=
+"text/html; charset=iso-8859-1">
+<link rel="stylesheet" type="text/css" href="../../../boost.css">
+</head>
+<body>
+<p></p>
+
+<table id="Table1" cellspacing="1" cellpadding="1" width="100%"
+border="0">
+<tr>
+<td valign="top" width="300">
+<h3><a href="../../../index.htm"><img height="86" width="277" alt=
+"C++ Boost" src="../../../boost.png" border="0"></a></h3>
+</td>
+<td width="353">
+<h1 align="center">Boost.Regex</h1>
+
+<h2 align="center">regbase</h2>
+</td>
+<td width="50">
+<h3><a href="index.html"><img height="45" width="43" alt=
+"Boost.Regex Index" src="uarrow.gif" border="0"></a></h3>
+</td>
+</tr>
+</table>
+
+<br>
+<br>
+
+
+<hr>
+<p>Use of the type <code>boost::regbase</code> is now deprecated,
+and the type does not form a part of the <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/papers/2003/n1429.htm">
+regular expression standardization proposal</a>.&nbsp; This type
+still exists as a base class of <code>boost::basic_regex</code>,
+and you can still refer to <code>
+boost::regbase::constant_name</code> in your code, however for
+maximum portability to other std regex implementations you should
+instead use either:</p>
+
+<pre>
+boost::regex_constants::constant_name
+</pre>
+
+<p>or</p>
+
+<pre>
+boost::regex::constant_name
+</pre>
+
+<p>or</p>
+
+<pre>
+boost::wregex::constant_name
+</pre>
+
+<p></p>
+
+<hr>
+<br>
+<br>
+
+
+ <p>Revised
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->
+ 24 Oct 2003
+ <!--webbot bot="Timestamp" endspan i-checksum="39359" --></p>
+ <p><i>© Copyright John Maddock&nbsp;1998-
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%Y" startspan -->
+ 2003<!--webbot bot="Timestamp" endspan i-checksum="39359" --></i></p>
+ <P><I>Use, modification and distribution are subject to the Boost Software License,
+ Version 1.0. (See accompanying file LICENSE_1_0.txt
+ or copy at http://www.boost.org/LICENSE_1_0.txt)</I></P>
+</body>
+</html>
+
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/doc/regex.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/doc/regex.html 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,481 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+ <head>
+ <title>Boost.Regex: class RegEx (deprecated)</title>
+ <meta name="generator" content="HTML Tidy, see www.w3.org">
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <link rel="stylesheet" type="text/css" href="../../../boost.css">
+ </head>
+ <body>
+ <p></p>
+ <table id="Table1" cellspacing="1" cellpadding="1" width="100%" border="0">
+ <tr>
+ <td valign="top" width="300">
+ <h3>C++ Boost</h3>
+ </td>
+ <td width="353">
+ <h1 align="center">Boost.Regex</h1>
+ <h2 align="center">class RegEx (deprecated)</h2>
+ </td>
+ <td width="50">
+ <h3>Boost.Regex Index</h3>
+ </td>
+ </tr>
+ </table>
+ <br>
+ <br>
+ <hr>
+ <p>The high level wrapper class RegEx is now deprecated and does not form a part
+ of the <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/papers/2003/n1429.htm">regular
+ expression standardization proposal</a>.&nbsp; This type still exists, and
+ existing code will continue to compile, however the following documentation is
+ unlikely to be further updated.</p>
+ <pre>
+#include &lt;boost/cregex.hpp&gt;
+</pre>
+ <p>The class RegEx provides a high level simplified interface to the regular
+ expression library, this class only handles narrow character strings, and
+ regular expressions always follow the "normal" syntax - that is the same as the
+ perl / ECMAScript synatx.</p>
+ <pre>
+<b>typedef</b> <b>bool</b> (*GrepCallback)(<b>const</b> RegEx&amp; expression);
+<b>typedef</b> <b>bool</b> (*GrepFileCallback)(<b>const</b> <b>char</b>* file, <b>const</b> RegEx&amp; expression);
+<b>typedef</b> <b>bool</b> (*FindFilesCallback)(<b>const</b> <b>char</b>* file);
+
+<b>class</b> RegEx
+{
+<b>public</b>:
+ RegEx();
+ RegEx(<b>const</b> RegEx&amp; o);
+ ~RegEx();
+ RegEx(<b>const</b> <b>char</b>* c, <b>bool</b> icase = <b>false</b>);
+ <strong>explicit</strong> RegEx(<b>const</b> std::string&amp; s, <b>bool</b> icase = <b>false</b>);
+ RegEx&amp; <b>operator</b>=(<b>const</b> RegEx&amp; o);
+ RegEx&amp; <b>operator</b>=(<b>const</b> <b>char</b>* p);
+ RegEx&amp; <b>operator</b>=(<b>const</b> std::string&amp; s);
+ <b>unsigned</b> <b>int</b> SetExpression(<b>const</b> <b>char</b>* p, <b>bool</b> icase = <b>false</b>);
+ <b>unsigned</b> <b>int</b> SetExpression(<b>const</b> std::string&amp; s, <b>bool</b> icase = <b>false</b>);
+ std::string Expression()<b>const</b>;
+ <font color="#000080"><i>//
+</i> <i>// now matching operators:</i>
+ <i>//</i></font>
+ <b>bool</b> Match(<b>const</b> <b>char</b>* p, boost::match_flag_type flags = match_default);
+ <b>bool</b> Match(<b>const</b> std::string&amp; s, boost::match_flag_type flags = match_default);
+ <b>bool</b> Search(<b>const</b> <b>char</b>* p, boost::match_flag_type flags = match_default);
+ <b>bool</b> Search(<b>const</b> std::string&amp; s, boost::match_flag_type flags = match_default);
+ <b>unsigned</b> <b>int</b> Grep(GrepCallback cb, <b>const</b> <b>char</b>* p, boost::match_flag_type flags = match_default);
+ <b>unsigned</b> <b>int</b> Grep(GrepCallback cb, <b>const</b> std::string&amp; s, boost::match_flag_type flags = match_default);
+ <b>unsigned</b> <b>int</b> Grep(std::vector&lt;std::string&gt;&amp; v, <b>const</b> <b>char</b>* p, boost::match_flag_type flags = match_default);
+ <b>unsigned</b> <b>int</b> Grep(std::vector&lt;std::string&gt;&amp; v, <b>const</b> std::string&amp; s, boost::match_flag_type flags = match_default);
+ <b>unsigned</b> <b>int</b> Grep(std::vector&lt;<b>unsigned</b> <b>int</b>&gt;&amp; v, <b>const</b> <b>char</b>* p, boost::match_flag_type flags = match_default);
+ <b>unsigned</b> <b>int</b> Grep(std::vector&lt;<b>unsigned</b> <b>int</b>&gt;&amp; v, <b>const</b> std::string&amp; s, boost::match_flag_type flags = match_default);
+ <b>unsigned</b> <b>int</b> GrepFiles(GrepFileCallback cb, <b>const</b> <b>char</b>* files, <b>bool</b> recurse = <b>false</b>, boost::match_flag_type flags = match_default);
+ <b>unsigned</b> <b>int</b> GrepFiles(GrepFileCallback cb, <b>const</b> std::string&amp; files, <b>bool</b> recurse = <b>false</b>, boost::match_flag_type flags = match_default);
+ <b>unsigned</b> <b>int</b> FindFiles(FindFilesCallback cb, <b>const</b> <b>char</b>* files, <b>bool</b> recurse = <b>false</b>, boost::match_flag_type flags = match_default);
+ <b>unsigned</b> <b>int</b> FindFiles(FindFilesCallback cb, <b>const</b> std::string&amp; files, <b>bool</b> recurse = <b>false</b>, boost::match_flag_type flags = match_default);
+ std::string Merge(<b>const</b> std::string&amp; in, <b>const</b> std::string&amp; fmt, <b>bool</b> copy = <b>true</b>, boost::match_flag_type flags = match_default);
+ std::string Merge(<b>const</b> char* in, <b>const</b> char* fmt, <b>bool</b> copy = <b>true</b>, boost::match_flag_type flags = match_default);
+ <b>unsigned</b> Split(std::vector&lt;std::string&gt;&amp; v, std::string&amp; s, boost::match_flag_type flags = match_default, <b>unsigned</b> max_count = ~0);
+ <font color="#000080"><i>//
+</i> <i>// now operators for returning what matched in more detail:
+</i> <i>//
+</i></font> <b>unsigned</b> <b>int</b> Position(<b>int</b> i = 0)<b>const</b>;
+ <b>unsigned</b> <b>int</b> Length(<b>int</b> i = 0)<b>const</b>;
+ <strong>bool</strong> Matched(<strong>int</strong> i = 0)<strong>const</strong>;
+ <b>unsigned</b> <b>int</b> Line()<b>const</b>;
+ <b>unsigned int</b> Marks() const;
+ std::string What(<b>int</b> i)<b>const</b>;
+ std::string <b>operator</b>[](<b>int</b> i)<b>const</b> ;
+
+ <strong>static const unsigned int</strong> npos;
+};
+</pre>
+ <p>Member functions for class RegEx are defined as follows:<br>
+ &nbsp;</p>
+ <p></p>
+ <table id="Table2" cellspacing="0" cellpadding="7" width="100%" border="0">
+ <tr>
+ <td valign="top" width="7%">&nbsp;</td>
+ <td valign="top" width="43%">RegEx();</td>
+ <td valign="top" width="42%">Default constructor, constructs an instance of RegEx
+ without any valid expression.</td>
+ <td valign="top" width="7%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="7%">&nbsp;</td>
+ <td valign="top" width="43%">RegEx(<b>const</b> RegEx&amp; o);</td>
+ <td valign="top" width="42%">Copy constructor, all the properties of parameter <i>o</i>
+ are copied.</td>
+ <td valign="top" width="7%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="7%">&nbsp;</td>
+ <td valign="top" width="43%">RegEx(<b>const</b> <b>char</b>* c, <b>bool</b> icase
+ = <b>false</b>);</td>
+ <td valign="top" width="42%">Constructs an instance of RegEx, setting the
+ expression to <i>c</i>, if <i>icase</i> is <i>true</i> then matching is
+ insensitive to case, otherwise it is sensitive to case. Throws <i>bad_expression</i>
+ on failure.</td>
+ <td valign="top" width="7%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="7%">&nbsp;</td>
+ <td valign="top" width="43%">RegEx(<b>const</b> std::string&amp; s, <b>bool</b> icase
+ = <b>false</b>);</td>
+ <td valign="top" width="42%">Constructs an instance of RegEx, setting the
+ expression to <i>s</i>, if <i>icase</i> is <i>true</i> then matching is
+ insensitive to case, otherwise it is sensitive to case. Throws <i>bad_expression</i>
+ on failure.</td>
+ <td valign="top" width="7%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="7%">&nbsp;</td>
+ <td valign="top" width="43%">RegEx&amp; <b>operator</b>=(<b>const</b> RegEx&amp;
+ o);</td>
+ <td valign="top" width="42%">Default assignment operator.</td>
+ <td valign="top" width="7%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="7%">&nbsp;</td>
+ <td valign="top" width="43%">RegEx&amp; <b>operator</b>=(<b>const</b> <b>char</b>*
+ p);</td>
+ <td valign="top" width="42%">Assignment operator, equivalent to calling <i>SetExpression(p,
+ false).</i> Throws <i>bad_expression</i> on failure.</td>
+ <td valign="top" width="7%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="7%">&nbsp;</td>
+ <td valign="top" width="43%">RegEx&amp; <b>operator</b>=(<b>const</b> std::string&amp;
+ s);</td>
+ <td valign="top" width="42%">Assignment operator, equivalent to calling <i>SetExpression(s,
+ false).</i> Throws <i>bad_expression</i> on failure.</td>
+ <td valign="top" width="7%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="7%">&nbsp;</td>
+ <td valign="top" width="43%"><b>unsigned</b> <b>int</b> SetExpression(<b>constchar</b>*
+ p, <b>bool</b> icase = <b>false</b>);</td>
+ <td valign="top" width="42%">Sets the current expression to <i>p</i>, if <i>icase</i>
+ is <i>true</i> then matching is insensitive to case, otherwise it is sensitive
+ to case. Throws <i>bad_expression</i> on failure.</td>
+ <td valign="top" width="7%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="7%">&nbsp;</td>
+ <td valign="top" width="43%"><b>unsigned</b> <b>int</b> SetExpression(<b>const</b>
+ std::string&amp; s, <b>bool</b> icase = <b>false</b>);</td>
+ <td valign="top" width="42%">Sets the current expression to <i>s</i>, if <i>icase</i>
+ is <i>true</i> then matching is insensitive to case, otherwise it is sensitive
+ to case. Throws <i>bad_expression</i> on failure.</td>
+ <td valign="top" width="7%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="7%">&nbsp;</td>
+ <td valign="top" width="43%">std::string Expression()<b>const</b>;</td>
+ <td valign="top" width="42%">Returns a copy of the current regular expression.</td>
+ <td valign="top" width="7%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="7%">&nbsp;</td>
+ <td valign="top" width="43%"><b>bool</b> Match(<b>const</b> <b>char</b>* p,
+ boost::match_flag_type flags = match_default);</td>
+ <td valign="top" width="42%">Attempts to match the current expression against the
+ text <i>p</i> using the match flags <i>flags</i> - see <a href="match_flag_type.html">
+ match flags</a>. Returns <i>true</i> if the expression matches the whole of
+ the input string.</td>
+ <td valign="top" width="7%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="7%">&nbsp;</td>
+ <td valign="top" width="43%"><b>bool</b> Match(<b>const</b> std::string&amp; s,
+ boost::match_flag_type flags = match_default) ;</td>
+ <td valign="top" width="42%">Attempts to match the current expression against the
+ text <i>s</i> using the match flags <i>flags</i> - see <a href="match_flag_type.html">
+ match flags</a>. Returns <i>true</i> if the expression matches the whole of
+ the input string.</td>
+ <td valign="top" width="7%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="7%">&nbsp;</td>
+ <td valign="top" width="43%"><b>bool</b> Search(<b>const</b> <b>char</b>* p,
+ boost::match_flag_type flags = match_default);</td>
+ <td valign="top" width="42%">Attempts to find a match for the current expression
+ somewhere in the text <i>p</i> using the match flags <i>flags</i> - see <a href="match_flag_type.html">
+ match flags</a>. Returns <i>true</i> if the match succeeds.</td>
+ <td valign="top" width="7%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="7%">&nbsp;</td>
+ <td valign="top" width="43%"><b>bool</b> Search(<b>const</b> std::string&amp; s,
+ boost::match_flag_type flags = match_default) ;</td>
+ <td valign="top" width="42%">Attempts to find a match for the current expression
+ somewhere in the text <i>s</i> using the match flags <i>flags</i> - see <a href="match_flag_type.html">
+ match flags</a>. Returns <i>true</i> if the match succeeds.</td>
+ <td valign="top" width="7%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="7%">&nbsp;</td>
+ <td valign="top" width="43%"><b>unsigned</b> <b>int</b> Grep(GrepCallback cb, <b>const</b>
+ <b>char</b>* p, boost::match_flag_type flags = match_default);</td>
+ <td valign="top" width="42%">Finds all matches of the current expression in the
+ text <i>p</i> using the match flags <i>flags</i> - see <a href="match_flag_type.html">
+ match flags</a>. For each match found calls the call-back function <i>cb</i>
+ as: cb(*this);
+ <p>If at any stage the call-back function returns false then the grep operation
+ terminates, otherwise continues until no further matches are found. Returns the
+ number of matches found.</p>
+ </td>
+ <td valign="top" width="7%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="7%">&nbsp;</td>
+ <td valign="top" width="43%"><b>unsigned</b> <b>int</b> Grep(GrepCallback cb, <b>const</b>
+ std::string&amp; s, boost::match_flag_type flags = match_default);</td>
+ <td valign="top" width="42%">Finds all matches of the current expression in the
+ text <i>s</i> using the match flags <i>flags</i> - see <a href="match_flag_type.html">
+ match flags</a>. For each match found calls the call-back function <i>cb</i>
+ as: cb(*this);
+ <p>If at any stage the call-back function returns false then the grep operation
+ terminates, otherwise continues until no further matches are found. Returns the
+ number of matches found.</p>
+ </td>
+ <td valign="top" width="7%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="7%">&nbsp;</td>
+ <td valign="top" width="43%"><b>unsigned</b> <b>int</b> Grep(std::vector&lt;std::string&gt;&amp;
+ v, <b>const</b> <b>char</b>* p, boost::match_flag_type flags = match_default);</td>
+ <td valign="top" width="42%">Finds all matches of the current expression in the
+ text <i>p</i> using the match flags <i>flags</i> - see <a href="match_flag_type.html">
+ match flags</a>. For each match pushes a copy of what matched onto <i>v</i>.
+ Returns the number of matches found.</td>
+ <td valign="top" width="7%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="7%">&nbsp;</td>
+ <td valign="top" width="43%"><b>unsigned</b> <b>int</b> Grep(std::vector&lt;std::string&gt;&amp;
+ v, <b>const</b> std::string&amp; s, boost::match_flag_type flags =
+ match_default);</td>
+ <td valign="top" width="42%">Finds all matches of the current expression in the
+ text <i>s</i> using the match flags <i>flags</i> - see <a href="match_flag_type.html">
+ match flags</a>. For each match pushes a copy of what matched onto <i>v</i>.
+ Returns the number of matches found.</td>
+ <td valign="top" width="7%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="7%">&nbsp;</td>
+ <td valign="top" width="43%"><b>unsigned</b> <b>int</b> Grep(std::vector&lt;<b>unsigned
+ int</b>&gt;&amp; v, <b>const</b> <b>char</b>* p, boost::match_flag_type
+ flags = match_default);</td>
+ <td valign="top" width="42%">Finds all matches of the current expression in the
+ text <i>p</i> using the match flags <i>flags</i> - see <a href="match_flag_type.html">
+ match flags</a>. For each match pushes the starting index of what matched
+ onto <i>v</i>. Returns the number of matches found.</td>
+ <td valign="top" width="7%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="7%">&nbsp;</td>
+ <td valign="top" width="43%"><b>unsigned</b> <b>int</b> Grep(std::vector&lt;<b>unsigned
+ int</b>&gt;&amp; v, <b>const</b> std::string&amp; s, boost::match_flag_type
+ flags = match_default);</td>
+ <td valign="top" width="42%">Finds all matches of the current expression in the
+ text <i>s</i> using the match flags <i>flags</i> - see <a href="match_flag_type.html">
+ match flags</a>. For each match pushes the starting index of what matched
+ onto <i>v</i>. Returns the number of matches found.</td>
+ <td valign="top" width="7%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="7%">&nbsp;</td>
+ <td valign="top" width="43%"><b>unsigned</b> <b>int</b> GrepFiles(GrepFileCallback
+ cb, <b>const</b> <b>char</b>* files, <b>bool</b> recurse = <b>false</b>,
+ boost::match_flag_type flags = match_default);</td>
+ <td valign="top" width="42%">Finds all matches of the current expression in the
+ files <i>files</i> using the match flags <i>flags</i> - see <a href="match_flag_type.html">
+ match flags</a>. For each match calls the call-back function cb.&nbsp;
+ <p>If the call-back returns false then the algorithm returns without considering
+ further matches in the current file, or any further files.&nbsp;</p>
+ <p>The parameter <i>files</i> can include wild card characters '*' and '?', if the
+ parameter <i>recurse</i> is true then searches sub-directories for matching
+ file names.&nbsp;</p>
+ <p>Returns the total number of matches found.</p>
+ <p>May throw an exception derived from std::runtime_error if file io fails.</p>
+ </td>
+ <td valign="top" width="7%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="7%">&nbsp;</td>
+ <td valign="top" width="43%"><b>unsigned</b> <b>int</b> GrepFiles(GrepFileCallback
+ cb, <b>const</b> std::string&amp; files, <b>bool</b> recurse = <b>false</b>,
+ boost::match_flag_type flags = match_default);</td>
+ <td valign="top" width="42%">Finds all matches of the current expression in the
+ files <i>files</i> using the match flags <i>flags</i> - see <a href="match_flag_type.html">
+ match flags</a>. For each match calls the call-back function cb.&nbsp;
+ <p>If the call-back returns false then the algorithm returns without considering
+ further matches in the current file, or any further files.&nbsp;</p>
+ <p>The parameter <i>files</i> can include wild card characters '*' and '?', if the
+ parameter <i>recurse</i> is true then searches sub-directories for matching
+ file names.&nbsp;</p>
+ <p>Returns the total number of matches found.</p>
+ <p>May throw an exception derived from std::runtime_error if file io fails.</p>
+ </td>
+ <td valign="top" width="7%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="7%">&nbsp;</td>
+ <td valign="top" width="43%"><b>unsigned</b> <b>int</b> FindFiles(FindFilesCallback
+ cb, <b>const</b> <b>char</b>* files, <b>bool</b> recurse = <b>false</b>,
+ boost::match_flag_type flags = match_default);</td>
+ <td valign="top" width="42%">Searches <i>files</i> to find all those which contain
+ at least one match of the current expression using the match flags <i>flags</i>
+ - see match flags. For each matching file
+ calls the call-back function cb.&nbsp;
+ <p>If the call-back returns false then the algorithm returns without considering
+ any further files.&nbsp;</p>
+ <p>The parameter <i>files</i> can include wild card characters '*' and '?', if the
+ parameter <i>recurse</i> is true then searches sub-directories for matching
+ file names.&nbsp;</p>
+ <p>Returns the total number of files found.</p>
+ <p>May throw an exception derived from std::runtime_error if file io fails.</p>
+ </td>
+ <td valign="top" width="7%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="7%">&nbsp;</td>
+ <td valign="top" width="43%"><b>unsigned</b> <b>int</b> FindFiles(FindFilesCallback
+ cb, <b>const</b> std::string&amp; files, <b>bool</b> recurse = <b>false</b>,
+ boost::match_flag_type flags = match_default);</td>
+ <td valign="top" width="42%">Searches <i>files</i> to find all those which contain
+ at least one match of the current expression using the match flags <i>flags</i>
+ - see match flags. For each matching file
+ calls the call-back function cb.&nbsp;
+ <p>If the call-back returns false then the algorithm returns without considering
+ any further files.&nbsp;</p>
+ <p>The parameter <i>files</i> can include wild card characters '*' and '?', if the
+ parameter <i>recurse</i> is true then searches sub-directories for matching
+ file names.&nbsp;</p>
+ <p>Returns the total number of files found.</p>
+ <p>May throw an exception derived from std::runtime_error if file io fails.</p>
+ </td>
+ <td valign="top" width="7%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="7%">&nbsp;</td>
+ <td valign="top" width="43%">std::string Merge(<b>const</b> std::string&amp; in, <b>const</b>
+ std::string&amp; fmt, <b>bool</b> copy = <b>true</b>, boost::match_flag_type
+ flags = match_default);</td>
+ <td valign="top" width="42%">Performs a search and replace operation: searches
+ through the string <i>in</i> for all occurrences of the current expression, for
+ each occurrence replaces the match with the format string <i>fmt</i>. Uses <i>flags</i>
+ to determine what gets matched, and how the format string should be treated. If <i>
+ copy</i> is true then all unmatched sections of input are copied unchanged
+ to output, if the flag <em>format_first_only</em> is set then only the first
+ occurance of the pattern found is replaced. Returns the new string. See <a href="format_syntax.html">
+ also format string syntax</a>, match flags
+ and format flags.</td>
+ <td valign="top" width="7%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="7%">&nbsp;</td>
+ <td valign="top" width="43%">std::string Merge(<b>const</b> char* in, <b>const</b>
+ char* fmt, <b>bool</b> copy = <b>true</b>, boost::match_flag_type flags =
+ match_default);</td>
+ <td valign="top" width="42%">Performs a search and replace operation: searches
+ through the string <i>in</i> for all occurrences of the current expression, for
+ each occurrence replaces the match with the format string <i>fmt</i>. Uses <i>flags</i>
+ to determine what gets matched, and how the format string should be treated. If <i>
+ copy</i> is true then all unmatched sections of input are copied unchanged
+ to output, if the flag <em>format_first_only</em> is set then only the first
+ occurance of the pattern found is replaced. Returns the new string. See <a href="format_syntax.html">
+ also format string syntax</a>, match flags
+ and format flags.</td>
+ <td valign="top" width="7%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td>&nbsp;</td>
+ <td valign="top"><b>unsigned</b> Split(std::vector&lt;std::string&gt;&amp; v,
+ std::string&amp; s, boost::match_flag_type flags = match_default, <b>unsigned</b>
+ max_count = ~0);</td>
+ <td valign="top">Splits the input string and pushes each one onto the vector. If
+ the expression contains no marked sub-expressions, then one string is outputted
+ for each section of the input that does not match the expression. If the
+ expression does contain marked sub-expressions, then outputs one string for
+ each marked sub-expression each time a match occurs. Outputs no more than <i>max_count</i>
+ strings. Before returning, deletes from the input string <i>s</i> all of the
+ input that has been processed (all of the string if <i>max_count</i> was not
+ reached). Returns the number of strings pushed onto the vector.</td>
+ <td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="7%">&nbsp;</td>
+ <td valign="top" width="43%"><b>unsigned</b> <b>int</b> Position(<b>int</b> i = 0)<b>const</b>;</td>
+ <td valign="top" width="42%">Returns the position of what matched sub-expression <i>i</i>.
+ If <i>i = 0</i> then returns the position of the whole match. Returns
+ RegEx::npos if the supplied index is invalid, or if the specified
+ sub-expression did not participate in the match.</td>
+ <td valign="top" width="7%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="7%">&nbsp;</td>
+ <td valign="top" width="43%"><b>unsigned</b> <b>int</b> Length(<b>int</b> i = 0)<b>const</b>;</td>
+ <td valign="top" width="42%">Returns the length of what matched sub-expression <i>i</i>.
+ If <i>i = 0</i> then returns the length of the whole match. Returns RegEx::npos
+ if the supplied index is invalid, or if the specified sub-expression did not
+ participate in the match.</td>
+ <td valign="top" width="7%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td>&nbsp;</td>
+ <td><strong>bool</strong> Matched(<strong>int</strong> i = 0)<strong>const</strong>;</td>
+ <td>Returns true if sub-expression <em>i</em> was matched, false otherwise.</td>
+ <td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="7%">&nbsp;</td>
+ <td valign="top" width="43%"><b>unsigned</b> <b>int</b> Line()<b>const</b>;</td>
+ <td valign="top" width="42%">Returns the line on which the match occurred, indexes
+ start from 1 not zero, if no match occurred then returns RegEx::npos.</td>
+ <td valign="top" width="7%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="7%">&nbsp;</td>
+ <td valign="top" width="43%"><b>unsigned int</b> Marks() const;</td>
+ <td valign="top" width="42%">Returns the number of marked sub-expressions
+ contained in the expression. Note that this includes the whole match
+ (sub-expression zero), so the value returned is always &gt;= 1.</td>
+ <td valign="top" width="7%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="7%">&nbsp;</td>
+ <td valign="top" width="43%">std::string What(<b>int</b> i)<b>const</b>;</td>
+ <td valign="top" width="42%">Returns a copy of what matched sub-expression <i>i</i>.
+ If <i>i = 0</i> then returns a copy of the whole match. Returns a null string
+ if the index is invalid or if the specified sub-expression did not participate
+ in a match.</td>
+ <td valign="top" width="7%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" width="7%">&nbsp;</td>
+ <td valign="top" width="43%">std::string <b>operator</b>[](<b>int</b> i)<b>const</b>
+ ;</td>
+ <td valign="top" width="42%">Returns <i>what(i);</i>
+ <p>Can be used to simplify access to sub-expression matches, and make usage more
+ perl-like.</p>
+ </td>
+ <td valign="top" width="7%">&nbsp;</td>
+ </tr>
+ </table>
+ <br>
+ <br>
+ <p></p>
+ <hr>
+ <p>Revised
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->
+ 04 Feb 2004
+ <!--webbot bot="Timestamp" endspan i-checksum="39359" --></p>
+ <p><i>© Copyright John Maddock&nbsp;1998-
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%Y" startspan --> 2004<!--webbot bot="Timestamp" endspan i-checksum="39359" --></i></p>
+ <P><I>Use, modification and distribution are subject to the Boost Software License,
+ Version 1.0. (See accompanying file LICENSE_1_0.txt
+ or copy at http://www.boost.org/LICENSE_1_0.txt)</I></P>
+ </body>
+</html>

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/doc/regex_format.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/doc/regex_format.html 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,204 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head>
+<meta name="generator" content="HTML Tidy, see www.w3.org">
+<title>Boost.Regex: Algorithm regex_format (deprecated)</title>
+<meta http-equiv="Content-Type" content=
+"text/html; charset=iso-8859-1">
+<link rel="stylesheet" type="text/css" href="../../../boost.css">
+</head>
+<body>
+<p></p>
+
+<table id="Table1" cellspacing="1" cellpadding="1" width="100%"
+border="0">
+<tr>
+<td valign="top" width="300">
+<h3><a href="../../../index.htm"><img height="86" width="277" alt=
+"C++ Boost" src="../../../boost.png" border="0"></a></h3>
+</td>
+<td width="353">
+<h1 align="center">Boost.Regex</h1>
+
+<h2 align="center">Algorithm regex_format (deprecated)</h2>
+</td>
+<td width="50">
+<h3><a href="index.html"><img height="45" width="43" alt=
+"Boost.Regex Index" src="uarrow.gif" border="0"></a></h3>
+</td>
+</tr>
+</table>
+
+<br>
+<br>
+
+
+<hr>
+<p>The algorithm regex_format is deprecated; new code should use
+match_results::format instead.&nbsp; Existing code will continue to
+compile, the following documentation is taken from the previous
+version of boost.regex and will not be further updated:</p>
+
+<h3>Algorithm regex_format</h3>
+
+<pre>
+#include &lt;boost/regex.hpp&gt;
+</pre>
+
+<p>The algorithm regex_format takes the results of a match and
+creates a new string based upon a <a href="format_syntax.html">
+format string</a>, regex_format can be used for search and replace
+operations:</p>
+
+<pre>
+<b>template</b> &lt;<b>class</b> OutputIterator, <b>class</b> iterator, <b>class</b> Allocator, <b>class</b> charT&gt;
+OutputIterator regex_format(OutputIterator out,
+ <b>const</b> match_results&lt;iterator, Allocator&gt;&amp; m,
+ <b>const</b> charT* fmt,
+ match_flag_type flags = 0);
+<b>template</b> &lt;<b>class</b> OutputIterator, <b>class</b> iterator, <b>class</b> Allocator, <b>class</b> charT&gt;
+OutputIterator regex_format(OutputIterator out,
+ <b>const</b> match_results&lt;iterator, Allocator&gt;&amp; m,
+ <b>const</b> std::basic_string&lt;charT&gt;&amp; fmt,
+ match_flag_type flags = 0);
+</pre>
+
+<p>The library also defines the following convenience variation of
+regex_format, which returns the result directly as a string, rather
+than outputting to an iterator [note - this version may not be
+available, or may be available in a more limited form, depending
+upon your compilers capabilities]:</p>
+
+<pre>
+<b>template</b> &lt;<b>class</b> iterator, <b>class</b> Allocator, <b>class</b> charT&gt;
+std::basic_string&lt;charT&gt; regex_format
+ (<b>const</b> match_results&lt;iterator, Allocator&gt;&amp; m,
+ <b>const</b> charT* fmt,
+ match_flag_type flags = 0);
+
+<b>template</b> &lt;<b>class</b> iterator, <b>class</b> Allocator, <b>class</b> charT&gt;
+std::basic_string&lt;charT&gt; regex_format
+ (<b>const</b> match_results&lt;iterator, Allocator&gt;&amp; m,
+ <b>const</b> std::basic_string&lt;charT&gt;&amp; fmt,
+ match_flag_type flags = 0);
+</pre>
+
+<p>Parameters to the main version of the function are passed as
+follows:</p>
+
+<p></p>
+
+<table id="Table2" cellspacing="0" cellpadding="7" width="100%"
+border="0">
+<tr>
+<td valign="top" width="9%">&nbsp;</td>
+<td valign="top" width="39%">OutputIterator out</td>
+<td valign="top" width="44%">An output iterator type, the output
+string is sent to this iterator. Typically this would be a
+std::ostream_iterator.</td>
+<td valign="top" width="9%">&nbsp;</td>
+</tr>
+
+<tr>
+<td valign="top" width="9%">&nbsp;</td>
+<td valign="top" width="39%"><b>const</b>
+match_results&lt;iterator, Allocator&gt;&amp; m</td>
+<td valign="top" width="44%">An instance of match_results&lt;&gt;
+obtained from one of the matching algorithms above, and denoting
+what matched.</td>
+<td valign="top" width="9%">&nbsp;</td>
+</tr>
+
+<tr>
+<td valign="top" width="9%">&nbsp;</td>
+<td valign="top" width="39%"><b>const</b> charT* fmt</td>
+<td valign="top" width="44%">A format string that determines how
+the match is transformed into the new string.</td>
+<td valign="top" width="9%">&nbsp;</td>
+</tr>
+
+<tr>
+<td valign="top" width="9%">&nbsp;</td>
+<td valign="top" width="39%"><b>unsigned</b> flags</td>
+<td valign="top" width="44%">Optional flags which describe how the
+format string is to be interpreted.</td>
+<td valign="top" width="9%">&nbsp;</td>
+</tr>
+</table>
+
+<br>
+<br>
+
+
+<p><a name="format_flags"></a>Format flags are defined as
+follows:</p>
+
+<p></p>
+
+<table id="Table3" cellspacing="0" cellpadding="7" width="100%"
+border="0">
+<tr>
+<td valign="top" width="9%">&nbsp;</td>
+<td valign="top" width="39%">format_all</td>
+<td valign="top" width="43%">Enables all syntax options (perl-like
+plus extentions).</td>
+<td valign="top" width="9%">&nbsp;</td>
+</tr>
+
+<tr>
+<td valign="top" width="9%">&nbsp;</td>
+<td valign="top" width="39%">format_sed</td>
+<td valign="top" width="43%">Allows only a sed-like syntax.</td>
+<td valign="top" width="9%">&nbsp;</td>
+</tr>
+
+<tr>
+<td valign="top" width="9%">&nbsp;</td>
+<td valign="top" width="39%">format_perl</td>
+<td valign="top" width="43%">Allows only a perl-like syntax.</td>
+<td valign="top" width="9%">&nbsp;</td>
+</tr>
+
+<tr>
+<td valign="top" width="9%">&nbsp;</td>
+<td valign="top" width="39%">format_no_copy</td>
+<td valign="top" width="43%">Disables copying of unmatched sections
+to the output string during <a href="regex_merge.html">
+regex_merge</a> operations.</td>
+<td valign="top" width="9%">&nbsp;</td>
+</tr>
+
+<tr>
+<td>&nbsp;</td>
+<td>format_first_only</td>
+<td>When this flag is set only the first occurance will be replaced
+(applies to regex_merge only).</td>
+<td>&nbsp;</td>
+</tr>
+</table>
+
+<br>
+<br>
+
+
+<p>The format string syntax (and available options) is described
+more fully under format strings
+.</p>
+
+<p></p>
+
+<hr>
+ <p>Revised
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->
+ 24 Oct 2003
+ <!--webbot bot="Timestamp" endspan i-checksum="39359" --></p>
+ <p><i>© Copyright John Maddock&nbsp;1998-
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%Y" startspan -->
+ 2003<!--webbot bot="Timestamp" endspan i-checksum="39359" --></i></p>
+ <P><I>Use, modification and distribution are subject to the Boost Software License,
+ Version 1.0. (See accompanying file LICENSE_1_0.txt
+ or copy at http://www.boost.org/LICENSE_1_0.txt)</I></P>
+</body>
+</html>
+
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/doc/regex_grep.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/doc/regex_grep.html 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,377 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+ <head>
+ <title>Boost.Regex: Algorithm regex_grep (deprecated)</title>
+ <meta name="generator" content="HTML Tidy, see www.w3.org">
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <link rel="stylesheet" type="text/css" href="../../../boost.css">
+ </head>
+ <body>
+ <p></p>
+ <table id="Table1" cellspacing="1" cellpadding="1" width="100%" border="0">
+ <tr>
+ <td valign="top" width="300">
+ <h3>C++ Boost</h3>
+ </td>
+ <td width="353">
+ <h1 align="center">Boost.Regex</h1>
+ <h2 align="center">Algorithm regex_grep (deprecated)</h2>
+ </td>
+ <td width="50">
+ <h3>Boost.Regex Index</h3>
+ </td>
+ </tr>
+ </table>
+ <br>
+ <br>
+ <hr>
+ <p>The algorithm regex_grep is deprecated in favor of regex_iterator
+ which provides a more convenient and standard library friendly interface.</p>
+ <p>The following documentation is taken unchanged from the previous boost release,
+ and will not be updated in future.</p>
+ <hr>
+ <pre>
+#include &lt;boost/regex.hpp&gt;
+</pre>
+ <p>regex_grep allows you to search through a bidirectional-iterator range and
+ locate all the (non-overlapping) matches with a given regular expression. The
+ function is declared as:</p>
+ <pre>
+<b>template</b> &lt;<b>class</b> Predicate, <b>class</b> iterator, <b>class</b> charT, <b>class</b> traits&gt;
+<b>unsigned</b> <b>int</b> regex_grep(Predicate foo,
+ iterator first,
+ iterator last,
+ <b>const</b> basic_regex&lt;charT, traits&gt;&amp; e,
+ boost::match_flag_type flags = match_default)
+</pre>
+ <p>The library also defines the following convenience versions, which take either
+ a const charT*, or a const std::basic_string&lt;&gt;&amp; in place of a pair of
+ iterators [note - these versions may not be available, or may be available in a
+ more limited form, depending upon your compilers capabilities]:</p>
+ <pre>
+<b>template</b> &lt;<b>class</b> Predicate, <b>class</b> charT, <b>class</b> traits&gt;
+<b>unsigned</b> <b>int</b> regex_grep(Predicate foo,
+ <b>const</b> charT* str,
+ <b>const</b> basic_regex&lt;charT, traits&gt;&amp; e,
+ boost::match_flag_type flags = match_default);
+
+<b>template</b> &lt;<b>class</b> Predicate, <b>class</b> ST, <b>class</b> SA, <b>class</b> charT, <b>class</b> traits&gt;
+<b>unsigned</b> <b>int</b> regex_grep(Predicate foo,
+ <b>const</b> std::basic_string&lt;charT, ST, SA&gt;&amp; s,
+ <b>const</b> basic_regex&lt;charT, traits&gt;&amp; e,
+ boost::match_flag_type flags = match_default);
+</pre>
+ <p>The parameters for the primary version of regex_grep have the following
+ meanings:&nbsp;</p>
+ <p></p>
+ <table id="Table2" cellspacing="0" cellpadding="7" width="624" border="0">
+ <tr>
+ <td width="5%">&nbsp;</td>
+ <td valign="top" width="50%">foo</td>
+ <td valign="top" width="50%">A predicate function object or function pointer, see
+ below for more information.</td>
+ <td width="5%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td>&nbsp;</td>
+ <td valign="top" width="50%">first</td>
+ <td valign="top" width="50%">The start of the range to search.</td>
+ <td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td>&nbsp;</td>
+ <td valign="top" width="50%">last</td>
+ <td valign="top" width="50%">The end of the range to search.</td>
+ <td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td>&nbsp;</td>
+ <td valign="top" width="50%">e</td>
+ <td valign="top" width="50%">The regular expression to search for.</td>
+ <td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td>&nbsp;</td>
+ <td valign="top" width="50%">flags</td>
+ <td valign="top" width="50%">The flags that determine how matching is carried out,
+ one of the match_flags enumerators.</td>
+ <td>&nbsp;</td>
+ </tr>
+ </table>
+ <br>
+ <br>
+ <p>The algorithm finds all of the non-overlapping matches of the expression e, for
+ each match it fills a match_results&lt;iterator&gt;
+ structure, which contains information on what matched, and calls the predicate
+ foo, passing the match_results&lt;iterator&gt; as a single argument. If the
+ predicate returns true, then the grep operation continues, otherwise it
+ terminates without searching for further matches. The function returns the
+ number of matches found.</p>
+ <p>The general form of the predicate is:</p>
+ <pre>
+<b>struct</b> grep_predicate
+{
+ <b> bool</b> <b>operator</b>()(<b>const</b> match_results&lt;iterator_type&gt;&amp; m);
+};
+</pre>
+ <p>For example the regular expression "a*b" would find one match in the string
+ "aaaaab" and two in the string "aaabb".</p>
+ <p>Remember this algorithm can be used for a lot more than implementing a version
+ of grep, the predicate can be and do anything that you want, grep utilities
+ would output the results to the screen, another program could index a file
+ based on a regular expression and store a set of bookmarks in a list, or a text
+ file conversion utility would output to file. The results of one regex_grep can
+ even be chained into another regex_grep to create recursive parsers.</p>
+ <P>The algorithm may throw&nbsp;<CODE>std::runtime_error</CODE> if the complexity
+ of matching the expression against an N character string begins to exceed O(N<SUP>2</SUP>),
+ or if the program runs out of stack space while matching the expression (if
+ Boost.regex is configured in recursive mode),
+ or if the matcher exhausts it's permitted memory allocation (if Boost.regex is <A href="configuration.html">
+ configured</A> in non-recursive mode).</P>
+ <p> Example: convert
+ the example from <i>regex_search</i> to use <i>regex_grep</i> instead:</p>
+ <pre>
+<font color="#008000">#include &lt;string&gt;
+#include &lt;map&gt;
+#include &lt;boost/regex.hpp&gt;
+
+</font><font color="#000080"><i>// IndexClasses:
+// takes the contents of a file in the form of a string
+// and searches for all the C++ class definitions, storing
+// their locations in a map of strings/int's
+</i></font><b>typedef</b> std::map&lt;std::string, <b>int</b>, std::less&lt;std::string&gt; &gt; map_type;
+
+const char* re =
+ // possibly leading whitespace:
+ "^[[:space:]]*"
+ // possible template declaration:
+ "(template[[:space:]]*&lt;[^;:{]+&gt;[[:space:]]*)?"
+ // class or struct:
+ "(class|struct)[[:space:]]*"
+ // leading declspec macros etc:
+ "("
+ "\\&lt;\\w+\\&gt;"
+ "("
+ "[[:blank:]]*\\([^)]*\\)"
+ ")?"
+ "[[:space:]]*"
+ ")*"
+ // the class name
+ "(\\&lt;\\w*\\&gt;)[[:space:]]*"
+ // template specialisation parameters
+ "(&lt;[^;:{]+&gt;)?[[:space:]]*"
+ // terminate in { or :
+ "(\\{|:[^;\\{()]*\\{)";
+
+boost::regex expression(re);
+<b>class</b> IndexClassesPred
+{
+ map_type&amp; m;
+ std::string::const_iterator base;
+<b>public</b>:
+ IndexClassesPred(map_type&amp; a, std::string::const_iterator b) : m(a), base(b) {}
+ <b>bool</b> <b>operator</b>()(<b>const</b> smatch&amp; what)
+ {
+ <font color=
+#000080> <i>// what[0] contains the whole string
+</i> <i>// what[5] contains the class name.
+</i> <i>// what[6] contains the template specialisation if any.
+</i> <i>// add class name and position to map:
+</i></font> m[std::string(what[5].first, what[5].second) + std::string(what[6].first, what[6].second)] =
+ what[5].first - base;
+ <b>return</b> <b>true</b>;
+ }
+};
+<b>void</b> IndexClasses(map_type&amp; m, <b>const</b> std::string&amp; file)
+{
+ std::string::const_iterator start, end;
+ start = file.begin();
+ end = file.end();
+ regex_grep(IndexClassesPred(m, start), start, end, expression);
+}
+</pre>
+ <p> Example: Use
+ regex_grep to call a global callback function:</p>
+ <pre>
+<font color="#008000">#include &lt;string&gt;
+#include &lt;map&gt;
+#include &lt;boost/regex.hpp&gt;
+
+</font><font color="#000080"><i>// purpose:
+// takes the contents of a file in the form of a string
+// and searches for all the C++ class definitions, storing
+// their locations in a map of strings/int's
+</i></font><b>typedef</b> std::map&lt;std::string, <b>int</b>, std::less&lt;std::string&gt; &gt; map_type;
+
+const char* re =
+ // possibly leading whitespace:
+ "^[[:space:]]*"
+ // possible template declaration:
+ "(template[[:space:]]*&lt;[^;:{]+&gt;[[:space:]]*)?"
+ // class or struct:
+ "(class|struct)[[:space:]]*"
+ // leading declspec macros etc:
+ "("
+ "\\&lt;\\w+\\&gt;"
+ "("
+ "[[:blank:]]*\\([^)]*\\)"
+ ")?"
+ "[[:space:]]*"
+ ")*"
+ // the class name
+ "(\\&lt;\\w*\\&gt;)[[:space:]]*"
+ // template specialisation parameters
+ "(&lt;[^;:{]+&gt;)?[[:space:]]*"
+ // terminate in { or :
+ "(\\{|:[^;\\{()]*\\{)";
+
+boost::regex expression(re);
+map_type class_index;
+std::string::const_iterator base;
+
+<b>bool</b> grep_callback(<b>const</b> boost::smatch&amp; what)
+{
+ <font color="#000080"> <i>// what[0] contains the whole string
+</i> <i>// what[5] contains the class name.
+</i> <i>// what[6] contains the template specialisation if any.
+</i> <i>// add class name and position to map:
+</i></font> class_index[std::string(what[5].first, what[5].second) + std::string(what[6].first, what[6].second)] =
+ what[5].first - base;
+ <b>return</b> <b>true</b>;
+}
+<b>void</b> IndexClasses(<b>const</b> std::string&amp; file)
+{
+ std::string::const_iterator start, end;
+ start = file.begin();
+ end = file.end();
+ base = start;
+ regex_grep(grep_callback, start, end, expression, match_default);
+}
+
+</pre>
+ <p> Example: use
+ regex_grep to call a class member function, use the standard library adapters <i>std::mem_fun</i>
+ and <i>std::bind1st</i> to convert the member function into a predicate:</p>
+ <pre>
+<font color="#008000">#include &lt;string&gt;
+#include &lt;map&gt;
+#include &lt;boost/regex.hpp&gt;
+#include &lt;functional&gt;
+</font><font color="#000080"><i>// purpose:
+// takes the contents of a file in the form of a string
+// and searches for all the C++ class definitions, storing
+// their locations in a map of strings/int's
+
+</i></font><b>typedef</b> std::map&lt;std::string, <b>int</b>, std::less&lt;std::string&gt; &gt; map_type;
+<b>class</b> class_index
+{
+ boost::regex expression;
+ map_type index;
+ std::string::const_iterator base;
+ <b>bool</b> grep_callback(boost::smatch what);
+<b>public</b>:
+ <b> void</b> IndexClasses(<b>const</b> std::string&amp; file);
+ class_index()
+ : index(),
+ expression(<font color=
+#000080>"^(template[[:space:]]*&lt;[^;:{]+&gt;[[:space:]]*)?"
+ "(class|struct)[[:space:]]*(\\&lt;\\w+\\&gt;([[:blank:]]*\\([^)]*\\))?"
+ "[[:space:]]*)*(\\&lt;\\w*\\&gt;)[[:space:]]*(&lt;[^;:{]+&gt;[[:space:]]*)?"
+ "(\\{|:[^;\\{()]*\\{)"
+</font> ){}
+};
+<b>bool</b> class_index::grep_callback(boost::smatch what)
+{
+ <font color="#000080"> <i>// what[0] contains the whole string
+</i> <i>// what[5] contains the class name.
+</i> <i>// what[6] contains the template specialisation if any.
+</i> <i>// add class name and position to map:
+</i></font> index[std::string(what[5].first, what[5].second) + std::string(what[6].first, what[6].second)] =
+ what[5].first - base;
+ <b>return</b> <b>true</b>;
+}
+
+<b>void</b> class_index::IndexClasses(<b>const</b> std::string&amp; file)
+{
+ std::string::const_iterator start, end;
+ start = file.begin();
+ end = file.end();
+ base = start;
+ regex_grep(std::bind1st(std::mem_fun(&amp;class_index::grep_callback), <b>this</b>),
+ start,
+ end,
+ expression);
+}
+
+</pre>
+ <p> Finally, C++
+ Builder users can use C++ Builder's closure type as a callback argument:</p>
+ <pre>
+<font color="#008000">#include &lt;string&gt;
+#include &lt;map&gt;
+#include &lt;boost/regex.hpp&gt;
+#include &lt;functional&gt;
+</font><font color="#000080"><i>// purpose:
+// takes the contents of a file in the form of a string
+// and searches for all the C++ class definitions, storing
+// their locations in a map of strings/int's
+
+</i></font><b>typedef</b> std::map&lt;std::string, <b>int</b>, std::less&lt;std::string&gt; &gt; map_type;
+<b>class</b> class_index
+{
+ boost::regex expression;
+ map_type index;
+ std::string::const_iterator base;
+ <b>typedef</b> boost::smatch arg_type;
+ <b>bool</b> grep_callback(<b>const</b> arg_type&amp; what);
+<b>public</b>:
+ <b>typedef</b> <b>bool</b> (<b>__closure</b>* grep_callback_type)(<b>const</b> arg_type&amp;);
+ <b>void</b> IndexClasses(<b>const</b> std::string&amp; file);
+ class_index()
+ : index(),
+ expression(<font color=
+#000080>"^(template[[:space:]]*&lt;[^;:{]+&gt;[[:space:]]*)?"
+ "(class|struct)[[:space:]]*(\\&lt;\\w+\\&gt;([[:blank:]]*\\([^)]*\\))?"
+ "[[:space:]]*)*(\\&lt;\\w*\\&gt;)[[:space:]]*(&lt;[^;:{]+&gt;[[:space:]]*)?"
+ "(\\{|:[^;\\{()]*\\{)"
+</font> ){}
+};
+
+<b>bool</b> class_index::grep_callback(<b>const</b> arg_type&amp; what)
+{
+ <font color=
+#000080> <i>// what[0] contains the whole string</i>
+<i>// what[5] contains the class name.</i>
+<i>// what[6] contains the template specialisation if any.</i>
+<i>// add class name and position to map:</i></font>
+index[std::string(what[5].first, what[5].second) + std::string(what[6].first, what[6].second)] =
+ what[5].first - base;
+ <b>return</b> <b>true</b>;
+}
+
+<b>void</b> class_index::IndexClasses(<b>const</b> std::string&amp; file)
+{
+ std::string::const_iterator start, end;
+ start = file.begin();
+ end = file.end();
+ base = start;
+ class_index::grep_callback_type cl = &amp;(<b>this</b>-&gt;grep_callback);
+ regex_grep(cl,
+ start,
+ end,
+ expression);
+}
+</pre>
+ <p></p>
+ <hr>
+ <p>Revised
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->
+ 26 June 2004
+ <!--webbot bot="Timestamp" endspan i-checksum="39359" --></p>
+ <p><i>© Copyright John Maddock&nbsp;1998-
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%Y" startspan --> 2004<!--webbot bot="Timestamp" endspan i-checksum="39359" --></i></p>
+ <P><I>Use, modification and distribution are subject to the Boost Software License,
+ Version 1.0. (See accompanying file LICENSE_1_0.txt
+ or copy at http://www.boost.org/LICENSE_1_0.txt)</I></P>
+ </body>
+</html>

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/doc/regex_iterator.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/doc/regex_iterator.html 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,456 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+ <head>
+ <title>Boost.Regex: regex_iterator</title>
+ <meta name="generator" content="HTML Tidy, see www.w3.org">
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <link href="../../../boost.css" type="text/css" rel="stylesheet">
+ </head>
+ <body>
+ <p></p>
+ <table id="Table1" cellspacing="1" cellpadding="1" width="100%" border="0">
+ <tr>
+ <td valign="top" width="300">
+ <h3>C++ Boost</h3>
+ </td>
+ <td width="353">
+ <h1 align="center">Boost.Regex</h1>
+ <h2 align="center">regex_iterator</h2>
+ </td>
+ <td width="50">
+ <h3>Boost.Regex Index</h3>
+ </td>
+ </tr>
+ </table>
+ <br>
+ <br>
+ <hr>
+ <h3>Contents</h3>
+ <dl class="index">
+ <dt>Synopsis <dt>Description <dt><a href="#examples">
+ Examples</a></dt>
+ </dl>
+ <h3><a name="synopsis"></a>Synopsis</h3>
+ <p>The iterator type regex_iterator will enumerate all of the regular expression
+ matches found in some sequence: dereferencing a regex_iterator yields a
+ reference to a&nbsp;match_results object.</p>
+ <pre>
+template &lt;class BidirectionalIterator,
+ class charT = iterator_traits&lt;BidirectionalIterator&gt;::value_type,
+ class traits = regex_traits&lt;charT&gt; &gt;
+class regex_iterator
+{
+public:
+ typedef basic_regex&lt;charT, traits&gt; regex_type;
+ typedef match_results&lt;BidirectionalIterator&gt; value_type;
+ typedef typename iterator_traits&lt;BidirectionalIterator&gt;::difference_type difference_type;
+ typedef const value_type* pointer;
+ typedef const value_type&amp; reference;
+ typedef std::forward_iterator_tag iterator_category;
+
+ regex_iterator();
+ regex_iterator(BidirectionalIterator a, BidirectionalIterator b,
+ const regex_type&amp; re,
+ match_flag_type m = match_default);
+ regex_iterator(const regex_iterator&amp;);
+ regex_iterator&amp; operator=(const regex_iterator&amp;);
+ bool operator==(const regex_iterator&amp;)const;
+ bool operator!=(const regex_iterator&amp;)const;
+ const value_type&amp; operator*()const;
+ const value_type* operator-&gt;()const;
+ regex_iterator&amp; operator++();
+ regex_iterator operator++(int);
+};
+
+typedef
+regex_iterator&lt;const
+
+char*&gt; cregex_iterator; typedef regex_iterator&lt;std::string::const_iterator&gt;
+sregex_iterator; #ifndef BOOST_NO_WREGEX
+typedef regex_iterator&lt;const
+wchar_t*&gt; wcregex_iterator; typedef regex_iterator&lt;std::wstring::const_iterator&gt;
+wsregex_iterator; #endif template
+&lt;class
+
+charT, class traits&gt; regex_iterator&lt;const charT*,
+charT, traits&gt;
+ make_regex_iterator(const charT* p, const basic_regex&lt;charT, traits&gt;&amp; e, regex_constants::match_flag_type m = regex_constants::match_default); template &lt;class
+
+charT, class traits, class ST, class SA&gt; regex_iterator&lt;typename std::basic_string&lt;charT,
+ST, SA&gt;::const_iterator, charT, traits&gt;
+ make_regex_iterator(const std::basic_string&lt;charT, ST, SA&gt;&amp; p, const basic_regex&lt;charT, traits&gt;&amp; e, regex_constants::match_flag_type m = regex_constants::match_default);
+
+</pre>
+ <h3><a name="description"></a>Description</h3>
+ <p>A regex_iterator is constructed from a pair of iterators, and enumerates all
+ occurrences of a regular expression within that iterator range.</p>
+ <pre><A name=c1></A>
+regex_iterator();
+</pre>
+ <b></b>
+ <p><b>Effects:</b> constructs an end of sequence regex_iterator.</p>
+ <pre><A name=c2></A>regex_iterator(BidirectionalIterator a, BidirectionalIterator b,
+ const regex_type&amp; re,
+ match_flag_type m = match_default);
+</pre>
+ <b></b>
+ <p><b>Effects:</b> constructs a regex_iterator that will enumerate all occurrences
+ of the expression <em>re</em>, within the sequence <em>[a,b)</em>, and found
+ using match flags <em>m</em>.&nbsp; The object <em>re</em> must exist for the
+ lifetime of the regex_iterator.</p>
+ <P><STRONG>Throws:</STRONG> <CODE>std::runtime_error</CODE> if the complexity of
+ matching the expression against an N character string begins to exceed O(N<SUP>2</SUP>),
+ or if the program runs out of stack space while matching the expression (if
+ Boost.regex is configured in recursive mode),
+ or if the matcher exhausts it's permitted memory allocation (if Boost.regex is <A href="configuration.html">
+ configured</A> in non-recursive mode).</P>
+ <pre><A name=c3></A>
+regex_iterator(const regex_iterator&amp; that);
+</pre>
+ <b></b>
+ <p><b>Effects:</b> constructs a copy of <code>that</code>.</p>
+ <b></b>
+ <p><b>Postconditions:</b> <code>*this == that</code>.</p>
+ <pre><A name=o1></A>
+regex_iterator&amp; operator=(const regex_iterator&amp;);
+</pre>
+ <b></b>
+ <p><b>Effects:</b> sets&nbsp;<code>*this</code> equal to those in <code>that</code>.</p>
+ <b></b>
+ <p><b>Postconditions:</b> <code>*this == that</code>.</p>
+ <pre><A name=o2></A>
+bool operator==(const regex_iterator&amp; that)const;
+</pre>
+ <b></b>
+ <p><b>Effects:</b> returns true if *this is equal to that.</p>
+ <pre><A name=o3></A>
+bool operator!=(const regex_iterator&amp;)const;
+</pre>
+ <b></b>
+ <p><b>Effects:</b> returns <code>!(*this == that)</code>.</p>
+ <pre><A name=o4></A>
+const value_type&amp; operator*()const;
+</pre>
+ <p><b>Effects:</b> dereferencing a regex_iterator object <em>it</em> yields a
+ const reference to a match_results object,
+ whose members are set as follows:</p>
+ <p></p>
+ <table id="Table2" cellspacing="1" cellpadding="7" width="624" border="1">
+ <tbody>
+ <tr>
+ <td valign="top" width="50%"><b></b>
+ <p><b>Element</b></p>
+ </td>
+ <td valign="top" width="50%"><b></b>
+ <p><b>Value</b></p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" width="50%">
+ <p>(*it).size()</p>
+ </td>
+ <td valign="top" width="50%">
+ <p>re.mark_count()</p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" width="50%">
+ <p>(*it).empty()</p>
+ </td>
+ <td valign="top" width="50%">
+ <p>false</p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" width="50%">
+ <p>(*it).prefix().first</p>
+ </td>
+ <td valign="top" width="50%">
+ <p>The end of the last match found, or the start of the underlying sequence if
+ this is the first match enumerated</p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" width="50%">
+ <p>(*it).prefix().last</p>
+ </td>
+ <td valign="top" width="50%">
+ <p>The same as the start of the match found:<BR>
+ (*it)[0].first</p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" width="50%">
+ <p>(*it).prefix().matched</p>
+ </td>
+ <td valign="top" width="50%">
+ <p>True if the prefix did not match an empty string:<BR>
+ (*it).prefix().first != (*it).prefix().second</p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" width="50%">
+ <p>(*it).suffix().first</p>
+ </td>
+ <td valign="top" width="50%">
+ <p>The same as the end of the match found:<BR>
+ (*it)[0].second</p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" width="50%">
+ <p>(*it).suffix().last</p>
+ </td>
+ <td valign="top" width="50%">
+ <p>The end of the underlying sequence.</p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" width="50%">
+ <p>(*it).suffix().matched</p>
+ </td>
+ <td valign="top" width="50%">
+ <p>True if the suffix did not match an empty string:<BR>
+ (*it).suffix().first != (*it).suffix().second</p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" width="50%">
+ <p>(*it)[0].first</p>
+ </td>
+ <td valign="top" width="50%">
+ <p>The start of the sequence of characters that matched the regular expression</p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" width="50%">
+ <p>(*it)[0].second</p>
+ </td>
+ <td valign="top" width="50%">
+ <p>The end of the sequence of characters that matched the regular expression</p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" width="50%">
+ <p>(*it)[0].matched</p>
+ </td>
+ <td valign="top" width="50%">
+ <p><code>true</code> if a full match was found, and <code>false</code> if it was a
+ partial match (found as a result of the <code>match_partial</code> flag being
+ set).</p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" width="50%">
+ <p>(*it)[n].first</p>
+ </td>
+ <td valign="top" width="50%">
+ <p>For all integers n &lt; (*it).size(), the start of the sequence that matched
+ sub-expression <i>n</i>. Alternatively, if sub-expression n did not participate
+ in the match, then <i>last</i>.</p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" width="50%">
+ <p>(*it)[n].second</p>
+ </td>
+ <td valign="top" width="50%">
+ <p>For all integers n &lt; (*it).size(), the end of the sequence that matched
+ sub-expression <i>n</i>. Alternatively, if sub-expression n did not participate
+ in the match, then <i>last</i>.</p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" width="50%">
+ <p>(*it)[n].matched</p>
+ </td>
+ <td valign="top" width="50%">
+ <p>For all integers n &lt; (*it).size(), true if sub-expression <i>n</i> participated
+ in the match, false otherwise.</p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" width="50%">(*it).position(n)</td>
+ <td valign="top" width="50%">For all integers n &lt; (*it).size(), then the
+ distance from the start of the underlying sequence to the start of
+ sub-expression match <em>n</em>.</td>
+ </tr>
+ </tbody>
+ </table>
+ <br>
+ <br>
+ <pre><A name=o5></A>
+const value_type* operator-&gt;()const;
+</pre>
+ <b></b>
+ <p><b>Effects:</b> returns <code>&amp;(*this)</code>.</p>
+ <pre><A name=o6></A>
+regex_iterator&amp; operator++();
+</pre>
+ <p><strong>Effects:</strong> moves the iterator to the next match in the
+ underlying sequence, or the end of sequence iterator if none if found.
+ &nbsp;When the last match found matched a zero length string, then the
+ regex_iterator will find the next match as follows: if there exists a non-zero
+ length match that starts at the same location as the last one, then returns it,
+ otherwise starts looking for the next (possibly zero length) match from one
+ position to the right of the last match.</p>
+ <P><STRONG>Throws:</STRONG> <CODE>std::runtime_error</CODE> if the complexity of
+ matching the expression against an N character string begins to exceed O(N<SUP>2</SUP>),
+ or if the program runs out of stack space while matching the expression (if
+ Boost.regex is configured in recursive mode),
+ or if the matcher exhausts it's permitted memory allocation (if Boost.regex is <A href="configuration.html">
+ configured</A> in non-recursive mode).</P>
+ <b></b>
+ <p><b>Returns:</b> <code>*this</code>.</p>
+ <pre><A name=o7></A>
+regex_iterator operator++(int);
+</pre>
+ <b></b>
+ <p><b>Effects:</b> constructs a copy <code>result</code> of <code>*this</code>,
+ then calls <code>++(*this)</code>.</p>
+ <b></b>
+ <p><b>Returns:</b> <code>result</code>.</p>
+ <PRE><A name=make_regex_iterator></A>template &lt;class charT, class traits&gt; regex_iterator&lt;const charT*, charT, traits&gt;
+make_regex_iterator(const charT*
+ p, const basic_regex&lt;charT,
+ traits&gt;&amp; e, regex_constants::match_flag_type m
+ = regex_constants::match_default); template &lt;class
+
+charT, class traits, class ST, class SA&gt; regex_iterator&lt;typename std::basic_string&lt;charT,
+ST, SA&gt;::const_iterator, charT, traits&gt;
+ make_regex_iterator(const std::basic_string&lt;charT, ST, SA&gt;&amp; p,
+ const basic_regex&lt;charT, traits&gt;&amp; e,
+ regex_constants::match_flag_type m = regex_constants::match_default);
+</PRE>
+ <P><STRONG>Effects:</STRONG> returns an iterator that enumerates all occurences of
+ expression <EM>e</EM> in text <EM>p</EM> using match_flags <EM>m</EM>.</P>
+ <h3><a name=examples></a>Examples</h3>
+ <p>The following example
+ takes a C++ source file and builds up an index of class names, and the location
+ of that class in the file.</p>
+ <pre>
+<font color="#008040">#include &lt;string&gt;</font>
+<font color="#008040">#include &lt;map&gt;</font>
+<font color="#008040">#include &lt;fstream&gt;</font>
+<font color="#008040">#include &lt;iostream&gt;</font>
+<font color="#008040">#include &lt;boost/regex.hpp&gt;</font>
+
+<b>using</b> <b>namespace</b> std;
+
+<i><font color="#000080">// purpose:</font></i>
+<i><font color=
+#000080>// takes the contents of a file in the form of a string</font></i>
+<i><font color=
+#000080>// and searches for all the C++ class definitions, storing</font></i>
+<i><font color=
+#000080>// their locations in a map of strings/int's</font></i>
+
+<b>typedef</b> std::map&lt;std::string, std::string::difference_type, std::less&lt;std::string&gt; &gt; map_type;
+
+<b>const</b> <b>char</b>* re =
+ <i><font color=
+#000080>// possibly leading whitespace: </font></i>
+ <font color="#0000ff">"^[[:space:]]*"</font>
+ <i><font color=
+#000080>// possible template declaration:</font></i>
+ <font color=
+#0000ff>"(template[[:space:]]*&lt;[^;:{]+&gt;[[:space:]]*)?"</font>
+ <i><font color="#000080">// class or struct:</font></i>
+ <font color="#0000ff">"(class|struct)[[:space:]]*"</font>
+ <i><font color=
+#000080>// leading declspec macros etc:</font></i>
+ <font color="#0000ff">"("</font>
+ <font color="#0000ff">"\\&lt;\\w+\\&gt;"</font>
+ <font color="#0000ff">"("</font>
+ <font color="#0000ff">"[[:blank:]]*\\([^)]*\\)"</font>
+ <font color="#0000ff">")?"</font>
+ <font color="#0000ff">"[[:space:]]*"</font>
+ <font color="#0000ff">")*"</font>
+ <i><font color="#000080">// the class name</font></i>
+ <font color="#0000ff">"(\\&lt;\\w*\\&gt;)[[:space:]]*"</font>
+ <i><font color=
+#000080>// template specialisation parameters</font></i>
+ <font color="#0000ff">"(&lt;[^;:{]+&gt;)?[[:space:]]*"</font>
+ <i><font color="#000080">// terminate in { or :</font></i>
+ <font color="#0000ff">"(\\{|:[^;\\{()]*\\{)"</font>;
+
+
+boost::regex expression(re);
+map_type class_index;
+
+<b>bool</b> regex_callback(<b>const</b> boost::match_results&lt;std::string::const_iterator&gt;&amp; what)
+{
+ <i><font color=
+#000080>// what[0] contains the whole string</font></i>
+ <i><font color=
+#000080>// what[5] contains the class name.</font></i>
+ <i><font color=
+#000080>// what[6] contains the template specialisation if any.</font></i>
+ <i><font color=
+#000080>// add class name and position to map:</font></i>
+ class_index[what[<font color=
+#0000a0>5</font>].str() + what[<font color=
+#0000a0>6</font>].str()] = what.position(<font color=
+#0000a0>5</font>);
+ <b>return</b> <b>true</b>;
+}
+
+<b>void</b> load_file(std::string&amp; s, std::istream&amp; is)
+{
+ s.erase();
+ s.reserve(is.rdbuf()-&gt;in_avail());
+ <b>char</b> c;
+ <b>while</b>(is.get(c))
+ {
+ <b>if</b>(s.capacity() == s.size())
+ s.reserve(s.capacity() * <font color="#0000a0">3</font>);
+ s.append(<font color="#0000a0">1</font>, c);
+ }
+}
+
+<b>int</b> main(<b>int</b> argc, <b>const</b> <b>char</b>** argv)
+{
+ std::string text;
+ <b>for</b>(<b>int</b> i = <font color=
+#0000a0>1</font>; i &lt; argc; ++i)
+ {
+ cout &lt;&lt; <font color=
+#0000ff>"Processing file "</font> &lt;&lt; argv[i] &lt;&lt; endl;
+ std::ifstream fs(argv[i]);
+ load_file(text, fs);
+ <i><font color=
+#000080>// construct our iterators:</font></i>
+ boost::sregex_iterator m1(text.begin(), text.end(), expression);
+ boost::sregex_iterator m2;
+ std::for_each(m1, m2, &amp;regex_callback);
+ <i><font color="#000080">// copy results:</font></i>
+ cout &lt;&lt; class_index.size() &lt;&lt; <font color=
+#0000ff>" matches found"</font> &lt;&lt; endl;
+ map_type::iterator c, d;
+ c = class_index.begin();
+ d = class_index.end();
+ <b>while</b>(c != d)
+ {
+ cout &lt;&lt; <font color=
+#0000ff>"class \""</font> &lt;&lt; (*c).first &lt;&lt; <font
+color=
+#0000ff>"\" found at index: "</font> &lt;&lt; (*c).second &lt;&lt; endl;
+ ++c;
+ }
+ class_index.erase(class_index.begin(), class_index.end());
+ }
+ <b>return</b> <font color="#0000a0">0</font>;
+}
+</pre>
+ <hr>
+ <p>Revised&nbsp;&nbsp;
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->
+ 06 Jan 05&nbsp;
+ <!--webbot bot="Timestamp" endspan i-checksum="39359" --></p>
+ <p><i>© Copyright John Maddock&nbsp;1998-
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%Y" startspan --> 2005<!--webbot bot="Timestamp" endspan i-checksum="39359" --></i></p>
+ <P><I>Use, modification and distribution are subject to the Boost Software License,
+ Version 1.0. (See accompanying file LICENSE_1_0.txt
+ or copy at http://www.boost.org/LICENSE_1_0.txt)</I></P>
+ </body>
+</html>

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/doc/regex_match.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/doc/regex_match.html 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,318 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+ <head>
+ <title>Boost.Regex: Algorithm regex_match</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <link rel="stylesheet" type="text/css" href="../../../boost.css">
+ </head>
+ <body>
+ <P>
+ <TABLE id="Table1" cellSpacing="1" cellPadding="1" width="100%" border="0">
+ <TR>
+ <td valign="top" width="300">
+ <h3>C++ Boost</h3>
+ </td>
+ <TD width="353">
+ <H1 align="center">Boost.Regex</H1>
+ <H2 align="center">Algorithm regex_match</H2>
+ </TD>
+ <td width="50">
+ <h3>Boost.Regex Index</h3>
+ </td>
+ </TR>
+ </TABLE>
+ </P>
+ <HR>
+ <p></p>
+ <H3>Contents</H3>
+ <dl class="index">
+ <dt>Synopsis <dt>Description <dt><a href="#examples">
+ Examples</a></dt>
+ </dl>
+ <H3><A name="synopsis"></A>Synopsis</H3>
+ <PRE><A name=query_match></A>#include &lt;boost/regex.hpp&gt; </PRE>
+ <P>
+ The algorithm regex _match determines whether a given regular expression
+ matches all of a given character sequence denoted by a pair of
+ bidirectional-iterators, the algorithm is defined as follows, the main use of
+ this function is data input validation.
+ <P><STRONG>Note that the result is true only if the expression matches the whole of
+ the input sequence.&nbsp;</STRONG> If you want to search for an expression
+ somewhere within the sequence then use regex_search.&nbsp;
+ If you want to match a prefix of the character string then use <A href="regex_search.html">
+ regex_search</A> with the flag match_continuous
+ set.
+ <PRE>
+template &lt;class BidirectionalIterator, class Allocator, class charT, class traits&gt;
+bool regex_match(BidirectionalIterator first, BidirectionalIterator last,
+ match_results&lt;BidirectionalIterator, Allocator&gt;&amp; m,
+ const basic_regex &lt;charT, traits&gt;&amp; e,
+ match_flag_type flags = match_default);
+
+template &lt;class BidirectionalIterator, class charT, class traits&gt;
+bool regex_match(BidirectionalIterator first, BidirectionalIterator last,
+ const basic_regex &lt;charT, traits&gt;&amp; e,
+ match_flag_type flags = match_default);
+
+template &lt;class charT, class Allocator, class traits&gt;
+bool regex_match(const charT* str, match_results&lt;const charT*, Allocator&gt;&amp; m,
+ const basic_regex &lt;charT, traits&gt;&amp; e,
+ match_flag_type flags = match_default);
+
+template &lt;class ST, class SA, class Allocator, class charT, class traits&gt;
+bool regex_match(const basic_string&lt;charT, ST, SA&gt;&amp; s,
+ match_results&lt;typename basic_string&lt;charT, ST, SA&gt;::const_iterator, Allocator&gt;&amp; m,
+ const basic_regex &lt;charT, traits&gt;&amp; e,
+ match_flag_type flags = match_default);
+
+template &lt;class charT, class traits&gt;
+bool regex_match(const charT* str,
+ const basic_regex &lt;charT, traits&gt;&amp; e,
+ match_flag_type flags = match_default);
+
+template &lt;class ST, class SA, class charT, class traits&gt;
+bool regex_match(const basic_string&lt;charT, ST, SA&gt;&amp; s,
+ const basic_regex &lt;charT, traits&gt;&amp; e,
+ match_flag_type flags = match_default);
+</PRE>
+ <H3><A name="description"></A>Description</H3>
+ <PRE><A name=f1></A>template &lt;class BidirectionalIterator, class Allocator, class charT, class traits&gt;
+bool regex_match(BidirectionalIterator first, BidirectionalIterator last,
+ match_results&lt;BidirectionalIterator, Allocator&gt;&amp; m,
+ const basic_regex &lt;charT, traits&gt;&amp; e,
+ match_flag_type flags = match_default);</PRE>
+ <P><B> Requires:</B> Type BidirectionalIterator meets the requirements of a
+ Bidirectional Iterator (24.1.4).</P>
+ <P><B> Effects: </B>Determines whether there is an exact match between the regular
+ expression <I>e</I>, and all of the character sequence [first, last), parameter <I>
+ flags</I> is used to <A href="match_flag_type.html">control how the expression
+ is matched</A> against the character sequence. Returns true if such a match
+ exists, false otherwise.</P>
+ <P><STRONG>Throws:</STRONG> <code>std::runtime_error</code> if the complexity of
+ matching the expression against an N character string begins to exceed O(N<SUP>2</SUP>),
+ or if the program runs out of stack space while matching the expression (if
+ Boost.regex is configured in recursive mode),
+ or if the matcher exhausts it's permitted memory allocation (if Boost.regex is <A href="configuration.html">
+ configured</A> in non-recursive mode).</P>
+ <P><B> Postconditions: </B>If the function returns false, then the effect on
+ parameter <I>m</I> is undefined, otherwise the effects on parameter <I>m</I> are
+ given in the table:</P>
+ <P align="center">
+ <CENTER>
+ <TABLE id="Table2" cellSpacing="1" cellPadding="7" width="624" border="1">
+ <TBODY>
+ <TR>
+ <TD vAlign="top" width="50%">
+ <P><B> Element</B>
+ </P>
+ </TD>
+ <TD vAlign="top" width="50%">
+ <P><B> Value</B>
+ </P>
+ </TD>
+ </TR>
+ <TR>
+ <TD vAlign="top" width="50%">
+ <P>m.size()</P>
+ </TD>
+ <TD vAlign="top" width="50%">
+ <P>e.mark_count()</P>
+ </TD>
+ </TR>
+ <TR>
+ <TD vAlign="top" width="50%">
+ <P>m.empty()</P>
+ </TD>
+ <TD vAlign="top" width="50%">
+ <P>false</P>
+ </TD>
+ </TR>
+ <TR>
+ <TD vAlign="top" width="50%">
+ <P>m.prefix().first</P>
+ </TD>
+ <TD vAlign="top" width="50%">
+ <P>first</P>
+ </TD>
+ </TR>
+ <TR>
+ <TD vAlign="top" width="50%">
+ <P>m.prefix().last</P>
+ </TD>
+ <TD vAlign="top" width="50%">
+ <P>first</P>
+ </TD>
+ </TR>
+ <TR>
+ <TD vAlign="top" width="50%">
+ <P>m.prefix().matched</P>
+ </TD>
+ <TD vAlign="top" width="50%">
+ <P>false</P>
+ </TD>
+ </TR>
+ <TR>
+ <TD vAlign="top" width="50%">
+ <P>m.suffix().first</P>
+ </TD>
+ <TD vAlign="top" width="50%">
+ <P>last</P>
+ </TD>
+ </TR>
+ <TR>
+ <TD vAlign="top" width="50%">
+ <P>m.suffix().last</P>
+ </TD>
+ <TD vAlign="top" width="50%">
+ <P>last</P>
+ </TD>
+ </TR>
+ <TR>
+ <TD vAlign="top" width="50%">
+ <P>m.suffix().matched</P>
+ </TD>
+ <TD vAlign="top" width="50%">
+ <P>false</P>
+ </TD>
+ </TR>
+ <TR>
+ <TD vAlign="top" width="50%">
+ <P>m[0].first</P>
+ </TD>
+ <TD vAlign="top" width="50%">
+ <P>first</P>
+ </TD>
+ </TR>
+ <TR>
+ <TD vAlign="top" width="50%">
+ <P>m[0].second</P>
+ </TD>
+ <TD vAlign="top" width="50%">
+ <P>last</P>
+ </TD>
+ </TR>
+ <TR>
+ <TD vAlign="top" width="50%">
+ <P>m[0].matched</P>
+ </TD>
+ <TD vAlign="top" width="50%">
+ <P><CODE> true</CODE> if a full match was found, and <CODE>false</CODE> if it was
+ a partial match (found as a result of the <CODE>match_partial</CODE> flag being
+ set).</P>
+ </TD>
+ </TR>
+ <TR>
+ <TD vAlign="top" width="50%">
+ <P>m[n].first</P>
+ </TD>
+ <TD vAlign="top" width="50%">
+ <P>For all integers n &lt; m.size(), the start of the sequence that matched
+ sub-expression <I>n</I>. Alternatively, if sub-expression n did not participate
+ in the match, then <I>last</I>.</P>
+ </TD>
+ </TR>
+ <TR>
+ <TD vAlign="top" width="50%">
+ <P>m[n].second</P>
+ </TD>
+ <TD vAlign="top" width="50%">
+ <P>For all integers n &lt; m.size(), the end of the sequence that matched
+ sub-expression <I>n</I>. Alternatively, if sub-expression n did not participate
+ in the match, then <I>last</I>.</P>
+ </TD>
+ </TR>
+ <TR>
+ <TD vAlign="top" width="50%">
+ <P>m[n].matched</P>
+ </TD>
+ <TD vAlign="top" width="50%">
+ <P>For all integers n &lt; m.size(), true if sub-expression <I>n</I> participated
+ in the match, false otherwise.</P>
+ </TD>
+ </TR>
+ </TBODY></TD></TR></TABLE>
+ </CENTER>
+ <P></P>
+ <DIV></DIV>
+ <PRE>&nbsp;</PRE>
+ <PRE><A name=f2></A>template &lt;class BidirectionalIterator, class charT, class traits&gt;
+bool regex_match(BidirectionalIterator first, BidirectionalIterator last,
+ const basic_regex &lt;charT, traits&gt;&amp; e,
+ match_flag_type flags = match_default);</PRE>
+ <P><B> Effects:</B> Behaves "as if" by constructing an instance of <CODE><A href="match_results.html">
+ match_results</A>&lt;</CODE>BidirectionalIterator<CODE>&gt; what</CODE>,
+ and then returning the result of <CODE>regex_match(first, last, what, e, flags)</CODE>.</P>
+ <PRE><A name=f3></A>template &lt;class charT, class Allocator, class traits&gt;
+bool regex_match(const charT* str, match_results&lt;const charT*, Allocator&gt;&amp; m,
+ const basic_regex &lt;charT, traits&gt;&amp; e,
+ match_flag_type flags = match_default);</PRE>
+ <P><B> Effects:</B> Returns the result of <CODE>regex_match(str, str +
+ char_traits&lt;charT&gt;::length(str), m, e, flags)</CODE>.</P>
+ <PRE><A name=f4></A>template &lt;class ST, class SA, class Allocator,
+ class charT, class traits&gt;
+bool regex_match(const basic_string&lt;charT, ST, SA&gt;&amp; s,
+ match_results&lt;typename basic_string&lt;charT, ST, SA&gt;::const_iterator, Allocator&gt;&amp; m,
+ const basic_regex &lt;charT, traits&gt;&amp; e,
+ match_flag_type flags = match_default);</PRE>
+ <P><B> Effects:</B> Returns the result of <CODE>regex_match(s.begin(), s.end(), m, e,
+ flags)</CODE>.</P>
+ <PRE><A name=f5></A>template &lt;class charT, class traits&gt;
+bool regex_match(const charT* str,
+ const basic_regex &lt;charT, traits&gt;&amp; e,
+ match_flag_type flags = match_default);</PRE>
+ <P><B> Effects:</B> Returns the result of <CODE>regex_match(str, str +
+ char_traits&lt;charT&gt;::length(str), e, flags)</CODE>.</P>
+ <PRE><A name=f6></A>template &lt;class ST, class SA, class charT, class traits&gt;
+bool regex_match(const basic_string&lt;charT, ST, SA&gt;&amp; s,
+ const basic_regex &lt;charT, traits&gt;&amp; e,
+ match_flag_type flags = match_default);</PRE>
+ <P><B> Effects:</B> Returns the result of <CODE>regex_match(s.begin(), s.end(), e,
+ flags)</CODE>.
+ <H3><A name="examples"></A>Examples</H3>
+ <P>The following example
+ processes an ftp response:
+ <P></P>
+ <PRE><FONT color=#008000>#include &lt;stdlib.h&gt;
+#include &lt;boost/regex.hpp&gt;
+#include &lt;string&gt;
+#include &lt;iostream&gt;
+
+</FONT><B>using namespace</B> boost;
+
+regex expression(<FONT color=#000080>"([0-9]+)(\\-| |$)(.*)"</FONT>);
+
+<FONT color=#000080><I>// process_ftp:
+// on success returns the ftp response code, and fills
+// msg with the ftp response message.
+</I></FONT><B>int</B> process_ftp(<B>const</B> <B>char</B>* response, std::string* msg)
+{
+&nbsp;&nbsp; cmatch what;
+&nbsp;&nbsp; <B>if</B>(regex_match(response, what, expression))
+&nbsp;&nbsp; {
+<FONT color=#000080>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <I>// what[0] contains the whole string
+</I>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <I>// what[1] contains the response code
+</I>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <I>// what[2] contains the separator character
+</I>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <I>// what[3] contains the text message.
+</I></FONT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <B>if</B>(msg)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; msg-&gt;assign(what[3].first, what[3].second);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <B>return</B> std::atoi(what[1].first);
+&nbsp;&nbsp; }
+<FONT color=#000080>&nbsp;&nbsp; <I>// failure did not match
+</I></FONT>&nbsp;&nbsp; <B>if</B>(msg)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; msg-&gt;erase();
+&nbsp;&nbsp; <B>return</B> -1;
+}
+ <P>
+ <HR></PRE>
+ <P></P>
+ <p>Revised&nbsp;
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->
+ 26 June 2004&nbsp;
+ <!--webbot bot="Timestamp" endspan i-checksum="39359" --></p>
+ <p><i>© Copyright John Maddock&nbsp;1998-
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%Y" startspan --> 2004<!--webbot bot="Timestamp" endspan i-checksum="39359" --></i></p>
+ <P><I>Use, modification and distribution are subject to the Boost Software License,
+ Version 1.0. (See accompanying file LICENSE_1_0.txt
+ or copy at http://www.boost.org/LICENSE_1_0.txt)</I></P>
+ </body>
+</html>

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/doc/regex_merge.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/doc/regex_merge.html 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,45 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+ <head>
+ <title>Boost.Regex: Algorithm regex_merge (deprecated)</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <link rel="stylesheet" type="text/css" href="../../../boost.css">
+ </head>
+ <body>
+ <P>
+ <TABLE id="Table1" cellSpacing="1" cellPadding="1" width="100%" border="0">
+ <TR>
+ <td valign="top" width="300">
+ <h3>C++ Boost</h3>
+ </td>
+ <TD width="353">
+ <H1 align="center">Boost.Regex</H1>
+ <H2 align="center">Algorithm regex_merge (deprecated)</H2>
+ </TD>
+ <td width="50">
+ <h3>Boost.Regex Index</h3>
+ </td>
+ </TR>
+ </TABLE>
+ </P>
+ <HR>
+ <p></p>
+ <P>Algorithm regex_merge has been renamed regex_replace,
+ existing code will continue to compile, but new code should use <A href="regex_replace.html">
+ regex_replace</A> instead.</P>
+ <P>
+ <HR>
+ <P></P>
+ <p>Revised
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->
+ 24 Oct 2003
+ <!--webbot bot="Timestamp" endspan i-checksum="39359" --></p>
+ <p><i>© Copyright John Maddock&nbsp;1998-
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%Y" startspan -->
+ 2003<!--webbot bot="Timestamp" endspan i-checksum="39359" --></i></p>
+ <P><I>Use, modification and distribution are subject to the Boost Software License,
+ Version 1.0. (See accompanying file LICENSE_1_0.txt
+ or copy at http://www.boost.org/LICENSE_1_0.txt)</I></P>
+ </body>
+</html>
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/doc/regex_replace.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/doc/regex_replace.html 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,256 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+ <head>
+ <title>Boost.Regex: Algorithm regex_replace</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <LINK href="../../../boost.css" type="text/css" rel="stylesheet"></head>
+ <body>
+ <P>
+ <TABLE id="Table1" cellSpacing="1" cellPadding="1" width="100%" border="0">
+ <TR>
+ <td vAlign="top" width="300">
+ <h3>C++ Boost</h3>
+ </td>
+ <TD width="353">
+ <H1 align="center">Boost.Regex</H1>
+ <H2 align="center">Algorithm regex_replace</H2>
+ </TD>
+ <td width="50">
+ <h3>Boost.Regex Index</h3>
+ </td>
+ </TR>
+ </TABLE>
+ </P>
+ <HR>
+ <H3>Contents</H3>
+ <dl class="index">
+ <dt>Synopsis <dt>Description <dt><A href="#examples">
+ Examples</A></dt></dl>
+ <H3><A name="synopsis"></A>Synopsis</H3>
+ <PRE>#include &lt;boost/regex.hpp&gt; </PRE>
+ <P>The algorithm regex_replace&nbsp;searches&nbsp;through&nbsp;a string finding
+ all the matches to the regular expression: for each match it then calls <A href="match_results.html#format">
+ match_results::format</A> to format the string and sends the result to the
+ output iterator. Sections of text that do not match are copied to the output
+ unchanged only if the <EM>flags</EM> parameter does not have the flag <A href="match_flag_type.html">
+ format_no_copy</A> set. If the flag format_first_only
+ is set then only the first occurrence is replaced rather than all
+ occurrences.&nbsp;<PRE>template &lt;class OutputIterator, class BidirectionalIterator, class traits, class charT&gt;
+OutputIterator regex_replace(OutputIterator out,
+ BidirectionalIterator first,
+ BidirectionalIterator last,
+ const basic_regex&lt;charT, traits&gt;&amp; e,
+ const basic_string&lt;charT&gt;&amp; fmt,
+ match_flag_type flags = match_default);
+
+template &lt;class traits, class charT&gt;
+basic_string&lt;charT&gt; regex_replace(const basic_string&lt;charT&gt;&amp; s,
+ const basic_regex&lt;charT, traits&gt;&amp; e,
+ const basic_string&lt;charT&gt;&amp; fmt,
+ match_flag_type flags = match_default);
+
+</PRE>
+ <H3><A name="description"></A>Description</H3>
+ <PRE><A name=f1></A>template &lt;class OutputIterator, class BidirectionalIterator, class traits, class charT&gt;
+OutputIterator regex_replace(OutputIterator out,
+ BidirectionalIterator first,
+ BidirectionalIterator last,
+ const basic_regex&lt;charT, traits&gt;&amp; e,
+ const basic_string&lt;charT&gt;&amp; fmt,
+ match_flag_type flags = match_default);</PRE>
+ <P>Enumerates all the occurences of expression <EM>e</EM> in the sequence [first,
+ last), replacing each occurence with the string that results by merging the
+ match found with the format string <EM>fmt</EM>, and copies the resulting
+ string to <EM>out</EM>.&nbsp;</P>
+ <P>If the flag format_no_copy is set in <EM>flags</EM> then unmatched sections of
+ text are not copied to output.&nbsp;
+ </P>
+ <P>If the flag format_first_only is set in <EM>flags</EM> then only the first
+ occurence of <EM>e</EM> is replaced.&nbsp;
+ </P>
+ <P>The manner in which the format string <EM>fmt</EM> is interpretted, along with
+ the rules used&nbsp;for finding matches,&nbsp;are determined by the <A href="match_flag_type.html">
+ flags</A> set in <EM>flags</EM></P>
+ <P><B>Effects:</B> Constructs an
+ <SPAN class="spelle">regex_iterator</SPAN>
+ object:
+ </P>
+ <PRE><SPAN style="FONT-SIZE: 10pt">regex_iterator&lt;</SPAN><SPAN class=spelle><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">BidirectionalIterator</SPAN></SPAN><SPAN style="FONT-SIZE: 10pt">, </SPAN><SPAN class=spelle><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">charT</SPAN></SPAN><SPAN style="FONT-SIZE: 10pt">, traits, Allocator&gt; <BR> </SPAN><SPAN class=grame><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">i(</SPAN></SPAN><SPAN style="FONT-SIZE: 10pt">first, last, e, flags)</SPAN>, </PRE>
+ <P>and uses
+ <SPAN class="spelle">
+ <I>i</I></SPAN>
+ to enumerate through all of the matches <I>m</I> of type
+ <SPAN class="spelle">
+ <SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">match_results</SPAN>
+ </SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">&lt;<SPAN class="spelle">BidirectionalIterator</SPAN>&gt; </SPAN>that
+ occur within the sequence [first, last).
+ </P>
+ <P>If no such matches are found
+ <SPAN class="grame">and </SPAN></P>
+ <PRE><SPAN class=grame></SPAN><SPAN class=grame><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">!</SPAN></SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">(flags &amp; <SPAN class=spelle>format_no_copy</SPAN>)</SPAN> </PRE>
+ <P>then calls
+ </P>
+ <PRE><SPAN class=spelle><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">std::copy</SPAN></SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">(first, last, out)</SPAN>. </PRE>
+ <P>Otherwise, for each match found,
+ <SPAN class="grame">if </SPAN></P>
+ <PRE><SPAN class=grame></SPAN><SPAN class=grame><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">!</SPAN></SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">(flags &amp; <SPAN class=spelle>format_no_copy</SPAN>)</SPAN> </PRE>
+ <P>calls
+ </P>
+ <PRE><SPAN class=spelle><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">std::copy</SPAN></SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">(<SPAN class=spelle>m.prefix</SPAN>().first, <SPAN class=spelle>m.prefix</SPAN>().last, out)</SPAN>, </PRE>
+ <P>and then calls
+ </P>
+ <PRE><SPAN class=spelle><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">m.format</SPAN></SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">(out, <SPAN class=spelle>fmt</SPAN>, flags)</SPAN>. </PRE>
+ <P>Finally
+ <SPAN class="grame">if </SPAN></P>
+ <PRE><SPAN class=grame></SPAN><SPAN class=grame><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">!</SPAN></SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">(flags &amp; <SPAN class=spelle>format_no_copy</SPAN>)</SPAN> </PRE>
+ <P>calls
+ </P>
+ <PRE><SPAN class=spelle><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">std::copy</SPAN></SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">(<SPAN class=spelle>last_m.suffix</SPAN>().first, <SPAN class=spelle>last_m,suffix</SPAN>().last, out) </SPAN></PRE>
+ <P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"></SPAN>where
+ <SPAN class="spelle">
+ <SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">last_m</SPAN>
+ </SPAN>
+ is a copy of the last match found.
+ </P>
+ <P>If
+ <SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">flags &amp;
+<SPAN class="spelle">format_first_only</SPAN></SPAN>
+ is non-zero then only the first match found is replaced.</P>
+ <P><STRONG>Throws:</STRONG> <CODE>std::runtime_error</CODE> if the complexity of
+ matching the expression against an N character string begins to exceed O(N<SUP>2</SUP>),
+ or if the program runs out of stack space while matching the expression (if
+ Boost.regex is configured in recursive mode),
+ or if the matcher exhausts it's permitted memory allocation (if Boost.regex is <A href="configuration.html">
+ configured</A> in non-recursive mode).</P>
+ <P><B> Returns:</B> <CODE>out</CODE>.
+ </P>
+ <PRE><A name=f2></A>template &lt;class traits, class charT&gt;
+basic_string&lt;charT&gt; regex_replace(const basic_string&lt;charT&gt;&amp; s,
+ const basic_regex&lt;charT, traits&gt;&amp; e,
+ const basic_string&lt;charT&gt;&amp; fmt,
+ match_flag_type flags = match_default);</PRE>
+ <P><B> Effects:</B> Constructs an object <CODE>basic_string&lt;charT&gt; result</CODE>,
+ calls <CODE>regex_replace(back_inserter(result), s.begin(), s.end(), e, fmt,
+ flags)</CODE>, and then returns <CODE>result</CODE>.
+ <H3><A name="examples"></A>Examples</H3>
+ <P>The following example
+ takes C/C++ source code as input, and outputs syntax highlighted HTML code.</P>
+ <P></P>
+ <PRE><FONT color=#008080>#include &lt;fstream&gt;
+#include &lt;sstream&gt;
+#include &lt;string&gt;
+#include &lt;iterator&gt;
+#include &lt;boost/regex.hpp&gt;
+#include &lt;fstream&gt;
+#include &lt;iostream&gt;
+</FONT>
+<FONT color=#000080><I>// purpose:
+// takes the contents of a file and transform to
+// syntax highlighted code in html format
+</I></FONT>
+boost::regex e1, e2;
+<B>extern</B> <B>const</B> <B>char</B>* expression_text;
+<B>extern</B> <B>const</B> <B>char</B>* format_string;
+<B>extern</B> <B>const</B> <B>char</B>* pre_expression;
+<B>extern</B> <B>const</B> <B>char</B>* pre_format;
+<B>extern</B> <B>const</B> <B>char</B>* header_text;
+<B>extern</B> <B>const</B> <B>char</B>* footer_text;
+
+<B>void</B> load_file(std::string&amp; s, std::istream&amp; is)
+{
+ s.erase();
+ s.reserve(is.rdbuf()-&gt;in_avail());
+ <B>char</B> c;
+ <B>while</B>(is.get(c))
+ {
+ <B>if</B>(s.capacity() == s.size())
+ s.reserve(s.capacity() * <FONT color=#000080>3</FONT>);
+ s.append(<FONT color=#000080>1</FONT>, c);
+ }
+}
+
+<B>int</B> main(<B>int</B> argc, <B>const</B> <B>char</B>** argv)
+{
+ try{
+ e1.assign(expression_text);
+ e2.assign(pre_expression);
+ <B>for</B>(<B>int</B> i = <FONT color=#000080>1</FONT>; i &lt; argc; ++i)
+ {
+ std::cout &lt;&lt; <FONT color=#0000ff>"Processing file "</FONT> &lt;&lt; argv[i] &lt;&lt; std::endl;
+ std::ifstream fs(argv[i]);
+ std::string in;
+ load_file(in, fs);
+ std::string out_name(std::string(argv[i]) + std::string(<FONT color=#0000ff>".htm"</FONT>));
+ std::ofstream os(out_name.c_str());
+ os &lt;&lt; header_text;
+ <FONT color=#000080><I>// strip '&lt;' and '&gt;' first by outputting to a
+</I></FONT> <FONT color=#000080><I>// temporary string stream
+</I></FONT> std::ostringstream t(std::ios::out | std::ios::binary);
+ std::ostream_iterator&lt;<B>char</B>, <B>char</B>&gt; oi(t);
+ boost::regex_replace(oi, in.begin(), in.end(),
+ e2, pre_format, boost::match_default | boost::format_all);
+ <FONT color=#000080><I>// then output to final output stream
+</I></FONT> <FONT color=#000080><I>// adding syntax highlighting:
+</I></FONT> std::string s(t.str());
+ std::ostream_iterator&lt;<B>char</B>, <B>char</B>&gt; out(os);
+ boost::regex_replace(out, s.begin(), s.end(),
+ e1, format_string, boost::match_default | boost::format_all);
+ os &lt;&lt; footer_text;
+ }
+ }
+ <STRONG>catch</STRONG>(...)
+ { <STRONG>return</STRONG> -1; }
+ <B>return</B> <FONT color=#000080>0</FONT>;
+}
+
+<B>extern</B> <B>const</B> <B>char</B>* pre_expression = <FONT color=#0000ff>"(&lt;)|(&gt;)|(&amp;)|\\r"</FONT>;
+<B>extern</B> <B>const</B> <B>char</B>* pre_format = <FONT color=#0000ff>"(?1&lt;)(?2&gt;)(?3&amp;amp;)"</FONT>;
+
+
+<B>const</B> <B>char</B>* expression_text = <FONT color=#000080><I>// preprocessor directives: index 1
+</I></FONT> <FONT color=#0000ff>"(^[[:blank:]]*#(?:[^\\\\\\n]|\\\\[^\\n[:punct:][:word:]]*[\\n[:punct:][:word:]])*)|"
+</FONT> <FONT color=#000080><I>// comment: index 2
+</I></FONT> <FONT color=#0000ff>"(//[^\\n]*|/\\*.*?\\*/)|"
+</FONT> <FONT color=#000080><I>// literals: index 3
+</I></FONT> <FONT color=#0000ff>"\\&lt;([+-]?(?:(?:0x[[:xdigit:]]+)|(?:(?:[[:digit:]]*\\.)?[[:digit:]]+(?:[eE][+-]?[[:digit:]]+)?))u?(?:(?:int(?:8|16|32|64))|L)?)\\&gt;|"
+</FONT> <FONT color=#000080><I>// string literals: index 4
+</I></FONT> <FONT color=#0000ff>"('(?:[^\\\\']|\\\\.)*'|\"(?:[^\\\\\"]|\\\\.)*\")|"
+</FONT> <FONT color=#000080><I>// keywords: index 5
+</I></FONT> <FONT color=#0000ff>"\\&lt;(__asm|__cdecl|__declspec|__export|__far16|__fastcall|__fortran|__import"
+</FONT> <FONT color=#0000ff>"|__pascal|__rtti|__stdcall|_asm|_cdecl|__except|_export|_far16|_fastcall"
+</FONT> <FONT color=#0000ff>"|__finally|_fortran|_import|_pascal|_stdcall|__thread|__try|asm|auto|bool"
+</FONT> <FONT color=#0000ff>"|break|case|catch|cdecl|char|class|const|const_cast|continue|default|delete"
+</FONT> <FONT color=#0000ff>"|do|double|dynamic_cast|else|enum|explicit|extern|false|float|for|friend|goto"
+</FONT> <FONT color=#0000ff>"|if|inline|int|long|mutable|namespace|new|operator|pascal|private|protected"
+</FONT> <FONT color=#0000ff>"|public|register|reinterpret_cast|return|short|signed|sizeof|static|static_cast"
+</FONT> <FONT color=#0000ff>"|struct|switch|template|this|throw|true|try|typedef|typeid|typename|union|unsigned"
+</FONT> <FONT color=#0000ff>"|using|virtual|void|volatile|wchar_t|while)\\&gt;"
+</FONT> ;
+
+<B>const</B> <B>char</B>* format_string = <FONT color=#0000ff>"(?1&lt;font color=\"#008040\"&gt;$&amp;&lt;/font&gt;)"
+</FONT> <FONT color=#0000ff>"(?2&lt;I&gt;&lt;font color=\"#000080\"&gt;$&amp;&lt;/font&gt;&lt;/I&gt;)"
+</FONT> <FONT color=#0000ff>"(?3&lt;font color=\"#0000A0\"&gt;$&amp;&lt;/font&gt;)"
+</FONT> <FONT color=#0000ff>"(?4&lt;font color=\"#0000FF\"&gt;$&amp;&lt;/font&gt;)"
+</FONT> <FONT color=#0000ff>"(?5&lt;B&gt;$&amp;&lt;/B&gt;)"</FONT>;
+
+<B>const</B> <B>char</B>* header_text = <FONT color=#0000ff>"&lt;HTML&gt;\n&lt;HEAD&gt;\n"
+</FONT> <FONT color=#0000ff>"&lt;TITLE&gt;Auto-generated html formated source&lt;/TITLE&gt;\n"
+</FONT> <FONT color=#0000ff>"&lt;META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=windows-1252\"&gt;\n"
+</FONT> <FONT color=#0000ff>"&lt;/HEAD&gt;\n"
+</FONT> <FONT color=#0000ff>"&lt;BODY LINK=\"#0000ff\" VLINK=\"#800080\" BGCOLOR=\"#ffffff\"&gt;\n"
+</FONT> <FONT color=#0000ff>"&lt;P&gt; &lt;/P&gt;\n&lt;PRE&gt;"</FONT>;
+
+<B>const</B> <B>char</B>* footer_text = <FONT color=#0000ff>"&lt;/PRE&gt;\n&lt;/BODY&gt;\n\n"</FONT>;
+ </PRE>
+ <HR>
+ <p>Revised&nbsp;
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->
+ 26 June 2004&nbsp;
+ <!--webbot bot="Timestamp" endspan i-checksum="39359" --></p>
+ <p><i>© Copyright John Maddock&nbsp;1998-
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%Y" startspan --> 2004<!--webbot bot="Timestamp" endspan i-checksum="39359" --></i></p>
+ <P><I>Use, modification and distribution are subject to the Boost Software License,
+ Version 1.0. (See accompanying file LICENSE_1_0.txt
+ or copy at http://www.boost.org/LICENSE_1_0.txt)</I></P>
+ </body>
+</html>

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/doc/regex_search.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/doc/regex_search.html 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,315 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+ <head>
+ <title>Boost.Regex: Algorithm regex_search</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <LINK href="../../../boost.css" type="text/css" rel="stylesheet"></head>
+ <body>
+ <P>
+ <TABLE id="Table1" cellSpacing="1" cellPadding="1" width="100%" border="0">
+ <TR>
+ <td vAlign="top" width="300">
+ <h3>C++ Boost</h3>
+ </td>
+ <TD width="353">
+ <H1 align="center">Boost.Regex</H1>
+ <H2 align="center">Algorithm regex_search</H2>
+ </TD>
+ <td width="50">
+ <h3>Boost.Regex Index</h3>
+ </td>
+ </TR>
+ </TABLE>
+ </P>
+ <HR>
+ <H3>Contents</H3>
+ <dl class="index">
+ <dt>Synopsis <dt>Description <dt><A href="#examples">
+ Examples</A></dt></dl>
+ <H3><A name="synopsis"></A>Synopsis</H3>
+ <PRE>#include &lt;boost/regex.hpp&gt; </PRE>
+ <P></P>
+ <P>The algorithm regex_search will search a range denoted by a pair of
+ bidirectional-iterators for a given regular expression. The algorithm uses
+ various heuristics to reduce the search time by only checking for a match if a
+ match could conceivably start at that position. The algorithm is defined as
+ follows:
+ <PRE>template &lt;class BidirectionalIterator,
+ class Allocator, class charT, class traits&gt;
+bool regex_search(BidirectionalIterator first, BidirectionalIterator last,
+ match_results&lt;BidirectionalIterator, Allocator&gt;&amp; m,
+ const basic_regex&lt;charT, traits&gt;&amp; e,
+ match_flag_type flags = match_default);
+
+template &lt;class ST, class SA,
+ class Allocator, class charT, class traits&gt;
+bool regex_search(const basic_string&lt;charT, ST, SA&gt;&amp; s,
+ match_results&lt;
+ typename basic_string&lt;charT, ST,SA&gt;::const_iterator,
+ Allocator&gt;&amp; m,
+ const basic_regex&lt;charT, traits&gt;&amp; e,
+ match_flag_type flags = match_default);
+
+template&lt;class charT, class Allocator, class traits&gt;
+bool regex_search(const charT* str,
+ match_results&lt;const charT*, Allocator&gt;&amp; m,
+ const basic_regex&lt;charT, traits&gt;&amp; e,
+ match_flag_type flags = match_default);
+
+template &lt;class BidirectionalIterator, class charT, class traits&gt;
+bool regex_search(BidirectionalIterator first, BidirectionalIterator last,
+ const basic_regex&lt;charT, traits&gt;&amp; e,
+ match_flag_type flags = match_default);
+
+template &lt;class charT, class traits&gt;
+bool regex_search(const charT* str,
+ const basic_regex&lt;charT, traits&gt;&amp; e,
+ match_flag_type flags = match_default);
+
+template&lt;class ST, class SA, class charT, class traits&gt;
+bool regex_search(const basic_string&lt;charT, ST, SA&gt;&amp; s,
+ const basic_regex&lt;charT, traits&gt;&amp; e,
+ match_flag_type flags = match_default);
+</PRE>
+ <H3><A name="description"></A>Description</H3>
+ <PRE><A name=f1></A>template &lt;class BidirectionalIterator, class Allocator, class charT, class traits&gt;
+bool regex_search(BidirectionalIterator first, BidirectionalIterator last,
+ match_results&lt;BidirectionalIterator, Allocator&gt;&amp; m,
+ const basic_regex&lt;charT, traits&gt;&amp; e,
+ match_flag_type flags = match_default);</PRE>
+ <P><B> Requires:</B> Type BidirectionalIterator meets the requirements of a
+ Bidirectional Iterator (24.1.4).</P>
+ <P><B> Effects: </B>Determines whether there is some sub-sequence within
+ [first,last) that matches the regular expression <I>e</I>, parameter <I>flags</I>
+ is used to control how the expression is matched against the character
+ sequence. Returns true if such a sequence exists, false otherwise.</P>
+ <P><STRONG>Throws:</STRONG> <CODE>std::runtime_error</CODE> if the complexity of
+ matching the expression against an N character string begins to exceed O(N<SUP>2</SUP>),
+ or if the program runs out of stack space while matching the expression (if
+ Boost.regex is configured in recursive mode),
+ or if the matcher exhausts it's permitted memory allocation (if Boost.regex is <A href="configuration.html">
+ configured</A> in non-recursive mode).</P>
+ <P><B> Postconditions: </B>If the function returns false, then the effect on
+ parameter <I>m</I> is undefined, otherwise the effects on parameter <I>m</I> are
+ given in the table:</P>
+ <DIV align="center">
+ <CENTER>
+ <TABLE id="Table2" cellSpacing="1" cellPadding="7" width="624" border="1">
+ <TR>
+ <TD vAlign="top" width="50%">
+ <P><B> Element</B></P>
+ </TD>
+ <TD vAlign="top" width="50%">
+ <P><B> Value</B>
+ </P>
+ </TD>
+ </TR>
+ <TR>
+ <TD vAlign="top" width="50%">
+ <P>m.size()</P>
+ </TD>
+ <TD vAlign="top" width="50%">
+ <P>e.mark_count()</P>
+ </TD>
+ </TR>
+ <TR>
+ <TD vAlign="top" width="50%">
+ <P>m.empty()</P>
+ </TD>
+ <TD vAlign="top" width="50%">
+ <P>false</P>
+ </TD>
+ </TR>
+ <TR>
+ <TD vAlign="top" width="50%">
+ <P>m.prefix().first</P>
+ </TD>
+ <TD vAlign="top" width="50%">
+ <P>first</P>
+ </TD>
+ </TR>
+ <TR>
+ <TD vAlign="top" width="50%">
+ <P>m.prefix().last</P>
+ </TD>
+ <TD vAlign="top" width="50%">
+ <P>m[0].first</P>
+ </TD>
+ </TR>
+ <TR>
+ <TD vAlign="top" width="50%">
+ <P>m.prefix().matched</P>
+ </TD>
+ <TD vAlign="top" width="50%">
+ <P>m.prefix().first != m.prefix().second</P>
+ </TD>
+ </TR>
+ <TR>
+ <TD vAlign="top" width="50%">
+ <P>m.suffix().first</P>
+ </TD>
+ <TD vAlign="top" width="50%">
+ <P>m[0].second</P>
+ </TD>
+ </TR>
+ <TR>
+ <TD vAlign="top" width="50%">
+ <P>m.suffix().last</P>
+ </TD>
+ <TD vAlign="top" width="50%">
+ <P>last</P>
+ </TD>
+ </TR>
+ <TR>
+ <TD vAlign="top" width="50%">
+ <P>m.suffix().matched</P>
+ </TD>
+ <TD vAlign="top" width="50%">
+ <P>m.suffix().first != m.suffix().second</P>
+ </TD>
+ </TR>
+ <TR>
+ <TD vAlign="top" width="50%">
+ <P>m[0].first</P>
+ </TD>
+ <TD vAlign="top" width="50%">
+ <P>The start of the sequence of characters that matched the regular expression</P>
+ </TD>
+ </TR>
+ <TR>
+ <TD vAlign="top" width="50%">
+ <P>m[0].second</P>
+ </TD>
+ <TD vAlign="top" width="50%">
+ <P>The end of the sequence of characters that matched the regular expression</P>
+ </TD>
+ </TR>
+ <TR>
+ <TD vAlign="top" width="50%">
+ <P>m[0].matched</P>
+ </TD>
+ <TD vAlign="top" width="50%">
+ <P><CODE> true</CODE> if a full match was found, and <CODE>false</CODE> if it was
+ a partial match (found as a result of the <CODE>match_partial</CODE> flag being
+ set).</P>
+ </TD>
+ </TR>
+ <TR>
+ <TD vAlign="top" width="50%">
+ <P>m[n].first</P>
+ </TD>
+ <TD vAlign="top" width="50%">
+ <P>For all integers n &lt; m.size(), the start of the sequence that matched
+ sub-expression <I>n</I>. Alternatively, if sub-expression n did not participate
+ in the match, then <I>last</I>.</P>
+ </TD>
+ </TR>
+ <TR>
+ <TD vAlign="top" width="50%">
+ <P>m[n].second</P>
+ </TD>
+ <TD vAlign="top" width="50%">
+ <P>For all integers n &lt; m.size(), the end of the sequence that matched
+ sub-expression <I>n</I>. Alternatively, if sub-expression n did not participate
+ in the match, then <I>last</I>.</P>
+ </TD>
+ </TR>
+ <TR>
+ <TD vAlign="top" width="50%">
+ <P>m[n].matched</P>
+ </TD>
+ <TD vAlign="top" width="50%">
+ <P>For all integers n &lt; m.size(), true if sub-expression <I>n</I> participated
+ in the match, false otherwise.</P>
+ </TD>
+ </TR>
+ </TD></TR></TABLE>
+ </CENTER>
+ </DIV>
+ <PRE><A name=f2></A>template &lt;class charT, class Allocator, class traits&gt;
+bool regex_search(const charT* str, match_results&lt;const charT*, Allocator&gt;&amp; m,
+ const basic_regex&lt;charT, traits&gt;&amp; e,
+ match_flag_type flags = match_default);</PRE>
+ <P><B> Effects:</B> Returns the result of <CODE>regex_search(str, str +
+ char_traits&lt;charT&gt;::length(str), m, e, flags)</CODE>.</P>
+ <PRE><A name=f3></A>template &lt;class ST, class SA, class Allocator, class charT,
+ class traits&gt;
+bool regex_search(const basic_string&lt;charT, ST, SA&gt;&amp; s,
+ match_results&lt;typename basic_string&lt;charT, ST, SA&gt;::const_iterator, Allocator&gt;&amp; m,
+ const basic_regex&lt;charT, traits&gt;&amp; e,
+ match_flag_type flags = match_default);</PRE>
+ <P><B> Effects:</B> Returns the result of <CODE>regex_search(s.begin(), s.end(), m,
+ e, flags)</CODE>.</P>
+ <PRE><A name=f4></A>template &lt;class iterator, class charT, class traits&gt;
+bool regex_search(iterator first, iterator last,
+ const basic_regex&lt;charT, traits&gt;&amp; e,
+ match_flag_type flags = match_default);</PRE>
+ <P><B> Effects:</B> Behaves "as if" by constructing an instance of <CODE><a href="match_results.html">
+ match_results</a>&lt;</CODE>BidirectionalIterator<CODE>&gt; what</CODE>,
+ and then returning the result of <CODE>regex_search(first, last, what, e, flags)</CODE>.</P>
+ <PRE><A name=f5></A>template &lt;class charT, class traits&gt;
+bool regex_search(const charT* str
+ const basic_regex&lt;charT, traits&gt;&amp; e,
+ match_flag_type flags = match_default);</PRE>
+ <P><B> Effects:</B> Returns the result of <CODE>regex_search(str, str +
+ char_traits&lt;charT&gt;::length(str), e, flags)</CODE>.</P>
+ <PRE><A name=f6></A>template &lt;class ST, class SA, class charT, class traits&gt;
+bool regex_search(const basic_string&lt;charT, ST, SA&gt;&amp; s,
+ const basic_regex&lt;charT, traits&gt;&amp; e,
+ match_flag_type flags = match_default);</PRE>
+ <P><B> Effects:</B> Returns the result of <CODE>regex_search(s.begin(), s.end(), e,
+ flags)</CODE>.
+ <H3><A name="examples"></A>Examples</H3>
+ <P>The following example,
+ takes the contents of a file in the form of a string, and searches for all the
+ C++ class declarations in the file. The code will work regardless of the way
+ that std::string is implemented, for example it could easily be modified to
+ work with the SGI rope class, which uses a non-contiguous storage strategy.</P>
+ <P></P>
+ <PRE><FONT color=#008000>#include &lt;string&gt;
+#include &lt;map&gt;
+#include &lt;boost/regex.hpp&gt;
+</FONT><FONT color=#000080><I>
+// purpose:
+// takes the contents of a file in the form of a string
+// and searches for all the C++ class definitions, storing
+// their locations in a map of strings/int's
+</I></FONT><B>typedef</B> std::map&lt;std::string, <B>int</B>, std::less&lt;std::string&gt; &gt; map_type;
+
+boost::regex expression("^(template[[:space:]]*&lt;[^;:{]+&gt;[[:space:]]*)?(class|struct)[[:space:]]*(\\&lt;\\w+\\&gt;([[:blank:]]*\\([^)]*\\))?[[:space:]]*)*(\\&lt;\\w*\\&gt;)[[:space:]]*(&lt;[^;:{]+&gt;[[:space:]]*)?(\\{|:[^;\\{()]*\\{)");
+<B>
+void</B> IndexClasses(map_type&amp; m, <B>const</B> std::string&amp; file)
+{
+&nbsp;&nbsp; std::string::const_iterator start, end;
+&nbsp;&nbsp; start = file.begin();
+&nbsp;&nbsp; end = file.end();&nbsp;
+&nbsp;&nbsp; &nbsp;&nbsp; boost::match_results&lt;std::string::const_iterator&gt; what;
+&nbsp;&nbsp; boost::match_flag_type flags = boost::match_default;
+&nbsp;&nbsp; <B>while</B>(regex_search(start, end, what, expression, flags))&nbsp;
+&nbsp;&nbsp; {
+<FONT color=#000080>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <I>// what[0] contains the whole string
+</I>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <I>// what[5] contains the class name.
+</I>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <I>// what[6] contains the template specialisation if any.
+</I>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <I>// add class name and position to map:
+</I></FONT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m[std::string(what[5].first, what[5].second) + std::string(what[6].first, what[6].second)] =&nbsp;
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; what[5].first - file.begin();&nbsp;
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT color=#000080><I>// update search position:
+</I></FONT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; start = what[0].second;&nbsp;
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT color=#000080><I>// update flags:
+</I></FONT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; flags |= boost::match_prev_avail;&nbsp;
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; flags |= boost::match_not_bob;&nbsp;
+&nbsp;&nbsp; }
+}
+ </PRE>
+ <HR>
+ <p>Revised
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->
+ 23 June 2004
+ <!--webbot bot="Timestamp" endspan i-checksum="39359" --></p>
+ <p><i>© Copyright John Maddock&nbsp;1998-
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%Y" startspan --> 2004<!--webbot bot="Timestamp" endspan i-checksum="39359" --></i></p>
+ <P><I>Use, modification and distribution are subject to the Boost Software License,
+ Version 1.0. (See accompanying file LICENSE_1_0.txt
+ or copy at http://www.boost.org/LICENSE_1_0.txt)</I></P>
+ </body>
+</html>

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/doc/regex_split.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/doc/regex_split.html 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,145 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+ <head>
+ <title>Boost.Regex: Algorithm regex_split (deprecated)</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <link rel="stylesheet" type="text/css" href="../../../boost.css">
+ </head>
+ <body>
+ <P>
+ <TABLE id="Table1" cellSpacing="1" cellPadding="1" width="100%" border="0">
+ <TR>
+ <td valign="top" width="300">
+ <h3>C++ Boost</h3>
+ </td>
+ <TD width="353">
+ <H1 align="center">Boost.Regex</H1>
+ <H2 align="center">Algorithm regex_split (deprecated)</H2>
+ </TD>
+ <td width="50">
+ <h3>Boost.Regex Index</h3>
+ </td>
+ </TR>
+ </TABLE>
+ </P>
+ <HR>
+ <p></p>
+ <P>The algorithm regex_split has been deprecated in favor of the iterator <A href="regex_token_iterator.html">
+ regex_token_iterator</A> which has a more flexible and powerful interface,
+ as well as following the more usual standard library "pull" rather than "push"
+ semantics.</P>
+ <P>Code which uses regex_split will continue to compile, the following
+ documentation is taken from the previous boost.regex version:</P>
+ <H3><A name="regex_split"></A>Algorithm regex_split</H3>
+ <PRE>#include &lt;boost/regex.hpp&gt; </PRE>
+ <P>Algorithm regex_split performs a similar operation to the perl split operation,
+ and comes in three overloaded forms:
+ </P>
+ <PRE><B>template</B> &lt;<B>class</B> OutputIterator, <B>class</B> charT, <B>class</B> Traits1, <B>class</B> Alloc1, <B>class</B> Traits2&gt;
+std::size_t regex_split(OutputIterator out,&nbsp;
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; std::basic_string&lt;charT, Traits1, Alloc1&gt;&amp; s,&nbsp;
+&nbsp;<B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const</B> basic_regex&lt;charT, Traits2&gt;&amp; e,
+&nbsp;<STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</STRONG>boost::match_flag_type flags,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; std::size_t max_split);
+
+<B>template</B> &lt;<B>class</B> OutputIterator, <B>class</B> charT, <B>class</B> Traits1, <B>class</B> Alloc1, <B>class</B> Traits2&gt;
+std::size_t regex_split(OutputIterator out,&nbsp;
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; std::basic_string&lt;charT, Traits1, Alloc1&gt;&amp; s,&nbsp;
+&nbsp;<B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const</B> basic_regex&lt;charT, Traits2&gt;&amp; e,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; boost::match_flag_type flags = match_default);
+
+<B>template</B> &lt;<B>class</B> OutputIterator, <B>class</B> charT, <B>class</B> Traits1, <B>class</B> Alloc1&gt;
+std::size_t regex_split(OutputIterator out,
+ std::basic_string&lt;charT, Traits1, Alloc1&gt;&amp; s);</PRE>
+ <P><STRONG>Effects: </STRONG>Each version of the algorithm takes an
+ output-iterator for output, and a string for input. If the expression contains
+ no marked sub-expressions, then the algorithm writes one string onto the
+ output-iterator for each section of input that does not match the expression.
+ If the expression does contain marked sub-expressions, then each time a match
+ is found, one string for each marked sub-expression will be written to the
+ output-iterator. No more than <I>max_split </I>strings will be written to the
+ output-iterator. Before returning, all the input processed will be deleted from
+ the string <I>s</I> (if <I>max_split </I>is not reached then all of <I>s</I> will
+ be deleted). Returns the number of strings written to the output-iterator. If
+ the parameter <I>max_split</I> is not specified then it defaults to UINT_MAX.
+ If no expression is specified, then it defaults to "\s+", and splitting occurs
+ on whitespace.
+ </P>
+ <P><STRONG>Throws:</STRONG> <CODE>std::runtime_error</CODE> if the complexity of
+ matching the expression against an N character string begins to exceed O(N<SUP>2</SUP>),
+ or if the program runs out of stack space while matching the expression (if
+ Boost.regex is configured in recursive mode),
+ or if the matcher exhausts it's permitted memory allocation (if Boost.regex is <A href="configuration.html">
+ configured</A> in non-recursive mode).</P>
+ <P>Example: the
+ following function will split the input string into a series of tokens, and
+ remove each token from the string <I>s</I>:
+ </P>
+ <PRE><B>unsigned</B> tokenise(std::list&lt;std::string&gt;&amp; l, std::string&amp; s)
+{
+<B>&nbsp;&nbsp; return</B> boost::regex_split(std::back_inserter(l), s);
+}</PRE>
+ <P>Example: the
+ following short program will extract all of the URL's from a html file, and
+ print them out to <I>cout</I>:
+ </P>
+ <PRE><FONT color=#008000>#include &lt;list&gt;
+#include &lt;fstream&gt;
+#include &lt;iostream&gt;
+#include &lt;boost/regex.hpp&gt;
+</FONT>
+boost::regex e(<FONT color=#000080>"&lt;\\s*A\\s+[^&gt;]*href\\s*=\\s*\"([^\"]*)\""</FONT>,
+ boost::regbase::normal | boost::regbase::icase);
+
+<B>void</B> load_file(std::string&amp; s, std::istream&amp; is)
+{
+ s.erase();
+ <FONT color=#000080>//
+ // attempt to grow string buffer to match file size,
+ // this doesn't always work...
+</FONT> s.reserve(is.rdbuf()-&amp;gtin_avail());
+ <B>char</B> c;
+ <B>while</B>(is.get(c))
+ {
+ <FONT color=#000080>// use logarithmic growth stategy, in case
+ // in_avail (above) returned zero:
+</FONT> <B>if</B>(s.capacity() == s.size())
+ s.reserve(s.capacity() * 3);
+ s.append(1, c);
+ }
+}
+
+
+<B>int</B> main(<B>int</B> argc, <B>char</B>** argv)
+{
+ std::string s;
+ std::list&lt;std::string&gt; l;
+
+ <B>for</B>(<B>int</B> i = 1; i &lt; argc; ++i)
+ {
+ std::cout &lt;&lt; <FONT color=#000080>"Findings URL's in "</FONT> &lt;&lt; argv[i] &lt;&lt; <FONT color=#000080>":"</FONT> &lt;&lt; std::endl;
+ s.erase();
+ std::ifstream is(argv[i]);
+ load_file(s, is);
+ boost::regex_split(std::back_inserter(l), s, e);
+ <B>while</B>(l.size())
+ {
+ s = *(l.begin());
+ l.pop_front();
+ std::cout &lt;&lt; s &lt;&lt; std::endl;
+ }
+ }
+ <B>return</B> 0;
+}</PRE>
+ <HR>
+ <p>Revised&nbsp;
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->
+ 26 June&nbsp;2004
+ <!--webbot bot="Timestamp" endspan i-checksum="39359" --></p>
+ <p><i>© Copyright John Maddock&nbsp;1998-
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%Y" startspan --> 2004<!--webbot bot="Timestamp" endspan i-checksum="39359" --></i></p>
+ <P><I>Use, modification and distribution are subject to the Boost Software License,
+ Version 1.0. (See accompanying file LICENSE_1_0.txt
+ or copy at http://www.boost.org/LICENSE_1_0.txt)</I></P>
+ </body>
+</html>

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/doc/regex_token_iterator.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/doc/regex_token_iterator.html 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,381 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+ <head>
+ <title>Boost.Regex: regex_token_iterator</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <LINK href="../../../boost.css" type="text/css" rel="stylesheet"></head>
+ <body>
+ <P>
+ <TABLE id="Table1" cellSpacing="1" cellPadding="1" width="100%" border="0">
+ <TR>
+ <td vAlign="top" width="300">
+ <h3>C++ Boost</h3>
+ </td>
+ <TD width="353">
+ <H1 align="center">Boost.Regex</H1>
+ <H2 align="center">regex_token_iterator</H2>
+ </TD>
+ <td width="50">
+ <h3>Boost.Regex Index</h3>
+ </td>
+ </TR>
+ </TABLE>
+ </P>
+ <HR>
+ <H3>Contents</H3>
+ <dl class="index">
+ <dt>Synopsis <dt>Description <dt><A href="#examples">
+ Examples</A></dt></dl>
+ <H3><A name="synopsis"></A>Synopsis</H3>
+ <P>The template class <CODE>regex_token_iterator</CODE> is an iterator adapter;
+ that is to say it represents a new view of an existing iterator sequence, by
+ enumerating all the occurrences of a regular expression within that sequence,
+ and presenting one or more character sequence for each match found. Each
+ position enumerated by the iterator is a sub_match
+ object that represents what matched a particular sub-expression within the
+ regular expression. When class <CODE>regex_token_iterator</CODE> is used to
+ enumerate a single sub-expression with index -1, then the iterator performs
+ field splitting: that is to say it enumerates one character sequence for each
+ section of the character container sequence that does not match the regular
+ expression specified.</P>
+ <PRE>
+template &lt;class BidirectionalIterator,
+ class charT = iterator_traits&lt;BidirectionalIterator&gt;::value_type,
+ class traits = regex_traits&lt;charT&gt; &gt;
+class regex_token_iterator
+{
+public:
+ typedef basic_regex&lt;charT, traits&gt; regex_type;
+ typedef sub_match&lt;BidirectionalIterator&gt; value_type;
+ typedef typename iterator_traits&lt;BidirectionalIterator&gt;::difference_type difference_type;
+ typedef const value_type* pointer;
+ typedef const value_type&amp; reference;
+ typedef std::forward_iterator_tag iterator_category;
+
+ regex_token_iterator();
+ regex_token_iterator(BidirectionalIterator a, BidirectionalIterator b, const regex_type&amp; re,
+ int submatch = 0, match_flag_type m = match_default);
+ regex_token_iterator(BidirectionalIterator a, BidirectionalIterator b, const regex_type&amp; re,
+ const std::vector&lt;int&gt;&amp; submatches, match_flag_type m = match_default);
+ template &lt;std::size_t N&gt;
+ regex_token_iterator(BidirectionalIterator a, BidirectionalIterator b, const regex_type&amp; re,
+ const int (&amp;submatches)[N], match_flag_type m = match_default);
+ regex_token_iterator(const regex_token_iterator&amp;);
+ regex_token_iterator&amp; operator=(const regex_token_iterator&amp;);
+ bool operator==(const regex_token_iterator&amp;)const;
+ bool operator!=(const regex_token_iterator&amp;)const;
+ const value_type&amp; operator*()const;
+ const value_type* operator-&gt;()const;
+ regex_token_iterator&amp; operator++();
+ regex_token_iterator operator++(int);
+};
+
+typedef regex_token_iterator&lt;const char*&gt; cregex_token_iterator;
+typedef regex_token_iterator&lt;std::string::const_iterator&gt; sregex_token_iterator;
+#ifndef BOOST_NO_WREGEX
+typedef regex_token_iterator&lt;const wchar_t*&gt; wcregex_token_iterator;
+typedef regex_token_iterator&lt;&lt;std::wstring::const_iterator&gt; wsregex_token_iterator;
+#endif
+
+template &lt;class charT, class traits&gt;
+regex_token_iterator&lt;const charT*, charT, traits&gt;
+ make_regex_token_iterator(const charT* p,
+ const basic_regex&lt;charT, traits&gt;&amp; e,
+ int submatch = 0,
+ regex_constants::match_flag_type m = regex_constants::match_default);
+
+template &lt;class charT, class traits, class ST, class SA&gt;
+regex_token_iterator&lt;typename std::basic_string&lt;charT, ST, SA&gt;::const_iterator, charT, traits&gt;
+ make_regex_token_iterator(const std::basic_string&lt;charT, ST, SA&gt;&amp; p,
+ const basic_regex&lt;charT, traits&gt;&amp; e,
+ int submatch = 0,
+ regex_constants::match_flag_type m = regex_constants::match_default);
+
+template &lt;class charT, class traits, std::size_t N&gt;
+regex_token_iterator&lt;const charT*, charT, traits&gt;
+ make_regex_token_iterator(const charT* p,
+ const basic_regex&lt;charT, traits&gt;&amp; e,
+ const int (&amp;submatch)[N],
+ regex_constants::match_flag_type m = regex_constants::match_default);
+
+template &lt;class charT, class traits, class ST, class SA, std::size_t N&gt;
+regex_token_iterator&lt;typename std::basic_string&lt;charT, ST, SA&gt;::const_iterator, charT, traits&gt;
+ make_regex_token_iterator(const std::basic_string&lt;charT, ST, SA&gt;&amp; p,
+ const basic_regex&lt;charT, traits&gt;&amp; e,
+ const int (&amp;submatch)[N],
+ regex_constants::match_flag_type m = regex_constants::match_default);
+
+template &lt;class charT, class traits&gt;
+regex_token_iterator&lt;const charT*, charT, traits&gt;
+ make_regex_token_iterator(const charT* p,
+ const basic_regex&lt;charT, traits&gt;&amp; e,
+ const std::vector&lt;int&gt;&amp; submatch,
+ regex_constants::match_flag_type m = regex_constants::match_default);
+
+template &lt;class charT, class traits, class ST, class SA&gt;
+regex_token_iterator&lt;typename std::basic_string&lt;charT, ST, SA&gt;::const_iterator, charT, traits&gt;
+ make_regex_token_iterator(const std::basic_string&lt;charT, ST, SA&gt;&amp; p,
+ const basic_regex&lt;charT, traits&gt;&amp; e,
+ const std::vector&lt;int&gt;&amp; submatch,
+ regex_constants::match_flag_type m = regex_constants::match_default);
+</PRE>
+ <H3><A name="description"></A>Description</H3>
+ <PRE><A name=c1></A>regex_token_iterator();</PRE>
+ <P><B> Effects:</B> constructs an end of sequence iterator.</P>
+ <PRE><A name=c2></A>regex_token_iterator(BidirectionalIterator a, BidirectionalIterator b, const regex_type&amp; re,
+ int submatch = 0, match_flag_type m = match_default);</PRE>
+ <P><B> Preconditions: </B><CODE>!re.empty()</CODE>.&nbsp; Object re shall exist
+ for the lifetime of the iterator constructed from it.</P>
+ <P><B> Effects:</B> constructs a regex_token_iterator that will enumerate one
+ string for each regular expression match of the expression <EM>re</EM> found
+ within the sequence <EM>[a,b)</EM>, using match flags <EM>m</EM>.&nbsp; The
+ string enumerated is the&nbsp;sub-expression <EM>submatch </EM>for each match
+ found; if <EM>submatch </EM>is -1, then enumerates all the text sequences that
+ did not match the expression <EM>re </EM>(that is to performs field splitting).</P>
+ <P><STRONG>Throws:</STRONG> <CODE>std::runtime_error</CODE> if the complexity of
+ matching the expression against an N character string begins to exceed O(N<SUP>2</SUP>),
+ or if the program runs out of stack space while matching the expression (if
+ Boost.regex is configured in recursive mode),
+ or if the matcher exhausts it's permitted memory allocation (if Boost.regex is <A href="configuration.html">
+ configured</A> in non-recursive mode).</P>
+ <PRE><A name=c3></A>regex_token_iterator(BidirectionalIterator a, BidirectionalIterator b, const regex_type&amp; re,
+ const std::vector&lt;int&gt;&amp; submatches, match_flag_type m = match_default);</PRE>
+ <P><B> Preconditions:</B> <CODE>submatches.size() &amp;&amp; !re.empty()</CODE>.&nbsp;
+ Object re shall exist for the lifetime of the iterator constructed from it.</P>
+ <P><B> Effects:</B> constructs a regex_token_iterator that will enumerate <EM>submatches.size()</EM>
+ strings for each regular expression match of the expression <EM>re</EM> found
+ within the sequence <EM>[a,b)</EM>, using match flags <EM>m</EM>.&nbsp; For
+ each match found one string will be enumerated&nbsp;for each sub-expression
+ index&nbsp;contained within <EM>submatches </EM>vector; if <EM>submatches[0] </EM>
+ is -1, then the first string enumerated for each match will be all of the text
+ from end of the last match to the start of the current match, in addition there
+ will be one extra string enumerated when no more matches can be found: from the
+ end of the last match found, to the end of the underlying sequence.</P>
+ <P><STRONG>Throws:</STRONG> <CODE>std::runtime_error</CODE> if the complexity of
+ matching the expression against an N character string begins to exceed O(N<SUP>2</SUP>),
+ or if the program runs out of stack space while matching the expression (if
+ Boost.regex is configured in recursive mode),
+ or if the matcher exhausts it's permitted memory allocation (if Boost.regex is <A href="configuration.html">
+ configured</A> in non-recursive mode).</P>
+ <PRE><A name=c4></A>template &lt;std::size_t N&gt;
+regex_token_iterator(BidirectionalIterator a, BidirectionalIterator b, const regex_type&amp; re,
+ const int (&amp;submatches)[R], match_flag_type m = match_default);</PRE>
+ <P><B> Preconditions: </B><CODE>!re.empty()</CODE>.&nbsp; Object re shall exist
+ for the lifetime of the iterator constructed from it.</P>
+ <P><STRONG>Effects:</STRONG></B> constructs a regex_token_iterator that will
+ enumerate&nbsp;<EM>R</EM> strings for each regular expression match of the
+ expression <EM>re</EM> found within the sequence <EM>[a,b)</EM>, using match
+ flags <EM>m</EM>.&nbsp; For each match found one string will be
+ enumerated&nbsp;for each sub-expression index&nbsp;contained within the <EM>submatches
+ </EM>array; if <EM>submatches[0] </EM>is -1, then the first string enumerated
+ for each match will be all of the text from end of the last match to the start
+ of the current match, in addition there will be one extra string enumerated
+ when no more matches can be found: from the end of the last match found, to the
+ end of the underlying sequence.</P>
+ <P><STRONG>Throws:</STRONG> <CODE>std::runtime_error</CODE> if the complexity of
+ matching the expression against an N character string begins to exceed O(N<SUP>2</SUP>),
+ or if the program runs out of stack space while matching the expression (if
+ Boost.regex is configured in recursive mode),
+ or if the matcher exhausts it's permitted memory allocation (if Boost.regex is <A href="configuration.html">
+ configured</A> in non-recursive mode).</P>
+ <PRE><A name=c5></A>regex_token_iterator(const regex_token_iterator&amp; that);</PRE>
+ <P><B> Effects: </B>constructs a copy of <CODE>that</CODE>.</P>
+ <P><B> Postconditions:</B> <CODE>*this == that</CODE>.</P>
+ <PRE><A name=o1></A>regex_token_iterator&amp; operator=(const regex_token_iterator&amp; that);</PRE>
+ <P><B> Effects: </B>sets <CODE>*this</CODE> to be equal to&nbsp;<CODE>that</CODE>.</P>
+ <P><B> Postconditions:</B> <CODE>*this == that</CODE>.</P>
+ <PRE><A name=o2></A>bool operator==(const regex_token_iterator&amp;)const;</PRE>
+ <P>
+ <B>Effects: </B>returns true if *this is the same position as that.</P>
+ <PRE><A name=o3></A>bool operator!=(const regex_token_iterator&amp;)const;</PRE>
+ <P>
+ <B>Effects: </B>returns <CODE>!(*this == that)</CODE>.</P>
+ <PRE><A name=o4></A>const value_type&amp; operator*()const;</PRE>
+ <P>
+ <B>Effects: </B>returns the current character sequence being enumerated.</P>
+ <PRE><A name=o5></A>const value_type* operator-&gt;()const;</PRE>
+ <P>
+ <B>Effects: </B>returns <CODE>&amp;(*this)</CODE>.</P>
+ <PRE><A name=o6></A>regex_token_iterator&amp; operator++();</PRE>
+ <P>
+ <B>Effects: </B>Moves on to the next character sequence to be enumerated.</P>
+ <P><STRONG>Throws:</STRONG> <CODE>std::runtime_error</CODE> if the complexity of
+ matching the expression against an N character string begins to exceed O(N<SUP>2</SUP>),
+ or if the program runs out of stack space while matching the expression (if
+ Boost.regex is configured in recursive mode),
+ or if the matcher exhausts it's permitted memory allocation (if Boost.regex is <A href="configuration.html">
+ configured</A> in non-recursive mode).</P>
+ <B>
+ <P>
+ Returns:</B><CODE> *this</CODE>.</P><PRE><A name=o7></A>regex_token_iterator&amp; operator++(int);</PRE>
+ <P><B> Effects:</B> constructs a copy <CODE>result</CODE> of <CODE>*this</CODE>,
+ then calls <CODE>++(*this)</CODE>.</P>
+ <P><B> Returns:</B> <CODE>result</CODE>.<A name="examples"></A>
+ <PRE><A name=make_regex_token_iterator></A>template &lt;class charT, class traits&gt;
+regex_token_iterator&lt;const charT*, charT, traits&gt;
+ make_regex_token_iterator(const charT* p,
+ const basic_regex&lt;charT, traits&gt;&amp; e,
+ int submatch = 0,
+ regex_constants::match_flag_type m = regex_constants::match_default);
+
+template &lt;class charT, class traits, class ST, class SA&gt;
+regex_token_iterator&lt;typename std::basic_string&lt;charT, ST, SA&gt;::const_iterator, charT, traits&gt;
+ make_regex_token_iterator(const std::basic_string&lt;charT, ST, SA&gt;&amp; p,
+ const basic_regex&lt;charT, traits&gt;&amp; e,
+ int submatch = 0,
+ regex_constants::match_flag_type m = regex_constants::match_default);
+
+template &lt;class charT, class traits, std::size_t N&gt;
+regex_token_iterator&lt;const charT*, charT, traits&gt;
+ make_regex_token_iterator(const charT* p,
+ const basic_regex&lt;charT, traits&gt;&amp; e,
+ const int (&amp;submatch)[N],
+ regex_constants::match_flag_type m = regex_constants::match_default);
+
+template &lt;class charT, class traits, class ST, class SA, std::size_t N&gt;
+regex_token_iterator&lt;typename std::basic_string&lt;charT, ST, SA&gt;::const_iterator, charT, traits&gt;
+ make_regex_token_iterator(const std::basic_string&lt;charT, ST, SA&gt;&amp; p,
+ const basic_regex&lt;charT, traits&gt;&amp; e,
+ const int (&amp;submatch)[N],
+ regex_constants::match_flag_type m = regex_constants::match_default);
+
+template &lt;class charT, class traits&gt;
+regex_token_iterator&lt;const charT*, charT, traits&gt;
+ make_regex_token_iterator(const charT* p,
+ const basic_regex&lt;charT, traits&gt;&amp; e,
+ const std::vector&lt;int&gt;&amp; submatch,
+ regex_constants::match_flag_type m = regex_constants::match_default);
+
+template &lt;class charT, class traits, class ST, class SA&gt;
+regex_token_iterator&lt;typename std::basic_string&lt;charT, ST, SA&gt;::const_iterator, charT, traits&gt;
+ make_regex_token_iterator(const std::basic_string&lt;charT, ST, SA&gt;&amp; p,
+ const basic_regex&lt;charT, traits&gt;&amp; e,
+ const std::vector&lt;int&gt;&amp; submatch,
+ regex_constants::match_flag_type m = regex_constants::match_default);
+</PRE>
+ <P>Effects: returns a regex_token_iterator that enumerates
+ one sub_match for each value in <EM>submatch</EM> for
+ each occurrence of regular expression <EM>e</EM> in string <EM>p</EM>, matched
+ using match_flags <EM>m</EM>.</P>
+ <P></P>
+ <H3>Examples</H3>
+ <P>The following example
+ takes a string and splits it into a series of tokens:</P>
+ <pre>
+<FONT color=#008040>#include &lt;iostream&gt;</FONT>
+<FONT color=#008040>#include &lt;boost/regex.hpp&gt;</FONT>
+
+<B>using</B> <B>namespace</B> std;
+
+<B>int</B> main(<B>int</B> argc)
+{
+ string s;
+ <B>do</B>{
+ <B>if</B>(argc == <FONT color=#0000a0>1</FONT>)
+ {
+ cout &lt;&lt; <FONT color=#0000ff>"Enter text to split (or \"quit\" to exit): "</FONT>;
+ getline(cin, s);
+ <B>if</B>(s == <FONT color=#0000ff>"quit"</FONT>) <B>break</B>;
+ }
+ <B>else</B>
+ s = <FONT color=#0000ff>"This is a string of tokens"</FONT>;
+
+ boost::regex re(<FONT color=#0000ff>"\\s+"</FONT>);
+ boost::sregex_token_iterator i(s.begin(), s.end(), re, -<FONT color=#0000a0>1</FONT>);
+ boost::sregex_token_iterator j;
+
+ <B>unsigned</B> count = <FONT color=#0000a0>0</FONT>;
+ <B>while</B>(i != j)
+ {
+ cout &lt;&lt; *i++ &lt;&lt; endl;
+ count++;
+ }
+ cout &lt;&lt; <FONT color=#0000ff>"There were "</FONT> &lt;&lt; count &lt;&lt; <FONT color=#0000ff>" tokens found."</FONT> &lt;&lt; endl;
+
+ }<B>while</B>(argc == <FONT color=#0000a0>1</FONT>);
+ <B>return</B> <FONT color=#0000a0>0</FONT>;
+}
+
+</pre>
+ <P>The following example
+ takes a html file and outputs a list of all the linked files:</P>
+ <pre>
+<FONT color=#008040>#include &lt;fstream&gt;</FONT>
+<FONT color=#008040>#include &lt;iostream&gt;</FONT>
+<FONT color=#008040>#include &lt;iterator&gt;</FONT>
+<FONT color=#008040>#include &lt;boost/regex.hpp&gt;</FONT>
+
+boost::regex e(<FONT color=#0000ff>"&lt;\\s*A\\s+[^&gt;]*href\\s*=\\s*\"([^\"]*)\""</FONT>,
+ boost::regex::normal | boost::regbase::icase);
+
+<B>void</B> load_file(std::string&amp; s, std::istream&amp; is)
+{
+ s.erase();
+ <I><FONT color=#000080>//</FONT></I>
+ <I><FONT color=#000080>// attempt to grow string buffer to match file size,</FONT></I>
+ <I><FONT color=#000080>// this doesn't always work...</FONT></I>
+ s.reserve(is.rdbuf()-&gt;in_avail());
+ <B>char</B> c;
+ <B>while</B>(is.get(c))
+ {
+ <I><FONT color=#000080>// use logarithmic growth stategy, in case</FONT></I>
+ <I><FONT color=#000080>// in_avail (above) returned zero:</FONT></I>
+ <B>if</B>(s.capacity() == s.size())
+ s.reserve(s.capacity() * <FONT color=#0000a0>3</FONT>);
+ s.append(<FONT color=#0000a0>1</FONT>, c);
+ }
+}
+
+<B>int</B> main(<B>int</B> argc, <B>char</B>** argv)
+{
+ std::string s;
+ <B>int</B> i;
+ <B>for</B>(i = <FONT color=#0000a0>1</FONT>; i &lt; argc; ++i)
+ {
+ std::cout &lt;&lt; <FONT color=#0000ff>"Findings URL's in "</FONT> &lt;&lt; argv[i] &lt;&lt; <FONT color=#0000ff>":"</FONT> &lt;&lt; std::endl;
+ s.erase();
+ std::ifstream is(argv[i]);
+ load_file(s, is);
+ boost::sregex_token_iterator i(s.begin(), s.end(), e, <FONT color=#0000a0>1</FONT>);
+ boost::sregex_token_iterator j;
+ <B>while</B>(i != j)
+ {
+ std::cout &lt;&lt; *i++ &lt;&lt; std::endl;
+ }
+ }
+ <I><FONT color=#000080>//</FONT></I>
+ <I><FONT color=#000080>// alternative method:</FONT></I>
+ <I><FONT color=#000080>// test the array-literal constructor, and split out the whole</FONT></I>
+ <I><FONT color=#000080>// match as well as $1....</FONT></I>
+ <I><FONT color=#000080>//</FONT></I>
+ <B>for</B>(i = <FONT color=#0000a0>1</FONT>; i &lt; argc; ++i)
+ {
+ std::cout &lt;&lt; <FONT color=#0000ff>"Findings URL's in "</FONT> &lt;&lt; argv[i] &lt;&lt; <FONT color=#0000ff>":"</FONT> &lt;&lt; std::endl;
+ s.erase();
+ std::ifstream is(argv[i]);
+ load_file(s, is);
+ <B>const</B> <B>int</B> subs[] = {<FONT color=#0000a0>1</FONT>, <FONT color=#0000a0>0</FONT>,};
+ boost::sregex_token_iterator i(s.begin(), s.end(), e, subs);
+ boost::sregex_token_iterator j;
+ <B>while</B>(i != j)
+ {
+ std::cout &lt;&lt; *i++ &lt;&lt; std::endl;
+ }
+ }
+
+ <B>return</B> <FONT color=#0000a0>0</FONT>;
+}
+</pre>
+ <HR>
+ <p>Revised&nbsp;
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->
+ 26 June 2004&nbsp;
+ <!--webbot bot="Timestamp" endspan i-checksum="39359" --></p>
+ <p><i>© Copyright John Maddock&nbsp;1998-
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%Y" startspan --> 2004<!--webbot bot="Timestamp" endspan i-checksum="39359" --></i></p>
+ <P><I>Use, modification and distribution are subject to the Boost Software License,
+ Version 1.0. (See accompanying file LICENSE_1_0.txt
+ or copy at http://www.boost.org/LICENSE_1_0.txt)</I></P>
+ </body>
+</html>
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/doc/regex_traits.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/doc/regex_traits.html 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,87 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+ <head>
+ <title>Boost.Regex: class regex_traits</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <link rel="stylesheet" type="text/css" href="../../../boost.css">
+ </head>
+ <body>
+ <P>
+ <TABLE id="Table1" cellSpacing="1" cellPadding="1" width="100%" border="0">
+ <TR>
+ <td valign="top" width="300">
+ <h3>C++ Boost</h3>
+ </td>
+ <TD width="353">
+ <H1 align="center">Boost.Regex</H1>
+ <H2 align="center">class regex_traits</H2>
+ </TD>
+ <td width="50">
+ <h3>Boost.Regex Index</h3>
+ </td>
+ </TR>
+ </TABLE>
+ </P>
+ <HR>
+ <H3>Contents</H3>
+ <dl class="index">
+ <dt>Synopsis <dt>Description</dt>
+ </dl>
+ <H3><A name="synopsis"></A>Synopsis</H3>
+ <pre>
+namespace boost{
+
+template &lt;class charT, class implementationT = sensible_default_choice&gt;
+struct regex_traits : public implementationT
+{
+ regex_traits() : implementationT() {}
+};
+
+template &lt;class charT&gt;
+struct c_regex_traits;
+
+template &lt;class charT&gt;
+struct cpp_regex_traits;
+
+template &lt;class charT&gt;
+struct w32_regex_traits;
+
+} // namespace boost
+</pre>
+ <H3><A name="description"></A>Description</H3>
+ <P>The class regex_traits is just a thin wrapper around an actual implemention
+ class, which may be one of:</P>
+ <UL>
+ <LI>
+ c_regex_traits: this class is deprecated, it wraps the C locale, and is used as
+ the default implementation when the platform is not Win32, and the C++ locale
+ is not available.</LI>
+ <LI>
+ cpp_regex_traits: the default traits class for non-Win32 platforms, allows the
+ regex class to be imbued with a std::locale instance.</LI>
+ <LI>
+ w32_regex_traits: the default traits class implementation on Win32 platforms,
+ allows the regex class to be imbued with an LCID.</LI></UL>
+ <P>The default behavior can be altered by defining one of the following
+ configuration macros in boost/regex/user.hpp:</P>
+ <UL>
+ <LI>
+ BOOST_REGEX_USE_C_LOCALE: makes c_regex_traits the default.</LI>
+ <LI>
+ BOOST_REGEX_USE_CPP_LOCALE: makes cpp_regex_traits the default.</LI></UL>
+ <P>All these traits classes fulfil the <A href="concepts.html#traits">traits class
+ requirements</A>.</P>
+ <HR>
+ <P></P>
+ <p>Revised
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->
+ 24&nbsp;June 2004&nbsp;
+ <!--webbot bot="Timestamp" endspan i-checksum="39359" --></p>
+ <p><i>© Copyright John Maddock&nbsp;1998-
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%Y" startspan -->
+ 2004</i></p>
+ <P><I>Use, modification and distribution are subject to the Boost Software License,
+ Version 1.0. (See accompanying file LICENSE_1_0.txt
+ or copy at http://www.boost.org/LICENSE_1_0.txt)</I></P>
+ </body>
+</html>

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/doc/standards.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/doc/standards.html 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,237 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+ <head>
+ <title>Boost.Regex: Standards Conformance</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <link rel="stylesheet" type="text/css" href="../../../boost.css">
+ </head>
+ <body>
+ <P>
+ <TABLE id="Table1" cellSpacing="1" cellPadding="1" width="100%" border="0">
+ <TR>
+ <td valign="top" width="300">
+ <h3>C++ Boost</h3>
+ </td>
+ <TD width="353">
+ <H1 align="center">Boost.Regex</H1>
+ <H2 align="center">Standards Conformance</H2>
+ </TD>
+ <td width="50">
+ <h3>Boost.Regex Index</h3>
+ </td>
+ </TR>
+ </TABLE>
+ </P>
+ <HR>
+ <H3>C++</H3>
+ <P>Boost.regex is intended to conform to the <A href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/papers/2003/n1429.htm">
+ regular expression standardization proposal</A>, which will appear in a
+ future C++ standard technical report (and hopefully in a future version of the
+ standard).&nbsp;</P>
+ <H3>ECMAScript / JavaScript</H3>
+ <P>All of the ECMAScript regular expression syntax features are supported, except
+ that:</P>
+ <P>Negated class escapes (\S, \D and \W) are not permitted inside character class
+ definitions ( [...] ).</P>
+ <P>The escape sequence \u matches any upper case character (the same as
+ [[:upper:]])&nbsp;rather than a Unicode escape sequence; use \x{DDDD} for
+ Unicode escape sequences.</P>
+ <H3>Perl</H3>
+ <P>Almost all Perl features are supported, except for:</P>
+ <P>
+ <TABLE id="Table2" cellSpacing="1" cellPadding="1" width="100%" border="0">
+ <TR>
+ <TD>(?{code})</TD>
+ <TD>Not implementable in a compiled strongly typed language.</TD>
+ </TR>
+ <TR>
+ <TD>(??{code})</TD>
+ <TD>Not implementable in a compiled strongly typed language.</TD>
+ </TR>
+ </TABLE>
+ </P>
+ <H3>POSIX</H3>
+ <P>All the POSIX basic and extended regular expression features are supported,
+ except that:</P>
+ <P>No character collating names are recognized except those specified in the POSIX
+ standard for the C locale, unless they are explicitly registered with the
+ traits class.</P>
+ <P>Character equivalence classes ( [[=a=]] etc) are probably buggy except on
+ Win32.&nbsp; Implementing this feature requires knowledge of the format of the
+ string sort keys produced by the system; if you need this, and the default
+ implementation doesn't work on your platform, then you will need to supply a
+ custom traits class.</P>
+ <H3>Unicode</H3>
+ <P>The following comments refer to&nbsp;<A href="http://www.unicode.org/reports/tr18/">Unicode
+ Technical
+ <SPAN>Standard
+</SPAN>#18: Unicode Regular Expressions</A>&nbsp;version 9.</P>
+ <P>
+ <TABLE id="Table3" cellSpacing="1" cellPadding="1" width="100%" border="0">
+ <TR>
+ <TD>#</TD>
+ <TD>Feature</TD>
+ <TD>Support</TD>
+ </TR>
+ <TR>
+ <TD>1.1</TD>
+ <TD>Hex Notation</TD>
+ <TD>Yes: use \x{DDDD} to refer to code point UDDDD.</TD>
+ </TR>
+ <TR>
+ <TD>1.2</TD>
+ <TD>Character Properties</TD>
+ <TD>All the names listed under the&nbsp;<A href="http://www.unicode.org/reports/tr18/#Categories">General
+ Category Property</A> are supported.&nbsp; Script names and Other Names are
+ not currently supported.</TD>
+ </TR>
+ <TR>
+ <TD>1.3</TD>
+ <TD><A name="Subtraction_and_Intersection">Subtraction</A> and Intersection</TD>
+ <TD>
+ <P>Indirectly support by forward-lookahead:
+ </P>
+ <P>(?=[[:X:]])[[:Y:]]</P>
+ <P>Gives the intersection of character properties X and Y.</P>
+ <P>(?![[:X:]])[[:Y:]]</P>
+ <P>Gives everything in Y that is not in X (subtraction).</P>
+ </TD>
+ </TR>
+ <TR>
+ <TD>1.4</TD>
+ <TD><A name="Simple_Word_Boundaries">Simple Word Boundaries</A></TD>
+ <TD>Conforming: non-spacing marks are included in the set of word characters.</TD>
+ </TR>
+ <TR>
+ <TD>1.5</TD>
+ <TD>Caseless Matching</TD>
+ <TD>Supported, note that at this level, case transformations are 1:1, many to many
+ case folding operations are not supported (for example&nbsp;"ß" to "SS").</TD>
+ </TR>
+ <TR>
+ <TD>1.6</TD>
+ <TD>Line Boundaries</TD>
+ <TD>Supported, except that "." matches only one character of "\r\n". Other than
+ that word boundaries match correctly; including not matching in the middle of a
+ "\r\n" sequence.</TD>
+ </TR>
+ <TR>
+ <TD>1.7</TD>
+ <TD>Code Points</TD>
+ <TD>Supported: provided you use the u32* algorithms,
+ then UTF-8, UTF-16 and UTF-32 are all treated as sequences of 32-bit code
+ points.</TD>
+ </TR>
+ <TR>
+ <TD>2.1</TD>
+ <TD>Canonical Equivalence</TD>
+ <TD>Not supported: it is up to the user of the library to convert all text into
+ the same canonical form as the regular expression.</TD>
+ </TR>
+ <TR>
+ <TD>2.2</TD>
+ <TD>Default Grapheme Clusters</TD>
+ <TD>Not supported.</TD>
+ </TR>
+ <TR>
+ <TD>2.3</TD>
+ <TD><!--StartFragment -->
+ <P><A name="Default_Word_Boundaries">Default Word Boundaries</A></P>
+ </TD>
+ <TD>Not supported.</TD>
+ </TR>
+ <TR>
+ <TD>2.4</TD>
+ <TD><!--StartFragment -->
+ <P><A name="Default_Loose_Matches">Default Loose Matches</A></P>
+ </TD>
+ <TD>Not Supported.</TD>
+ </TR>
+ <TR>
+ <TD>2.5</TD>
+ <TD>Name Properties</TD>
+ <TD>Supported: the expression "[[:name:]]" or \N{name} matches the named character
+ "name".</TD>
+ </TR>
+ <TR>
+ <TD>2.6</TD>
+ <TD>Wildcard properties</TD>
+ <TD>Not Supported.</TD>
+ </TR>
+ <TR>
+ <TD>3.1</TD>
+ <TD>Tailored Punctuation.</TD>
+ <TD>Not Supported.</TD>
+ </TR>
+ <TR>
+ <TD>3.2</TD>
+ <TD>Tailored Grapheme Clusters</TD>
+ <TD>Not Supported.</TD>
+ </TR>
+ <TR>
+ <TD>3.3</TD>
+ <TD>Tailored Word Boundaries.</TD>
+ <TD>Not Supported.</TD>
+ </TR>
+ <TR>
+ <TD>3.4</TD>
+ <TD>Tailored Loose Matches</TD>
+ <TD>Partial support: [[=c=]] matches characters with the same primary equivalence
+ class as "c".</TD>
+ </TR>
+ <TR>
+ <TD>3.5</TD>
+ <TD>Tailored Ranges</TD>
+ <TD>Supported: [a-b] matches any character that collates in the range a to b, when
+ the expression is constructed with the collate
+ flag set.</TD>
+ </TR>
+ <TR>
+ <TD>3.6</TD>
+ <TD>Context Matches</TD>
+ <TD>Not Supported.</TD>
+ </TR>
+ <TR>
+ <TD>3.7</TD>
+ <TD>Incremental Matches</TD>
+ <TD>Supported: pass the flag match_partial to
+ the regex algorithms.</TD>
+ </TR>
+ <TR>
+ <TD>3.8</TD>
+ <TD>Unicode Set Sharing</TD>
+ <TD>Not Supported.</TD>
+ </TR>
+ <TR>
+ <TD>3.9</TD>
+ <TD>Possible Match Sets</TD>
+ <TD>Not supported, however this information is used internally to optimise the
+ matching of regular expressions, and return quickly if no match is possible.</TD>
+ </TR>
+ <TR>
+ <TD>3.10</TD>
+ <TD>Folded Matching</TD>
+ <TD>Partial Support:&nbsp; It is possible to achieve a similar effect by using a
+ custom regular expression traits class.</TD>
+ </TR>
+ <TR>
+ <TD>3.11</TD>
+ <TD>Custom&nbsp;Submatch Evaluation</TD>
+ <TD>Not Supported.</TD>
+ </TR>
+ </TABLE>
+ </P>
+ <HR>
+ <p>Revised&nbsp;
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->
+ 28 June 2004&nbsp;
+ <!--webbot bot="Timestamp" endspan i-checksum="39359" --></p>
+ <p><i>© Copyright John Maddock&nbsp;1998-
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%Y" startspan --> 2004<!--webbot bot="Timestamp" endspan i-checksum="39359" --></i></p>
+ <P><I>Use, modification and distribution are subject to the Boost Software License,
+ Version 1.0. (See accompanying file LICENSE_1_0.txt
+ or copy at http://www.boost.org/LICENSE_1_0.txt)</I></P>
+ </body>
+</html>
+
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/doc/sub_match.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/doc/sub_match.html 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,571 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+ <head>
+ <title>Boost.Regex: sub_match</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <LINK href="../../../boost.css" type="text/css" rel="stylesheet"></head>
+ <body>
+ <P>
+ <TABLE id="Table1" cellSpacing="1" cellPadding="1" width="100%" border="0">
+ <TR>
+ <td vAlign="top" width="300">
+ <h3>C++ Boost</h3>
+ </td>
+ <TD width="353">
+ <H1 align="center">Boost.Regex</H1>
+ <H2 align="center">sub_match</H2>
+ </TD>
+ <td width="50">
+ <h3>Boost.Regex Index</h3>
+ </td>
+ </TR>
+ </TABLE>
+ </P>
+ <HR>
+ <H3>Synopsis</H3>
+ <P>#include &lt;boost/regex.hpp&gt;
+ </P>
+ <P>Regular expressions are different from many simple pattern-matching algorithms
+ in that as well as finding an overall match they can also produce
+ sub-expression matches: each sub-expression being delimited in the pattern by a
+ pair of parenthesis (...). There has to be some method for reporting
+ sub-expression matches back to the user: this is achieved this by defining a
+ class <I>match_results</I> that acts as an
+ indexed collection of sub-expression matches, each sub-expression match being
+ contained in an object of type <I>sub_match</I>
+ .
+ <P>Objects of type <EM>sub_match</EM> may only obtained by subscripting an object
+ of type <EM>match_results</EM>
+ .
+ <P>Objects of type <EM>sub_match</EM> may be compared to objects of type <EM>std::basic_string</EM>,
+ or <EM>const charT*</EM> or <EM>const charT</EM>
+ .
+ <P>Objects of type <EM>sub_match</EM> may be added to objects of type <EM>std::basic_string</EM>,
+ or <EM>const charT* </EM>or <EM>const charT</EM>, to produce a new <EM>std::basic_string
+ </EM>
+ object.
+ <P>When the marked sub-expression denoted by an object of type sub_match&lt;&gt;
+ participated in a regular expression match then member <CODE>matched</CODE> evaluates
+ to true, and members <CODE>first</CODE> and <CODE>second</CODE> denote the
+ range of characters <CODE>[first,second)</CODE> which formed that match.
+ Otherwise <CODE>matched</CODE> is false, and members <CODE>first</CODE> and <CODE>second</CODE>
+ contained undefined values.</P>
+ <P>When the marked sub-expression denoted by an object of type sub_match&lt;&gt;
+ was repeated, then the sub_match object represents the match obtained by the
+ last repeat.&nbsp; The complete set of all the captures obtained for all the
+ repeats, may be accessed via the captures() member function (Note: this has
+ serious performance implications, you have to explicitly enable this feature).</P>
+ <P>If an object of type <CODE>sub_match&lt;&gt;</CODE> represents sub-expression 0
+ - that is to say the whole match - then member <CODE>matched</CODE> is always
+ true, unless a partial match was obtained as a result of the flag <CODE>match_partial</CODE>
+ being passed to a regular expression algorithm, in which case member <CODE>matched</CODE>
+ is false, and members <CODE>first</CODE> and <CODE>second</CODE> represent the
+ character range that formed the partial match.</P>
+ <PRE>namespace boost{
+
+template &lt;class BidirectionalIterator&gt;
+class sub_match;
+
+typedef sub_match&lt;const char*&gt; csub_match;
+typedef sub_match&lt;const wchar_t*&gt; wcsub_match;
+typedef sub_match&lt;std::string::const_iterator&gt; ssub_match;
+typedef sub_match&lt;std::wstring::const_iterator&gt; wssub_match;
+
+template &lt;class BidirectionalIterator&gt;
+class sub_match : public std::pair&lt;BidirectionalIterator, BidirectionalIterator&gt;
+{
+public:
+ typedef typename iterator_traits&lt;BidirectionalIterator&gt;::value_type value_type;
+ typedef typename iterator_traits&lt;BidirectionalIterator&gt;::difference_type difference_type;
+ typedef BidirectionalIterator iterator;
+
+ bool matched;
+
+ difference_type length()const;
+ operator basic_string&lt;value_type&gt;()const;
+ basic_string&lt;value_type&gt; str()const;
+
+ int compare(const sub_match&amp; s)const;
+ int compare(const basic_string&lt;value_type&gt;&amp; s)const;
+ int compare(const value_type* s)const;
+#ifdef BOOST_REGEX_MATCH_EXTRA
+ typedef implementation-private capture_sequence_type;
+ const capture_sequence_type&amp; captures()const;
+#endif
+};
+//
+// comparisons to another sub_match:
+//
+template &lt;class BidirectionalIterator&gt;
+bool operator == (const sub_match&lt;BidirectionalIterator&gt;&amp; lhs,
+ const sub_match&lt;BidirectionalIterator&gt;&amp; rhs);
+template &lt;class BidirectionalIterator&gt;
+bool operator != (const sub_match&lt;BidirectionalIterator&gt;&amp; lhs,
+ const sub_match&lt;BidirectionalIterator&gt;&amp; rhs);
+template &lt;class BidirectionalIterator&gt;
+bool operator &lt; (const sub_match&lt;BidirectionalIterator&gt;&amp; lhs,
+ const sub_match&lt;BidirectionalIterator&gt;&amp; rhs);
+template &lt;class BidirectionalIterator&gt;
+bool operator &lt;= (const sub_match&lt;BidirectionalIterator&gt;&amp; lhs,
+ const sub_match&lt;BidirectionalIterator&gt;&amp; rhs);
+template &lt;class BidirectionalIterator&gt;
+bool operator &gt;= (const sub_match&lt;BidirectionalIterator&gt;&amp; lhs,
+ const sub_match&lt;BidirectionalIterator&gt;&amp; rhs);
+template &lt;class BidirectionalIterator&gt;
+bool operator &gt; (const sub_match&lt;BidirectionalIterator&gt;&amp; lhs,
+ const sub_match&lt;BidirectionalIterator&gt;&amp; rhs);
+
+
+//
+// comparisons to a basic_string:
+//
+template &lt;class BidirectionalIterator, class traits, class Allocator&gt;
+bool operator == (const std::basic_string&lt;iterator_traits&lt;BidirectionalIterator&gt;::value_type, traits, Allocator&gt;&amp; lhs,
+ const sub_match&lt;BidirectionalIterator&gt;&amp; rhs);
+template &lt;class BidirectionalIterator, class traits, class Allocator&gt;
+bool operator != (const std::basic_string&lt;iterator_traits&lt;BidirectionalIterator&gt;::value_type, traits, Allocator&gt;&amp; lhs,
+ const sub_match&lt;BidirectionalIterator&gt;&amp; rhs);
+template &lt;class BidirectionalIterator, class traits, class Allocator&gt;
+bool operator &lt; (const std::basic_string&lt;iterator_traits&lt;BidirectionalIterator&gt;::value_type, traits, Allocator&gt;&amp; lhs,
+ const sub_match&lt;BidirectionalIterator&gt;&amp; rhs);
+template &lt;class BidirectionalIterator, class traits, class Allocator&gt;
+bool operator &gt; (const std::basic_string&lt;iterator_traits&lt;BidirectionalIterator&gt;::value_type, traits, Allocator&gt;&amp; lhs,
+ const sub_match&lt;BidirectionalIterator&gt;&amp; rhs);
+template &lt;class BidirectionalIterator, class traits, class Allocator&gt;
+bool operator &gt;= (const std::basic_string&lt;iterator_traits&lt;BidirectionalIterator&gt;::value_type, traits, Allocator&gt;&amp; lhs,
+ const sub_match&lt;BidirectionalIterator&gt;&amp; rhs);
+template &lt;class BidirectionalIterator, class traits, class Allocator&gt;
+bool operator &lt;= (const std::basic_string&lt;iterator_traits&lt;BidirectionalIterator&gt;::value_type, traits, Allocator&gt;&amp; lhs,
+ const sub_match&lt;BidirectionalIterator&gt;&amp; rhs);
+
+template &lt;class BidirectionalIterator, class traits, class Allocator&gt;
+bool operator == (const sub_match&lt;BidirectionalIterator&gt;&amp; lhs,
+ const std::basic_string&lt;iterator_traits&lt;BidirectionalIterator&gt;::value_type, traits, Allocator&gt;&amp; rhs);
+template &lt;class BidirectionalIterator, class traits, class Allocator&gt;
+bool operator != (const sub_match&lt;BidirectionalIterator&gt;&amp; lhs,
+ const std::basic_string&lt;iterator_traits&lt;BidirectionalIterator&gt;::value_type, traits, Allocator&gt;&amp; rhs);
+template &lt;class BidirectionalIterator, class traits, class Allocator&gt;
+bool operator &lt; (const sub_match&lt;BidirectionalIterator&gt;&amp; lhs,
+ const std::basic_string&lt;iterator_traits&lt;BidirectionalIterator&gt;::value_type, traits, Allocator&gt;&amp; rhs);
+template &lt;class BidirectionalIterator, class traits, class Allocator&gt;
+bool operator &gt; (const sub_match&lt;BidirectionalIterator&gt;&amp; lhs,
+ const std::basic_string&lt;iterator_traits&lt;BidirectionalIterator&gt;::value_type, traits, Allocator&gt;&amp; rhs);
+template &lt;class BidirectionalIterator, class traits, class Allocator&gt;
+bool operator &gt;= (const sub_match&lt;BidirectionalIterator&gt;&amp; lhs,
+ const std::basic_string&lt;iterator_traits&lt;BidirectionalIterator&gt;::value_type, traits, Allocator&gt;&amp; rhs);
+template &lt;class BidirectionalIterator, class traits, class Allocator&gt;
+bool operator &lt;= (const sub_match&lt;BidirectionalIterator&gt;&amp; lhs,
+ const std::basic_string&lt;iterator_traits&lt;BidirectionalIterator&gt;::value_type, traits, Allocator&gt;&amp; rhs);
+
+//
+// comparisons to a pointer to a character array:
+//
+template &lt;class BidirectionalIterator&gt;
+bool operator == (typename iterator_traits&lt;BidirectionalIterator&gt;::value_type const* lhs,
+ const sub_match&lt;BidirectionalIterator&gt;&amp; rhs);
+template &lt;class BidirectionalIterator&gt;
+bool operator != (typename iterator_traits&lt;BidirectionalIterator&gt;::value_type const* lhs,
+ const sub_match&lt;BidirectionalIterator&gt;&amp; rhs);
+template &lt;class BidirectionalIterator&gt;
+bool operator &lt; (typename iterator_traits&lt;BidirectionalIterator&gt;::value_type const* lhs,
+ const sub_match&lt;BidirectionalIterator&gt;&amp; rhs);
+template &lt;class BidirectionalIterator&gt;
+bool operator &gt; (typename iterator_traits&lt;BidirectionalIterator&gt;::value_type const* lhs,
+ const sub_match&lt;BidirectionalIterator&gt;&amp; rhs);
+template &lt;class BidirectionalIterator&gt;
+bool operator &gt;= (typename iterator_traits&lt;BidirectionalIterator&gt;::value_type const* lhs,
+ const sub_match&lt;BidirectionalIterator&gt;&amp; rhs);
+template &lt;class BidirectionalIterator&gt;
+bool operator &lt;= (typename iterator_traits&lt;BidirectionalIterator&gt;::value_type const* lhs,
+ const sub_match&lt;BidirectionalIterator&gt;&amp; rhs);
+
+template &lt;class BidirectionalIterator&gt;
+bool operator == (const sub_match&lt;BidirectionalIterator&gt;&amp; lhs,
+ typename iterator_traits&lt;BidirectionalIterator&gt;::value_type const* rhs);
+template &lt;class BidirectionalIterator&gt;
+bool operator != (const sub_match&lt;BidirectionalIterator&gt;&amp; lhs,
+ typename iterator_traits&lt;BidirectionalIterator&gt;::value_type const* rhs);
+template &lt;class BidirectionalIterator&gt;
+bool operator &lt; (const sub_match&lt;BidirectionalIterator&gt;&amp; lhs,
+ typename iterator_traits&lt;BidirectionalIterator&gt;::value_type const* rhs);
+template &lt;class BidirectionalIterator&gt;
+bool operator &gt; (const sub_match&lt;BidirectionalIterator&gt;&amp; lhs,
+ typename iterator_traits&lt;BidirectionalIterator&gt;::value_type const* rhs);
+template &lt;class BidirectionalIterator&gt;
+bool operator &gt;= (const sub_match&lt;BidirectionalIterator&gt;&amp; lhs,
+ typename iterator_traits&lt;BidirectionalIterator&gt;::value_type const* rhs);
+template &lt;class BidirectionalIterator&gt;
+bool operator &lt;= (const sub_match&lt;BidirectionalIterator&gt;&amp; lhs,
+ typename iterator_traits&lt;BidirectionalIterator&gt;::value_type const* rhs);
+
+//
+// comparisons to a single character:
+//
+template &lt;class BidirectionalIterator&gt;
+bool operator == (typename iterator_traits&lt;BidirectionalIterator&gt;::value_type const&amp; lhs,
+ const sub_match&lt;BidirectionalIterator&gt;&amp; rhs);
+template &lt;class BidirectionalIterator&gt;
+bool operator != (typename iterator_traits&lt;BidirectionalIterator&gt;::value_type const&amp; lhs,
+ const sub_match&lt;BidirectionalIterator&gt;&amp; rhs);
+template &lt;class BidirectionalIterator&gt;
+bool operator &lt; (typename iterator_traits&lt;BidirectionalIterator&gt;::value_type const&amp; lhs,
+ const sub_match&lt;BidirectionalIterator&gt;&amp; rhs);
+template &lt;class BidirectionalIterator&gt;
+bool operator &gt; (typename iterator_traits&lt;BidirectionalIterator&gt;::value_type const&amp; lhs,
+ const sub_match&lt;BidirectionalIterator&gt;&amp; rhs);
+template &lt;class BidirectionalIterator&gt;
+bool operator &gt;= (typename iterator_traits&lt;BidirectionalIterator&gt;::value_type const&amp; lhs,
+ const sub_match&lt;BidirectionalIterator&gt;&amp; rhs);
+template &lt;class BidirectionalIterator&gt;
+bool operator &lt;= (typename iterator_traits&lt;BidirectionalIterator&gt;::value_type const&amp; lhs,
+ const sub_match&lt;BidirectionalIterator&gt;&amp; rhs);
+
+template &lt;class BidirectionalIterator&gt;
+bool operator == (const sub_match&lt;BidirectionalIterator&gt;&amp; lhs,
+ typename iterator_traits&lt;BidirectionalIterator&gt;::value_type const&amp; rhs);
+template &lt;class BidirectionalIterator&gt;
+bool operator != (const sub_match&lt;BidirectionalIterator&gt;&amp; lhs,
+ typename iterator_traits&lt;BidirectionalIterator&gt;::value_type const&amp; rhs);
+template &lt;class BidirectionalIterator&gt;
+bool operator &lt; (const sub_match&lt;BidirectionalIterator&gt;&amp; lhs,
+ typename iterator_traits&lt;BidirectionalIterator&gt;::value_type const&amp; rhs);
+template &lt;class BidirectionalIterator&gt;
+bool operator &gt; (const sub_match&lt;BidirectionalIterator&gt;&amp; lhs,
+ typename iterator_traits&lt;BidirectionalIterator&gt;::value_type const&amp; rhs);
+template &lt;class BidirectionalIterator&gt;
+bool operator &gt;= (const sub_match&lt;BidirectionalIterator&gt;&amp; lhs,
+ typename iterator_traits&lt;BidirectionalIterator&gt;::value_type const&amp; rhs);
+template &lt;class BidirectionalIterator&gt;
+bool operator &lt;= (const sub_match&lt;BidirectionalIterator&gt;&amp; lhs,
+ typename iterator_traits&lt;BidirectionalIterator&gt;::value_type const&amp; rhs);
+//
+// addition operators:
+//
+template &lt;class BidirectionalIterator, class traits, class Allocator&gt;
+std::basic_string&lt;typename iterator_traits&lt;BidirectionalIterator&gt;::value_type, traits, Allocator&gt;
+ operator + (const std::basic_string&lt;typename iterator_traits&lt;BidirectionalIterator&gt;::value_type, traits, Allocator&gt;&amp; s,
+ const sub_match&lt;BidirectionalIterator&gt;&amp; m);
+template &lt;class BidirectionalIterator, class traits, class Allocator&gt;
+std::basic_string&lt;typename iterator_traits&lt;BidirectionalIterator&gt;::value_type, traits, Allocator&gt;
+ operator + (const sub_match&lt;BidirectionalIterator&gt;&amp; m,
+ const std::basic_string&lt;typename iterator_traits&lt;BidirectionalIterator&gt;::value_type, traits, Allocator&gt;&amp; s);
+template &lt;class BidirectionalIterator&gt; std::basic_string&lt;typename iterator_traits&lt;BidirectionalIterator&gt;::value_type&gt;
+ operator + (typename iterator_traits&lt;BidirectionalIterator&gt;::value_type const* s,
+ const sub_match&lt;BidirectionalIterator&gt;&amp; m);
+template &lt;class BidirectionalIterator&gt; std::basic_string&lt;typename iterator_traits&lt;BidirectionalIterator&gt;::value_type&gt;
+ operator + (const sub_match&lt;BidirectionalIterator&gt;&amp; m,
+ typename iterator_traits&lt;BidirectionalIterator&gt;::value_type const * s);
+template &lt;class BidirectionalIterator&gt;
+std::basic_string&lt;typename iterator_traits&lt;BidirectionalIterator&gt;::value_type&gt;
+ operator + (typename iterator_traits&lt;BidirectionalIterator&gt;::value_type const&amp; s,
+ const sub_match&lt;BidirectionalIterator&gt;&amp; m);
+template &lt;class BidirectionalIterator&gt;
+std::basic_string&lt;typename iterator_traits&lt;BidirectionalIterator&gt;::value_type&gt;
+ operator + (const sub_match&lt;BidirectionalIterator&gt;&amp; m,
+ typename iterator_traits&lt;BidirectionalIterator&gt;::value_type const&amp; s);
+template &lt;class BidirectionalIterator&gt;
+std::basic_string&lt;typename iterator_traits&lt;BidirectionalIterator&gt;::value_type&gt;
+ operator + (const sub_match&lt;BidirectionalIterator&gt;&amp; m1,
+ const sub_match&lt;BidirectionalIterator&gt;&amp; m2);
+
+//
+// stream inserter:
+//
+template &lt;class charT, class traits, class BidirectionalIterator&gt;
+basic_ostream&lt;charT, traits&gt;&amp;
+ operator &lt;&lt; (basic_ostream&lt;charT, traits&gt;&amp; os,
+ const sub_match&lt;BidirectionalIterator&gt;&amp; m);
+
+} // namespace boost</PRE>
+ <H3>Description</H3>
+ <H4>sub_match members</H4>
+ <PRE>typedef typename std::iterator_traits&lt;iterator&gt;::value_type value_type;</PRE>
+ <P>The type pointed to by the iterators.</P>
+ <PRE>typedef typename std::iterator_traits&lt;iterator&gt;::difference_type difference_type;</PRE>
+ <P>A type that represents the difference between two iterators.</P>
+ <PRE>typedef iterator iterator_type;</PRE>
+ <P>The iterator type.</P>
+ <PRE>iterator first</PRE>
+ <P>An iterator denoting the position of the start of the match.</P>
+ <PRE>iterator second</PRE>
+ <P>An iterator denoting the position of the end of the match.</P>
+ <PRE><A name=m1></A>bool matched</PRE>
+ <P>A Boolean value denoting whether this sub-expression participated in the match.</P>
+ <PRE><A name=m2></A>static difference_type length();</PRE>
+ <P><B>Effects: </B>returns the length of this matched sub-expression, or 0 if this
+ sub-expression was not matched: <CODE>matched ? distance(first, second) : 0)</CODE>.</P>
+ <PRE><A name=m3></A>operator basic_string&lt;value_type&gt;()const;</PRE>
+ <P><B>Effects: </B>converts *this into a string: returns <CODE>(matched ?
+ basic_string&lt;value_type&gt;(first, second) :
+ basic_string&lt;value_type&gt;()).</P>
+ </CODE><PRE><A name=m4></A>basic_string&lt;value_type&gt; str()const;</PRE>
+ <P><B>Effects: </B>returns a string representation of *this:&nbsp; <CODE>(matched ?
+ basic_string&lt;value_type&gt;(first, second) :
+ basic_string&lt;value_type&gt;())</CODE>.</P>
+ <PRE><A name=m5></A>int compare(const sub_match&amp; s)const;</PRE>
+ <P><B>Effects: </B>performs a lexical comparison to <EM>s</EM>: returns <CODE>str().compare(s.str())</CODE>.</P>
+ <PRE><A name=m6></A>int compare(const basic_string&lt;value_type&gt;&amp; s)const;</PRE>
+ <P><B>Effects: </B>compares *this to the string s: returns <CODE>str().compare(s)</CODE>.</P>
+ <PRE><A name=m7></A>int compare(const value_type* s)const;</PRE>
+ <P><B>Effects:<B></B> </B>compares *this to the null-terminated string <EM>s</EM>:<B>&nbsp;</B>returns
+ <CODE>str().compare(s)</CODE>.</P>
+ <PRE><A name=m9></A>typedef implementation-private capture_sequence_type;</PRE>
+ <P>Defines an implementation-specific type that&nbsp;satisfies the requirements of
+ a standard library Sequence (21.1.1 including the optional Table 68
+ operations),&nbsp;whose value_type is a <EM>sub_match&lt;BidirectionalIterator&gt;</EM>.&nbsp;This
+ type happens to be <EM>std::vector&lt;sub_match&lt;BidirectionalIterator&gt; &gt;</EM>,
+ but you shouldn't actually rely on that.</P>
+ <PRE><A name=m8></A>const capture_sequence_type&amp; captures()const; </PRE>
+ <P><STRONG>Effects:</STRONG> returns a sequence containing all the captures
+ obtained for this sub-expression.</P>
+ <P><STRONG>Preconditions:</STRONG> the library must be built and used with
+ BOOST_REGEX_MATCH_EXTRA defined, and you must pass the flag <A href="match_flag_type.html">
+ match_extra</A> to the regex matching functions (regex_match,
+ regex_search, regex_iterator
+ or regex_token_iterator) in order for
+ this member function to be defined and return useful information.</P>
+ <P><STRONG>Rationale:</STRONG> Enabling this feature has several consequences:
+ </P>
+ <UL>
+ <LI>
+ sub_match occupies more memory resulting in complex expressions running out of
+ memory or stack space more quickly during matching.
+ <LI>
+ The matching algorithms are less efficient at handling some features
+ (independent sub-expressions for example), even when <EM>match_extra</EM>
+ is not used.
+ <LI>
+ The matching algorithms are much less efficient (i.e. slower), when <EM>match_extra</EM>
+ is used.&nbsp; Mostly this is down to the extra memory allocations that have to
+ take place.</LI></UL>
+ <H4>sub_match non-member operators</H4>
+ <H5>Comparisons against self</H5>
+ <PRE><A name=o11></A>template &lt;class BidirectionalIterator&gt;
+bool operator == (const sub_match&lt;BidirectionalIterator&gt;&amp; lhs,
+ const sub_match&lt;BidirectionalIterator&gt;&amp; rhs);</PRE>
+ <P><B>Effects: </B>returns <CODE>lhs.compare(rhs) == 0</CODE>.</P>
+ <PRE><A name=o12></A>template &lt;class BidirectionalIterator&gt;
+bool operator != (const sub_match&lt;BidirectionalIterator&gt;&amp; lhs,
+ const sub_match&lt;BidirectionalIterator&gt;&amp; rhs);</PRE>
+ <P><B>Effects: </B>returns <CODE>lhs.compare(rhs) != 0</CODE>.</P>
+ <PRE><A name=o13></A>template &lt;class BidirectionalIterator&gt;
+bool operator &lt; (const sub_match&lt;BidirectionalIterator&gt;&amp; lhs,
+ const sub_match&lt;BidirectionalIterator&gt;&amp; rhs);</PRE>
+ <P><B>Effects: </B>returns <CODE>lhs.compare(rhs) &lt; 0</CODE>.</P>
+ <PRE><A name=o14></A>template &lt;class BidirectionalIterator&gt;
+bool operator &lt;= (const sub_match&lt;BidirectionalIterator&gt;&amp; lhs,
+ const sub_match&lt;BidirectionalIterator&gt;&amp; rhs);</PRE>
+ <P><B>Effects: </B>returns <CODE>lhs.compare(rhs) &lt;= 0</CODE>.</P>
+ <PRE><A name=o15></A>template &lt;class BidirectionalIterator&gt;
+bool operator &gt;= (const sub_match&lt;BidirectionalIterator&gt;&amp; lhs,
+ const sub_match&lt;BidirectionalIterator&gt;&amp; rhs);</PRE>
+ <P><B>Effects: </B>returns <CODE>lhs.compare(rhs) &gt;= 0</CODE>.</P>
+ <PRE><A name=o16></A>template &lt;class BidirectionalIterator&gt;
+bool operator &gt; (const sub_match&lt;BidirectionalIterator&gt;&amp; lhs,
+ const sub_match&lt;BidirectionalIterator&gt;&amp; rhs);</PRE>
+ <P><B>Effects: </B>returns <CODE>lhs.compare(rhs) &gt; 0</CODE>.</P>
+ <H5>Comparisons with std::basic_string</H5>
+ <pre><A name=o21></A>
+template &lt;class BidirectionalIterator, class traits, class Allocator&gt;
+bool operator == (const std::basic_string&lt;iterator_traits&lt;BidirectionalIterator&gt;::value_type, traits,
+ Allocator&gt;&amp; lhs, const sub_match&lt;BidirectionalIterator&gt;&amp; rhs);
+</pre>
+ <P><B>Effects: </B>returns <CODE>lhs == rhs.str()</CODE>.</P>
+ <PRE><A name=o22></A>template &lt;class BidirectionalIterator, class traits, class Allocator&gt;
+bool operator != (const std::basic_string&lt;iterator_traits&lt;BidirectionalIterator&gt;::value_type, traits, Allocator&gt;&amp; lhs,
+ const sub_match&lt;BidirectionalIterator&gt;&amp; rhs);</PRE>
+ <P><B>Effects: </B>returns <CODE>lhs != rhs.str()</CODE>.</P>
+ <PRE><A name=o23></A>template &lt;class BidirectionalIterator, class traits, class Allocator&gt;
+bool operator &lt; (const std::basic_string&lt;iterator_traits&lt;BidirectionalIterator&gt;::value_type, traits, Allocator&gt;&amp; lhs,
+ const sub_match&lt;BidirectionalIterator&gt;&amp; rhs);</PRE>
+ <P><B>Effects: </B>returns <CODE>lhs&nbsp;&lt; rhs.str()</CODE>.</P>
+ <PRE><A name=o24></A>template &lt;class BidirectionalIterator, class traits, class Allocator&gt;
+bool operator &gt; (const std::basic_string&lt;iterator_traits&lt;BidirectionalIterator&gt;::value_type, traits, Allocator&gt;&amp; lhs,
+ const sub_match&lt;BidirectionalIterator&gt;&amp; rhs);</PRE>
+ <P><B>Effects: </B>returns <CODE>lhs&nbsp;&gt; rhs.str()</CODE>.</P>
+ <PRE><A name=o25></A>template &lt;class BidirectionalIterator, class traits, class Allocator&gt;
+bool operator &gt;= (const std::basic_string&lt;iterator_traits&lt;BidirectionalIterator&gt;::value_type, traits, Allocator&gt;&amp; lhs,
+ const sub_match&lt;BidirectionalIterator&gt;&amp; rhs);</PRE>
+ <P><B>Effects: </B>returns <CODE>lhs &gt;= rhs.str()</CODE>.</P>
+ <PRE><A name=o26></A>template &lt;class BidirectionalIterator, class traits, class Allocator&gt;
+bool operator &lt;= (const std::basic_string&lt;iterator_traits&lt;BidirectionalIterator&gt;::value_type, traits, Allocator&gt;&amp; lhs,
+ const sub_match&lt;BidirectionalIterator&gt;&amp; rhs);</PRE>
+ <P><B>Effects: </B>returns <CODE>lhs &lt;= rhs.str()</CODE>.</P>
+ <PRE><A name=o31></A>template &lt;class BidirectionalIterator, class traits, class Allocator&gt;
+bool operator == (const sub_match&lt;BidirectionalIterator&gt;&amp; lhs,
+ const std::basic_string&lt;iterator_traits&lt;BidirectionalIterator&gt;::value_type, traits, Allocator&gt;&amp; rhs);</PRE>
+ <P><B>Effects: </B>returns <CODE>lhs.str() == rhs</CODE>.</P>
+ <PRE><A name=o32></A>template &lt;class BidirectionalIterator, class traits, class Allocator&gt;
+bool operator != (const sub_match&lt;BidirectionalIterator&gt;&amp; lhs,
+ const std::basic_string&lt;iterator_traits&lt;BidirectionalIterator&gt;::value_type, traits, Allocator&gt;&amp; rhs);</PRE>
+ <P><B>Effects: </B>returns <CODE>lhs.str() != rhs</CODE>.</P>
+ <PRE><A name=o33></A>template &lt;class BidirectionalIterator, class traits, class Allocator&gt;
+bool operator &lt; (const sub_match&lt;BidirectionalIterator&gt;&amp; lhs,
+ const std::basic_string&lt;iterator_traits&lt;BidirectionalIterator&gt;::value_type, traits, Allocator&gt;&amp; rhs);</PRE>
+ <P><B>Effects: </B>returns <CODE>lhs.str()&nbsp;&lt; rhs</CODE>.</P>
+ <PRE><A name=o34></A>template &lt;class BidirectionalIterator, class traits, class Allocator&gt;
+bool operator &gt; (const sub_match&lt;BidirectionalIterator&gt;&amp; lhs,
+ const std::basic_string&lt;iterator_traits&lt;BidirectionalIterator&gt;::value_type, traits, Allocator&gt;&amp; rhs);</PRE>
+ <P><B>Effects: </B>returns <CODE>lhs.str()&nbsp;&gt; rhs</CODE>.</P>
+ <PRE><A name=o35></A>template &lt;class BidirectionalIterator, class traits, class Allocator&gt;
+bool operator &gt;= (const sub_match&lt;BidirectionalIterator&gt;&amp; lhs,
+ const std::basic_string&lt;iterator_traits&lt;BidirectionalIterator&gt;::value_type, traits, Allocator&gt;&amp; rhs);</PRE>
+ <P><B>Effects: </B>returns <CODE>lhs.str() &gt;= rhs</CODE>.</P>
+ <PRE><A name=o36></A>template &lt;class BidirectionalIterator, class traits, class Allocator&gt;
+bool operator &lt;= (const sub_match&lt;BidirectionalIterator&gt;&amp; lhs,
+ const std::basic_string&lt;iterator_traits&lt;BidirectionalIterator&gt;::value_type, traits, Allocator&gt;&amp; rhs);</PRE>
+ <P><B>Effects: </B>returns <CODE>lhs.str() &lt;= rhs</CODE>.</P>
+ <H5>Comparisons with null-terminated strings</H5>
+ <PRE><A name=o41></A>template &lt;class BidirectionalIterator&gt;
+bool operator == (typename iterator_traits&lt;BidirectionalIterator&gt;::value_type const* lhs,
+ const sub_match&lt;BidirectionalIterator&gt;&amp; rhs); </PRE>
+ <P><B>Effects: </B>returns <CODE>lhs == rhs.str()</CODE>.</P>
+ <PRE><A name=o42></A>template &lt;class BidirectionalIterator&gt;
+bool operator != (typename iterator_traits&lt;BidirectionalIterator&gt;::value_type const* lhs,
+ const sub_match&lt;BidirectionalIterator&gt;&amp; rhs); </PRE>
+ <P><B>Effects: </B>returns <CODE>lhs != rhs.str()</CODE>.</P>
+ <PRE></A><A name=o43></A>template &lt;class BidirectionalIterator&gt;
+bool operator &lt; (typename iterator_traits&lt;BidirectionalIterator&gt;::value_type const* lhs,
+ const sub_match&lt;BidirectionalIterator&gt;&amp; rhs); </PRE>
+ <P><B>Effects: </B>returns <CODE>lhs &lt; rhs.str()</CODE>.</P>
+ <PRE><A name=o44></A>template &lt;class BidirectionalIterator&gt;
+bool operator &gt; (typename iterator_traits&lt;BidirectionalIterator&gt;::value_type const* lhs,
+ const sub_match&lt;BidirectionalIterator&gt;&amp; rhs); </PRE>
+ <P><B>Effects: </B>returns <CODE>lhs &gt; rhs.str()</CODE>.</P>
+ <PRE><A name=o45></A>template &lt;class BidirectionalIterator&gt;
+bool operator &gt;= (typename iterator_traits&lt;BidirectionalIterator&gt;::value_type const* lhs,
+ const sub_match&lt;BidirectionalIterator&gt;&amp; rhs); </PRE>
+ <P><B>Effects: </B>returns <CODE>lhs &gt;= rhs.str()</CODE>.</P>
+ <PRE><A name=o46></A>template &lt;class BidirectionalIterator&gt;
+bool operator &lt;= (typename iterator_traits&lt;BidirectionalIterator&gt;::value_type const* lhs,
+ const sub_match&lt;BidirectionalIterator&gt;&amp; rhs); </PRE>
+ <P><B>Effects: </B>returns <CODE>lhs &lt;= rhs.str()</CODE>.</P>
+ <PRE><A name=o51></A>template &lt;class BidirectionalIterator&gt;
+bool operator == (const sub_match&lt;BidirectionalIterator&gt;&amp; lhs,
+ typename iterator_traits&lt;BidirectionalIterator&gt;::value_type const* rhs); </PRE>
+ <P><B>Effects: </B>returns <CODE>lhs.str() == rhs</CODE>.</P>
+ <PRE><A name=o52></A>template &lt;class BidirectionalIterator&gt;
+bool operator != (const sub_match&lt;BidirectionalIterator&gt;&amp; lhs,
+ typename iterator_traits&lt;BidirectionalIterator&gt;::value_type const* rhs); </PRE>
+ <P><B>Effects: </B>returns <CODE>lhs.str() != rhs</CODE>.</P>
+ <PRE><A name=o53></A>template &lt;class BidirectionalIterator&gt;
+bool operator &lt; (const sub_match&lt;BidirectionalIterator&gt;&amp; lhs,
+ typename iterator_traits&lt;BidirectionalIterator&gt;::value_type const* rhs); </PRE>
+ <P><B>Effects: </B>returns <CODE>lhs.str() &lt; rhs</CODE>.</P>
+ <PRE><A name=o54></A>template &lt;class BidirectionalIterator&gt;
+bool operator &gt; (const sub_match&lt;BidirectionalIterator&gt;&amp; lhs,
+ typename iterator_traits&lt;BidirectionalIterator&gt;::value_type const* rhs); </PRE>
+ <P><B>Effects: </B>returns <CODE>lhs.str() &gt; rhs</CODE>.</P>
+ <PRE><A name=o55></A>template &lt;class BidirectionalIterator&gt;
+bool operator &gt;= (const sub_match&lt;BidirectionalIterator&gt;&amp; lhs,
+ typename iterator_traits&lt;BidirectionalIterator&gt;::value_type const* rhs); </PRE>
+ <P><B>Effects: </B>returns <CODE>lhs.str() &gt;= rhs</CODE>.</P>
+ <PRE><A name=o56></A>template &lt;class BidirectionalIterator&gt;
+bool operator &lt;= (const sub_match&lt;BidirectionalIterator&gt;&amp; lhs,
+ typename iterator_traits&lt;BidirectionalIterator&gt;::value_type const* rhs); </PRE>
+ <P><B>Effects: </B>returns <CODE>lhs.str() &lt;= rhs</CODE>.</P>
+ <H5>Comparisons with a single character</H5>
+ <PRE><A name=o61></A>template &lt;class BidirectionalIterator&gt;
+bool operator == (typename iterator_traits&lt;BidirectionalIterator&gt;::value_type const&amp; lhs,
+ const sub_match&lt;BidirectionalIterator&gt;&amp; rhs); </PRE>
+ <P><B>Effects: </B>returns <CODE>lhs == rhs.str()</CODE>.</P>
+ <PRE><A name=o62></A>template &lt;class BidirectionalIterator&gt;
+bool operator != (typename iterator_traits&lt;BidirectionalIterator&gt;::value_type const&amp; lhs,
+ const sub_match&lt;BidirectionalIterator&gt;&amp; rhs); </PRE>
+ <P><B>Effects: </B>returns <CODE>lhs != rhs.str()</CODE>.</P>
+ <PRE><A name=o63></A>template &lt;class BidirectionalIterator&gt;
+bool operator &lt; (typename iterator_traits&lt;BidirectionalIterator&gt;::value_type const&amp; lhs,
+ const sub_match&lt;BidirectionalIterator&gt;&amp; rhs); </PRE>
+ <P><B>Effects: </B>returns <CODE>lhs &lt; rhs.str()</CODE>.</P>
+ <PRE><A name=o64></A>template &lt;class BidirectionalIterator&gt;
+bool operator &gt; (typename iterator_traits&lt;BidirectionalIterator&gt;::value_type const&amp; lhs,
+ const sub_match&lt;BidirectionalIterator&gt;&amp; rhs); </PRE>
+ <P><B>Effects: </B>returns <CODE>lhs &gt; rhs.str()</CODE>.</P>
+ <PRE><A name=o65></A>template &lt;class BidirectionalIterator&gt;
+bool operator &gt;= (typename iterator_traits&lt;BidirectionalIterator&gt;::value_type const&amp; lhs,
+ const sub_match&lt;BidirectionalIterator&gt;&amp; rhs); </PRE>
+ <P><B>Effects: </B>returns <CODE>lhs &gt;= rhs.str()</CODE>.</P>
+ <PRE><A name=o66></A>template &lt;class BidirectionalIterator&gt;
+bool operator &lt;= (typename iterator_traits&lt;BidirectionalIterator&gt;::value_type const&amp; lhs,
+ const sub_match&lt;BidirectionalIterator&gt;&amp; rhs); </PRE>
+ <P><B>Effects: </B>returns <CODE>lhs &lt;= rhs.str()</CODE>.</P>
+ <PRE><A name=o71></A>template &lt;class BidirectionalIterator&gt;
+bool operator == (const sub_match&lt;BidirectionalIterator&gt;&amp; lhs,
+ typename iterator_traits&lt;BidirectionalIterator&gt;::value_type const&amp; rhs); </PRE>
+ <P><B>Effects: </B>returns <CODE>lhs.str() == rhs</CODE>.</P>
+ <PRE><A name=o72></A>template &lt;class BidirectionalIterator&gt;
+bool operator != (const sub_match&lt;BidirectionalIterator&gt;&amp; lhs,
+ typename iterator_traits&lt;BidirectionalIterator&gt;::value_type const&amp; rhs); </PRE>
+ <P><B>Effects: </B>returns <CODE>lhs.str() != rhs</CODE>.</P>
+ <PRE><A name=o73></A>template &lt;class BidirectionalIterator&gt;
+bool operator &lt; (const sub_match&lt;BidirectionalIterator&gt;&amp; lhs,
+ typename iterator_traits&lt;BidirectionalIterator&gt;::value_type const&amp; rhs); </PRE>
+ <P><B>Effects: </B>returns <CODE>lhs.str() &lt; rhs</CODE>.</P>
+ <PRE><A name=o74></A>template &lt;class BidirectionalIterator&gt;
+bool operator &gt; (const sub_match&lt;BidirectionalIterator&gt;&amp; lhs,
+ typename iterator_traits&lt;BidirectionalIterator&gt;::value_type const&amp; rhs); </PRE>
+ <P><B>Effects: </B>returns <CODE>lhs.str() &gt; rhs</CODE>.</P>
+ <PRE><A name=o75></A>template &lt;class BidirectionalIterator&gt;
+bool operator &gt;= (const sub_match&lt;BidirectionalIterator&gt;&amp; lhs,
+ typename iterator_traits&lt;BidirectionalIterator&gt;::value_type const&amp; rhs); </PRE>
+ <P><B>Effects: </B>returns <CODE>lhs.str() &gt;= rhs</CODE>.</P>
+ <PRE><A name=o76></A>template &lt;class BidirectionalIterator&gt;
+bool operator &lt;= (const sub_match&lt;BidirectionalIterator&gt;&amp; lhs,
+ typename iterator_traits&lt;BidirectionalIterator&gt;::value_type const&amp; rhs); </PRE>
+ <P><B>Effects: </B>returns <CODE>lhs.str() &lt;= rhs</CODE>.</P>
+ <h5>Addition operators</h5>
+ <P>The addition operators for sub_match allow you to add a sub_match to any type
+ to which you can add a std::string and obtain a new string as the result.</P>
+ <PRE><A name=o81></A>template &lt;class BidirectionalIterator, class traits, class Allocator&gt;
+std::basic_string&lt;typename iterator_traits&lt;BidirectionalIterator&gt;::value_type, traits, Allocator&gt;
+ operator + (const std::basic_string&lt;typename iterator_traits&lt;BidirectionalIterator&gt;::value_type, traits, Allocator&gt;&amp; s,
+ const sub_match&lt;BidirectionalIterator&gt;&amp; m); </PRE>
+ <P><B>Effects: </B>returns <CODE>s + m.str()</CODE>.</P>
+ <PRE><A name=o82></A>template &lt;class BidirectionalIterator, class traits, class Allocator&gt;
+std::basic_string&lt;typename iterator_traits&lt;BidirectionalIterator&gt;::value_type, traits, Allocator&gt;
+ operator + (const sub_match&lt;BidirectionalIterator&gt;&amp; m,
+ const std::basic_string&lt;typename iterator_traits&lt;BidirectionalIterator&gt;::value_type, traits, Allocator&gt;&amp; s); </PRE>
+ <P><B>Effects: </B>returns <CODE>m.str() + s</CODE>.</P>
+ <PRE><A name=o83></A>template &lt;class BidirectionalIterator&gt; std::basic_string&lt;typename iterator_traits&lt;BidirectionalIterator&gt;::value_type&gt;
+ operator + (typename iterator_traits&lt;BidirectionalIterator&gt;::value_type const* s,
+ const sub_match&lt;BidirectionalIterator&gt;&amp; m); </PRE>
+ <P><B>Effects: </B>returns <CODE>s + m.str()</CODE>.</P>
+ <PRE><A name=o84></A>template &lt;class BidirectionalIterator&gt; std::basic_string&lt;typename iterator_traits&lt;BidirectionalIterator&gt;::value_type&gt;
+ operator + (const sub_match&lt;BidirectionalIterator&gt;&amp; m,
+ typename iterator_traits&lt;BidirectionalIterator&gt;::value_type const * s);</PRE>
+ <P><B>Effects: </B>returns <CODE>m.str() + s</CODE>.</P>
+ <PRE><A name=o85></A>template &lt;class BidirectionalIterator&gt;
+std::basic_string&lt;typename iterator_traits&lt;BidirectionalIterator&gt;::value_type&gt;
+ operator + (typename iterator_traits&lt;BidirectionalIterator&gt;::value_type const&amp; s,
+ const sub_match&lt;BidirectionalIterator&gt;&amp; m); </PRE>
+ <P><B>Effects: </B>returns <CODE>s + m.str()</CODE>.</P>
+ <PRE><A name=o86></A>template &lt;class BidirectionalIterator&gt;
+std::basic_string&lt;typename iterator_traits&lt;BidirectionalIterator&gt;::value_type&gt;
+ operator + (const sub_match&lt;BidirectionalIterator&gt;&amp; m,
+ typename iterator_traits&lt;BidirectionalIterator&gt;::value_type const&amp; s); </PRE>
+ <P><B>Effects: </B>returns <CODE>m.str() + s</CODE>.</P>
+ <PRE><A name=o87></A>template &lt;class BidirectionalIterator&gt;
+std::basic_string&lt;typename iterator_traits&lt;BidirectionalIterator&gt;::value_type&gt;
+ operator + (const sub_match&lt;BidirectionalIterator&gt;&amp; m1,
+ const sub_match&lt;BidirectionalIterator&gt;&amp; m2);</PRE>
+ <P><B>Effects: </B>returns&nbsp;<CODE>m1.str() + m2.str()</CODE>.</P>
+ <h5>Stream inserter</h5>
+ <PRE><A name=oi></A>template &lt;class charT, class traits, class BidirectionalIterator&gt;
+basic_ostream&lt;charT, traits&gt;&amp;
+ operator &lt;&lt; (basic_ostream&lt;charT, traits&gt;&amp; os
+ const sub_match&lt;BidirectionalIterator&gt;&amp; m);</PRE>
+ <P>
+ <B>Effects: </B>returns <CODE>(os &lt;&lt; m.str())</CODE>.
+ <HR>
+ <p>Revised
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->
+ 22&nbsp;Dec 2004
+ <!--webbot bot="Timestamp" endspan i-checksum="39359" --></p>
+ <p><i>© Copyright John Maddock&nbsp;1998-
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%Y" startspan -->
+ 2004</i></p>
+ <P><I>Use, modification and distribution are subject to the Boost Software License,
+ Version 1.0. (See accompanying file LICENSE_1_0.txt
+ or copy at http://www.boost.org/LICENSE_1_0.txt)</I></P>
+ </body>
+</html>

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/doc/syntax.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/doc/syntax.html 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,55 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+ <head>
+ <title>Boost.Regex: Regular Expression Syntax</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <link rel="stylesheet" type="text/css" href="../../../boost.css">
+ </head>
+ <body>
+ <P>
+ <TABLE id="Table1" cellSpacing="1" cellPadding="1" width="100%" border="0">
+ <TR>
+ <td valign="top" width="300">
+ <h3>C++ Boost</h3>
+ </td>
+ <TD width="353">
+ <H1 align="center">Boost.Regex</H1>
+ <H2 align="center">Regular Expression Syntax</H2>
+ </TD>
+ <td width="50">
+ <h3>Boost.Regex Index</h3>
+ </td>
+ </TR>
+ </TABLE>
+ </P>
+ <HR>
+ <P>This section covers the regular expression syntax used by this library, this is
+ a programmers guide, the actual syntax presented to your program's users will
+ depend upon the flags used during
+ expression compilation.
+ </P>
+ <P>There are three main syntax options available, depending upon how
+ you&nbsp;construct the regular expression object:</P>
+ <UL>
+ <LI>
+ Perl&nbsp;(this is the default behavior).</LI>
+ <LI>
+ POSIX extended (including the <A href="syntax_extended.html#egrep">
+ egrep</A> and awk variations).</LI>
+ <LI>
+ POSIX Basic (including the <A href="syntax_basic.html#grep">
+ grep</A> and emacs variations).</LI></UL>
+ <P>You can also construct a regular expression that treats every character as a <A href="syntax_option_type.html#literals">
+ literal</A>, but that's not really a "syntax"!</P>
+ <HR>
+ <p>Revised&nbsp;
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->
+ 10 Sept 2004&nbsp;
+ <!--webbot bot="Timestamp" endspan i-checksum="39359" --></p>
+ <p><i>© Copyright John Maddock&nbsp;1998-
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%Y" startspan --> 2004<!--webbot bot="Timestamp" endspan i-checksum="39359" --></i></p>
+ <P><I>Use, modification and distribution are subject to the Boost Software License,
+ Version 1.0. (See accompanying file LICENSE_1_0.txt
+ or copy at http://www.boost.org/LICENSE_1_0.txt)</I></P>
+ </body>
+</html>

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/doc/syntax_basic.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/doc/syntax_basic.html 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,238 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+ <head>
+ <title>Boost.Regex: POSIX-Basic Regular Expression Syntax</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <LINK href="../../../boost.css" type="text/css" rel="stylesheet"></head>
+ <body>
+ <P>
+ <TABLE id="Table1" cellSpacing="1" cellPadding="1" width="100%" border="0">
+ <TR>
+ <td vAlign="top" width="300">
+ <h3>C++ Boost</h3>
+ </td>
+ <TD width="353">
+ <H1 align="center">Boost.Regex</H1>
+ <H2 align="center">POSIX Basic Regular Expression Syntax</H2>
+ </TD>
+ <td width="50">
+ <h3>Boost.Regex Index</h3>
+ </td>
+ </TR>
+ </TABLE>
+ </P>
+ <HR>
+ <H3>Contents</H3>
+ <dl class="index">
+ <dt>Synopsis <dt>POSIX Basic Syntax <dt><A href="#variations">
+ Variations</A>
+ <dd>
+ <dl>
+ <dt>Grep <dt>Emacs</dt>
+ </dl>
+ <dt>Options <dt>References</dt>
+ </dl>
+ <H3><A name="synopsis"></A>Synopsis</H3>
+ <P>The POSIX-Basic regular expression syntax is used by the Unix utility <EM>sed</EM>,
+ and variations are used by <EM>grep</EM> and <EM>emacs</EM>.&nbsp; You can
+ construct POSIX basic regular expressions in Boost.Regex by passing the flag <EM>basic</EM>
+ to the regex constructor, for example:</P>
+ <PRE>// e1 is a case sensitive POSIX-Basic expression:
+boost::regex e1(my_expression, boost::regex::basic);
+// e2 a case insensitive POSIX-Basic expression:
+boost::regex e2(my_expression, boost::regex::basic|boost::regex::icase);</PRE>
+ <H3>POSIX Basic Syntax<A name="Basic"></A></H3>
+ <P>In POSIX-Basic regular expressions, all characters are match themselves except
+ for the following special characters:</P>
+ <PRE>.[\*^$</PRE>
+ <H4>Wildcard:</H4>
+ <P>The single character '.' when used outside of a character set will match any
+ single character except:</P>
+ <P>The NULL character when the flag <EM>match_no_dot_null</EM> is passed to the
+ matching algorithms.</P>
+ <P>The newline character when the flag <EM>match_not_dot_newline</EM> is passed to
+ the matching algorithms.</P>
+ <H4>Anchors:</H4>
+ <P>A '^' character shall match the start of a line when used as the first
+ character of an expression, or the first character of a sub-expression.</P>
+ <P>A '$' character shall match the end of a line when used as the last character
+ of an expression, or the last character of a sub-expression.</P>
+ <H4>Marked sub-expressions:</H4>
+ <P>A section beginning \( and ending \) acts as a marked sub-expression.&nbsp;
+ Whatever matched the sub-expression is split out in a separate field by the
+ matching algorithms.&nbsp; Marked sub-expressions can also repeated, or
+ referred-to by a back-reference.</P>
+ <H4>Repeats:</H4>
+ <P>Any atom (a single character, a marked sub-expression, or a character class)
+ can be repeated with the * operator.</P>
+ <P>For example a* will match any number of letter a's repeated zero or more times
+ (an atom repeated zero times matches an empty string), so the expression a*b
+ will match any of the following:</P>
+ <PRE>b
+ab
+aaaaaaaab</PRE>
+ <P>An atom can also be repeated with a bounded repeat:</P>
+ <P>a\{n\}&nbsp; Matches 'a' repeated exactly <EM>n</EM> times.</P>
+ <P>a\{n,\}&nbsp; Matches 'a' repeated <EM>n</EM> or more times.</P>
+ <P>a\{n, m\}&nbsp; Matches 'a' repeated between <EM>n</EM> and <EM>m</EM> times
+ inclusive.</P>
+ <P>For example:</P>
+ <PRE>^a\{2,3\}$</PRE>
+ <P>Will match either of:</P>
+ <PRE>aa
+aaa</PRE>
+ <P>But neither of:</P>
+ <PRE>a
+aaaa</PRE>
+ <P>It is an error to use a repeat operator, if the preceding construct can not be
+ repeated, for example:</P>
+ <PRE>a\(*\)</PRE>
+ <P>Will raise an error, as there is nothing for the * operator to be applied to.</P>
+ <H4>Back references:</H4>
+ <P>An escape character followed by a digit <EM>n</EM>, where <EM>n </EM>is in the
+ range 1-9, matches the same string that was matched by sub-expression <EM>n</EM>.&nbsp;
+ For example the expression:</P>
+ <PRE>^\(a*\).*\1$</PRE>
+ <P>Will match the string:</P>
+ <PRE>aaabbaaa</PRE>
+ <P>But not the string:</P>
+ <PRE>aaabba</PRE>
+ <H4>Character sets:</H4>
+ <P>A character set is a bracket-expression starting with [ and ending with ], it
+ defines a set of characters, and matches any single character that is a member
+ of that set.</P>
+ <P>A bracket expression may contain any combination of the following:</P>
+ <BLOCKQUOTE dir="ltr" style="MARGIN-RIGHT: 0px">
+ <H5>Single characters:</H5>
+ <P>For example [abc], will match any of the characters 'a', 'b', or 'c'.</P>
+ <H5>Character ranges:</H5>
+ <P>For example [a-c] will match any single character in the range 'a' to
+ 'c'.&nbsp; By default, for POSIX-Basic regular expressions, a character <EM>x</EM>
+ is within the range <EM>y</EM> to <EM>z</EM>, if it collates within that
+ range;&nbsp;this results in locale specific behavior.&nbsp; This behavior can
+ be turned off by unsetting the <EM>collate</EM>
+ option flag - in which case whether a character appears within a range is
+ determined by comparing the code points of the characters only</P>
+ <H5>Negation:</H5>
+ <P>If the bracket-expression begins with the ^ character, then it matches the
+ complement of the characters it contains, for example [^a-c] matches any
+ character that is not in the range a-c.</P>
+ <H5>Character classes:</H5>
+ <P>An expression of the form [[:name:]] matches the named character class "name",
+ for example [[:lower:]] matches any lower case character.&nbsp; See <A href="character_class_names.html">
+ character class names</A>.</P>
+ <H5>Collating Elements:</H5>
+ <P>An expression of the form [[.col.] matches the collating element <EM>col</EM>.&nbsp;
+ A collating element is any single character, or any sequence of characters that
+ collates as a single unit.&nbsp; Collating elements may also be used as the end
+ point of a range, for example: [[.ae.]-c] matches the character sequence "ae",
+ plus any single character in the rangle "ae"-c, assuming that "ae" is treated
+ as a single collating element in the current locale.</P>
+ <P>Collating elements may be used in place of escapes (which are not normally
+ allowed inside character sets), for example [[.^.]abc] would match either one
+ of the characters 'abc^'.</P>
+ <P>As an extension, a collating element may also be specified via its <A href="collating_names.html">
+ symbolic name</A>, for example:</P>
+ <P>[[.NUL.]]</P>
+ <P>matches a NUL character.</P>
+ <H5>Equivalence classes:</H5>
+ <P>
+ An expression of theform[[=col=]], matches any character or collating element
+ whose primary sort key is the same as that for collating element <EM>col</EM>,
+ as with collating elements the name <EM>col</EM> may be a <A href="collating_names.html">
+ symbolic name</A>.&nbsp; A primary sort key is one that ignores case,
+ accentation, or locale-specific tailorings; so for example [[=a=]] matches any
+ of the characters: a, à, á, â, ã, ä, å, A, À, Á, Â, Ã, Ä and Å.&nbsp;
+ Unfortunately implementation of this is reliant on the platform's collation and
+ localisation support; this feature can not be relied upon to work portably
+ across all platforms, or even all locales on one platform.</P>
+ </BLOCKQUOTE>
+ <H5>Combinations:</H5>
+ <P>All of the above can be combined in one character set declaration, for example:
+ [[:digit:]a-c[.NUL.]].</P>
+ <H4>Escapes</H4>
+ <P>With the exception of the escape sequences \{, \}, \(, and \), which are
+ documented above, an escape followed by any character matches that
+ character.&nbsp; This can be used to make the special characters .[\*^$,
+ "ordinary".&nbsp; Note that the escape character loses its special meaning
+ inside a character set, so [\^] will match either a literal '\' or a '^'.</P>
+ <H4>What Gets Matched</H4>
+ <P>When there is more that one way to match a regular expression, the "best"
+ possible match is obtained using the <A href="syntax_leftmost_longest.html">leftmost-longest
+ rule</A>.</P>
+ <H3><A name="variations"></A>Variations</H3>
+ <H4><A name="grep"></A>Grep</H4>
+ <P>When an expression is compiled with the flag <EM>grep</EM> set, then the
+ expression is treated as a newline separated list of POSIX-Basic
+ expressions, a match is found if any of the expressions in the list match, for
+ example:</P>
+ <PRE>boost::regex e("abc\ndef", boost::regex::grep);</PRE>
+ <P>will match either of the POSIX-Basic expressions "abc" or "def".</P>
+ <P>As its name suggests, this behavior is consistent with the Unix utility <EM>grep</EM>.</P>
+ <H4><A name="emacs"></A>emacs</H4>
+ <P>In addition to the POSIX-Basic features the following
+ characters are also special:</P>
+ <BLOCKQUOTE dir="ltr" style="MARGIN-RIGHT: 0px">
+ <P>+ repeats the preceding atom one or more times.</P>
+ <P>? repeats the preceding atom zero or one times.</P>
+ <P>*? A non-greedy version of *.</P>
+ <P>+? A non-greedy version of +.</P>
+ <P>?? A non-greedy version of ?.</P>
+ </BLOCKQUOTE>
+ <P>And the following escape sequences are also recognised:</P>
+ <BLOCKQUOTE dir="ltr" style="MARGIN-RIGHT: 0px">
+ <P>\| specifies an alternative.</P>
+ <P>\(?:&nbsp; ...&nbsp; \) is a non-marking grouping construct - allows you to
+ lexically group something without spitting out an extra sub-expression.</P>
+ <P>\w&nbsp; matches any word character.</P>
+ <P>\W matches any non-word character.</P>
+ <P>\sx matches any character in the syntax group <EM>x</EM>, the following emacs
+ groupings are supported: 's', ' ', '_', 'w', '.', ')', '(', '"', '\'', '&gt;'
+ and '&lt;'.&nbsp; Refer to the emacs docs for details.</P>
+ <P>\Sx matches any character not in the syntax grouping <EM>x</EM>.</P>
+ <P>\c and \C are not supported.</P>
+ <P>\` matches zero characters only at the start of a buffer (or string being
+ matched).</P>
+ <P>\' matches zero characters only at the end of a buffer (or string being
+ matched).</P>
+ <P>\b matches zero characters at a word boundary.</P>
+ <P>\B matches zero characters, not at a word boundary.</P>
+ <P>\&lt; matches zero characters only at the start of a word.</P>
+ <P>\&gt; matches zero characters only at the end of a word.</P>
+ </BLOCKQUOTE>
+ <P dir="ltr">Finally, you should note that emacs style regular expressions are
+ matched according to the <A href="syntax_perl.html#what">Perl "depth first search"
+ rules</A>.&nbsp; Emacs expressions are matched this way because they contain
+ Perl-like extensions, that do not interact well with the <A href="syntax_leftmost_longest.html">
+ POSIX-style leftmost-longest rule</A>.</P>
+ <H3><A name="options"></A>Options</H3>
+ <P>There are a variety of flags that
+ may be combined with the <EM>basic</EM> and <EM>grep</EM> options when
+ constructing the regular expression, in particular note that the <A href="syntax_option_type.html#basic">
+ newline_alt, no_char_classes, no-intervals, bk_plus_qm and bk_plus_vbar</A> options
+ all alter the syntax, while the <A href="syntax_option_type.html#basic">collate
+ and icase</A> options modify how the case and locale sensitivity are to be
+ applied.</P>
+ <H3><A name="refs"></A>References</H3>
+ <P><A href="http://www.opengroup.org/onlinepubs/000095399/basedefs/xbd_chap09.html">IEEE
+ Std 1003.1-2001, Portable Operating System Interface (POSIX ), Base Definitions
+ and Headers, Section 9, Regular Expressions (FWD.1).</A></P>
+ <P><A href="http://www.opengroup.org/onlinepubs/000095399/utilities/grep.html">IEEE
+ Std 1003.1-2001, Portable Operating System Interface (POSIX ), Shells and
+ Utilities, Section 4, Utilities, grep (FWD.1).</A></P>
+ <P>Emacs Version 21.3.</P>
+ <P>
+ <HR>
+ <P></P>
+ <p>Revised&nbsp;
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->
+ 21 Aug 2004&nbsp;
+ <!--webbot bot="Timestamp" endspan i-checksum="39359" --></p>
+ <P><I>© Copyright <a href="mailto:jm_at_[hidden]">John Maddock</a>&nbsp;2004</I></P>
+ <I>
+ <P><I>Use, modification and distribution are subject to the Boost Software License,
+ Version 1.0. (See accompanying file LICENSE_1_0.txt
+ or copy at http://www.boost.org/LICENSE_1_0.txt).</I></P>
+ </I>
+ </body>
+</html>

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/doc/syntax_extended.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/doc/syntax_extended.html 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,520 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+ <head>
+ <title>Boost.Regex: POSIX-Extended Regular Expression Syntax</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <LINK href="../../../boost.css" type="text/css" rel="stylesheet"></head>
+ <body>
+ <P>
+ <TABLE id="Table1" cellSpacing="1" cellPadding="1" width="100%" border="0">
+ <TR>
+ <td vAlign="top" width="300">
+ <h3>C++ Boost</h3>
+ </td>
+ <TD width="353">
+ <H1 align="center">Boost.Regex</H1>
+ <H2 align="center">POSIX-Extended Regular Expression Syntax</H2>
+ </TD>
+ <td width="50">
+ <h3>Boost.Regex Index</h3>
+ </td>
+ </TR>
+ </TABLE>
+ </P>
+ <HR>
+ <H3>Contents</H3>
+ <dl class="index">
+ <dt>Synopsis <dt>POSIX Extended Syntax
+ <dt>Variations
+ <dd>
+ <dl>
+ <dt>egrep <dt>awk&nbsp;</dt>
+ </dl>
+ <dt>Options <dt>References</dt>
+ </dl>
+ <H3><A name="synopsis"></A>Synopsis</H3>
+ <P>The POSIX-Extended regular expression syntax is supported by the POSIX C
+ regular expression API's, and variations are used by the utilities <EM>egrep</EM>
+ and <EM>awk</EM>. You can construct POSIX extended regular expressions in
+ Boost.Regex by passing the flag <EM>extended</EM> to the regex constructor, for
+ example:</P>
+ <PRE>// e1 is a case sensitive POSIX-Extended expression:
+boost::regex e1(my_expression, boost::regex::extended);
+// e2 a case insensitive POSIX-Extended expression:
+boost::regex e2(my_expression, boost::regex::extended|boost::regex::icase);</PRE>
+ <H3>POSIX Extended Syntax<A name="extended"></A></H3>
+ <P>In POSIX-Extended regular expressions, all characters match themselves except
+ for the following special characters:</P>
+ <PRE>.[{()\*+?|^$</PRE>
+ <H4>Wildcard:</H4>
+ <P>The single character '.' when used outside of a character set will match any
+ single character except:</P>
+ <P>The NULL character when the flag <EM>match_no_dot_null</EM> is passed to the
+ matching algorithms.</P>
+ <P>The newline character when the flag <EM>match_not_dot_newline</EM> is passed to
+ the matching algorithms.</P>
+ <H4>Anchors:</H4>
+ <P>A '^' character shall match the start of a line when used as the first
+ character of an expression, or the first character of a sub-expression.</P>
+ <P>A '$' character shall match the end of a line when used as the last character
+ of an expression, or the last character of a sub-expression.</P>
+ <H4>Marked sub-expressions:</H4>
+ <P>A section beginning ( and ending ) acts as a marked sub-expression.&nbsp;
+ Whatever matched the sub-expression is split out in a separate field by the
+ matching algorithms.&nbsp; Marked sub-expressions can also repeated, or
+ referred to by a back-reference.</P>
+ <H4>Repeats:</H4>
+ <P>Any atom (a single character, a marked sub-expression, or a character class)
+ can be repeated with the *, +, ?, and {}&nbsp;operators.</P>
+ <P>The * operator will match the preceding atom zero or more times, for example
+ the expression a*b will match any of the following:</P>
+ <PRE>b
+ab
+aaaaaaaab</PRE>
+ <P>The + operator will match the preceding atom one or more times, for example the
+ expression a+b will match any of the following:</P>
+ <PRE>ab
+aaaaaaaab</PRE>
+ <P>But will not match:</P>
+ <PRE>b</PRE>
+ <P>The ? operator will match the preceding atom zero or&nbsp;one times, for
+ example the expression ca?b will match any of the following:</P>
+ <PRE>cb
+cab</PRE>
+ <P>But will not match:</P>
+ <PRE>caab</PRE>
+ <P>An atom can also be repeated with a bounded repeat:</P>
+ <P>a{n}&nbsp; Matches 'a' repeated exactly <EM>n</EM> times.</P>
+ <P>a{n,}&nbsp; Matches 'a' repeated <EM>n</EM> or more times.</P>
+ <P>a{n, m}&nbsp; Matches 'a' repeated between <EM>n</EM> and <EM>m</EM> times
+ inclusive.</P>
+ <P>For example:</P>
+ <PRE>^a{2,3}$</PRE>
+ <P>Will match either of:</P>
+ <PRE>aa
+aaa</PRE>
+ <P>But neither of:</P>
+ <PRE>a
+aaaa</PRE>
+ <P>It is an error to use a repeat operator, if the preceding construct can not be
+ repeated, for example:</P>
+ <PRE>a(*)</PRE>
+ <P>Will raise an error, as there is nothing for the * operator to be applied to.</P>
+ <H4>Back references:</H4>
+ <P>An escape character followed by a digit <EM>n</EM>, where <EM>n </EM>is in the
+ range 1-9, matches the same string that was matched by sub-expression <EM>n</EM>.&nbsp;
+ For example the expression:</P>
+ <PRE>^(a*).*\1$</PRE>
+ <P>Will match the string:</P>
+ <PRE>aaabbaaa</PRE>
+ <P>But not the string:</P>
+ <PRE>aaabba</PRE>
+ <P><EM><STRONG>Caution</STRONG>: the POSIX standard does not support back-references
+ for "extended" regular expressions, this is a compatible extension to that
+ standard.</EM></P>
+ <H4>Alternation</H4>
+ <P>The | operator will match either of its arguments, so for example: abc|def will
+ match either "abc" or "def".&nbsp;
+ </P>
+ <P>Parenthesis can be used to group alternations, for example: ab(d|ef) will match
+ either of "abd" or "abef".</P>
+ <H4>Character sets:</H4>
+ <P>A character set is a bracket-expression starting with [ and ending with ], it
+ defines a set of characters, and matches any single character that is a member
+ of that set.</P>
+ <P>A bracket expression may contain any combination of the following:</P>
+ <BLOCKQUOTE dir="ltr" style="MARGIN-RIGHT: 0px">
+ <H5>Single characters:</H5>
+ <P>For example [abc], will match any of the characters 'a', 'b', or 'c'.</P>
+ <H5>Character ranges:</H5>
+ <P>For example [a-c] will match any single character in the range 'a' to
+ 'c'.&nbsp; By default, for POSIX-Extended regular expressions, a character <EM>x</EM>
+ is within the range <EM>y</EM> to <EM>z</EM>, if it collates within that
+ range;&nbsp;<EM><STRONG>this results in locale specific behavior</STRONG></EM> .&nbsp;
+ This behavior can be turned off by unsetting the <EM><A href="syntax_option_type.html#extended">
+ collate</A></EM> option flag - in which case whether a character appears
+ within a range is determined by comparing the code points of the characters
+ only.</P>
+ <H5>Negation:</H5>
+ <P>If the bracket-expression begins with the ^ character, then it matches the
+ complement of the characters it contains, for example [^a-c] matches any
+ character that is not in the range a-c.</P>
+ <H5>Character classes:</H5>
+ <P>An expression of the form [[:name:]] matches the named character class "name",
+ for example [[:lower:]] matches any lower case character.&nbsp; See <A href="character_class_names.html">
+ character class names</A>.</P>
+ <H5>Collating Elements:</H5>
+ <P>An expression of the form [[.col.] matches the collating element <EM>col</EM>.&nbsp;
+ A collating element is any single character, or any sequence of characters that
+ collates as a single unit.&nbsp; Collating elements may also be used as the end
+ point of a range, for example: [[.ae.]-c] matches the character sequence "ae",
+ plus any single character in the range "ae"-c, assuming that "ae" is treated as
+ a single collating element in the current locale.</P>
+ <P>Collating elements may be used in place of escapes (which are not normally
+ allowed inside character sets), for example [[.^.]abc] would match either one
+ of the characters 'abc^'.</P>
+ <P>As an extension, a collating element may also be specified via its <A href="collating_names.html">
+ symbolic name</A>, for example:</P>
+ <P>[[.NUL.]]</P>
+ <P>matches a NUL character.</P>
+ <H5>Equivalence classes:</H5>
+ <P>
+ An expression oftheform[[=col=]], matches any character or collating element
+ whose primary sort key is the same as that for collating element <EM>col</EM>,
+ as with colating elements the name <EM>col</EM> may be a <A href="collating_names.html">
+ symbolic name</A>.&nbsp; A primary sort key is one that ignores case,
+ accentation, or locale-specific tailorings; so for example [[=a=]] matches any
+ of the characters: a, à, á, â, ã, ä, å, A, À, Á, Â, Ã, Ä and Å.&nbsp;
+ Unfortunately implementation of this is reliant on the platform's collation and
+ localisation support; this feature can not be relied upon to work portably
+ across all platforms, or even all locales on one platform.</P>
+ </BLOCKQUOTE>
+ <H5>Combinations:</H5>
+ <P>All of the above can be combined in one character set declaration, for example:
+ [[:digit:]a-c[.NUL.]].</P>
+ <H4>Escapes</H4>
+ <P>The POSIX standard defines no escape sequences for POSIX-Extended regular
+ expressions, except that:</P>
+ <UL>
+ <LI>
+ Any special character preceded by an escape shall match itself.
+ <LI>
+ The effect of any ordinary character being preceded by an escape is undefined.
+ <LI>
+ An escape inside a character class declaration shall match itself: in other
+ words the escape character is not "special" inside a character class
+ declaration; so [\^] will match either a literal '\' or a '^'.</LI></UL>
+ <P>However, that's rather restrictive, so the following standard-compatible
+ extensions are also supported by Boost.Regex:</P>
+ <BLOCKQUOTE dir="ltr" style="MARGIN-RIGHT: 0px">
+ <H5>Escapes matching a specific character</H5>
+ <P>The following escape sequences are all synonyms for single characters:</P>
+ <P>
+ <TABLE id="Table7" cellSpacing="1" cellPadding="1" width="100%" border="1">
+ <TR>
+ <TD><STRONG>Escape</STRONG></TD>
+ <TD><STRONG>Character</STRONG></TD>
+ </TR>
+ <TR>
+ <TD>\a</TD>
+ <TD>'\a'</TD>
+ </TR>
+ <TR>
+ <TD>\e</TD>
+ <TD>0x1B</TD>
+ </TR>
+ <TR>
+ <TD>\f</TD>
+ <TD>\f</TD>
+ </TR>
+ <TR>
+ <TD>\n</TD>
+ <TD>\n</TD>
+ </TR>
+ <TR>
+ <TD>\r</TD>
+ <TD>\r</TD>
+ </TR>
+ <TR>
+ <TD>\t</TD>
+ <TD>\t</TD>
+ </TR>
+ <TR>
+ <TD>\v</TD>
+ <TD>\v</TD>
+ </TR>
+ <TR>
+ <TD>\b</TD>
+ <TD>\b (but only inside a character class declaration).</TD>
+ </TR>
+ <TR>
+ <TD>\cX</TD>
+ <TD>An ASCII escape sequence - the character whose code point is X % 32</TD>
+ </TR>
+ <TR>
+ <TD>\xdd</TD>
+ <TD>A hexadecimal escape sequence - matches the single character whose code point
+ is 0xdd.</TD>
+ </TR>
+ <TR>
+ <TD>\x{dddd}</TD>
+ <TD>A hexadecimal escape sequence - matches the single character whose code point
+ is 0xdddd.</TD>
+ </TR>
+ <TR>
+ <TD>\0ddd</TD>
+ <TD>An octal escape sequence - matches the single character whose code point is
+ 0ddd.</TD>
+ </TR>
+ <TR>
+ <TD>\N{Name}</TD>
+ <TD>Matches the single character which has the <A href="collating_names.html">symbolic
+ name</A> <EM>name.&nbsp; </EM>For example \N{newline} matches the single
+ character \n.</TD>
+ </TR>
+ </TABLE>
+ </P>
+ <H5>"Single character" character&nbsp;classes:</H5>
+ <P>Any escaped character <EM>x</EM>, if <EM>x</EM> is the name of a character
+ class shall match any character that is a member of that class, and any escaped
+ character <EM>X</EM>, if <EM>x</EM> is the name of a character class, shall
+ match any character not in that class.</P>
+ <P>The following are supported by default:</P>
+ <P>
+ <TABLE id="Table3" cellSpacing="1" cellPadding="1" width="300" border="1">
+ <TR>
+ <TD><STRONG>Escape sequence</STRONG></TD>
+ <TD><STRONG>Equivalent to</STRONG></TD>
+ </TR>
+ <TR>
+ <TD>\d</TD>
+ <TD>[[:digit:]]</TD>
+ </TR>
+ <TR>
+ <TD>\l</TD>
+ <TD>[[:lower:]]</TD>
+ </TR>
+ <TR>
+ <TD>\s</TD>
+ <TD>[[:space:]]</TD>
+ </TR>
+ <TR>
+ <TD>\u</TD>
+ <TD>[[:upper:]]</TD>
+ </TR>
+ <TR>
+ <TD>\w</TD>
+ <TD>[[:word:]]</TD>
+ </TR>
+ <TR>
+ <TD>\D</TD>
+ <TD>[^[:digit:]]</TD>
+ </TR>
+ <TR>
+ <TD>\L</TD>
+ <TD>[^[:lower:]]</TD>
+ </TR>
+ <TR>
+ <TD>\S</TD>
+ <TD>[^[:space:]]</TD>
+ </TR>
+ <TR>
+ <TD>\U</TD>
+ <TD>[^[:upper:]]</TD>
+ </TR>
+ <TR>
+ <TD>\W</TD>
+ <TD>[^[:word:]]</TD>
+ </TR>
+ </TABLE>
+ </P>
+ <H5>
+ <H5>Character Properties</H5>
+ </H5>
+ <P dir="ltr">The character property names in the following table are all
+ equivalent to the <A href="character_class_names.html">names used in character
+ classes</A>.</P>
+ <H5>
+ <TABLE id="Table9" cellSpacing="1" cellPadding="1" width="100%" border="0">
+ <TR>
+ <TD><STRONG>Form</STRONG></TD>
+ <TD><STRONG>Description</STRONG></TD>
+ <TD><STRONG>Equivalent character set form</STRONG></TD>
+ </TR>
+ <TR>
+ <TD>\pX</TD>
+ <TD>Matches any character that has the property X.</TD>
+ <TD>[[:X:]]</TD>
+ </TR>
+ <TR>
+ <TD>\p{Name}</TD>
+ <TD>Matches any character that has the property <EM>Name</EM>.</TD>
+ <TD>[[:Name:]]</TD>
+ </TR>
+ <TR>
+ <TD>\PX</TD>
+ <TD>Matches any character that does not have the property X.</TD>
+ <TD>[^[:X:]]</TD>
+ </TR>
+ <TR>
+ <TD>\P{Name}</TD>
+ <TD>Matches any character that does not have the property <EM>Name</EM>.</TD>
+ <TD>[^[:Name:]]</TD>
+ </TR>
+ </TABLE>
+ </H5>
+ <H5>Word Boundaries</H5>
+ <P>The following escape sequences match the boundaries of words:</P>
+ <P>
+ <TABLE id="Table4" cellSpacing="1" cellPadding="1" width="100%" border="1">
+ <TR>
+ <TD>\&lt;</TD>
+ <TD>Matches the start of a word.</TD>
+ </TR>
+ <TR>
+ <TD>\&gt;</TD>
+ <TD>Matches the end of a word.</TD>
+ </TR>
+ <TR>
+ <TD>\b</TD>
+ <TD>Matches a word boundary (the start or end of a word).</TD>
+ </TR>
+ <TR>
+ <TD>\B</TD>
+ <TD>Matches only when not at a word boundary.</TD>
+ </TR>
+ </TABLE>
+ </P>
+ <H5>Buffer boundaries</H5>
+ <P>The following match only at buffer boundaries: a "buffer" in this context is
+ the whole of the input text&nbsp;that is being matched against (note that ^ and
+ $ may match embedded newlines within the text).</P>
+ <P>
+ <TABLE id="Table5" cellSpacing="1" cellPadding="1" width="100%" border="1">
+ <TR>
+ <TD>\`</TD>
+ <TD>Matches at the start of a buffer only.</TD>
+ </TR>
+ <TR>
+ <TD>\'</TD>
+ <TD>Matches at the end of a buffer only.</TD>
+ </TR>
+ <TR>
+ <TD>\A</TD>
+ <TD>Matches at the start of a buffer only (the same as \`).</TD>
+ </TR>
+ <TR>
+ <TD>\z</TD>
+ <TD>Matches at the end of a buffer only (the same as \').</TD>
+ </TR>
+ <TR>
+ <TD>\Z</TD>
+ <TD>Matches an optional sequence of newlines at the end of a buffer: equivalent to
+ the regular expression \n*\z</TD>
+ </TR>
+ </TABLE>
+ </P>
+ <H5>Continuation Escape</H5>
+ <P>The sequence \G matches only at the end of the last match found, or at the
+ start of the text being matched if no previous match was found.&nbsp; This
+ escape useful if you're iterating over the matches contained within a text, and
+ you want each subsequence match to start where the last one ended.</P>
+ <H5>Quoting escape</H5>
+ <P>The escape sequence \Q begins a "quoted sequence": all the subsequent
+ characters are treated as literals, until either the end of the regular
+ expression or \E is found.&nbsp; For example the expression: \Q\*+\Ea+ would
+ match either of:</P>
+ <PRE>\*+a<BR>\*+aaa</PRE>
+ <H5>Unicode escapes</H5>
+ <P>
+ <TABLE id="Table6" cellSpacing="1" cellPadding="1" width="100%" border="1">
+ <TR>
+ <TD>\C</TD>
+ <TD>Matches a single code point: in Boost regex this has exactly the same effect
+ as a "." operator.</TD>
+ </TR>
+ <TR>
+ <TD>\X</TD>
+ <TD>Matches a combining character sequence: that is any non-combining character
+ followed by a sequence of zero or more combining characters.</TD>
+ </TR>
+ </TABLE>
+ </P>
+ <H5>Any other escape</H5>
+ <P>Any other escape sequence matches the character that is escaped, for example \@
+ matches a literal <A href="mailto:'@'">'@'</A>.</P>
+ </BLOCKQUOTE><A name="variations">
+ <H4>Operator precedence</H4>
+ <P>&nbsp;The order of precedence for of operators is as shown in the following
+ table:</P>
+ <P>
+ <TABLE id="Table2" cellSpacing="1" cellPadding="1" width="100%" border="1">
+ <TR>
+ <TD>Collation-related bracket symbols</TD>
+ <TD>[==] [::] [..]</TD>
+ </TR>
+ <TR>
+ <TD>Escaped characters
+ </TD>
+ <TD>\</TD>
+ </TR>
+ <TR>
+ <TD>Character set&nbsp;(bracket expression)
+ </TD>
+ <TD>[]</TD>
+ </TR>
+ <TR>
+ <TD>Grouping</TD>
+ <TD>()</TD>
+ </TR>
+ <TR>
+ <TD>Single-character-ERE duplication
+ </TD>
+ <TD>* + ? {m,n}</TD>
+ </TR>
+ <TR>
+ <TD>Concatenation</TD>
+ <TD></TD>
+ </TR>
+ <TR>
+ <TD>Anchoring</TD>
+ <TD>^$</TD>
+ </TR>
+ <TR>
+ <TD>Alternation</TD>
+ <TD>|</TD>
+ </TR>
+ </TABLE>
+ </P>
+ </A>
+ <H4>What Gets Matched</H4>
+ <P>When there is more that one way to match a regular expression, the "best"
+ possible match is obtained using the <A href="syntax_leftmost_longest.html">leftmost-longest
+ rule</A>.</P>
+ <H3>Variations</H3>
+ <H4>Egrep<A name="egrep"></H4>
+ <P>When an expression is compiled with the flag <EM>egrep</EM> set, then the
+ expression is treated as a newline separated list of POSIX-Extended
+ expressions, a match is found if any of the expressions in the list match, for
+ example:</P>
+ <PRE>boost::regex e("abc\ndef", boost::regex::egrep);</PRE>
+ <P>will match either of the POSIX-Basic expressions "abc" or "def".</P>
+ <P>As its name suggests, this behavior is consistent with the Unix utility <EM>egrep</EM>,
+ and with <EM>grep</EM> when used with the -E option.</P>
+ <H4>awk<A name="awk"></A></H4>
+ <P>In addition to the POSIX-Extended features&nbsp;the
+ escape character is special inside a character class declaration.&nbsp;</P>
+ <P>In addition, some escape sequences that are not defined as part of
+ POSIX-Extended specification are required to be supported - however Boost.Regex
+ supports these by default anyway.</P>
+ <H3><A name="options"></A>Options</H3>
+ <P>There are a variety of flags that
+ may be combined with the <EM>extended</EM> and <EM>egrep</EM> options when
+ constructing the regular expression, in particular note that the <A href="syntax_option_type.html#extended">
+ newline_alt</A> option alters the syntax, while the <A href="syntax_option_type.html#extended">
+ collate, nosubs&nbsp;and icase</A> options modify how the case and locale
+ sensitivity are to be applied.</P>
+ <H3><A name="refs">References</H3>
+ <P><A href="http://www.opengroup.org/onlinepubs/000095399/basedefs/xbd_chap09.html"> IEEE
+ Std 1003.1-2001, Portable Operating System Interface (POSIX ), Base Definitions
+ and Headers, Section 9, Regular Expressions.</A></P>
+ <P><A href="http://www.opengroup.org/onlinepubs/000095399/utilities/grep.html"> IEEE
+ Std 1003.1-2001, Portable Operating System Interface (POSIX ), Shells and
+ Utilities, Section 4, Utilities, egrep.</A></P>
+ <P><A href="http://www.opengroup.org/onlinepubs/000095399/utilities/awk.html">IEEE
+ Std 1003.1-2001, Portable Operating System Interface (POSIX ), Shells and
+ Utilities, Section 4, Utilities, awk.</A></P>
+ <HR>
+ <P></P>
+ <p>Revised&nbsp;
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->
+ 21 Aug 2004&nbsp;
+ <!--webbot bot="Timestamp" endspan i-checksum="39359" --></p>
+ <P><I>© Copyright <a href="mailto:jm_at_[hidden]">John Maddock</a>&nbsp;2004</I></P>
+ <I>
+ <P><I>Use, modification and distribution are subject to the Boost Software License,
+ Version 1.0. (See accompanying file LICENSE_1_0.txt
+ or copy at http://www.boost.org/LICENSE_1_0.txt).</I></P>
+ </I>
+ </body>
+</html>

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/doc/syntax_leftmost_longest.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/doc/syntax_leftmost_longest.html 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,65 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+ <head>
+ <title>Boost.Regex: Index</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <link rel="stylesheet" type="text/css" href="../../../boost.css">
+ </head>
+ <body>
+ <P>
+ <TABLE id="Table1" cellSpacing="1" cellPadding="1" width="100%" border="0">
+ <TR>
+ <td valign="top" width="300">
+ <h3>C++ Boost</h3>
+ </td>
+ <TD width="353">
+ <H1 align="center">Boost.Regex</H1>
+ <H2 align="center">The "Leftmost Longest" Rule</H2>
+ </TD>
+ <td width="50">
+ <h3>Boost.Regex Index</h3>
+ </td>
+ </TR>
+ </TABLE>
+ </P>
+ <HR>
+ <p></p>
+ <P>Often there is more than one way of matching a regular expression at a
+ particular location, for POSIX basic and extended regular expressions, the
+ "best" match is determined as follows:</P>
+ <OL>
+ <LI>
+ Find the leftmost match, if there is only one match possible at this location
+ then return it.</LI>
+ <LI>
+ Find the longest of the possible matches, along with any ties.&nbsp; If there
+ is only one such possible match then return it.</LI>
+ <LI>
+ If there are no marked sub-expressions, then all the remaining alternatives are
+ indistinguishable; return the first of these found.</LI>
+ <LI>
+ Find the match which has matched the first sub-expression in the leftmost
+ position, along with any ties.&nbsp; If there is only on such match possible
+ then return it.</LI>
+ <LI>
+ Find the match which has the longest match for the first sub-expression, along
+ with any ties.&nbsp; If there is only one such match then return it.</LI>
+ <LI>
+ Repeat steps 3 and 4 for each additional marked sub-expression.</LI>
+ <LI>
+ If there is still more than one possible match remaining, then they are
+ indistinguishable; return the first one found.</LI></OL>
+ <P>
+ <HR>
+ <P></P>
+ <p>Revised
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->
+ 16 Dec 2004</p>
+ <p><i>© Copyright John Maddock&nbsp;1998-
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%Y" startspan --> 2003<!--webbot bot="Timestamp" endspan i-checksum="39359" --></i></p>
+ <P><I>Use, modification and distribution are subject to the Boost Software License,
+ Version 1.0. (See accompanying file LICENSE_1_0.txt
+ or copy at http://www.boost.org/LICENSE_1_0.txt)</I></P>
+ </body>
+</html>
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/doc/syntax_option_type.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/doc/syntax_option_type.html 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,543 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+ <head>
+ <title>Boost.Regex: syntax_option_type</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <link rel="stylesheet" type="text/css" href="../../../boost.css">
+ </head>
+ <body>
+ <P>
+ <TABLE id="Table1" cellSpacing="1" cellPadding="1" width="100%" border="0">
+ <TR>
+ <td valign="top" width="300">
+ <h3>C++ Boost</h3>
+ </td>
+ <TD width="353">
+ <H1 align="center">Boost.Regex</H1>
+ <H2 align="center">syntax_option_type</H2>
+ </TD>
+ <td width="50">
+ <h3>Boost.Regex Index</h3>
+ </td>
+ </TR>
+ </TABLE>
+ </P>
+ <HR>
+ <H3>Contents</H3>
+ <dl class="index">
+ <dt>Synopsis <dt>Description
+ <dd>
+ <dl class="index">
+ <dt>Options for Perl Regular Expressions <dt><a href="#extended">Options
+ for POSIX Extended Regular Expressions</a> <dt><a href="#basic">Options for POSIX
+ Basic Regular Expressions</a> <dt>Options for String Literals</dt>
+ </dl>
+ </dd>
+ </dl>
+ <H3><A name="synopsis"></A>Synopsis</H3>
+ <P>Type syntax_option type is an implementation specific bitmask type that
+ controls how a regular expression string is to be interpreted.&nbsp; For
+ convenience note that all the constants listed here, are also duplicated within
+ the scope of class template basic_regex.</P>
+ <PRE>namespace std{ namespace regex_constants{
+
+typedef <EM>implementation-specific-bitmask-type</EM> syntax_option_type;<BR>
+// these flags are standardized:
+static const syntax_option_type normal;
+static const syntax_option_type ECMAScript = normal;
+static const syntax_option_type JavaScript = normal;
+static const syntax_option_type JScript = normal;
+static const syntax_option_type perl = normal;<BR>static const syntax_option_type basic;
+static const syntax_option_type sed = basic;
+static const syntax_option_type extended;
+static const syntax_option_type awk;
+static const syntax_option_type grep;
+static const syntax_option_type egrep;
+static const syntax_option_type icase;
+static const syntax_option_type nosubs;
+static const syntax_option_type optimize;
+static const syntax_option_type collate;
+// other boost.regex specific options are listed below<BR>
+} // namespace regex_constants
+} // namespace std</PRE>
+ <H3><A name="description"></A>Description</H3>
+ <P>The type <CODE>syntax_option_type</CODE> is an implementation specific bitmask
+ type (17.3.2.1.2). Setting its elements has the effects listed in the table
+ below, a valid value of type <CODE>syntax_option_type</CODE> will always have
+ exactly one of the elements <CODE>normal, basic, extended, awk, grep, egrep, sed,
+ literal&nbsp;or perl</CODE> set.</P>
+ <P>Note that for convenience all the constants listed here are duplicated within
+ the scope of class template basic_regex, so you can use any of:</P>
+ <PRE>boost::regex_constants::constant_name</PRE>
+ <P>or</P>
+ <PRE>boost::regex::constant_name</PRE>
+ <P>or</P>
+ <PRE>boost::wregex::constant_name</PRE>
+ <P>in an interchangeable manner.</P>
+ <H4><A name="perl"></A>Options for Perl Regular Expressions:</H4>
+ <P>One of the following must always be set for perl regular expressions:</P>
+ <P>
+ <TABLE id="Table4" cellSpacing="1" cellPadding="1" width="100%" border="1">
+ <TR>
+ <TD><STRONG>Element</STRONG></TD>
+ <TD><STRONG>Standardized</STRONG></TD>
+ <TD><STRONG>Effect when set</STRONG></TD>
+ </TR>
+ <TR>
+ <TD>
+ <P>ECMAScript</P>
+ </TD>
+ <TD>Yes</TD>
+ <TD>
+ <P>Specifies that the grammar recognized by the regular expression engine uses its
+ normal semantics: that is the same as that given in the ECMA-262, ECMAScript
+ Language Specification, Chapter 15 part 10, RegExp (Regular Expression) Objects
+ (FWD.1).</P>
+ <P>boost.regex also recognizes all of the perl-compatible (?...) extensions in
+ this mode.</P>
+ </TD>
+ </TR>
+ <TR>
+ <TD>perl</TD>
+ <TD>No</TD>
+ <TD>As above.</TD>
+ </TR>
+ <TR>
+ <TD>normal</TD>
+ <TD>No</TD>
+ <TD>As above.</TD>
+ </TR>
+ <TR>
+ <TD>JavaScript</TD>
+ <TD>No</TD>
+ <TD>As above.</TD>
+ </TR>
+ <TR>
+ <TD>JScript</TD>
+ <TD>No</TD>
+ <TD>As above.</TD>
+ </TR>
+ </TABLE>
+ </P>
+ <P>The following options may also be set when using perl-style regular
+ expressions:</P>
+ <P>
+ <TABLE id="Table5" cellSpacing="1" cellPadding="1" width="100%" border="1">
+ <TR>
+ <TD><STRONG>Element</STRONG></TD>
+ <TD><STRONG>Standardized</STRONG></TD>
+ <TD><STRONG>Effect when set</STRONG></TD>
+ </TR>
+ <TR>
+ <TD>icase</TD>
+ <TD>Yes</TD>
+ <TD>
+ <P>Specifies that matching of regular expressions against a character container
+ sequence shall be performed without regard to case.</P>
+ </TD>
+ </TR>
+ <TR>
+ <TD>nosubs</TD>
+ <TD>Yes</TD>
+ <TD>
+ <P>Specifies that when a regular expression is matched against a character
+ container sequence, then no sub-expression matches are to be stored in the
+ supplied match_results structure.</P>
+ </TD>
+ </TR>
+ <TR>
+ <TD>optimize</TD>
+ <TD>Yes</TD>
+ <TD>
+ <P>Specifies that the regular expression engine should pay more attention to the
+ speed with which regular expressions are matched, and less to the speed with
+ which regular expression objects are constructed. Otherwise it has no
+ detectable effect on the program output.&nbsp; This currently has no effect for
+ Boost.Regex.</P>
+ </TD>
+ </TR>
+ <TR>
+ <TD>collate</TD>
+ <TD>Yes</TD>
+ <TD>
+ <P>Specifies that character ranges of the form "[a-b]" should be locale sensitive.</P>
+ </TD>
+ </TR>
+ <TR>
+ <TD>newline_alt</TD>
+ <TD>No</TD>
+ <TD>Specifies that the \n character has the same effect as the alternation
+ operator |.&nbsp; Allows newline separated lists to be used as a list of
+ alternatives.</TD>
+ </TR>
+ <TR>
+ <TD>no_except</TD>
+ <TD>No</TD>
+ <TD>Prevents basic_regex from throwing an exception when an invalid expression is
+ encountered.</TD>
+ </TR>
+ <TR>
+ <TD>no_mod_m</TD>
+ <TD>No</TD>
+ <TD>Normally Boost.Regex behaves as if the Perl m-modifier is on: so the
+ assertions ^ and $ match after and before embedded newlines respectively,
+ setting this flags is equivalent to prefixing the expression with (?-m).</TD>
+ </TR>
+ <TR>
+ <TD>no_mod_s</TD>
+ <TD>No</TD>
+ <TD>Normally whether Boost.Regex will match "." against a newline character is
+ determined by the match flag match_dot_not_newline.&nbsp;
+ Specifying this flag is equivalent to prefixing the expression with (?-s) and
+ therefore causes "." not to match a newline character regardless of whether
+ match_not_dot_newline is set in the match flags.</TD>
+ </TR>
+ <TR>
+ <TD>mod_s</TD>
+ <TD>No</TD>
+ <TD>Normally whether Boost.Regex will match "." against a newline character is
+ determined by the match flag match_dot_not_newline.&nbsp;
+ Specifying this flag is equivalent to prefixing the expression with (?s) and
+ therefore causes "." to match a newline character regardless of whether
+ match_not_dot_newline is set in the match flags.</TD>
+ </TR>
+ <TR>
+ <TD>mod_x</TD>
+ <TD>No</TD>
+ <TD>Turns on the perl x-modifier: causes unescaped whitespace in the expression to
+ be ignored.</TD>
+ </TR>
+ </TABLE>
+ </P>
+ <H4><A name="extended"></A>Options for POSIX Extended Regular Expressions:</H4>
+ <P>Exactly one of the following must always be set for POSIX extended regular
+ expressions:</P>
+ <P>
+ <TABLE id="Table6" cellSpacing="1" cellPadding="1" width="100%" border="1">
+ <TR>
+ <TD>Element</TD>
+ <TD>Standardized</TD>
+ <TD>Effect when set</TD>
+ </TR>
+ <TR>
+ <TD>extended</TD>
+ <TD>Yes</TD>
+ <TD>
+ <P>Specifies that the grammar recognized by the regular expression engine is the
+ same as that used by POSIX extended regular expressions in IEEE Std
+ 1003.1-2001, Portable Operating System Interface (POSIX ), Base Definitions and
+ Headers, Section 9, Regular Expressions (FWD.1).&nbsp;
+ </P>
+ <P>In addition some perl-style escape sequences are supported (The POSIX standard
+ specifies that only "special" characters may be escaped, all other escape
+ sequences result in undefined behavior).</P>
+ </TD>
+ </TR>
+ <TR>
+ <TD>egrep</TD>
+ <TD>Yes</TD>
+ <TD>
+ <P>Specifies that the grammar recognized by the regular expression engine is the
+ same as that used by POSIX utility grep when given the -E option in IEEE Std
+ 1003.1-2001, Portable Operating System Interface (POSIX ), Shells and
+ Utilities, Section 4, Utilities, grep (FWD.1).</P>
+ <P>That is to say, the same as POSIX extended syntax, but with the newline
+ character acting as an alternation character in addition to "|".</P>
+ </TD>
+ </TR>
+ <TR>
+ <TD>awk</TD>
+ <TD>Yes</TD>
+ <TD>
+ <P>Specifies that the grammar recognized by the regular expression engine is the
+ same as that used by POSIX utility awk in IEEE Std 1003.1-2001, Portable
+ Operating System Interface (POSIX ), Shells and Utilities, Section 4, awk
+ (FWD.1).</P>
+ <P>That is to say: the same as POSIX extended syntax, but with escape sequences in
+ character classes permitted.</P>
+ <P>In addition some perl-style escape sequences are supported (actually the awk
+ syntax only requires \a \b \t \v \f \n and \r to be recognised,&nbsp;all other
+ Perl-style escape sequences invoke undefined behavior according to the POSIX
+ standard, but are in fact recognised by Boost.Regex).</P>
+ </TD>
+ </TR>
+ </TABLE>
+ </P>
+ <P>The following options may also be set when using POSIX extended regular
+ expressions:</P>
+ <P>
+ <TABLE id="Table7" cellSpacing="1" cellPadding="1" width="100%" border="1">
+ <TR>
+ <TD><STRONG>Element</STRONG></TD>
+ <TD><STRONG>Standardized</STRONG></TD>
+ <TD><STRONG>Effect when set</STRONG></TD>
+ </TR>
+ <TR>
+ <TD>icase</TD>
+ <TD>Yes</TD>
+ <TD>
+ <P>Specifies that matching of regular expressions against a character container
+ sequence shall be performed without regard to case.</P>
+ </TD>
+ </TR>
+ <TR>
+ <TD>nosubs</TD>
+ <TD>Yes</TD>
+ <TD>
+ <P>Specifies that when a regular expression is matched against a character
+ container sequence, then no sub-expression matches are to be stored in the
+ supplied match_results structure.</P>
+ </TD>
+ </TR>
+ <TR>
+ <TD>optimize</TD>
+ <TD>Yes</TD>
+ <TD>
+ <P>Specifies that the regular expression engine should pay more attention to the
+ speed with which regular expressions are matched, and less to the speed with
+ which regular expression objects are constructed. Otherwise it has no
+ detectable effect on the program output.&nbsp; This currently has no effect for
+ boost.regex.</P>
+ </TD>
+ </TR>
+ <TR>
+ <TD>collate</TD>
+ <TD>Yes</TD>
+ <TD>
+ <P>Specifies that character ranges of the form "[a-b]" should be locale
+ sensitive.&nbsp; <STRONG>This bit is</STRONG> <STRONG>on by default</STRONG> for
+ POSIX-Extended regular expressions, but can be unset to force ranges to be
+ compared by code point only.</P>
+ </TD>
+ </TR>
+ <TR>
+ <TD>newline_alt</TD>
+ <TD>No</TD>
+ <TD>Specifies that the \n character has the same effect as the alternation
+ operator |.&nbsp; Allows newline separated lists to be used as a list of
+ alternatives.</TD>
+ </TR>
+ <TR>
+ <TD>no_escape_in_lists</TD>
+ <TD>No</TD>
+ <TD>When set this makes the escape character ordinary inside lists, so that [\b]
+ would match either '\' or 'b'. <STRONG>This bit is one by default</STRONG> for
+ POSIX-Extended regular expressions, but can be unset to force escapes to be
+ recognised inside lists.</TD>
+ </TR>
+ <TR>
+ <TD>no_bk_refs</TD>
+ <TD>No</TD>
+ <TD>When set then backreferences are disabled.&nbsp; <STRONG>This bit is</STRONG> <STRONG>
+ on by default</STRONG> for POSIX-Extended regular expressions, but can be
+ unset to support for backreferences on.</TD>
+ </TR>
+ <TR>
+ <TD>no_except</TD>
+ &nbsp;<TD>
+ <TD></TD>
+ <TD>No</TD>
+ <TD>Prevents basic_regex from throwing an exception when an invalid expression is
+ encountered.</TD>
+ </TR>
+ </TABLE>
+ </P>
+ <H4><A name="basic"></A>Options for POSIX Basic Regular Expressions:</H4>
+ <P>Exactly one of the following must always be set for POSIX basic regular
+ expressions:</P>
+ <P>
+ <TABLE id="Table8" cellSpacing="1" cellPadding="1" width="100%" border="1">
+ <TR>
+ <TD>Element</TD>
+ <TD>Standardized</TD>
+ <TD>Effect When Set</TD>
+ </TR>
+ <TR>
+ <TD>basic</TD>
+ <TD>Yes</TD>
+ <TD>
+ <P>Specifies that the grammar recognized by the regular expression engine is the
+ same as that used by <A href="syntax_basic.html#Basic">POSIX basic regular
+ expressions</A> in IEEE Std 1003.1-2001, Portable Operating System Interface
+ (POSIX ), Base Definitions and Headers, Section 9, Regular Expressions (FWD.1).
+ </P>
+ </TD>
+ </TR>
+ <TR>
+ <TD>sed</TD>
+ <TD>No</TD>
+ <TD>As Above.</TD>
+ </TR>
+ <TR>
+ <TD>grep</TD>
+ <TD>Yes</TD>
+ <TD>
+ <P>Specifies that the grammar recognized by the regular expression engine is the
+ same as that used by POSIX utility grep in
+ IEEE Std 1003.1-2001, Portable Operating System Interface (POSIX ), Shells and
+ Utilities, Section 4, Utilities, grep (FWD.1).</P>
+ <P>That is to say, the same as POSIX basic syntax, but with the newline character
+ acting as an alternation character; the expression is treated as a newline
+ separated list of alternatives.</P>
+ </TD>
+ </TR>
+ <TR>
+ <TD>emacs</TD>
+ <TD>No</TD>
+ <TD>Specifies that the grammar recognised is the superset of the POSIX-Basic
+ syntax used by the emacs program.</TD>
+ </TR>
+ </TABLE>
+ </P>
+ <P>The following options may also be set when using POSIX basic regular
+ expressions:</P>
+ <P>
+ <TABLE id="Table9" cellSpacing="1" cellPadding="1" width="100%" border="1">
+ <TR>
+ <TD><STRONG>Element</STRONG></TD>
+ <TD><STRONG>Standardized</STRONG></TD>
+ <TD><STRONG>Effect when set</STRONG></TD>
+ </TR>
+ <TR>
+ <TD>icase</TD>
+ <TD>Yes</TD>
+ <TD>
+ <P>Specifies that matching of regular expressions against a character container
+ sequence shall be performed without regard to case.</P>
+ </TD>
+ </TR>
+ <TR>
+ <TD>nosubs</TD>
+ <TD>Yes</TD>
+ <TD>
+ <P>Specifies that when a regular expression is matched against a character
+ container sequence, then no sub-expression matches are to be stored in the
+ supplied match_results structure.</P>
+ </TD>
+ </TR>
+ <TR>
+ <TD>optimize</TD>
+ <TD>Yes</TD>
+ <TD>
+ <P>Specifies that the regular expression engine should pay more attention to the
+ speed with which regular expressions are matched, and less to the speed with
+ which regular expression objects are constructed. Otherwise it has no
+ detectable effect on the program output.&nbsp; This currently has no effect for
+ boost.regex.</P>
+ </TD>
+ </TR>
+ <TR>
+ <TD>collate</TD>
+ <TD>Yes</TD>
+ <TD>
+ <P>Specifies that character ranges of the form "[a-b]" should be locale
+ sensitive.&nbsp; <STRONG>This bit is</STRONG> <STRONG>on by default</STRONG> for
+ POSIX-Basic regular expressions, but can be unset to force ranges to be
+ compared by code point only.</P>
+ </TD>
+ </TR>
+ <TR>
+ <TD>newline_alt</TD>
+ <TD>No</TD>
+ <TD>Specifies that the \n character has the same effect as the alternation
+ operator |.&nbsp; Allows newline separated lists to be used as a list of
+ alternatives.&nbsp; This bit is already set, if you use the <EM>grep</EM> option.</TD>
+ </TR>
+ <TR>
+ <TD>no_char_classes</TD>
+ <TD>No</TD>
+ <TD>When set then character classes such as [[:alnum:]] are not allowed.</TD>
+ </TR>
+ <TR>
+ <TD>no_escape_in_lists</TD>
+ <TD>No</TD>
+ <TD>When set this makes the escape character ordinary inside lists, so that [\b]
+ would match either '\' or 'b'. <STRONG>This bit is one by default</STRONG> for
+ POSIX-basic regular expressions, but can be unset to force escapes to be
+ recognised inside lists.</TD>
+ </TR>
+ <TR>
+ <TD>no_intervals</TD>
+ <TD>No</TD>
+ <TD>When set then bounded repeats such as a{2,3} are not permitted.</TD>
+ </TR>
+ <TR>
+ <TD>bk_plus_qm</TD>
+ <TD>No</TD>
+ <TD>When set then \? acts as a zero-or-one repeat operator, and \+ acts as a
+ one-or-more repeat operator.</TD>
+ </TR>
+ <TR>
+ <TD>bk_vbar</TD>
+ <TD>No</TD>
+ <TD>When set then \| acts as the alternation operator.</TD>
+ </TR>
+ <TR>
+ <TD>no_except</TD>
+ <TD>
+ <TD></TD>
+ <TD>No</TD>
+ <TD>Prevents basic_regex from throwing an exception when an invalid expression is
+ encountered.</TD>
+ </TR>
+ </TABLE>
+ </P>
+ <H4><A name="literals"></A>Options for Literal Strings:</H4>
+ <P>The following must always be set to interpret the expression as a string
+ literal:</P>
+ <P>
+ <TABLE id="Table10" cellSpacing="1" cellPadding="1" width="100%" border="1">
+ <TR>
+ <TD>Element</TD>
+ <TD>Standardized</TD>
+ <TD>Effect when set</TD>
+ </TR>
+ <TR>
+ <TD>literal</TD>
+ <TD>Yes</TD>
+ <TD>Treat the string as a literal (no special characters).</TD>
+ </TR>
+ </TABLE>
+ </P>
+ <P>The following options may also be combined with the <EM>literal</EM> flag:</P>
+ <P>
+ <TABLE id="Table11" cellSpacing="1" cellPadding="1" width="100%" border="1">
+ <TR>
+ <TD>Element</TD>
+ <TD>Standardized</TD>
+ <TD>Effect when set</TD>
+ </TR>
+ <TR>
+ <TD>icase</TD>
+ <TD>Yes</TD>
+ <TD>
+ <P>Specifies that matching of regular expressions against a character container
+ sequence shall be performed without regard to case.</P>
+ </TD>
+ </TR>
+ <TR>
+ <TD>optimize</TD>
+ <TD>Yes</TD>
+ <TD>
+ <P>Specifies that the regular expression engine should pay more attention to the
+ speed with which regular expressions are matched, and less to the speed with
+ which regular expression objects are constructed. Otherwise it has no
+ detectable effect on the program output.&nbsp; This currently has no effect for
+ boost.regex.</P>
+ </TD>
+ </TR>
+ </TABLE>
+ </P>
+ <P>&nbsp;</P>
+ <HR>
+ <p>Revised&nbsp;
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->
+ 23 June 2004&nbsp;
+ <!--webbot bot="Timestamp" endspan i-checksum="39359" --></p>
+ <p><i>© Copyright John Maddock&nbsp;1998-
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%Y" startspan --> 2004<!--webbot bot="Timestamp" endspan i-checksum="39359" --></i></p>
+ <P><I>Use, modification and distribution are subject to the Boost Software License,
+ Version 1.0. (See accompanying file LICENSE_1_0.txt
+ or copy at http://www.boost.org/LICENSE_1_0.txt)</I></P>
+ </body>
+</html>

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/doc/syntax_perl.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/doc/syntax_perl.html 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,626 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+ <head>
+ <title>Boost.Regex: Perl Regular Expression Syntax</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <LINK href="../../../boost.css" type="text/css" rel="stylesheet"></head>
+ <body>
+ <P>
+ <TABLE id="Table1" cellSpacing="1" cellPadding="1" width="100%" border="0">
+ <TR>
+ <td vAlign="top" width="300">
+ <h3>C++ Boost</h3>
+ </td>
+ <TD width="353">
+ <H1 align="center">Boost.Regex</H1>
+ <H2 align="center">
+ Perl&nbsp;Regular Expression Syntax</H2>
+ </TD>
+ <td width="50">
+ <h3>Boost.Regex Index</h3>
+ </td>
+ </TR>
+ </TABLE>
+ </P>
+ <HR>
+ <H3>Contents</H3>
+ <dl class="index">
+ <dt>Synopsis <dt>Perl Syntax <dt><A href="#what">
+ What Gets Matched</A> <dt>Variations
+ <dd>
+ <dt>Options <dt>Modifiers <dt>References</dt>
+ </dl>
+ <H3><A name="synopsis"></A>Synopsis</H3>
+ <P>The Perl regular expression syntax is based on that used by the programming
+ language <EM>Perl</EM> .&nbsp; Perl regular expressions are the default
+ behavior in Boost.Regex or you can&nbsp;pass the flag <EM>perl</EM> to the
+ regex constructor, for example:</P>
+ <PRE>// e1 is a case sensitive Perl regular expression:
+// since Perl is the default option there's no need to explicitly specify the syntax used here:
+boost::regex e1(my_expression);
+// e2 a case insensitive Perl regular expression:
+boost::regex e2(my_expression, boost::regex::perl|boost::regex::icase);</PRE>
+ <H3>Perl&nbsp;Regular Expression Syntax<A name="Perl"></A></H3>
+ <P>In&nbsp;Perl regular expressions, all characters match themselves except for
+ the following special characters:</P>
+ <PRE>.[{()\*+?|^$</PRE>
+ <H4>Wildcard:</H4>
+ <P>The single character '.' when used outside of a character set will match any
+ single character except:</P>
+ <P>The NULL character when the flag <EM>match_no_dot_null</EM> is passed to the
+ matching algorithms.</P>
+ <P>The newline character when the flag <EM>match_not_dot_newline</EM> is passed to
+ the matching algorithms.</P>
+ <H4>Anchors:</H4>
+ <P>A '^' character shall match the start of a line.</P>
+ <P>A '$' character shall match the end of a line.</P>
+ <H4>Marked sub-expressions:</H4>
+ <P>A section beginning ( and ending ) acts as a marked sub-expression.&nbsp;
+ Whatever matched the sub-expression is split out in a separate field by the
+ matching algorithms.&nbsp; Marked sub-expressions can also repeated, or
+ referred to by a back-reference.</P>
+ <H4>Non-marking grouping:</H4>
+ <P>A marked sub-expression is useful to lexically group part of a regular
+ expression, but has the side-effect of spitting out an extra field in the
+ result.&nbsp; As an alternative&nbsp;you can lexically group part of a regular
+ expression, without generating a marked sub-expression by using (?: and ) , for
+ example (?:ab)+ will repeat "ab" without splitting out any separate
+ sub-expressions.</P>
+ <H4>Repeats:</H4>
+ <P>Any atom (a single character, a marked sub-expression, or a character class)
+ can be repeated with the *, +, ?, and {}&nbsp;operators.</P>
+ <P>The * operator will match the preceding atom zero or more times, for example
+ the expression a*b will match any of the following:</P>
+ <PRE>b
+ab
+aaaaaaaab</PRE>
+ <P>The + operator will match the preceding atom one or more times, for example the
+ expression a+b will match any of the following:</P>
+ <PRE>ab
+aaaaaaaab</PRE>
+ <P>But will not match:</P>
+ <PRE>b</PRE>
+ <P>The ? operator will match the preceding atom zero or&nbsp;one times, for
+ example the expression ca?b will match any of the following:</P>
+ <PRE>cb
+cab</PRE>
+ <P>But will not match:</P>
+ <PRE>caab</PRE>
+ <P>An atom can also be repeated with a bounded repeat:</P>
+ <P>a{n}&nbsp; Matches 'a' repeated exactly <EM>n</EM> times.</P>
+ <P>a{n,}&nbsp; Matches 'a' repeated <EM>n</EM> or more times.</P>
+ <P>a{n, m}&nbsp; Matches 'a' repeated between <EM>n</EM> and <EM>m</EM> times
+ inclusive.</P>
+ <P>For example:</P>
+ <PRE>^a{2,3}$</PRE>
+ <P>Will match either of:</P>
+ <PRE>aa
+aaa</PRE>
+ <P>But neither of:</P>
+ <PRE>a
+aaaa</PRE>
+ <P>It is an error to use a repeat operator, if the preceding construct can not be
+ repeated, for example:</P>
+ <PRE>a(*)</PRE>
+ <P>Will raise an error, as there is nothing for the * operator to be applied to.</P>
+ <H4>Non greedy repeats</H4>
+ <P>The normal repeat operators are "greedy", that is to say they will consume as
+ much input as possible.&nbsp; There are non-greedy versions available that will
+ consume as little input as possible while still producing a match.</P>
+ <P>*? Matches the previous atom zero or more times, while consuming as little
+ input as possible.</P>
+ <P>+? Matches the previous atom one or more times, while consuming as little input
+ as possible.</P>
+ <P>?? Matches the previous atom zero or one times, while consuming as little input
+ as possible.</P>
+ <P>{n,}? Matches the previous atom <EM>n</EM> or more times, while&nbsp;consuming
+ as little input as possible.</P>
+ <P>{n,m}? Matches the previous atom between <EM>n</EM> and <EM>m</EM> times,
+ while&nbsp;consuming as little input as possible.</P>
+ <H4>Back references:</H4>
+ <P>An escape character followed by a digit <EM>n</EM>, where <EM>n </EM>is in the
+ range 1-9, matches the same string that was matched by sub-expression <EM>n</EM>.&nbsp;
+ For example the expression:</P>
+ <PRE>^(a*).*\1$</PRE>
+ <P>Will match the string:</P>
+ <PRE>aaabbaaa</PRE>
+ <P>But not the string:</P>
+ <PRE>aaabba</PRE>
+ <H4>Alternation</H4>
+ <P>The | operator will match either of its arguments, so for example: abc|def will
+ match either "abc" or "def".&nbsp;
+ </P>
+ <P>Parenthesis can be used to group alternations, for example: ab(d|ef) will match
+ either of "abd" or "abef".</P>
+ <P>Empty&nbsp;alternatives are not allowed (these are almost always a mistake),
+ but if you really want an empty alternative use (?:) as a placeholder, for
+ example:</P>
+ <BLOCKQUOTE dir="ltr" style="MARGIN-RIGHT: 0px">
+ <P>"|abc" is not a valid expression, but<BR>
+ "(?:)|abc" is and is equivalent, also the expression:<BR>
+ "(?:abc)??" has exactly the same effect.</P>
+ </BLOCKQUOTE>
+ <H4>Character sets:</H4>
+ <P>A character set is a bracket-expression starting with [ and ending with ], it
+ defines a set of characters, and matches any single character that is a member
+ of that set.</P>
+ <P>A bracket expression may contain any combination of the following:</P>
+ <BLOCKQUOTE dir="ltr" style="MARGIN-RIGHT: 0px">
+ <H5>Single characters:</H5>
+ <P>For example [abc], will match any of the characters 'a', 'b', or 'c'.</P>
+ <H5>Character ranges:</H5>
+ <P>For example [a-c] will match any single character in the range 'a' to
+ 'c'.&nbsp; By default, for POSIX-Perl regular expressions, a character <EM>x</EM>
+ is within the range <EM>y</EM> to <EM>z</EM>, if it collates within that
+ range;&nbsp;this results in locale specific behavior.&nbsp; This behavior can
+ be turned off by unsetting the <EM>collate</EM>
+ option flag - in which case whether a character appears within a range is
+ determined by comparing the code points of the characters only</P>
+ <H5>Negation:</H5>
+ <P>If the bracket-expression begins with the ^ character, then it matches the
+ complement of the characters it contains, for example [^a-c] matches any
+ character that is not in the range a-c.</P>
+ <H5>Character classes:</H5>
+ <P>An expression of the form [[:name:]] matches the named character class "name",
+ for example [[:lower:]] matches any lower case character.&nbsp; See <A href="character_class_names.html">
+ character class names</A>.</P>
+ <H5>Collating Elements:</H5>
+ <P>An expression of the form [[.col.] matches the collating element <EM>col</EM>.&nbsp;
+ A collating element is any single character, or any sequence of characters that
+ collates as a single unit.&nbsp; Collating elements may also be used as the end
+ point of a range, for example: [[.ae.]-c] matches the character sequence "ae",
+ plus any single character in the range "ae"-c, assuming that "ae" is treated as
+ a single collating element in the current locale.</P>
+ <P>As an extension, a collating element may also be specified via it's <A href="collating_names.html">
+ symbolic name</A>, for example:</P>
+ <P>[[.NUL.]]</P>
+ <P>matches a NUL character.</P>
+ <H5>Equivalence classes:</H5>
+ <P>
+ An expression oftheform[[=col=]], matches any character or collating element
+ whose primary sort key is the same as that for collating element <EM>col</EM>,
+ as with colating elements the name <EM>col</EM> may be a <A href="collating_names.html">
+ symbolic name</A>.&nbsp; A primary sort key is one that ignores case,
+ accentation, or locale-specific tailorings; so for example [[=a=]] matches any
+ of the characters: a, à, á, â, ã, ä, å, A, À, Á, Â, Ã, Ä and Å.&nbsp;
+ Unfortunately implementation of this is reliant on the platform's collation and
+ localisation support; this feature can not be relied upon to work portably
+ across all platforms, or even all locales on one platform.</P>
+ <H5>Escapes:</H5>
+ <P>All the escape sequences that match a single character, or a single character
+ class are permitted within a character class definition, <EM>except</EM> the
+ negated character classes (\D \W etc).</P>
+ </BLOCKQUOTE>
+ <H5>Combinations:</H5>
+ <P>All of the above can be combined in one character set declaration, for example:
+ [[:digit:]a-c[.NUL.]].</P>
+ <H4>Escapes</H4>
+ <P>Any special character preceded by an escape shall match itself.
+ </P>
+ <P>The following escape sequences are also supported:</P>
+ <BLOCKQUOTE dir="ltr" style="MARGIN-RIGHT: 0px">
+ <H5>Escapes matching a specific character</H5>
+ <P>The following escape sequences are all synonyms for single characters:</P>
+ <P>
+ <TABLE id="Table7" cellSpacing="1" cellPadding="1" width="100%" border="1">
+ <TR>
+ <TD><STRONG>Escape</STRONG></TD>
+ <TD><STRONG>Character</STRONG></TD>
+ </TR>
+ <TR>
+ <TD>\a</TD>
+ <TD>'\a'</TD>
+ </TR>
+ <TR>
+ <TD>\e</TD>
+ <TD>0x1B</TD>
+ </TR>
+ <TR>
+ <TD>\f</TD>
+ <TD>\f</TD>
+ </TR>
+ <TR>
+ <TD>\n</TD>
+ <TD>\n</TD>
+ </TR>
+ <TR>
+ <TD>\r</TD>
+ <TD>\r</TD>
+ </TR>
+ <TR>
+ <TD>\t</TD>
+ <TD>\t</TD>
+ </TR>
+ <TR>
+ <TD>\v</TD>
+ <TD>\v</TD>
+ </TR>
+ <TR>
+ <TD>\b</TD>
+ <TD>\b (but only inside a character class declaration).</TD>
+ </TR>
+ <TR>
+ <TD>\cX</TD>
+ <TD>An ASCII escape sequence - the character whose code point is X % 32</TD>
+ </TR>
+ <TR>
+ <TD>\xdd</TD>
+ <TD>A hexadecimal escape sequence - matches the single character whose code point
+ is 0xdd.</TD>
+ </TR>
+ <TR>
+ <TD>\x{dddd}</TD>
+ <TD>A hexadecimal escape sequence - matches the single character whose code point
+ is 0xdddd.</TD>
+ </TR>
+ <TR>
+ <TD>\0ddd</TD>
+ <TD>An octal escape sequence - matches the single character whose code point is
+ 0ddd.</TD>
+ </TR>
+ <TR>
+ <TD>\N{name}</TD>
+ <TD>Matches the single character which has the <A href="collating_names.html">symbolic
+ name</A> <EM>name.&nbsp; </EM>For example \N{newline} matches the single
+ character \n.</TD>
+ </TR>
+ </TABLE>
+ </P>
+ <H5>"Single character" character&nbsp;classes:</H5>
+ <P>Any escaped character <EM>x</EM>, if <EM>x</EM> is the name of a character
+ class shall match any character that is a member of that class, and any escaped
+ character <EM>X</EM>, if <EM>x</EM> is the name of a character class, shall
+ match any character not in that class.</P>
+ <P>The following are supported by default:</P>
+ <P>
+ <TABLE id="Table3" cellSpacing="1" cellPadding="1" width="300" border="1">
+ <TR>
+ <TD><STRONG>Escape sequence</STRONG></TD>
+ <TD><STRONG>Equivalent to</STRONG></TD>
+ </TR>
+ <TR>
+ <TD>\d</TD>
+ <TD>[[:digit:]]</TD>
+ </TR>
+ <TR>
+ <TD>\l</TD>
+ <TD>[[:lower:]]</TD>
+ </TR>
+ <TR>
+ <TD>\s</TD>
+ <TD>[[:space:]]</TD>
+ </TR>
+ <TR>
+ <TD>\u</TD>
+ <TD>[[:upper:]]</TD>
+ </TR>
+ <TR>
+ <TD>\w</TD>
+ <TD>[[:word:]]</TD>
+ </TR>
+ <TR>
+ <TD>\D</TD>
+ <TD>[^[:digit:]]</TD>
+ </TR>
+ <TR>
+ <TD>\L</TD>
+ <TD>[^[:lower:]]</TD>
+ </TR>
+ <TR>
+ <TD>\S</TD>
+ <TD>[^[:space:]]</TD>
+ </TR>
+ <TR>
+ <TD>\U</TD>
+ <TD>[^[:upper:]]</TD>
+ </TR>
+ <TR>
+ <TD>\W</TD>
+ <TD>[^[:word:]]</TD>
+ </TR>
+ </TABLE>
+ </P>
+ <H5>Character Properties</H5>
+ <P>The character property names in the following table are all equivalent to the <A href="character_class_names.html">
+ names used in character classes</A>.</P>
+ <P>
+ <TABLE id="Table9" cellSpacing="1" cellPadding="1" width="100%" border="0">
+ <TR>
+ <TD><STRONG>Form</STRONG></TD>
+ <TD><STRONG>Description</STRONG></TD>
+ <TD><STRONG>Equivalent character set form</STRONG></TD>
+ </TR>
+ <TR>
+ <TD>\pX</TD>
+ <TD>Matches any character that has the property X.</TD>
+ <TD>[[:X:]]</TD>
+ </TR>
+ <TR>
+ <TD>\p{Name}</TD>
+ <TD>Matches any character that has the property <EM>Name</EM>.</TD>
+ <TD>[[:Name:]]</TD>
+ </TR>
+ <TR>
+ <TD>\PX</TD>
+ <TD>Matches any character that does not have the property X.</TD>
+ <TD>[^[:X:]]</TD>
+ </TR>
+ <TR>
+ <TD>\P{Name}</TD>
+ <TD>Matches any character that does not have the property <EM>Name</EM>.</TD>
+ <TD>[^[:Name:]]</TD>
+ </TR>
+ </TABLE>
+ </P>
+ <H5>Word Boundaries</H5>
+ <P>The following escape sequences match the boundaries of words:</P>
+ <P>
+ <TABLE id="Table4" cellSpacing="1" cellPadding="1" width="100%" border="1">
+ <TR>
+ <TD>\&lt;</TD>
+ <TD>Matches the start of a word.</TD>
+ </TR>
+ <TR>
+ <TD>\&gt;</TD>
+ <TD>Matches the end of a word.</TD>
+ </TR>
+ <TR>
+ <TD>\b</TD>
+ <TD>Matches a word boundary (the start or end of a word).</TD>
+ </TR>
+ <TR>
+ <TD>\B</TD>
+ <TD>Matches only when not at a word boundary.</TD>
+ </TR>
+ </TABLE>
+ </P>
+ <H5>Buffer boundaries</H5>
+ <P>The following match only at buffer boundaries: a "buffer" in this context is
+ the whole of the input text&nbsp;that is being matched against (note that ^ and
+ $ may match embedded newlines within the text).</P>
+ <P>
+ <TABLE id="Table5" cellSpacing="1" cellPadding="1" width="100%" border="1">
+ <TR>
+ <TD>\`</TD>
+ <TD>Matches at the start of a buffer only.</TD>
+ </TR>
+ <TR>
+ <TD>\'</TD>
+ <TD>Matches at the end of a buffer only.</TD>
+ </TR>
+ <TR>
+ <TD>\A</TD>
+ <TD>Matches at the start of a buffer only (the same as \`).</TD>
+ </TR>
+ <TR>
+ <TD>\z</TD>
+ <TD>Matches at the end of a buffer only (the same as \').</TD>
+ </TR>
+ <TR>
+ <TD>\Z</TD>
+ <TD>Matches an optional sequence of newlines at the end of a buffer: equivalent to
+ the regular expression \n*\z</TD>
+ </TR>
+ </TABLE>
+ </P>
+ <H5>Continuation Escape</H5>
+ <P>The sequence \G matches only at the end of the last match found, or at the
+ start of the text being matched if no previous match was found.&nbsp; This
+ escape useful if you're iterating over the matches contained within a text, and
+ you want each subsequence match to start where the last one ended.</P>
+ <H5>Quoting escape</H5>
+ <P>The escape sequence \Q begins a "quoted sequence": all the subsequent
+ characters are treated as literals, until either the end of the regular
+ expression or \E is found.&nbsp; For example the expression: \Q\*+\Ea+ would
+ match either of:</P>
+ <PRE>\*+a<BR>\*+aaa</PRE>
+ <H5>Unicode escapes</H5>
+ <P>
+ <TABLE id="Table6" cellSpacing="1" cellPadding="1" width="100%" border="1">
+ <TR>
+ <TD>\C</TD>
+ <TD>Matches a single code point: in Boost regex this has exactly the same effect
+ as a "." operator.</TD>
+ </TR>
+ <TR>
+ <TD>\X</TD>
+ <TD>Matches a combining character sequence: that is any non-combining character
+ followed by a sequence of zero or more combining characters.</TD>
+ </TR>
+ </TABLE>
+ </P>
+ <H5>Any other escape</H5>
+ <P>Any other escape sequence matches the character that is escaped, for example \@
+ matches a literal <A href="mailto:'@'">'@'</A>.</P>
+ </BLOCKQUOTE>
+ <H4 dir="ltr">Perl Extended Patterns</H4>
+ <P dir="ltr">Perl-specific extensions to the regular expression syntax all start
+ with (?.</P>
+ <BLOCKQUOTE dir="ltr" style="MARGIN-RIGHT: 0px">
+ <H5 dir="ltr">Comments</H5>
+ <P dir="ltr">(?# ... ) is treated as a comment, it's contents are ignored.</P>
+ <H5 dir="ltr">Modifiers</H5>
+ <P dir="ltr">(?imsx-imsx ... ) alters which of the perl modifiers are in effect
+ within the pattern, changes take effect from the point that the block is first
+ seen and extend to any enclosing ).&nbsp; Letters before a '-' turn that perl
+ modifier on, letters afterward, turn it off.</P>
+ <P dir="ltr">(?imsx-imsx:pattern) applies the specified modifiers to <EM>pattern</EM>
+ only.</P>
+ <H5 dir="ltr">Non-marking grouping</H5>
+ <P dir="ltr">(?:pattern) lexically groups <EM>pattern</EM>, without generating an
+ additional sub-expression.</P>
+ <H5 dir="ltr">Lookahead</H5>
+ <P dir="ltr">(?=pattern) consumes zero characters, only if <EM>pattern</EM> matches.</P>
+ <P dir="ltr">(?!pattern) consumes zero characters, only if <EM>pattern</EM> does
+ not match.</P>
+ <P dir="ltr">Lookahead is typically used to create the logical AND of two regular
+ expressions, for example if a password must contain a lower case letter, an
+ upper case letter, a punctuation symbol, and be at least 6 characters long,
+ then the expression:</P>
+ <PRE dir="ltr">(?=.*[[:lower:]])(?=.*[[:upper:]])(?=.*[[:punct:]]).{6,}</PRE>
+ <P dir="ltr">could be used to validate the password.</P>
+ <H5 dir="ltr">Lookbehind</H5>
+ <P dir="ltr">(?&lt;=pattern) consumes zero characters, only if <EM>pattern</EM> could
+ be matched against the characters preceding the current position (<EM>pattern</EM>
+ must be of fixed length).</P>
+ <P dir="ltr">(?&lt;!pattern) consumes zero characters, only if <EM>pattern</EM> could
+ not be matched against the characters preceding the current position (<EM>pattern</EM>
+ must be of fixed length).</P>
+ <H5 dir="ltr">Independent sub-expressions</H5>
+ <P dir="ltr">(?&gt;pattern) <EM>pattern</EM> is matched independently of the
+ surrounding patterns, the expression will never backtrack into <EM>pattern</EM>.&nbsp;
+ Independent sub-expressions are typically used to improve performance; only the
+ best possible match for <EM>pattern</EM> will be considered, if this doesn't
+ allow the expression as a whole to match then no match is found at all.</P>
+ <H5 dir="ltr">Conditional Expressions</H5>
+ <P dir="ltr">(?(condition)yes-pattern|no-pattern) attempts to match <EM>yes-pattern</EM>
+ if the <EM>condition </EM>is true, otherwise attempts to match <EM>no-pattern</EM>.</P>
+ <P dir="ltr">(?(condition)yes-pattern) attempts to match <EM>yes-pattern</EM> if
+ the <EM>condition </EM>is true, otherwise fails.</P>
+ <P dir="ltr"><EM>Condition</EM> may be either a forward lookahead assert, or the
+ index of a marked sub-expression (the condition becomes true if the
+ sub-expression has been matched).</P>
+ </BLOCKQUOTE><A name="what">
+ <H4>Operator precedence</H4>
+ <P>&nbsp;The order of precedence for of operators is as shown in the following
+ table:</P>
+ <P>
+ <TABLE id="Table2" cellSpacing="1" cellPadding="1" width="100%" border="1">
+ <TR>
+ <TD>Collation-related bracket symbols</TD>
+ <TD>[==] [::] [..]</TD>
+ </TR>
+ <TR>
+ <TD>Escaped characters
+ </TD>
+ <TD>\</TD>
+ </TR>
+ <TR>
+ <TD>Character set&nbsp;(bracket expression)
+ </TD>
+ <TD>[]</TD>
+ </TR>
+ <TR>
+ <TD>Grouping</TD>
+ <TD>()</TD>
+ </TR>
+ <TR>
+ <TD>Single-character-ERE duplication
+ </TD>
+ <TD>* + ? {m,n}</TD>
+ </TR>
+ <TR>
+ <TD>Concatenation</TD>
+ <TD></TD>
+ </TR>
+ <TR>
+ <TD>Anchoring</TD>
+ <TD>^$</TD>
+ </TR>
+ <TR>
+ <TD>Alternation</TD>
+ <TD>|</TD>
+ </TR>
+ </TABLE>
+ </P>
+ </A>
+ <H3>What gets matched</H3>
+ <P>If you view the regular expression as a directed (possibly cyclic) graph, then
+ the best match found is the first match found by a depth-first-search performed
+ on that graph, while matching the input text.</P>
+ <P>Alternatively:</P>
+ <P>the best match found is the leftmost match, with individual elements matched as
+ follows;</P>
+ <P>
+ <TABLE id="Table8" cellSpacing="1" cellPadding="1" width="100%" border="0">
+ <TR>
+ <TD><STRONG>Construct</STRONG></TD>
+ <TD><STRONG>What gets matches</STRONG></TD>
+ </TR>
+ <TR>
+ <TD>AtomA AtomB</TD>
+ <TD>Locates the best match for AtomA that has a following match for&nbsp;AtomB.</TD>
+ </TR>
+ <TR>
+ <TD>Expression1 | Expression2</TD>
+ <TD>If Expresion1 can be matched then returns that match, otherwise attempts to
+ match Expression2.</TD>
+ </TR>
+ <TR>
+ <TD>S{N}</TD>
+ <TD>Matches S repeated exactly N times.</TD>
+ </TR>
+ <TR>
+ <TD>S{N,M}</TD>
+ <TD>Matches S repeated between N and M times, and as many times as possible.</TD>
+ </TR>
+ <TR>
+ <TD>S{N,M}?</TD>
+ <TD>Matches S repeated between N and M times, and as few times as possible.</TD>
+ </TR>
+ <TR>
+ <TD><!--StartFragment --> S?, S*, S+</TD>
+ <TD><!--StartFragment --> The same as <CODE>S{0,1}</CODE>, <CODE>S{0,UINT_MAX}</CODE>,
+ <CODE>S{1,UINT_MAX}</CODE> respectively.
+ </TD>
+ </TR>
+ <TR>
+ <TD>S??, S*?, S+?</TD>
+ <TD>The same as <CODE>S{0,1}?</CODE>, <CODE>S{0,UINT_MAX}?</CODE>, <CODE>S{1,UINT_MAX}?</CODE>
+ respectively.
+ </TD>
+ </TR>
+ <TR>
+ <TD><!--StartFragment --> (?&gt;S)
+ </TD>
+ <TD>Matches the best match for S, and only that.</TD>
+ </TR>
+ <TR>
+ <TD>
+ (?=S), (?&lt;=S)
+ </TD>
+ <TD>Matches only the best match for S (this is only visible if there are capturing
+ parenthesis within S).</TD>
+ </TR>
+ <TR>
+ <TD><!--StartFragment --> (?!S), (?&lt;!S)</TD>
+ <TD>Considers only whether a match for S exists or not.</TD>
+ </TR>
+ <TR>
+ <TD><!--StartFragment --> (?(condition)yes-pattern | no-pattern)</TD>
+ <TD>If condition is <EM>true</EM>, then only <EM>yes-pattern</EM> is considered,
+ otherwise only <EM>no-pattern</EM> is considered.</TD>
+ </TR>
+ </TABLE>
+ </P>
+ <H3><A name="variations"></A>Variations</H3>
+ <P>The options <A href="syntax_option_type.html#perl"><EM>normal, ECMAScript, JavaScript</EM>
+ and <EM>JScript</EM></A> are all synonyms for <EM>Perl</EM>.</P>
+ <H3><A name="options"></A>Options</H3>
+ <P>There are a variety of flags that
+ may be combined with the <EM>Perl</EM> option when constructing the regular
+ expression, in particular note that the newline_alt
+ option alters the syntax, while the <A href="syntax_option_type.html#Perl">collate,
+ nosubs&nbsp;and icase</A> options modify how the case and locale sensitivity
+ are to be applied.</P>
+ <H3><A name="mods"></A>Modifiers</H3>
+ <P>The perl <EM>smix</EM> modifiers can either be applied using a (?smix-smix)
+ prefix to the regular expression, or with one of the regex-compile time flags <EM><A href="syntax_option_type.html#Perl">
+ no_mod_m, mod_x, mod_s, and no_mod_s</A></EM>.
+ </P>
+ <H3><A name="refs">References</H3>
+ <P> Perl 5.8.</P>
+ <HR>
+ <P></P>
+ <p>Revised&nbsp;
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->
+ 21 Aug 2004&nbsp;
+ <!--webbot bot="Timestamp" endspan i-checksum="39359" --></p>
+ <P><I>© Copyright <a href="mailto:jm_at_[hidden]">John Maddock</a>&nbsp;2004</I></P>
+ <I>
+ <P><I>Use, modification and distribution are subject to the Boost Software License,
+ Version 1.0. (See accompanying file LICENSE_1_0.txt
+ or copy at http://www.boost.org/LICENSE_1_0.txt).</I></P>
+ </I>
+ </body>
+</html>

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/doc/thread_safety.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/doc/thread_safety.html 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,70 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+ <head>
+ <title>Boost.Regex: Thread Safety</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <link rel="stylesheet" type="text/css" href="../../../boost.css">
+ </head>
+ <body>
+ <P>
+ <TABLE id="Table1" cellSpacing="1" cellPadding="1" width="100%" border="0">
+ <TR>
+ <td valign="top" width="300">
+ <h3>C++ Boost</h3>
+ </td>
+ <TD width="353">
+ <H1 align="center">Boost.Regex</H1>
+ <H2 align="center">Thread Safety</H2>
+ </TD>
+ <td width="50">
+ <h3>Boost.Regex Index</h3>
+ </td>
+ </TR>
+ </TABLE>
+ </P>
+ <HR>
+ <P>The regex library is thread safe when Boost is: you can verify that Boost is in
+ thread safe mode by checking to see if BOOST_HAS_THREADS is defined: this macro
+ is set automatically by the config system when threading support is turned on
+ in your compiler.
+ </P>
+ <P>Class basic_regex&lt;&gt; and its typedefs regex
+ and wregex are thread safe, in that compiled regular expressions can safely be
+ shared between threads. The matching algorithms regex_match,
+ regex_search, regex_grep,
+ regex_format and regex_merge
+ are all re-entrant and thread safe. Class match_results
+ is now thread safe, in that the results of a match can be safely copied from
+ one thread to another (for example one thread may find matches and push
+ match_results instances onto a queue, while another thread pops them off the
+ other end), otherwise use a separate instance of match_results
+ per thread.
+ </P>
+ <P>The POSIX API functions are all re-entrant and
+ thread safe, regular expressions compiled with <I>regcomp</I> can also be
+ shared between threads.
+ </P>
+ <P>The class RegEx is only thread safe if each thread
+ gets its own RegEx instance (apartment threading) - this is a consequence of
+ RegEx handling both compiling and matching regular expressions.
+ </P>
+ <P>Finally note that changing the global locale invalidates all compiled regular
+ expressions, therefore calling <I>set_locale</I> from one thread while another
+ uses regular expressions <I>will</I> produce unpredictable results.
+ </P>
+ <P>
+ There is also a requirement that there is only one thread executing prior to
+ the start of main().</P>
+ <HR>
+ <p>Revised
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->
+ 24 Oct 2003
+ <!--webbot bot="Timestamp" endspan i-checksum="39359" --></p>
+ <p><i>© Copyright John Maddock&nbsp;1998-
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%Y" startspan -->
+ 2003<!--webbot bot="Timestamp" endspan i-checksum="39359" --></i></p>
+ <P><I>Use, modification and distribution are subject to the Boost Software License,
+ Version 1.0. (See accompanying file LICENSE_1_0.txt
+ or copy at http://www.boost.org/LICENSE_1_0.txt)</I></P>
+ </body>
+</html>

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/doc/uarrow.gif
==============================================================================
Binary file. No diff available.

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/doc/unicode.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/doc/unicode.html 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,66 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+ <head>
+ <title>Boost.Regex: Index</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <link rel="stylesheet" type="text/css" href="../../../boost.css">
+ </head>
+ <body>
+ <P>
+ <TABLE id="Table1" cellSpacing="1" cellPadding="1" width="100%" border="0">
+ <TR>
+ <td valign="top" width="300">
+ <h3>C++ Boost</h3>
+ </td>
+ <TD width="353">
+ <H1 align="center">Boost.Regex</H1>
+ <H2 align="center">Unicode Regular Expressions.</H2>
+ </TD>
+ <td width="50">
+ <h3>Boost.Regex Index</h3>
+ </td>
+ </TR>
+ </TABLE>
+ </P>
+ <HR>
+ <p></p>
+ <P>There are two ways to use Boost.Regex with Unicode strings:</P>
+ <H3>Rely on wchar_t</H3>
+ <P>If your platform's wchar_t type can hold Unicode strings, <EM>and</EM> your
+ platform's C/C++ runtime correctly handles wide character constants (when
+ passed to std::iswspace std::iswlower etc), then you can use boost::wregex to
+ process Unicode.&nbsp; However, there are several disadvantages to this
+ approach:</P>
+ <UL>
+ <LI>
+ It's not portable: there's no guarantee on the width of wchar_t, or even
+ whether the runtime treats wide characters as Unicode at all, most Windows
+ compilers do so, but many Unix systems do not.</LI>
+ <LI>
+ There's no support for Unicode-specific character classes: [[:Nd:]], [[:Po:]]
+ etc.</LI>
+ <LI>
+ You can only search strings that are encoded as sequences of wide characters,
+ it is not possible to search UTF-8, or even UTF-16 on many platforms.</LI></UL>
+ <H3>Use a Unicode Aware Regular Expression Type.</H3>
+ <P>If you have the <A href="http://www.ibm.com/software/globalization/icu/">ICU
+ library</A>, then Boost.Regex can be <A href="install.html#unicode">configured
+ to make use of it</A>, and provide a distinct regular expression type
+ (boost::u32regex), that supports both Unicode specific character properties,
+ and the searching of text that is encoded in either UTF-8, UTF-16, or
+ UTF-32.&nbsp; See: ICU string class support.</P>
+ <P>
+ <HR>
+ </P>
+ <P></P>
+ <p>Revised&nbsp;
+ <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->
+ 04 Jan 2005&nbsp;
+ <!--webbot bot="Timestamp" endspan i-checksum="39359" --></p>
+ <p><i>© Copyright John Maddock&nbsp;2005</i></p>
+ <P><I>Use, modification and distribution are subject to the Boost Software License,
+ Version 1.0. (See accompanying file LICENSE_1_0.txt
+ or copy at http://www.boost.org/LICENSE_1_0.txt)</I></P>
+ </body>
+</html>
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/doc/vc71-performance.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/doc/vc71-performance.html 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,703 @@
+<html>
+ <head>
+ <title>Regular Expression Performance Comparison</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
+ <meta name="Template" content="C:\PROGRAM FILES\MICROSOFT OFFICE\OFFICE\html.dot">
+ <meta name="GENERATOR" content="Microsoft FrontPage Express 2.0">
+ </head>
+ <body bgcolor="#ffffff" link="#0000ff" vlink="#800080">
+ <h2>Regular Expression Performance Comparison</h2>
+ <p>
+ The following tables provide comparisons between the following regular
+ expression libraries:</p>
+ <p>GRETA.</p>
+ <p>The Boost regex library.</p>
+ <p>Henry Spencer's regular expression library
+ - this is provided for comparison as a typical non-backtracking implementation.</p>
+ <P>Philip Hazel's PCRE library.</P>
+ <H3>Details</H3>
+ <P>Machine: Intel Pentium 4 2.8GHz PC.</P>
+ <P>Compiler: Microsoft Visual C++ version 7.1.</P>
+ <P>C++ Standard Library: Dinkumware standard library version 313.</P>
+ <P>OS: Win32.</P>
+ <P>Boost version: 1.31.0.</P>
+ <P>PCRE version: 3.9.</P>
+ <P>
+ As ever care should be taken in interpreting the results, only sensible regular
+ expressions (rather than pathological cases) are given, most are taken from the
+ Boost regex examples, or from the <a href="http://www.regxlib.com/">Library of
+ Regular Expressions</a>. In addition, some variation in the relative
+ performance of these libraries can be expected on other machines - as memory
+ access and processor caching effects can be quite large for most finite state
+ machine algorithms.</P>
+ <H3>Averages</H3>
+ <P>The following are the average relative scores for all the tests: the perfect
+ regular expression library&nbsp;would score 1, in practice any small number
+ (say less that 4 or 5) is pretty good.</P>
+ <P><table border="1" cellspacing="1">
+ <tr>
+ <td><strong>GRETA</strong></td>
+ <td><strong>GRETA<BR>
+ (non-recursive mode)</strong></td>
+ <td><strong>Boost</strong></td>
+ <td><strong>Boost + C++ locale</strong></td>
+ <td><strong>POSIX</strong></td>
+ <td><strong>PCRE</strong></td>
+ </tr>
+ <tr>
+ <td>2.31619</td>
+ <td>6.14203</td>
+ <td>2.30668</td>
+ <td>1.94363</td>
+ <td>124.752</td>
+ <td>2.09365</td>
+ </tr>
+ </table>
+ </P>
+ <h3>Comparison 1: Long Search</h3>
+ <p>For each of the following regular expressions the time taken to find all
+ occurrences of the expression within a long English language text was measured
+ (mtent12.txt
+ from Project Gutenberg, 19Mb).&nbsp;</p>
+ <P><table border="1" cellspacing="1">
+ <tr>
+ <td><strong>Expression</strong></td>
+ <td><strong>GRETA</strong></td>
+ <td><strong>GRETA<BR>
+ (non-recursive mode)</strong></td>
+ <td><strong>Boost</strong></td>
+ <td><strong>Boost + C++ locale</strong></td>
+ <td><strong>POSIX</strong></td>
+ <td><strong>PCRE</strong></td>
+ </tr>
+ <tr>
+ <td><code>Twain</code></td>
+ <td><font color="#008000">1<BR>
+ (0.0407s)</font></td>
+ <td><font color="#008000">1<BR>
+ (0.0407s)</font></td>
+ <td>4.18<BR>
+ (0.17s)</td>
+ <td>4.18<BR>
+ (0.17s)</td>
+ <td>135<BR>
+ (5.48s)</td>
+ <td>1.37<BR>
+ (0.0557s)</td>
+ </tr>
+ <tr>
+ <td><code>Huck[[:alpha:]]+</code></td>
+ <td><font color="#008000">1.02<BR>
+ (0.0381s)</font></td>
+ <td><font color="#008000">1<BR>
+ (0.0375s)</font></td>
+ <td>4.53<BR>
+ (0.17s)</td>
+ <td>4.54<BR>
+ (0.17s)</td>
+ <td>166<BR>
+ (6.23s)</td>
+ <td>1.34<BR>
+ (0.0501s)</td>
+ </tr>
+ <tr>
+ <td><code>[[:alpha:]]+ing</code></td>
+ <td>4.3<BR>
+ (4.18s)</td>
+ <td>9.93<BR>
+ (9.65s)</td>
+ <td>1.15<BR>
+ (1.12s)</td>
+ <td><font color="#008000">1<BR>
+ (0.972s)</font></td>
+ <td>8.15<BR>
+ (7.92s)</td>
+ <td>5.85<BR>
+ (5.69s)</td>
+ </tr>
+ <tr>
+ <td><code>^[^ ]*?Twain</code></td>
+ <td>6.25<BR>
+ (1.84s)</td>
+ <td>20.9<BR>
+ (6.16s)</td>
+ <td>1.56<BR>
+ (0.461s)</td>
+ <td><font color="#008000">1<BR>
+ (0.295s)</font></td>
+ <td>NA</td>
+ <td>2.58<BR>
+ (0.761s)</td>
+ </tr>
+ <tr>
+ <td><code>Tom|Sawyer|Huckleberry|Finn</code></td>
+ <td>6.53<BR>
+ (0.711s)</td>
+ <td>11.5<BR>
+ (1.25s)</td>
+ <td>2.3<BR>
+ (0.251s)</td>
+ <td><font color="#008000">1<BR>
+ (0.109s)</font></td>
+ <td>196<BR>
+ (21.4s)</td>
+ <td>1.77<BR>
+ (0.193s)</td>
+ </tr>
+ <tr>
+ <td><code>(Tom|Sawyer|Huckleberry|Finn).{0,30}river|river.{0,30}(Tom|Sawyer|Huckleberry|Finn)</code></td>
+ <td>3.88<BR>
+ (0.972s)</td>
+ <td>6.48<BR>
+ (1.62s)</td>
+ <td>1.66<BR>
+ (0.416s)</td>
+ <td><font color="#008000">1<BR>
+ (0.251s)</font></td>
+ <td>NA</td>
+ <td>2.48<BR>
+ (0.62s)</td>
+ </tr>
+ </table>
+ </P>
+ <h3>Comparison 2: Medium Sized Search</h3>
+ <p>For each of the following regular expressions the time taken to find all
+ occurrences of the expression within a medium sized English language text was
+ measured (the first 50K from mtent12.txt).&nbsp;</p>
+ <P><table border="1" cellspacing="1">
+ <tr>
+ <td><strong>Expression</strong></td>
+ <td><strong>GRETA</strong></td>
+ <td><strong>GRETA<BR>
+ (non-recursive mode)</strong></td>
+ <td><strong>Boost</strong></td>
+ <td><strong>Boost + C++ locale</strong></td>
+ <td><strong>POSIX</strong></td>
+ <td><strong>PCRE</strong></td>
+ </tr>
+ <tr>
+ <td><code>Twain</code></td>
+ <td><font color="#008000">1<BR>
+ (9.05e-005s)</font></td>
+ <td><font color="#008000">1.03<BR>
+ (9.29e-005s)</font></td>
+ <td>4.92<BR>
+ (0.000445s)</td>
+ <td>4.92<BR>
+ (0.000445s)</td>
+ <td>43.2<BR>
+ (0.00391s)</td>
+ <td>3.18<BR>
+ (0.000288s)</td>
+ </tr>
+ <tr>
+ <td><code>Huck[[:alpha:]]+</code></td>
+ <td><font color="#008000">1<BR>
+ (8.56e-005s)</font></td>
+ <td><font color="#008000">1<BR>
+ (8.56e-005s)</font></td>
+ <td>4.97<BR>
+ (0.000425s)</td>
+ <td>4.98<BR>
+ (0.000426s)</td>
+ <td>2.8<BR>
+ (0.000239s)</td>
+ <td>2.2<BR>
+ (0.000188s)</td>
+ </tr>
+ <tr>
+ <td><code>[[:alpha:]]+ing</code></td>
+ <td>5.29<BR>
+ (0.011s)</td>
+ <td>11.8<BR>
+ (0.0244s)</td>
+ <td>1.19<BR>
+ (0.00246s)</td>
+ <td><font color="#008000">1<BR>
+ (0.00207s)</font></td>
+ <td>8.77<BR>
+ (0.0182s)</td>
+ <td>6.88<BR>
+ (0.0142s)</td>
+ </tr>
+ <tr>
+ <td><code>^[^ ]*?Twain</code></td>
+ <td>5.98<BR>
+ (0.00462s)</td>
+ <td>20.2<BR>
+ (0.0156s)</td>
+ <td>1.54<BR>
+ (0.00119s)</td>
+ <td><font color="#008000">1<BR>
+ (0.000772s)</font></td>
+ <td>NA</td>
+ <td>2.53<BR>
+ (0.00195s)</td>
+ </tr>
+ <tr>
+ <td><code>Tom|Sawyer|Huckleberry|Finn</code></td>
+ <td>3.42<BR>
+ (0.00207s)</td>
+ <td>6.31<BR>
+ (0.00383s)</td>
+ <td>1.71<BR>
+ (0.00104s)</td>
+ <td><font color="#008000">1<BR>
+ (0.000606s)</font></td>
+ <td>81.5<BR>
+ (0.0494s)</td>
+ <td>1.96<BR>
+ (0.00119s)</td>
+ </tr>
+ <tr>
+ <td><code>(Tom|Sawyer|Huckleberry|Finn).{0,30}river|river.{0,30}(Tom|Sawyer|Huckleberry|Finn)</code></td>
+ <td>1.97<BR>
+ (0.00266s)</td>
+ <td>3.77<BR>
+ (0.00509s)</td>
+ <td>1.38<BR>
+ (0.00186s)</td>
+ <td><font color="#008000">1<BR>
+ (0.00135s)</font></td>
+ <td>297<BR>
+ (0.401s)</td>
+ <td>1.77<BR>
+ (0.00238s)</td>
+ </tr>
+ </table>
+ </P>
+ <H3>Comparison 3:&nbsp;C++ Code&nbsp;Search</H3>
+ <P>For each of the following regular expressions the time taken to find all
+ occurrences of the expression within the C++ source file <A href="../../../boost/crc.hpp">
+ boost/crc.hpp</A>&nbsp;was measured.&nbsp;</P>
+ <P><table border="1" cellspacing="1">
+ <tr>
+ <td><strong>Expression</strong></td>
+ <td><strong>GRETA</strong></td>
+ <td><strong>GRETA<BR>
+ (non-recursive mode)</strong></td>
+ <td><strong>Boost</strong></td>
+ <td><strong>Boost + C++ locale</strong></td>
+ <td><strong>POSIX</strong></td>
+ <td><strong>PCRE</strong></td>
+ </tr>
+ <tr>
+ <td><code>^(template[[:space:]]*&lt;[^;:{]+&gt;[[:space:]]*)?(class|struct)[[:space:]]*(\&lt;\w+\&gt;([
+ ]*\([^)]*\))?[[:space:]]*)*(\&lt;\w*\&gt;)[[:space:]]*(&lt;[^;:{]+&gt;[[:space:]]*)?(\{|:[^;\{()]*\{)</code></td>
+ <td>6.67<BR>
+ (0.00147s)</td>
+ <td>36.9<BR>
+ (0.00813s)</td>
+ <td><font color="#008000">1.03<BR>
+ (0.000227s)</font></td>
+ <td><font color="#008000">1<BR>
+ (0.00022s)</font></td>
+ <td>557<BR>
+ (0.123s)</td>
+ <td>2.57<BR>
+ (0.000566s)</td>
+ </tr>
+ <tr>
+ <td><code>(^[
+ ]*#(?:[^\\\n]|\\[^\n_[:punct:][:alnum:]]*[\n[:punct:][:word:]])*)|(//[^\n]*|/\*.*?\*/)|\&lt;([+-]?(?:(?:0x[[:xdigit:]]+)|(?:(?:[[:digit:]]*\.)?[[:digit:]]+(?:[eE][+-]?[[:digit:]]+)?))u?(?:(?:int(?:8|16|32|64))|L)?)\&gt;|('(?:[^\\']|\\.)*'|"(?:[^\\"]|\\.)*")|\&lt;(__asm|__cdecl|__declspec|__export|__far16|__fastcall|__fortran|__import|__pascal|__rtti|__stdcall|_asm|_cdecl|__except|_export|_far16|_fastcall|__finally|_fortran|_import|_pascal|_stdcall|__thread|__try|asm|auto|bool|break|case|catch|cdecl|char|class|const|const_cast|continue|default|delete|do|double|dynamic_cast|else|enum|explicit|extern|false|float|for|friend|goto|if|inline|int|long|mutable|namespace|new|operator|pascal|private|protected|public|register|reinterpret_cast|return|short|signed|sizeof|static|static_cast|struct|switch|template|this|throw|true|try|typedef|typeid|typename|union|unsigned|using|virtual|void|volatile|wchar_t|while)\&gt;</code></td>
+ <td><font color="#008000">1<BR>
+ (0.00555s)</font></td>
+ <td>3.32<BR>
+ (0.0185s)</td>
+ <td>2.53<BR>
+ (0.0141s)</td>
+ <td>1.94<BR>
+ (0.0108s)</td>
+ <td>NA</td>
+ <td>3.38<BR>
+ (0.0188s)</td>
+ </tr>
+ <tr>
+ <td><code>^[ ]*#[ ]*include[ ]+("[^"]+"|&lt;[^&gt;]+&gt;)</code></td>
+ <td>4.77<BR>
+ (0.00156s)</td>
+ <td>24.8<BR>
+ (0.00814s)</td>
+ <td>1.13<BR>
+ (0.000372s)</td>
+ <td><font color="#008000">1<BR>
+ (0.000328s)</font></td>
+ <td>120<BR>
+ (0.0394s)</td>
+ <td>1.58<BR>
+ (0.000518s)</td>
+ </tr>
+ <tr>
+ <td><code>^[ ]*#[ ]*include[ ]+("boost/[^"]+"|&lt;boost/[^&gt;]+&gt;)</code></td>
+ <td>4.72<BR>
+ (0.00154s)</td>
+ <td>24.8<BR>
+ (0.00813s)</td>
+ <td>1.12<BR>
+ (0.000367s)</td>
+ <td><font color="#008000">1<BR>
+ (0.000328s)</font></td>
+ <td>143<BR>
+ (0.0469s)</td>
+ <td>1.58<BR>
+ (0.000518s)</td>
+ </tr>
+ </table>
+ </P>
+ <H3>
+ <H3>Comparison 4: HTML Document Search</H3>
+ </H3>
+ <P>For each of the following regular expressions the time taken to find all
+ occurrences of the expression within the html file libs/libraries.htm
+ was measured.&nbsp;</P>
+ <P><table border="1" cellspacing="1">
+ <tr>
+ <td><strong>Expression</strong></td>
+ <td><strong>GRETA</strong></td>
+ <td><strong>GRETA<BR>
+ (non-recursive mode)</strong></td>
+ <td><strong>Boost</strong></td>
+ <td><strong>Boost + C++ locale</strong></td>
+ <td><strong>POSIX</strong></td>
+ <td><strong>PCRE</strong></td>
+ </tr>
+ <tr>
+ <td><code>beman|john|dave</code></td>
+ <td>4.07<BR>
+ (0.00111s)</td>
+ <td>7.14<BR>
+ (0.00195s)</td>
+ <td>1.75<BR>
+ (0.000479s)</td>
+ <td><font color="#008000">1<BR>
+ (0.000273s)</font></td>
+ <td>54.3<BR>
+ (0.0149s)</td>
+ <td>1.83<BR>
+ (0.000499s)</td>
+ </tr>
+ <tr>
+ <td><code>&lt;p&gt;.*?&lt;/p&gt;</code></td>
+ <td><font color="#008000">1<BR>
+ (6.59e-005s)</font></td>
+ <td><font color="#008000">1.04<BR>
+ (6.84e-005s)</font></td>
+ <td>4.15<BR>
+ (0.000273s)</td>
+ <td>4.23<BR>
+ (0.000279s)</td>
+ <td>NA</td>
+ <td>4.23<BR>
+ (0.000279s)</td>
+ </tr>
+ <tr>
+ <td><code>&lt;a[^&gt;]+href=("[^"]*"|[^[:space:]]+)[^&gt;]*&gt;</code></td>
+ <td>1.39<BR>
+ (0.000626s)</td>
+ <td>1.83<BR>
+ (0.000821s)</td>
+ <td>1.41<BR>
+ (0.000636s)</td>
+ <td><font color="#008000">1<BR>
+ (0.00045s)</font></td>
+ <td>351<BR>
+ (0.158s)</td>
+ <td>1.13<BR>
+ (0.000509s)</td>
+ </tr>
+ <tr>
+ <td><code>&lt;h[12345678][^&gt;]*&gt;.*?&lt;/h[12345678]&gt;</code></td>
+ <td><font color="#008000">1<BR>
+ (0.000142s)</font></td>
+ <td>1.21<BR>
+ (0.000171s)</td>
+ <td>2.62<BR>
+ (0.000372s)</td>
+ <td>1.48<BR>
+ (0.00021s)</td>
+ <td>NA</td>
+ <td>1.73<BR>
+ (0.000245s)</td>
+ </tr>
+ <tr>
+ <td><code>&lt;img[^&gt;]+src=("[^"]*"|[^[:space:]]+)[^&gt;]*&gt;</code></td>
+ <td><font color="#008000">1<BR>
+ (5.38e-005s)</font></td>
+ <td><font color="#008000">1.05<BR>
+ (5.63e-005s)</font></td>
+ <td>5<BR>
+ (0.000269s)</td>
+ <td>5.18<BR>
+ (0.000278s)</td>
+ <td>604<BR>
+ (0.0325s)</td>
+ <td>4.05<BR>
+ (0.000218s)</td>
+ </tr>
+ <tr>
+ <td><code>&lt;font[^&gt;]+face=("[^"]*"|[^[:space:]]+)[^&gt;]*&gt;.*?&lt;/font&gt;</code></td>
+ <td><font color="#008000">1<BR>
+ (6.05e-005s)</font></td>
+ <td><font color="#008000">1.09<BR>
+ (6.59e-005s)</font></td>
+ <td>4.45<BR>
+ (0.000269s)</td>
+ <td>4.69<BR>
+ (0.000284s)</td>
+ <td>NA</td>
+ <td>3.64<BR>
+ (0.00022s)</td>
+ </tr>
+ </table>
+ </P>
+ <H3>Comparison 3: Simple Matches</H3>
+ <p>
+ For each of the following regular expressions the time taken to match against
+ the text indicated was measured.&nbsp;</p>
+ <P><table border="1" cellspacing="1">
+ <tr>
+ <td><strong>Expression</strong></td>
+ <td><strong>Text</strong></td>
+ <td><strong>GRETA</strong></td>
+ <td><strong>GRETA<BR>
+ (non-recursive mode)</strong></td>
+ <td><strong>Boost</strong></td>
+ <td><strong>Boost + C++ locale</strong></td>
+ <td><strong>POSIX</strong></td>
+ <td><strong>PCRE</strong></td>
+ </tr>
+ <tr>
+ <td><code>abc</code></td>
+ <td>abc</td>
+ <td>1.32<BR>
+ (2.24e-007s)</td>
+ <td>1.86<BR>
+ (3.15e-007s)</td>
+ <td>1.25<BR>
+ (2.12e-007s)</td>
+ <td>1.24<BR>
+ (2.1e-007s)</td>
+ <td>2.98<BR>
+ (5.05e-007s)</td>
+ <td><font color="#008000">1<BR>
+ (1.7e-007s)</font></td>
+ </tr>
+ <tr>
+ <td><code>^([0-9]+)(\-| |$)(.*)$</code></td>
+ <td>100- this is a line of ftp response which contains a message string</td>
+ <td>1.32<BR>
+ (5.91e-007s)</td>
+ <td>1.96<BR>
+ (8.78e-007s)</td>
+ <td>2.68<BR>
+ (1.2e-006s)</td>
+ <td>1.53<BR>
+ (6.88e-007s)</td>
+ <td>332<BR>
+ (0.000149s)</td>
+ <td><font color="#008000">1<BR>
+ (4.49e-007s)</font></td>
+ </tr>
+ <tr>
+ <td><code>([[:digit:]]{4}[- ]){3}[[:digit:]]{3,4}</code></td>
+ <td>1234-5678-1234-456</td>
+ <td>1.44<BR>
+ (7.16e-007s)</td>
+ <td>2.04<BR>
+ (1.01e-006s)</td>
+ <td>3.35<BR>
+ (1.66e-006s)</td>
+ <td>2.15<BR>
+ (1.07e-006s)</td>
+ <td>31.4<BR>
+ (1.56e-005s)</td>
+ <td><font color="#008000">1<BR>
+ (4.96e-007s)</font></td>
+ </tr>
+ <tr>
+ <td><code>^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$</code></td>
+ <td>john_at_[hidden]</td>
+ <td><font color="#008000">1<BR>
+ (1.18e-006s)</font></td>
+ <td>1.42<BR>
+ (1.68e-006s)</td>
+ <td>2.06<BR>
+ (2.44e-006s)</td>
+ <td>1.35<BR>
+ (1.6e-006s)</td>
+ <td>165<BR>
+ (0.000196s)</td>
+ <td><font color="#008000">1.06<BR>
+ (1.26e-006s)</font></td>
+ </tr>
+ <tr>
+ <td><code>^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$</code></td>
+ <td>foo12_at_[hidden]</td>
+ <td><font color="#008000">1<BR>
+ (1.09e-006s)</font></td>
+ <td>1.44<BR>
+ (1.57e-006s)</td>
+ <td>2.21<BR>
+ (2.4e-006s)</td>
+ <td>1.41<BR>
+ (1.53e-006s)</td>
+ <td>108<BR>
+ (0.000117s)</td>
+ <td><font color="#008000">1.04<BR>
+ (1.13e-006s)</font></td>
+ </tr>
+ <tr>
+ <td><code>^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$</code></td>
+ <td>bob.smith_at_[hidden]</td>
+ <td><font color="#008000">1<BR>
+ (1.07e-006s)</font></td>
+ <td>1.43<BR>
+ (1.53e-006s)</td>
+ <td>2.21<BR>
+ (2.37e-006s)</td>
+ <td>1.45<BR>
+ (1.55e-006s)</td>
+ <td>123<BR>
+ (0.000132s)</td>
+ <td><font color="#008000">1.05<BR>
+ (1.13e-006s)</font></td>
+ </tr>
+ <tr>
+ <td><code>^[a-zA-Z]{1,2}[0-9][0-9A-Za-z]{0,1} {0,1}[0-9][A-Za-z]{2}$</code></td>
+ <td>EH10 2QQ</td>
+ <td><font color="#008000">1<BR>
+ (3.19e-007s)</font></td>
+ <td>1.67<BR>
+ (5.34e-007s)</td>
+ <td>1.58<BR>
+ (5.05e-007s)</td>
+ <td>1.4<BR>
+ (4.49e-007s)</td>
+ <td>10.4<BR>
+ (3.32e-006s)</td>
+ <td>1.15<BR>
+ (3.68e-007s)</td>
+ </tr>
+ <tr>
+ <td><code>^[a-zA-Z]{1,2}[0-9][0-9A-Za-z]{0,1} {0,1}[0-9][A-Za-z]{2}$</code></td>
+ <td>G1 1AA</td>
+ <td><font color="#008000">1<BR>
+ (3.29e-007s)</font></td>
+ <td>1.65<BR>
+ (5.44e-007s)</td>
+ <td>1.51<BR>
+ (4.96e-007s)</td>
+ <td>1.36<BR>
+ (4.49e-007s)</td>
+ <td>8.46<BR>
+ (2.79e-006s)</td>
+ <td>1.1<BR>
+ (3.63e-007s)</td>
+ </tr>
+ <tr>
+ <td><code>^[a-zA-Z]{1,2}[0-9][0-9A-Za-z]{0,1} {0,1}[0-9][A-Za-z]{2}$</code></td>
+ <td>SW1 1ZZ</td>
+ <td><font color="#008000">1<BR>
+ (3.25e-007s)</font></td>
+ <td>1.64<BR>
+ (5.34e-007s)</td>
+ <td>1.56<BR>
+ (5.05e-007s)</td>
+ <td>1.38<BR>
+ (4.49e-007s)</td>
+ <td>9.29<BR>
+ (3.02e-006s)</td>
+ <td>1.13<BR>
+ (3.68e-007s)</td>
+ </tr>
+ <tr>
+ <td><code>^[[:digit:]]{1,2}/[[:digit:]]{1,2}/[[:digit:]]{4}$</code></td>
+ <td>4/1/2001</td>
+ <td><font color="#008000">1<BR>
+ (3.44e-007s)</font></td>
+ <td>1.55<BR>
+ (5.34e-007s)</td>
+ <td>2.36<BR>
+ (8.12e-007s)</td>
+ <td>2.2<BR>
+ (7.55e-007s)</td>
+ <td>19.6<BR>
+ (6.72e-006s)</td>
+ <td>1.81<BR>
+ (6.21e-007s)</td>
+ </tr>
+ <tr>
+ <td><code>^[[:digit:]]{1,2}/[[:digit:]]{1,2}/[[:digit:]]{4}$</code></td>
+ <td>12/12/2001</td>
+ <td><font color="#008000">1.05<BR>
+ (6.59e-007s)</font></td>
+ <td>1.66<BR>
+ (1.05e-006s)</td>
+ <td>1.44<BR>
+ (9.07e-007s)</td>
+ <td>1.23<BR>
+ (7.73e-007s)</td>
+ <td>11.6<BR>
+ (7.34e-006s)</td>
+ <td><font color="#008000">1<BR>
+ (6.3e-007s)</font></td>
+ </tr>
+ <tr>
+ <td><code>^[-+]?[[:digit:]]*\.?[[:digit:]]*$</code></td>
+ <td>123</td>
+ <td><font color="#008000">1<BR>
+ (5.72e-007s)</font></td>
+ <td>1.59<BR>
+ (9.07e-007s)</td>
+ <td>1.6<BR>
+ (9.16e-007s)</td>
+ <td>1.49<BR>
+ (8.5e-007s)</td>
+ <td>6.14<BR>
+ (3.51e-006s)</td>
+ <td>1.22<BR>
+ (6.97e-007s)</td>
+ </tr>
+ <tr>
+ <td><code>^[-+]?[[:digit:]]*\.?[[:digit:]]*$</code></td>
+ <td>+3.14159</td>
+ <td><font color="#008000">1<BR>
+ (6.78e-007s)</font></td>
+ <td>1.52<BR>
+ (1.03e-006s)</td>
+ <td>1.47<BR>
+ (9.94e-007s)</td>
+ <td>1.31<BR>
+ (8.88e-007s)</td>
+ <td>10.8<BR>
+ (7.34e-006s)</td>
+ <td><font color="#008000">1.08<BR>
+ (7.35e-007s)</font></td>
+ </tr>
+ <tr>
+ <td><code>^[-+]?[[:digit:]]*\.?[[:digit:]]*$</code></td>
+ <td>-3.14159</td>
+ <td><font color="#008000">1<BR>
+ (6.78e-007s)</font></td>
+ <td>1.52<BR>
+ (1.03e-006s)</td>
+ <td>1.46<BR>
+ (9.92e-007s)</td>
+ <td>1.32<BR>
+ (8.98e-007s)</td>
+ <td>10.5<BR>
+ (7.11e-006s)</td>
+ <td>1.11<BR>
+ (7.54e-007s)</td>
+ </tr>
+ </table>
+ </P>
+ <hr>
+ <p><i>© Copyright John Maddock&nbsp;2003</i></p>
+ <P><I>Use, modification and distribution are subject to the Boost Software License,
+ Version 1.0. (See accompanying file LICENSE_1_0.txt
+ or copy at http://www.boost.org/LICENSE_1_0.txt)</I></P>
+ </body>
+</html>
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/example/Jamfile.v2
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/example/Jamfile.v2 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,62 @@
+# copyright John Maddock 2003
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt.
+
+project
+ : requirements <threading>multi <link>shared:<define>BOOST_REGEX_DYN_LINK=1
+ ;
+
+
+rule regex-test-run ( sources + : input * : name * )
+{
+ return [
+ run
+ # sources
+ $(sources)
+ # dependencies
+ ../build//boost_regex
+ : # additional args
+ $(input)
+ : # test-files
+ : # requirements
+ : # test name
+ $(name)
+ ] ;
+}
+
+test-suite regex-examples :
+
+[ regex-test-run timer/regex_timer.cpp : $(BOOST_ROOT)/libs/regex/example/timer/input_script.txt ]
+[ regex-test-run grep/grep.cpp ../../program_options/build//boost_program_options/<link>static : -n -b $(BOOST_ROOT)/boost/regex.hpp $(BOOST_ROOT)/boost/type_traits.hpp : test_grep ]
+[ regex-test-run snippets/credit_card_example.cpp ]
+[ regex-test-run snippets/mfc_example.cpp ]
+[ regex-test-run snippets/icu_example.cpp ]
+[ regex-test-run snippets/partial_regex_grep.cpp : $(BOOST_ROOT)/libs/regex/index.htm ]
+[ regex-test-run snippets/partial_regex_match.cpp : 1234-5678-8765-4 ]
+[ regex-test-run snippets/regex_grep_example_1.cpp : $(BOOST_ROOT)/boost/rational.hpp ]
+[ regex-test-run snippets/regex_grep_example_2.cpp : $(BOOST_ROOT)/boost/rational.hpp ]
+[ regex-test-run snippets/regex_grep_example_3.cpp : $(BOOST_ROOT)/boost/rational.hpp ]
+[ regex-test-run snippets/regex_grep_example_4.cpp : $(BOOST_ROOT)/boost/rational.hpp ]
+[ regex-test-run snippets/regex_match_example.cpp : -auto ]
+[ regex-test-run snippets/regex_merge_example.cpp : $(BOOST_ROOT)/boost/rational.hpp ]
+[ regex-test-run snippets/regex_replace_example.cpp : $(BOOST_ROOT)/boost/rational.hpp ]
+[ regex-test-run snippets/regex_search_example.cpp : $(BOOST_ROOT)/boost/rational.hpp ]
+[ regex-test-run snippets/regex_split_example_1.cpp : -auto ]
+[ regex-test-run snippets/regex_split_example_2.cpp : $(BOOST_ROOT)/libs/regex/doc/index.html ]
+[ regex-test-run snippets/regex_token_iterator_eg_1.cpp : -auto ]
+[ regex-test-run snippets/regex_token_iterator_eg_2.cpp : $(BOOST_ROOT)/libs/regex/doc/index.html ]
+[ regex-test-run snippets/regex_iterator_example.cpp : $(BOOST_ROOT)/boost/rational.hpp ]
+[ run snippets/captures_example.cpp
+ ../test/captures//boost_regex_extra
+ : : : <threading>multi <define>BOOST_REGEX_MATCH_EXTRA=1 ]
+
+;
+
+
+
+
+
+
+
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/example/grep/grep.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/example/grep/grep.cpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,212 @@
+/*
+ *
+ * Copyright (c) 2004
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+#include <iostream>
+#include <fstream>
+#include <string>
+#include <vector>
+#include <boost/program_options.hpp>
+#include <boost/regex.hpp>
+
+namespace po = boost::program_options;
+
+int after_context;
+int before_context;
+bool print_byte_offset;
+bool count_only;
+std::string pattern;
+bool print_non_matching_files;
+bool files_only;
+bool print_line_numbers;
+
+boost::regex_constants::syntax_option_type flags = boost::regex_constants::basic;
+boost::regex re;
+boost::smatch what;
+std::string current_file;
+int file_count;
+
+void process_stream(std::istream& is)
+{
+ std::string line;
+ int match_found = 0;
+ int linenum = 1;
+ while(std::getline(is, line))
+ {
+ bool result = boost::regex_search(line, what, re);
+ if(result)
+ {
+ if(print_non_matching_files)
+ return;
+ if(files_only)
+ {
+ std::cout << current_file << std::endl;
+ return;
+ }
+ if(!match_found && !count_only && (file_count > 1))
+ {
+ std::cout << current_file << ":\n";
+ }
+ ++match_found;
+ if(!count_only)
+ {
+ if(print_line_numbers)
+ {
+ std::cout << linenum << ":";
+ }
+ if(print_byte_offset)
+ {
+ std::cout << what.position() << ":";
+ }
+ std::cout << what[0] << std::endl;
+ }
+ }
+ ++linenum;
+ }
+ if(count_only && match_found)
+ {
+ std::cout << match_found << " matches found in file " << current_file << std::endl;
+ }
+ else if(print_non_matching_files && !match_found)
+ {
+ std::cout << current_file << std::endl;
+ }
+}
+
+void process_file(const std::string& name)
+{
+ current_file = name;
+ std::ifstream is(name.c_str());
+ if(is.bad())
+ {
+ std::cerr << "Unable to open file " << name << std::endl;
+ }
+ process_stream(is);
+}
+
+int main(int argc, char * argv[])
+{
+ try{
+ po::options_description opts("Options");
+ opts.add_options()
+ ("help,h", "produce help message")
+ //("after-context,A", po::value<int>(&after_context)->default_value(0), "Print arg lines of trailing context after matching lines. Places a line containing -- between contiguous groups of matches.")
+ //("before-context,B", po::value<int>(&before_context)->default_value(0), "Print arg lines of leading context before matching lines. Places a line containing -- between contiguous groups of matches.")
+ //("context,C", po::value<int>(), "Print arg lines of output context. Places a line containing -- between contiguous groups of matches.")
+ ("byte-offset,b", "Print the byte offset within the input file before each line of output.")
+ ("count,c", "Suppress normal output; instead print a count of matching lines for each input file. With the -v, --invert-match option (see below), count non-matching lines.")
+ ("extended-regexp,E", "Interpret PATTERN as an POSIX-extended regular expression.")
+ ("perl-regexp,P", "Interpret PATTERN as a Perl regular expression.")
+ //("regexp,e", po::value<std::string>(&pattern), "Use PATTERN as the pattern; useful to protect patterns beginning with -.")
+ ("basic-regexp,G", "Interpret arg as a POSIX-basic regular expression (see below). This is the default.")
+ ("ignore-case,i", "Ignore case distinctions in both the PATTERN and the input files.")
+ ("files-without-match,L", "Suppress normal output; instead print the name of each input file from which no output would normally have been printed. The scanning will stop on the first match.")
+ ("files-with-matches,l", "Suppress normal output; instead print the name of each input file from which output would normally have been printed. The scanning will stop on the first match.")
+ ("line-number,n", "Prefix each line of output with the line number within its input file.")
+ ;
+ // Hidden options, will be allowed both on command line and
+ // in config file, but will not be shown to the user.
+ po::options_description hidden("Hidden options");
+ hidden.add_options()
+ ("input-file", po::value< std::vector<std::string> >(), "input file")
+ ("input-pattern", po::value< std::string >(), "input file")
+ ;
+
+ po::options_description cmdline_options;
+ cmdline_options.add(opts).add(hidden);
+
+ po::positional_options_description p;
+ p.add("input-pattern", 1);
+ p.add("input-file", -1);
+
+ po::variables_map vm;
+ po::store(po::command_line_parser(argc, argv).options(cmdline_options)/*.options(hidden)*/.positional(p).run(), vm);
+ po::notify(vm);
+
+ if (vm.count("help"))
+ {
+ std::cout << opts << "\n";
+ return 0;
+ }
+ if (vm.count("context"))
+ {
+ after_context = vm["context"].as< int >();
+ before_context = after_context;
+ }
+ if(vm.count("extended-regexp"))
+ {
+ flags = boost::regex_constants::extended;
+ }
+ if(vm.count("basic-regexp"))
+ {
+ flags = boost::regex_constants::basic;
+ }
+ if(vm.count("perl-regexp"))
+ {
+ flags = boost::regex_constants::perl;
+ }
+ if(vm.count("ignore-case"))
+ {
+ flags |= boost::regex_constants::icase;
+ }
+ if(vm.count("byte-offset"))
+ {
+ print_byte_offset = true;
+ }
+ if(vm.count("count"))
+ {
+ count_only = true;
+ }
+ if(vm.count("files-without-match"))
+ {
+ print_non_matching_files = true;
+ }
+ if(vm.count("files-with-matches"))
+ {
+ files_only = true;
+ }
+ if(vm.count("line-number"))
+ {
+ print_line_numbers = true;
+ }
+ if(vm.count("input-pattern"))
+ {
+ pattern = vm["input-pattern"].as< std::string >();
+ re.assign(pattern, flags);
+ }
+ else
+ {
+ std::cerr << "No pattern specified" << std::endl;
+ return 1;
+ }
+ if (vm.count("input-file"))
+ {
+ const std::vector<std::string>& files = vm["input-file"].as< std::vector<std::string> >();
+ file_count = files.size();
+ for(std::vector<std::string>::const_iterator i = files.begin(); i != files.end(); ++i)
+ {
+ process_file(*i);
+ }
+ }
+ else
+ {
+ // no input files, scan stdin instead:
+ process_stream(std::cin);
+ }
+
+ }
+ catch(const std::exception& e)
+ {
+ std::cerr << e.what() << std::endl;
+ }
+
+ return 0;
+}
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/example/snippets/captures_example.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/example/snippets/captures_example.cpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,68 @@
+/*
+ *
+ * Copyright (c) 2003-2004
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE captures_example.cpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Demonstrate the behaviour of captures.
+ */
+
+#include <boost/regex.hpp>
+#include <iostream>
+
+
+void print_captures(const std::string& regx, const std::string& text)
+{
+ boost::regex e(regx);
+ boost::smatch what;
+ std::cout << "Expression: \"" << regx << "\"\n";
+ std::cout << "Text: \"" << text << "\"\n";
+ if(boost::regex_match(text, what, e, boost::match_extra))
+ {
+ unsigned i, j;
+ std::cout << "** Match found **\n Sub-Expressions:\n";
+ for(i = 0; i < what.size(); ++i)
+ std::cout << " $" << i << " = \"" << what[i] << "\"\n";
+ std::cout << " Captures:\n";
+ for(i = 0; i < what.size(); ++i)
+ {
+ std::cout << " $" << i << " = {";
+ for(j = 0; j < what.captures(i).size(); ++j)
+ {
+ if(j)
+ std::cout << ", ";
+ else
+ std::cout << " ";
+ std::cout << "\"" << what.captures(i)[j] << "\"";
+ }
+ std::cout << " }\n";
+ }
+ }
+ else
+ {
+ std::cout << "** No Match found **\n";
+ }
+}
+
+int main(int , char* [])
+{
+ print_captures("(([[:lower:]]+)|([[:upper:]]+))+", "aBBcccDDDDDeeeeeeee");
+ print_captures("a(b+|((c)*))+d", "abd");
+ print_captures("(.*)bar|(.*)bah", "abcbar");
+ print_captures("(.*)bar|(.*)bah", "abcbah");
+ print_captures("^(?:(\\w+)|(?>\\W+))*$", "now is the time for all good men to come to the aid of the party");
+ print_captures("^(?>(\\w+)\\W*)*$", "now is the time for all good men to come to the aid of the party");
+ print_captures("^(\\w+)\\W+(?>(\\w+)\\W+)*(\\w+)$", "now is the time for all good men to come to the aid of the party");
+ print_captures("^(\\w+)\\W+(?>(\\w+)\\W+(?:(\\w+)\\W+){0,2})*(\\w+)$", "now is the time for all good men to come to the aid of the party");
+ return 0;
+}
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/example/snippets/credit_card_example.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/example/snippets/credit_card_example.cpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,67 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE credit_card_example.cpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Credit card number formatting code.
+ */
+
+#include <string>
+#include <boost/regex.hpp>
+
+bool validate_card_format(const std::string& s)
+{
+ static const boost::regex e("(\\d{4}[- ]){3}\\d{4}");
+ return boost::regex_match(s, e);
+}
+
+const boost::regex e("\\A(\\d{3,4})[- ]?(\\d{4})[- ]?(\\d{4})[- ]?(\\d{4})\\z");
+const std::string machine_format("\\1\\2\\3\\4");
+const std::string human_format("\\1-\\2-\\3-\\4");
+
+std::string machine_readable_card_number(const std::string& s)
+{
+ return boost::regex_replace(s, e, machine_format, boost::match_default | boost::format_sed);
+}
+
+std::string human_readable_card_number(const std::string& s)
+{
+ return boost::regex_replace(s, e, human_format, boost::match_default | boost::format_sed);
+}
+
+#include <iostream>
+using namespace std;
+
+int main()
+{
+ string s[4] = { "0000111122223333", "0000 1111 2222 3333",
+ "0000-1111-2222-3333", "000-1111-2222-3333", };
+ int i;
+ for(i = 0; i < 4; ++i)
+ {
+ cout << "validate_card_format(\"" << s[i] << "\") returned " << validate_card_format(s[i]) << endl;
+ }
+ for(i = 0; i < 4; ++i)
+ {
+ cout << "machine_readable_card_number(\"" << s[i] << "\") returned " << machine_readable_card_number(s[i]) << endl;
+ }
+ for(i = 0; i < 4; ++i)
+ {
+ cout << "human_readable_card_number(\"" << s[i] << "\") returned " << human_readable_card_number(s[i]) << endl;
+ }
+ return 0;
+}
+
+
+
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/example/snippets/icu_example.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/example/snippets/icu_example.cpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,182 @@
+/*
+ *
+ * Copyright (c) 2004
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE mfc_example.cpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: examples of using Boost.Regex with MFC and ATL string types.
+ */
+
+#include <boost/regex/config.hpp>
+
+#ifdef BOOST_HAS_ICU
+
+#include <boost/regex/icu.hpp>
+#include <iostream>
+#include <assert.h>
+
+//
+// Find out if *password* meets our password requirements,
+// as defined by the regular expression *requirements*.
+//
+bool is_valid_password(const UnicodeString& password, const UnicodeString& requirements)
+{
+ return boost::u32regex_match(password, boost::make_u32regex(requirements));
+}
+
+//
+// Extract filename part of a path from a UTF-8 encoded std::string and return the result
+// as another std::string:
+//
+std::string get_filename(const std::string& path)
+{
+ boost::u32regex r = boost::make_u32regex("(?:\\A|.*\\\\)([^\\\\]+)");
+ boost::smatch what;
+ if(boost::u32regex_match(path, what, r))
+ {
+ // extract $1 as a CString:
+ return what.str(1);
+ }
+ else
+ {
+ throw std::runtime_error("Invalid pathname");
+ }
+}
+
+UnicodeString extract_greek(const UnicodeString& text)
+{
+ // searches through some UTF-16 encoded text for a block encoded in Greek,
+ // this expression is imperfect, but the best we can do for now - searching
+ // for specific scripts is actually pretty hard to do right.
+ boost::u32regex r = boost::make_u32regex(L"[\\x{370}-\\x{3FF}](?:[^[:L*:]]|[\\x{370}-\\x{3FF}])*");
+ boost::u16match what;
+ if(boost::u32regex_search(text, what, r))
+ {
+ // extract $0 as a CString:
+ return UnicodeString(what[0].first, what.length(0));
+ }
+ else
+ {
+ throw std::runtime_error("No Greek found!");
+ }
+}
+
+void enumerate_currencies(const std::string& text)
+{
+ // enumerate and print all the currency symbols, along
+ // with any associated numeric values:
+ const char* re =
+ "([[:Sc:]][[:Cf:][:Cc:][:Z*:]]*)?"
+ "([[:Nd:]]+(?:[[:Po:]][[:Nd:]]+)?)?"
+ "(?(1)"
+ "|(?(2)"
+ "[[:Cf:][:Cc:][:Z*:]]*"
+ ")"
+ "[[:Sc:]]"
+ ")";
+ boost::u32regex r = boost::make_u32regex(re);
+ boost::u32regex_iterator<std::string::const_iterator> i(boost::make_u32regex_iterator(text, r)), j;
+ while(i != j)
+ {
+ std::cout << (*i)[0] << std::endl;
+ ++i;
+ }
+}
+
+void enumerate_currencies2(const std::string& text)
+{
+ // enumerate and print all the currency symbols, along
+ // with any associated numeric values:
+ const char* re =
+ "([[:Sc:]][[:Cf:][:Cc:][:Z*:]]*)?"
+ "([[:Nd:]]+(?:[[:Po:]][[:Nd:]]+)?)?"
+ "(?(1)"
+ "|(?(2)"
+ "[[:Cf:][:Cc:][:Z*:]]*"
+ ")"
+ "[[:Sc:]]"
+ ")";
+ boost::u32regex r = boost::make_u32regex(re);
+ boost::u32regex_token_iterator<std::string::const_iterator>
+ i(boost::make_u32regex_token_iterator(text, r, 1)), j;
+ while(i != j)
+ {
+ std::cout << *i << std::endl;
+ ++i;
+ }
+}
+
+
+//
+// Take a credit card number as a string of digits,
+// and reformat it as a human readable string with "-"
+// separating each group of four digit;,
+// note that we're mixing a UTF-32 regex, with a UTF-16
+// string and a UTF-8 format specifier, and it still all
+// just works:
+//
+const boost::u32regex e = boost::make_u32regex("\\A(\\d{3,4})[- ]?(\\d{4})[- ]?(\\d{4})[- ]?(\\d{4})\\z");
+const char* human_format = "$1-$2-$3-$4";
+
+UnicodeString human_readable_card_number(const UnicodeString& s)
+{
+ return boost::u32regex_replace(s, e, human_format);
+}
+
+
+int main()
+{
+ // password checks using u32regex_match:
+ UnicodeString pwd = "abcDEF---";
+ UnicodeString pwd_check = "(?=.*[[:lower:]])(?=.*[[:upper:]])(?=.*[[:punct:]]).{6,}";
+ bool b = is_valid_password(pwd, pwd_check);
+ assert(b);
+ pwd = "abcD-";
+ b = is_valid_password(pwd, pwd_check);
+ assert(!b);
+ // filename extraction with u32regex_match:
+ std::string file = "abc.hpp";
+ file = get_filename(file);
+ assert(file == "abc.hpp");
+ file = "c:\\a\\b\\c\\d.h";
+ file = get_filename(file);
+ assert(file == "d.h");
+
+ // Greek text extraction with u32regex_search:
+ UnicodeString text = L"Some where in \x0391\x039D\x0395\x0398\x0391 2004";
+ UnicodeString greek = extract_greek(text);
+ assert(greek == L"\x0391\x039D\x0395\x0398\x0391 2004");
+
+ // extract currency symbols with associated value, use iterator interface:
+ std::string text2 = " $100.23 or \xC2\xA3""198.12 "; // \xC2\xA3 is the £ sign encoded in UTF-8
+ enumerate_currencies(text2);
+ enumerate_currencies2(text2);
+
+ UnicodeString credit_card_number = "1234567887654321";
+ credit_card_number = human_readable_card_number(credit_card_number);
+ assert(credit_card_number == "1234-5678-8765-4321");
+ return 0;
+}
+
+#else
+
+#include <iostream>
+
+int main()
+{
+ std::cout << "<NOTE>ICU support not enabled, feature unavailable</NOTE>";
+ return 0;
+}
+
+
+#endif
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/example/snippets/mfc_example.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/example/snippets/mfc_example.cpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,162 @@
+/*
+ *
+ * Copyright (c) 2004
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE mfc_example.cpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: examples of using Boost.Regex with MFC and ATL string types.
+ */
+
+#ifdef TEST_MFC
+
+#include <boost/regex/mfc.hpp>
+#include <cstringt.h>
+#include <atlstr.h>
+#include <assert.h>
+#include <tchar.h>
+#include <iostream>
+
+#ifdef _UNICODE
+#define cout wcout
+#endif
+
+//
+// Find out if *password* meets our password requirements,
+// as defined by the regular expression *requirements*.
+//
+bool is_valid_password(const CString& password, const CString& requirements)
+{
+ return boost::regex_match(password, boost::make_regex(requirements));
+}
+
+//
+// Extract filename part of a path from a CString and return the result
+// as another CString:
+//
+CString get_filename(const CString& path)
+{
+ boost::tregex r(__T("(?:\\A|.*\\\\)([^\\\\]+)"));
+ boost::tmatch what;
+ if(boost::regex_match(path, what, r))
+ {
+ // extract $1 as a CString:
+ return CString(what[1].first, what.length(1));
+ }
+ else
+ {
+ throw std::runtime_error("Invalid pathname");
+ }
+}
+
+CString extract_postcode(const CString& address)
+{
+ // searches throw address for a UK postcode and returns the result,
+ // the expression used is by Phil A. on www.regxlib.com:
+ boost::tregex r(__T("^(([A-Z]{1,2}[0-9]{1,2})|([A-Z]{1,2}[0-9][A-Z]))\\s?([0-9][A-Z]{2})$"));
+ boost::tmatch what;
+ if(boost::regex_search(address, what, r))
+ {
+ // extract $0 as a CString:
+ return CString(what[0].first, what.length());
+ }
+ else
+ {
+ throw std::runtime_error("No postcode found");
+ }
+}
+
+void enumerate_links(const CString& html)
+{
+ // enumerate and print all the <a> links in some HTML text,
+ // the expression used is by Andew Lee on www.regxlib.com:
+ boost::tregex r(__T("href=[\"\']((http:\\/\\/|\\.\\/|\\/)?\\w+(\\.\\w+)*(\\/\\w+(\\.\\w+)?)*(\\/|\\?\\w*=\\w*(&\\w*=\\w*)*)?)[\"\']"));
+ boost::tregex_iterator i(boost::make_regex_iterator(html, r)), j;
+ while(i != j)
+ {
+ std::cout << (*i)[1] << std::endl;
+ ++i;
+ }
+}
+
+void enumerate_links2(const CString& html)
+{
+ // enumerate and print all the <a> links in some HTML text,
+ // the expression used is by Andew Lee on www.regxlib.com:
+ boost::tregex r(__T("href=[\"\']((http:\\/\\/|\\.\\/|\\/)?\\w+(\\.\\w+)*(\\/\\w+(\\.\\w+)?)*(\\/|\\?\\w*=\\w*(&\\w*=\\w*)*)?)[\"\']"));
+ boost::tregex_token_iterator i(boost::make_regex_token_iterator(html, r, 1)), j;
+ while(i != j)
+ {
+ std::cout << *i << std::endl;
+ ++i;
+ }
+}
+
+//
+// Take a credit card number as a string of digits,
+// and reformat it as a human readable string with "-"
+// separating each group of four digits:
+//
+const boost::tregex e(__T("\\A(\\d{3,4})[- ]?(\\d{4})[- ]?(\\d{4})[- ]?(\\d{4})\\z"));
+const CString human_format = __T("$1-$2-$3-$4");
+
+CString human_readable_card_number(const CString& s)
+{
+ return boost::regex_replace(s, e, human_format);
+}
+
+
+int main()
+{
+ // password checks using regex_match:
+ CString pwd = "abcDEF---";
+ CString pwd_check = "(?=.*[[:lower:]])(?=.*[[:upper:]])(?=.*[[:punct:]]).{6,}";
+ bool b = is_valid_password(pwd, pwd_check);
+ assert(b);
+ pwd = "abcD-";
+ b = is_valid_password(pwd, pwd_check);
+ assert(!b);
+
+ // filename extraction with regex_match:
+ CString file = "abc.hpp";
+ file = get_filename(file);
+ assert(file == "abc.hpp");
+ file = "c:\\a\\b\\c\\d.h";
+ file = get_filename(file);
+ assert(file == "d.h");
+
+ // postcode extraction with regex_search:
+ CString address = "Joe Bloke, 001 Somestreet, Somewhere,\nPL2 8AB";
+ CString postcode = extract_postcode(address);
+ assert(postcode = "PL2 8NV");
+
+ // html link extraction with regex_iterator:
+ CString text = "<dt><a href=\"syntax_perl.html\">Perl Regular Expressions</a></dt><dt><a href=\"syntax_extended.html\">POSIX-Extended Regular Expressions</a></dt><dt><a href=\"syntax_basic.html\">POSIX-Basic Regular Expressions</a></dt>";
+ enumerate_links(text);
+ enumerate_links2(text);
+
+ CString credit_card_number = "1234567887654321";
+ credit_card_number = human_readable_card_number(credit_card_number);
+ assert(credit_card_number == "1234-5678-8765-4321");
+ return 0;
+}
+
+#else
+
+#include <iostream>
+
+int main()
+{
+ std::cout << "<NOTE>MFC support not enabled, feature unavailable</NOTE>";
+ return 0;
+}
+
+#endif

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/example/snippets/partial_regex_grep.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/example/snippets/partial_regex_grep.cpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,109 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE partial_regex_grep.cpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Search example using partial matches.
+ */
+
+#include <iostream>
+#include <fstream>
+#include <sstream>
+#include <string>
+#include <cstring>
+#include <boost/regex.hpp>
+
+#ifdef BOOST_NO_STDC_NAMESPACE
+namespace std{ using ::memmove; }
+#endif
+
+// match some kind of html tag:
+boost::regex e("<[^>]*>");
+// count how many:
+unsigned int tags = 0;
+// saved position of partial match:
+const char* next_pos = 0;
+
+bool grep_callback(const boost::match_results<const char*>& m)
+{
+ if(m[0].matched == false)
+ {
+ // save position and return:
+ next_pos = m[0].first;
+ }
+ else
+ ++tags;
+ return true;
+}
+
+void search(std::istream& is)
+{
+ char buf[4096];
+ next_pos = buf + sizeof(buf);
+ bool have_more = true;
+ while(have_more)
+ {
+ // how much do we copy forward from last try:
+ unsigned leftover = (buf + sizeof(buf)) - next_pos;
+ // and how much is left to fill:
+ unsigned size = next_pos - buf;
+ // copy forward whatever we have left:
+ std::memmove(buf, next_pos, leftover);
+ // fill the rest from the stream:
+ is.read(buf + leftover, size);
+ unsigned read = is.gcount();
+ // check to see if we've run out of text:
+ have_more = read == size;
+ // reset next_pos:
+ next_pos = buf + sizeof(buf);
+ // and then grep:
+ boost::regex_grep<bool(*)(const boost::cmatch&), const char*>(grep_callback,
+ static_cast<const char*>(buf),
+ static_cast<const char*>(buf + read + leftover),
+ e,
+ boost::match_default | boost::match_partial);
+ }
+}
+
+int main(int argc, char* argv[])
+{
+ if(argc > 1)
+ {
+ for(int i = 1; i < argc; ++i)
+ {
+ std::ifstream fs(argv[i]);
+ if(fs.bad()) continue;
+ search(fs);
+ fs.close();
+ }
+ }
+ else
+ {
+ std::string one("<META NAME=\"keywords\" CONTENT=\"regex++, regular expressions, regular expression library, C++\">");
+ std::string what;
+ while(what.size() < 10000)
+ {
+ what.append(one);
+ what.append(13, ' ');
+ }
+ std::stringstream ss;
+ ss.str(what);
+ search(ss);
+ }
+ std::cout << "total tag count was " << tags << std::endl;
+ return 0;
+}
+
+
+
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/example/snippets/partial_regex_match.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/example/snippets/partial_regex_match.cpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,69 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE partial_regex_match.cpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: regex_match example using partial matches.
+ */
+
+#include <string>
+#include <iostream>
+#include <boost/regex.hpp>
+
+boost::regex e("(\\d{3,4})[- ]?(\\d{4})[- ]?(\\d{4})[- ]?(\\d{4})");
+
+bool is_possible_card_number(const std::string& input)
+{
+ //
+ // return false for partial match, true for full match, or throw for
+ // impossible match based on what we have so far...
+ boost::match_results<std::string::const_iterator> what;
+ if(0 == boost::regex_match(input, what, e, boost::match_default | boost::match_partial))
+ {
+ // the input so far could not possibly be valid so reject it:
+ throw std::runtime_error("Invalid data entered - this could not possibly be a valid card number");
+ }
+ // OK so far so good, but have we finished?
+ if(what[0].matched)
+ {
+ // excellent, we have a result:
+ return true;
+ }
+ // what we have so far is only a partial match...
+ return false;
+}
+
+int main(int argc, char* argv[])
+{
+ try{
+ std::string input;
+ if(argc > 1)
+ input = argv[1];
+ else
+ std::cin >> input;
+ if(is_possible_card_number(input))
+ {
+ std::cout << "Matched OK..." << std::endl;
+ }
+ else
+ std::cout << "Got a partial match..." << std::endl;
+ }
+ catch(const std::exception& e)
+ {
+ std::cout << e.what() << std::endl;
+ }
+ return 0;
+}
+
+
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/example/snippets/regex_grep_example_1.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/example/snippets/regex_grep_example_1.cpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,129 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE regex_grep_example_1.cpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: regex_grep example 1: searches a cpp file for class definitions.
+ */
+
+#include <string>
+#include <map>
+#include <boost/regex.hpp>
+
+// purpose:
+// takes the contents of a file in the form of a string
+// and searches for all the C++ class definitions, storing
+// their locations in a map of strings/int's
+
+typedef std::map<std::string, std::string::difference_type, std::less<std::string> > map_type;
+
+const char* re =
+ // possibly leading whitespace:
+ "^[[:space:]]*"
+ // possible template declaration:
+ "(template[[:space:]]*<[^;:{]+>[[:space:]]*)?"
+ // class or struct:
+ "(class|struct)[[:space:]]*"
+ // leading declspec macros etc:
+ "("
+ "\\<\\w+\\>"
+ "("
+ "[[:blank:]]*\\([^)]*\\)"
+ ")?"
+ "[[:space:]]*"
+ ")*"
+ // the class name
+ "(\\<\\w*\\>)[[:space:]]*"
+ // template specialisation parameters
+ "(<[^;:{]+>)?[[:space:]]*"
+ // terminate in { or :
+ "(\\{|:[^;\\{()]*\\{)";
+
+boost::regex expression(re);
+
+class IndexClassesPred
+{
+ map_type& m;
+ std::string::const_iterator base;
+public:
+ IndexClassesPred(map_type& a, std::string::const_iterator b) : m(a), base(b) {}
+ bool operator()(const boost::match_results<std::string::const_iterator>& what)
+ {
+ // what[0] contains the whole string
+ // what[5] contains the class name.
+ // what[6] contains the template specialisation if any.
+ // add class name and position to map:
+ m[std::string(what[5].first, what[5].second) + std::string(what[6].first, what[6].second)] =
+ what[5].first - base;
+ return true;
+ }
+};
+
+void IndexClasses(map_type& m, const std::string& file)
+{
+ std::string::const_iterator start, end;
+ start = file.begin();
+ end = file.end();
+ boost::regex_grep(IndexClassesPred(m, start), start, end, expression);
+}
+
+
+#include <fstream>
+#include <iostream>
+
+using namespace std;
+
+void load_file(std::string& s, std::istream& is)
+{
+ s.erase();
+ if(is.bad()) return;
+ s.reserve(is.rdbuf()->in_avail());
+ char c;
+ while(is.get(c))
+ {
+ if(s.capacity() == s.size())
+ s.reserve(s.capacity() * 3);
+ s.append(1, c);
+ }
+}
+
+int main(int argc, const char** argv)
+{
+ std::string text;
+ for(int i = 1; i < argc; ++i)
+ {
+ cout << "Processing file " << argv[i] << endl;
+ map_type m;
+ std::ifstream fs(argv[i]);
+ load_file(text, fs);
+ fs.close();
+ IndexClasses(m, text);
+ cout << m.size() << " matches found" << endl;
+ map_type::iterator c, d;
+ c = m.begin();
+ d = m.end();
+ while(c != d)
+ {
+ cout << "class \"" << (*c).first << "\" found at index: " << (*c).second << endl;
+ ++c;
+ }
+ }
+ return 0;
+}
+
+
+
+
+
+
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/example/snippets/regex_grep_example_2.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/example/snippets/regex_grep_example_2.cpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,122 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE regex_grep_example_2.cpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: regex_grep example 2: searches a cpp file for class definitions,
+ * using a global callback function.
+ */
+
+#include <string>
+#include <map>
+#include <boost/regex.hpp>
+
+// purpose:
+// takes the contents of a file in the form of a string
+// and searches for all the C++ class definitions, storing
+// their locations in a map of strings/int's
+
+typedef std::map<std::string, std::string::difference_type, std::less<std::string> > map_type;
+
+const char* re =
+ // possibly leading whitespace:
+ "^[[:space:]]*"
+ // possible template declaration:
+ "(template[[:space:]]*<[^;:{]+>[[:space:]]*)?"
+ // class or struct:
+ "(class|struct)[[:space:]]*"
+ // leading declspec macros etc:
+ "("
+ "\\<\\w+\\>"
+ "("
+ "[[:blank:]]*\\([^)]*\\)"
+ ")?"
+ "[[:space:]]*"
+ ")*"
+ // the class name
+ "(\\<\\w*\\>)[[:space:]]*"
+ // template specialisation parameters
+ "(<[^;:{]+>)?[[:space:]]*"
+ // terminate in { or :
+ "(\\{|:[^;\\{()]*\\{)";
+
+
+boost::regex expression(re);
+map_type class_index;
+std::string::const_iterator base;
+
+bool grep_callback(const boost::match_results<std::string::const_iterator>& what)
+{
+ // what[0] contains the whole string
+ // what[5] contains the class name.
+ // what[6] contains the template specialisation if any.
+ // add class name and position to map:
+ class_index[std::string(what[5].first, what[5].second) + std::string(what[6].first, what[6].second)] =
+ what[5].first - base;
+ return true;
+}
+
+void IndexClasses(const std::string& file)
+{
+ std::string::const_iterator start, end;
+ start = file.begin();
+ end = file.end();
+ base = start;
+ boost::regex_grep(grep_callback, start, end, expression);
+}
+
+#include <fstream>
+#include <iostream>
+
+using namespace std;
+
+void load_file(std::string& s, std::istream& is)
+{
+ s.erase();
+ if(is.bad()) return;
+ s.reserve(is.rdbuf()->in_avail());
+ char c;
+ while(is.get(c))
+ {
+ if(s.capacity() == s.size())
+ s.reserve(s.capacity() * 3);
+ s.append(1, c);
+ }
+}
+
+int main(int argc, const char** argv)
+{
+ std::string text;
+ for(int i = 1; i < argc; ++i)
+ {
+ cout << "Processing file " << argv[i] << endl;
+ std::ifstream fs(argv[i]);
+ load_file(text, fs);
+ fs.close();
+ IndexClasses(text);
+ cout << class_index.size() << " matches found" << endl;
+ map_type::iterator c, d;
+ c = class_index.begin();
+ d = class_index.end();
+ while(c != d)
+ {
+ cout << "class \"" << (*c).first << "\" found at index: " << (*c).second << endl;
+ ++c;
+ }
+ class_index.erase(class_index.begin(), class_index.end());
+ }
+ return 0;
+}
+
+
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/example/snippets/regex_grep_example_3.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/example/snippets/regex_grep_example_3.cpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,148 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE regex_grep_example_3.cpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: regex_grep example 3: searches a cpp file for class definitions,
+ * using a bound member function callback.
+ */
+
+#include <string>
+#include <map>
+#include <boost/regex.hpp>
+#include <functional>
+#include <boost/detail/workaround.hpp>
+
+// purpose:
+// takes the contents of a file in the form of a string
+// and searches for all the C++ class definitions, storing
+// their locations in a map of strings/int's
+
+typedef std::map<std::string, std::string::difference_type, std::less<std::string> > map_type;
+
+const char* re =
+ // possibly leading whitespace:
+ "^[[:space:]]*"
+ // possible template declaration:
+ "(template[[:space:]]*<[^;:{]+>[[:space:]]*)?"
+ // class or struct:
+ "(class|struct)[[:space:]]*"
+ // leading declspec macros etc:
+ "("
+ "\\<\\w+\\>"
+ "("
+ "[[:blank:]]*\\([^)]*\\)"
+ ")?"
+ "[[:space:]]*"
+ ")*"
+ // the class name
+ "(\\<\\w*\\>)[[:space:]]*"
+ // template specialisation parameters
+ "(<[^;:{]+>)?[[:space:]]*"
+ // terminate in { or :
+ "(\\{|:[^;\\{()]*\\{)";
+
+
+class class_index
+{
+ boost::regex expression;
+ map_type index;
+ std::string::const_iterator base;
+
+ bool grep_callback(boost::match_results<std::string::const_iterator> what);
+public:
+ map_type& get_map() { return index; }
+ void IndexClasses(const std::string& file);
+ class_index()
+ : expression(re) {}
+};
+
+bool class_index::grep_callback(boost::match_results<std::string::const_iterator> what)
+{
+ // what[0] contains the whole string
+ // what[5] contains the class name.
+ // what[6] contains the template specialisation if any.
+ // add class name and position to map:
+ index[std::string(what[5].first, what[5].second) + std::string(what[6].first, what[6].second)] =
+ what[5].first - base;
+ return true;
+}
+
+void class_index::IndexClasses(const std::string& file)
+{
+ std::string::const_iterator start, end;
+ start = file.begin();
+ end = file.end();
+ base = start;
+#if BOOST_WORKAROUND(_MSC_VER, < 1300) && !defined(_STLP_VERSION)
+ boost::regex_grep(std::bind1st(std::mem_fun1(&class_index::grep_callback), this),
+ start,
+ end,
+ expression);
+#else
+ boost::regex_grep(std::bind1st(std::mem_fun(&class_index::grep_callback), this),
+ start,
+ end,
+ expression);
+#endif
+}
+
+
+#include <fstream>
+#include <iostream>
+
+using namespace std;
+
+void load_file(std::string& s, std::istream& is)
+{
+ s.erase();
+ if(is.bad()) return;
+ s.reserve(is.rdbuf()->in_avail());
+ char c;
+ while(is.get(c))
+ {
+ if(s.capacity() == s.size())
+ s.reserve(s.capacity() * 3);
+ s.append(1, c);
+ }
+}
+
+int main(int argc, const char** argv)
+{
+ std::string text;
+ for(int i = 1; i < argc; ++i)
+ {
+ cout << "Processing file " << argv[i] << endl;
+ std::ifstream fs(argv[i]);
+ load_file(text, fs);
+ fs.close();
+ class_index idx;
+ idx.IndexClasses(text);
+ cout << idx.get_map().size() << " matches found" << endl;
+ map_type::iterator c, d;
+ c = idx.get_map().begin();
+ d = idx.get_map().end();
+ while(c != d)
+ {
+ cout << "class \"" << (*c).first << "\" found at index: " << (*c).second << endl;
+ ++c;
+ }
+ }
+ return 0;
+}
+
+
+
+
+
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/example/snippets/regex_grep_example_4.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/example/snippets/regex_grep_example_4.cpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,155 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE regex_grep_example_4.cpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: regex_grep example 4: searches a cpp file for class definitions,
+ * using a C++ Builder closure as a callback.
+ */
+
+#ifdef __BORLANDC__
+
+#include <string>
+#include <map>
+#include <boost/regex.hpp>
+#include <functional>
+
+// purpose:
+// takes the contents of a file in the form of a string
+// and searches for all the C++ class definitions, storing
+// their locations in a map of strings/int's
+
+typedef std::map<std::string, int, std::less<std::string> > map_type;
+
+const char* re =
+ // possibly leading whitespace:
+ "^[[:space:]]*"
+ // possible template declaration:
+ "(template[[:space:]]*<[^;:{]+>[[:space:]]*)?"
+ // class or struct:
+ "(class|struct)[[:space:]]*"
+ // leading declspec macros etc:
+ "("
+ "\\<\\w+\\>"
+ "("
+ "[[:blank:]]*\\([^)]*\\)"
+ ")?"
+ "[[:space:]]*"
+ ")*"
+ // the class name
+ "(\\<\\w*\\>)[[:space:]]*"
+ // template specialisation parameters
+ "(<[^;:{]+>)?[[:space:]]*"
+ // terminate in { or :
+ "(\\{|:[^;\\{()]*\\{)";
+
+
+class class_index
+{
+ boost::regex expression;
+ map_type index;
+ std::string::const_iterator base;
+ typedef boost::match_results<std::string::const_iterator> arg_type;
+
+ bool grep_callback(const boost::match_results<std::string::const_iterator>& what);
+public:
+ map_type& get_map() { return index; }
+ typedef bool (__closure* grep_callback_type)(const arg_type&);
+ void IndexClasses(const std::string& file);
+ class_index()
+ : index(),
+ expression(re)
+ {}
+};
+
+bool class_index::grep_callback(const boost::match_results<std::string::const_iterator>& what)
+{
+ // what[0] contains the whole string
+ // what[5] contains the class name.
+ // what[6] contains the template specialisation if any.
+ // add class name and position to map:
+ index[std::string(what[5].first, what[5].second) + std::string(what[6].first, what[6].second)] =
+ what[5].first - base;
+ return true;
+}
+
+void class_index::IndexClasses(const std::string& file)
+{
+ std::string::const_iterator start, end;
+ start = file.begin();
+ end = file.end();
+ base = start;
+ class_index::grep_callback_type cl = &(this->grep_callback);
+ boost::regex_grep(cl,
+ start,
+ end,
+ expression);
+}
+
+
+#include <fstream>
+#include <iostream>
+
+using namespace std;
+
+void load_file(std::string& s, std::istream& is)
+{
+ s.erase();
+ if(is.bad()) return;
+ s.reserve(is.rdbuf()->in_avail());
+ char c;
+ while(is.get(c))
+ {
+ if(s.capacity() == s.size())
+ s.reserve(s.capacity() * 3);
+ s.append(1, c);
+ }
+}
+
+int main(int argc, const char** argv)
+{
+ std::string text;
+ for(int i = 1; i < argc; ++i)
+ {
+ cout << "Processing file " << argv[i] << endl;
+ std::ifstream fs(argv[i]);
+ load_file(text, fs);
+ fs.close();
+ class_index i;
+ i.IndexClasses(text);
+ cout << i.get_map().size() << " matches found" << endl;
+ map_type::iterator c, d;
+ c = i.get_map().begin();
+ d = i.get_map().end();
+ while(c != d)
+ {
+ cout << "class \"" << (*c).first << "\" found at index: " << (*c).second << endl;
+ ++c;
+ }
+ }
+ return 0;
+}
+
+#else // __BORLANDC__
+
+int main()
+{
+ return 0;
+}
+
+
+#endif
+
+
+
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/example/snippets/regex_iterator_example.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/example/snippets/regex_iterator_example.cpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,114 @@
+/*
+ *
+ * Copyright (c) 2003
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE regex_iterator_example_2.cpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: regex_iterator example 2: searches a cpp file for class definitions,
+ * using global data.
+ */
+
+#include <string>
+#include <map>
+#include <fstream>
+#include <iostream>
+#include <boost/regex.hpp>
+
+using namespace std;
+
+// purpose:
+// takes the contents of a file in the form of a string
+// and searches for all the C++ class definitions, storing
+// their locations in a map of strings/int's
+
+typedef std::map<std::string, std::string::difference_type, std::less<std::string> > map_type;
+
+const char* re =
+ // possibly leading whitespace:
+ "^[[:space:]]*"
+ // possible template declaration:
+ "(template[[:space:]]*<[^;:{]+>[[:space:]]*)?"
+ // class or struct:
+ "(class|struct)[[:space:]]*"
+ // leading declspec macros etc:
+ "("
+ "\\<\\w+\\>"
+ "("
+ "[[:blank:]]*\\([^)]*\\)"
+ ")?"
+ "[[:space:]]*"
+ ")*"
+ // the class name
+ "(\\<\\w*\\>)[[:space:]]*"
+ // template specialisation parameters
+ "(<[^;:{]+>)?[[:space:]]*"
+ // terminate in { or :
+ "(\\{|:[^;\\{()]*\\{)";
+
+
+boost::regex expression(re);
+map_type class_index;
+
+bool regex_callback(const boost::match_results<std::string::const_iterator>& what)
+{
+ // what[0] contains the whole string
+ // what[5] contains the class name.
+ // what[6] contains the template specialisation if any.
+ // add class name and position to map:
+ class_index[what[5].str() + what[6].str()] = what.position(5);
+ return true;
+}
+
+void load_file(std::string& s, std::istream& is)
+{
+ s.erase();
+ if(is.bad()) return;
+ s.reserve(is.rdbuf()->in_avail());
+ char c;
+ while(is.get(c))
+ {
+ if(s.capacity() == s.size())
+ s.reserve(s.capacity() * 3);
+ s.append(1, c);
+ }
+}
+
+int main(int argc, const char** argv)
+{
+ std::string text;
+ for(int i = 1; i < argc; ++i)
+ {
+ cout << "Processing file " << argv[i] << endl;
+ std::ifstream fs(argv[i]);
+ load_file(text, fs);
+ fs.close();
+ // construct our iterators:
+ boost::sregex_iterator m1(text.begin(), text.end(), expression);
+ boost::sregex_iterator m2;
+ std::for_each(m1, m2, &regex_callback);
+ // copy results:
+ cout << class_index.size() << " matches found" << endl;
+ map_type::iterator c, d;
+ c = class_index.begin();
+ d = class_index.end();
+ while(c != d)
+ {
+ cout << "class \"" << (*c).first << "\" found at index: " << (*c).second << endl;
+ ++c;
+ }
+ class_index.erase(class_index.begin(), class_index.end());
+ }
+ return 0;
+}
+
+
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/example/snippets/regex_match_example.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/example/snippets/regex_match_example.cpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,105 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE regex_match_example.cpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: ftp based regex_match example.
+ */
+
+#include <cstdlib>
+#include <stdlib.h>
+#include <boost/regex.hpp>
+#include <string>
+#include <iostream>
+
+using namespace std;
+using namespace boost;
+
+regex expression("^([0-9]+)(\\-| |$)(.*)$");
+
+// process_ftp:
+// on success returns the ftp response code, and fills
+// msg with the ftp response message.
+int process_ftp(const char* response, std::string* msg)
+{
+ cmatch what;
+ if(regex_match(response, what, expression))
+ {
+ // what[0] contains the whole string
+ // what[1] contains the response code
+ // what[2] contains the separator character
+ // what[3] contains the text message.
+ if(msg)
+ msg->assign(what[3].first, what[3].second);
+ return ::atoi(what[1].first);
+ }
+ // failure did not match
+ if(msg)
+ msg->erase();
+ return -1;
+}
+
+#if defined(BOOST_MSVC) || (defined(__BORLANDC__) && (__BORLANDC__ == 0x550))
+//
+// problem with std::getline under MSVC6sp3
+istream& getline(istream& is, std::string& s)
+{
+ s.erase();
+ char c = is.get();
+ while(c != '\n')
+ {
+ s.append(1, c);
+ c = is.get();
+ }
+ return is;
+}
+#endif
+
+int main(int argc)
+{
+ std::string in, out;
+ do
+ {
+ if(argc == 1)
+ {
+ cout << "enter test string" << endl;
+ getline(cin, in);
+ if(in == "quit")
+ break;
+ }
+ else
+ in = "100 this is an ftp message text";
+ int result;
+ result = process_ftp(in.c_str(), &out);
+ if(result != -1)
+ {
+ cout << "Match found:" << endl;
+ cout << "Response code: " << result << endl;
+ cout << "Message text: " << out << endl;
+ }
+ else
+ {
+ cout << "Match not found" << endl;
+ }
+ cout << endl;
+ } while(argc == 1);
+ return 0;
+}
+
+
+
+
+
+
+
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/example/snippets/regex_merge_example.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/example/snippets/regex_merge_example.cpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,137 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE regex_merge_example.cpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: regex_merge example:
+ * converts a C++ file to syntax highlighted HTML.
+ */
+
+#include <iostream>
+#include <fstream>
+#include <sstream>
+#include <string>
+#include <iterator>
+#include <boost/regex.hpp>
+#include <fstream>
+#include <iostream>
+
+// purpose:
+// takes the contents of a file and transform to
+// syntax highlighted code in html format
+
+boost::regex e1, e2;
+extern const char* expression_text;
+extern const char* format_string;
+extern const char* pre_expression;
+extern const char* pre_format;
+extern const char* header_text;
+extern const char* footer_text;
+
+void load_file(std::string& s, std::istream& is)
+{
+ s.erase();
+ if(is.bad()) return;
+ s.reserve(is.rdbuf()->in_avail());
+ char c;
+ while(is.get(c))
+ {
+ if(s.capacity() == s.size())
+ s.reserve(s.capacity() * 3);
+ s.append(1, c);
+ }
+}
+
+int main(int argc, const char** argv)
+{
+ try{
+ e1.assign(expression_text);
+ e2.assign(pre_expression);
+ for(int i = 1; i < argc; ++i)
+ {
+ std::cout << "Processing file " << argv[i] << std::endl;
+ std::ifstream fs(argv[i]);
+ std::string in;
+ load_file(in, fs);
+ fs.close();
+ std::string out_name = std::string(argv[i]) + std::string(".htm");
+ std::ofstream os(out_name.c_str());
+ os << header_text;
+ // strip '<' and '>' first by outputting to a
+ // temporary string stream
+ std::ostringstream t(std::ios::out | std::ios::binary);
+ std::ostream_iterator<char> oi(t);
+ boost::regex_merge(oi, in.begin(), in.end(), e2, pre_format, boost::match_default | boost::format_all);
+ // then output to final output stream
+ // adding syntax highlighting:
+ std::string s(t.str());
+ std::ostream_iterator<char> out(os);
+ boost::regex_merge(out, s.begin(), s.end(), e1, format_string, boost::match_default | boost::format_all);
+ os << footer_text;
+ os.close();
+ }
+ }
+ catch(...)
+ { return -1; }
+ return 0;
+}
+
+extern const char* pre_expression = "(<)|(>)|\\r";
+extern const char* pre_format = "(?1&lt;)(?2&gt;)";
+
+
+const char* expression_text = // preprocessor directives: index 1
+ "(^[[:blank:]]*#(?:[^\\\\\\n]|\\\\[^\\n[:punct:][:word:]]*[\\n[:punct:][:word:]])*)|"
+ // comment: index 2
+ "(//[^\\n]*|/\\*.*?\\*/)|"
+ // literals: index 3
+ "\\<([+-]?(?:(?:0x[[:xdigit:]]+)|(?:(?:[[:digit:]]*\\.)?[[:digit:]]+(?:[eE][+-]?[[:digit:]]+)?))u?(?:(?:int(?:8|16|32|64))|L)?)\\>|"
+ // string literals: index 4
+ "('(?:[^\\\\']|\\\\.)*'|\"(?:[^\\\\\"]|\\\\.)*\")|"
+ // keywords: index 5
+ "\\<(__asm|__cdecl|__declspec|__export|__far16|__fastcall|__fortran|__import"
+ "|__pascal|__rtti|__stdcall|_asm|_cdecl|__except|_export|_far16|_fastcall"
+ "|__finally|_fortran|_import|_pascal|_stdcall|__thread|__try|asm|auto|bool"
+ "|break|case|catch|cdecl|char|class|const|const_cast|continue|default|delete"
+ "|do|double|dynamic_cast|else|enum|explicit|extern|false|float|for|friend|goto"
+ "|if|inline|int|long|mutable|namespace|new|operator|pascal|private|protected"
+ "|public|register|reinterpret_cast|return|short|signed|sizeof|static|static_cast"
+ "|struct|switch|template|this|throw|true|try|typedef|typeid|typename|union|unsigned"
+ "|using|virtual|void|volatile|wchar_t|while)\\>"
+ ;
+
+const char* format_string = "(?1<font color=\"#008040\">$&</font>)"
+ "(?2<I><font color=\"#000080\">$&</font></I>)"
+ "(?3<font color=\"#0000A0\">$&</font>)"
+ "(?4<font color=\"#0000FF\">$&</font>)"
+ "(?5<B>$&</B>)";
+
+const char* header_text = "<HTML>\n<HEAD>\n"
+ "<TITLE>Auto-generated html formated source</TITLE>\n"
+ "<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=windows-1252\">\n"
+ "</HEAD>\n"
+ "<BODY LINK=\"#0000ff\" VLINK=\"#800080\" BGCOLOR=\"#ffffff\">\n"
+ "<P> </P>\n<PRE>";
+
+const char* footer_text = "</PRE>\n</BODY>\n\n";
+
+
+
+
+
+
+
+
+
+
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/example/snippets/regex_replace_example.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/example/snippets/regex_replace_example.cpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,138 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE regex_replace_example.cpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: regex_replace example:
+ * converts a C++ file to syntax highlighted HTML.
+ */
+
+#include <iostream>
+#include <fstream>
+#include <sstream>
+#include <string>
+#include <iterator>
+#include <boost/regex.hpp>
+#include <fstream>
+#include <iostream>
+
+// purpose:
+// takes the contents of a file and transform to
+// syntax highlighted code in html format
+
+boost::regex e1, e2;
+extern const char* expression_text;
+extern const char* format_string;
+extern const char* pre_expression;
+extern const char* pre_format;
+extern const char* header_text;
+extern const char* footer_text;
+
+void load_file(std::string& s, std::istream& is)
+{
+ s.erase();
+ if(is.bad()) return;
+ s.reserve(is.rdbuf()->in_avail());
+ char c;
+ while(is.get(c))
+ {
+ if(s.capacity() == s.size())
+ s.reserve(s.capacity() * 3);
+ s.append(1, c);
+ }
+}
+
+int main(int argc, const char** argv)
+{
+ try{
+ e1.assign(expression_text);
+ e2.assign(pre_expression);
+ for(int i = 1; i < argc; ++i)
+ {
+ std::cout << "Processing file " << argv[i] << std::endl;
+ std::ifstream fs(argv[i]);
+ std::string in;
+ load_file(in, fs);
+ fs.close();
+ std::string out_name = std::string(argv[i]) + std::string(".htm");
+ std::ofstream os(out_name.c_str());
+ os << header_text;
+ // strip '<' and '>' first by outputting to a
+ // temporary string stream
+ std::ostringstream t(std::ios::out | std::ios::binary);
+ std::ostream_iterator<char> oi(t);
+ boost::regex_replace(oi, in.begin(), in.end(), e2, pre_format, boost::match_default | boost::format_all);
+ // then output to final output stream
+ // adding syntax highlighting:
+ std::string s(t.str());
+ std::ostream_iterator<char> out(os);
+ boost::regex_replace(out, s.begin(), s.end(), e1, format_string, boost::match_default | boost::format_all);
+ os << footer_text;
+ os.close();
+ }
+ }
+ catch(...)
+ { return -1; }
+ return 0;
+}
+
+extern const char* pre_expression = "(<)|(>)|(&)|\\r";
+extern const char* pre_format = "(?1&lt;)(?2&gt;)(?3&amp;)";
+
+
+const char* expression_text = // preprocessor directives: index 1
+ "(^[[:blank:]]*#(?:[^\\\\\\n]|\\\\[^\\n[:punct:][:word:]]*[\\n[:punct:][:word:]])*)|"
+ // comment: index 2
+ "(//[^\\n]*|/\\*.*?\\*/)|"
+ // literals: index 3
+ "\\<([+-]?(?:(?:0x[[:xdigit:]]+)|(?:(?:[[:digit:]]*\\.)?[[:digit:]]+(?:[eE][+-]?[[:digit:]]+)?))u?(?:(?:int(?:8|16|32|64))|L)?)\\>|"
+ // string literals: index 4
+ "('(?:[^\\\\']|\\\\.)*'|\"(?:[^\\\\\"]|\\\\.)*\")|"
+ // keywords: index 5
+ "\\<(__asm|__cdecl|__declspec|__export|__far16|__fastcall|__fortran|__import"
+ "|__pascal|__rtti|__stdcall|_asm|_cdecl|__except|_export|_far16|_fastcall"
+ "|__finally|_fortran|_import|_pascal|_stdcall|__thread|__try|asm|auto|bool"
+ "|break|case|catch|cdecl|char|class|const|const_cast|continue|default|delete"
+ "|do|double|dynamic_cast|else|enum|explicit|extern|false|float|for|friend|goto"
+ "|if|inline|int|long|mutable|namespace|new|operator|pascal|private|protected"
+ "|public|register|reinterpret_cast|return|short|signed|sizeof|static|static_cast"
+ "|struct|switch|template|this|throw|true|try|typedef|typeid|typename|union|unsigned"
+ "|using|virtual|void|volatile|wchar_t|while)\\>"
+ ;
+
+const char* format_string = "(?1<font color=\"#008040\">$&</font>)"
+ "(?2<I><font color=\"#000080\">$&</font></I>)"
+ "(?3<font color=\"#0000A0\">$&</font>)"
+ "(?4<font color=\"#0000FF\">$&</font>)"
+ "(?5<B>$&</B>)";
+
+const char* header_text = "<HTML>\n<HEAD>\n"
+ "<TITLE>Auto-generated html formated source</TITLE>\n"
+ "<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=windows-1252\">\n"
+ "</HEAD>\n"
+ "<BODY LINK=\"#0000ff\" VLINK=\"#800080\" BGCOLOR=\"#ffffff\">\n"
+ "<P> </P>\n<PRE>";
+
+const char* footer_text = "</PRE>\n</BODY>\n\n";
+
+
+
+
+
+
+
+
+
+
+
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/example/snippets/regex_search_example.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/example/snippets/regex_search_example.cpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,129 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE regex_search_example.cpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: regex_search example: searches a cpp file for class definitions.
+ */
+
+#include <string>
+#include <map>
+#include <boost/regex.hpp>
+
+// purpose:
+// takes the contents of a file in the form of a string
+// and searches for all the C++ class definitions, storing
+// their locations in a map of strings/int's
+
+typedef std::map<std::string, std::string::difference_type, std::less<std::string> > map_type;
+
+const char* re =
+ // possibly leading whitespace:
+ "^[[:space:]]*"
+ // possible template declaration:
+ "(template[[:space:]]*<[^;:{]+>[[:space:]]*)?"
+ // class or struct:
+ "(class|struct)[[:space:]]*"
+ // leading declspec macros etc:
+ "("
+ "\\<\\w+\\>"
+ "("
+ "[[:blank:]]*\\([^)]*\\)"
+ ")?"
+ "[[:space:]]*"
+ ")*"
+ // the class name
+ "(\\<\\w*\\>)[[:space:]]*"
+ // template specialisation parameters
+ "(<[^;:{]+>)?[[:space:]]*"
+ // terminate in { or :
+ "(\\{|:[^;\\{()]*\\{)";
+
+
+boost::regex expression(re);
+
+void IndexClasses(map_type& m, const std::string& file)
+{
+ std::string::const_iterator start, end;
+ start = file.begin();
+ end = file.end();
+ boost::match_results<std::string::const_iterator> what;
+ boost::match_flag_type flags = boost::match_default;
+ while(boost::regex_search(start, end, what, expression, flags))
+ {
+ // what[0] contains the whole string
+ // what[5] contains the class name.
+ // what[6] contains the template specialisation if any.
+ // add class name and position to map:
+ m[std::string(what[5].first, what[5].second) + std::string(what[6].first, what[6].second)] =
+ what[5].first - file.begin();
+ // update search position:
+ start = what[0].second;
+ // update flags:
+ flags |= boost::match_prev_avail;
+ flags |= boost::match_not_bob;
+ }
+}
+
+
+#include <iostream>
+#include <fstream>
+
+using namespace std;
+
+void load_file(std::string& s, std::istream& is)
+{
+ s.erase();
+ if(is.bad()) return;
+ s.reserve(is.rdbuf()->in_avail());
+ char c;
+ while(is.get(c))
+ {
+ if(s.capacity() == s.size())
+ s.reserve(s.capacity() * 3);
+ s.append(1, c);
+ }
+}
+
+int main(int argc, const char** argv)
+{
+ std::string text;
+ for(int i = 1; i < argc; ++i)
+ {
+ cout << "Processing file " << argv[i] << endl;
+ map_type m;
+ std::ifstream fs(argv[i]);
+ load_file(text, fs);
+ fs.close();
+ IndexClasses(m, text);
+ cout << m.size() << " matches found" << endl;
+ map_type::iterator c, d;
+ c = m.begin();
+ d = m.end();
+ while(c != d)
+ {
+ cout << "class \"" << (*c).first << "\" found at index: " << (*c).second << endl;
+ ++c;
+ }
+ }
+ return 0;
+}
+
+
+
+
+
+
+
+
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/example/snippets/regex_split_example_1.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/example/snippets/regex_split_example_1.cpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,76 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE regex_split_example_1.cpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: regex_split example: split a string into tokens.
+ */
+
+
+#include <list>
+#include <boost/regex.hpp>
+
+
+unsigned tokenise(std::list<std::string>& l, std::string& s)
+{
+ return boost::regex_split(std::back_inserter(l), s);
+}
+
+#include <iostream>
+using namespace std;
+
+
+#if defined(BOOST_MSVC) || (defined(__BORLANDC__) && (__BORLANDC__ == 0x550))
+//
+// problem with std::getline under MSVC6sp3
+istream& getline(istream& is, std::string& s)
+{
+ s.erase();
+ char c = is.get();
+ while(c != '\n')
+ {
+ s.append(1, c);
+ c = is.get();
+ }
+ return is;
+}
+#endif
+
+
+int main(int argc)
+{
+ string s;
+ list<string> l;
+ do{
+ if(argc == 1)
+ {
+ cout << "Enter text to split (or \"quit\" to exit): ";
+ getline(cin, s);
+ if(s == "quit") break;
+ }
+ else
+ s = "This is a string of tokens";
+ unsigned result = tokenise(l, s);
+ cout << result << " tokens found" << endl;
+ cout << "The remaining text is: \"" << s << "\"" << endl;
+ while(l.size())
+ {
+ s = *(l.begin());
+ l.pop_front();
+ cout << s << endl;
+ }
+ }while(argc == 1);
+ return 0;
+}
+
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/example/snippets/regex_split_example_2.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/example/snippets/regex_split_example_2.cpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,87 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE regex_split_example_2.cpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: regex_split example: spit out linked URL's.
+ */
+
+
+#include <list>
+#include <fstream>
+#include <iostream>
+#include <iterator>
+#include <boost/regex.hpp>
+
+boost::regex e("<\\s*A\\s+[^>]*href\\s*=\\s*\"([^\"]*)\"",
+ boost::regex::normal | boost::regbase::icase);
+
+void load_file(std::string& s, std::istream& is)
+{
+ s.erase();
+ if(is.bad()) return;
+ //
+ // attempt to grow string buffer to match file size,
+ // this doesn't always work...
+ s.reserve(is.rdbuf()->in_avail());
+ char c;
+ while(is.get(c))
+ {
+ // use logarithmic growth stategy, in case
+ // in_avail (above) returned zero:
+ if(s.capacity() == s.size())
+ s.reserve(s.capacity() * 3);
+ s.append(1, c);
+ }
+}
+
+int main(int argc, char** argv)
+{
+ std::string s;
+ std::list<std::string> l;
+ int i;
+ for(i = 1; i < argc; ++i)
+ {
+ std::cout << "Findings URL's in " << argv[i] << ":" << std::endl;
+ s.erase();
+ std::ifstream is(argv[i]);
+ load_file(s, is);
+ is.close();
+ boost::regex_split(std::back_inserter(l), s, e);
+ while(l.size())
+ {
+ s = *(l.begin());
+ l.pop_front();
+ std::cout << s << std::endl;
+ }
+ }
+ //
+ // alternative method:
+ // split one match at a time and output direct to
+ // cout via ostream_iterator<std::string>....
+ //
+ for(i = 1; i < argc; ++i)
+ {
+ std::cout << "Findings URL's in " << argv[i] << ":" << std::endl;
+ s.erase();
+ std::ifstream is(argv[i]);
+ load_file(s, is);
+ is.close();
+ while(boost::regex_split(std::ostream_iterator<std::string>(std::cout), s, e, boost::match_default, 1)) std::cout << std::endl;
+ }
+
+ return 0;
+}
+
+
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/example/snippets/regex_token_iterator_eg_1.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/example/snippets/regex_token_iterator_eg_1.cpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,72 @@
+/*
+ *
+ * Copyright (c) 12003
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE regex_token_iterator_example_1.cpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: regex_token_iterator example: split a string into tokens.
+ */
+
+
+#include <boost/regex.hpp>
+
+#include <iostream>
+using namespace std;
+
+
+#if defined(BOOST_MSVC) || (defined(__BORLANDC__) && (__BORLANDC__ == 0x550))
+//
+// problem with std::getline under MSVC6sp3
+istream& getline(istream& is, std::string& s)
+{
+ s.erase();
+ char c = is.get();
+ while(c != '\n')
+ {
+ s.append(1, c);
+ c = is.get();
+ }
+ return is;
+}
+#endif
+
+
+int main(int argc)
+{
+ string s;
+ do{
+ if(argc == 1)
+ {
+ cout << "Enter text to split (or \"quit\" to exit): ";
+ getline(cin, s);
+ if(s == "quit") break;
+ }
+ else
+ s = "This is a string of tokens";
+
+ boost::regex re("\\s+");
+ boost::sregex_token_iterator i(s.begin(), s.end(), re, -1);
+ boost::sregex_token_iterator j;
+
+ unsigned count = 0;
+ while(i != j)
+ {
+ cout << *i++ << endl;
+ count++;
+ }
+ cout << "There were " << count << " tokens found." << endl;
+
+ }while(argc == 1);
+ return 0;
+}
+
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/example/snippets/regex_token_iterator_eg_2.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/example/snippets/regex_token_iterator_eg_2.cpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,90 @@
+/*
+ *
+ * Copyright (c) 2003
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE regex_token_iterator_example_2.cpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: regex_token_iterator example: spit out linked URL's.
+ */
+
+
+#include <fstream>
+#include <iostream>
+#include <iterator>
+#include <boost/regex.hpp>
+
+boost::regex e("<\\s*A\\s+[^>]*href\\s*=\\s*\"([^\"]*)\"",
+ boost::regex::normal | boost::regbase::icase);
+
+void load_file(std::string& s, std::istream& is)
+{
+ s.erase();
+ if(is.bad()) return;
+ //
+ // attempt to grow string buffer to match file size,
+ // this doesn't always work...
+ s.reserve(is.rdbuf()->in_avail());
+ char c;
+ while(is.get(c))
+ {
+ // use logarithmic growth stategy, in case
+ // in_avail (above) returned zero:
+ if(s.capacity() == s.size())
+ s.reserve(s.capacity() * 3);
+ s.append(1, c);
+ }
+}
+
+int main(int argc, char** argv)
+{
+ std::string s;
+ int i;
+ for(i = 1; i < argc; ++i)
+ {
+ std::cout << "Findings URL's in " << argv[i] << ":" << std::endl;
+ s.erase();
+ std::ifstream is(argv[i]);
+ load_file(s, is);
+ is.close();
+ boost::sregex_token_iterator i(s.begin(), s.end(), e, 1);
+ boost::sregex_token_iterator j;
+ while(i != j)
+ {
+ std::cout << *i++ << std::endl;
+ }
+ }
+ //
+ // alternative method:
+ // test the array-literal constructor, and split out the whole
+ // match as well as $1....
+ //
+ for(i = 1; i < argc; ++i)
+ {
+ std::cout << "Findings URL's in " << argv[i] << ":" << std::endl;
+ s.erase();
+ std::ifstream is(argv[i]);
+ load_file(s, is);
+ is.close();
+ const int subs[] = {1, 0,};
+ boost::sregex_token_iterator i(s.begin(), s.end(), e, subs);
+ boost::sregex_token_iterator j;
+ while(i != j)
+ {
+ std::cout << *i++ << std::endl;
+ }
+ }
+
+ return 0;
+}
+
+
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/example/timer/bc55.mak
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/example/timer/bc55.mak 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,51 @@
+# copyright John Maddock 2003
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt.
+
+# very basic makefile for timer.exe
+#
+# Borland C++ tools
+#
+# BCROOT defines the root directory of your bc builder install
+#
+
+!ifndef BCROOT
+BCROOT=$(MAKEDIR)\..
+!endif
+
+BCC32 = $(BCROOT)\bin\Bcc32.exe
+
+IDE_LinkFLAGS32 = -L$(BCROOT)\LIB
+COMPOPTS= -O2 -tWC -tWM- -Vx -Ve -D_NO_VCL; -I../../../../; -L..\..\build\bcb5
+
+
+timer.exe : regex_timer.cpp
+ $(BCC32) @&&|
+ $(COMPOPTS) -e$@ regex_timer.cpp
+|
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/example/timer/bcb4.mak
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/example/timer/bcb4.mak 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,51 @@
+# copyright John Maddock 2003
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt.
+
+# very basic makefile for timer.exe
+#
+# Borland C++ tools
+#
+# BCROOT defines the root directory of your bc builder install
+#
+
+!ifndef BCROOT
+BCROOT=$(MAKEDIR)\..
+!endif
+
+BCC32 = $(BCROOT)\bin\Bcc32.exe
+
+IDE_LinkFLAGS32 = -L$(BCROOT)\LIB
+COMPOPTS= -O2 -tWC -tWM- -Vx -Ve -D_NO_VCL; -I../../../../; -L..\..\build\bcb4
+
+
+timer.exe : regex_timer.cpp
+ $(BCC32) @&&|
+ $(COMPOPTS) -e$@ regex_timer.cpp
+|
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/example/timer/bcb5.mak
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/example/timer/bcb5.mak 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,51 @@
+# copyright John Maddock 2003
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt.
+
+# very basic makefile for timer.exe
+#
+# Borland C++ tools
+#
+# BCROOT defines the root directory of your bc builder install
+#
+
+!ifndef BCROOT
+BCROOT=$(MAKEDIR)\..
+!endif
+
+BCC32 = $(BCROOT)\bin\Bcc32.exe
+
+IDE_LinkFLAGS32 = -L$(BCROOT)\LIB
+COMPOPTS= -O2 -tWC -tWM- -Vx -Ve -D_NO_VCL; -I../../../../; -L..\..\build\bcb5
+
+
+timer.exe : regex_timer.cpp
+ $(BCC32) @&&|
+ $(COMPOPTS) -e$@ regex_timer.cpp
+|
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/example/timer/gcc.mak
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/example/timer/gcc.mak 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,38 @@
+# copyright John Maddock 2003
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt.
+
+# very basic makefile for timer.exe
+#
+# GNU compiler GCC
+#
+CXX= $(INCLUDES) -I../../../../ -I./ $(CXXFLAGS)
+
+timer : regex_timer.cpp
+ g++ $(CXX) -O2 -o timer regex_timer.cpp -L../../build/gcc $(LDFLAGS) -lboost_regex $(LIBS)
+
+debug : regex_timer.cpp timer.cpp
+ g++ $(CXX) -g -o timer regex_timer.cpp -L../../build/gcc $(LDFLAGS) -lboost_regex_debug $(LIBS)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/example/timer/input_script.txt
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/example/timer/input_script.txt 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,7 @@
+abc
+aaaaaaaaaaabcccccccc
+quit
+^([0-9]+)(\-| |$)(.*)$
+100- this is a line of ftp response which contains a message string
+quit
+quit

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/example/timer/regex_timer.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/example/timer/regex_timer.cpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,388 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+#include <string>
+#include <algorithm>
+#include <deque>
+#include <iterator>
+
+#ifdef BOOST_RE_OLD_IOSTREAM
+#include <iostream.h>
+#include <fstream.h>
+#else
+#include <iostream>
+#include <fstream>
+using std::cout;
+using std::cin;
+using std::cerr;
+using std::istream;
+using std::ostream;
+using std::endl;
+using std::ifstream;
+using std::streambuf;
+using std::getline;
+#endif
+
+#include <boost/config.hpp>
+#include <boost/regex.hpp>
+#include <boost/cregex.hpp>
+#include <boost/timer.hpp>
+#include <boost/smart_ptr.hpp>
+
+#if defined(_WIN32) && defined(BOOST_REGEX_USE_WIN32_LOCALE)
+#include <windows.h>
+#endif
+
+#if (defined(_MSC_VER) && (_MSC_VER <= 1300)) || defined(__sgi)
+// maybe no Koenig lookup, use using declaration instead:
+using namespace boost;
+#endif
+
+#ifndef BOOST_NO_WREGEX
+ostream& operator << (ostream& os, const std::wstring& s)
+{
+ std::wstring::const_iterator i, j;
+ i = s.begin();
+ j = s.end();
+ while(i != j)
+ {
+ os.put(*i);
+ ++i;
+ }
+ return os;
+}
+#endif
+
+template <class S>
+class string_out_iterator
+#ifndef BOOST_NO_STD_ITERATOR
+ : public std::iterator<std::output_iterator_tag, void, void, void, void>
+#endif // ndef BOOST_NO_STD_ITERATOR
+{
+#ifdef BOOST_NO_STD_ITERATOR
+ typedef std::output_iterator_tag iterator_category;
+ typedef void value_type;
+ typedef void difference_type;
+ typedef void pointer;
+ typedef void reference;
+#endif // BOOST_NO_STD_ITERATOR
+
+ S* out;
+public:
+ string_out_iterator(S& s) : out(&s) {}
+ string_out_iterator& operator++() { return *this; }
+ string_out_iterator& operator++(int) { return *this; }
+ string_out_iterator& operator*() { return *this; }
+ string_out_iterator& operator=(typename S::value_type v)
+ {
+ out->append(1, v);
+ return *this;
+ }
+};
+
+namespace boost{
+#if defined(BOOST_MSVC) || (defined(__BORLANDC__) && (__BORLANDC__ == 0x550)) || defined(__SGI_STL_PORT)
+//
+// problem with std::getline under MSVC6sp3
+// and C++ Builder 5.5, is this really that hard?
+istream& getline(istream& is, std::string& s)
+{
+ s.erase();
+ char c = is.get();
+ while(c != '\n')
+ {
+ s.append(1, c);
+ c = is.get();
+ }
+ return is;
+}
+#elif defined(__CYGWIN__)
+istream& getline(istream& is, std::string& s)
+{
+ std::getline(is, s);
+ if(s.size() && (s[s.size() -1] == '\r'))
+ s.erase(s.size() - 1);
+ return is;
+}
+#else
+using std::getline;
+#endif
+}
+
+
+int main(int argc, char**argv)
+{
+ ifstream ifs;
+ streambuf* pbuf = 0;
+ if(argc == 2)
+ {
+ ifs.open(argv[1]);
+ if(ifs.bad())
+ {
+ cout << "Bad filename: " << argv[1] << endl;
+ return -1;
+ }
+ pbuf = cin.rdbuf(ifs.rdbuf());
+ }
+
+ boost::regex ex;
+ boost::match_results<std::string::const_iterator> sm;
+#ifndef BOOST_NO_WREGEX
+ std::wstring ws1, ws2;
+ boost::wregex wex;
+ boost::match_results<std::wstring::const_iterator> wsm;
+#endif
+ boost::match_results<std::deque<char>::iterator> dm;
+ std::string s1, s2, ts;
+ std::deque<char> ds;
+ boost::regex_t r;
+ boost::scoped_array<boost::regmatch_t> matches;
+ std::size_t nsubs;
+ boost::timer t;
+ double tim;
+ bool result;
+ int iters = 100;
+ double wait_time = (std::min)(t.elapsed_min() * 1000, 1.0);
+
+ while(true)
+ {
+ cout << "Enter expression (or \"quit\" to exit): ";
+ boost::getline(cin, s1);
+ if(argc == 2)
+ cout << endl << s1 << endl;
+ if(s1 == "quit")
+ break;
+#ifndef BOOST_NO_WREGEX
+ ws1.erase();
+ std::copy(s1.begin(), s1.end(), string_out_iterator<std::wstring>(ws1));
+#endif
+ try{
+ ex.assign(s1);
+#ifndef BOOST_NO_WREGEX
+ wex.assign(ws1);
+#endif
+ }
+ catch(std::exception& e)
+ {
+ cout << "Error in expression: \"" << e.what() << "\"" << endl;
+ continue;
+ }
+ int code = regcomp(&r, s1.c_str(), boost::REG_PERL);
+ if(code != 0)
+ {
+ char buf[256];
+ regerror(code, &r, buf, 256);
+ cout << "regcomp error: \"" << buf << "\"" << endl;
+ continue;
+ }
+ nsubs = r.re_nsub + 1;
+ matches.reset(new boost::regmatch_t[nsubs]);
+
+ while(true)
+ {
+ cout << "Enter string to search (or \"quit\" to exit): ";
+ boost::getline(cin, s2);
+ if(argc == 2)
+ cout << endl << s2 << endl;
+ if(s2 == "quit")
+ break;
+
+#ifndef BOOST_NO_WREGEX
+ ws2.erase();
+ std::copy(s2.begin(), s2.end(), string_out_iterator<std::wstring>(ws2));
+#endif
+ ds.erase(ds.begin(), ds.end());
+ std::copy(s2.begin(), s2.end(), std::back_inserter(ds));
+
+ int i;
+ iters = 10;
+ tim = 1.1;
+
+#if defined(_WIN32) && defined(BOOST_REGEX_USE_WIN32_LOCALE)
+ MSG msg;
+ PeekMessage(&msg, 0, 0, 0, 0);
+ Sleep(0);
+#endif
+
+ // cache load:
+ regex_search(s2, sm, ex);
+
+ // measure time interval for basic_regex<char>
+ do{
+ iters *= (tim > 0.001) ? (1.1/tim) : 100;
+ t.restart();
+ for(i =0; i < iters; ++i)
+ {
+ result = regex_search(s2, sm, ex);
+ }
+ tim = t.elapsed();
+ }while(tim < wait_time);
+
+ cout << "regex time: " << (tim * 1000000 / iters) << "us" << endl;
+ if(result)
+ {
+ for(i = 0; i < sm.size(); ++i)
+ {
+ ts = sm[i];
+ cout << "\tmatch " << i << ": \"";
+ cout << ts;
+ cout << "\" (matched=" << sm[i].matched << ")" << endl;
+ }
+ cout << "\tmatch $`: \"";
+ cout << std::string(sm[-1]);
+ cout << "\" (matched=" << sm[-1].matched << ")" << endl;
+ cout << "\tmatch $': \"";
+ cout << std::string(sm[-2]);
+ cout << "\" (matched=" << sm[-2].matched << ")" << endl << endl;
+ }
+
+#ifndef BOOST_NO_WREGEX
+ // measure time interval for boost::wregex
+ iters = 10;
+ tim = 1.1;
+ // cache load:
+ regex_search(ws2, wsm, wex);
+ do{
+ iters *= (tim > 0.001) ? (1.1/tim) : 100;
+ t.restart();
+ for(i = 0; i < iters; ++i)
+ {
+ result = regex_search(ws2, wsm, wex);
+ }
+ tim = t.elapsed();
+ }while(tim < wait_time);
+ cout << "wregex time: " << (tim * 1000000 / iters) << "us" << endl;
+ if(result)
+ {
+ std::wstring tw;
+ for(i = 0; i < wsm.size(); ++i)
+ {
+ tw.erase();
+ std::copy(wsm[i].first, wsm[i].second, string_out_iterator<std::wstring>(tw));
+ cout << "\tmatch " << i << ": \"" << tw;
+ cout << "\" (matched=" << sm[i].matched << ")" << endl;
+ }
+ cout << "\tmatch $`: \"";
+ tw.erase();
+ std::copy(wsm[-1].first, wsm[-1].second, string_out_iterator<std::wstring>(tw));
+ cout << tw;
+ cout << "\" (matched=" << sm[-1].matched << ")" << endl;
+ cout << "\tmatch $': \"";
+ tw.erase();
+ std::copy(wsm[-2].first, wsm[-2].second, string_out_iterator<std::wstring>(tw));
+ cout << tw;
+ cout << "\" (matched=" << sm[-2].matched << ")" << endl << endl;
+ }
+#endif
+
+ // measure time interval for basic_regex<char> using a deque
+ iters = 10;
+ tim = 1.1;
+ // cache load:
+ regex_search(ds.begin(), ds.end(), dm, ex);
+ do{
+ iters *= (tim > 0.001) ? (1.1/tim) : 100;
+ t.restart();
+ for(i = 0; i < iters; ++i)
+ {
+ result = regex_search(ds.begin(), ds.end(), dm, ex);
+ }
+ tim = t.elapsed();
+ }while(tim < wait_time);
+ cout << "regex time (search over std::deque<char>): " << (tim * 1000000 / iters) << "us" << endl;
+
+ if(result)
+ {
+ for(i = 0; i < dm.size(); ++i)
+ {
+ ts.erase();
+ std::copy(dm[i].first, dm[i].second, string_out_iterator<std::string>(ts));
+ cout << "\tmatch " << i << ": \"" << ts;
+ cout << "\" (matched=" << sm[i].matched << ")" << endl;
+ }
+ cout << "\tmatch $`: \"";
+ ts.erase();
+ std::copy(dm[-1].first, dm[-1].second, string_out_iterator<std::string>(ts));
+ cout << ts;
+ cout << "\" (matched=" << sm[-1].matched << ")" << endl;
+ cout << "\tmatch $': \"";
+ ts.erase();
+ std::copy(dm[-2].first, dm[-2].second, string_out_iterator<std::string>(ts));
+ cout << ts;
+ cout << "\" (matched=" << sm[-2].matched << ")" << endl << endl;
+ }
+
+ // measure time interval for POSIX matcher:
+ iters = 10;
+ tim = 1.1;
+ // cache load:
+ regexec(&r, s2.c_str(), nsubs, matches.get(), 0);
+ do{
+ iters *= (tim > 0.001) ? (1.1/tim) : 100;
+ t.restart();
+ for(i = 0; i < iters; ++i)
+ {
+ result = regexec(&r, s2.c_str(), nsubs, matches.get(), 0);
+ }
+ tim = t.elapsed();
+ }while(tim < wait_time);
+ cout << "POSIX regexec time: " << (tim * 1000000 / iters) << "us" << endl;
+
+ if(result == 0)
+ {
+ for(i = 0; i < nsubs; ++i)
+ {
+ if(matches[i].rm_so >= 0)
+ {
+ ts.assign(s2.begin() + matches[i].rm_so, s2.begin() + matches[i].rm_eo);
+ cout << "\tmatch " << i << ": \"" << ts << "\" (matched=" << (matches[i].rm_so != -1) << ")"<< endl;
+ }
+ else
+ cout << "\tmatch " << i << ": \"\" (matched=" << (matches[i].rm_so != -1) << ")" << endl; // no match
+ }
+ cout << "\tmatch $`: \"";
+ ts.erase();
+ ts.assign(s2.begin(), s2.begin() + matches[0].rm_so);
+ cout << ts;
+ cout << "\" (matched=" << (matches[0].rm_so != 0) << ")" << endl;
+ cout << "\tmatch $': \"";
+ ts.erase();
+ ts.assign(s2.begin() + matches[0].rm_eo, s2.end());
+ cout << ts;
+ cout << "\" (matched=" << (matches[0].rm_eo != s2.size()) << ")" << endl << endl;
+ }
+ }
+ regfree(&r);
+ }
+
+ if(pbuf)
+ {
+ cin.rdbuf(pbuf);
+ ifs.close();
+ }
+
+ return 0;
+}
+
+#if defined(_WIN32) && defined(BOOST_REGEX_USE_WIN32_LOCALE)
+#pragma comment(lib, "user32.lib")
+#endif
+
+
+
+
+
+
+
+
+
+
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/example/timer/vc6-stlport.mak
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/example/timer/vc6-stlport.mak 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,39 @@
+# copyright John Maddock 2003
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt.
+#
+# very basic VC6 makefile for timer
+#
+CXX=cl
+CXXFLAGS=/Oityb1 /GF /Gy -MT -GX -DSTRICT -I../../../../ -I./
+LIBS=/link /LIBPATH:..\..\build\vc6-stlport kernel32.lib user32.lib
+EXE=.exe
+OBJ=.obj
+
+LIBDEP= ../../../../boost/regex/detail/regex_options.hpp ../../../../boost/regex/detail/regex_config.hpp
+
+regex_timer$(EXE) : regex_timer$(OBJ)
+ $(CXX) -o timer$(EXE) regex_timer$(OBJ) $(LIBS)
+
+regex_timer$(OBJ) : regex_timer.cpp $(LIBDEP)
+ $(CXX) -c $(CXXFLAGS) regex_timer.cpp
+
+timer$(OBJ) : ../../../timer/timer.cpp $(LIBDEP)
+ $(CXX) -c $(CXXFLAGS) ../../../timer/timer.cpp
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/example/timer/vc6.mak
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/example/timer/vc6.mak 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,39 @@
+# copyright John Maddock 2003
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt.
+#
+# very basic VC6 makefile for timer
+#
+CXX=cl
+CXXFLAGS=/Oityb1 /GF /Gy -GX -DSTRICT -I../../../../ -I./
+LIBS=/link /LIBPATH:..\..\build\vc6
+EXE=.exe
+OBJ=.obj
+
+LIBDEP= ../../../../boost/regex/detail/regex_options.hpp ../../../../boost/regex/detail/regex_config.hpp
+
+regex_timer$(EXE) : regex_timer$(OBJ)
+ $(CXX) -o timer$(EXE) regex_timer$(OBJ) $(LIBS)
+
+regex_timer$(OBJ) : regex_timer.cpp $(LIBDEP)
+ $(CXX) -c $(CXXFLAGS) regex_timer.cpp
+
+timer$(OBJ) : ../../../timer/timer.cpp $(LIBDEP)
+ $(CXX) -c $(CXXFLAGS) ../../../timer/timer.cpp
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/index.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/index.html 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,13 @@
+<html>
+ <head>
+ <meta http-equiv="refresh" content="0; URL=doc/index.html">
+ </head>
+ <body>
+ Automatic redirection failed, please go to doc/index.html.
+ <P>Copyright&nbsp;John Maddock 2003</P>
+ <P>Distributed under the Boost Software License, Version 1.0. (See accompanying file <A href="../../LICENSE_1_0.txt">
+ LICENSE_1_0.txt</A> or copy at www.boost.org/LICENSE_1_0.txt).</P>
+ </body>
+</html>
+
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/performance/Jamfile.v2
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/performance/Jamfile.v2 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,55 @@
+# copyright John Maddock 2003
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt.
+
+SOURCES = command_line main time_boost time_greta time_localised_boost time_pcre time_dynamic_xpressive time_posix time_safe_greta ;
+
+local HS_REGEX_PATH = [ modules.peek : HS_REGEX_PATH ] ;
+local USE_POSIX = [ modules.peek : USE_POSIX ] ;
+local PCRE_PATH = [ modules.peek : PCRE_PATH ] ;
+local USE_PCRE = [ modules.peek : USE_PCRE ] ;
+
+if $(HS_REGEX_PATH)
+{
+ HS_SOURCES = $(HS_REGEX_PATH)/regcomp.c $(HS_REGEX_PATH)/regerror.c $(HS_REGEX_PATH)/regexec.c $(HS_REGEX_PATH)/regfree.c ;
+ POSIX_OPTS = <define>BOOST_HAS_POSIX=1 <include>$(HS_REGEX_PATH) ;
+}
+else if $(USE_POSIX)
+{
+ POSIX_OPTS = <define>BOOST_HAS_POSIX=1 ;
+}
+
+lib pcre : : <name>pcre ;
+
+if $(PCRE_PATH)
+{
+ PCRE_SOURCES = $(PCRE_PATH)/chartables.c $(PCRE_PATH)/get.c $(PCRE_PATH)/pcre.c $(PCRE_PATH)/study.c ;
+ PCRE_OPTS = <define>BOOST_HAS_PCRE=1 <include>$(PCRE_PATH) ;
+}
+else if $(USE_PCRE)
+{
+ PCRE_OPTS = <define>BOOST_HAS_PCRE=1 ;
+ PCRE_SOURCES = pcre ;
+}
+
+
+exe regex_comparison :
+ $(SOURCES).cpp
+ $(HS_SOURCES)
+ $(PCRE_SOURCES)
+ ../build//boost_regex
+ ../../test/build//boost_prg_exec_monitor/<link>static
+ :
+ <define>BOOST_REGEX_NO_LIB=1
+ <define>BOOST_REGEX_STATIC_LINK=1
+ $(POSIX_OPTS)
+ $(PCRE_OPTS)
+ ;
+
+
+
+
+
+
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/performance/command_line.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/performance/command_line.cpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,515 @@
+/*
+ *
+ * Copyright (c) 2002-2003
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+#include <iostream>
+#include <iomanip>
+#include <fstream>
+#include <deque>
+#include <sstream>
+#include <stdexcept>
+#include <iterator>
+#include <boost/regex.hpp>
+#include <boost/version.hpp>
+#include "regex_comparison.hpp"
+
+#ifdef BOOST_HAS_PCRE
+#include "pcre.h" // for pcre version number
+#endif
+
+//
+// globals:
+//
+bool time_boost = false;
+bool time_localised_boost = false;
+bool time_greta = false;
+bool time_safe_greta = false;
+bool time_posix = false;
+bool time_pcre = false;
+bool time_xpressive = false;
+
+bool test_matches = false;
+bool test_code = false;
+bool test_html = false;
+bool test_short_twain = false;
+bool test_long_twain = false;
+
+
+std::string html_template_file;
+std::string html_out_file;
+std::string html_contents;
+std::list<results> result_list;
+
+// the following let us compute averages:
+double greta_total = 0;
+double safe_greta_total = 0;
+double boost_total = 0;
+double locale_boost_total = 0;
+double posix_total = 0;
+double pcre_total = 0;
+double xpressive_total = 0;
+unsigned greta_test_count = 0;
+unsigned safe_greta_test_count = 0;
+unsigned boost_test_count = 0;
+unsigned locale_boost_test_count = 0;
+unsigned posix_test_count = 0;
+unsigned pcre_test_count = 0;
+unsigned xpressive_test_count = 0;
+
+int handle_argument(const std::string& what)
+{
+ if(what == "-b")
+ time_boost = true;
+ else if(what == "-bl")
+ time_localised_boost = true;
+#ifdef BOOST_HAS_GRETA
+ else if(what == "-g")
+ time_greta = true;
+ else if(what == "-gs")
+ time_safe_greta = true;
+#endif
+#ifdef BOOST_HAS_POSIX
+ else if(what == "-posix")
+ time_posix = true;
+#endif
+#ifdef BOOST_HAS_PCRE
+ else if(what == "-pcre")
+ time_pcre = true;
+#endif
+#ifdef BOOST_HAS_XPRESSIVE
+ else if(what == "-xpressive" || what == "-dxpr")
+ time_xpressive = true;
+#endif
+ else if(what == "-all")
+ {
+ time_boost = true;
+ time_localised_boost = true;
+#ifdef BOOST_HAS_GRETA
+ time_greta = true;
+ time_safe_greta = true;
+#endif
+#ifdef BOOST_HAS_POSIX
+ time_posix = true;
+#endif
+#ifdef BOOST_HAS_PCRE
+ time_pcre = true;
+#endif
+ }
+ else if(what == "-test-matches")
+ test_matches = true;
+ else if(what == "-test-code")
+ test_code = true;
+ else if(what == "-test-html")
+ test_html = true;
+ else if(what == "-test-short-twain")
+ test_short_twain = true;
+ else if(what == "-test-long-twain")
+ test_long_twain = true;
+ else if(what == "-test-all")
+ {
+ test_matches = true;
+ test_code = true;
+ test_html = true;
+ test_short_twain = true;
+ test_long_twain = true;
+ }
+ else if((what == "-h") || (what == "--help"))
+ return show_usage();
+ else if((what[0] == '-') || (what[0] == '/'))
+ {
+ std::cerr << "Unknown argument: \"" << what << "\"" << std::endl;
+ return 1;
+ }
+ else if(html_template_file.size() == 0)
+ {
+ html_template_file = what;
+ load_file(html_contents, what.c_str());
+ }
+ else if(html_out_file.size() == 0)
+ html_out_file = what;
+ else
+ {
+ std::cerr << "Unexpected argument: \"" << what << "\"" << std::endl;
+ return 1;
+ }
+ return 0;
+}
+
+int show_usage()
+{
+ std::cout <<
+ "Usage\n"
+ "regex_comparison [-h] [library options] [test options] [html_template html_output_file]\n"
+ " -h Show help\n\n"
+ " library options:\n"
+ " -b Apply tests to boost library\n"
+ " -bl Apply tests to boost library with C++ locale\n"
+#ifdef BOOST_HAS_GRETA
+ " -g Apply tests to GRETA library\n"
+ " -gs Apply tests to GRETA library (in non-recursive mode)\n"
+#endif
+#ifdef BOOST_HAS_POSIX
+ " -posix Apply tests to POSIX library\n"
+#endif
+#ifdef BOOST_HAS_PCRE
+ " -pcre Apply tests to PCRE library\n"
+#endif
+#ifdef BOOST_HAS_XPRESSIVE
+ " -dxpr Apply tests to dynamic xpressive library\n"
+#endif
+ " -all Apply tests to all libraries\n\n"
+ " test options:\n"
+ " -test-matches Test short matches\n"
+ " -test-code Test c++ code examples\n"
+ " -test-html Test c++ code examples\n"
+ " -test-short-twain Test short searches\n"
+ " -test-long-twain Test long searches\n"
+ " -test-all Test everthing\n";
+ return 1;
+}
+
+void load_file(std::string& text, const char* file)
+{
+ std::deque<char> temp_copy;
+ std::ifstream is(file);
+ if(!is.good())
+ {
+ std::string msg("Unable to open file: \"");
+ msg.append(file);
+ msg.append("\"");
+ throw std::runtime_error(msg);
+ }
+ is.seekg(0, std::ios_base::end);
+ std::istream::pos_type pos = is.tellg();
+ is.seekg(0, std::ios_base::beg);
+ text.erase();
+ text.reserve(pos);
+ std::istreambuf_iterator<char> it(is);
+ std::copy(it, std::istreambuf_iterator<char>(), std::back_inserter(text));
+}
+
+void print_result(std::ostream& os, double time, double best)
+{
+ static const char* suffixes[] = {"s", "ms", "us", "ns", "ps", };
+
+ if(time < 0)
+ {
+ os << "<td>NA</td>";
+ return;
+ }
+ double rel = time / best;
+ bool highlight = ((rel > 0) && (rel < 1.1));
+ unsigned suffix = 0;
+ while(time < 0)
+ {
+ time *= 1000;
+ ++suffix;
+ }
+ os << "<td>";
+ if(highlight)
+ os << "<font color=\"#008000\">";
+ if(rel <= 1000)
+ os << std::setprecision(3) << rel;
+ else
+ os << (int)rel;
+ os << "<BR>(";
+ if(time <= 1000)
+ os << std::setprecision(3) << time;
+ else
+ os << (int)time;
+ os << suffixes[suffix] << ")";
+ if(highlight)
+ os << "</font>";
+ os << "</td>";
+}
+
+std::string html_quote(const std::string& in)
+{
+ static const boost::regex e("(<)|(>)|(&)|(\")");
+ static const std::string format("(?1&lt;)(?2&gt;)(?3&amp;)(?4&quot;)");
+ return regex_replace(in, e, format, boost::match_default | boost::format_all);
+}
+
+void output_html_results(bool show_description, const std::string& tagname)
+{
+ std::stringstream os;
+ if(result_list.size())
+ {
+ //
+ // start by outputting the table header:
+ //
+ os << "<table border=\"1\" cellspacing=\"1\">\n";
+ os << "<tr><td><strong>Expression</strong></td>";
+ if(show_description)
+ os << "<td><strong>Text</strong></td>";
+#if defined(BOOST_HAS_GRETA)
+ if(time_greta == true)
+ os << "<td><strong>GRETA</strong></td>";
+ if(time_safe_greta == true)
+ os << "<td><strong>GRETA<BR>(non-recursive mode)</strong></td>";
+#endif
+ if(time_boost == true)
+ os << "<td><strong>Boost</strong></td>";
+ if(time_localised_boost == true)
+ os << "<td><strong>Boost + C++ locale</strong></td>";
+#if defined(BOOST_HAS_POSIX)
+ if(time_posix == true)
+ os << "<td><strong>POSIX</strong></td>";
+#endif
+#ifdef BOOST_HAS_PCRE
+ if(time_pcre == true)
+ os << "<td><strong>PCRE</strong></td>";
+#endif
+#ifdef BOOST_HAS_XPRESSIVE
+ if(time_xpressive == true)
+ os << "<td><strong>Dynamic Xpressive</strong></td>";
+#endif
+ os << "</tr>\n";
+
+ //
+ // Now enumerate through all the test results:
+ //
+ std::list<results>::const_iterator first, last;
+ first = result_list.begin();
+ last = result_list.end();
+ while(first != last)
+ {
+ os << "<tr><td><code>" << html_quote(first->expression) << "</code></td>";
+ if(show_description)
+ os << "<td>" << html_quote(first->description) << "</td>";
+#if defined(BOOST_HAS_GRETA)
+ if(time_greta == true)
+ {
+ print_result(os, first->greta_time, first->factor);
+ if(first->greta_time > 0)
+ {
+ greta_total += first->greta_time / first->factor;
+ ++greta_test_count;
+ }
+ }
+ if(time_safe_greta == true)
+ {
+ print_result(os, first->safe_greta_time, first->factor);
+ if(first->safe_greta_time > 0)
+ {
+ safe_greta_total += first->safe_greta_time / first->factor;
+ ++safe_greta_test_count;
+ }
+ }
+#endif
+#if defined(BOOST_HAS_POSIX)
+ if(time_boost == true)
+ {
+ print_result(os, first->boost_time, first->factor);
+ if(first->boost_time > 0)
+ {
+ boost_total += first->boost_time / first->factor;
+ ++boost_test_count;
+ }
+ }
+#endif
+ if(time_localised_boost == true)
+ {
+ print_result(os, first->localised_boost_time, first->factor);
+ if(first->localised_boost_time > 0)
+ {
+ locale_boost_total += first->localised_boost_time / first->factor;
+ ++locale_boost_test_count;
+ }
+ }
+ if(time_posix == true)
+ {
+ print_result(os, first->posix_time, first->factor);
+ if(first->posix_time > 0)
+ {
+ posix_total += first->posix_time / first->factor;
+ ++posix_test_count;
+ }
+ }
+#if defined(BOOST_HAS_PCRE)
+ if(time_pcre == true)
+ {
+ print_result(os, first->pcre_time, first->factor);
+ if(first->pcre_time > 0)
+ {
+ pcre_total += first->pcre_time / first->factor;
+ ++pcre_test_count;
+ }
+ }
+#endif
+#if defined(BOOST_HAS_XPRESSIVE)
+ if(time_xpressive == true)
+ {
+ print_result(os, first->xpressive_time, first->factor);
+ if(first->xpressive_time > 0)
+ {
+ xpressive_total += first->xpressive_time / first->factor;
+ ++xpressive_test_count;
+ }
+ }
+#endif
+ os << "</tr>\n";
+ ++first;
+ }
+ os << "</table>\n";
+ result_list.clear();
+ }
+ else
+ {
+ os << "<P><I>Results not available...</I></P>\n";
+ }
+
+ std::string result = os.str();
+
+ std::string::size_type pos = html_contents.find(tagname);
+ if(pos != std::string::npos)
+ {
+ html_contents.replace(pos, tagname.size(), result);
+ }
+}
+
+std::string get_boost_version()
+{
+ std::stringstream os;
+ os << (BOOST_VERSION / 100000) << '.' << ((BOOST_VERSION / 100) % 1000) << '.' << (BOOST_VERSION % 100);
+ return os.str();
+}
+
+std::string get_averages_table()
+{
+ std::stringstream os;
+ //
+ // start by outputting the table header:
+ //
+ os << "<table border=\"1\" cellspacing=\"1\">\n";
+ os << "<tr>";
+#if defined(BOOST_HAS_GRETA)
+ if(time_greta == true)
+ {
+ os << "<td><strong>GRETA</strong></td>";
+ }
+ if(time_safe_greta == true)
+ {
+ os << "<td><strong>GRETA<BR>(non-recursive mode)</strong></td>";
+ }
+
+#endif
+ if(time_boost == true)
+ {
+ os << "<td><strong>Boost</strong></td>";
+ }
+ if(time_localised_boost == true)
+ {
+ os << "<td><strong>Boost + C++ locale</strong></td>";
+ }
+#if defined(BOOST_HAS_POSIX)
+ if(time_posix == true)
+ {
+ os << "<td><strong>POSIX</strong></td>";
+ }
+#endif
+#ifdef BOOST_HAS_PCRE
+ if(time_pcre == true)
+ {
+ os << "<td><strong>PCRE</strong></td>";
+ }
+#endif
+#ifdef BOOST_HAS_XPRESSIVE
+ if(time_xpressive == true)
+ {
+ os << "<td><strong>Dynamic Xpressive</strong></td>";
+ }
+#endif
+ os << "</tr>\n";
+
+ //
+ // Now enumerate through all averages:
+ //
+ os << "<tr>";
+#if defined(BOOST_HAS_GRETA)
+ if(time_greta == true)
+ os << "<td>" << (greta_total / greta_test_count) << "</td>\n";
+ if(time_safe_greta == true)
+ os << "<td>" << (safe_greta_total / safe_greta_test_count) << "</td>\n";
+#endif
+#if defined(BOOST_HAS_POSIX)
+ if(time_boost == true)
+ os << "<td>" << (boost_total / boost_test_count) << "</td>\n";
+#endif
+ if(time_localised_boost == true)
+ os << "<td>" << (locale_boost_total / locale_boost_test_count) << "</td>\n";
+ if(time_posix == true)
+ os << "<td>" << (posix_total / posix_test_count) << "</td>\n";
+#if defined(BOOST_HAS_PCRE)
+ if(time_pcre == true)
+ os << "<td>" << (pcre_total / pcre_test_count) << "</td>\n";
+#endif
+#if defined(BOOST_HAS_XPRESSIVE)
+ if(time_xpressive == true)
+ os << "<td>" << (xpressive_total / xpressive_test_count) << "</td>\n";
+#endif
+ os << "</tr>\n";
+ os << "</table>\n";
+ return os.str();
+}
+
+void output_final_html()
+{
+ if(html_out_file.size())
+ {
+ //
+ // start with search and replace ops:
+ //
+ std::string::size_type pos;
+ pos = html_contents.find("%compiler%");
+ if(pos != std::string::npos)
+ {
+ html_contents.replace(pos, 10, BOOST_COMPILER);
+ }
+ pos = html_contents.find("%library%");
+ if(pos != std::string::npos)
+ {
+ html_contents.replace(pos, 9, BOOST_STDLIB);
+ }
+ pos = html_contents.find("%os%");
+ if(pos != std::string::npos)
+ {
+ html_contents.replace(pos, 4, BOOST_PLATFORM);
+ }
+ pos = html_contents.find("%boost%");
+ if(pos != std::string::npos)
+ {
+ html_contents.replace(pos, 7, get_boost_version());
+ }
+ pos = html_contents.find("%pcre%");
+ if(pos != std::string::npos)
+ {
+#ifdef PCRE_MINOR
+ html_contents.replace(pos, 6, BOOST_STRINGIZE(PCRE_MAJOR.PCRE_MINOR));
+#else
+ html_contents.replace(pos, 6, "N/A");
+#endif
+ }
+ pos = html_contents.find("%averages%");
+ if(pos != std::string::npos)
+ {
+ html_contents.replace(pos, 10, get_averages_table());
+ }
+ //
+ // now right the output to file:
+ //
+ std::ofstream os(html_out_file.c_str());
+ os << html_contents;
+ }
+ else
+ {
+ std::cout << html_contents;
+ }
+}

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/performance/input.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/performance/input.html 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,74 @@
+<html>
+ <head>
+ <title>Regular Expression Performance Comparison</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
+ <meta name="Template" content="C:\PROGRAM FILES\MICROSOFT OFFICE\OFFICE\html.dot">
+ <meta name="GENERATOR" content="Microsoft FrontPage Express 2.0">
+ </head>
+ <body bgcolor="#ffffff" link="#0000ff" vlink="#800080">
+ <h2>Regular Expression Performance Comparison</h2>
+ <p>
+ The following tables provide comparisons between the following regular
+ expression libraries:</p>
+ <p>GRETA.</p>
+ <p>The Boost regex library.</p>
+ <p>Henry Spencer's regular expression library
+ - this is provided for comparison as a typical non-backtracking implementation.</p>
+ <P>Philip Hazel's PCRE library.</P>
+ <H3>Details</H3>
+ <P>Machine: Intel Pentium 4 2.8GHz PC.</P>
+ <P>Compiler: %compiler%.</P>
+ <P>C++ Standard Library: %library%.</P>
+ <P>OS: %os%.</P>
+ <P>Boost version: %boost%.</P>
+ <P>PCRE version: %pcre%.</P>
+ <P>
+ As ever care should be taken in interpreting the results, only sensible regular
+ expressions (rather than pathological cases) are given, most are taken from the
+ Boost regex examples, or from the <a href="http://www.regxlib.com/">Library of
+ Regular Expressions</a>. In addition, some variation in the relative
+ performance of these libraries can be expected on other machines - as memory
+ access and processor caching effects can be quite large for most finite state
+ machine algorithms.</P>
+ <H3>Averages</H3>
+ <P>The following are the average relative scores for all the tests: the perfect
+ regular expression library&nbsp;would score 1, in practice anything less than 2
+ is pretty good.</P>
+ <P>%averages%</P>
+ <h3>Comparison 1: Long Search</h3>
+ <p>For each of the following regular expressions the time taken to find all
+ occurrences of the expression within a long English language text was measured
+ (mtent12.txt
+ from Project Gutenberg, 19Mb).&nbsp;</p>
+ <P>%long_twain_search%</P>
+ <h3>Comparison 2: Medium Sized Search</h3>
+ <p>For each of the following regular expressions the time taken to find all
+ occurrences of the expression within a medium sized English language text was
+ measured (the first 50K from mtent12.txt).&nbsp;</p>
+ <P>%short_twain_search%</P>
+ <H3>Comparison 3:&nbsp;C++ Code&nbsp;Search</H3>
+ <P>For each of the following regular expressions the time taken to find all
+ occurrences of the expression within the C++ source file <A href="../../../boost/crc.hpp">
+ boost/crc.hpp</A>&nbsp;was measured.&nbsp;</P>
+ <P>%code_search%</P>
+ <H3>
+ <H3>Comparison 4: HTML Document Search</H3>
+ </H3>
+ <P>For each of the following regular expressions the time taken to find all
+ occurrences of the expression within the html file libs/libraries.htm
+ was measured.&nbsp;</P>
+ <P>%html_search%</P>
+ <H3>Comparison 3: Simple Matches</H3>
+ <p>
+ For each of the following regular expressions the time taken to match against
+ the text indicated was measured.&nbsp;</p>
+ <P>%short_matches%</P>
+ <hr>
+ <p><i>© Copyright John Maddock&nbsp;2003</i></p>
+ <p><i>Use, modification and distribution are subject to the Boost Software License,
+ Version 1.0. (See accompanying file LICENSE_1_0.txt
+ or copy at http://www.boost.org/LICENSE_1_0.txt)</i></p>
+
+ </body>
+</html>

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/performance/main.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/performance/main.cpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,264 @@
+/*
+ *
+ * Copyright (c) 2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+#include <iostream>
+#include <fstream>
+#include <iterator>
+#include <cassert>
+#include <boost/test/execution_monitor.hpp>
+#include "regex_comparison.hpp"
+
+
+void test_match(const std::string& re, const std::string& text, const std::string& description, bool icase)
+{
+ double time;
+ results r(re, description);
+
+ std::cout << "Testing: \"" << re << "\" against \"" << description << "\"" << std::endl;
+
+#ifdef BOOST_HAS_GRETA
+ if(time_greta == true)
+ {
+ time = g::time_match(re, text, icase);
+ r.greta_time = time;
+ std::cout << "\tGRETA regex: " << time << "s\n";
+ }
+ if(time_safe_greta == true)
+ {
+ time = gs::time_match(re, text, icase);
+ r.safe_greta_time = time;
+ std::cout << "\tSafe GRETA regex: " << time << "s\n";
+ }
+#endif
+ if(time_boost == true)
+ {
+ time = b::time_match(re, text, icase);
+ r.boost_time = time;
+ std::cout << "\tBoost regex: " << time << "s\n";
+ }
+ if(time_localised_boost == true)
+ {
+ time = bl::time_match(re, text, icase);
+ r.localised_boost_time = time;
+ std::cout << "\tBoost regex (C++ locale): " << time << "s\n";
+ }
+#ifdef BOOST_HAS_POSIX
+ if(time_posix == true)
+ {
+ time = posix::time_match(re, text, icase);
+ r.posix_time = time;
+ std::cout << "\tPOSIX regex: " << time << "s\n";
+ }
+#endif
+#ifdef BOOST_HAS_PCRE
+ if(time_pcre == true)
+ {
+ time = pcr::time_match(re, text, icase);
+ r.pcre_time = time;
+ std::cout << "\tPCRE regex: " << time << "s\n";
+ }
+#endif
+#ifdef BOOST_HAS_XPRESSIVE
+ if(time_xpressive == true)
+ {
+ time = dxpr::time_match(re, text, icase);
+ r.xpressive_time = time;
+ std::cout << "\txpressive regex: " << time << "s\n";
+ }
+#endif
+ r.finalise();
+ result_list.push_back(r);
+}
+
+void test_find_all(const std::string& re, const std::string& text, const std::string& description, bool icase)
+{
+ std::cout << "Testing: " << re << std::endl;
+
+ double time;
+ results r(re, description);
+
+#ifdef BOOST_HAS_GRETA
+ if(time_greta == true)
+ {
+ time = g::time_find_all(re, text, icase);
+ r.greta_time = time;
+ std::cout << "\tGRETA regex: " << time << "s\n";
+ }
+ if(time_safe_greta == true)
+ {
+ time = gs::time_find_all(re, text, icase);
+ r.safe_greta_time = time;
+ std::cout << "\tSafe GRETA regex: " << time << "s\n";
+ }
+#endif
+ if(time_boost == true)
+ {
+ time = b::time_find_all(re, text, icase);
+ r.boost_time = time;
+ std::cout << "\tBoost regex: " << time << "s\n";
+ }
+ if(time_localised_boost == true)
+ {
+ time = bl::time_find_all(re, text, icase);
+ r.localised_boost_time = time;
+ std::cout << "\tBoost regex (C++ locale): " << time << "s\n";
+ }
+#ifdef BOOST_HAS_POSIX
+ if(time_posix == true)
+ {
+ time = posix::time_find_all(re, text, icase);
+ r.posix_time = time;
+ std::cout << "\tPOSIX regex: " << time << "s\n";
+ }
+#endif
+#ifdef BOOST_HAS_PCRE
+ if(time_pcre == true)
+ {
+ time = pcr::time_find_all(re, text, icase);
+ r.pcre_time = time;
+ std::cout << "\tPCRE regex: " << time << "s\n";
+ }
+#endif
+#ifdef BOOST_HAS_XPRESSIVE
+ if(time_xpressive == true)
+ {
+ time = dxpr::time_find_all(re, text, icase);
+ r.xpressive_time = time;
+ std::cout << "\txpressive regex: " << time << "s\n";
+ }
+#endif
+ r.finalise();
+ result_list.push_back(r);
+}
+
+int cpp_main(int argc, char * argv[])
+{
+ // start by processing the command line args:
+ if(argc < 2)
+ return show_usage();
+ int result = 0;
+ for(int c = 1; c < argc; ++c)
+ {
+ result += handle_argument(argv[c]);
+ }
+ if(result)
+ return result;
+
+ if(test_matches)
+ {
+ // start with a simple test, this is basically a measure of the minimal overhead
+ // involved in calling a regex matcher:
+ test_match("abc", "abc");
+ // these are from the regex docs:
+ test_match("^([0-9]+)(\\-| |$)(.*)$", "100- this is a line of ftp response which contains a message string");
+ test_match("([[:digit:]]{4}[- ]){3}[[:digit:]]{3,4}", "1234-5678-1234-456");
+ // these are from http://www.regxlib.com/
+ test_match("^([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$", "john_at_[hidden]");
+ test_match("^([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$", "foo12_at_[hidden]");
+ test_match("^([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$", "bob.smith_at_[hidden]");
+ test_match("^[a-zA-Z]{1,2}[0-9][0-9A-Za-z]{0,1} {0,1}[0-9][A-Za-z]{2}$", "EH10 2QQ");
+ test_match("^[a-zA-Z]{1,2}[0-9][0-9A-Za-z]{0,1} {0,1}[0-9][A-Za-z]{2}$", "G1 1AA");
+ test_match("^[a-zA-Z]{1,2}[0-9][0-9A-Za-z]{0,1} {0,1}[0-9][A-Za-z]{2}$", "SW1 1ZZ");
+ test_match("^[[:digit:]]{1,2}/[[:digit:]]{1,2}/[[:digit:]]{4}$", "4/1/2001");
+ test_match("^[[:digit:]]{1,2}/[[:digit:]]{1,2}/[[:digit:]]{4}$", "12/12/2001");
+ test_match("^[-+]?[[:digit:]]*\\.?[[:digit:]]*$", "123");
+ test_match("^[-+]?[[:digit:]]*\\.?[[:digit:]]*$", "+3.14159");
+ test_match("^[-+]?[[:digit:]]*\\.?[[:digit:]]*$", "-3.14159");
+ }
+ output_html_results(true, "%short_matches%");
+
+ std::string file_contents;
+
+ if(test_code)
+ {
+ load_file(file_contents, "../../../boost/crc.hpp");
+
+ const char* highlight_expression = // preprocessor directives: index 1
+ "(^[ \t]*#(?:[^\\\\\\n]|\\\\[^\\n_[:punct:][:alnum:]]*[\\n[:punct:][:word:]])*)|"
+ // comment: index 2
+ "(//[^\\n]*|/\\*.*?\\*/)|"
+ // literals: index 3
+ "\\<([+-]?(?:(?:0x[[:xdigit:]]+)|(?:(?:[[:digit:]]*\\.)?[[:digit:]]+(?:[eE][+-]?[[:digit:]]+)?))u?(?:(?:int(?:8|16|32|64))|L)?)\\>|"
+ // string literals: index 4
+ "('(?:[^\\\\']|\\\\.)*'|\"(?:[^\\\\\"]|\\\\.)*\")|"
+ // keywords: index 5
+ "\\<(__asm|__cdecl|__declspec|__export|__far16|__fastcall|__fortran|__import"
+ "|__pascal|__rtti|__stdcall|_asm|_cdecl|__except|_export|_far16|_fastcall"
+ "|__finally|_fortran|_import|_pascal|_stdcall|__thread|__try|asm|auto|bool"
+ "|break|case|catch|cdecl|char|class|const|const_cast|continue|default|delete"
+ "|do|double|dynamic_cast|else|enum|explicit|extern|false|float|for|friend|goto"
+ "|if|inline|int|long|mutable|namespace|new|operator|pascal|private|protected"
+ "|public|register|reinterpret_cast|return|short|signed|sizeof|static|static_cast"
+ "|struct|switch|template|this|throw|true|try|typedef|typeid|typename|union|unsigned"
+ "|using|virtual|void|volatile|wchar_t|while)\\>"
+ ;
+
+ const char* class_expression = "^(template[[:space:]]*<[^;:{]+>[[:space:]]*)?"
+ "(class|struct)[[:space:]]*(\\<\\w+\\>([ \t]*\\([^)]*\\))?"
+ "[[:space:]]*)*(\\<\\w*\\>)[[:space:]]*(<[^;:{]+>[[:space:]]*)?"
+ "(\\{|:[^;\\{()]*\\{)";
+
+ const char* include_expression = "^[ \t]*#[ \t]*include[ \t]+(\"[^\"]+\"|<[^>]+>)";
+ const char* boost_include_expression = "^[ \t]*#[ \t]*include[ \t]+(\"boost/[^\"]+\"|<boost/[^>]+>)";
+
+
+ test_find_all(class_expression, file_contents);
+ test_find_all(highlight_expression, file_contents);
+ test_find_all(include_expression, file_contents);
+ test_find_all(boost_include_expression, file_contents);
+ }
+ output_html_results(false, "%code_search%");
+
+ if(test_html)
+ {
+ load_file(file_contents, "../../../libs/libraries.htm");
+ test_find_all("beman|john|dave", file_contents, true);
+ test_find_all("<p>.*?</p>", file_contents, true);
+ test_find_all("<a[^>]+href=(\"[^\"]*\"|[^[:space:]]+)[^>]*>", file_contents, true);
+ test_find_all("<h[12345678][^>]*>.*?</h[12345678]>", file_contents, true);
+ test_find_all("<img[^>]+src=(\"[^\"]*\"|[^[:space:]]+)[^>]*>", file_contents, true);
+ test_find_all("<font[^>]+face=(\"[^\"]*\"|[^[:space:]]+)[^>]*>.*?</font>", file_contents, true);
+ }
+ output_html_results(false, "%html_search%");
+
+ if(test_short_twain)
+ {
+ load_file(file_contents, "short_twain.txt");
+
+ test_find_all("Twain", file_contents);
+ test_find_all("Huck[[:alpha:]]+", file_contents);
+ test_find_all("[[:alpha:]]+ing", file_contents);
+ test_find_all("^[^\n]*?Twain", file_contents);
+ test_find_all("Tom|Sawyer|Huckleberry|Finn", file_contents);
+ test_find_all("(Tom|Sawyer|Huckleberry|Finn).{0,30}river|river.{0,30}(Tom|Sawyer|Huckleberry|Finn)", file_contents);
+ }
+ output_html_results(false, "%short_twain_search%");
+
+ if(test_long_twain)
+ {
+ load_file(file_contents, "mtent13.txt");
+
+ test_find_all("Twain", file_contents);
+ test_find_all("Huck[[:alpha:]]+", file_contents);
+ test_find_all("[[:alpha:]]+ing", file_contents);
+ test_find_all("^[^\n]*?Twain", file_contents);
+ test_find_all("Tom|Sawyer|Huckleberry|Finn", file_contents);
+ time_posix = false;
+ test_find_all("(Tom|Sawyer|Huckleberry|Finn).{0,30}river|river.{0,30}(Tom|Sawyer|Huckleberry|Finn)", file_contents);
+ time_posix = true;
+ }
+ output_html_results(false, "%long_twain_search%");
+
+ output_final_html();
+ return 0;
+}
+
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/performance/regex_comparison.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/performance/regex_comparison.hpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,148 @@
+/*
+ *
+ * Copyright (c) 2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+
+#ifndef REGEX_COMPARISON_HPP
+#define REGEX_COMPARISON_HPP
+
+#include <string>
+#include <list>
+#include <boost/limits.hpp>
+
+//
+// globals:
+//
+extern bool time_boost;
+extern bool time_localised_boost;
+extern bool time_greta;
+extern bool time_safe_greta;
+extern bool time_posix;
+extern bool time_pcre;
+extern bool time_xpressive;
+
+extern bool test_matches;
+extern bool test_short_twain;
+extern bool test_long_twain;
+extern bool test_code;
+extern bool test_html;
+
+extern std::string html_template_file;
+extern std::string html_out_file;
+extern std::string html_contents;
+
+
+int handle_argument(const std::string& what);
+int show_usage();
+void load_file(std::string& text, const char* file);
+void output_html_results(bool show_description, const std::string& tagname);
+void output_final_html();
+
+
+struct results
+{
+ double boost_time;
+ double localised_boost_time;
+ double greta_time;
+ double safe_greta_time;
+ double posix_time;
+ double pcre_time;
+ double xpressive_time;
+ double factor;
+ std::string expression;
+ std::string description;
+ results(const std::string& ex, const std::string& desc)
+ : boost_time(-1),
+ localised_boost_time(-1),
+ greta_time(-1),
+ safe_greta_time(-1),
+ posix_time(-1),
+ pcre_time(-1),
+ xpressive_time(-1),
+ factor((std::numeric_limits<double>::max)()),
+ expression(ex),
+ description(desc)
+ {}
+ void finalise()
+ {
+ if((boost_time >= 0) && (boost_time < factor))
+ factor = boost_time;
+ if((localised_boost_time >= 0) && (localised_boost_time < factor))
+ factor = localised_boost_time;
+ if((greta_time >= 0) && (greta_time < factor))
+ factor = greta_time;
+ if((safe_greta_time >= 0) && (safe_greta_time < factor))
+ factor = safe_greta_time;
+ if((posix_time >= 0) && (posix_time < factor))
+ factor = posix_time;
+ if((pcre_time >= 0) && (pcre_time < factor))
+ factor = pcre_time;
+ if((xpressive_time >= 0) && (xpressive_time < factor))
+ factor = xpressive_time;
+ }
+};
+
+extern std::list<results> result_list;
+
+
+namespace b {
+// boost tests:
+double time_match(const std::string& re, const std::string& text, bool icase);
+double time_find_all(const std::string& re, const std::string& text, bool icase);
+
+}
+namespace bl {
+// localised boost tests:
+double time_match(const std::string& re, const std::string& text, bool icase);
+double time_find_all(const std::string& re, const std::string& text, bool icase);
+
+}
+namespace pcr {
+// pcre tests:
+double time_match(const std::string& re, const std::string& text, bool icase);
+double time_find_all(const std::string& re, const std::string& text, bool icase);
+
+}
+namespace g {
+// greta tests:
+double time_match(const std::string& re, const std::string& text, bool icase);
+double time_find_all(const std::string& re, const std::string& text, bool icase);
+
+}
+namespace gs {
+// safe greta tests:
+double time_match(const std::string& re, const std::string& text, bool icase);
+double time_find_all(const std::string& re, const std::string& text, bool icase);
+
+}
+namespace posix {
+// safe greta tests:
+double time_match(const std::string& re, const std::string& text, bool icase);
+double time_find_all(const std::string& re, const std::string& text, bool icase);
+
+}
+namespace dxpr {
+// xpressive tests:
+double time_match(const std::string& re, const std::string& text, bool icase);
+double time_find_all(const std::string& re, const std::string& text, bool icase);
+}
+
+void test_match(const std::string& re, const std::string& text, const std::string& description, bool icase = false);
+void test_find_all(const std::string& re, const std::string& text, const std::string& description, bool icase = false);
+inline void test_match(const std::string& re, const std::string& text, bool icase = false)
+{ test_match(re, text, text, icase); }
+inline void test_find_all(const std::string& re, const std::string& text, bool icase = false)
+{ test_find_all(re, text, "", icase); }
+
+
+#define REPEAT_COUNT 10
+
+#endif
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/performance/time_boost.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/performance/time_boost.cpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,119 @@
+/*
+ *
+ * Copyright (c) 2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+#include "regex_comparison.hpp"
+#include <iostream>
+#include <boost/timer.hpp>
+#include <boost/regex.hpp>
+
+namespace b{
+
+double time_match(const std::string& re, const std::string& text, bool icase)
+{
+ try{
+ boost::regex e(re, (icase ? boost::regex::perl | boost::regex::icase : boost::regex::perl));
+ boost::smatch what;
+ boost::timer tim;
+ int iter = 1;
+ int counter, repeats;
+ double result = 0;
+ double run;
+ do
+ {
+ tim.restart();
+ for(counter = 0; counter < iter; ++counter)
+ {
+ boost::regex_match(text, what, e);
+ }
+ result = tim.elapsed();
+ iter *= 2;
+ }while(result < 0.5);
+ iter /= 2;
+
+ // repeat test and report least value for consistency:
+ for(repeats = 0; repeats < REPEAT_COUNT; ++repeats)
+ {
+ tim.restart();
+ for(counter = 0; counter < iter; ++counter)
+ {
+ boost::regex_match(text, what, e);
+ }
+ run = tim.elapsed();
+ result = (std::min)(run, result);
+ }
+ return result / iter;
+ }
+ catch(const std::exception& e)
+ {
+ std::cout << "Exception: " << e.what() << std::endl;
+ return -1;
+ }
+}
+
+bool dummy_grep_proc(const boost::smatch&)
+{ return true; }
+
+struct noop
+{
+ void operator()( boost::smatch const & ) const
+ {
+ }
+};
+
+double time_find_all(const std::string& re, const std::string& text, bool icase)
+{
+ try{
+ boost::regex e(re, (icase ? boost::regex::perl | boost::regex::icase : boost::regex::perl));
+ boost::smatch what;
+ boost::timer tim;
+ int iter = 1;
+ int counter, repeats;
+ double result = 0;
+ double run;
+ do
+ {
+ tim.restart();
+ for(counter = 0; counter < iter; ++counter)
+ {
+ boost::sregex_iterator begin( text.begin(), text.end(), e ), end;
+ std::for_each( begin, end, noop() );
+ //boost::regex_grep(&dummy_grep_proc, text, e);
+ }
+ result = tim.elapsed();
+ iter *= 2;
+ }while(result < 0.5);
+ iter /= 2;
+
+ if(result >10)
+ return result / iter;
+
+ // repeat test and report least value for consistency:
+ for(repeats = 0; repeats < REPEAT_COUNT; ++repeats)
+ {
+ tim.restart();
+ for(counter = 0; counter < iter; ++counter)
+ {
+ boost::regex_grep(&dummy_grep_proc, text, e);
+ }
+ run = tim.elapsed();
+ result = (std::min)(run, result);
+ }
+ return result / iter;
+ }
+ catch(const std::exception& e)
+ {
+ std::cout << "Exception: " << e.what() << std::endl;
+ return -1;
+ }
+}
+
+}
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/performance/time_dynamic_xpressive.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/performance/time_dynamic_xpressive.cpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,144 @@
+/*
+ *
+ * Copyright (c) 2004
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+#include "regex_comparison.hpp"
+
+#ifdef BOOST_HAS_XPRESSIVE
+#include <cassert>
+#include <iostream>
+#include <boost/timer.hpp>
+#include <boost/xpressive/xpressive.hpp>
+
+namespace dxpr
+{
+
+double time_match(const std::string& re, const std::string& text, bool icase)
+{
+ try{
+ boost::xpressive::regex_constants::syntax_option_type flags = boost::xpressive::regex_constants::optimize;
+ if(icase)
+ flags = flags | boost::xpressive::regex_constants::icase;
+ boost::xpressive::sregex e(boost::xpressive::sregex::compile(re, flags));
+ boost::xpressive::smatch what;
+ boost::timer tim;
+ int iter = 1;
+ int counter, repeats;
+ double result = 0;
+ double run;
+ assert(boost::xpressive::regex_match( text, what, e ));
+ do
+ {
+ tim.restart();
+ for(counter = 0; counter < iter; ++counter)
+ {
+ boost::xpressive::regex_match( text, what, e );
+ }
+ result = tim.elapsed();
+ iter *= 2;
+ } while(result < 0.5);
+ iter /= 2;
+
+ // repeat test and report least value for consistency:
+ for(repeats = 0; repeats < REPEAT_COUNT; ++repeats)
+ {
+ tim.restart();
+ for(counter = 0; counter < iter; ++counter)
+ {
+ boost::xpressive::regex_match( text, what, e );
+ }
+ run = tim.elapsed();
+ result = (std::min)(run, result);
+ }
+ return result / iter;
+ }
+ catch(const std::exception& e)
+ {
+ std::cout << "Exception: " << e.what() << std::endl;
+ return -1;
+ }
+}
+
+struct noop
+{
+ void operator()( boost::xpressive::smatch const & ) const
+ {
+ }
+};
+
+double time_find_all(const std::string& re, const std::string& text, bool icase)
+{
+ try{
+ boost::xpressive::regex_constants::syntax_option_type flags = boost::xpressive::regex_constants::optimize;
+ if(icase)
+ flags = flags | boost::xpressive::regex_constants::icase;
+ boost::xpressive::sregex e(boost::xpressive::sregex::compile(re, flags));
+ boost::xpressive::smatch what;
+ boost::timer tim;
+ int iter = 1;
+ int counter, repeats;
+ double result = 0;
+ double run;
+ do
+ {
+ tim.restart();
+ for(counter = 0; counter < iter; ++counter)
+ {
+ boost::xpressive::sregex_iterator begin( text.begin(), text.end(), e ), end;
+ std::for_each( begin, end, noop() );
+ }
+ result = tim.elapsed();
+ iter *= 2;
+ }while(result < 0.5);
+ iter /= 2;
+
+ if(result >10)
+ return result / iter;
+
+ // repeat test and report least value for consistency:
+ for(repeats = 0; repeats < REPEAT_COUNT; ++repeats)
+ {
+ tim.restart();
+ for(counter = 0; counter < iter; ++counter)
+ {
+ boost::xpressive::sregex_iterator begin( text.begin(), text.end(), e ), end;
+ std::for_each( begin, end, noop() );
+ }
+ run = tim.elapsed();
+ result = (std::min)(run, result);
+ }
+ return result / iter;
+ }
+ catch(const std::exception& e)
+ {
+ std::cout << "Exception: " << e.what() << std::endl;
+ return -1;
+ }
+}
+
+}
+
+#else
+
+namespace dxpr{
+
+double time_match(const std::string& re, const std::string& text, bool icase)
+{
+ return -1;
+}
+double time_find_all(const std::string& re, const std::string& text, bool icase)
+{
+ return -1;
+}
+
+}
+#endif
+
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/performance/time_greta.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/performance/time_greta.cpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,122 @@
+/*
+ *
+ * Copyright (c) 2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+#include "regex_comparison.hpp"
+#if defined(BOOST_HAS_GRETA)
+#include <cassert>
+#include <boost/timer.hpp>
+#include "regexpr2.h"
+
+namespace g{
+
+double time_match(const std::string& re, const std::string& text, bool icase)
+{
+ regex::rpattern e(re, (icase ? regex::MULTILINE | regex::NORMALIZE | regex::NOCASE : regex::MULTILINE | regex::NORMALIZE));
+ regex::match_results what;
+ boost::timer tim;
+ int iter = 1;
+ int counter, repeats;
+ double result = 0;
+ double run;
+ assert(e.match(text, what));
+ do
+ {
+ tim.restart();
+ for(counter = 0; counter < iter; ++counter)
+ {
+ e.match(text, what);
+ }
+ result = tim.elapsed();
+ iter *= 2;
+ }while(result < 0.5);
+ iter /= 2;
+
+ // repeat test and report least value for consistency:
+ for(repeats = 0; repeats < REPEAT_COUNT; ++repeats)
+ {
+ tim.restart();
+ for(counter = 0; counter < iter; ++counter)
+ {
+ e.match(text, what);
+ }
+ run = tim.elapsed();
+ result = (std::min)(run, result);
+ }
+ return result / iter;
+}
+
+double time_find_all(const std::string& re, const std::string& text, bool icase)
+{
+ regex::rpattern e(re, (icase ? regex::MULTILINE | regex::NORMALIZE | regex::NOCASE : regex::MULTILINE | regex::NORMALIZE));
+ regex::match_results what;
+ boost::timer tim;
+ int iter = 1;
+ int counter, repeats;
+ double result = 0;
+ double run;
+ do
+ {
+ tim.restart();
+ for(counter = 0; counter < iter; ++counter)
+ {
+ e.match(text.begin(), text.end(), what);
+ while(what.backref(0).matched)
+ {
+ e.match(what.backref(0).end(), text.end(), what);
+ }
+ }
+ result = tim.elapsed();
+ iter *= 2;
+ }while(result < 0.5);
+ iter /= 2;
+
+ if(result > 10)
+ return result / iter;
+
+ // repeat test and report least value for consistency:
+ for(repeats = 0; repeats < REPEAT_COUNT; ++repeats)
+ {
+ tim.restart();
+ for(counter = 0; counter < iter; ++counter)
+ {
+ e.match(text.begin(), text.end(), what);
+ while(what.backref(0).matched)
+ {
+ e.match(what.backref(0).end(), text.end(), what);
+ }
+ }
+ run = tim.elapsed();
+ result = (std::min)(run, result);
+ }
+ return result / iter;
+}
+
+}
+
+#else
+
+namespace g {
+
+double time_match(const std::string& re, const std::string& text, bool icase)
+{
+ return -1;
+}
+
+double time_find_all(const std::string& re, const std::string& text, bool icase)
+{
+ return -1;
+}
+
+}
+
+#endif
+
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/performance/time_localised_boost.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/performance/time_localised_boost.cpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,107 @@
+/*
+ *
+ * Copyright (c) 2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+#include "regex_comparison.hpp"
+#include <boost/timer.hpp>
+#include <boost/regex.hpp>
+
+namespace bl{
+
+double time_match(const std::string& re, const std::string& text, bool icase)
+{
+ boost::basic_regex<char, boost::cpp_regex_traits<char> > e(re, (icase ? boost::regex::perl | boost::regex::icase : boost::regex::perl));
+ boost::smatch what;
+ boost::timer tim;
+ int iter = 1;
+ int counter, repeats;
+ double result = 0;
+ double run;
+ do
+ {
+ tim.restart();
+ for(counter = 0; counter < iter; ++counter)
+ {
+ boost::regex_match(text, what, e);
+ }
+ result = tim.elapsed();
+ iter *= 2;
+ }while(result < 0.5);
+ iter /= 2;
+
+ // repeat test and report least value for consistency:
+ for(repeats = 0; repeats < REPEAT_COUNT; ++repeats)
+ {
+ tim.restart();
+ for(counter = 0; counter < iter; ++counter)
+ {
+ boost::regex_match(text, what, e);
+ }
+ run = tim.elapsed();
+ result = (std::min)(run, result);
+ }
+ return result / iter;
+}
+
+bool dummy_grep_proc(const boost::smatch&)
+{ return true; }
+
+struct noop
+{
+ void operator()( boost::smatch const & ) const
+ {
+ }
+};
+
+double time_find_all(const std::string& re, const std::string& text, bool icase)
+{
+ boost::basic_regex<char, boost::cpp_regex_traits<char> > e(re, (icase ? boost::regex::perl | boost::regex::icase : boost::regex::perl));
+ boost::smatch what;
+ boost::timer tim;
+ int iter = 1;
+ int counter, repeats;
+ double result = 0;
+ double run;
+ do
+ {
+ tim.restart();
+ for(counter = 0; counter < iter; ++counter)
+ {
+ boost::regex_iterator<
+ std::string::const_iterator,
+ char,
+ boost::cpp_regex_traits<char> > begin( text.begin(), text.end(), e ), end;
+ std::for_each( begin, end, noop() );
+ //boost::regex_grep(&dummy_grep_proc, text, e);
+ }
+ result = tim.elapsed();
+ iter *= 2;
+ }while(result < 0.5);
+ iter /= 2;
+
+ if(result >10)
+ return result / iter;
+
+ // repeat test and report least value for consistency:
+ for(repeats = 0; repeats < REPEAT_COUNT; ++repeats)
+ {
+ tim.restart();
+ for(counter = 0; counter < iter; ++counter)
+ {
+ boost::regex_grep(&dummy_grep_proc, text, e);
+ }
+ run = tim.elapsed();
+ result = (std::min)(run, result);
+ }
+ return result / iter;
+}
+
+}
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/performance/time_pcre.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/performance/time_pcre.cpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,176 @@
+/*
+ *
+ * Copyright (c) 2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+#include <cassert>
+#include <cfloat>
+#include "regex_comparison.hpp"
+#ifdef BOOST_HAS_PCRE
+#include "pcre.h"
+#include <boost/timer.hpp>
+
+namespace pcr{
+
+double time_match(const std::string& re, const std::string& text, bool icase)
+{
+ pcre *ppcre;
+ const char *error;
+ int erroffset;
+
+ int what[50];
+
+ boost::timer tim;
+ int iter = 1;
+ int counter, repeats;
+ double result = 0;
+ double run;
+
+ if(0 == (ppcre = pcre_compile(re.c_str(), (icase ? PCRE_CASELESS | PCRE_ANCHORED | PCRE_DOTALL | PCRE_MULTILINE : PCRE_ANCHORED | PCRE_DOTALL | PCRE_MULTILINE),
+ &error, &erroffset, NULL)))
+ {
+ free(ppcre);
+ return -1;
+ }
+
+ pcre_extra *pe;
+ pe = pcre_study(ppcre, 0, &error);
+ if(error)
+ {
+ free(ppcre);
+ free(pe);
+ return -1;
+ }
+
+ do
+ {
+ tim.restart();
+ for(counter = 0; counter < iter; ++counter)
+ {
+ erroffset = pcre_exec(ppcre, pe, text.c_str(), text.size(), 0, 0, what, sizeof(what)/sizeof(int));
+ }
+ result = tim.elapsed();
+ iter *= 2;
+ }while(result < 0.5);
+ iter /= 2;
+
+ // repeat test and report least value for consistency:
+ for(repeats = 0; repeats < REPEAT_COUNT; ++repeats)
+ {
+ tim.restart();
+ for(counter = 0; counter < iter; ++counter)
+ {
+ erroffset = pcre_exec(ppcre, pe, text.c_str(), text.size(), 0, 0, what, sizeof(what)/sizeof(int));
+ }
+ run = tim.elapsed();
+ result = (std::min)(run, result);
+ }
+ free(ppcre);
+ free(pe);
+ return result / iter;
+}
+
+double time_find_all(const std::string& re, const std::string& text, bool icase)
+{
+ pcre *ppcre;
+ const char *error;
+ int erroffset;
+
+ int what[50];
+
+ boost::timer tim;
+ int iter = 1;
+ int counter, repeats;
+ double result = 0;
+ double run;
+ int exec_result;
+ int matches;
+
+ if(0 == (ppcre = pcre_compile(re.c_str(), (icase ? PCRE_CASELESS | PCRE_DOTALL | PCRE_MULTILINE : PCRE_DOTALL | PCRE_MULTILINE), &error, &erroffset, NULL)))
+ {
+ free(ppcre);
+ return -1;
+ }
+
+ pcre_extra *pe;
+ pe = pcre_study(ppcre, 0, &error);
+ if(error)
+ {
+ free(ppcre);
+ free(pe);
+ return -1;
+ }
+
+ do
+ {
+ int startoff;
+ tim.restart();
+ for(counter = 0; counter < iter; ++counter)
+ {
+ matches = 0;
+ startoff = 0;
+ exec_result = pcre_exec(ppcre, pe, text.c_str(), text.size(), startoff, 0, what, sizeof(what)/sizeof(int));
+ while(exec_result >= 0)
+ {
+ ++matches;
+ startoff = what[1];
+ exec_result = pcre_exec(ppcre, pe, text.c_str(), text.size(), startoff, 0, what, sizeof(what)/sizeof(int));
+ }
+ }
+ result = tim.elapsed();
+ iter *= 2;
+ }while(result < 0.5);
+ iter /= 2;
+
+ if(result >10)
+ return result / iter;
+
+ result = DBL_MAX;
+
+ // repeat test and report least value for consistency:
+ for(repeats = 0; repeats < REPEAT_COUNT; ++repeats)
+ {
+ int startoff;
+ matches = 0;
+ tim.restart();
+ for(counter = 0; counter < iter; ++counter)
+ {
+ matches = 0;
+ startoff = 0;
+ exec_result = pcre_exec(ppcre, pe, text.c_str(), text.size(), startoff, 0, what, sizeof(what)/sizeof(int));
+ while(exec_result >= 0)
+ {
+ ++matches;
+ startoff = what[1];
+ exec_result = pcre_exec(ppcre, pe, text.c_str(), text.size(), startoff, 0, what, sizeof(what)/sizeof(int));
+ }
+ }
+ run = tim.elapsed();
+ result = (std::min)(run, result);
+ }
+ return result / iter;
+}
+
+}
+#else
+
+namespace pcr{
+
+double time_match(const std::string& re, const std::string& text, bool icase)
+{
+ return -1;
+}
+double time_find_all(const std::string& re, const std::string& text, bool icase)
+{
+ return -1;
+}
+
+}
+
+#endif

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/performance/time_posix.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/performance/time_posix.cpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,139 @@
+/*
+ *
+ * Copyright (c) 2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+#include <cassert>
+#include <cfloat>
+#include "regex_comparison.hpp"
+#ifdef BOOST_HAS_POSIX
+#include <boost/timer.hpp>
+#include "regex.h"
+
+namespace posix{
+
+double time_match(const std::string& re, const std::string& text, bool icase)
+{
+ regex_t e;
+ regmatch_t what[20];
+ boost::timer tim;
+ int iter = 1;
+ int counter, repeats;
+ double result = 0;
+ double run;
+ if(0 != ::regcomp(&e, re.c_str(), (icase ? REG_ICASE | REG_EXTENDED : REG_EXTENDED)))
+ return -1;
+ do
+ {
+ tim.restart();
+ for(counter = 0; counter < iter; ++counter)
+ {
+ regexec(&e, text.c_str(), e.re_nsub, what, 0);
+ }
+ result = tim.elapsed();
+ iter *= 2;
+ }while(result < 0.5);
+ iter /= 2;
+
+ // repeat test and report least value for consistency:
+ for(repeats = 0; repeats < REPEAT_COUNT; ++repeats)
+ {
+ tim.restart();
+ for(counter = 0; counter < iter; ++counter)
+ {
+ regexec(&e, text.c_str(), e.re_nsub, what, 0);
+ }
+ run = tim.elapsed();
+ result = (std::min)(run, result);
+ }
+ regfree(&e);
+ return result / iter;
+}
+
+double time_find_all(const std::string& re, const std::string& text, bool icase)
+{
+ regex_t e;
+ regmatch_t what[20];
+ memset(what, 0, sizeof(what));
+ boost::timer tim;
+ int iter = 1;
+ int counter, repeats;
+ double result = 0;
+ double run;
+ int exec_result;
+ int matches;
+ if(0 != regcomp(&e, re.c_str(), (icase ? REG_ICASE | REG_EXTENDED : REG_EXTENDED)))
+ return -1;
+ do
+ {
+ tim.restart();
+ for(counter = 0; counter < iter; ++counter)
+ {
+ what[0].rm_so = 0;
+ what[0].rm_eo = text.size();
+ matches = 0;
+ exec_result = regexec(&e, text.c_str(), 20, what, REG_STARTEND);
+ while(exec_result == 0)
+ {
+ ++matches;
+ what[0].rm_so = what[0].rm_eo;
+ what[0].rm_eo = text.size();
+ exec_result = regexec(&e, text.c_str(), 20, what, REG_STARTEND);
+ }
+ }
+ result = tim.elapsed();
+ iter *= 2;
+ }while(result < 0.5);
+ iter /= 2;
+
+ if(result >10)
+ return result / iter;
+
+ result = DBL_MAX;
+
+ // repeat test and report least value for consistency:
+ for(repeats = 0; repeats < REPEAT_COUNT; ++repeats)
+ {
+ tim.restart();
+ for(counter = 0; counter < iter; ++counter)
+ {
+ what[0].rm_so = 0;
+ what[0].rm_eo = text.size();
+ matches = 0;
+ exec_result = regexec(&e, text.c_str(), 20, what, REG_STARTEND);
+ while(exec_result == 0)
+ {
+ ++matches;
+ what[0].rm_so = what[0].rm_eo;
+ what[0].rm_eo = text.size();
+ exec_result = regexec(&e, text.c_str(), 20, what, REG_STARTEND);
+ }
+ }
+ run = tim.elapsed();
+ result = (std::min)(run, result);
+ }
+ return result / iter;
+}
+
+}
+#else
+
+namespace posix{
+
+double time_match(const std::string& re, const std::string& text, bool icase)
+{
+ return -1;
+}
+double time_find_all(const std::string& re, const std::string& text, bool icase)
+{
+ return -1;
+}
+
+}
+#endif

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/performance/time_safe_greta.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/performance/time_safe_greta.cpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,124 @@
+/*
+ *
+ * Copyright (c) 2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+#include "regex_comparison.hpp"
+#if defined(BOOST_HAS_GRETA)
+
+#include <cassert>
+#include <boost/timer.hpp>
+#include "regexpr2.h"
+
+namespace gs{
+
+double time_match(const std::string& re, const std::string& text, bool icase)
+{
+ regex::rpattern e(re, (icase ? regex::MULTILINE | regex::NORMALIZE | regex::NOCASE : regex::MULTILINE | regex::NORMALIZE), regex::MODE_SAFE);
+ regex::match_results what;
+ boost::timer tim;
+ int iter = 1;
+ int counter, repeats;
+ double result = 0;
+ double run;
+ assert(e.match(text, what));
+ do
+ {
+ tim.restart();
+ for(counter = 0; counter < iter; ++counter)
+ {
+ e.match(text, what);
+ }
+ result = tim.elapsed();
+ iter *= 2;
+ }while(result < 0.5);
+ iter /= 2;
+
+ // repeat test and report least value for consistency:
+ for(repeats = 0; repeats < REPEAT_COUNT; ++repeats)
+ {
+ tim.restart();
+ for(counter = 0; counter < iter; ++counter)
+ {
+ e.match(text, what);
+ }
+ run = tim.elapsed();
+ result = (std::min)(run, result);
+ }
+ return result / iter;
+}
+
+double time_find_all(const std::string& re, const std::string& text, bool icase)
+{
+ regex::rpattern e(re, (icase ? regex::MULTILINE | regex::NORMALIZE | regex::NOCASE : regex::MULTILINE | regex::NORMALIZE), regex::MODE_SAFE);
+ regex::match_results what;
+ boost::timer tim;
+ int iter = 1;
+ int counter, repeats;
+ double result = 0;
+ double run;
+ do
+ {
+ bool r;
+ tim.restart();
+ for(counter = 0; counter < iter; ++counter)
+ {
+ e.match(text.begin(), text.end(), what);
+ while(what.backref(0).matched)
+ {
+ e.match(what.backref(0).end(), text.end(), what);
+ }
+ }
+ result = tim.elapsed();
+ iter *= 2;
+ }while(result < 0.5);
+ iter /= 2;
+
+ if(result > 10)
+ return result / iter;
+
+ // repeat test and report least value for consistency:
+ for(repeats = 0; repeats < REPEAT_COUNT; ++repeats)
+ {
+ tim.restart();
+ for(counter = 0; counter < iter; ++counter)
+ {
+ e.match(text.begin(), text.end(), what);
+ while(what.backref(0).matched)
+ {
+ e.match(what.backref(0).end(), text.end(), what);
+ }
+ }
+ run = tim.elapsed();
+ result = (std::min)(run, result);
+ }
+ return result / iter;
+}
+
+}
+
+#else
+
+namespace gs{
+
+double time_match(const std::string& re, const std::string& text, bool icase)
+{
+ return -1;
+}
+
+double time_find_all(const std::string& re, const std::string& text, bool icase)
+{
+ return -1;
+}
+
+}
+
+#endif
+
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/readme.txt
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/readme.txt 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,21 @@
+Copyright (c) 1998-2003
+John Maddock
+
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+************************************************************************
+
+Full instructions for use of this library can be accessed from
+libs/regex/docs/index.html
+
+Installation instructions and library overview is are in
+libs/regex/docs/introduction.html
+
+This library is part of boost (see www.boost.org), the latest version
+of the library is available from the boost web site, or development
+snapshots from the boost cvs repository at
+http://sourceforge.net/project/?group_id=7586
+
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/src/c_regex_traits.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/src/c_regex_traits.cpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,206 @@
+/*
+ *
+ * Copyright (c) 2004
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE: c_regex_traits.cpp
+ * VERSION: see <boost/version.hpp>
+ * DESCRIPTION: Implements out of line c_regex_traits<char> members
+ */
+
+
+#define BOOST_REGEX_SOURCE
+
+#include <boost/config.hpp>
+#include <boost/detail/workaround.hpp>
+
+#if !BOOST_WORKAROUND(__BORLANDC__, < 0x560)
+
+#include <boost/regex/v4/c_regex_traits.hpp>
+#include <boost/regex/v4/primary_transform.hpp>
+#include <boost/regex/v4/regex_traits_defaults.hpp>
+
+#ifdef BOOST_NO_STDC_NAMESPACE
+namespace std{
+ using ::strxfrm; using ::isspace;
+ using ::ispunct; using ::isalpha;
+ using ::isalnum; using ::iscntrl;
+ using ::isprint; using ::isupper;
+ using ::islower; using ::isdigit;
+ using ::isxdigit; using ::strtol;
+}
+#endif
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+
+namespace boost{
+
+c_regex_traits<char>::string_type BOOST_REGEX_CALL c_regex_traits<char>::transform(const char* p1, const char* p2)
+{
+ std::string result(10, ' ');
+ std::size_t s = result.size();
+ std::size_t r;
+ std::string src(p1, p2);
+ while(s < (r = std::strxfrm(&*result.begin(), src.c_str(), s)))
+ {
+ result.append(r - s + 3, ' ');
+ s = result.size();
+ }
+ result.erase(r);
+ return result;
+}
+
+c_regex_traits<char>::string_type BOOST_REGEX_CALL c_regex_traits<char>::transform_primary(const char* p1, const char* p2)
+{
+ static char s_delim;
+ static const int s_collate_type = ::boost::re_detail::find_sort_syntax(static_cast<c_regex_traits<char>*>(0), &s_delim);
+ std::string result;
+ //
+ // What we do here depends upon the format of the sort key returned by
+ // sort key returned by this->transform:
+ //
+ switch(s_collate_type)
+ {
+ case ::boost::re_detail::sort_C:
+ case ::boost::re_detail::sort_unknown:
+ // the best we can do is translate to lower case, then get a regular sort key:
+ {
+ result.assign(p1, p2);
+ for(std::string::size_type i = 0; i < result.size(); ++i)
+ result[i] = static_cast<char>((std::tolower)(static_cast<unsigned char>(result[i])));
+ result = transform(&*result.begin(), &*result.begin() + result.size());
+ break;
+ }
+ case ::boost::re_detail::sort_fixed:
+ {
+ // get a regular sort key, and then truncate it:
+ result = transform(p1, p2);
+ result.erase(s_delim);
+ break;
+ }
+ case ::boost::re_detail::sort_delim:
+ // get a regular sort key, and then truncate everything after the delim:
+ result = transform(p1, p2);
+ if(result.size() && (result[0] == s_delim))
+ break;
+ std::size_t i;
+ for(i = 0; i < result.size(); ++i)
+ {
+ if(result[i] == s_delim)
+ break;
+ }
+ result.erase(i);
+ break;
+ }
+ if(result.empty())
+ result = std::string(1, char(0));
+ return result;
+}
+
+enum
+{
+ char_class_space=1<<0,
+ char_class_print=1<<1,
+ char_class_cntrl=1<<2,
+ char_class_upper=1<<3,
+ char_class_lower=1<<4,
+ char_class_alpha=1<<5,
+ char_class_digit=1<<6,
+ char_class_punct=1<<7,
+ char_class_xdigit=1<<8,
+ char_class_alnum=char_class_alpha|char_class_digit,
+ char_class_graph=char_class_alnum|char_class_punct,
+ char_class_blank=1<<9,
+ char_class_word=1<<10,
+ char_class_unicode=1<<11
+};
+
+c_regex_traits<char>::char_class_type BOOST_REGEX_CALL c_regex_traits<char>::lookup_classname(const char* p1, const char* p2)
+{
+ static const char_class_type masks[] =
+ {
+ 0,
+ char_class_alnum,
+ char_class_alpha,
+ char_class_blank,
+ char_class_cntrl,
+ char_class_digit,
+ char_class_digit,
+ char_class_graph,
+ char_class_lower,
+ char_class_lower,
+ char_class_print,
+ char_class_punct,
+ char_class_space,
+ char_class_space,
+ char_class_upper,
+ char_class_unicode,
+ char_class_upper,
+ char_class_alnum | char_class_word,
+ char_class_alnum | char_class_word,
+ char_class_xdigit,
+ };
+
+ int id = ::boost::re_detail::get_default_class_id(p1, p2);
+ if(id < 0)
+ {
+ std::string s(p1, p2);
+ for(std::string::size_type i = 0; i < s.size(); ++i)
+ s[i] = static_cast<char>((std::tolower)(static_cast<unsigned char>(s[i])));
+ id = ::boost::re_detail::get_default_class_id(&*s.begin(), &*s.begin() + s.size());
+ }
+ BOOST_ASSERT(std::size_t(id+1) < sizeof(masks) / sizeof(masks[0]));
+ return masks[id+1];
+}
+
+bool BOOST_REGEX_CALL c_regex_traits<char>::isctype(char c, char_class_type mask)
+{
+ return
+ ((mask & char_class_space) && (std::isspace)(static_cast<unsigned char>(c)))
+ || ((mask & char_class_print) && (std::isprint)(static_cast<unsigned char>(c)))
+ || ((mask & char_class_cntrl) && (std::iscntrl)(static_cast<unsigned char>(c)))
+ || ((mask & char_class_upper) && (std::isupper)(static_cast<unsigned char>(c)))
+ || ((mask & char_class_lower) && (std::islower)(static_cast<unsigned char>(c)))
+ || ((mask & char_class_alpha) && (std::isalpha)(static_cast<unsigned char>(c)))
+ || ((mask & char_class_digit) && (std::isdigit)(static_cast<unsigned char>(c)))
+ || ((mask & char_class_punct) && (std::ispunct)(static_cast<unsigned char>(c)))
+ || ((mask & char_class_xdigit) && (std::isxdigit)(static_cast<unsigned char>(c)))
+ || ((mask & char_class_blank) && (std::isspace)(static_cast<unsigned char>(c)) && !::boost::re_detail::is_separator(c))
+ || ((mask & char_class_word) && (c == '_'));
+}
+
+c_regex_traits<char>::string_type BOOST_REGEX_CALL c_regex_traits<char>::lookup_collatename(const char* p1, const char* p2)
+{
+ std::string s(p1, p2);
+ s = ::boost::re_detail::lookup_default_collate_name(s);
+ if(s.empty() && (p2-p1 == 1))
+ s.append(1, *p1);
+ return s;
+}
+
+int BOOST_REGEX_CALL c_regex_traits<char>::value(char c, int radix)
+{
+ char b[2] = { c, '\0', };
+ char* ep;
+ int result = std::strtol(b, &ep, radix);
+ if(ep == b)
+ return -1;
+ return result;
+}
+
+}
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+
+#endif

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/src/cpp_regex_traits.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/src/cpp_regex_traits.cpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,117 @@
+/*
+ *
+ * Copyright (c) 2004
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE cpp_regex_traits.cpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Implements cpp_regex_traits<char> (and associated helper classes).
+ */
+
+#define BOOST_REGEX_SOURCE
+#include <boost/config.hpp>
+#ifndef BOOST_NO_STD_LOCALE
+#include <boost/regex/regex_traits.hpp>
+#include <boost/regex/pattern_except.hpp>
+
+#ifdef BOOST_NO_STDC_NAMESPACE
+namespace std{
+ using ::memset;
+}
+#endif
+
+namespace boost{ namespace re_detail{
+
+void cpp_regex_traits_char_layer<char>::init()
+{
+ // we need to start by initialising our syntax map so we know which
+ // character is used for which purpose:
+ std::memset(m_char_map, 0, sizeof(m_char_map));
+#ifndef BOOST_NO_STD_MESSAGES
+#ifndef __IBMCPP__
+ std::messages<char>::catalog cat = static_cast<std::messages<char>::catalog>(-1);
+#else
+ std::messages<char>::catalog cat = reinterpret_cast<std::messages<char>::catalog>(-1);
+#endif
+ std::string cat_name(cpp_regex_traits<char>::get_catalog_name());
+ if(cat_name.size())
+ {
+ cat = this->m_pmessages->open(
+ cat_name,
+ this->m_locale);
+ if((int)cat < 0)
+ {
+ std::string m("Unable to open message catalog: ");
+ std::runtime_error err(m + cat_name);
+ boost::re_detail::raise_runtime_error(err);
+ }
+ }
+ //
+ // if we have a valid catalog then load our messages:
+ //
+ if((int)cat >= 0)
+ {
+#ifndef BOOST_NO_EXCEPTIONS
+ try{
+#endif
+ for(regex_constants::syntax_type i = 1; i < regex_constants::syntax_max; ++i)
+ {
+ string_type mss = this->m_pmessages->get(cat, 0, i, get_default_syntax(i));
+ for(string_type::size_type j = 0; j < mss.size(); ++j)
+ {
+ m_char_map[static_cast<unsigned char>(mss[j])] = i;
+ }
+ }
+ this->m_pmessages->close(cat);
+#ifndef BOOST_NO_EXCEPTIONS
+ }
+ catch(...)
+ {
+ this->m_pmessages->close(cat);
+ throw;
+ }
+#endif
+ }
+ else
+ {
+#endif
+ for(regex_constants::syntax_type j = 1; j < regex_constants::syntax_max; ++j)
+ {
+ const char* ptr = get_default_syntax(j);
+ while(ptr && *ptr)
+ {
+ m_char_map[static_cast<unsigned char>(*ptr)] = j;
+ ++ptr;
+ }
+ }
+#ifndef BOOST_NO_STD_MESSAGES
+ }
+#endif
+ //
+ // finish off by calculating our escape types:
+ //
+ unsigned char i = 'A';
+ do
+ {
+ if(m_char_map[i] == 0)
+ {
+ if(this->m_pctype->is(std::ctype_base::lower, i))
+ m_char_map[i] = regex_constants::escape_type_class;
+ else if(this->m_pctype->is(std::ctype_base::upper, i))
+ m_char_map[i] = regex_constants::escape_type_not_class;
+ }
+ }while(0xFF != i++);
+}
+
+} // re_detail
+} // boost
+#endif
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/src/cregex.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/src/cregex.cpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,643 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE: cregex.cpp
+ * VERSION: see <boost/version.hpp>
+ * DESCRIPTION: Implements high level class boost::RexEx
+ */
+
+
+#define BOOST_REGEX_SOURCE
+
+#include <boost/cregex.hpp>
+#include <boost/regex.hpp>
+#if !defined(BOOST_NO_STD_STRING)
+#include <map>
+#include <list>
+#include <boost/regex/v4/fileiter.hpp>
+typedef boost::match_flag_type match_flag_type;
+#include <cstdio>
+
+namespace boost{
+
+#ifdef __BORLANDC__
+#if __BORLANDC__ < 0x530
+//
+// we need to instantiate the vector classes we use
+// since declaring a reference to type doesn't seem to
+// do the job...
+std::vector<std::size_t> inst1;
+std::vector<std::string> inst2;
+#endif
+#endif
+
+namespace{
+
+template <class iterator>
+std::string to_string(iterator i, iterator j)
+{
+ std::string s;
+ while(i != j)
+ {
+ s.append(1, *i);
+ ++i;
+ }
+ return s;
+}
+
+inline std::string to_string(const char* i, const char* j)
+{
+ return std::string(i, j);
+}
+
+}
+namespace re_detail{
+
+class RegExData
+{
+public:
+ enum type
+ {
+ type_pc,
+ type_pf,
+ type_copy
+ };
+ regex e;
+ cmatch m;
+#ifndef BOOST_REGEX_NO_FILEITER
+ match_results<mapfile::iterator> fm;
+#endif
+ type t;
+ const char* pbase;
+#ifndef BOOST_REGEX_NO_FILEITER
+ mapfile::iterator fbase;
+#endif
+ std::map<int, std::string, std::less<int> > strings;
+ std::map<int, std::ptrdiff_t, std::less<int> > positions;
+ void update();
+ void clean();
+ RegExData() : e(), m(),
+#ifndef BOOST_REGEX_NO_FILEITER
+ fm(),
+#endif
+ t(type_copy), pbase(0),
+#ifndef BOOST_REGEX_NO_FILEITER
+ fbase(),
+#endif
+ strings(), positions() {}
+};
+
+void RegExData::update()
+{
+ strings.erase(strings.begin(), strings.end());
+ positions.erase(positions.begin(), positions.end());
+ if(t == type_pc)
+ {
+ for(unsigned int i = 0; i < m.size(); ++i)
+ {
+ if(m[i].matched) strings[i] = std::string(m[i].first, m[i].second);
+ positions[i] = m[i].matched ? m[i].first - pbase : -1;
+ }
+ }
+#ifndef BOOST_REGEX_NO_FILEITER
+ else
+ {
+ for(unsigned int i = 0; i < fm.size(); ++i)
+ {
+ if(fm[i].matched) strings[i] = to_string(fm[i].first, fm[i].second);
+ positions[i] = fm[i].matched ? fm[i].first - fbase : -1;
+ }
+ }
+#endif
+ t = type_copy;
+}
+
+void RegExData::clean()
+{
+#ifndef BOOST_REGEX_NO_FILEITER
+ fbase = mapfile::iterator();
+ fm = match_results<mapfile::iterator>();
+#endif
+}
+
+} // namespace
+
+RegEx::RegEx()
+{
+ pdata = new re_detail::RegExData();
+}
+
+RegEx::RegEx(const RegEx& o)
+{
+ pdata = new re_detail::RegExData(*(o.pdata));
+}
+
+RegEx::~RegEx()
+{
+ delete pdata;
+}
+
+RegEx::RegEx(const char* c, bool icase)
+{
+ pdata = new re_detail::RegExData();
+ SetExpression(c, icase);
+}
+
+RegEx::RegEx(const std::string& s, bool icase)
+{
+ pdata = new re_detail::RegExData();
+ SetExpression(s.c_str(), icase);
+}
+
+RegEx& RegEx::operator=(const RegEx& o)
+{
+ *pdata = *(o.pdata);
+ return *this;
+}
+
+RegEx& RegEx::operator=(const char* p)
+{
+ SetExpression(p, false);
+ return *this;
+}
+
+unsigned int RegEx::SetExpression(const char* p, bool icase)
+{
+ boost::uint_fast32_t f = icase ? regex::normal | regex::icase : regex::normal;
+ return pdata->e.set_expression(p, f);
+}
+
+unsigned int RegEx::error_code()const
+{
+ return pdata->e.error_code();
+}
+
+
+std::string RegEx::Expression()const
+{
+ return pdata->e.expression();
+}
+
+//
+// now matching operators:
+//
+bool RegEx::Match(const char* p, match_flag_type flags)
+{
+ pdata->t = re_detail::RegExData::type_pc;
+ pdata->pbase = p;
+ const char* end = p;
+ while(*end)++end;
+
+ if(regex_match(p, end, pdata->m, pdata->e, flags))
+ {
+ pdata->update();
+ return true;
+ }
+ return false;
+}
+
+bool RegEx::Search(const char* p, match_flag_type flags)
+{
+ pdata->t = re_detail::RegExData::type_pc;
+ pdata->pbase = p;
+ const char* end = p;
+ while(*end)++end;
+
+ if(regex_search(p, end, pdata->m, pdata->e, flags))
+ {
+ pdata->update();
+ return true;
+ }
+ return false;
+}
+namespace re_detail{
+struct pred1
+{
+ GrepCallback cb;
+ RegEx* pe;
+ pred1(GrepCallback c, RegEx* i) : cb(c), pe(i) {}
+ bool operator()(const cmatch& m)
+ {
+ pe->pdata->m = m;
+ return cb(*pe);
+ }
+};
+}
+unsigned int RegEx::Grep(GrepCallback cb, const char* p, match_flag_type flags)
+{
+ pdata->t = re_detail::RegExData::type_pc;
+ pdata->pbase = p;
+ const char* end = p;
+ while(*end)++end;
+
+ unsigned int result = regex_grep(re_detail::pred1(cb, this), p, end, pdata->e, flags);
+ if(result)
+ pdata->update();
+ return result;
+}
+namespace re_detail{
+struct pred2
+{
+ std::vector<std::string>& v;
+ RegEx* pe;
+ pred2(std::vector<std::string>& o, RegEx* e) : v(o), pe(e) {}
+ bool operator()(const cmatch& m)
+ {
+ pe->pdata->m = m;
+ v.push_back(std::string(m[0].first, m[0].second));
+ return true;
+ }
+private:
+ pred2& operator=(const pred2&);
+};
+}
+
+unsigned int RegEx::Grep(std::vector<std::string>& v, const char* p, match_flag_type flags)
+{
+ pdata->t = re_detail::RegExData::type_pc;
+ pdata->pbase = p;
+ const char* end = p;
+ while(*end)++end;
+
+ unsigned int result = regex_grep(re_detail::pred2(v, this), p, end, pdata->e, flags);
+ if(result)
+ pdata->update();
+ return result;
+}
+namespace re_detail{
+struct pred3
+{
+ std::vector<std::size_t>& v;
+ const char* base;
+ RegEx* pe;
+ pred3(std::vector<std::size_t>& o, const char* pb, RegEx* p) : v(o), base(pb), pe(p) {}
+ bool operator()(const cmatch& m)
+ {
+ pe->pdata->m = m;
+ v.push_back(static_cast<std::size_t>(m[0].first - base));
+ return true;
+ }
+private:
+ pred3& operator=(const pred3&);
+};
+}
+unsigned int RegEx::Grep(std::vector<std::size_t>& v, const char* p, match_flag_type flags)
+{
+ pdata->t = re_detail::RegExData::type_pc;
+ pdata->pbase = p;
+ const char* end = p;
+ while(*end)++end;
+
+ unsigned int result = regex_grep(re_detail::pred3(v, p, this), p, end, pdata->e, flags);
+ if(result)
+ pdata->update();
+ return result;
+}
+#ifndef BOOST_REGEX_NO_FILEITER
+namespace re_detail{
+struct pred4
+{
+ GrepFileCallback cb;
+ RegEx* pe;
+ const char* file;
+ bool ok;
+ pred4(GrepFileCallback c, RegEx* i, const char* f) : cb(c), pe(i), file(f), ok(true) {}
+ bool operator()(const match_results<mapfile::iterator>& m)
+ {
+ pe->pdata->t = RegExData::type_pf;
+ pe->pdata->fm = m;
+ pe->pdata->update();
+ ok = cb(file, *pe);
+ return ok;
+ }
+};
+}
+namespace{
+void BuildFileList(std::list<std::string>* pl, const char* files, bool recurse)
+{
+ file_iterator start(files);
+ file_iterator end;
+ if(recurse)
+ {
+ // go through sub directories:
+ char buf[MAX_PATH];
+ re_detail::overflow_error_if_not_zero(re_detail::strcpy_s(buf, MAX_PATH, start.root()));
+ if(*buf == 0)
+ {
+ re_detail::overflow_error_if_not_zero(re_detail::strcpy_s(buf, MAX_PATH, "."));
+ re_detail::overflow_error_if_not_zero(re_detail::strcat_s(buf, MAX_PATH, directory_iterator::separator()));
+ re_detail::overflow_error_if_not_zero(re_detail::strcat_s(buf, MAX_PATH, "*"));
+ }
+ else
+ {
+ re_detail::overflow_error_if_not_zero(re_detail::strcat_s(buf, MAX_PATH, directory_iterator::separator()));
+ re_detail::overflow_error_if_not_zero(re_detail::strcat_s(buf, MAX_PATH, "*"));
+ }
+ directory_iterator dstart(buf);
+ directory_iterator dend;
+
+ // now get the file mask bit of "files":
+ const char* ptr = files;
+ while(*ptr) ++ptr;
+ while((ptr != files) && (*ptr != *directory_iterator::separator()) && (*ptr != '/'))--ptr;
+ if(ptr != files) ++ptr;
+
+ while(dstart != dend)
+ {
+#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400)
+ (::sprintf_s)(buf, sizeof(buf), "%s%s%s", dstart.path(), directory_iterator::separator(), ptr);
+#else
+ (std::sprintf)(buf, "%s%s%s", dstart.path(), directory_iterator::separator(), ptr);
+#endif
+ BuildFileList(pl, buf, recurse);
+ ++dstart;
+ }
+ }
+ while(start != end)
+ {
+ pl->push_back(*start);
+ ++start;
+ }
+}
+}
+
+unsigned int RegEx::GrepFiles(GrepFileCallback cb, const char* files, bool recurse, match_flag_type flags)
+{
+ unsigned int result = 0;
+ std::list<std::string> file_list;
+ BuildFileList(&file_list, files, recurse);
+ std::list<std::string>::iterator start, end;
+ start = file_list.begin();
+ end = file_list.end();
+
+ while(start != end)
+ {
+ mapfile map((*start).c_str());
+ pdata->t = re_detail::RegExData::type_pf;
+ pdata->fbase = map.begin();
+ re_detail::pred4 pred(cb, this, (*start).c_str());
+ int r = regex_grep(pred, map.begin(), map.end(), pdata->e, flags);
+ result += r;
+ ++start;
+ pdata->clean();
+ if(pred.ok == false)
+ return result;
+ }
+
+ return result;
+}
+
+
+unsigned int RegEx::FindFiles(FindFilesCallback cb, const char* files, bool recurse, match_flag_type flags)
+{
+ unsigned int result = 0;
+ std::list<std::string> file_list;
+ BuildFileList(&file_list, files, recurse);
+ std::list<std::string>::iterator start, end;
+ start = file_list.begin();
+ end = file_list.end();
+
+ while(start != end)
+ {
+ mapfile map((*start).c_str());
+ pdata->t = re_detail::RegExData::type_pf;
+ pdata->fbase = map.begin();
+
+ if(regex_search(map.begin(), map.end(), pdata->fm, pdata->e, flags))
+ {
+ ++result;
+ if(false == cb((*start).c_str()))
+ return result;
+ }
+ //pdata->update();
+ ++start;
+ //pdata->clean();
+ }
+
+ return result;
+}
+#endif
+
+#ifdef BOOST_REGEX_V3
+#define regex_replace regex_merge
+#endif
+
+std::string RegEx::Merge(const std::string& in, const std::string& fmt,
+ bool copy, match_flag_type flags)
+{
+ std::string result;
+ re_detail::string_out_iterator<std::string> i(result);
+ if(!copy) flags |= format_no_copy;
+ regex_replace(i, in.begin(), in.end(), pdata->e, fmt.c_str(), flags);
+ return result;
+}
+
+std::string RegEx::Merge(const char* in, const char* fmt,
+ bool copy, match_flag_type flags)
+{
+ std::string result;
+ if(!copy) flags |= format_no_copy;
+ re_detail::string_out_iterator<std::string> i(result);
+ regex_replace(i, in, in + std::strlen(in), pdata->e, fmt, flags);
+ return result;
+}
+
+std::size_t RegEx::Split(std::vector<std::string>& v,
+ std::string& s,
+ match_flag_type flags,
+ unsigned max_count)
+{
+ return regex_split(std::back_inserter(v), s, pdata->e, flags, max_count);
+}
+
+
+
+//
+// now operators for returning what matched in more detail:
+//
+std::size_t RegEx::Position(int i)const
+{
+ switch(pdata->t)
+ {
+ case re_detail::RegExData::type_pc:
+ return pdata->m[i].matched ? pdata->m[i].first - pdata->pbase : RegEx::npos;
+#ifndef BOOST_REGEX_NO_FILEITER
+ case re_detail::RegExData::type_pf:
+ return pdata->fm[i].matched ? pdata->fm[i].first - pdata->fbase : RegEx::npos;
+#endif
+ case re_detail::RegExData::type_copy:
+ {
+ std::map<int, std::ptrdiff_t, std::less<int> >::iterator pos = pdata->positions.find(i);
+ if(pos == pdata->positions.end())
+ return RegEx::npos;
+ return (*pos).second;
+ }
+ }
+ return RegEx::npos;
+}
+
+std::size_t RegEx::Marks()const
+{
+ return pdata->e.mark_count();
+}
+
+
+std::size_t RegEx::Length(int i)const
+{
+ switch(pdata->t)
+ {
+ case re_detail::RegExData::type_pc:
+ return pdata->m[i].matched ? pdata->m[i].second - pdata->m[i].first : RegEx::npos;
+#ifndef BOOST_REGEX_NO_FILEITER
+ case re_detail::RegExData::type_pf:
+ return pdata->fm[i].matched ? pdata->fm[i].second - pdata->fm[i].first : RegEx::npos;
+#endif
+ case re_detail::RegExData::type_copy:
+ {
+ std::map<int, std::string, std::less<int> >::iterator pos = pdata->strings.find(i);
+ if(pos == pdata->strings.end())
+ return RegEx::npos;
+ return (*pos).second.size();
+ }
+ }
+ return RegEx::npos;
+}
+
+bool RegEx::Matched(int i)const
+{
+ switch(pdata->t)
+ {
+ case re_detail::RegExData::type_pc:
+ return pdata->m[i].matched;
+#ifndef BOOST_REGEX_NO_FILEITER
+ case re_detail::RegExData::type_pf:
+ return pdata->fm[i].matched;
+#endif
+ case re_detail::RegExData::type_copy:
+ {
+ std::map<int, std::string, std::less<int> >::iterator pos = pdata->strings.find(i);
+ if(pos == pdata->strings.end())
+ return false;
+ return true;
+ }
+ }
+ return false;
+}
+
+
+std::string RegEx::What(int i)const
+{
+ std::string result;
+ switch(pdata->t)
+ {
+ case re_detail::RegExData::type_pc:
+ if(pdata->m[i].matched)
+ result.assign(pdata->m[i].first, pdata->m[i].second);
+ break;
+ case re_detail::RegExData::type_pf:
+ if(pdata->m[i].matched)
+ result.assign(to_string(pdata->m[i].first, pdata->m[i].second));
+ break;
+ case re_detail::RegExData::type_copy:
+ {
+ std::map<int, std::string, std::less<int> >::iterator pos = pdata->strings.find(i);
+ if(pos != pdata->strings.end())
+ result = (*pos).second;
+ break;
+ }
+ }
+ return result;
+}
+
+#ifdef BOOST_HAS_LONG_LONG
+const std::size_t RegEx::npos = static_cast<std::size_t>(~0ULL);
+#else
+const std::size_t RegEx::npos = static_cast<std::size_t>(~0UL);
+#endif
+
+} // namespace boost
+
+#if defined(__BORLANDC__) && (__BORLANDC__ >= 0x550) && (__BORLANDC__ <= 0x551) && !defined(_RWSTD_COMPILE_INSTANTIATE)
+//
+// this is an ugly hack to work around an ugly problem:
+// by default this file will produce unresolved externals during
+// linking unless _RWSTD_COMPILE_INSTANTIATE is defined (Borland bug).
+// However if _RWSTD_COMPILE_INSTANTIATE is defined then we get separate
+// copies of basic_string's static data in the RTL and this DLL, this messes
+// with basic_string's memory management and results in run-time crashes,
+// Oh sweet joy of Catch 22....
+//
+namespace std{
+template<> template<>
+basic_string<char>& BOOST_REGEX_DECL
+basic_string<char>::replace<const char*>(char* f1, char* f2, const char* i1, const char* i2)
+{
+ unsigned insert_pos = f1 - begin();
+ unsigned remove_len = f2 - f1;
+ unsigned insert_len = i2 - i1;
+ unsigned org_size = size();
+ if(insert_len > remove_len)
+ {
+ append(insert_len-remove_len, ' ');
+ std::copy_backward(begin() + insert_pos + remove_len, begin() + org_size, end());
+ std::copy(i1, i2, begin() + insert_pos);
+ }
+ else
+ {
+ std::copy(begin() + insert_pos + remove_len, begin() + org_size, begin() + insert_pos + insert_len);
+ std::copy(i1, i2, begin() + insert_pos);
+ erase(size() + insert_len - remove_len);
+ }
+ return *this;
+}
+template<> template<>
+basic_string<wchar_t>& BOOST_REGEX_DECL
+basic_string<wchar_t>::replace<const wchar_t*>(wchar_t* f1, wchar_t* f2, const wchar_t* i1, const wchar_t* i2)
+{
+ unsigned insert_pos = f1 - begin();
+ unsigned remove_len = f2 - f1;
+ unsigned insert_len = i2 - i1;
+ unsigned org_size = size();
+ if(insert_len > remove_len)
+ {
+ append(insert_len-remove_len, ' ');
+ std::copy_backward(begin() + insert_pos + remove_len, begin() + org_size, end());
+ std::copy(i1, i2, begin() + insert_pos);
+ }
+ else
+ {
+ std::copy(begin() + insert_pos + remove_len, begin() + org_size, begin() + insert_pos + insert_len);
+ std::copy(i1, i2, begin() + insert_pos);
+ erase(size() + insert_len - remove_len);
+ }
+ return *this;
+}
+} // namespace std
+#endif
+
+#endif
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/src/fileiter.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/src/fileiter.cpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,859 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE: fileiter.cpp
+ * VERSION: see <boost/version.hpp>
+ * DESCRIPTION: Implements file io primitives + directory searching for class boost::RegEx.
+ */
+
+
+#define BOOST_REGEX_SOURCE
+
+#include <climits>
+#include <stdexcept>
+#include <string>
+#include <boost/throw_exception.hpp>
+#include <boost/regex/v4/fileiter.hpp>
+#include <boost/regex/v4/regex_workaround.hpp>
+#include <boost/regex/pattern_except.hpp>
+
+#include <cstdio>
+#if defined(BOOST_NO_STDC_NAMESPACE)
+namespace std{
+ using ::sprintf;
+ using ::fseek;
+ using ::fread;
+ using ::ftell;
+ using ::fopen;
+ using ::fclose;
+ using ::FILE;
+ using ::strcpy;
+ using ::strcpy;
+ using ::strcat;
+ using ::strcmp;
+ using ::strlen;
+}
+#endif
+
+
+#ifndef BOOST_REGEX_NO_FILEITER
+
+#if defined(__CYGWIN__) || defined(__CYGWIN32__)
+#include <sys/cygwin.h>
+#endif
+
+#ifdef BOOST_MSVC
+# pragma warning(disable: 4800)
+#endif
+
+namespace boost{
+ namespace re_detail{
+// start with the operating system specific stuff:
+
+#if (defined(__BORLANDC__) || defined(BOOST_REGEX_FI_WIN32_DIR) || defined(BOOST_MSVC)) && !defined(BOOST_RE_NO_WIN32)
+
+// platform is DOS or Windows
+// directories are separated with '\\'
+// and names are insensitive of case
+
+BOOST_REGEX_DECL const char* _fi_sep = "\\";
+const char* _fi_sep_alt = "/";
+#define BOOST_REGEX_FI_TRANSLATE(c) std::tolower(c)
+
+#else
+
+// platform is not DOS or Windows
+// directories are separated with '/'
+// and names are sensitive of case
+
+BOOST_REGEX_DECL const char* _fi_sep = "/";
+const char* _fi_sep_alt = _fi_sep;
+#define BOOST_REGEX_FI_TRANSLATE(c) c
+
+#endif
+
+#ifdef BOOST_REGEX_FI_WIN32_MAP
+
+void mapfile::open(const char* file)
+{
+#if defined(__CYGWIN__)||defined(__CYGWIN32__)
+ char win32file[ MAX_PATH ];
+ cygwin_conv_to_win32_path( file, win32file );
+ hfile = CreateFileA(win32file, GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
+#else
+ hfile = CreateFileA(file, GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
+#endif
+ if(hfile != INVALID_HANDLE_VALUE)
+ {
+ hmap = CreateFileMapping(hfile, 0, PAGE_READONLY, 0, 0, 0);
+ if((hmap == INVALID_HANDLE_VALUE) || (hmap == NULL))
+ {
+ CloseHandle(hfile);
+ hmap = 0;
+ hfile = 0;
+ std::runtime_error err("Unable to create file mapping.");
+ boost::re_detail::raise_runtime_error(err);
+ }
+ _first = static_cast<const char*>(MapViewOfFile(hmap, FILE_MAP_READ, 0, 0, 0));
+ if(_first == 0)
+ {
+ CloseHandle(hmap);
+ CloseHandle(hfile);
+ hmap = 0;
+ hfile = 0;
+ std::runtime_error err("Unable to create file mapping.");
+ }
+ _last = _first + GetFileSize(hfile, 0);
+ }
+ else
+ {
+ hfile = 0;
+#ifndef BOOST_NO_EXCEPTIONS
+ throw std::runtime_error("Unable to open file.");
+#else
+ BOOST_REGEX_NOEH_ASSERT(hfile != INVALID_HANDLE_VALUE);
+#endif
+ }
+}
+
+void mapfile::close()
+{
+ if(hfile != INVALID_HANDLE_VALUE)
+ {
+ UnmapViewOfFile((void*)_first);
+ CloseHandle(hmap);
+ CloseHandle(hfile);
+ hmap = hfile = 0;
+ _first = _last = 0;
+ }
+}
+
+#elif !defined(BOOST_RE_NO_STL)
+
+mapfile_iterator& mapfile_iterator::operator = (const mapfile_iterator& i)
+{
+ if(file && node)
+ file->unlock(node);
+ file = i.file;
+ node = i.node;
+ offset = i.offset;
+ if(file)
+ file->lock(node);
+ return *this;
+}
+
+mapfile_iterator& mapfile_iterator::operator++ ()
+{
+ if((++offset == mapfile::buf_size) && file)
+ {
+ ++node;
+ offset = 0;
+ file->lock(node);
+ file->unlock(node-1);
+ }
+ return *this;
+}
+
+mapfile_iterator mapfile_iterator::operator++ (int)
+{
+ mapfile_iterator temp(*this);
+ if((++offset == mapfile::buf_size) && file)
+ {
+ ++node;
+ offset = 0;
+ file->lock(node);
+ file->unlock(node-1);
+ }
+ return temp;
+}
+
+mapfile_iterator& mapfile_iterator::operator-- ()
+{
+ if((offset == 0) && file)
+ {
+ --node;
+ offset = mapfile::buf_size - 1;
+ file->lock(node);
+ file->unlock(node + 1);
+ }
+ else
+ --offset;
+ return *this;
+}
+
+mapfile_iterator mapfile_iterator::operator-- (int)
+{
+ mapfile_iterator temp(*this);
+ if((offset == 0) && file)
+ {
+ --node;
+ offset = mapfile::buf_size - 1;
+ file->lock(node);
+ file->unlock(node + 1);
+ }
+ else
+ --offset;
+ return temp;
+}
+
+mapfile_iterator operator + (const mapfile_iterator& i, long off)
+{
+ mapfile_iterator temp(i);
+ temp += off;
+ return temp;
+}
+
+mapfile_iterator operator - (const mapfile_iterator& i, long off)
+{
+ mapfile_iterator temp(i);
+ temp -= off;
+ return temp;
+}
+
+mapfile::iterator mapfile::begin()const
+{
+ return mapfile_iterator(this, 0);
+}
+
+mapfile::iterator mapfile::end()const
+{
+ return mapfile_iterator(this, _size);
+}
+
+void mapfile::lock(pointer* node)const
+{
+ BOOST_ASSERT(node >= _first);
+ BOOST_ASSERT(node <= _last);
+ if(node < _last)
+ {
+ if(*node == 0)
+ {
+ if(condemed.empty())
+ {
+ *node = new char[sizeof(int) + buf_size];
+ *(reinterpret_cast<int*>(*node)) = 1;
+ }
+ else
+ {
+ pointer* p = condemed.front();
+ condemed.pop_front();
+ *node = *p;
+ *p = 0;
+ *(reinterpret_cast<int*>(*node)) = 1;
+ }
+ std::fseek(hfile, (node - _first) * buf_size, SEEK_SET);
+ if(node == _last - 1)
+ std::fread(*node + sizeof(int), _size % buf_size, 1, hfile);
+ else
+ std::fread(*node + sizeof(int), buf_size, 1, hfile);
+ }
+ else
+ {
+ if(*reinterpret_cast<int*>(*node) == 0)
+ {
+ *reinterpret_cast<int*>(*node) = 1;
+ condemed.remove(node);
+ }
+ else
+ ++(*reinterpret_cast<int*>(*node));
+ }
+ }
+}
+
+void mapfile::unlock(pointer* node)const
+{
+ BOOST_ASSERT(node >= _first);
+ BOOST_ASSERT(node <= _last);
+ if(node < _last)
+ {
+ if(--(*reinterpret_cast<int*>(*node)) == 0)
+ {
+ condemed.push_back(node);
+ }
+ }
+}
+
+long int get_file_length(std::FILE* hfile)
+{
+ long int result;
+ std::fseek(hfile, 0, SEEK_END);
+ result = std::ftell(hfile);
+ std::fseek(hfile, 0, SEEK_SET);
+ return result;
+}
+
+
+void mapfile::open(const char* file)
+{
+ hfile = std::fopen(file, "rb");
+#ifndef BOOST_NO_EXCEPTIONS
+ try{
+#endif
+ if(hfile != 0)
+ {
+ _size = get_file_length(hfile);
+ long cnodes = (_size + buf_size - 1) / buf_size;
+
+ // check that number of nodes is not too high:
+ if(cnodes > (long)((INT_MAX) / sizeof(pointer*)))
+ {
+ std::fclose(hfile);
+ hfile = 0;
+ _size = 0;
+ return;
+ }
+
+ _first = new pointer[(int)cnodes];
+ _last = _first + cnodes;
+ std::memset(_first, 0, cnodes*sizeof(pointer));
+ }
+ else
+ {
+ std::runtime_error err("Unable to open file.");
+ }
+#ifndef BOOST_NO_EXCEPTIONS
+ }catch(...)
+ { close(); throw; }
+#endif
+}
+
+void mapfile::close()
+{
+ if(hfile != 0)
+ {
+ pointer* p = _first;
+ while(p != _last)
+ {
+ if(*p)
+ delete[] *p;
+ ++p;
+ }
+ delete[] _first;
+ _size = 0;
+ _first = _last = 0;
+ std::fclose(hfile);
+ hfile = 0;
+ condemed.erase(condemed.begin(), condemed.end());
+ }
+}
+
+
+#endif
+
+
+file_iterator::file_iterator()
+{
+ _root = _path = 0;
+ ref = 0;
+#ifndef BOOST_NO_EXCEPTIONS
+ try{
+#endif
+ _root = new char[MAX_PATH];
+ BOOST_REGEX_NOEH_ASSERT(_root)
+ _path = new char[MAX_PATH];
+ BOOST_REGEX_NOEH_ASSERT(_path)
+ ptr = _path;
+ *_path = 0;
+ *_root = 0;
+ ref = new file_iterator_ref();
+ BOOST_REGEX_NOEH_ASSERT(ref)
+ ref->hf = _fi_invalid_handle;
+ ref->count = 1;
+#ifndef BOOST_NO_EXCEPTIONS
+ }
+ catch(...)
+ {
+ delete[] _root;
+ delete[] _path;
+ delete ref;
+ throw;
+ }
+#endif
+}
+
+file_iterator::file_iterator(const char* wild)
+{
+ _root = _path = 0;
+ ref = 0;
+#ifndef BOOST_NO_EXCEPTIONS
+ try{
+#endif
+ _root = new char[MAX_PATH];
+ BOOST_REGEX_NOEH_ASSERT(_root)
+ _path = new char[MAX_PATH];
+ BOOST_REGEX_NOEH_ASSERT(_path)
+ re_detail::overflow_error_if_not_zero(re_detail::strcpy_s(_root, MAX_PATH, wild));
+ ptr = _root;
+ while(*ptr)++ptr;
+ while((ptr > _root) && (*ptr != *_fi_sep) && (*ptr != *_fi_sep_alt))--ptr;
+ if((ptr == _root) && ( (*ptr== *_fi_sep) || (*ptr==*_fi_sep_alt) ) )
+ {
+ _root[1]='\0';
+ re_detail::overflow_error_if_not_zero(re_detail::strcpy_s(_path, MAX_PATH, _root));
+ }
+ else
+ {
+ *ptr = 0;
+ re_detail::overflow_error_if_not_zero(re_detail::strcpy_s(_path, MAX_PATH, _root));
+ if(*_path == 0)
+ re_detail::overflow_error_if_not_zero(re_detail::strcpy_s(_path, MAX_PATH, "."));
+ re_detail::overflow_error_if_not_zero(re_detail::strcat_s(_path, MAX_PATH, _fi_sep));
+ }
+ ptr = _path + std::strlen(_path);
+
+ ref = new file_iterator_ref();
+ BOOST_REGEX_NOEH_ASSERT(ref)
+ ref->hf = FindFirstFileA(wild, &(ref->_data));
+ ref->count = 1;
+
+ if(ref->hf == _fi_invalid_handle)
+ {
+ *_path = 0;
+ ptr = _path;
+ }
+ else
+ {
+ re_detail::overflow_error_if_not_zero(re_detail::strcpy_s(ptr, (MAX_PATH - (ptr - _path)), ref->_data.cFileName));
+ if(ref->_data.dwFileAttributes & _fi_dir)
+ next();
+ }
+#ifndef BOOST_NO_EXCEPTIONS
+ }
+ catch(...)
+ {
+ delete[] _root;
+ delete[] _path;
+ delete ref;
+ throw;
+ }
+#endif
+}
+
+file_iterator::file_iterator(const file_iterator& other)
+{
+ _root = _path = 0;
+ ref = 0;
+#ifndef BOOST_NO_EXCEPTIONS
+ try{
+#endif
+ _root = new char[MAX_PATH];
+ BOOST_REGEX_NOEH_ASSERT(_root)
+ _path = new char[MAX_PATH];
+ BOOST_REGEX_NOEH_ASSERT(_path)
+ re_detail::overflow_error_if_not_zero(re_detail::strcpy_s(_root, MAX_PATH, other._root));
+ re_detail::overflow_error_if_not_zero(re_detail::strcpy_s(_path, MAX_PATH, other._path));
+ ptr = _path + (other.ptr - other._path);
+ ref = other.ref;
+#ifndef BOOST_NO_EXCEPTIONS
+ }
+ catch(...)
+ {
+ delete[] _root;
+ delete[] _path;
+ throw;
+ }
+#endif
+ ++(ref->count);
+}
+
+file_iterator& file_iterator::operator=(const file_iterator& other)
+{
+ re_detail::overflow_error_if_not_zero(re_detail::strcpy_s(_root, MAX_PATH, other._root));
+ re_detail::overflow_error_if_not_zero(re_detail::strcpy_s(_path, MAX_PATH, other._path));
+ ptr = _path + (other.ptr - other._path);
+ if(--(ref->count) == 0)
+ {
+ if(ref->hf != _fi_invalid_handle)
+ FindClose(ref->hf);
+ delete ref;
+ }
+ ref = other.ref;
+ ++(ref->count);
+ return *this;
+}
+
+
+file_iterator::~file_iterator()
+{
+ delete[] _root;
+ delete[] _path;
+ if(--(ref->count) == 0)
+ {
+ if(ref->hf != _fi_invalid_handle)
+ FindClose(ref->hf);
+ delete ref;
+ }
+}
+
+file_iterator file_iterator::operator++(int)
+{
+ file_iterator temp(*this);
+ next();
+ return temp;
+}
+
+
+void file_iterator::next()
+{
+ if(ref->hf != _fi_invalid_handle)
+ {
+ bool cont = true;
+ while(cont)
+ {
+ cont = FindNextFileA(ref->hf, &(ref->_data));
+ if(cont && ((ref->_data.dwFileAttributes & _fi_dir) == 0))
+ break;
+ }
+ if(!cont)
+ {
+ // end of sequence
+ FindClose(ref->hf);
+ ref->hf = _fi_invalid_handle;
+ *_path = 0;
+ ptr = _path;
+ }
+ else
+ re_detail::overflow_error_if_not_zero(re_detail::strcpy_s(ptr, MAX_PATH - (ptr - _path), ref->_data.cFileName));
+ }
+}
+
+
+
+directory_iterator::directory_iterator()
+{
+ _root = _path = 0;
+ ref = 0;
+#ifndef BOOST_NO_EXCEPTIONS
+ try{
+#endif
+ _root = new char[MAX_PATH];
+ BOOST_REGEX_NOEH_ASSERT(_root)
+ _path = new char[MAX_PATH];
+ BOOST_REGEX_NOEH_ASSERT(_path)
+ ptr = _path;
+ *_path = 0;
+ *_root = 0;
+ ref = new file_iterator_ref();
+ BOOST_REGEX_NOEH_ASSERT(ref)
+ ref->hf = _fi_invalid_handle;
+ ref->count = 1;
+#ifndef BOOST_NO_EXCEPTIONS
+ }
+ catch(...)
+ {
+ delete[] _root;
+ delete[] _path;
+ delete ref;
+ throw;
+ }
+#endif
+}
+
+directory_iterator::directory_iterator(const char* wild)
+{
+ _root = _path = 0;
+ ref = 0;
+#ifndef BOOST_NO_EXCEPTIONS
+ try{
+#endif
+ _root = new char[MAX_PATH];
+ BOOST_REGEX_NOEH_ASSERT(_root)
+ _path = new char[MAX_PATH];
+ BOOST_REGEX_NOEH_ASSERT(_path)
+ re_detail::overflow_error_if_not_zero(re_detail::strcpy_s(_root, MAX_PATH, wild));
+ ptr = _root;
+ while(*ptr)++ptr;
+ while((ptr > _root) && (*ptr != *_fi_sep) && (*ptr != *_fi_sep_alt))--ptr;
+
+ if((ptr == _root) && ( (*ptr== *_fi_sep) || (*ptr==*_fi_sep_alt) ) )
+ {
+ _root[1]='\0';
+ re_detail::overflow_error_if_not_zero(re_detail::strcpy_s(_path, MAX_PATH, _root));
+ }
+ else
+ {
+ *ptr = 0;
+ re_detail::overflow_error_if_not_zero(re_detail::strcpy_s(_path, MAX_PATH, _root));
+ if(*_path == 0)
+ re_detail::overflow_error_if_not_zero(re_detail::strcpy_s(_path, MAX_PATH, "."));
+ re_detail::overflow_error_if_not_zero(re_detail::strcat_s(_path, MAX_PATH, _fi_sep));
+ }
+ ptr = _path + std::strlen(_path);
+
+ ref = new file_iterator_ref();
+ BOOST_REGEX_NOEH_ASSERT(ref)
+ ref->count = 1;
+ ref->hf = FindFirstFileA(wild, &(ref->_data));
+ if(ref->hf == _fi_invalid_handle)
+ {
+ *_path = 0;
+ ptr = _path;
+ }
+ else
+ {
+ re_detail::overflow_error_if_not_zero(re_detail::strcpy_s(ptr, MAX_PATH - (ptr - _path), ref->_data.cFileName));
+ if(((ref->_data.dwFileAttributes & _fi_dir) == 0) || (std::strcmp(ref->_data.cFileName, ".") == 0) || (std::strcmp(ref->_data.cFileName, "..") == 0))
+ next();
+ }
+#ifndef BOOST_NO_EXCEPTIONS
+ }
+ catch(...)
+ {
+ delete[] _root;
+ delete[] _path;
+ delete ref;
+ throw;
+ }
+#endif
+}
+
+directory_iterator::~directory_iterator()
+{
+ delete[] _root;
+ delete[] _path;
+ if(--(ref->count) == 0)
+ {
+ if(ref->hf != _fi_invalid_handle)
+ FindClose(ref->hf);
+ delete ref;
+ }
+}
+
+directory_iterator::directory_iterator(const directory_iterator& other)
+{
+ _root = _path = 0;
+ ref = 0;
+#ifndef BOOST_NO_EXCEPTIONS
+ try{
+#endif
+ _root = new char[MAX_PATH];
+ BOOST_REGEX_NOEH_ASSERT(_root)
+ _path = new char[MAX_PATH];
+ BOOST_REGEX_NOEH_ASSERT(_path)
+ re_detail::overflow_error_if_not_zero(re_detail::strcpy_s(_root, MAX_PATH, other._root));
+ re_detail::overflow_error_if_not_zero(re_detail::strcpy_s(_path, MAX_PATH, other._path));
+ ptr = _path + (other.ptr - other._path);
+ ref = other.ref;
+#ifndef BOOST_NO_EXCEPTIONS
+ }
+ catch(...)
+ {
+ delete[] _root;
+ delete[] _path;
+ throw;
+ }
+#endif
+ ++(ref->count);
+}
+
+directory_iterator& directory_iterator::operator=(const directory_iterator& other)
+{
+ re_detail::overflow_error_if_not_zero(re_detail::strcpy_s(_root, MAX_PATH, other._root));
+ re_detail::overflow_error_if_not_zero(re_detail::strcpy_s(_path, MAX_PATH, other._path));
+ ptr = _path + (other.ptr - other._path);
+ if(--(ref->count) == 0)
+ {
+ if(ref->hf != _fi_invalid_handle)
+ FindClose(ref->hf);
+ delete ref;
+ }
+ ref = other.ref;
+ ++(ref->count);
+ return *this;
+}
+
+directory_iterator directory_iterator::operator++(int)
+{
+ directory_iterator temp(*this);
+ next();
+ return temp;
+}
+
+void directory_iterator::next()
+{
+ if(ref->hf != _fi_invalid_handle)
+ {
+ bool cont = true;
+ while(cont)
+ {
+ cont = FindNextFileA(ref->hf, &(ref->_data));
+ if(cont && (ref->_data.dwFileAttributes & _fi_dir))
+ {
+ if(std::strcmp(ref->_data.cFileName, ".") && std::strcmp(ref->_data.cFileName, ".."))
+ break;
+ }
+ }
+ if(!cont)
+ {
+ // end of sequence
+ FindClose(ref->hf);
+ ref->hf = _fi_invalid_handle;
+ *_path = 0;
+ ptr = _path;
+ }
+ else
+ re_detail::overflow_error_if_not_zero(re_detail::strcpy_s(ptr, MAX_PATH - (ptr - _path), ref->_data.cFileName));
+ }
+}
+
+
+#ifdef BOOST_REGEX_FI_POSIX_DIR
+
+struct _fi_priv_data
+{
+ char root[MAX_PATH];
+ char* mask;
+ DIR* d;
+ _fi_priv_data(const char* p);
+};
+
+_fi_priv_data::_fi_priv_data(const char* p)
+{
+ std::strcpy(root, p);
+ mask = root;
+ while(*mask) ++mask;
+ while((mask > root) && (*mask != *_fi_sep) && (*mask != *_fi_sep_alt)) --mask;
+ if(mask == root && ((*mask== *_fi_sep) || (*mask == *_fi_sep_alt)) )
+ {
+ root[1] = '\0';
+ std::strcpy(root+2, p+1);
+ mask = root+2;
+ }
+ else if(mask == root)
+ {
+ root[0] = '.';
+ root[1] = '\0';
+ std::strcpy(root+2, p);
+ mask = root+2;
+ }
+ else
+ {
+ *mask = 0;
+ ++mask;
+ }
+}
+
+bool iswild(const char* mask, const char* name)
+{
+ while(*mask && *name)
+ {
+ switch(*mask)
+ {
+ case '?':
+ ++name;
+ ++mask;
+ continue;
+ case '*':
+ ++mask;
+ if(*mask == 0)
+ return true;
+ while(*name)
+ {
+ if(iswild(mask, name))
+ return true;
+ ++name;
+ }
+ return false;
+ case '.':
+ if(0 == *name)
+ {
+ ++mask;
+ continue;
+ }
+ // fall through:
+ default:
+ if(BOOST_REGEX_FI_TRANSLATE(*mask) != BOOST_REGEX_FI_TRANSLATE(*name))
+ return false;
+ ++mask;
+ ++name;
+ continue;
+ }
+ }
+ if(*mask != *name)
+ return false;
+ return true;
+}
+
+unsigned _fi_attributes(const char* root, const char* name)
+{
+ char buf[MAX_PATH];
+ if( ( (root[0] == *_fi_sep) || (root[0] == *_fi_sep_alt) ) && (root[1] == '\0') )
+ (std::sprintf)(buf, "%s%s", root, name);
+ else
+ (std::sprintf)(buf, "%s%s%s", root, _fi_sep, name);
+ DIR* d = opendir(buf);
+ if(d)
+ {
+ closedir(d);
+ return _fi_dir;
+ }
+ return 0;
+}
+
+_fi_find_handle _fi_FindFirstFile(const char* lpFileName, _fi_find_data* lpFindFileData)
+{
+ _fi_find_handle dat = new _fi_priv_data(lpFileName);
+
+ DIR* h = opendir(dat->root);
+ dat->d = h;
+ if(h != 0)
+ {
+ if(_fi_FindNextFile(dat, lpFindFileData))
+ return dat;
+ }
+ delete dat;
+ return 0;
+}
+
+bool _fi_FindNextFile(_fi_find_handle dat, _fi_find_data* lpFindFileData)
+{
+ dirent* d;
+ do
+ {
+ d = readdir(dat->d);
+ } while(d && !iswild(dat->mask, d->d_name));
+
+ if(d)
+ {
+ std::strcpy(lpFindFileData->cFileName, d->d_name);
+ lpFindFileData->dwFileAttributes = _fi_attributes(dat->root, d->d_name);
+ return true;
+ }
+ return false;
+}
+
+bool _fi_FindClose(_fi_find_handle dat)
+{
+ closedir(dat->d);
+ delete dat;
+ return true;
+}
+
+#endif
+
+} // namespace re_detail
+} // namspace boost
+
+#endif // BOOST_REGEX_NO_FILEITER
+
+
+
+
+
+
+
+
+
+
+
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/src/icu.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/src/icu.cpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,495 @@
+/*
+ *
+ * Copyright (c) 2004
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE icu.cpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Unicode regular expressions on top of the ICU Library.
+ */
+#define BOOST_REGEX_SOURCE
+
+#include <boost/regex/config.hpp>
+#ifdef BOOST_HAS_ICU
+#define BOOST_REGEX_ICU_INSTANTIATE
+#include <boost/regex/icu.hpp>
+
+namespace boost{
+
+namespace re_detail{
+
+icu_regex_traits_implementation::string_type icu_regex_traits_implementation::do_transform(const char_type* p1, const char_type* p2, const U_NAMESPACE_QUALIFIER Collator* pcoll) const
+{
+ // TODO make thread safe!!!! :
+ typedef u32_to_u16_iterator<const char_type*, ::UChar> itt;
+ itt i(p1), j(p2);
+#ifndef BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
+ std::vector< ::UChar> t(i, j);
+#else
+ std::vector< ::UChar> t;
+ while(i != j)
+ t.push_back(*i++);
+#endif
+ ::uint8_t result[100];
+ ::int32_t len;
+ if(t.size())
+ len = pcoll->getSortKey(&*t.begin(), static_cast< ::int32_t>(t.size()), result, sizeof(result));
+ else
+ len = pcoll->getSortKey(static_cast<UChar const*>(0), static_cast< ::int32_t>(0), result, sizeof(result));
+ if(std::size_t(len) > sizeof(result))
+ {
+ scoped_array< ::uint8_t> presult(new ::uint8_t[len+1]);
+ if(t.size())
+ len = pcoll->getSortKey(&*t.begin(), static_cast< ::int32_t>(t.size()), presult.get(), len+1);
+ else
+ len = pcoll->getSortKey(static_cast<UChar const*>(0), static_cast< ::int32_t>(0), presult.get(), len+1);
+ if((0 == presult[len-1]) && (len > 1))
+ --len;
+#ifndef BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
+ return string_type(presult.get(), presult.get()+len);
+#else
+ string_type sresult;
+ ::uint8_t const* ia = presult.get();
+ ::uint8_t const* ib = presult.get()+len;
+ while(ia != ib)
+ sresult.push_back(*ia++);
+ return sresult;
+#endif
+ }
+ if((0 == result[len-1]) && (len > 1))
+ --len;
+#ifndef BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
+ return string_type(result, result+len);
+#else
+ string_type sresult;
+ ::uint8_t const* ia = result;
+ ::uint8_t const* ib = result+len;
+ while(ia != ib)
+ sresult.push_back(*ia++);
+ return sresult;
+#endif
+}
+
+}
+
+icu_regex_traits::size_type icu_regex_traits::length(const char_type* p)
+{
+ size_type result = 0;
+ while(*p)
+ {
+ ++p;
+ ++result;
+ }
+ return result;
+}
+
+//
+// define our bitmasks:
+//
+const icu_regex_traits::char_class_type icu_regex_traits::mask_blank = icu_regex_traits::char_class_type(1) << offset_blank;
+const icu_regex_traits::char_class_type icu_regex_traits::mask_space = icu_regex_traits::char_class_type(1) << offset_space;
+const icu_regex_traits::char_class_type icu_regex_traits::mask_xdigit = icu_regex_traits::char_class_type(1) << offset_xdigit;
+const icu_regex_traits::char_class_type icu_regex_traits::mask_underscore = icu_regex_traits::char_class_type(1) << offset_underscore;
+const icu_regex_traits::char_class_type icu_regex_traits::mask_unicode = icu_regex_traits::char_class_type(1) << offset_unicode;
+const icu_regex_traits::char_class_type icu_regex_traits::mask_any = icu_regex_traits::char_class_type(1) << offset_any;
+const icu_regex_traits::char_class_type icu_regex_traits::mask_ascii = icu_regex_traits::char_class_type(1) << offset_ascii;
+
+icu_regex_traits::char_class_type icu_regex_traits::lookup_icu_mask(const ::UChar32* p1, const ::UChar32* p2)
+{
+ static const ::UChar32 prop_name_table[] = {
+ /* any */ 'a', 'n', 'y',
+ /* ascii */ 'a', 's', 'c', 'i', 'i',
+ /* assigned */ 'a', 's', 's', 'i', 'g', 'n', 'e', 'd',
+ /* c* */ 'c', '*',
+ /* cc */ 'c', 'c',
+ /* cf */ 'c', 'f',
+ /* closepunctuation */ 'c', 'l', 'o', 's', 'e', 'p', 'u', 'n', 'c', 't', 'u', 'a', 't', 'i', 'o', 'n',
+ /* cn */ 'c', 'n',
+ /* co */ 'c', 'o',
+ /* connectorpunctuation */ 'c', 'o', 'n', 'n', 'e', 'c', 't', 'o', 'r', 'p', 'u', 'n', 'c', 't', 'u', 'a', 't', 'i', 'o', 'n',
+ /* control */ 'c', 'o', 'n', 't', 'r', 'o', 'l',
+ /* cs */ 'c', 's',
+ /* currencysymbol */ 'c', 'u', 'r', 'r', 'e', 'n', 'c', 'y', 's', 'y', 'm', 'b', 'o', 'l',
+ /* dashpunctuation */ 'd', 'a', 's', 'h', 'p', 'u', 'n', 'c', 't', 'u', 'a', 't', 'i', 'o', 'n',
+ /* decimaldigitnumber */ 'd', 'e', 'c', 'i', 'm', 'a', 'l', 'd', 'i', 'g', 'i', 't', 'n', 'u', 'm', 'b', 'e', 'r',
+ /* enclosingmark */ 'e', 'n', 'c', 'l', 'o', 's', 'i', 'n', 'g', 'm', 'a', 'r', 'k',
+ /* finalpunctuation */ 'f', 'i', 'n', 'a', 'l', 'p', 'u', 'n', 'c', 't', 'u', 'a', 't', 'i', 'o', 'n',
+ /* format */ 'f', 'o', 'r', 'm', 'a', 't',
+ /* initialpunctuation */ 'i', 'n', 'i', 't', 'i', 'a', 'l', 'p', 'u', 'n', 'c', 't', 'u', 'a', 't', 'i', 'o', 'n',
+ /* l* */ 'l', '*',
+ /* letter */ 'l', 'e', 't', 't', 'e', 'r',
+ /* letternumber */ 'l', 'e', 't', 't', 'e', 'r', 'n', 'u', 'm', 'b', 'e', 'r',
+ /* lineseparator */ 'l', 'i', 'n', 'e', 's', 'e', 'p', 'a', 'r', 'a', 't', 'o', 'r',
+ /* ll */ 'l', 'l',
+ /* lm */ 'l', 'm',
+ /* lo */ 'l', 'o',
+ /* lowercaseletter */ 'l', 'o', 'w', 'e', 'r', 'c', 'a', 's', 'e', 'l', 'e', 't', 't', 'e', 'r',
+ /* lt */ 'l', 't',
+ /* lu */ 'l', 'u',
+ /* m* */ 'm', '*',
+ /* mark */ 'm', 'a', 'r', 'k',
+ /* mathsymbol */ 'm', 'a', 't', 'h', 's', 'y', 'm', 'b', 'o', 'l',
+ /* mc */ 'm', 'c',
+ /* me */ 'm', 'e',
+ /* mn */ 'm', 'n',
+ /* modifierletter */ 'm', 'o', 'd', 'i', 'f', 'i', 'e', 'r', 'l', 'e', 't', 't', 'e', 'r',
+ /* modifiersymbol */ 'm', 'o', 'd', 'i', 'f', 'i', 'e', 'r', 's', 'y', 'm', 'b', 'o', 'l',
+ /* n* */ 'n', '*',
+ /* nd */ 'n', 'd',
+ /* nl */ 'n', 'l',
+ /* no */ 'n', 'o',
+ /* nonspacingmark */ 'n', 'o', 'n', 's', 'p', 'a', 'c', 'i', 'n', 'g', 'm', 'a', 'r', 'k',
+ /* notassigned */ 'n', 'o', 't', 'a', 's', 's', 'i', 'g', 'n', 'e', 'd',
+ /* number */ 'n', 'u', 'm', 'b', 'e', 'r',
+ /* openpunctuation */ 'o', 'p', 'e', 'n', 'p', 'u', 'n', 'c', 't', 'u', 'a', 't', 'i', 'o', 'n',
+ /* other */ 'o', 't', 'h', 'e', 'r',
+ /* otherletter */ 'o', 't', 'h', 'e', 'r', 'l', 'e', 't', 't', 'e', 'r',
+ /* othernumber */ 'o', 't', 'h', 'e', 'r', 'n', 'u', 'm', 'b', 'e', 'r',
+ /* otherpunctuation */ 'o', 't', 'h', 'e', 'r', 'p', 'u', 'n', 'c', 't', 'u', 'a', 't', 'i', 'o', 'n',
+ /* othersymbol */ 'o', 't', 'h', 'e', 'r', 's', 'y', 'm', 'b', 'o', 'l',
+ /* p* */ 'p', '*',
+ /* paragraphseparator */ 'p', 'a', 'r', 'a', 'g', 'r', 'a', 'p', 'h', 's', 'e', 'p', 'a', 'r', 'a', 't', 'o', 'r',
+ /* pc */ 'p', 'c',
+ /* pd */ 'p', 'd',
+ /* pe */ 'p', 'e',
+ /* pf */ 'p', 'f',
+ /* pi */ 'p', 'i',
+ /* po */ 'p', 'o',
+ /* privateuse */ 'p', 'r', 'i', 'v', 'a', 't', 'e', 'u', 's', 'e',
+ /* ps */ 'p', 's',
+ /* punctuation */ 'p', 'u', 'n', 'c', 't', 'u', 'a', 't', 'i', 'o', 'n',
+ /* s* */ 's', '*',
+ /* sc */ 's', 'c',
+ /* separator */ 's', 'e', 'p', 'a', 'r', 'a', 't', 'o', 'r',
+ /* sk */ 's', 'k',
+ /* sm */ 's', 'm',
+ /* so */ 's', 'o',
+ /* spaceseparator */ 's', 'p', 'a', 'c', 'e', 's', 'e', 'p', 'a', 'r', 'a', 't', 'o', 'r',
+ /* spacingcombiningmark */ 's', 'p', 'a', 'c', 'i', 'n', 'g', 'c', 'o', 'm', 'b', 'i', 'n', 'i', 'n', 'g', 'm', 'a', 'r', 'k',
+ /* surrogate */ 's', 'u', 'r', 'r', 'o', 'g', 'a', 't', 'e',
+ /* symbol */ 's', 'y', 'm', 'b', 'o', 'l',
+ /* titlecase */ 't', 'i', 't', 'l', 'e', 'c', 'a', 's', 'e',
+ /* titlecaseletter */ 't', 'i', 't', 'l', 'e', 'c', 'a', 's', 'e', 'l', 'e', 't', 't', 'e', 'r',
+ /* uppercaseletter */ 'u', 'p', 'p', 'e', 'r', 'c', 'a', 's', 'e', 'l', 'e', 't', 't', 'e', 'r',
+ /* z* */ 'z', '*',
+ /* zl */ 'z', 'l',
+ /* zp */ 'z', 'p',
+ /* zs */ 'z', 's',
+ };
+
+ static const re_detail::character_pointer_range< ::UChar32> range_data[] = {
+ { prop_name_table+0, prop_name_table+3, }, // any
+ { prop_name_table+3, prop_name_table+8, }, // ascii
+ { prop_name_table+8, prop_name_table+16, }, // assigned
+ { prop_name_table+16, prop_name_table+18, }, // c*
+ { prop_name_table+18, prop_name_table+20, }, // cc
+ { prop_name_table+20, prop_name_table+22, }, // cf
+ { prop_name_table+22, prop_name_table+38, }, // closepunctuation
+ { prop_name_table+38, prop_name_table+40, }, // cn
+ { prop_name_table+40, prop_name_table+42, }, // co
+ { prop_name_table+42, prop_name_table+62, }, // connectorpunctuation
+ { prop_name_table+62, prop_name_table+69, }, // control
+ { prop_name_table+69, prop_name_table+71, }, // cs
+ { prop_name_table+71, prop_name_table+85, }, // currencysymbol
+ { prop_name_table+85, prop_name_table+100, }, // dashpunctuation
+ { prop_name_table+100, prop_name_table+118, }, // decimaldigitnumber
+ { prop_name_table+118, prop_name_table+131, }, // enclosingmark
+ { prop_name_table+131, prop_name_table+147, }, // finalpunctuation
+ { prop_name_table+147, prop_name_table+153, }, // format
+ { prop_name_table+153, prop_name_table+171, }, // initialpunctuation
+ { prop_name_table+171, prop_name_table+173, }, // l*
+ { prop_name_table+173, prop_name_table+179, }, // letter
+ { prop_name_table+179, prop_name_table+191, }, // letternumber
+ { prop_name_table+191, prop_name_table+204, }, // lineseparator
+ { prop_name_table+204, prop_name_table+206, }, // ll
+ { prop_name_table+206, prop_name_table+208, }, // lm
+ { prop_name_table+208, prop_name_table+210, }, // lo
+ { prop_name_table+210, prop_name_table+225, }, // lowercaseletter
+ { prop_name_table+225, prop_name_table+227, }, // lt
+ { prop_name_table+227, prop_name_table+229, }, // lu
+ { prop_name_table+229, prop_name_table+231, }, // m*
+ { prop_name_table+231, prop_name_table+235, }, // mark
+ { prop_name_table+235, prop_name_table+245, }, // mathsymbol
+ { prop_name_table+245, prop_name_table+247, }, // mc
+ { prop_name_table+247, prop_name_table+249, }, // me
+ { prop_name_table+249, prop_name_table+251, }, // mn
+ { prop_name_table+251, prop_name_table+265, }, // modifierletter
+ { prop_name_table+265, prop_name_table+279, }, // modifiersymbol
+ { prop_name_table+279, prop_name_table+281, }, // n*
+ { prop_name_table+281, prop_name_table+283, }, // nd
+ { prop_name_table+283, prop_name_table+285, }, // nl
+ { prop_name_table+285, prop_name_table+287, }, // no
+ { prop_name_table+287, prop_name_table+301, }, // nonspacingmark
+ { prop_name_table+301, prop_name_table+312, }, // notassigned
+ { prop_name_table+312, prop_name_table+318, }, // number
+ { prop_name_table+318, prop_name_table+333, }, // openpunctuation
+ { prop_name_table+333, prop_name_table+338, }, // other
+ { prop_name_table+338, prop_name_table+349, }, // otherletter
+ { prop_name_table+349, prop_name_table+360, }, // othernumber
+ { prop_name_table+360, prop_name_table+376, }, // otherpunctuation
+ { prop_name_table+376, prop_name_table+387, }, // othersymbol
+ { prop_name_table+387, prop_name_table+389, }, // p*
+ { prop_name_table+389, prop_name_table+407, }, // paragraphseparator
+ { prop_name_table+407, prop_name_table+409, }, // pc
+ { prop_name_table+409, prop_name_table+411, }, // pd
+ { prop_name_table+411, prop_name_table+413, }, // pe
+ { prop_name_table+413, prop_name_table+415, }, // pf
+ { prop_name_table+415, prop_name_table+417, }, // pi
+ { prop_name_table+417, prop_name_table+419, }, // po
+ { prop_name_table+419, prop_name_table+429, }, // privateuse
+ { prop_name_table+429, prop_name_table+431, }, // ps
+ { prop_name_table+431, prop_name_table+442, }, // punctuation
+ { prop_name_table+442, prop_name_table+444, }, // s*
+ { prop_name_table+444, prop_name_table+446, }, // sc
+ { prop_name_table+446, prop_name_table+455, }, // separator
+ { prop_name_table+455, prop_name_table+457, }, // sk
+ { prop_name_table+457, prop_name_table+459, }, // sm
+ { prop_name_table+459, prop_name_table+461, }, // so
+ { prop_name_table+461, prop_name_table+475, }, // spaceseparator
+ { prop_name_table+475, prop_name_table+495, }, // spacingcombiningmark
+ { prop_name_table+495, prop_name_table+504, }, // surrogate
+ { prop_name_table+504, prop_name_table+510, }, // symbol
+ { prop_name_table+510, prop_name_table+519, }, // titlecase
+ { prop_name_table+519, prop_name_table+534, }, // titlecaseletter
+ { prop_name_table+534, prop_name_table+549, }, // uppercaseletter
+ { prop_name_table+549, prop_name_table+551, }, // z*
+ { prop_name_table+551, prop_name_table+553, }, // zl
+ { prop_name_table+553, prop_name_table+555, }, // zp
+ { prop_name_table+555, prop_name_table+557, }, // zs
+ };
+
+ static const icu_regex_traits::char_class_type icu_class_map[] = {
+ icu_regex_traits::mask_any, // any
+ icu_regex_traits::mask_ascii, // ascii
+ (0x3FFFFFFFu) & ~(U_GC_CN_MASK), // assigned
+ U_GC_C_MASK, // c*
+ U_GC_CC_MASK, // cc
+ U_GC_CF_MASK, // cf
+ U_GC_PE_MASK, // closepunctuation
+ U_GC_CN_MASK, // cn
+ U_GC_CO_MASK, // co
+ U_GC_PC_MASK, // connectorpunctuation
+ U_GC_CC_MASK, // control
+ U_GC_CS_MASK, // cs
+ U_GC_SC_MASK, // currencysymbol
+ U_GC_PD_MASK, // dashpunctuation
+ U_GC_ND_MASK, // decimaldigitnumber
+ U_GC_ME_MASK, // enclosingmark
+ U_GC_PF_MASK, // finalpunctuation
+ U_GC_CF_MASK, // format
+ U_GC_PI_MASK, // initialpunctuation
+ U_GC_L_MASK, // l*
+ U_GC_L_MASK, // letter
+ U_GC_NL_MASK, // letternumber
+ U_GC_ZL_MASK, // lineseparator
+ U_GC_LL_MASK, // ll
+ U_GC_LM_MASK, // lm
+ U_GC_LO_MASK, // lo
+ U_GC_LL_MASK, // lowercaseletter
+ U_GC_LT_MASK, // lt
+ U_GC_LU_MASK, // lu
+ U_GC_M_MASK, // m*
+ U_GC_M_MASK, // mark
+ U_GC_SM_MASK, // mathsymbol
+ U_GC_MC_MASK, // mc
+ U_GC_ME_MASK, // me
+ U_GC_MN_MASK, // mn
+ U_GC_LM_MASK, // modifierletter
+ U_GC_SK_MASK, // modifiersymbol
+ U_GC_N_MASK, // n*
+ U_GC_ND_MASK, // nd
+ U_GC_NL_MASK, // nl
+ U_GC_NO_MASK, // no
+ U_GC_MN_MASK, // nonspacingmark
+ U_GC_CN_MASK, // notassigned
+ U_GC_N_MASK, // number
+ U_GC_PS_MASK, // openpunctuation
+ U_GC_C_MASK, // other
+ U_GC_LO_MASK, // otherletter
+ U_GC_NO_MASK, // othernumber
+ U_GC_PO_MASK, // otherpunctuation
+ U_GC_SO_MASK, // othersymbol
+ U_GC_P_MASK, // p*
+ U_GC_ZP_MASK, // paragraphseparator
+ U_GC_PC_MASK, // pc
+ U_GC_PD_MASK, // pd
+ U_GC_PE_MASK, // pe
+ U_GC_PF_MASK, // pf
+ U_GC_PI_MASK, // pi
+ U_GC_PO_MASK, // po
+ U_GC_CO_MASK, // privateuse
+ U_GC_PS_MASK, // ps
+ U_GC_P_MASK, // punctuation
+ U_GC_S_MASK, // s*
+ U_GC_SC_MASK, // sc
+ U_GC_Z_MASK, // separator
+ U_GC_SK_MASK, // sk
+ U_GC_SM_MASK, // sm
+ U_GC_SO_MASK, // so
+ U_GC_ZS_MASK, // spaceseparator
+ U_GC_MC_MASK, // spacingcombiningmark
+ U_GC_CS_MASK, // surrogate
+ U_GC_S_MASK, // symbol
+ U_GC_LT_MASK, // titlecase
+ U_GC_LT_MASK, // titlecaseletter
+ U_GC_LU_MASK, // uppercaseletter
+ U_GC_Z_MASK, // z*
+ U_GC_ZL_MASK, // zl
+ U_GC_ZP_MASK, // zp
+ U_GC_ZS_MASK, // zs
+ };
+
+
+ static const re_detail::character_pointer_range< ::UChar32>* ranges_begin = range_data;
+ static const re_detail::character_pointer_range< ::UChar32>* ranges_end = range_data + (sizeof(range_data)/sizeof(range_data[0]));
+
+ re_detail::character_pointer_range< ::UChar32> t = { p1, p2, };
+ const re_detail::character_pointer_range< ::UChar32>* p = std::lower_bound(ranges_begin, ranges_end, t);
+ if((p != ranges_end) && (t == *p))
+ return icu_class_map[p - ranges_begin];
+ return 0;
+}
+
+icu_regex_traits::char_class_type icu_regex_traits::lookup_classname(const char_type* p1, const char_type* p2) const
+{
+ static const char_class_type masks[] =
+ {
+ 0,
+ U_GC_L_MASK | U_GC_ND_MASK,
+ U_GC_L_MASK,
+ mask_blank,
+ U_GC_CC_MASK | U_GC_CF_MASK | U_GC_ZL_MASK | U_GC_ZP_MASK,
+ U_GC_ND_MASK,
+ U_GC_ND_MASK,
+ (0x3FFFFFFFu) & ~(U_GC_CC_MASK | U_GC_CF_MASK | U_GC_CS_MASK | U_GC_CN_MASK | U_GC_Z_MASK),
+ U_GC_LL_MASK,
+ U_GC_LL_MASK,
+ ~(U_GC_C_MASK),
+ U_GC_P_MASK,
+ char_class_type(U_GC_Z_MASK) | mask_space,
+ char_class_type(U_GC_Z_MASK) | mask_space,
+ U_GC_LU_MASK,
+ mask_unicode,
+ U_GC_LU_MASK,
+ char_class_type(U_GC_L_MASK | U_GC_ND_MASK | U_GC_MN_MASK) | mask_underscore,
+ char_class_type(U_GC_L_MASK | U_GC_ND_MASK | U_GC_MN_MASK) | mask_underscore,
+ char_class_type(U_GC_ND_MASK) | mask_xdigit,
+ };
+
+ int id = ::boost::re_detail::get_default_class_id(p1, p2);
+ if(id >= 0)
+ return masks[id+1];
+ char_class_type result = lookup_icu_mask(p1, p2);
+ if(result != 0)
+ return result;
+
+ if(id < 0)
+ {
+ string_type s(p1, p2);
+ string_type::size_type i = 0;
+ while(i < s.size())
+ {
+ s[i] = static_cast<char>((::u_tolower)(s[i]));
+ if(::u_isspace(s[i]) || (s[i] == '-') || (s[i] == '_'))
+ s.erase(s.begin()+i, s.begin()+i+1);
+ else
+ {
+ s[i] = static_cast<char>((::u_tolower)(s[i]));
+ ++i;
+ }
+ }
+ if(s.size())
+ id = ::boost::re_detail::get_default_class_id(&*s.begin(), &*s.begin() + s.size());
+ if(id >= 0)
+ return masks[id+1];
+ if(s.size())
+ result = lookup_icu_mask(&*s.begin(), &*s.begin() + s.size());
+ if(result != 0)
+ return result;
+ }
+ BOOST_ASSERT(std::size_t(id+1) < sizeof(masks) / sizeof(masks[0]));
+ return masks[id+1];
+}
+
+icu_regex_traits::string_type icu_regex_traits::lookup_collatename(const char_type* p1, const char_type* p2) const
+{
+ string_type result;
+ if(std::find_if(p1, p2, std::bind2nd(std::greater< ::UChar32>(), 0x7f)) == p2)
+ {
+#ifndef BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
+ std::string s(p1, p2);
+#else
+ std::string s;
+ const char_type* p3 = p1;
+ while(p3 != p2)
+ s.append(1, *p3++);
+#endif
+ // Try Unicode name:
+ UErrorCode err = U_ZERO_ERROR;
+ UChar32 c = ::u_charFromName(U_UNICODE_CHAR_NAME, s.c_str(), &err);
+ if(U_SUCCESS(err))
+ {
+ result.push_back(c);
+ return result;
+ }
+ // Try Unicode-extended name:
+ err = U_ZERO_ERROR;
+ c = ::u_charFromName(U_EXTENDED_CHAR_NAME, s.c_str(), &err);
+ if(U_SUCCESS(err))
+ {
+ result.push_back(c);
+ return result;
+ }
+ // try POSIX name:
+ s = ::boost::re_detail::lookup_default_collate_name(s);
+#ifndef BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
+ result.assign(s.begin(), s.end());
+#else
+ result.clear();
+ std::string::const_iterator si, sj;
+ si = s.begin();
+ sj = s.end();
+ while(si != sj)
+ result.push_back(*si++);
+#endif
+ }
+ if(result.empty() && (p2-p1 == 1))
+ result.push_back(*p1);
+ return result;
+}
+
+bool icu_regex_traits::isctype(char_type c, char_class_type f) const
+{
+ // check for standard catagories first:
+ char_class_type m = char_class_type(1u << u_charType(c));
+ if((m & f) != 0)
+ return true;
+ // now check for special cases:
+ if(((f & mask_blank) != 0) && u_isblank(c))
+ return true;
+ if(((f & mask_space) != 0) && u_isspace(c))
+ return true;
+ if(((f & mask_xdigit) != 0) && (u_digit(c, 16) >= 0))
+ return true;
+ if(((f & mask_unicode) != 0) && (c >= 0x100))
+ return true;
+ if(((f & mask_underscore) != 0) && (c == '_'))
+ return true;
+ if(((f & mask_any) != 0) && (c <= 0x10FFFF))
+ return true;
+ if(((f & mask_ascii) != 0) && (c <= 0x7F))
+ return true;
+ return false;
+}
+
+}
+
+#endif // BOOST_HAS_ICU

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/src/instances.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/src/instances.cpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,32 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE: instances.cpp
+ * VERSION: see <boost/version.hpp>
+ * DESCRIPTION: regex narrow character template instances.
+ */
+
+#define BOOST_REGEX_SOURCE
+
+#include <boost/regex/config.hpp>
+
+#if !defined(BOOST_REGEX_NO_EXTERNAL_TEMPLATES)
+#define BOOST_REGEX_NARROW_INSTANTIATE
+
+#ifdef __BORLANDC__
+#pragma hrdstop
+#endif
+
+#include <boost/regex.hpp>
+
+#endif

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/src/posix_api.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/src/posix_api.cpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,286 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE: posix_api.cpp
+ * VERSION: see <boost/version.hpp>
+ * DESCRIPTION: Implements the Posix API wrappers.
+ */
+
+#define BOOST_REGEX_SOURCE
+
+#include <cstdio>
+#include <boost/cregex.hpp>
+#include <boost/regex.hpp>
+
+#if defined(BOOST_NO_STDC_NAMESPACE)
+namespace std{
+ using ::sprintf;
+ using ::strcpy;
+ using ::strcmp;
+}
+#endif
+
+
+namespace boost{
+
+namespace{
+
+unsigned int magic_value = 25631;
+
+const char* names[] = {
+ "REG_NOERROR",
+ "REG_NOMATCH",
+ "REG_BADPAT",
+ "REG_ECOLLATE",
+ "REG_ECTYPE",
+ "REG_EESCAPE",
+ "REG_ESUBREG",
+ "REG_EBRACK",
+ "REG_EPAREN",
+ "REG_EBRACE",
+ "REG_BADBR",
+ "REG_ERANGE",
+ "REG_ESPACE",
+ "REG_BADRPT",
+ "REG_EEND",
+ "REG_ESIZE",
+ "REG_ERPAREN",
+ "REG_EMPTY",
+ "REG_ECOMPLEXITY",
+ "REG_ESTACK",
+ "REG_E_UNKNOWN",
+};
+} // namespace
+
+BOOST_REGEX_DECL int BOOST_REGEX_CCALL regcompA(regex_tA* expression, const char* ptr, int f)
+{
+ if(expression->re_magic != magic_value)
+ {
+ expression->guts = 0;
+#ifndef BOOST_NO_EXCEPTIONS
+ try{
+#endif
+ expression->guts = new regex();
+#ifndef BOOST_NO_EXCEPTIONS
+ } catch(...)
+ {
+ return REG_ESPACE;
+ }
+#else
+ if(0 == expression->guts)
+ return REG_E_MEMORY;
+#endif
+ }
+ // set default flags:
+ boost::uint_fast32_t flags = (f & REG_PERLEX) ? 0 : ((f & REG_EXTENDED) ? regex::extended : regex::basic);
+ expression->eflags = (f & REG_NEWLINE) ? match_not_dot_newline : match_default;
+ // and translate those that are actually set:
+
+ if(f & REG_NOCOLLATE)
+ {
+ flags |= regex::nocollate;
+#ifndef BOOST_REGEX_V3
+ flags &= ~regex::collate;
+#endif
+ }
+
+ if(f & REG_NOSUB)
+ {
+ //expression->eflags |= match_any;
+ flags |= regex::nosubs;
+ }
+
+ if(f & REG_NOSPEC)
+ flags |= regex::literal;
+ if(f & REG_ICASE)
+ flags |= regex::icase;
+ if(f & REG_ESCAPE_IN_LISTS)
+ flags &= ~regex::no_escape_in_lists;
+ if(f & REG_NEWLINE_ALT)
+ flags |= regex::newline_alt;
+
+ const char* p2;
+ if(f & REG_PEND)
+ p2 = expression->re_endp;
+ else p2 = ptr + std::strlen(ptr);
+
+ int result;
+
+#ifndef BOOST_NO_EXCEPTIONS
+ try{
+#endif
+ expression->re_magic = magic_value;
+ static_cast<regex*>(expression->guts)->set_expression(ptr, p2, flags);
+ expression->re_nsub = static_cast<regex*>(expression->guts)->mark_count() - 1;
+ result = static_cast<regex*>(expression->guts)->error_code();
+#ifndef BOOST_NO_EXCEPTIONS
+ }
+ catch(const boost::regex_error& be)
+ {
+ result = be.code();
+ }
+ catch(...)
+ {
+ result = REG_E_UNKNOWN;
+ }
+#endif
+ if(result)
+ regfreeA(expression);
+ return result;
+
+}
+
+BOOST_REGEX_DECL regsize_t BOOST_REGEX_CCALL regerrorA(int code, const regex_tA* e, char* buf, regsize_t buf_size)
+{
+ std::size_t result = 0;
+ if(code & REG_ITOA)
+ {
+ code &= ~REG_ITOA;
+ if(code <= (int)REG_E_UNKNOWN)
+ {
+ result = std::strlen(names[code]) + 1;
+ if(buf_size >= result)
+ re_detail::strcpy_s(buf, buf_size, names[code]);
+ return result;
+ }
+ return result;
+ }
+ if(code == REG_ATOI)
+ {
+ char localbuf[5];
+ if(e == 0)
+ return 0;
+ for(int i = 0; i <= (int)REG_E_UNKNOWN; ++i)
+ {
+ if(std::strcmp(e->re_endp, names[i]) == 0)
+ {
+#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400)
+ (::sprintf_s)(localbuf, 5, "%d", i);
+#else
+ (std::sprintf)(localbuf, "%d", i);
+#endif
+ if(std::strlen(localbuf) < buf_size)
+ re_detail::strcpy_s(buf, buf_size, localbuf);
+ return std::strlen(localbuf) + 1;
+ }
+ }
+#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400)
+ (::sprintf_s)(localbuf, 5, "%d", 0);
+#else
+ (std::sprintf)(localbuf, "%d", 0);
+#endif
+ if(std::strlen(localbuf) < buf_size)
+ re_detail::strcpy_s(buf, buf_size, localbuf);
+ return std::strlen(localbuf) + 1;
+ }
+ if(code <= (int)REG_E_UNKNOWN)
+ {
+ std::string p;
+ if((e) && (e->re_magic == magic_value))
+ p = static_cast<regex*>(e->guts)->get_traits().error_string(static_cast< ::boost::regex_constants::error_type>(code));
+ else
+ {
+ p = re_detail::get_default_error_string(static_cast< ::boost::regex_constants::error_type>(code));
+ }
+ std::size_t len = p.size();
+ if(len < buf_size)
+ {
+ re_detail::strcpy_s(buf, buf_size, p.c_str());
+ }
+ return len + 1;
+ }
+ if(buf_size)
+ *buf = 0;
+ return 0;
+}
+
+BOOST_REGEX_DECL int BOOST_REGEX_CCALL regexecA(const regex_tA* expression, const char* buf, regsize_t n, regmatch_t* array, int eflags)
+{
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4267)
+#endif
+ bool result = false;
+ match_flag_type flags = match_default | expression->eflags;
+ const char* end;
+ const char* start;
+ cmatch m;
+
+ if(eflags & REG_NOTBOL)
+ flags |= match_not_bol;
+ if(eflags & REG_NOTEOL)
+ flags |= match_not_eol;
+ if(eflags & REG_STARTEND)
+ {
+ start = buf + array[0].rm_so;
+ end = buf + array[0].rm_eo;
+ }
+ else
+ {
+ start = buf;
+ end = buf + std::strlen(buf);
+ }
+
+#ifndef BOOST_NO_EXCEPTIONS
+ try{
+#endif
+ if(expression->re_magic == magic_value)
+ {
+ result = regex_search(start, end, m, *static_cast<regex*>(expression->guts), flags);
+ }
+ else
+ return result;
+#ifndef BOOST_NO_EXCEPTIONS
+ } catch(...)
+ {
+ return REG_E_UNKNOWN;
+ }
+#endif
+
+ if(result)
+ {
+ // extract what matched:
+ std::size_t i;
+ for(i = 0; (i < n) && (i < expression->re_nsub + 1); ++i)
+ {
+ array[i].rm_so = (m[i].matched == false) ? -1 : (m[i].first - buf);
+ array[i].rm_eo = (m[i].matched == false) ? -1 : (m[i].second - buf);
+ }
+ // and set anything else to -1:
+ for(i = expression->re_nsub + 1; i < n; ++i)
+ {
+ array[i].rm_so = -1;
+ array[i].rm_eo = -1;
+ }
+ return 0;
+ }
+ return REG_NOMATCH;
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+}
+
+BOOST_REGEX_DECL void BOOST_REGEX_CCALL regfreeA(regex_tA* expression)
+{
+ if(expression->re_magic == magic_value)
+ {
+ delete static_cast<regex*>(expression->guts);
+ }
+ expression->re_magic = 0;
+}
+
+} // namespace boost
+
+
+
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/src/regex.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/src/regex.cpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,239 @@
+/*
+ *
+ * Copyright (c) 1998-2004
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE: regex.cpp
+ * VERSION: see <boost/version.hpp>
+ * DESCRIPTION: Misc boost::regbase member funnctions.
+ */
+
+
+#define BOOST_REGEX_SOURCE
+
+#include <new>
+#include <boost/regex.hpp>
+#include <boost/throw_exception.hpp>
+
+#if defined(BOOST_REGEX_HAS_MS_STACK_GUARD) && defined(_MSC_VER) && (_MSC_VER >= 1300)
+# include <malloc.h>
+#endif
+#ifdef BOOST_REGEX_HAS_MS_STACK_GUARD
+#define WIN32_LEAN_AND_MEAN
+#ifndef NOMINMAX
+# define NOMINMAX
+#endif
+#define NOGDI
+#define NOUSER
+#include <windows.h>
+#endif
+
+#if defined(BOOST_REGEX_NON_RECURSIVE) && !defined(BOOST_REGEX_V3)
+#if BOOST_REGEX_MAX_CACHE_BLOCKS == 0
+#include <new>
+#else
+#include <boost/regex/v4/mem_block_cache.hpp>
+#endif
+#endif
+
+
+namespace boost{
+
+//
+// fix: these are declared out of line here to ensure
+// that dll builds contain the Virtual table for these
+// types - this ensures that exceptions can be thrown
+// from the dll and caught in an exe.
+regex_error::regex_error(const std::string& s, regex_constants::error_type err, std::ptrdiff_t pos)
+ : std::runtime_error(s)
+ , m_error_code(err)
+ , m_position(pos)
+{
+}
+
+regex_error::regex_error(regex_constants::error_type err)
+ : std::runtime_error(::boost::re_detail::get_default_error_string(err))
+ , m_error_code(err)
+ , m_position(0)
+{
+}
+
+regex_error::~regex_error() throw()
+{
+}
+
+void regex_error::raise()const
+{
+#ifndef BOOST_NO_EXCEPTIONS
+ ::boost::throw_exception(*this);
+#endif
+}
+
+
+
+namespace re_detail{
+
+BOOST_REGEX_DECL void BOOST_REGEX_CALL raise_runtime_error(const std::runtime_error& ex)
+{
+ ::boost::throw_exception(ex);
+}
+//
+// error checking API:
+//
+BOOST_REGEX_DECL void BOOST_REGEX_CALL verify_options(boost::regex::flag_type /*ef*/, match_flag_type mf)
+{
+#ifndef BOOST_REGEX_V3
+ //
+ // can't mix match_extra with POSIX matching rules:
+ //
+ if((mf & match_extra) && (mf & match_posix))
+ {
+ std::logic_error msg("Usage Error: Can't mix regular expression captures with POSIX matching rules");
+ throw_exception(msg);
+ }
+#endif
+}
+
+#ifdef BOOST_REGEX_HAS_MS_STACK_GUARD
+
+static void execute_eror()
+{
+ // we only get here after a stack overflow,
+ // this has to be a separate proceedure because we
+ // can't mix __try{}__except block with local objects
+ // that have destructors:
+ reset_stack_guard_page();
+ std::runtime_error err("Out of stack space, while attempting to match a regular expression.");
+ raise_runtime_error(err);
+}
+
+bool BOOST_REGEX_CALL abstract_protected_call::execute()const
+{
+ __try{
+ return this->call();
+ }__except(EXCEPTION_STACK_OVERFLOW == GetExceptionCode())
+ {
+ execute_eror();
+ }
+ // We never really get here at all:
+ return false;
+}
+
+BOOST_REGEX_DECL void BOOST_REGEX_CALL reset_stack_guard_page()
+{
+#if defined(BOOST_REGEX_HAS_MS_STACK_GUARD) && defined(_MSC_VER) && (_MSC_VER >= 1300)
+ _resetstkoflw();
+#else
+ //
+ // We need to locate the current page being used by the stack,
+ // move to the page below it and then deallocate and protect
+ // that page. Note that ideally we would protect only the lowest
+ // stack page that has been allocated: in practice there
+ // seems to be no easy way to locate this page, in any case as
+ // long as the next page is protected, then Windows will figure
+ // the rest out for us...
+ //
+ SYSTEM_INFO si;
+ GetSystemInfo(&si);
+ MEMORY_BASIC_INFORMATION mi;
+ DWORD previous_protection_status;
+ //
+ // this is an address in our stack space:
+ //
+ LPBYTE page = (LPBYTE)&page;
+ //
+ // Get the current memory page in use:
+ //
+ VirtualQuery(page, &mi, sizeof(mi));
+ //
+ // Go to the page one below this:
+ //
+ page = (LPBYTE)(mi.BaseAddress)-si.dwPageSize;
+ //
+ // Free and protect everything from the start of the
+ // allocation range, to the end of the page below the
+ // one in use:
+ //
+ if (!VirtualFree(mi.AllocationBase, (LPBYTE)page - (LPBYTE)mi.AllocationBase, MEM_DECOMMIT)
+ || !VirtualProtect(page, si.dwPageSize, PAGE_GUARD | PAGE_READWRITE, &previous_protection_status))
+ {
+ throw std::bad_exception();
+ }
+#endif
+}
+#endif
+
+#if defined(BOOST_REGEX_NON_RECURSIVE) && !defined(BOOST_REGEX_V3)
+
+#if BOOST_REGEX_MAX_CACHE_BLOCKS == 0
+
+BOOST_REGEX_DECL void* BOOST_REGEX_CALL get_mem_block()
+{
+ return ::operator new(BOOST_REGEX_BLOCKSIZE);
+}
+
+BOOST_REGEX_DECL void BOOST_REGEX_CALL put_mem_block(void* p)
+{
+ ::operator delete(p);
+}
+
+#else
+
+#ifdef BOOST_HAS_THREADS
+mem_block_cache block_cache = { 0, 0, BOOST_STATIC_MUTEX_INIT, };
+#else
+mem_block_cache block_cache = { 0, 0, };
+#endif
+
+BOOST_REGEX_DECL void* BOOST_REGEX_CALL get_mem_block()
+{
+ return block_cache.get();
+}
+
+BOOST_REGEX_DECL void BOOST_REGEX_CALL put_mem_block(void* p)
+{
+ block_cache.put(p);
+}
+
+#endif
+
+#endif
+
+} // namespace re_detail
+
+
+
+} // namespace boost
+
+#if defined(BOOST_RE_USE_VCL) && defined(BOOST_REGEX_DYN_LINK)
+
+int WINAPI DllEntryPoint(HINSTANCE , unsigned long , void*)
+{
+ return 1;
+}
+#endif
+
+#if defined(__IBMCPP__) && defined(BOOST_REGEX_DYN_LINK)
+//
+// Is this correct - linker complains without it ?
+//
+int main()
+{
+ return 0;
+}
+
+#endif
+
+
+
+
+
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/src/regex_debug.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/src/regex_debug.cpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,59 @@
+/*
+ *
+ * Copyright (c) 1998-2004
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE: regex_debug.cpp
+ * VERSION: see <boost/version.hpp>
+ * DESCRIPTION: Misc. debugging helpers.
+ */
+
+
+#define BOOST_REGEX_SOURCE
+
+#include <boost/regex/config.hpp>
+
+
+//
+// regex configuration information: this prints out the settings used
+// when the library was built - include in debugging builds only:
+//
+#ifdef BOOST_REGEX_CONFIG_INFO
+
+#define print_macro regex_lib_print_macro
+#define print_expression regex_lib_print_expression
+#define print_byte_order regex_lib_print_byte_order
+#define print_sign regex_lib_print_sign
+#define print_compiler_macros regex_lib_print_compiler_macros
+#define print_stdlib_macros regex_lib_print_stdlib_macros
+#define print_platform_macros regex_lib_print_platform_macros
+#define print_boost_macros regex_lib_print_boost_macros
+#define print_separator regex_lib_print_separator
+#define OLD_MAIN regex_lib_main
+#define NEW_MAIN regex_lib_main2
+#define NO_RECURSE
+
+#include <libs/regex/test/config_info/regex_config_info.cpp>
+
+BOOST_REGEX_DECL void BOOST_REGEX_CALL print_regex_library_info()
+{
+ std::cout << "\n\n";
+ print_separator();
+ std::cout << "Regex library build configuration:\n\n";
+ regex_lib_main2();
+}
+
+#endif
+
+
+
+
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/src/regex_raw_buffer.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/src/regex_raw_buffer.cpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,70 @@
+/*
+ *
+ * Copyright (c) 2004
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE regex_raw_buffer.cpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Member functions for class raw_storage.
+ */
+
+
+#define BOOST_REGEX_SOURCE
+#include <memory>
+#include <cstring>
+#include <boost/assert.hpp>
+#include <boost/regex/v4/regex_raw_buffer.hpp>
+
+#if defined(BOOST_NO_STDC_NAMESPACE)
+namespace std{
+ using ::memcpy;
+ using ::memmove;
+}
+#endif
+
+
+namespace boost{ namespace re_detail{
+
+void BOOST_REGEX_CALL raw_storage::resize(size_type n)
+{
+ register size_type newsize = start ? last - start : 1024;
+ while(newsize < n)
+ newsize *= 2;
+ register size_type datasize = end - start;
+ // extend newsize to WORD/DWORD boundary:
+ newsize = (newsize + padding_mask) & ~(padding_mask);
+
+ // allocate and copy data:
+ register pointer ptr = static_cast<pointer>(::operator new(newsize));
+ BOOST_REGEX_NOEH_ASSERT(ptr)
+ std::memcpy(ptr, start, datasize);
+
+ // get rid of old buffer:
+ ::operator delete(start);
+
+ // and set up pointers:
+ start = ptr;
+ end = ptr + datasize;
+ last = ptr + newsize;
+}
+
+void* BOOST_REGEX_CALL raw_storage::insert(size_type pos, size_type n)
+{
+ BOOST_ASSERT(pos <= size_type(end - start));
+ if(size_type(last - end) < n)
+ resize(n + (end - start));
+ register void* result = start + pos;
+ std::memmove(start + pos + n, start + pos, (end - start) - pos);
+ end += n;
+ return result;
+}
+
+}} // namespaces

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/src/regex_traits_defaults.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/src/regex_traits_defaults.cpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,688 @@
+/*
+ *
+ * Copyright (c) 2004
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE regex_traits_defaults.cpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Declares API's for access to regex_traits default properties.
+ */
+
+#define BOOST_REGEX_SOURCE
+#include <boost/regex/regex_traits.hpp>
+
+#include <cctype>
+#ifndef BOOST_NO_WREGEX
+#include <cwctype>
+#endif
+
+#if defined(BOOST_NO_STDC_NAMESPACE)
+namespace std{
+ using ::tolower;
+ using ::toupper;
+#ifndef BOOST_NO_WREGEX
+ using ::towlower;
+ using ::towupper;
+#endif
+}
+#endif
+
+
+namespace boost{ namespace re_detail{
+
+BOOST_REGEX_DECL const char* BOOST_REGEX_CALL get_default_syntax(regex_constants::syntax_type n)
+{
+ // if the user hasn't supplied a message catalog, then this supplies
+ // default "messages" for us to load in the range 1-100.
+ const char* messages[] = {
+ "",
+ "(",
+ ")",
+ "$",
+ "^",
+ ".",
+ "*",
+ "+",
+ "?",
+ "[",
+ "]",
+ "|",
+ "\\",
+ "#",
+ "-",
+ "{",
+ "}",
+ "0123456789",
+ "b",
+ "B",
+ "<",
+ ">",
+ "",
+ "",
+ "A`",
+ "z'",
+ "\n",
+ ",",
+ "a",
+ "f",
+ "n",
+ "r",
+ "t",
+ "v",
+ "x",
+ "c",
+ ":",
+ "=",
+ "e",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "E",
+ "Q",
+ "X",
+ "C",
+ "Z",
+ "G",
+ "!",
+ "p",
+ "P",
+ "N",
+ };
+
+ return ((n >= (sizeof(messages) / sizeof(messages[1]))) ? "" : messages[n]);
+}
+
+BOOST_REGEX_DECL const char* BOOST_REGEX_CALL get_default_error_string(regex_constants::error_type n)
+{
+ static const char* const s_default_error_messages[] = {
+ "Success", /* REG_NOERROR */
+ "No match", /* REG_NOMATCH */
+ "Invalid regular expression", /* REG_BADPAT */
+ "Invalid collation character", /* REG_ECOLLATE */
+ "Invalid character class name", /* REG_ECTYPE */
+ "Invalid or trailing backslash", /* REG_EESCAPE */
+ "Invalid back reference", /* REG_ESUBREG */
+ "Unmatched [ or [^", /* REG_EBRACK */
+ "Unmatched ( or \\(", /* REG_EPAREN */
+ "Unmatched { or \\{", /* REG_EBRACE */
+ "Invalid content of repeat range", /* REG_BADBR */
+ "Invalid range end", /* REG_ERANGE */
+ "Memory exhausted", /* REG_ESPACE */
+ "Invalid preceding regular expression", /* REG_BADRPT */
+ "Premature end of regular expression", /* REG_EEND */
+ "Regular expression too big", /* REG_ESIZE */
+ "Unmatched ) or \\)", /* REG_ERPAREN */
+ "Empty expression", /* REG_EMPTY */
+ "Complexity requirements exceeded", /* REG_ECOMPLEXITY */
+ "Out of stack space", /* REG_ESTACK */
+ "Unknown error", /* REG_E_UNKNOWN */
+ "",
+ "",
+ "",
+ };
+
+ return (n > ::boost::regex_constants::error_unknown) ? s_default_error_messages[ ::boost::regex_constants::error_unknown] : s_default_error_messages[n];
+}
+
+BOOST_REGEX_DECL bool BOOST_REGEX_CALL is_combining_implementation(boost::uint_least16_t c)
+{
+ const boost::uint_least16_t combining_ranges[] = { 0x0300, 0x0361,
+ 0x0483, 0x0486,
+ 0x0903, 0x0903,
+ 0x093E, 0x0940,
+ 0x0949, 0x094C,
+ 0x0982, 0x0983,
+ 0x09BE, 0x09C0,
+ 0x09C7, 0x09CC,
+ 0x09D7, 0x09D7,
+ 0x0A3E, 0x0A40,
+ 0x0A83, 0x0A83,
+ 0x0ABE, 0x0AC0,
+ 0x0AC9, 0x0ACC,
+ 0x0B02, 0x0B03,
+ 0x0B3E, 0x0B3E,
+ 0x0B40, 0x0B40,
+ 0x0B47, 0x0B4C,
+ 0x0B57, 0x0B57,
+ 0x0B83, 0x0B83,
+ 0x0BBE, 0x0BBF,
+ 0x0BC1, 0x0BCC,
+ 0x0BD7, 0x0BD7,
+ 0x0C01, 0x0C03,
+ 0x0C41, 0x0C44,
+ 0x0C82, 0x0C83,
+ 0x0CBE, 0x0CBE,
+ 0x0CC0, 0x0CC4,
+ 0x0CC7, 0x0CCB,
+ 0x0CD5, 0x0CD6,
+ 0x0D02, 0x0D03,
+ 0x0D3E, 0x0D40,
+ 0x0D46, 0x0D4C,
+ 0x0D57, 0x0D57,
+ 0x0F7F, 0x0F7F,
+ 0x20D0, 0x20E1,
+ 0x3099, 0x309A,
+ 0xFE20, 0xFE23,
+ 0xffff, 0xffff, };
+
+ const boost::uint_least16_t* p = combining_ranges + 1;
+ while(*p < c) p += 2;
+ --p;
+ if((c >= *p) && (c <= *(p+1)))
+ return true;
+ return false;
+}
+
+//
+// these are the POSIX collating names:
+//
+BOOST_REGEX_DECL const char* def_coll_names[] = {
+"NUL", "SOH", "STX", "ETX", "EOT", "ENQ", "ACK", "alert", "backspace", "tab", "newline",
+"vertical-tab", "form-feed", "carriage-return", "SO", "SI", "DLE", "DC1", "DC2", "DC3", "DC4", "NAK",
+"SYN", "ETB", "CAN", "EM", "SUB", "ESC", "IS4", "IS3", "IS2", "IS1", "space", "exclamation-mark",
+"quotation-mark", "number-sign", "dollar-sign", "percent-sign", "ampersand", "apostrophe",
+"left-parenthesis", "right-parenthesis", "asterisk", "plus-sign", "comma", "hyphen",
+"period", "slash", "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine",
+"colon", "semicolon", "less-than-sign", "equals-sign", "greater-than-sign",
+"question-mark", "commercial-at", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P",
+"Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "left-square-bracket", "backslash",
+"right-square-bracket", "circumflex", "underscore", "grave-accent", "a", "b", "c", "d", "e", "f",
+"g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "left-curly-bracket",
+"vertical-line", "right-curly-bracket", "tilde", "DEL", "",
+};
+
+// these multi-character collating elements
+// should keep most Western-European locales
+// happy - we should really localise these a
+// little more - but this will have to do for
+// now:
+
+BOOST_REGEX_DECL const char* def_multi_coll[] = {
+ "ae",
+ "Ae",
+ "AE",
+ "ch",
+ "Ch",
+ "CH",
+ "ll",
+ "Ll",
+ "LL",
+ "ss",
+ "Ss",
+ "SS",
+ "nj",
+ "Nj",
+ "NJ",
+ "dz",
+ "Dz",
+ "DZ",
+ "lj",
+ "Lj",
+ "LJ",
+ "",
+};
+
+
+
+BOOST_REGEX_DECL std::string BOOST_REGEX_CALL lookup_default_collate_name(const std::string& name)
+{
+ unsigned int i = 0;
+ while(*def_coll_names[i])
+ {
+ if(def_coll_names[i] == name)
+ {
+ return std::string(1, char(i));
+ }
+ ++i;
+ }
+ i = 0;
+ while(*def_multi_coll[i])
+ {
+ if(def_multi_coll[i] == name)
+ {
+ return def_multi_coll[i];
+ }
+ ++i;
+ }
+ return std::string();
+}
+
+BOOST_REGEX_DECL char BOOST_REGEX_CALL do_global_lower(char c)
+{
+ return static_cast<char>((std::tolower)((unsigned char)c));
+}
+
+BOOST_REGEX_DECL char BOOST_REGEX_CALL do_global_upper(char c)
+{
+ return static_cast<char>((std::toupper)((unsigned char)c));
+}
+#ifndef BOOST_NO_WREGEX
+BOOST_REGEX_DECL wchar_t BOOST_REGEX_CALL do_global_lower(wchar_t c)
+{
+ return (std::towlower)(c);
+}
+
+BOOST_REGEX_DECL wchar_t BOOST_REGEX_CALL do_global_upper(wchar_t c)
+{
+ return (std::towupper)(c);
+}
+#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T
+BOOST_REGEX_DECL unsigned short BOOST_REGEX_CALL do_global_lower(unsigned short c)
+{
+ return (std::towlower)(c);
+}
+
+BOOST_REGEX_DECL unsigned short BOOST_REGEX_CALL do_global_upper(unsigned short c)
+{
+ return (std::towupper)(c);
+}
+#endif
+
+#endif
+
+BOOST_REGEX_DECL regex_constants::escape_syntax_type BOOST_REGEX_CALL get_default_escape_syntax_type(char c)
+{
+ //
+ // char_syntax determines how the compiler treats a given character
+ // in a regular expression.
+ //
+ static regex_constants::escape_syntax_type char_syntax[] = {
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /* */ // 32
+ regex_constants::escape_type_identity, /*!*/
+ regex_constants::escape_type_identity, /*"*/
+ regex_constants::escape_type_identity, /*#*/
+ regex_constants::escape_type_identity, /*$*/
+ regex_constants::escape_type_identity, /*%*/
+ regex_constants::escape_type_identity, /*&*/
+ regex_constants::escape_type_end_buffer, /*'*/
+ regex_constants::syntax_open_mark, /*(*/
+ regex_constants::syntax_close_mark, /*)*/
+ regex_constants::escape_type_identity, /***/
+ regex_constants::syntax_plus, /*+*/
+ regex_constants::escape_type_identity, /*,*/
+ regex_constants::escape_type_identity, /*-*/
+ regex_constants::escape_type_identity, /*.*/
+ regex_constants::escape_type_identity, /*/*/
+ regex_constants::escape_type_decimal, /*0*/
+ regex_constants::escape_type_backref, /*1*/
+ regex_constants::escape_type_backref, /*2*/
+ regex_constants::escape_type_backref, /*3*/
+ regex_constants::escape_type_backref, /*4*/
+ regex_constants::escape_type_backref, /*5*/
+ regex_constants::escape_type_backref, /*6*/
+ regex_constants::escape_type_backref, /*7*/
+ regex_constants::escape_type_backref, /*8*/
+ regex_constants::escape_type_backref, /*9*/
+ regex_constants::escape_type_identity, /*:*/
+ regex_constants::escape_type_identity, /*;*/
+ regex_constants::escape_type_left_word, /*<*/
+ regex_constants::escape_type_identity, /*=*/
+ regex_constants::escape_type_right_word, /*>*/
+ regex_constants::syntax_question, /*?*/
+ regex_constants::escape_type_identity, /*@*/
+ regex_constants::escape_type_start_buffer, /*A*/
+ regex_constants::escape_type_not_word_assert, /*B*/
+ regex_constants::escape_type_C, /*C*/
+ regex_constants::escape_type_not_class, /*D*/
+ regex_constants::escape_type_E, /*E*/
+ regex_constants::escape_type_not_class, /*F*/
+ regex_constants::escape_type_G, /*G*/
+ regex_constants::escape_type_not_class, /*H*/
+ regex_constants::escape_type_not_class, /*I*/
+ regex_constants::escape_type_not_class, /*J*/
+ regex_constants::escape_type_not_class, /*K*/
+ regex_constants::escape_type_not_class, /*L*/
+ regex_constants::escape_type_not_class, /*M*/
+ regex_constants::escape_type_named_char, /*N*/
+ regex_constants::escape_type_not_class, /*O*/
+ regex_constants::escape_type_not_property, /*P*/
+ regex_constants::escape_type_Q, /*Q*/
+ regex_constants::escape_type_not_class, /*R*/
+ regex_constants::escape_type_not_class, /*S*/
+ regex_constants::escape_type_not_class, /*T*/
+ regex_constants::escape_type_not_class, /*U*/
+ regex_constants::escape_type_not_class, /*V*/
+ regex_constants::escape_type_not_class, /*W*/
+ regex_constants::escape_type_X, /*X*/
+ regex_constants::escape_type_not_class, /*Y*/
+ regex_constants::escape_type_Z, /*Z*/
+ regex_constants::escape_type_identity, /*[*/
+ regex_constants::escape_type_identity, /*\*/
+ regex_constants::escape_type_identity, /*]*/
+ regex_constants::escape_type_identity, /*^*/
+ regex_constants::escape_type_identity, /*_*/
+ regex_constants::escape_type_start_buffer, /*`*/
+ regex_constants::escape_type_control_a, /*a*/
+ regex_constants::escape_type_word_assert, /*b*/
+ regex_constants::escape_type_ascii_control, /*c*/
+ regex_constants::escape_type_class, /*d*/
+ regex_constants::escape_type_e, /*e*/
+ regex_constants::escape_type_control_f, /*f*/
+ regex_constants::escape_type_class, /*g*/
+ regex_constants::escape_type_class, /*h*/
+ regex_constants::escape_type_class, /*i*/
+ regex_constants::escape_type_class, /*j*/
+ regex_constants::escape_type_class, /*k*/
+ regex_constants::escape_type_class, /*l*/
+ regex_constants::escape_type_class, /*m*/
+ regex_constants::escape_type_control_n, /*n*/
+ regex_constants::escape_type_class, /*o*/
+ regex_constants::escape_type_property, /*p*/
+ regex_constants::escape_type_class, /*q*/
+ regex_constants::escape_type_control_r, /*r*/
+ regex_constants::escape_type_class, /*s*/
+ regex_constants::escape_type_control_t, /*t*/
+ regex_constants::escape_type_class, /*u*/
+ regex_constants::escape_type_control_v, /*v*/
+ regex_constants::escape_type_class, /*w*/
+ regex_constants::escape_type_hex, /*x*/
+ regex_constants::escape_type_class, /*y*/
+ regex_constants::escape_type_end_buffer, /*z*/
+ regex_constants::syntax_open_brace, /*{*/
+ regex_constants::syntax_or, /*|*/
+ regex_constants::syntax_close_brace, /*}*/
+ regex_constants::escape_type_identity, /*~*/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ regex_constants::escape_type_identity, /**/
+ };
+
+ return char_syntax[(unsigned char)c];
+}
+
+BOOST_REGEX_DECL regex_constants::syntax_type BOOST_REGEX_CALL get_default_syntax_type(char c)
+{
+ //
+ // char_syntax determines how the compiler treats a given character
+ // in a regular expression.
+ //
+ static regex_constants::syntax_type char_syntax[] = {
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_newline, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /* */ // 32
+ regex_constants::syntax_not, /*!*/
+ regex_constants::syntax_char, /*"*/
+ regex_constants::syntax_hash, /*#*/
+ regex_constants::syntax_dollar, /*$*/
+ regex_constants::syntax_char, /*%*/
+ regex_constants::syntax_char, /*&*/
+ regex_constants::syntax_char, /*'*/
+ regex_constants::syntax_open_mark, /*(*/
+ regex_constants::syntax_close_mark, /*)*/
+ regex_constants::syntax_star, /***/
+ regex_constants::syntax_plus, /*+*/
+ regex_constants::syntax_comma, /*,*/
+ regex_constants::syntax_dash, /*-*/
+ regex_constants::syntax_dot, /*.*/
+ regex_constants::syntax_char, /*/*/
+ regex_constants::syntax_digit, /*0*/
+ regex_constants::syntax_digit, /*1*/
+ regex_constants::syntax_digit, /*2*/
+ regex_constants::syntax_digit, /*3*/
+ regex_constants::syntax_digit, /*4*/
+ regex_constants::syntax_digit, /*5*/
+ regex_constants::syntax_digit, /*6*/
+ regex_constants::syntax_digit, /*7*/
+ regex_constants::syntax_digit, /*8*/
+ regex_constants::syntax_digit, /*9*/
+ regex_constants::syntax_colon, /*:*/
+ regex_constants::syntax_char, /*;*/
+ regex_constants::escape_type_left_word, /*<*/
+ regex_constants::syntax_equal, /*=*/
+ regex_constants::escape_type_right_word, /*>*/
+ regex_constants::syntax_question, /*?*/
+ regex_constants::syntax_char, /*@*/
+ regex_constants::syntax_char, /*A*/
+ regex_constants::syntax_char, /*B*/
+ regex_constants::syntax_char, /*C*/
+ regex_constants::syntax_char, /*D*/
+ regex_constants::syntax_char, /*E*/
+ regex_constants::syntax_char, /*F*/
+ regex_constants::syntax_char, /*G*/
+ regex_constants::syntax_char, /*H*/
+ regex_constants::syntax_char, /*I*/
+ regex_constants::syntax_char, /*J*/
+ regex_constants::syntax_char, /*K*/
+ regex_constants::syntax_char, /*L*/
+ regex_constants::syntax_char, /*M*/
+ regex_constants::syntax_char, /*N*/
+ regex_constants::syntax_char, /*O*/
+ regex_constants::syntax_char, /*P*/
+ regex_constants::syntax_char, /*Q*/
+ regex_constants::syntax_char, /*R*/
+ regex_constants::syntax_char, /*S*/
+ regex_constants::syntax_char, /*T*/
+ regex_constants::syntax_char, /*U*/
+ regex_constants::syntax_char, /*V*/
+ regex_constants::syntax_char, /*W*/
+ regex_constants::syntax_char, /*X*/
+ regex_constants::syntax_char, /*Y*/
+ regex_constants::syntax_char, /*Z*/
+ regex_constants::syntax_open_set, /*[*/
+ regex_constants::syntax_escape, /*\*/
+ regex_constants::syntax_close_set, /*]*/
+ regex_constants::syntax_caret, /*^*/
+ regex_constants::syntax_char, /*_*/
+ regex_constants::syntax_char, /*`*/
+ regex_constants::syntax_char, /*a*/
+ regex_constants::syntax_char, /*b*/
+ regex_constants::syntax_char, /*c*/
+ regex_constants::syntax_char, /*d*/
+ regex_constants::syntax_char, /*e*/
+ regex_constants::syntax_char, /*f*/
+ regex_constants::syntax_char, /*g*/
+ regex_constants::syntax_char, /*h*/
+ regex_constants::syntax_char, /*i*/
+ regex_constants::syntax_char, /*j*/
+ regex_constants::syntax_char, /*k*/
+ regex_constants::syntax_char, /*l*/
+ regex_constants::syntax_char, /*m*/
+ regex_constants::syntax_char, /*n*/
+ regex_constants::syntax_char, /*o*/
+ regex_constants::syntax_char, /*p*/
+ regex_constants::syntax_char, /*q*/
+ regex_constants::syntax_char, /*r*/
+ regex_constants::syntax_char, /*s*/
+ regex_constants::syntax_char, /*t*/
+ regex_constants::syntax_char, /*u*/
+ regex_constants::syntax_char, /*v*/
+ regex_constants::syntax_char, /*w*/
+ regex_constants::syntax_char, /*x*/
+ regex_constants::syntax_char, /*y*/
+ regex_constants::syntax_char, /*z*/
+ regex_constants::syntax_open_brace, /*{*/
+ regex_constants::syntax_or, /*|*/
+ regex_constants::syntax_close_brace, /*}*/
+ regex_constants::syntax_char, /*~*/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ regex_constants::syntax_char, /**/
+ };
+
+ return char_syntax[(unsigned char)c];
+}
+
+
+} // re_detail
+} // boost

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/src/static_mutex.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/src/static_mutex.cpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,179 @@
+/*
+ *
+ * Copyright (c) 2004
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE static_mutex.cpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Declares static_mutex lock type.
+ */
+
+#define BOOST_REGEX_SOURCE
+#include <boost/config.hpp>
+
+#ifdef BOOST_HAS_THREADS
+
+#include <boost/regex/pending/static_mutex.hpp>
+
+#if defined(BOOST_HAS_WINTHREADS)
+#ifndef NOMINMAX
+# define NOMINMAX
+#endif
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+#include <boost/static_assert.hpp>
+#endif
+
+
+namespace boost{
+
+#if defined(BOOST_HAS_PTHREADS) && defined(PTHREAD_MUTEX_INITIALIZER)
+
+scoped_static_mutex_lock::scoped_static_mutex_lock(static_mutex& m, bool lk)
+: m_mutex(m), m_have_lock(false)
+{
+ if(lk)
+ lock();
+}
+
+scoped_static_mutex_lock::~scoped_static_mutex_lock()
+{
+ if(m_have_lock)
+ unlock();
+}
+
+void scoped_static_mutex_lock::lock()
+{
+ if(0 == m_have_lock)
+ {
+ pthread_mutex_lock(&(m_mutex.m_mutex));
+ m_have_lock = true;
+ }
+}
+
+void scoped_static_mutex_lock::unlock()
+{
+ if(m_have_lock)
+ {
+ pthread_mutex_unlock(&(m_mutex.m_mutex));
+ m_have_lock = false;
+ }
+}
+
+#elif defined(BOOST_HAS_WINTHREADS)
+
+BOOST_STATIC_ASSERT(sizeof(LONG) == sizeof(boost::int32_t));
+
+scoped_static_mutex_lock::scoped_static_mutex_lock(static_mutex& m, bool lk)
+: m_mutex(m), m_have_lock(false)
+{
+ if(lk)
+ lock();
+}
+
+scoped_static_mutex_lock::~scoped_static_mutex_lock()
+{
+ if(m_have_lock)
+ unlock();
+}
+
+void scoped_static_mutex_lock::lock()
+{
+ if(0 == m_have_lock)
+ {
+#if !defined(InterlockedCompareExchangePointer)
+ while(0 != InterlockedCompareExchange(reinterpret_cast<void**>((boost::uint_least16_t*)&(m_mutex.m_mutex)), (void*)1, 0))
+#else
+ while(0 != InterlockedCompareExchange(reinterpret_cast<LONG*>(&(m_mutex.m_mutex)), 1, 0))
+#endif
+ {
+ Sleep(0);
+ }
+ m_have_lock = true;
+ }
+}
+
+void scoped_static_mutex_lock::unlock()
+{
+ if(m_have_lock)
+ {
+#if !defined(InterlockedCompareExchangePointer)
+ InterlockedExchange((LONG*)&(m_mutex.m_mutex), 0);
+#else
+ InterlockedExchange(reinterpret_cast<LONG*>(&(m_mutex.m_mutex)), 0);
+#endif
+ m_have_lock = false;
+ }
+}
+
+#else
+//
+// Portable version of a static mutex based on Boost.Thread library:
+//
+#include <stdlib.h>
+#include <boost/assert.hpp>
+
+boost::recursive_mutex* static_mutex::m_pmutex = 0;
+boost::once_flag static_mutex::m_once = BOOST_ONCE_INIT;
+
+extern "C" BOOST_REGEX_DECL void free_static_mutex()
+{
+ delete static_mutex::m_pmutex;
+ static_mutex::m_pmutex = 0;
+}
+
+void static_mutex::init()
+{
+ m_pmutex = new boost::recursive_mutex();
+ int r = atexit(free_static_mutex);
+ BOOST_ASSERT(0 == r);
+}
+
+scoped_static_mutex_lock::scoped_static_mutex_lock(static_mutex& , bool lk)
+: m_plock(0), m_have_lock(false)
+{
+ if(lk)
+ lock();
+}
+
+scoped_static_mutex_lock::~scoped_static_mutex_lock()
+{
+ if(m_have_lock)
+ unlock();
+ delete m_plock;
+}
+
+void scoped_static_mutex_lock::lock()
+{
+ if(0 == m_have_lock)
+ {
+ boost::call_once(&static_mutex::init, static_mutex::m_once);
+ if(0 == m_plock)
+ m_plock = new boost::recursive_mutex::scoped_lock(*static_mutex::m_pmutex, false);
+ m_plock->lock();
+ m_have_lock = true;
+ }
+}
+
+void scoped_static_mutex_lock::unlock()
+{
+ if(m_have_lock)
+ {
+ m_plock->unlock();
+ m_have_lock = false;
+ }
+}
+
+#endif
+
+}
+
+#endif // BOOST_HAS_THREADS

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/src/usinstances.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/src/usinstances.cpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,60 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE: winstances.cpp
+ * VERSION: see <boost/version.hpp>
+ * DESCRIPTION: regex unsigned short template instances (MSVC only).
+ */
+
+#define BOOST_REGEX_SOURCE
+
+#include <boost/regex/config.hpp>
+
+#if !defined(BOOST_NO_WREGEX) && defined(BOOST_REGEX_HAS_OTHER_WCHAR_T) && !defined(BOOST_REGEX_NO_EXTERNAL_TEMPLATES)
+#define BOOST_REGEX_US_INSTANTIATE
+
+#ifdef _DLL_CPPLIB
+#include <boost/detail/workaround.hpp>
+//
+// This is a horrible workaround, without declaring these symbols extern we get
+// duplicate symbol errors when linking if the application is built without
+// /Zc:wchar_t
+//
+namespace std{
+template _CRTIMP2 bool __cdecl operator==(
+ const basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short> >&,
+ const basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short> >&);
+template _CRTIMP2 bool __cdecl operator==(
+ const unsigned short *,
+ const basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short> >&);
+template _CRTIMP2 bool __cdecl operator==(
+ const basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short> >&,
+ const unsigned short *);
+template _CRTIMP2 bool __cdecl operator<(
+ const basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short> >&,
+ const basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short> >&);
+template _CRTIMP2 bool __cdecl operator>(
+ const basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short> >&,
+ const basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short> >&);
+#if BOOST_WORKAROUND(BOOST_MSVC, > 1300) && BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1400))
+template<> _CRTIMP2 std::size_t __cdecl char_traits<unsigned short>::length(unsigned short const*);
+#endif
+}
+#endif
+
+
+#include <boost/regex.hpp>
+
+#endif
+
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/src/w32_regex_traits.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/src/w32_regex_traits.cpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,470 @@
+/*
+ *
+ * Copyright (c) 2004
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE w32_regex_traits.cpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Implements w32_regex_traits<char> (and associated helper classes).
+ */
+
+#define BOOST_REGEX_SOURCE
+#include <boost/regex/config.hpp>
+
+#if defined(_WIN32) && !defined(BOOST_REGEX_NO_W32)
+#include <boost/regex/regex_traits.hpp>
+#include <boost/regex/pattern_except.hpp>
+
+#define WIN32_LEAN_AND_MEAN
+#ifndef NOMINMAX
+# define NOMINMAX
+#endif
+#define NOGDI
+#include <windows.h>
+
+#ifdef _MSC_VER
+#pragma comment(lib, "user32.lib")
+#endif
+
+#ifdef BOOST_NO_STDC_NAMESPACE
+namespace std{
+ using ::memset;
+}
+#endif
+
+namespace boost{ namespace re_detail{
+
+void w32_regex_traits_char_layer<char>::init()
+{
+ // we need to start by initialising our syntax map so we know which
+ // character is used for which purpose:
+ std::memset(m_char_map, 0, sizeof(m_char_map));
+ cat_type cat;
+ std::string cat_name(w32_regex_traits<char>::get_catalog_name());
+ if(cat_name.size())
+ {
+ cat = ::boost::re_detail::w32_cat_open(cat_name);
+ if(!cat)
+ {
+ std::string m("Unable to open message catalog: ");
+ std::runtime_error err(m + cat_name);
+ ::boost::re_detail::raise_runtime_error(err);
+ }
+ }
+ //
+ // if we have a valid catalog then load our messages:
+ //
+ if(cat)
+ {
+ for(regex_constants::syntax_type i = 1; i < regex_constants::syntax_max; ++i)
+ {
+ string_type mss = ::boost::re_detail::w32_cat_get(cat, this->m_locale, i, get_default_syntax(i));
+ for(string_type::size_type j = 0; j < mss.size(); ++j)
+ {
+ m_char_map[static_cast<unsigned char>(mss[j])] = i;
+ }
+ }
+ }
+ else
+ {
+ for(regex_constants::syntax_type i = 1; i < regex_constants::syntax_max; ++i)
+ {
+ const char* ptr = get_default_syntax(i);
+ while(ptr && *ptr)
+ {
+ m_char_map[static_cast<unsigned char>(*ptr)] = i;
+ ++ptr;
+ }
+ }
+ }
+ //
+ // finish off by calculating our escape types:
+ //
+ unsigned char i = 'A';
+ do
+ {
+ if(m_char_map[i] == 0)
+ {
+ if(::boost::re_detail::w32_is(this->m_locale, 0x0002u, (char)i))
+ m_char_map[i] = regex_constants::escape_type_class;
+ else if(::boost::re_detail::w32_is(this->m_locale, 0x0001u, (char)i))
+ m_char_map[i] = regex_constants::escape_type_not_class;
+ }
+ }while(0xFF != i++);
+
+ //
+ // fill in lower case map:
+ //
+ char char_map[1 << CHAR_BIT];
+ for(int ii = 0; ii < (1 << CHAR_BIT); ++ii)
+ char_map[ii] = static_cast<char>(ii);
+ int r = ::LCMapStringA(this->m_locale, LCMAP_LOWERCASE, char_map, 1 << CHAR_BIT, this->m_lower_map, 1 << CHAR_BIT);
+ BOOST_ASSERT(r != 0);
+ if(r < (1 << CHAR_BIT))
+ {
+ // if we have multibyte characters then not all may have been given
+ // a lower case mapping:
+ for(int jj = r; jj < (1 << CHAR_BIT); ++jj)
+ this->m_lower_map[jj] = static_cast<char>(jj);
+ }
+ r = ::GetStringTypeExA(this->m_locale, CT_CTYPE1, char_map, 1 << CHAR_BIT, this->m_type_map);
+ BOOST_ASSERT(0 != r);
+}
+
+BOOST_REGEX_DECL lcid_type BOOST_REGEX_CALL w32_get_default_locale()
+{
+ return ::GetUserDefaultLCID();
+}
+
+BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is_lower(char c, lcid_type id)
+{
+ WORD mask;
+ if(::GetStringTypeExA(id, CT_CTYPE1, &c, 1, &mask) && (mask & C1_LOWER))
+ return true;
+ return false;
+}
+
+BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is_lower(wchar_t c, lcid_type id)
+{
+ WORD mask;
+ if(::GetStringTypeExW(id, CT_CTYPE1, &c, 1, &mask) && (mask & C1_LOWER))
+ return true;
+ return false;
+}
+#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T
+BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is_lower(unsigned short ca, lcid_type id)
+{
+ WORD mask;
+ wchar_t c = ca;
+ if(::GetStringTypeExW(id, CT_CTYPE1, &c, 1, &mask) && (mask & C1_LOWER))
+ return true;
+ return false;
+}
+#endif
+
+BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is_upper(char c, lcid_type id)
+{
+ WORD mask;
+ if(::GetStringTypeExA(id, CT_CTYPE1, &c, 1, &mask) && (mask & C1_UPPER))
+ return true;
+ return false;
+}
+
+BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is_upper(wchar_t c, lcid_type id)
+{
+ WORD mask;
+ if(::GetStringTypeExW(id, CT_CTYPE1, &c, 1, &mask) && (mask & C1_UPPER))
+ return true;
+ return false;
+}
+#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T
+BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is_upper(unsigned short ca, lcid_type id)
+{
+ WORD mask;
+ wchar_t c = ca;
+ if(::GetStringTypeExW(id, CT_CTYPE1, &c, 1, &mask) && (mask & C1_UPPER))
+ return true;
+ return false;
+}
+#endif
+
+void free_module(void* mod)
+{
+ ::FreeLibrary(static_cast<HMODULE>(mod));
+}
+
+BOOST_REGEX_DECL cat_type BOOST_REGEX_CALL w32_cat_open(const std::string& name)
+{
+ cat_type result(::LoadLibraryA(name.c_str()), &free_module);
+ return result;
+}
+
+BOOST_REGEX_DECL std::string BOOST_REGEX_CALL w32_cat_get(const cat_type& cat, lcid_type, int i, const std::string& def)
+{
+ char buf[256];
+ if(0 == ::LoadStringA(
+ static_cast<HMODULE>(cat.get()),
+ i,
+ buf,
+ 256
+ ))
+ {
+ return def;
+ }
+ return std::string(buf);
+}
+
+#ifndef BOOST_NO_WREGEX
+BOOST_REGEX_DECL std::wstring BOOST_REGEX_CALL w32_cat_get(const cat_type& cat, lcid_type, int i, const std::wstring& def)
+{
+ wchar_t buf[256];
+ if(0 == ::LoadStringW(
+ static_cast<HMODULE>(cat.get()),
+ i,
+ buf,
+ 256
+ ))
+ {
+ return def;
+ }
+ return std::wstring(buf);
+}
+#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T
+BOOST_REGEX_DECL std::basic_string<unsigned short> BOOST_REGEX_CALL w32_cat_get(const cat_type& cat, lcid_type, int i, const std::basic_string<unsigned short>& def)
+{
+ unsigned short buf[256];
+ if(0 == ::LoadStringW(
+ static_cast<HMODULE>(cat.get()),
+ i,
+ (LPWSTR)buf,
+ 256
+ ))
+ {
+ return def;
+ }
+ return std::basic_string<unsigned short>(buf);
+}
+#endif
+#endif
+BOOST_REGEX_DECL std::string BOOST_REGEX_CALL w32_transform(lcid_type id, const char* p1, const char* p2)
+{
+ int bytes = ::LCMapStringA(
+ id, // locale identifier
+ LCMAP_SORTKEY, // mapping transformation type
+ p1, // source string
+ static_cast<int>(p2 - p1), // number of characters in source string
+ 0, // destination buffer
+ 0 // size of destination buffer
+ );
+ if(!bytes)
+ return std::string(p1, p2);
+ std::string result(++bytes, '\0');
+ bytes = ::LCMapStringA(
+ id, // locale identifier
+ LCMAP_SORTKEY, // mapping transformation type
+ p1, // source string
+ static_cast<int>(p2 - p1), // number of characters in source string
+ &*result.begin(), // destination buffer
+ bytes // size of destination buffer
+ );
+ if(bytes > static_cast<int>(result.size()))
+ return std::string(p1, p2);
+ while(result.size() && result[result.size()-1] == '\0')
+ {
+ result.erase(result.size()-1);
+ }
+ return result;
+}
+
+#ifndef BOOST_NO_WREGEX
+BOOST_REGEX_DECL std::wstring BOOST_REGEX_CALL w32_transform(lcid_type id, const wchar_t* p1, const wchar_t* p2)
+{
+ int bytes = ::LCMapStringW(
+ id, // locale identifier
+ LCMAP_SORTKEY, // mapping transformation type
+ p1, // source string
+ static_cast<int>(p2 - p1), // number of characters in source string
+ 0, // destination buffer
+ 0 // size of destination buffer
+ );
+ if(!bytes)
+ return std::wstring(p1, p2);
+ std::string result(++bytes, '\0');
+ bytes = ::LCMapStringW(
+ id, // locale identifier
+ LCMAP_SORTKEY, // mapping transformation type
+ p1, // source string
+ static_cast<int>(p2 - p1), // number of characters in source string
+ reinterpret_cast<wchar_t*>(&*result.begin()), // destination buffer *of bytes*
+ bytes // size of destination buffer
+ );
+ if(bytes > static_cast<int>(result.size()))
+ return std::wstring(p1, p2);
+ while(result.size() && result[result.size()-1] == L'\0')
+ {
+ result.erase(result.size()-1);
+ }
+ std::wstring r2;
+ for(std::string::size_type i = 0; i < result.size(); ++i)
+ r2.append(1, static_cast<wchar_t>(static_cast<unsigned char>(result[i])));
+ return r2;
+}
+#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T
+BOOST_REGEX_DECL std::basic_string<unsigned short> BOOST_REGEX_CALL w32_transform(lcid_type id, const unsigned short* p1, const unsigned short* p2)
+{
+ int bytes = ::LCMapStringW(
+ id, // locale identifier
+ LCMAP_SORTKEY, // mapping transformation type
+ (LPCWSTR)p1, // source string
+ static_cast<int>(p2 - p1), // number of characters in source string
+ 0, // destination buffer
+ 0 // size of destination buffer
+ );
+ if(!bytes)
+ return std::basic_string<unsigned short>(p1, p2);
+ std::string result(++bytes, '\0');
+ bytes = ::LCMapStringW(
+ id, // locale identifier
+ LCMAP_SORTKEY, // mapping transformation type
+ (LPCWSTR)p1, // source string
+ static_cast<int>(p2 - p1), // number of characters in source string
+ reinterpret_cast<wchar_t*>(&*result.begin()), // destination buffer *of bytes*
+ bytes // size of destination buffer
+ );
+ if(bytes > static_cast<int>(result.size()))
+ return std::basic_string<unsigned short>(p1, p2);
+ while(result.size() && result[result.size()-1] == L'\0')
+ {
+ result.erase(result.size()-1);
+ }
+ std::basic_string<unsigned short> r2;
+ for(std::string::size_type i = 0; i < result.size(); ++i)
+ r2.append(1, static_cast<unsigned short>(static_cast<unsigned char>(result[i])));
+ return r2;
+}
+#endif
+#endif
+BOOST_REGEX_DECL char BOOST_REGEX_CALL w32_tolower(char c, lcid_type id)
+{
+ char result[2];
+ int b = ::LCMapStringA(
+ id, // locale identifier
+ LCMAP_LOWERCASE, // mapping transformation type
+ &c, // source string
+ 1, // number of characters in source string
+ result, // destination buffer
+ 1); // size of destination buffer
+ if(b == 0)
+ return c;
+ return result[0];
+}
+
+#ifndef BOOST_NO_WREGEX
+BOOST_REGEX_DECL wchar_t BOOST_REGEX_CALL w32_tolower(wchar_t c, lcid_type id)
+{
+ wchar_t result[2];
+ int b = ::LCMapStringW(
+ id, // locale identifier
+ LCMAP_LOWERCASE, // mapping transformation type
+ &c, // source string
+ 1, // number of characters in source string
+ result, // destination buffer
+ 1); // size of destination buffer
+ if(b == 0)
+ return c;
+ return result[0];
+}
+#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T
+BOOST_REGEX_DECL unsigned short BOOST_REGEX_CALL w32_tolower(unsigned short c, lcid_type id)
+{
+ wchar_t result[2];
+ int b = ::LCMapStringW(
+ id, // locale identifier
+ LCMAP_LOWERCASE, // mapping transformation type
+ (wchar_t const*)&c, // source string
+ 1, // number of characters in source string
+ result, // destination buffer
+ 1); // size of destination buffer
+ if(b == 0)
+ return c;
+ return result[0];
+}
+#endif
+#endif
+BOOST_REGEX_DECL char BOOST_REGEX_CALL w32_toupper(char c, lcid_type id)
+{
+ char result[2];
+ int b = ::LCMapStringA(
+ id, // locale identifier
+ LCMAP_UPPERCASE, // mapping transformation type
+ &c, // source string
+ 1, // number of characters in source string
+ result, // destination buffer
+ 1); // size of destination buffer
+ if(b == 0)
+ return c;
+ return result[0];
+}
+
+#ifndef BOOST_NO_WREGEX
+BOOST_REGEX_DECL wchar_t BOOST_REGEX_CALL w32_toupper(wchar_t c, lcid_type id)
+{
+ wchar_t result[2];
+ int b = ::LCMapStringW(
+ id, // locale identifier
+ LCMAP_UPPERCASE, // mapping transformation type
+ &c, // source string
+ 1, // number of characters in source string
+ result, // destination buffer
+ 1); // size of destination buffer
+ if(b == 0)
+ return c;
+ return result[0];
+}
+#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T
+BOOST_REGEX_DECL unsigned short BOOST_REGEX_CALL w32_toupper(unsigned short c, lcid_type id)
+{
+ wchar_t result[2];
+ int b = ::LCMapStringW(
+ id, // locale identifier
+ LCMAP_UPPERCASE, // mapping transformation type
+ (wchar_t const*)&c, // source string
+ 1, // number of characters in source string
+ result, // destination buffer
+ 1); // size of destination buffer
+ if(b == 0)
+ return c;
+ return result[0];
+}
+#endif
+#endif
+BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is(lcid_type id, boost::uint32_t m, char c)
+{
+ WORD mask;
+ if(::GetStringTypeExA(id, CT_CTYPE1, &c, 1, &mask) && (mask & m & w32_regex_traits_implementation<char>::mask_base))
+ return true;
+ if((m & w32_regex_traits_implementation<char>::mask_word) && (c == '_'))
+ return true;
+ return false;
+}
+
+#ifndef BOOST_NO_WREGEX
+BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is(lcid_type id, boost::uint32_t m, wchar_t c)
+{
+ WORD mask;
+ if(::GetStringTypeExW(id, CT_CTYPE1, &c, 1, &mask) && (mask & m & w32_regex_traits_implementation<wchar_t>::mask_base))
+ return true;
+ if((m & w32_regex_traits_implementation<wchar_t>::mask_word) && (c == '_'))
+ return true;
+ if((m & w32_regex_traits_implementation<wchar_t>::mask_unicode) && (c > 0xff))
+ return true;
+ return false;
+}
+#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T
+BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is(lcid_type id, boost::uint32_t m, unsigned short c)
+{
+ WORD mask;
+ if(::GetStringTypeExW(id, CT_CTYPE1, (wchar_t const*)&c, 1, &mask) && (mask & m & w32_regex_traits_implementation<wchar_t>::mask_base))
+ return true;
+ if((m & w32_regex_traits_implementation<wchar_t>::mask_word) && (c == '_'))
+ return true;
+ if((m & w32_regex_traits_implementation<wchar_t>::mask_unicode) && (c > 0xff))
+ return true;
+ return false;
+}
+#endif
+#endif
+
+} // re_detail
+} // boost
+
+#endif
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/src/wc_regex_traits.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/src/wc_regex_traits.cpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,266 @@
+/*
+ *
+ * Copyright (c) 2004
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE: wc_regex_traits.cpp
+ * VERSION: see <boost/version.hpp>
+ * DESCRIPTION: Implements out of line members for c_regex_traits<wchar_t>
+ */
+
+
+#define BOOST_REGEX_SOURCE
+
+#include <boost/config.hpp>
+#include <boost/detail/workaround.hpp>
+
+#if !BOOST_WORKAROUND(__BORLANDC__, < 0x560)
+
+#include <boost/regex/v4/c_regex_traits.hpp>
+#ifndef BOOST_NO_WREGEX
+#include <boost/regex/v4/primary_transform.hpp>
+#include <boost/regex/v4/regex_traits_defaults.hpp>
+
+#if defined(BOOST_NO_STDC_NAMESPACE)
+namespace std{
+ using ::wcstol;
+}
+#endif
+
+namespace boost{
+
+c_regex_traits<wchar_t>::string_type BOOST_REGEX_CALL c_regex_traits<wchar_t>::transform(const wchar_t* p1, const wchar_t* p2)
+{
+ std::size_t r;
+ std::size_t s = 10;
+ std::wstring src(p1, p2);
+ std::wstring result(s, L' ');
+ while(s < (r = std::wcsxfrm(&*result.begin(), src.c_str(), s)))
+ {
+ result.append(r - s + 3, L' ');
+ s = result.size();
+ }
+ result.erase(r);
+ return result;
+}
+
+c_regex_traits<wchar_t>::string_type BOOST_REGEX_CALL c_regex_traits<wchar_t>::transform_primary(const wchar_t* p1, const wchar_t* p2)
+{
+ static wchar_t s_delim;
+ static const int s_collate_type = ::boost::re_detail::find_sort_syntax(static_cast<const c_regex_traits<wchar_t>*>(0), &s_delim);
+ std::wstring result;
+ //
+ // What we do here depends upon the format of the sort key returned by
+ // sort key returned by this->transform:
+ //
+ switch(s_collate_type)
+ {
+ case ::boost::re_detail::sort_C:
+ case ::boost::re_detail::sort_unknown:
+ // the best we can do is translate to lower case, then get a regular sort key:
+ {
+ result.assign(p1, p2);
+ for(std::wstring::size_type i = 0; i < result.size(); ++i)
+ result[i] = (std::towlower)(result[i]);
+ result = c_regex_traits<wchar_t>::transform(&*result.begin(), &*result.begin() + result.size());
+ break;
+ }
+ case ::boost::re_detail::sort_fixed:
+ {
+ // get a regular sort key, and then truncate it:
+ result = c_regex_traits<wchar_t>::transform(&*result.begin(), &*result.begin() + result.size());
+ result.erase(s_delim);
+ break;
+ }
+ case ::boost::re_detail::sort_delim:
+ // get a regular sort key, and then truncate everything after the delim:
+ result = c_regex_traits<wchar_t>::transform(&*result.begin(), &*result.begin() + result.size());
+ if(result.size() && (result[0] == s_delim))
+ break;
+ std::size_t i;
+ for(i = 0; i < result.size(); ++i)
+ {
+ if(result[i] == s_delim)
+ break;
+ }
+ result.erase(i);
+ break;
+ }
+ if(result.empty())
+ result = std::wstring(1, char(0));
+ return result;
+}
+
+enum
+{
+ char_class_space=1<<0,
+ char_class_print=1<<1,
+ char_class_cntrl=1<<2,
+ char_class_upper=1<<3,
+ char_class_lower=1<<4,
+ char_class_alpha=1<<5,
+ char_class_digit=1<<6,
+ char_class_punct=1<<7,
+ char_class_xdigit=1<<8,
+ char_class_alnum=char_class_alpha|char_class_digit,
+ char_class_graph=char_class_alnum|char_class_punct,
+ char_class_blank=1<<9,
+ char_class_word=1<<10,
+ char_class_unicode=1<<11
+};
+
+c_regex_traits<wchar_t>::char_class_type BOOST_REGEX_CALL c_regex_traits<wchar_t>::lookup_classname(const wchar_t* p1, const wchar_t* p2)
+{
+ static const char_class_type masks[] =
+ {
+ 0,
+ char_class_alnum,
+ char_class_alpha,
+ char_class_blank,
+ char_class_cntrl,
+ char_class_digit,
+ char_class_digit,
+ char_class_graph,
+ char_class_lower,
+ char_class_lower,
+ char_class_print,
+ char_class_punct,
+ char_class_space,
+ char_class_space,
+ char_class_upper,
+ char_class_unicode,
+ char_class_upper,
+ char_class_alnum | char_class_word,
+ char_class_alnum | char_class_word,
+ char_class_xdigit,
+ };
+
+ int id = ::boost::re_detail::get_default_class_id(p1, p2);
+ if(id < 0)
+ {
+ std::wstring s(p1, p2);
+ for(std::wstring::size_type i = 0; i < s.size(); ++i)
+ s[i] = (std::towlower)(s[i]);
+ id = ::boost::re_detail::get_default_class_id(&*s.begin(), &*s.begin() + s.size());
+ }
+ BOOST_ASSERT(id+1 < static_cast<int>(sizeof(masks) / sizeof(masks[0])));
+ return masks[id+1];
+}
+
+bool BOOST_REGEX_CALL c_regex_traits<wchar_t>::isctype(wchar_t c, char_class_type mask)
+{
+ return
+ ((mask & char_class_space) && (std::iswspace)(c))
+ || ((mask & char_class_print) && (std::iswprint)(c))
+ || ((mask & char_class_cntrl) && (std::iswcntrl)(c))
+ || ((mask & char_class_upper) && (std::iswupper)(c))
+ || ((mask & char_class_lower) && (std::iswlower)(c))
+ || ((mask & char_class_alpha) && (std::iswalpha)(c))
+ || ((mask & char_class_digit) && (std::iswdigit)(c))
+ || ((mask & char_class_punct) && (std::iswpunct)(c))
+ || ((mask & char_class_xdigit) && (std::iswxdigit)(c))
+ || ((mask & char_class_blank) && (std::iswspace)(c) && !::boost::re_detail::is_separator(c))
+ || ((mask & char_class_word) && (c == '_'))
+ || ((mask & char_class_unicode) && (c & ~static_cast<wchar_t>(0xff)));
+}
+
+c_regex_traits<wchar_t>::string_type BOOST_REGEX_CALL c_regex_traits<wchar_t>::lookup_collatename(const wchar_t* p1, const wchar_t* p2)
+{
+#if !defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS)\
+ && !BOOST_WORKAROUND(BOOST_MSVC, < 1300)\
+ && !BOOST_WORKAROUND(__BORLANDC__, <= 0x0551)
+ std::string name(p1, p2);
+#else
+ std::string name;
+ const wchar_t* p0 = p1;
+ while(p0 != p2)
+ name.append(1, char(*p0++));
+#endif
+ name = ::boost::re_detail::lookup_default_collate_name(name);
+#if !defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS)\
+ && !BOOST_WORKAROUND(BOOST_MSVC, < 1300)\
+ && !BOOST_WORKAROUND(__BORLANDC__, <= 0x0551)
+ if(name.size())
+ return string_type(name.begin(), name.end());
+#else
+ if(name.size())
+ {
+ string_type result;
+ typedef std::string::const_iterator iter;
+ iter b = name.begin();
+ iter e = name.end();
+ while(b != e)
+ result.append(1, wchar_t(*b++));
+ return result;
+ }
+#endif
+ if(p2 - p1 == 1)
+ return string_type(1, *p1);
+ return string_type();
+}
+
+int BOOST_REGEX_CALL c_regex_traits<wchar_t>::value(wchar_t c, int radix)
+{
+#ifdef __BORLANDC__
+ // workaround for broken wcstol:
+ if((std::iswxdigit)(c) == 0)
+ return -1;
+#endif
+ wchar_t b[2] = { c, '\0', };
+ wchar_t* ep;
+ int result = std::wcstol(b, &ep, radix);
+ if(ep == b)
+ return -1;
+ return result;
+}
+
+#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T
+c_regex_traits<unsigned short>::string_type BOOST_REGEX_CALL c_regex_traits<unsigned short>::transform(const unsigned short* p1, const unsigned short* p2)
+{
+ std::wstring result = c_regex_traits<wchar_t>::transform((const wchar_t*)p1, (const wchar_t*)p2);
+ return string_type(result.begin(), result.end());
+}
+
+c_regex_traits<unsigned short>::string_type BOOST_REGEX_CALL c_regex_traits<unsigned short>::transform_primary(const unsigned short* p1, const unsigned short* p2)
+{
+ std::wstring result = c_regex_traits<wchar_t>::transform_primary((const wchar_t*)p1, (const wchar_t*)p2);
+ return string_type(result.begin(), result.end());
+}
+
+c_regex_traits<unsigned short>::char_class_type BOOST_REGEX_CALL c_regex_traits<unsigned short>::lookup_classname(const unsigned short* p1, const unsigned short* p2)
+{
+ return c_regex_traits<wchar_t>::lookup_classname((const wchar_t*)p1, (const wchar_t*)p2);
+}
+
+c_regex_traits<unsigned short>::string_type BOOST_REGEX_CALL c_regex_traits<unsigned short>::lookup_collatename(const unsigned short* p1, const unsigned short* p2)
+{
+ std::wstring result = c_regex_traits<wchar_t>::lookup_collatename((const wchar_t*)p1, (const wchar_t*)p2);
+ return string_type(result.begin(), result.end());
+}
+
+bool BOOST_REGEX_CALL c_regex_traits<unsigned short>::isctype(unsigned short c, char_class_type m)
+{
+ return c_regex_traits<wchar_t>::isctype(c, m);
+}
+
+int BOOST_REGEX_CALL c_regex_traits<unsigned short>::value(unsigned short c, int radix)
+{
+ return c_regex_traits<wchar_t>::value(c, radix);
+}
+
+#endif
+
+}
+
+#endif // BOOST_NO_WREGEX
+
+#endif // __BORLANDC__
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/src/wide_posix_api.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/src/wide_posix_api.cpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,300 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE: wide_posix_api.cpp
+ * VERSION: see <boost/version.hpp>
+ * DESCRIPTION: Implements the wide character POSIX API wrappers.
+ */
+
+#define BOOST_REGEX_SOURCE
+
+#include <boost/regex/config.hpp>
+
+#ifndef BOOST_NO_WREGEX
+
+#include <boost/cregex.hpp>
+#include <boost/regex.hpp>
+
+#include <cwchar>
+#include <cstring>
+#include <cstdio>
+
+#if defined(BOOST_NO_STDC_NAMESPACE)
+namespace std{
+# ifndef BOOST_NO_SWPRINTF
+ using ::swprintf;
+# endif
+}
+#endif
+
+
+namespace boost{
+
+namespace {
+
+unsigned int wmagic_value = 28631;
+
+const wchar_t* wnames[] = {
+ L"REG_NOERROR",
+ L"REG_NOMATCH",
+ L"REG_BADPAT",
+ L"REG_ECOLLATE",
+ L"REG_ECTYPE",
+ L"REG_EESCAPE",
+ L"REG_ESUBREG",
+ L"REG_EBRACK",
+ L"REG_EPAREN",
+ L"REG_EBRACE",
+ L"REG_BADBR",
+ L"REG_ERANGE",
+ L"REG_ESPACE",
+ L"REG_BADRPT",
+ L"REG_EEND",
+ L"REG_ESIZE",
+ L"REG_ERPAREN",
+ L"REG_EMPTY",
+ L"REG_ECOMPLEXITY",
+ L"REG_ESTACK",
+ L"REG_E_UNKNOWN",
+};
+}
+
+BOOST_REGEX_DECL int BOOST_REGEX_CCALL regcompW(regex_tW* expression, const wchar_t* ptr, int f)
+{
+ if(expression->re_magic != wmagic_value)
+ {
+ expression->guts = 0;
+#ifndef BOOST_NO_EXCEPTIONS
+ try{
+#endif
+ expression->guts = new wregex();
+#ifndef BOOST_NO_EXCEPTIONS
+ } catch(...)
+ {
+ return REG_ESPACE;
+ }
+#else
+ if(0 == expression->guts)
+ return REG_E_MEMORY;
+#endif
+ }
+ // set default flags:
+ boost::uint_fast32_t flags = (f & REG_PERLEX) ? 0 : ((f & REG_EXTENDED) ? wregex::extended : wregex::basic);
+ expression->eflags = (f & REG_NEWLINE) ? match_not_dot_newline : match_default;
+
+ // and translate those that are actually set:
+ if(f & REG_NOCOLLATE)
+ {
+ flags |= wregex::nocollate;
+#ifndef BOOST_REGEX_V3
+ flags &= ~wregex::collate;
+#endif
+ }
+
+ if(f & REG_NOSUB)
+ {
+ //expression->eflags |= match_any;
+ flags |= wregex::nosubs;
+ }
+
+ if(f & REG_NOSPEC)
+ flags |= wregex::literal;
+ if(f & REG_ICASE)
+ flags |= wregex::icase;
+ if(f & REG_ESCAPE_IN_LISTS)
+ flags &= ~wregex::no_escape_in_lists;
+ if(f & REG_NEWLINE_ALT)
+ flags |= wregex::newline_alt;
+
+ const wchar_t* p2;
+ if(f & REG_PEND)
+ p2 = expression->re_endp;
+ else p2 = ptr + std::wcslen(ptr);
+
+ int result;
+
+#ifndef BOOST_NO_EXCEPTIONS
+ try{
+#endif
+ expression->re_magic = wmagic_value;
+ static_cast<wregex*>(expression->guts)->set_expression(ptr, p2, flags);
+ expression->re_nsub = static_cast<wregex*>(expression->guts)->mark_count() - 1;
+ result = static_cast<wregex*>(expression->guts)->error_code();
+#ifndef BOOST_NO_EXCEPTIONS
+ }
+ catch(const boost::regex_error& be)
+ {
+ result = be.code();
+ }
+ catch(...)
+ {
+ result = REG_E_UNKNOWN;
+ }
+#endif
+ if(result)
+ regfreeW(expression);
+ return result;
+
+}
+
+BOOST_REGEX_DECL regsize_t BOOST_REGEX_CCALL regerrorW(int code, const regex_tW* e, wchar_t* buf, regsize_t buf_size)
+{
+ std::size_t result = 0;
+ if(code & REG_ITOA)
+ {
+ code &= ~REG_ITOA;
+ if((code <= (int)REG_E_UNKNOWN) && (code >= 0))
+ {
+ result = std::wcslen(wnames[code]) + 1;
+ if(buf_size >= result)
+#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400)
+ ::wcscpy_s(buf, buf_size, wnames[code]);
+#else
+ std::wcscpy(buf, wnames[code]);
+#endif
+ return result;
+ }
+ return result;
+ }
+#if !defined(BOOST_NO_SWPRINTF)
+ if(code == REG_ATOI)
+ {
+ wchar_t localbuf[5];
+ if(e == 0)
+ return 0;
+ for(int i = 0; i <= (int)REG_E_UNKNOWN; ++i)
+ {
+ if(std::wcscmp(e->re_endp, wnames[i]) == 0)
+ {
+ (std::swprintf)(localbuf, 5, L"%d", i);
+ if(std::wcslen(localbuf) < buf_size)
+#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400)
+ ::wcscpy_s(buf, buf_size, localbuf);
+#else
+ std::wcscpy(buf, localbuf);
+#endif
+ return std::wcslen(localbuf) + 1;
+ }
+ }
+ (std::swprintf)(localbuf, 5, L"%d", 0);
+ if(std::wcslen(localbuf) < buf_size)
+#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400)
+ ::wcscpy_s(buf, buf_size, localbuf);
+#else
+ std::wcscpy(buf, localbuf);
+#endif
+ return std::wcslen(localbuf) + 1;
+ }
+#endif
+ if(code <= (int)REG_E_UNKNOWN)
+ {
+ std::string p;
+ if((e) && (e->re_magic == wmagic_value))
+ p = static_cast<wregex*>(e->guts)->get_traits().error_string(static_cast< ::boost::regex_constants::error_type>(code));
+ else
+ {
+ p = re_detail::get_default_error_string(static_cast< ::boost::regex_constants::error_type>(code));
+ }
+ std::size_t len = p.size();
+ if(len < buf_size)
+ {
+ re_detail::copy(p.c_str(), p.c_str() + p.size() + 1, buf);
+ }
+ return len + 1;
+ }
+ if(buf_size)
+ *buf = 0;
+ return 0;
+}
+
+BOOST_REGEX_DECL int BOOST_REGEX_CCALL regexecW(const regex_tW* expression, const wchar_t* buf, regsize_t n, regmatch_t* array, int eflags)
+{
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4267)
+#endif
+ bool result = false;
+ match_flag_type flags = match_default | expression->eflags;
+ const wchar_t* end;
+ const wchar_t* start;
+ wcmatch m;
+
+ if(eflags & REG_NOTBOL)
+ flags |= match_not_bol;
+ if(eflags & REG_NOTEOL)
+ flags |= match_not_eol;
+ if(eflags & REG_STARTEND)
+ {
+ start = buf + array[0].rm_so;
+ end = buf + array[0].rm_eo;
+ }
+ else
+ {
+ start = buf;
+ end = buf + std::wcslen(buf);
+ }
+
+#ifndef BOOST_NO_EXCEPTIONS
+ try{
+#endif
+ if(expression->re_magic == wmagic_value)
+ {
+ result = regex_search(start, end, m, *static_cast<wregex*>(expression->guts), flags);
+ }
+ else
+ return result;
+#ifndef BOOST_NO_EXCEPTIONS
+ } catch(...)
+ {
+ return REG_E_UNKNOWN;
+ }
+#endif
+ if(result)
+ {
+ // extract what matched:
+ std::size_t i;
+ for(i = 0; (i < n) && (i < expression->re_nsub + 1); ++i)
+ {
+ array[i].rm_so = (m[i].matched == false) ? -1 : (m[i].first - buf);
+ array[i].rm_eo = (m[i].matched == false) ? -1 : (m[i].second - buf);
+ }
+ // and set anything else to -1:
+ for(i = expression->re_nsub + 1; i < n; ++i)
+ {
+ array[i].rm_so = -1;
+ array[i].rm_eo = -1;
+ }
+ return 0;
+ }
+ return REG_NOMATCH;
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+}
+
+BOOST_REGEX_DECL void BOOST_REGEX_CCALL regfreeW(regex_tW* expression)
+{
+ if(expression->re_magic == wmagic_value)
+ {
+ delete static_cast<wregex*>(expression->guts);
+ }
+ expression->re_magic = 0;
+}
+
+} // namespace boost;
+
+#endif
+
+
+
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/src/winstances.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/src/winstances.cpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,35 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE: winstances.cpp
+ * VERSION: see <boost/version.hpp>
+ * DESCRIPTION: regex wide character template instances.
+ */
+
+#define BOOST_REGEX_SOURCE
+
+#include <boost/regex/config.hpp>
+
+#if !defined(BOOST_NO_WREGEX) && !defined(BOOST_REGEX_NO_EXTERNAL_TEMPLATES)
+#define BOOST_REGEX_WIDE_INSTANTIATE
+
+#ifdef __BORLANDC__
+#pragma hrdstop
+#endif
+
+#include <boost/regex.hpp>
+
+#endif
+
+
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/test/Jamfile.v2
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/test/Jamfile.v2 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,136 @@
+# copyright John Maddock 2003
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt.
+
+project
+ : requirements <threading>multi <link>shared:<define>BOOST_REGEX_DYN_LINK=1
+ ;
+
+#
+# rule for simple regex test programs:
+#
+rule regex-test ( name : sources + : requirements * : input-files * )
+{
+ return [ run $(sources) ../build//boost_regex
+ :
+ : $(input-files)
+ : $(requirements)
+ : $(name) ] ;
+}
+
+R_SOURCE =
+basic_tests.cpp
+main.cpp
+test_alt.cpp
+test_anchors.cpp
+test_asserts.cpp
+test_backrefs.cpp
+test_deprecated.cpp
+test_emacs.cpp
+test_escapes.cpp
+test_grep.cpp
+test_locale.cpp
+test_mfc.cpp
+test_non_greedy_repeats.cpp
+test_perl_ex.cpp
+test_replace.cpp
+test_sets.cpp
+test_simple_repeats.cpp
+test_tricky_cases.cpp
+test_icu.cpp
+test_unicode.cpp
+test_overloads.cpp
+test_operators.cpp
+;
+
+local regress-sources = regress/$(R_SOURCE) ;
+
+test-suite regex
+ :
+ [ run regress/$(R_SOURCE) ../build//boost_regex
+ : # command line
+ : # input files
+ : # requirements
+ <link>static
+ : regex_regress ]
+
+ [ run regress/$(R_SOURCE) ../build//boost_regex
+ : # command line
+ : # input files
+ : # requirements
+ : regex_regress_dll ]
+
+ [ run regress/$(R_SOURCE) ../build//boost_regex
+ ../../thread/build//boost_thread
+ : # command line
+ : # input files
+ : # requirements
+ <define>TEST_THREADS
+ : regex_regress_threaded ]
+
+ [ regex-test posix_api_check : c_compiler_checks/posix_api_check.c ]
+
+ [ compile c_compiler_checks/wide_posix_api_check.c
+ : : wide_posix_api_check_c ]
+
+ [ regex-test posix_api_check_cpp : c_compiler_checks/posix_api_check.cpp ]
+
+ [ regex-test wide_posix_api_check_cpp
+ : c_compiler_checks/wide_posix_api_check.cpp ]
+
+ [ run pathology/bad_expression_test.cpp
+ ../build//boost_regex
+ ]
+
+ [ run pathology/recursion_test.cpp
+ ../build//boost_regex
+ ]
+
+ [ run unicode/unicode_iterator_test.cpp ../build//boost_regex ]
+ [ run static_mutex/static_mutex_test.cpp
+ ../../thread/build//boost_thread ../build//boost_regex
+ ]
+ [ run object_cache/object_cache_test.cpp ../build//boost_regex
+ ]
+
+ [ run config_info/regex_config_info.cpp
+ ../build//boost_regex/<link>static
+ : # command line
+ : # input files
+ : <test-info>always_show_run_output
+ ]
+ [ run config_info/regex_config_info.cpp ../build//boost_regex
+ : # command line
+ : # input files
+ : <test-info>always_show_run_output
+ : regex_dll_config_info
+ ]
+
+ [ run collate_info/collate_info.cpp ../build//boost_regex
+ : : : <test-info>always_show_run_output : test_collate_info ]
+
+
+ [ compile concepts/concept_check.cpp ../build//boost_regex
+ ]
+ [ compile concepts/icu_concept_check.cpp ../build//boost_regex
+ ]
+
+ [ run
+ # sources
+ captures/captures_test.cpp
+ captures//boost_regex_extra
+ : # additional args
+ : # test-files
+ : # requirements
+ <threading>multi
+ <define>BOOST_REGEX_MATCH_EXTRA=1
+ <define>BOOST_REGEX_NO_LIB=1
+ : # test name
+ captures_test
+ ]
+;
+
+
+
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/test/c_compiler_checks/posix_api_check.c
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/test/c_compiler_checks/posix_api_check.c 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,64 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE posix_api_compiler_check.c
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Verify that POSIX API calls compile: note this is a compile
+ * time check only.
+ */
+
+#include <stdio.h>
+#include <string.h>
+#include <assert.h>
+#include <boost/regex.h>
+
+const char* expression = "^";
+const char* text = "\n ";
+regmatch_t matches[1];
+int flags = REG_EXTENDED | REG_BASIC | REG_NOSPEC | REG_ICASE | REG_NOSUB |
+ REG_NEWLINE | REG_PEND | REG_NOCOLLATE | REG_ESCAPE_IN_LISTS |
+ REG_NEWLINE_ALT | REG_PERL | REG_AWK | REG_GREP | REG_EGREP;
+
+
+int main()
+{
+ regex_t re;
+ int result;
+ result = regcomp(&re, expression, REG_AWK);
+ if(result > REG_NOERROR)
+ {
+ char buf[256];
+ regerror(result, &re, buf, sizeof(buf));
+ printf(buf);
+ return result;
+ }
+ assert(re.re_nsub == 0);
+ matches[0].rm_so = 0;
+ matches[0].rm_eo = strlen(text);
+ result = regexec(&re, text, 1, matches, REG_NOTBOL | REG_NOTEOL | REG_STARTEND);
+ if(result > REG_NOERROR)
+ {
+ char buf[256];
+ regerror(result, &re, buf, sizeof(buf));
+ printf(buf);
+ regfree(&re);
+ return result;
+ }
+ assert(matches[0].rm_so == matches[0].rm_eo == 1);
+ regfree(&re);
+ printf("no errors found\n");
+ return 0;
+}
+
+
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/test/c_compiler_checks/posix_api_check.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/test/c_compiler_checks/posix_api_check.cpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,65 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE posix_api_compiler_check.c
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Verify that POSIX API calls compile: note this is a compile
+ * time check only.
+ */
+
+#include <stdio.h>
+#include <string.h>
+#include <boost/assert.hpp>
+#include <boost/regex.h>
+#include <boost/detail/lightweight_test.hpp>
+
+const char* expression = "^";
+const char* text = "\n ";
+regmatch_t matches[1];
+int flags = REG_EXTENDED | REG_BASIC | REG_NOSPEC | REG_ICASE | REG_NOSUB |
+ REG_NEWLINE | REG_PEND | REG_NOCOLLATE | REG_ESCAPE_IN_LISTS |
+ REG_NEWLINE_ALT | REG_PERL | REG_AWK | REG_GREP | REG_EGREP;
+
+
+int main()
+{
+ regex_t re;
+ int result;
+ result = regcomp(&re, expression, REG_AWK);
+ if(result > REG_NOERROR)
+ {
+ char buf[256];
+ regerror(result, &re, buf, sizeof(buf));
+ printf(buf);
+ return result;
+ }
+ BOOST_TEST(re.re_nsub == 0);
+ matches[0].rm_so = 0;
+ matches[0].rm_eo = strlen(text);
+ result = regexec(&re, text, 1, matches, REG_NOTBOL | REG_NOTEOL | REG_STARTEND);
+ if(result > REG_NOERROR)
+ {
+ char buf[256];
+ regerror(result, &re, buf, sizeof(buf));
+ printf(buf);
+ regfree(&re);
+ return result;
+ }
+ BOOST_TEST(matches[0].rm_so == matches[0].rm_eo == 1);
+ regfree(&re);
+ printf("no errors found\n");
+ return boost::report_errors();
+}
+
+
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/test/c_compiler_checks/wide_posix_api_check.c
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/test/c_compiler_checks/wide_posix_api_check.c 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,89 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE wide_posix_api_compiler_check.c
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Verify that POSIX API calls compile: note this is a compile
+ * time check only.
+ */
+
+#define UNICODE
+#define _UNICODE
+
+#include <stdio.h>
+#include <string.h>
+#include <assert.h>
+#include <stdlib.h>
+#include <boost/regex.h>
+
+#ifndef BOOST_NO_WREGEX
+#include <wchar.h>
+
+const wchar_t* expression = L"^";
+const wchar_t* text = L"\n ";
+regmatch_t matches[1];
+int flags = REG_EXTENDED | REG_BASIC | REG_NOSPEC | REG_ICASE | REG_NOSUB |
+ REG_NEWLINE | REG_PEND | REG_NOCOLLATE | REG_ESCAPE_IN_LISTS |
+ REG_NEWLINE_ALT | REG_PERL | REG_AWK | REG_GREP | REG_EGREP;
+
+
+int main()
+{
+ regex_t re;
+ int result;
+ wchar_t buf[256];
+ char nbuf[256];
+ int i;
+ result = regcomp(&re, expression, REG_AWK);
+ if(result > REG_NOERROR)
+ {
+ regerror(result, &re, buf, sizeof(buf));
+ for(i = 0; i < 256; ++i)
+ nbuf[i] = buf[i];
+ printf(nbuf);
+ return result;
+ }
+ if(re.re_nsub != 0)
+ {
+ regfree(&re);
+ exit(-1);
+ }
+ matches[0].rm_so = 0;
+ matches[0].rm_eo = wcslen(text);
+ result = regexec(&re, text, 1, matches, REG_NOTBOL | REG_NOTEOL | REG_STARTEND);
+ if(result > REG_NOERROR)
+ {
+ regerror(result, &re, buf, sizeof(buf));
+ for(i = 0; i < 256; ++i)
+ nbuf[i] = buf[i];
+ printf(nbuf);
+ regfree(&re);
+ return result;
+ }
+ if((matches[0].rm_so != matches[0].rm_eo) || (matches[0].rm_eo != 1))
+ {
+ regfree(&re);
+ exit(-1);
+ }
+ regfree(&re);
+ printf("no errors found\n");
+ return 0;
+}
+
+#else
+# error "This library has not been configured for wide character support"
+#endif
+
+
+
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/test/c_compiler_checks/wide_posix_api_check.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/test/c_compiler_checks/wide_posix_api_check.cpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,100 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE wide_posix_api_compiler_check.c
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Verify that POSIX API calls compile: note this is a compile
+ * time check only.
+ */
+
+#define UNICODE
+#define _UNICODE
+
+#include <stdio.h>
+#include <string.h>
+#include <assert.h>
+#include <stdlib.h>
+#include <boost/regex.h>
+#include <wchar.h>
+
+#ifndef BOOST_NO_WREGEX
+
+const wchar_t* expression = L"^";
+const wchar_t* text = L"\n ";
+regmatch_t matches[1];
+int flags = REG_EXTENDED | REG_BASIC | REG_NOSPEC | REG_ICASE | REG_NOSUB |
+ REG_NEWLINE | REG_PEND | REG_NOCOLLATE | REG_ESCAPE_IN_LISTS |
+ REG_NEWLINE_ALT | REG_PERL | REG_AWK | REG_GREP | REG_EGREP;
+
+
+int main()
+{
+ regex_t re;
+ int result;
+ result = regcomp(&re, expression, REG_AWK);
+ if(result > REG_NOERROR)
+ {
+ wchar_t buf[256];
+ regerror(result, &re, buf, sizeof(buf));
+ char nbuf[256];
+ for(int i = 0; i < 256; ++i)
+ nbuf[i] = buf[i];
+ printf(nbuf);
+ return result;
+ }
+ if(re.re_nsub != 0)
+ {
+ regfree(&re);
+ exit(-1);
+ }
+ matches[0].rm_so = 0;
+ matches[0].rm_eo = wcslen(text);
+ result = regexec(&re, text, 1, matches, REG_NOTBOL | REG_NOTEOL | REG_STARTEND);
+ if(result > REG_NOERROR)
+ {
+ wchar_t buf[256];
+ regerror(result, &re, buf, sizeof(buf));
+ char nbuf[256];
+ for(int i = 0; i < 256; ++i)
+ nbuf[i] = buf[i];
+ printf(nbuf);
+ regfree(&re);
+ return result;
+ }
+ if((matches[0].rm_so != matches[0].rm_eo) || (matches[0].rm_eo != 1))
+ {
+ regfree(&re);
+ exit(-1);
+ }
+ regfree(&re);
+ printf("no errors found\n");
+ return 0;
+}
+
+#else
+
+#include <iostream>
+
+int main()
+{
+ std::cout <<
+ "\n<note>\n"
+ "This platform does not provide the needed wide character support for this test.\n"
+ "</note>\n";
+ return 0;
+}
+#endif
+
+
+
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/test/captures/Jamfile.v2
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/test/captures/Jamfile.v2 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,38 @@
+# copyright John Maddock 2003
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt.
+
+project
+ : source-location ../../src
+ ;
+
+EX_SOURCES =
+ c_regex_traits.cpp
+ cpp_regex_traits.cpp
+ cregex.cpp
+ fileiter.cpp
+ icu.cpp
+ instances.cpp
+ posix_api.cpp
+ regex.cpp
+ regex_debug.cpp
+ regex_raw_buffer.cpp
+ regex_traits_defaults.cpp
+ static_mutex.cpp
+ w32_regex_traits.cpp
+ wc_regex_traits.cpp
+ wide_posix_api.cpp
+ winstances.cpp
+ usinstances.cpp ;
+
+lib boost_regex_extra : $(EX_SOURCES)
+ :
+ <define>BOOST_REGEX_MATCH_EXTRA=1
+ <link>shared:<define>BOOST_REGEX_DYN_LINK=1
+ :
+ ;
+
+
+
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/test/captures/captures_test.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/test/captures/captures_test.cpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,116 @@
+/*
+ *
+ * Copyright (c) 2004
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE captures_test.cpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Basic tests for additional captures information.
+ */
+
+#include <boost/regex.hpp>
+#include <boost/test/test_tools.hpp>
+#include <boost/array.hpp>
+
+#define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0]))
+
+#ifdef __sgi
+template <class T>
+void test_captures(const std::string& regx, const std::string& text, const T& expected)
+#else
+template <class T>
+void test_captures(const std::string& regx, const std::string& text, T& expected)
+#endif
+{
+ boost::regex e(regx);
+ boost::smatch what;
+ if(boost::regex_match(text, what, e, boost::match_extra))
+ {
+ unsigned i, j;
+#ifndef __sgi
+ // strange type deduction causes this test to fail on SGI:
+ BOOST_CHECK(what.size() == ARRAY_SIZE(expected));
+#endif
+ for(i = 0; i < what.size(); ++i)
+ {
+ BOOST_CHECK(what.captures(i).size() <= ARRAY_SIZE(expected[i]));
+ for(j = 0; j < what.captures(i).size(); ++j)
+ {
+ BOOST_CHECK(what.captures(i)[j] == expected[i][j]);
+ }
+ }
+ }
+}
+
+int test_main(int , char* [])
+{
+ typedef const char* pchar;
+ pchar e1[4][5] =
+ {
+ { "aBBcccDDDDDeeeeeeee", },
+ { "a", "BB", "ccc", "DDDDD", "eeeeeeee", },
+ { "a", "ccc", "eeeeeeee", },
+ { "BB", "DDDDD", },
+ };
+ test_captures("(([[:lower:]]+)|([[:upper:]]+))+", "aBBcccDDDDDeeeeeeee", e1);
+ pchar e2[4][2] =
+ {
+ { "abd" },
+ { "b", "" },
+ { "" },
+ };
+ test_captures("a(b+|((c)*))+d", "abd", e2);
+ pchar e3[3][1] =
+ {
+ { "abcbar" },
+ { "abc" },
+ };
+ test_captures("(.*)bar|(.*)bah", "abcbar", e3);
+ pchar e4[3][1] =
+ {
+ { "abcbah" },
+ { 0, },
+ { "abc" },
+ };
+ test_captures("(.*)bar|(.*)bah", "abcbah", e4);
+ pchar e5[2][16] =
+ {
+ { "now is the time for all good men to come to the aid of the party" },
+ { "now", "is", "the", "time", "for", "all", "good", "men", "to", "come", "to", "the", "aid", "of", "the", "party" },
+ };
+ test_captures("^(?:(\\w+)|(?>\\W+))*$", "now is the time for all good men to come to the aid of the party", e5);
+ pchar e6[2][16] =
+ {
+ { "now is the time for all good men to come to the aid of the party" },
+ { "now", "is", "the", "time", "for", "all", "good", "men", "to", "come", "to", "the", "aid", "of", "the", "party" },
+ };
+ test_captures("^(?>(\\w+)\\W*)*$", "now is the time for all good men to come to the aid of the party", e6);
+ pchar e7[4][14] =
+ {
+ { "now is the time for all good men to come to the aid of the party" },
+ { "now" },
+ { "is", "the", "time", "for", "all", "good", "men", "to", "come", "to", "the", "aid", "of", "the" },
+ { "party" },
+ };
+ test_captures("^(\\w+)\\W+(?>(\\w+)\\W+)*(\\w+)$", "now is the time for all good men to come to the aid of the party", e7);
+ pchar e8[5][9] =
+ {
+ { "now is the time for all good men to come to the aid of the party" } ,
+ { "now" },
+ { "is", "for", "men", "to", "of" },
+ { "the", "time", "all", "good", "to", "come", "the", "aid", "the" },
+ { "party" },
+ };
+ test_captures("^(\\w+)\\W+(?>(\\w+)\\W+(?:(\\w+)\\W+){0,2})*(\\w+)$", "now is the time for all good men to come to the aid of the party", e8);
+ return 0;
+}
+
+#include <boost/test/included/test_exec_monitor.hpp>

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/test/collate_info/collate_info.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/test/collate_info/collate_info.cpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,249 @@
+/*
+ *
+ * Copyright (c) 2005
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+// most of the workarounds and headers we need are already in here:
+#include <boost/regex.hpp>
+#include <boost/regex/v4/primary_transform.hpp>
+#include <assert.h>
+
+#ifdef BOOST_NO_STDC_NAMESPACE
+namespace std{
+ using ::strxfrm;
+#ifndef BOOST_NO_WREGEX
+ using ::wcsxfrm;
+#endif
+}
+#endif
+
+#include <iostream>
+
+template <class charT>
+int make_int(charT c)
+{
+ return c;
+}
+
+int make_int(char c)
+{
+ return static_cast<unsigned char>(c);
+}
+
+template <class charT>
+void print_string(const std::basic_string<charT>& s)
+{
+ typedef typename std::basic_string<charT>::size_type size_type;
+ std::cout.put(static_cast<unsigned char>('"'));
+ for(size_type i = 0; i < s.size(); ++i)
+ {
+ if((s[i] > ' ') && (s[i] <= 'z'))
+ {
+ std::cout.put(static_cast<unsigned char>(s[i]));
+ }
+ else
+ {
+ std::cout << "\\x" << std::hex << make_int(s[i]);
+ }
+ }
+ std::cout.put(static_cast<unsigned char>('"'));
+}
+
+void print_c_char(char c)
+{
+ char buf[50];
+ const char cbuf[2] = { c, 0, };
+ std::size_t len = std::strxfrm(buf, cbuf, 50);
+ std:: cout << len << " ";
+ std::string s(buf);
+ print_string(s);
+}
+#ifndef BOOST_NO_WREGEX
+void print_c_char(wchar_t c)
+{
+ wchar_t buf[50];
+ const wchar_t cbuf[2] = { c, 0, };
+ std::size_t len = std::wcsxfrm(buf, cbuf, 50);
+ std:: cout << len << " ";
+ std::wstring s(buf);
+ print_string(s);
+}
+#endif
+template <class charT>
+void print_c_info(charT, const char* name)
+{
+ std::cout << "Info for " << name << " C API's:" << std::endl;
+ std::cout << " \"a\" : ";
+ print_c_char(charT('a'));
+ std::cout << std::endl;
+ std::cout << " \"A\" : ";
+ print_c_char(charT('A'));
+ std::cout << std::endl;
+ std::cout << " \"z\" : ";
+ print_c_char(charT('z'));
+ std::cout << std::endl;
+ std::cout << " \"Z\" : ";
+ print_c_char(charT('Z'));
+ std::cout << std::endl;
+ std::cout << " \";\" : ";
+ print_c_char(charT(';'));
+ std::cout << std::endl;
+ std::cout << " \"{\" : ";
+ print_c_char(charT('{'));
+ std::cout << std::endl;
+}
+
+template <class charT>
+void print_cpp_char(charT c)
+{
+#ifndef BOOST_NO_STD_LOCALE
+ std::locale l;
+ const std::collate<charT>& col = BOOST_USE_FACET(std::collate<charT>, l);
+ std::basic_string<charT> result = col.transform(&c, &c+1);
+ std::cout << result.size() << " ";
+ print_string(result);
+ std::size_t n = result.find(charT(0));
+ if(n != std::basic_string<charT>::npos)
+ {
+ std::cerr << "(Error in location of null, found: " << n << ")";
+ }
+#endif
+}
+
+template <class charT>
+void print_cpp_info(charT, const char* name)
+{
+ std::cout << "Info for " << name << " C++ locale API's:" << std::endl;
+ std::cout << " \"a\" : ";
+ print_cpp_char(charT('a'));
+ std::cout << std::endl;
+ std::cout << " \"A\" : ";
+ print_cpp_char(charT('A'));
+ std::cout << std::endl;
+ std::cout << " \"z\" : ";
+ print_cpp_char(charT('z'));
+ std::cout << std::endl;
+ std::cout << " \"Z\" : ";
+ print_cpp_char(charT('Z'));
+ std::cout << std::endl;
+ std::cout << " \";\" : ";
+ print_cpp_char(charT(';'));
+ std::cout << std::endl;
+ std::cout << " \"{\" : ";
+ print_cpp_char(charT('{'));
+ std::cout << std::endl;
+}
+
+template <class traits>
+void print_sort_syntax(const traits& pt, const char* name)
+{
+ std::cout << "Sort Key Syntax for type " << name << ":\n";
+ typedef typename traits::char_type char_type;
+ char_type delim;
+ unsigned result = ::boost::re_detail::find_sort_syntax(&pt, &delim);
+ std::cout << " ";
+ switch(result)
+ {
+ case boost::re_detail::sort_C:
+ std::cout << "sort_C";
+ break;
+ case boost::re_detail::sort_fixed:
+ std::cout << "sort_fixed" << " " << static_cast<int>(delim);
+ break;
+ case boost::re_detail::sort_delim:
+ {
+ std::cout << "sort_delim" << " ";
+ std::basic_string<char_type> s(1, delim);
+ print_string(s);
+ }
+ break;
+ case boost::re_detail::sort_unknown:
+ std::cout << "sort_unknown";
+ break;
+ default:
+ std::cout << "bad_value";
+ break;
+ }
+ std::cout << std::endl;
+
+ typedef typename traits::string_type string_type;
+ typedef typename traits::char_type char_type;
+
+ char_type c[5] = { 'a', 'A', ';', '{', '}', };
+ for(int i = 0; i < 5; ++i)
+ {
+ string_type s(1, c[i]);
+ string_type sk = pt.transform(s.c_str(), s.c_str() + s.size());
+ string_type skp = pt.transform_primary(s.c_str(), s.c_str() + s.size());
+ print_string(s);
+ std::cout << " ";
+ print_string(sk);
+ std::cout << " ";
+ print_string(skp);
+ std::cout << std::endl;
+ }
+}
+
+#ifndef BOOST_NO_STD_LOCALE
+template <class charT>
+void print_ctype_info(charT, const char* name)
+{
+ std::locale l;
+ const std::ctype<charT>& ct = BOOST_USE_FACET(std::ctype<charT>, l);
+ typedef typename std::ctype<charT>::mask mask_type;
+ mask_type m = static_cast<mask_type>(std::ctype<charT>::lower | std::ctype<charT>::upper);
+ bool result = ct.is(m, static_cast<charT>('a')) && ct.is(m , static_cast<charT>('A'));
+ std::cout << "Checking std::ctype<" << name << ">::is(mask, c):" << std::endl;
+#ifdef BOOST_REGEX_BUGGY_CTYPE_FACET
+ std::cout << " Boost.Regex believes this facet to be buggy..." << std::endl;
+#else
+ std::cout << " Boost.Regex believes this facet to be correct..." << std::endl;
+#endif
+ std::cout << " Actual behavior, appears to be " << (result ? "correct." : "buggy.") << std::endl;
+ assert(ct.is(std::ctype<charT>::alnum, 'a'));
+ assert(ct.is(std::ctype<charT>::alnum, 'A'));
+ assert(ct.is(std::ctype<charT>::alnum, '0'));
+}
+#endif
+
+int cpp_main(int /*argc*/, char * /*argv*/[])
+{
+ print_c_info(char(0), "char");
+#ifndef BOOST_NO_WREGEX
+ print_c_info(wchar_t(0), "wchar_t");
+#endif
+ print_cpp_info(char(0), "char");
+#ifndef BOOST_NO_WREGEX
+ print_cpp_info(wchar_t(0), "wchar_t");
+#endif
+
+#if !BOOST_WORKAROUND(__BORLANDC__, < 0x560)
+ boost::c_regex_traits<char> a;
+ print_sort_syntax(a, "boost::c_regex_traits<char>");
+#ifndef BOOST_NO_WREGEX
+ boost::c_regex_traits<wchar_t> b;
+ print_sort_syntax(b, "boost::c_regex_traits<wchar_t>");
+#endif
+#endif
+#ifndef BOOST_NO_STD_LOCALE
+ boost::cpp_regex_traits<char> c;
+ print_sort_syntax(c, "boost::cpp_regex_traits<char>");
+#ifndef BOOST_NO_WREGEX
+ boost::cpp_regex_traits<wchar_t> d;
+ print_sort_syntax(d, "boost::cpp_regex_traits<wchar_t>");
+#endif
+ print_ctype_info(char(0), "char");
+#ifndef BOOST_NO_WREGEX
+ print_ctype_info(wchar_t(0), "wchar_t");
+#endif
+#endif
+ return 0;
+}
+
+#include <boost/test/included/prg_exec_monitor.hpp>

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/test/concepts/concept_check.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/test/concepts/concept_check.cpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,101 @@
+/*
+ *
+ * Copyright (c) 2003
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+#include <boost/config.hpp>
+
+#if defined(BOOST_MSVC)
+// this lets us compile at warning level 4 without seeing concept-check related warnings
+# pragma warning(disable:4100)
+#endif
+#ifdef __BORLANDC__
+#pragma option -w-8019 -w-8004 -w-8008
+#endif
+#include <boost/regex.hpp>
+#include <boost/detail/workaround.hpp>
+#if !BOOST_WORKAROUND(_MSC_VER, < 1310) && !defined(BOOST_NO_MEMBER_TEMPLATES) && !defined(__IBMCPP__) && !BOOST_WORKAROUND(__GNUC__, < 3)
+#include <boost/regex/concepts.hpp>
+#endif
+
+
+int main()
+{
+ // VC6 and VC7 can't cope with the iterator architypes,
+ // don't bother testing as it doesn't work:
+#if !BOOST_WORKAROUND(_MSC_VER, < 1310) && !defined(BOOST_NO_MEMBER_TEMPLATES) && !defined(__IBMCPP__) && !BOOST_WORKAROUND(__GNUC__, < 3)
+ boost::function_requires<
+ boost::RegexTraitsConcept<
+ boost::regex_traits<char>
+ >
+ >();
+#ifndef BOOST_NO_STD_LOCALE
+ boost::function_requires<
+ boost::BoostRegexConcept<
+ boost::basic_regex<char, boost::cpp_regex_traits<char> >
+ >
+ >();
+#ifndef BOOST_NO_WREGEX
+ boost::function_requires<
+ boost::BoostRegexConcept<
+ boost::basic_regex<wchar_t, boost::cpp_regex_traits<wchar_t> >
+ >
+ >();
+#endif
+#endif
+#if !BOOST_WORKAROUND(__BORLANDC__, < 0x560)
+ boost::function_requires<
+ boost::BoostRegexConcept<
+ boost::basic_regex<char, boost::c_regex_traits<char> >
+ >
+ >();
+#ifndef BOOST_NO_WREGEX
+ boost::function_requires<
+ boost::BoostRegexConcept<
+ boost::basic_regex<wchar_t, boost::c_regex_traits<wchar_t> >
+ >
+ >();
+#endif
+#endif
+#if defined(_WIN32) && !defined(BOOST_REGEX_NO_W32)
+ boost::function_requires<
+ boost::BoostRegexConcept<
+ boost::basic_regex<char, boost::w32_regex_traits<char> >
+ >
+ >();
+#ifndef BOOST_NO_WREGEX
+ boost::function_requires<
+ boost::BoostRegexConcept<
+ boost::basic_regex<wchar_t, boost::w32_regex_traits<wchar_t> >
+ >
+ >();
+#endif
+#endif
+ //
+ // now test the regex_traits concepts:
+ //
+ typedef boost::basic_regex<char, boost::regex_traits_architype<char> > regex_traits_tester_type1;
+ boost::function_requires<
+ boost::BoostRegexConcept<
+ regex_traits_tester_type1
+ >
+ >();
+#if !defined(__MWERKS__) && !defined(__SUNPRO_CC) // MWCW tries to instantiate std::basic_string<boost::char_architype>, not sure whose bug this is....
+ typedef boost::basic_regex<boost::char_architype, boost::regex_traits_architype<boost::char_architype> > regex_traits_tester_type2;
+ boost::function_requires<
+ boost::BaseRegexConcept<
+ regex_traits_tester_type2
+ >
+ >();
+#endif // __MWERKS__
+#endif
+ return 0;
+}
+
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/test/concepts/icu_concept_check.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/test/concepts/icu_concept_check.cpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,150 @@
+/*
+ *
+ * Copyright (c) 2003
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+#include <boost/regex/config.hpp>
+
+#if defined(BOOST_MSVC)
+// this lets us compile at warning level 4 without seeing concept-check related warnings
+# pragma warning(disable:4100)
+#endif
+#ifdef __BORLANDC__
+#pragma option -w-8019 -w-8004 -w-8008
+#endif
+
+#ifdef BOOST_HAS_ICU
+
+#include <boost/regex/icu.hpp>
+#include <boost/detail/workaround.hpp>
+#if !BOOST_WORKAROUND(_MSC_VER, < 1310) && !defined(BOOST_NO_MEMBER_TEMPLATES) && !defined(__IBMCPP__) && !BOOST_WORKAROUND(__GNUC__, < 3)
+#include <boost/regex/concepts.hpp>
+#endif
+
+
+int main()
+{
+ // VC6 and VC7 can't cope with the iterator architypes,
+ // don't bother testing as it doesn't work:
+#if !BOOST_WORKAROUND(_MSC_VER, < 1310) && !defined(BOOST_NO_MEMBER_TEMPLATES) && !defined(__IBMCPP__) && !BOOST_WORKAROUND(__GNUC__, < 3)
+ boost::function_requires<
+ boost::RegexTraitsConcept<
+ boost::icu_regex_traits
+ >
+ >();
+ boost::function_requires<
+ boost::BoostRegexConcept<
+ boost::u32regex
+ >
+ >();
+ //
+ // Now test additional function overloads:
+ //
+ bool b;
+ unsigned long buf[2] = { 0, };
+ const void* pb = buf;
+ typedef boost::bidirectional_iterator_archetype<char> utf8_arch1;
+ typedef boost::bidirectional_iterator_archetype<unsigned char> utf8_arch2;
+ typedef boost::bidirectional_iterator_archetype<UChar> utf16_arch;
+ typedef boost::bidirectional_iterator_archetype<wchar_t> wchar_arch;
+ boost::match_results<utf8_arch1> m1;
+ boost::match_results<utf8_arch2> m2;
+ boost::match_results<utf16_arch> m3;
+ boost::match_results<wchar_arch> m4;
+ boost::match_results<const char*> cm1;
+ boost::match_results<const unsigned char*> cm2;
+ boost::match_results<const UChar*> cm3;
+ boost::match_results<const wchar_t*> cm4;
+ boost::match_results<std::string::const_iterator> sm1;
+ boost::match_results<std::wstring::const_iterator> sm2;
+ boost::u32regex e1;
+ boost::regex_constants::match_flag_type flgs = boost::regex_constants::match_default;
+ std::string s1;
+ std::wstring s2;
+ UnicodeString us;
+ b = boost::u32regex_match(utf8_arch1(), utf8_arch1(), m1, e1, flgs);
+ b = boost::u32regex_match(utf8_arch1(), utf8_arch1(), m1, e1);
+ b = boost::u32regex_match(utf8_arch2(), utf8_arch2(), m2, e1, flgs);
+ b = boost::u32regex_match(utf8_arch2(), utf8_arch2(), m2, e1);
+ b = boost::u32regex_match(utf16_arch(), utf16_arch(), m3, e1, flgs);
+ b = boost::u32regex_match(utf16_arch(), utf16_arch(), m3, e1);
+ b = boost::u32regex_match(wchar_arch(), wchar_arch(), m4, e1, flgs);
+ b = boost::u32regex_match(wchar_arch(), wchar_arch(), m4, e1);
+ b = boost::u32regex_match((const char*)(pb), cm1, e1, flgs);
+ b = boost::u32regex_match((const char*)(pb), cm1, e1);
+ b = boost::u32regex_match((const unsigned char*)(pb), cm2, e1, flgs);
+ b = boost::u32regex_match((const unsigned char*)(pb), cm2, e1);
+ b = boost::u32regex_match((const UChar*)(pb), cm3, e1, flgs);
+ b = boost::u32regex_match((const UChar*)(pb), cm3, e1);
+ b = boost::u32regex_match((const wchar_t*)(pb), cm4, e1, flgs);
+ b = boost::u32regex_match((const wchar_t*)(pb), cm4, e1);
+ b = boost::u32regex_match(s1, sm1, e1, flgs);
+ b = boost::u32regex_match(s1, sm1, e1);
+ b = boost::u32regex_match(s2, sm2, e1, flgs);
+ b = boost::u32regex_match(s2, sm2, e1);
+ b = boost::u32regex_match(us, cm3, e1, flgs);
+ b = boost::u32regex_match(us, cm3, e1);
+
+ b = boost::u32regex_search(utf8_arch1(), utf8_arch1(), m1, e1, flgs);
+ b = boost::u32regex_search(utf8_arch1(), utf8_arch1(), m1, e1);
+ b = boost::u32regex_search(utf8_arch2(), utf8_arch2(), m2, e1, flgs);
+ b = boost::u32regex_search(utf8_arch2(), utf8_arch2(), m2, e1);
+ b = boost::u32regex_search(utf16_arch(), utf16_arch(), m3, e1, flgs);
+ b = boost::u32regex_search(utf16_arch(), utf16_arch(), m3, e1);
+ b = boost::u32regex_search(wchar_arch(), wchar_arch(), m4, e1, flgs);
+ b = boost::u32regex_search(wchar_arch(), wchar_arch(), m4, e1);
+ b = boost::u32regex_search((const char*)(pb), cm1, e1, flgs);
+ b = boost::u32regex_search((const char*)(pb), cm1, e1);
+ b = boost::u32regex_search((const unsigned char*)(pb), cm2, e1, flgs);
+ b = boost::u32regex_search((const unsigned char*)(pb), cm2, e1);
+ b = boost::u32regex_search((const UChar*)(pb), cm3, e1, flgs);
+ b = boost::u32regex_search((const UChar*)(pb), cm3, e1);
+ b = boost::u32regex_search((const wchar_t*)(pb), cm4, e1, flgs);
+ b = boost::u32regex_search((const wchar_t*)(pb), cm4, e1);
+ b = boost::u32regex_search(s1, sm1, e1, flgs);
+ b = boost::u32regex_search(s1, sm1, e1);
+ b = boost::u32regex_search(s2, sm2, e1, flgs);
+ b = boost::u32regex_search(s2, sm2, e1);
+ b = boost::u32regex_search(us, cm3, e1, flgs);
+ b = boost::u32regex_search(us, cm3, e1);
+ boost::output_iterator_archetype<char> out1 = boost::detail::dummy_constructor();
+ out1 = boost::u32regex_replace(out1, utf8_arch1(), utf8_arch1(), e1, (const char*)(pb), flgs);
+ boost::output_iterator_archetype<unsigned char> out2 = boost::detail::dummy_constructor();
+ out2 = boost::u32regex_replace(out2, utf8_arch2(), utf8_arch2(), e1, (const unsigned char*)(pb), flgs);
+ boost::output_iterator_archetype<UChar> out3 = boost::detail::dummy_constructor();
+ out3 = boost::u32regex_replace(out3, utf16_arch(), utf16_arch(), e1, (const UChar*)(pb), flgs);
+ boost::output_iterator_archetype<wchar_t> out4 = boost::detail::dummy_constructor();
+ out4 = boost::u32regex_replace(out4, wchar_arch(), wchar_arch(), e1, (const wchar_t*)(pb), flgs);
+
+ out1 = boost::u32regex_replace(out1, utf8_arch1(), utf8_arch1(), e1, s1, flgs);
+ out2 = boost::u32regex_replace(out2, utf8_arch2(), utf8_arch2(), e1, s1, flgs);
+ out3 = boost::u32regex_replace(out3, utf16_arch(), utf16_arch(), e1, s1, flgs);
+ out4 = boost::u32regex_replace(out4, wchar_arch(), wchar_arch(), e1, s1, flgs);
+ out1 = boost::u32regex_replace(out1, utf8_arch1(), utf8_arch1(), e1, s2, flgs);
+ out2 = boost::u32regex_replace(out2, utf8_arch2(), utf8_arch2(), e1, s2, flgs);
+ out3 = boost::u32regex_replace(out3, utf16_arch(), utf16_arch(), e1, s2, flgs);
+ out4 = boost::u32regex_replace(out4, wchar_arch(), wchar_arch(), e1, s2, flgs);
+ out1 = boost::u32regex_replace(out1, utf8_arch1(), utf8_arch1(), e1, us, flgs);
+ out2 = boost::u32regex_replace(out2, utf8_arch2(), utf8_arch2(), e1, us, flgs);
+ out3 = boost::u32regex_replace(out3, utf16_arch(), utf16_arch(), e1, us, flgs);
+ out4 = boost::u32regex_replace(out4, wchar_arch(), wchar_arch(), e1, us, flgs);
+ // string overloads:
+ s1 = boost::u32regex_replace(s1, e1, (const char*)(pb), flgs);
+ s2 = boost::u32regex_replace(s2, e1, (const wchar_t*)(pb), flgs);
+ s1 = boost::u32regex_replace(s1, e1, s1, flgs);
+ s2 = boost::u32regex_replace(s2, e1, s2, flgs);
+ s1 = boost::u32regex_replace(s1, e1, (const char*)(pb));
+ s2 = boost::u32regex_replace(s2, e1, (const wchar_t*)(pb));
+ s1 = boost::u32regex_replace(s1, e1, s1);
+ s2 = boost::u32regex_replace(s2, e1, s2);
+
+#endif
+ return 0;
+}
+
+#endif

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/test/config_info/regex_config_info.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/test/config_info/regex_config_info.cpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,73 @@
+/*
+ *
+ * Copyright (c) 2003
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+//
+// This program extends config_info to print out regex library
+// configuration information. We do this by redfining the main
+// provided by config_info, our real main will call it later:
+//
+#ifndef OLD_MAIN
+# define OLD_MAIN info_main
+#endif
+
+#define main OLD_MAIN
+#include <libs/config/test/config_info.cpp>
+#undef main
+#ifndef NEW_MAIN
+# define NEW_MAIN main
+#endif
+#include <boost/regex.hpp>
+
+int NEW_MAIN()
+{
+ OLD_MAIN();
+
+ print_separator();
+ PRINT_MACRO(BOOST_REGEX_USER_CONFIG);
+ PRINT_MACRO(BOOST_REGEX_USE_C_LOCALE);
+ PRINT_MACRO(BOOST_REGEX_USE_CPP_LOCALE);
+ PRINT_MACRO(BOOST_REGEX_HAS_DLL_RUNTIME);
+ PRINT_MACRO(BOOST_REGEX_DYN_LINK);
+ PRINT_MACRO(BOOST_REGEX_NO_LIB);
+ PRINT_MACRO(BOOST_REGEX_NO_TEMPLATE_SWITCH_MERGE);
+ PRINT_MACRO(BOOST_REGEX_NO_W32);
+ PRINT_MACRO(BOOST_REGEX_NO_BOOL);
+ PRINT_MACRO(BOOST_REGEX_NO_EXTERNAL_TEMPLATES);
+ PRINT_MACRO(BOOST_REGEX_NO_FWD);
+ PRINT_MACRO(BOOST_REGEX_V3);
+ PRINT_MACRO(BOOST_REGEX_HAS_MS_STACK_GUARD);
+ PRINT_MACRO(BOOST_REGEX_RECURSIVE);
+ PRINT_MACRO(BOOST_REGEX_NON_RECURSIVE);
+ PRINT_MACRO(BOOST_REGEX_BLOCKSIZE);
+ PRINT_MACRO(BOOST_REGEX_MAX_BLOCKS);
+ PRINT_MACRO(BOOST_REGEX_MAX_CACHE_BLOCKS);
+ PRINT_MACRO(BOOST_NO_WREGEX);
+ PRINT_MACRO(BOOST_REGEX_NO_FILEITER);
+ PRINT_MACRO(BOOST_REGEX_STATIC_LINK);
+ PRINT_MACRO(BOOST_REGEX_DYN_LINK);
+ PRINT_MACRO(BOOST_REGEX_DECL);
+ PRINT_MACRO(BOOST_REGEX_CALL);
+ PRINT_MACRO(BOOST_REGEX_CCALL);
+ PRINT_MACRO(BOOST_REGEX_MAX_STATE_COUNT);
+ PRINT_MACRO(BOOST_REGEX_BUGGY_CTYPE_FACET);
+ PRINT_MACRO(BOOST_REGEX_MATCH_EXTRA);
+ PRINT_MACRO(BOOST_HAS_ICU);
+ PRINT_MACRO(BOOST_REGEX_HAS_OTHER_WCHAR_T);
+
+#if defined(BOOST_REGEX_CONFIG_INFO) && !defined(NO_RECURSE)
+ print_regex_library_info();
+#endif
+
+ return 0;
+}
+
+
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/test/object_cache/object_cache_test.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/test/object_cache/object_cache_test.cpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,78 @@
+/*
+ *
+ * Copyright (c) 2004
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE object_cache_test.cpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Test code for a generic object cache.
+ */
+#include <boost/regex/pending/object_cache.hpp>
+#include <boost/test/included/test_exec_monitor.hpp>
+
+class test_object
+{
+public:
+ test_object(int i)
+ : m_value(i)
+ {
+ ++s_count;
+ }
+ int value()const
+ {
+ return m_value;
+ }
+ static int count()
+ {
+ return s_count;
+ }
+private:
+ int m_value;
+ static int s_count;
+};
+
+int test_object::s_count = 0;
+
+static const int max_cache_size = 5;
+
+int test_main(int /*argc*/, char * /*argv*/[])
+{
+ int i;
+ for(i = 0; i < 20; ++i)
+ {
+ boost::shared_ptr<const test_object> p = boost::object_cache<int, test_object>::get(i, max_cache_size);
+ BOOST_CHECK(p->value() == i);
+ p = boost::object_cache<int, test_object>::get(i, max_cache_size);
+ BOOST_CHECK(p->value() == i);
+ if(i)
+ {
+ p = boost::object_cache<int, test_object>::get(i-1, max_cache_size);
+ BOOST_CHECK(p->value() == i-1);
+ }
+ }
+ int current_count = test_object::count();
+ for(int j = 0; j < 10; ++j)
+ {
+ for(i = 20 - max_cache_size; i < 20; ++i)
+ {
+ boost::shared_ptr<const test_object> p = boost::object_cache<int, test_object>::get(i, max_cache_size);
+ BOOST_CHECK(p->value() == i);
+ p = boost::object_cache<int, test_object>::get(i, max_cache_size);
+ BOOST_CHECK(p->value() == i);
+ }
+ }
+ BOOST_CHECK(current_count == test_object::count());
+ return 0;
+}
+
+#include <boost/test/included/test_exec_monitor.hpp>
+
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/test/pathology/bad_expression_test.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/test/pathology/bad_expression_test.cpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,56 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE: recursion_test.cpp
+ * VERSION: see <boost/version.hpp>
+ * DESCRIPTION: Test for indefinite recursion and/or stack overrun.
+ */
+
+#include <string>
+#include <boost/regex.hpp>
+#include <boost/test/test_tools.hpp>
+
+int test_main( int , char* [] )
+{
+ std::string bad_text(1024, ' ');
+ std::string good_text(200, ' ');
+ good_text.append("xyz");
+
+ boost::smatch what;
+
+ boost::regex e1("(.+)+xyz");
+
+ BOOST_CHECK(boost::regex_search(good_text, what, e1));
+ BOOST_CHECK_THROW(boost::regex_search(bad_text, what, e1), std::runtime_error);
+ BOOST_CHECK(boost::regex_search(good_text, what, e1));
+
+ BOOST_CHECK(boost::regex_match(good_text, what, e1));
+ BOOST_CHECK_THROW(boost::regex_match(bad_text, what, e1), std::runtime_error);
+ BOOST_CHECK(boost::regex_match(good_text, what, e1));
+
+ boost::regex e2("abc|[[:space:]]+(xyz)?[[:space:]]+xyz");
+
+ BOOST_CHECK(boost::regex_search(good_text, what, e2));
+ BOOST_CHECK_THROW(boost::regex_search(bad_text, what, e2), std::runtime_error);
+ BOOST_CHECK(boost::regex_search(good_text, what, e2));
+
+ bad_text.assign((std::string::size_type)500000, 'a');
+ e2.assign("aaa*@");
+ BOOST_CHECK_THROW(0 == boost::regex_search(bad_text, what, e2), std::runtime_error);
+ good_text.assign((std::string::size_type)5000, 'a');
+ BOOST_CHECK(0 == boost::regex_search(good_text, what, e2));
+
+ return 0;
+}
+
+#include <boost/test/included/test_exec_monitor.hpp>

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/test/pathology/recursion_test.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/test/pathology/recursion_test.cpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,61 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE: recursion_test.cpp
+ * VERSION: see <boost/version.hpp>
+ * DESCRIPTION: Test for indefinite recursion and/or stack overrun.
+ */
+
+#include <string>
+#include <boost/regex.hpp>
+#include <boost/test/test_tools.hpp>
+
+int test_main( int , char* [] )
+{
+ // this regex will recurse twice for each whitespace character matched:
+ boost::regex e("([[:space:]]|.)+");
+
+ std::string bad_text(1024*1024*4, ' ');
+ std::string good_text(200, ' ');
+
+ boost::smatch what;
+
+ //
+ // Over and over: We want to make sure that after a stack error has
+ // been triggered, that we can still conduct a good search and that
+ // subsequent stack failures still do the right thing:
+ //
+ BOOST_CHECK(boost::regex_search(good_text, what, e));
+ BOOST_CHECK_THROW(boost::regex_search(bad_text, what, e), std::runtime_error);
+ BOOST_CHECK(boost::regex_search(good_text, what, e));
+ BOOST_CHECK_THROW(boost::regex_search(bad_text, what, e), std::runtime_error);
+ BOOST_CHECK(boost::regex_search(good_text, what, e));
+ BOOST_CHECK_THROW(boost::regex_search(bad_text, what, e), std::runtime_error);
+ BOOST_CHECK(boost::regex_search(good_text, what, e));
+ BOOST_CHECK_THROW(boost::regex_search(bad_text, what, e), std::runtime_error);
+ BOOST_CHECK(boost::regex_search(good_text, what, e));
+
+ BOOST_CHECK(boost::regex_match(good_text, what, e));
+ BOOST_CHECK_THROW(boost::regex_match(bad_text, what, e), std::runtime_error);
+ BOOST_CHECK(boost::regex_match(good_text, what, e));
+ BOOST_CHECK_THROW(boost::regex_match(bad_text, what, e), std::runtime_error);
+ BOOST_CHECK(boost::regex_match(good_text, what, e));
+ BOOST_CHECK_THROW(boost::regex_match(bad_text, what, e), std::runtime_error);
+ BOOST_CHECK(boost::regex_match(good_text, what, e));
+ BOOST_CHECK_THROW(boost::regex_match(bad_text, what, e), std::runtime_error);
+ BOOST_CHECK(boost::regex_match(good_text, what, e));
+
+ return 0;
+}
+
+#include <boost/test/included/test_exec_monitor.hpp>

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/test/profile/Makefile
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/test/profile/Makefile 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,16 @@
+# copyright John Maddock 2005
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt.
+
+
+regress :
+ g++ -fprofile-arcs -ftest-coverage -DBOOST_REGEX_RECURSIVE -DBOOST_REGEX_BLOCKSIZE=512 -DBOOST_REGEX_MAX_CACHE_BLOCKS=0 -DBOOST_REGEX_MATCH_EXTRA -g -I../../../../ -o regress ../regress/*.cpp ../../src/*.cpp ../../../test/src/ex*.cpp ../../../test/src/cpp_main.cpp
+ ./regress
+ gcov basic_tests.cpp
+
+
+
+
+
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/basic_tests.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/basic_tests.cpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,199 @@
+/*
+ *
+ * Copyright (c) 2004
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE basic_tests.cpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: main regex test declarations.
+ */
+
+#include <boost/detail/workaround.hpp>
+
+#if BOOST_WORKAROUND(__BORLANDC__, < 0x560)
+// we get unresolved externals from basic_string
+// unless we do this, a well known Borland bug:
+#define _RWSTD_COMPILE_INSTANTIATE
+#endif
+
+#include "test.hpp"
+
+#ifdef BOOST_MSVC
+#pragma warning(disable:4127)
+#endif
+
+void basic_tests()
+{
+ using namespace boost::regex_constants;
+ TEST_REGEX_SEARCH("a", basic, "a", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("a", basic, "bba", match_default, make_array(2, 3, -2, -2));
+ TEST_REGEX_SEARCH("Z", perl, "aaa", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("Z", perl, "xxxxZZxxx", match_default, make_array(4, 5, -2, 5, 6, -2, -2));
+ // and some simple brackets:
+ TEST_REGEX_SEARCH("(a)", perl, "zzzaazz", match_default, make_array(3, 4, 3, 4, -2, 4, 5, 4, 5, -2, -2));
+ TEST_REGEX_SEARCH("()", perl, "zzz", match_default, make_array(0, 0, 0, 0, -2, 1, 1, 1, 1, -2, 2, 2, 2, 2, -2, 3, 3, 3, 3, -2, -2));
+ TEST_REGEX_SEARCH("()", perl, "", match_default, make_array(0, 0, 0, 0, -2, -2));
+ TEST_INVALID_REGEX("(", perl);
+ TEST_INVALID_REGEX("", perl);
+ TEST_INVALID_REGEX(")", perl);
+ TEST_INVALID_REGEX("(aa", perl);
+ TEST_INVALID_REGEX("aa)", perl);
+ TEST_REGEX_SEARCH("a", perl, "b", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("\\(\\)", perl, "()", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("\\(a\\)", perl, "(a)", match_default, make_array(0, 3, -2, -2));
+ TEST_INVALID_REGEX("\\()", perl);
+ TEST_INVALID_REGEX("(\\)", perl);
+ TEST_REGEX_SEARCH("p(a)rameter", perl, "ABCparameterXYZ", match_default, make_array(3, 12, 4, 5, -2, -2));
+ TEST_REGEX_SEARCH("[pq](a)rameter", perl, "ABCparameterXYZ", match_default, make_array(3, 12, 4, 5, -2, -2));
+
+ // now try escaped brackets:
+ TEST_REGEX_SEARCH("\\(a\\)", basic, "zzzaazz", match_default, make_array(3, 4, 3, 4, -2, 4, 5, 4, 5, -2, -2));
+ TEST_REGEX_SEARCH("\\(\\)", basic, "zzz", match_default, make_array(0, 0, 0, 0, -2, 1, 1, 1, 1, -2, 2, 2, 2, 2, -2, 3, 3, 3, 3, -2, -2));
+ TEST_REGEX_SEARCH("\\(\\)", basic, "", match_default, make_array(0, 0, 0, 0, -2, -2));
+ TEST_INVALID_REGEX("\\(", basic);
+ TEST_INVALID_REGEX("\\)", basic);
+ TEST_INVALID_REGEX("\\(aa", basic);
+ TEST_INVALID_REGEX("aa\\)", basic);
+ TEST_REGEX_SEARCH("()", basic, "()", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("(a)", basic, "(a)", match_default, make_array(0, 3, -2, -2));
+ TEST_INVALID_REGEX("\\()", basic);
+ TEST_INVALID_REGEX("(\\)", basic);
+ TEST_REGEX_SEARCH("p\\(a\\)rameter", basic, "ABCparameterXYZ", match_default, make_array(3, 12, 4, 5, -2, -2));
+ TEST_REGEX_SEARCH("[pq]\\(a\\)rameter", basic, "ABCparameterXYZ", match_default, make_array(3, 12, 4, 5, -2, -2));
+
+ // now move on to "." wildcards
+ TEST_REGEX_SEARCH(".", perl, "a", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH(".", perl, "\n", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH(".", perl, "\r", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH(".", perl, "\0", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH(".", perl, "a", match_not_dot_newline, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH(".", perl, "\n", match_not_dot_newline, make_array(-2, -2));
+ TEST_REGEX_SEARCH(".", perl, "\r", match_not_dot_newline, make_array(-2, -2));
+ TEST_REGEX_SEARCH(".", perl, "\0", match_not_dot_newline, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH(".", perl, "\n", match_not_dot_null | match_not_dot_newline, make_array(-2, -2));
+ TEST_REGEX_SEARCH(".", perl, "\r", match_not_dot_null | match_not_dot_newline, make_array(-2, -2));
+ TEST_REGEX_SEARCH(".", perl, "\0", match_not_dot_null | match_not_dot_newline, make_array(-2, -2));
+ TEST_REGEX_SEARCH(".", basic, "a", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH(".", basic, "\n", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH(".", basic, "\r", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH(".", basic, "\0", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH(".", basic, "a", match_not_dot_newline, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH(".", basic, "\n", match_not_dot_newline, make_array(-2, -2));
+ TEST_REGEX_SEARCH(".", basic, "\r", match_not_dot_newline, make_array(-2, -2));
+ TEST_REGEX_SEARCH(".", basic, "\0", match_not_dot_newline, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH(".", basic, "\n", match_not_dot_null | match_not_dot_newline, make_array(-2, -2));
+ TEST_REGEX_SEARCH(".", basic, "\r", match_not_dot_null | match_not_dot_newline, make_array(-2, -2));
+ TEST_REGEX_SEARCH(".", basic, "\0", match_not_dot_null | match_not_dot_newline, make_array(-2, -2));
+}
+
+void test_non_marking_paren()
+{
+ using namespace boost::regex_constants;
+ //
+ // non-marking parenthesis added 25/04/00
+ //
+ TEST_REGEX_SEARCH("(?:abc)+", perl, "xxabcabcxx", match_default, make_array(2, 8, -2, -2));
+ TEST_REGEX_SEARCH("(?:a+)(b+)", perl, "xaaabbbx", match_default, make_array(1, 7, 4, 7, -2, -2));
+ TEST_REGEX_SEARCH("(a+)(?:b+)", perl, "xaaabbba", match_default, make_array(1, 7, 1, 4, -2, -2));
+ TEST_REGEX_SEARCH("(?:(a+)b+)", perl, "xaaabbba", match_default, make_array(1, 7, 1, 4, -2, -2));
+ TEST_REGEX_SEARCH("(?:a+(b+))", perl, "xaaabbba", match_default, make_array(1, 7, 4, 7, -2, -2));
+ TEST_REGEX_SEARCH("a+(?#b+)b+", perl, "xaaabbba", match_default, make_array(1, 7, -2, -2));
+ TEST_REGEX_SEARCH("(a)(?:b|$)", perl, "ab", match_default, make_array(0, 2, 0, 1, -2, -2));
+ TEST_REGEX_SEARCH("(a)(?:b|$)", perl, "a", match_default, make_array(0, 1, 0, 1, -2, -2));
+}
+
+void test_partial_match()
+{
+ using namespace boost::regex_constants;
+ //
+ // try some partial matches:
+ //
+ TEST_REGEX_SEARCH("(xyz)(.*)abc", perl, "xyzaaab", match_default|match_partial, make_array(0, 7, -2, -2));
+ TEST_REGEX_SEARCH("(xyz)(.*)abc", perl, "xyz", match_default|match_partial, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("(xyz)(.*)abc", perl, "xy", match_default|match_partial, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("(xyz)(.*)abc", perl, "x", match_default|match_partial, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("(xyz)(.*)abc", perl, "", match_default|match_partial, make_array(-2, -2));
+ TEST_REGEX_SEARCH("(xyz)(.*)abc", perl, "aaaa", match_default|match_partial, make_array(-2, -2));
+ TEST_REGEX_SEARCH(".abc", perl, "aaab", match_default|match_partial, make_array(1, 4, -2, -2));
+ TEST_REGEX_SEARCH("a[_]", perl, "xxa", match_default|match_partial, make_array(2, 3, -2, -2));
+ TEST_REGEX_SEARCH(".{4,}", perl, "xxa", match_default|match_partial, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH(".{4,}", perl, "xxa", match_default|match_partial|match_not_dot_null, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("[\\x0-\\xff]{4,}", perl, "xxa", match_default|match_partial, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("a{4,}", perl, "aaa", match_default|match_partial, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("\\w{4,}", perl, "aaa", match_default|match_partial, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH(".*?<tag>", perl, "aaa", match_default|match_partial, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("a*?<tag>", perl, "aaa", match_default|match_partial, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("\\w*?<tag>", perl, "aaa", match_default|match_partial, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("(\\w)*?<tag>", perl, "aaa", match_default|match_partial, make_array(0, 3, -2, -2));
+}
+
+void test_nosubs()
+{
+ using namespace boost::regex_constants;
+ // subtleties of matching with no sub-expressions marked
+ TEST_REGEX_SEARCH("a(b?c)+d", perl, "accd", match_default|match_nosubs, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("(wee|week)(knights|night)", perl, "weeknights", match_default|match_nosubs, make_array(0, 10, -2, -2));
+ TEST_REGEX_SEARCH(".*", perl, "abc", match_default|match_nosubs, make_array(0, 3, -2, 3, 3, -2, -2));
+ TEST_REGEX_SEARCH("a(b|(c))d", perl, "abd", match_default|match_nosubs, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("a(b|(c))d", perl, "acd", match_default|match_nosubs, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("a(b*|c|e)d", perl, "abbd", match_default|match_nosubs, make_array(0, 4, -2, -2));
+
+ TEST_REGEX_SEARCH("a(b*|c|e)d", perl, "acd", match_default|match_nosubs, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("a(b*|c|e)d", perl, "ad", match_default|match_nosubs, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("a(b?)c", perl, "abc", match_default|match_nosubs, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("a(b?)c", perl, "ac", match_default|match_nosubs, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("a(b+)c", perl, "abc", match_default|match_nosubs, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("a(b+)c", perl, "abbbc", match_default|match_nosubs, make_array(0, 5, -2, -2));
+ TEST_REGEX_SEARCH("a(b*)c", perl, "ac", match_default|match_nosubs, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("(a|ab)(bc([de]+)f|cde)", perl, "abcdef", match_default|match_nosubs, make_array(0, 6, -2, -2));
+ TEST_REGEX_SEARCH("a([bc]?)c", perl, "abc", match_default|match_nosubs, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("a([bc]?)c", perl, "ac", match_default|match_nosubs, make_array(0, 2, -2, -2));
+
+ TEST_REGEX_SEARCH("a([bc]+)c", perl, "abc", match_default|match_nosubs, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("a([bc]+)c", perl, "abcc", match_default|match_nosubs, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("a([bc]+)bc", perl, "abcbc", match_default|match_nosubs, make_array(0, 5, -2, -2));
+ TEST_REGEX_SEARCH("a(bb+|b)b", perl, "abb", match_default|match_nosubs, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("a(bbb+|bb+|b)b", perl, "abb", match_default|match_nosubs, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("a(bbb+|bb+|b)b", perl, "abbb", match_default|match_nosubs, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("a(bbb+|bb+|b)bb", perl, "abbb", match_default|match_nosubs, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("(.*).*", perl, "abcdef", match_default|match_nosubs, make_array(0, 6, -2, 6, 6, -2, -2));
+ TEST_REGEX_SEARCH("(a*)*", perl, "bc", match_default|match_nosubs, make_array(0, 0, -2, 1, 1, -2, 2, 2, -2, -2));
+
+ TEST_REGEX_SEARCH("a(b?c)+d", perl|nosubs, "accd", match_default, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("(wee|week)(knights|night)", perl|nosubs, "weeknights", match_default, make_array(0, 10, -2, -2));
+ TEST_REGEX_SEARCH(".*", perl|nosubs, "abc", match_default, make_array(0, 3, -2, 3, 3, -2, -2));
+ TEST_REGEX_SEARCH("a(b|(c))d", perl|nosubs, "abd", match_default, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("a(b|(c))d", perl|nosubs, "acd", match_default, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("a(b*|c|e)d", perl|nosubs, "abbd", match_default, make_array(0, 4, -2, -2));
+
+ TEST_REGEX_SEARCH("a(b*|c|e)d", perl|nosubs, "acd", match_default, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("a(b*|c|e)d", perl|nosubs, "ad", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("a(b?)c", perl|nosubs, "abc", match_default, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("a(b?)c", perl|nosubs, "ac", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("a(b+)c", perl|nosubs, "abc", match_default, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("a(b+)c", perl|nosubs, "abbbc", match_default, make_array(0, 5, -2, -2));
+ TEST_REGEX_SEARCH("a(b*)c", perl|nosubs, "ac", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("(a|ab)(bc([de]+)f|cde)", perl|nosubs, "abcdef", match_default, make_array(0, 6, -2, -2));
+ TEST_REGEX_SEARCH("a([bc]?)c", perl|nosubs, "abc", match_default, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("a([bc]?)c", perl|nosubs, "ac", match_default, make_array(0, 2, -2, -2));
+
+ TEST_REGEX_SEARCH("a([bc]+)c", perl|nosubs, "abc", match_default, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("a([bc]+)c", perl|nosubs, "abcc", match_default, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("a([bc]+)bc", perl|nosubs, "abcbc", match_default, make_array(0, 5, -2, -2));
+ TEST_REGEX_SEARCH("a(bb+|b)b", perl|nosubs, "abb", match_default, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("a(bbb+|bb+|b)b", perl|nosubs, "abb", match_default, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("a(bbb+|bb+|b)b", perl|nosubs, "abbb", match_default, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("a(bbb+|bb+|b)bb", perl|nosubs, "abbb", match_default, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("(.*).*", perl|nosubs, "abcdef", match_default, make_array(0, 6, -2, 6, 6, -2, -2));
+ TEST_REGEX_SEARCH("(a*)*", perl|nosubs, "bc", match_default, make_array(0, 0, -2, 1, 1, -2, 2, 2, -2, -2));
+}
+
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/bcb6.mak
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/bcb6.mak 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,215 @@
+# copyright John Maddock 2003
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt.
+
+# very basic makefile for regress
+#
+# Borland C++ tools
+#
+# BCROOT defines the root directory of your bcb install
+#
+!ifndef BCROOT
+BCROOT=$(MAKEDIR)\..
+!endif
+#
+# sources to compile for each test:
+#
+SOURCES=*.cpp
+
+BCC32 = $(BCROOT)\bin\Bcc32.exe
+TLINK32 = $(BCROOT)\bin\ILink32.exe
+
+IDE_LinkFLAGS32 = -L$(BCROOT)\LIB
+LINKOPTS= -ap -Tpe -x
+CFLAGS= -tWC -DSTRICT; -Vx -Ve -w-inl -w-aus -w-csu -w-eff -w-rch -I$(BCROOT)\include;..\..\..\..\; -L..\..\..\..\stage\lib -L$(BCROOT)\lib\obj -L$(BCROOT)\lib\release -L..\..\build\bcb $(CXXFLAGS)
+
+BPI= vcl.bpi rtl.bpi vclx.bpi vcle.lib
+
+BPL= vcl.lib rtl.lib vcle.lib
+
+
+all :: r1.exe r2.exe r3.exe r4.exe r5.exe r6.exe r1m.exe r2m.exe r3m.exe r4m.exe r5m.exe r6m.exe r1v.exe r2v.exe r3v.exe r4v.exe r5v.exe r6v.exe r1l.exe r2l.exe r3l.exe r4l.exe r5l.exe r6l.exe r1lm.exe r2lm.exe r3lm.exe r4lm.exe r5lm.exe r6lm.exe r1lv.exe r2lv.exe r3lv.exe r4lv.exe r5lv.exe r6lv.exe
+ -copy ..\..\build\bcb6\*.dll
+ -copy ..\..\..\..\stage\lib\*bcb*.dll
+ echo testing static single threaded version....
+ r1 tests.txt test1252.txt
+ r2 tests.txt
+ r3 tests.txt
+ r4 tests.txt test1252.txt
+ r5 tests.txt
+ r6 tests.txt
+ echo testing static multi-threaded version....
+ r1m tests.txt test1252.txt
+ r2m tests.txt
+ r3m tests.txt
+ r4m tests.txt test1252.txt
+ r5m tests.txt
+ r6m tests.txt
+ echo testing static VCL version....
+ r1v tests.txt test1252.txt
+ r2v tests.txt
+ r3v tests.txt
+ r4v tests.txt test1252.txt
+ r5v tests.txt
+ r6v tests.txt
+ echo testing dll single threaded version....
+ r1l tests.txt test1252.txt
+ r2l tests.txt
+ r3l tests.txt
+ r4l tests.txt test1252.txt
+ r5l tests.txt
+ r6l tests.txt
+ echo testing dll multi-threaded version....
+ r1lm tests.txt test1252.txt
+ r2lm tests.txt
+ r3lm tests.txt
+ r4lm tests.txt test1252.txt
+ r5lm tests.txt
+ r6lm tests.txt
+ echo testing dll VCL version....
+ r1lv tests.txt test1252.txt
+ r2lv tests.txt
+ r3lv tests.txt
+ r4lv tests.txt test1252.txt
+ r5lv tests.txt
+ r6lv tests.txt
+
+
+r1.exe : $(SOURCES)
+ $(BCC32) -tWM- -D_NO_VCL $(CFLAGS) -er1.exe -DBOOST_RE_TEST_LOCALE_W32 $(SOURCES)
+
+r2.exe : $(SOURCES)
+ $(BCC32) -tWM- -D_NO_VCL $(CFLAGS) -er2.exe -DBOOST_RE_TEST_LOCALE_C $(SOURCES)
+
+r3.exe : $(SOURCES)
+ $(BCC32) -tWM- -D_NO_VCL $(CFLAGS) -er3.exe -DBOOST_RE_TEST_LOCALE_CPP $(SOURCES)
+
+r4.exe : $(SOURCES)
+ $(BCC32) -tWM- -D_NO_VCL $(CFLAGS) -er4.exe -DBOOST_RE_TEST_LOCALE_W32 -DTEST_UNICODE $(SOURCES)
+
+r5.exe : $(SOURCES)
+ $(BCC32) -tWM- -D_NO_VCL $(CFLAGS) -er5.exe -DBOOST_RE_TEST_LOCALE_C -DTEST_UNICODE $(SOURCES)
+
+r6.exe : $(SOURCES)
+ $(BCC32) -tWM- -D_NO_VCL $(CFLAGS) -er6.exe -DBOOST_RE_TEST_LOCALE_CPP -DTEST_UNICODE $(SOURCES)
+
+
+r1m.exe : $(SOURCES)
+ $(BCC32) -tWM -D_NO_VCL $(CFLAGS) -er1m.exe -DBOOST_RE_TEST_LOCALE_W32 $(SOURCES)
+
+r2m.exe : $(SOURCES)
+ $(BCC32) -tWM -D_NO_VCL $(CFLAGS) -er2m.exe -DBOOST_RE_TEST_LOCALE_C $(SOURCES)
+
+r3m.exe : $(SOURCES)
+ $(BCC32) -tWM -D_NO_VCL $(CFLAGS) -er3m.exe -DBOOST_RE_TEST_LOCALE_CPP $(SOURCES)
+
+r4m.exe : $(SOURCES)
+ $(BCC32) -tWM -D_NO_VCL $(CFLAGS) -er4m.exe -DBOOST_RE_TEST_LOCALE_W32 -DTEST_UNICODE $(SOURCES)
+
+r5m.exe : $(SOURCES)
+ $(BCC32) -tWM -D_NO_VCL $(CFLAGS) -er5m.exe -DBOOST_RE_TEST_LOCALE_C -DTEST_UNICODE $(SOURCES)
+
+r6m.exe : $(SOURCES)
+ $(BCC32) -tWM -D_NO_VCL $(CFLAGS) -er6m.exe -DBOOST_RE_TEST_LOCALE_CPP -DTEST_UNICODE $(SOURCES)
+
+
+r1v.exe : $(SOURCES)
+ $(BCC32) -tWM -tWV $(CFLAGS) -er1v.exe -DBOOST_RE_TEST_LOCALE_W32 $(SOURCES) $(BPL)
+
+r2v.exe : $(SOURCES)
+ $(BCC32) -tWM -tWV $(CFLAGS) -er2v.exe -DBOOST_RE_TEST_LOCALE_C $(SOURCES) $(BPL)
+
+r3v.exe : $(SOURCES)
+ $(BCC32) -tWM -tWV $(CFLAGS) -er3v.exe -DBOOST_RE_TEST_LOCALE_CPP $(SOURCES) $(BPL)
+
+r4v.exe : $(SOURCES)
+ $(BCC32) -tWM -tWV $(CFLAGS) -er4v.exe -DBOOST_RE_TEST_LOCALE_W32 -DTEST_UNICODE $(SOURCES) $(BPL)
+
+r5v.exe : $(SOURCES)
+ $(BCC32) -tWM -tWV $(CFLAGS) -er5v.exe -DBOOST_RE_TEST_LOCALE_C -DTEST_UNICODE $(SOURCES) $(BPL)
+
+r6v.exe : $(SOURCES)
+ $(BCC32) -tWM -tWV $(CFLAGS) -er6v.exe -DBOOST_RE_TEST_LOCALE_CPP -DTEST_UNICODE $(SOURCES) $(BPL)
+
+
+r1l.exe : $(SOURCES)
+ $(BCC32) -tWM- -tWR -D_NO_VCL $(CFLAGS) -er1l.exe -DBOOST_REGEX_DYN_LINK -DBOOST_RE_TEST_LOCALE_W32 $(SOURCES)
+
+r2l.exe : $(SOURCES)
+ $(BCC32) -tWM- -tWR -D_NO_VCL $(CFLAGS) -er2l.exe -DBOOST_REGEX_DYN_LINK -DBOOST_RE_TEST_LOCALE_C $(SOURCES)
+
+r3l.exe : $(SOURCES)
+ $(BCC32) -tWM- -tWR -D_NO_VCL $(CFLAGS) -er3l.exe -DBOOST_REGEX_DYN_LINK -DBOOST_RE_TEST_LOCALE_CPP $(SOURCES)
+
+r4l.exe : $(SOURCES)
+ $(BCC32) -tWM- -tWR -D_NO_VCL $(CFLAGS) -er4l.exe -DBOOST_REGEX_DYN_LINK -DBOOST_RE_TEST_LOCALE_W32 -DTEST_UNICODE $(SOURCES)
+
+r5l.exe : $(SOURCES)
+ $(BCC32) -tWM- -tWR -D_NO_VCL $(CFLAGS) -er5l.exe -DBOOST_REGEX_DYN_LINK -DBOOST_RE_TEST_LOCALE_C -DTEST_UNICODE $(SOURCES)
+
+r6l.exe : $(SOURCES)
+ $(BCC32) -tWM- -tWR -D_NO_VCL $(CFLAGS) -er6l.exe -DBOOST_REGEX_DYN_LINK -DBOOST_RE_TEST_LOCALE_CPP -DTEST_UNICODE $(SOURCES)
+
+
+r1lm.exe : $(SOURCES)
+ $(BCC32) -tWM -tWR -D_NO_VCL $(CFLAGS) -er1lm.exe -DBOOST_REGEX_DYN_LINK -DBOOST_RE_TEST_LOCALE_W32 $(SOURCES)
+
+r2lm.exe : $(SOURCES)
+ $(BCC32) -tWM -tWR -D_NO_VCL $(CFLAGS) -er2lm.exe -DBOOST_REGEX_DYN_LINK -DBOOST_RE_TEST_LOCALE_C $(SOURCES)
+
+r3lm.exe : $(SOURCES)
+ $(BCC32) -tWM -tWR -D_NO_VCL $(CFLAGS) -er3lm.exe -DBOOST_REGEX_DYN_LINK -DBOOST_RE_TEST_LOCALE_CPP $(SOURCES)
+
+r4lm.exe : $(SOURCES)
+ $(BCC32) -tWM -tWR -D_NO_VCL $(CFLAGS) -er4lm.exe -DBOOST_REGEX_DYN_LINK -DBOOST_RE_TEST_LOCALE_W32 -DTEST_UNICODE $(SOURCES)
+
+r5lm.exe : $(SOURCES)
+ $(BCC32) -tWM -tWR -D_NO_VCL $(CFLAGS) -er5lm.exe -DBOOST_REGEX_DYN_LINK -DBOOST_RE_TEST_LOCALE_C -DTEST_UNICODE $(SOURCES)
+
+r6lm.exe : $(SOURCES)
+ $(BCC32) -tWM -tWR -D_NO_VCL $(CFLAGS) -er6lm.exe -DBOOST_REGEX_DYN_LINK -DBOOST_RE_TEST_LOCALE_CPP -DTEST_UNICODE $(SOURCES)
+
+
+r1lv.exe : $(SOURCES)
+ $(BCC32) -tWM -tWR -tWV -tWC $(CFLAGS) -er1lv.exe -DBOOST_REGEX_DYN_LINK -DBOOST_RE_TEST_LOCALE_W32 $(SOURCES) $(BPI)
+
+r2lv.exe : $(SOURCES)
+ $(BCC32) -tWM -tWR -tWV -tWC $(CFLAGS) -er2lv.exe -DBOOST_REGEX_DYN_LINK -DBOOST_RE_TEST_LOCALE_C $(SOURCES) $(BPI)
+
+r3lv.exe : $(SOURCES)
+ $(BCC32) -tWM -tWR -tWV -tWC $(CFLAGS) -er3lv.exe -DBOOST_REGEX_DYN_LINK -DBOOST_RE_TEST_LOCALE_CPP $(SOURCES) $(BPI)
+
+r4lv.exe : $(SOURCES)
+ $(BCC32) -tWM -tWR -tWV -tWC $(CFLAGS) -er4lv.exe -DBOOST_REGEX_DYN_LINK -DBOOST_RE_TEST_LOCALE_W32 -DTEST_UNICODE $(SOURCES) $(BPI)
+
+r5lv.exe : $(SOURCES)
+ $(BCC32) -tWM -tWR -tWV -tWC $(CFLAGS) -er5lv.exe -DBOOST_REGEX_DYN_LINK -DBOOST_RE_TEST_LOCALE_C -DTEST_UNICODE $(SOURCES) $(BPI)
+
+r6lv.exe : $(SOURCES)
+ $(BCC32) -tWM -tWR -tWV -tWC $(CFLAGS) -er6lv.exe -DBOOST_REGEX_DYN_LINK -DBOOST_RE_TEST_LOCALE_CPP -DTEST_UNICODE $(SOURCES) $(BPI)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/gcc.mak
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/gcc.mak 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,74 @@
+# copyright John Maddock 2003
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt.
+
+# very basic makefile for regression tests
+#
+# g++ 2.95 and greater
+#
+CXX= g++ $(INCLUDES) -L../../../../stage/lib -I../../../../ -I./ $(CXXFLAGS) -L../../build/gcc $(LDFLAGS)
+#
+# sources to compile for each test:
+#
+SOURCES=*.cpp
+
+total : gcc_regress
+ export LD_LIBRARY_PATH="../../build/gcc:$LD_LIBRARY_PATH" && ./gcc_regress tests.txt
+
+gcc_regress : $(SOURCES)
+ $(CXX) -O2 -o gcc_regress $(SOURCES) ../../build/gcc/libboost_regex-gcc*.a $(LIBS)
+
+debug : $(SOURCES)
+ $(CXX) -g -o gcc_regress $(SOURCES) ../../build/gcc/libboost_regex-gcc-d*.a $(LIBS)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/info.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/info.hpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,222 @@
+/*
+ *
+ * Copyright (c) 2004
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE info.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Error handling for test cases.
+ */
+
+#ifndef BOOST_REGEX_REGRESS_INFO_HPP
+#define BOOST_REGEX_REGRESS_INFO_HPP
+#include <iostream>
+#include <string>
+#include <boost/regex.hpp>
+
+#ifdef TEST_THREADS
+#include <boost/thread/once.hpp>
+#include <boost/thread.hpp>
+#endif
+//
+// class test info,
+// store information about the test we are about to conduct:
+//
+template <class charT>
+class test_info_base
+{
+public:
+ typedef std::basic_string<charT> string_type;
+private:
+ struct data_type
+ {
+ std::string file;
+ int line;
+ string_type expression;
+ boost::regex_constants::syntax_option_type options;
+ string_type search_text;
+ boost::regex_constants::match_flag_type match_options;
+ const int* answer_table;
+ string_type format_string;
+ string_type result_string;
+ bool need_to_print;
+ std::string expression_type_name;
+ };
+#ifdef TEST_THREADS
+ static data_type& do_get_data()
+ {
+ static boost::thread_specific_ptr<data_type> pd;
+ if(pd.get() == 0)
+ pd.reset(new data_type());
+ return *(pd.get());
+ }
+ static void init_data()
+ {
+ do_get_data();
+ }
+#endif
+ static data_type& data()
+ {
+#ifdef TEST_THREADS
+ static boost::once_flag f = BOOST_ONCE_INIT;
+ boost::call_once(&init_data, f);
+ return do_get_data();
+#else
+ static data_type d;
+ return d;
+#endif
+ }
+public:
+ test_info_base(){};
+ static void set_info(
+ const char* file,
+ int line,
+ const string_type& ex,
+ boost::regex_constants::syntax_option_type opt,
+ const string_type& search_text = string_type(),
+ boost::regex_constants::match_flag_type match_options = boost::match_default,
+ const int* answer_table = 0,
+ const string_type& format_string = string_type(),
+ const string_type& result_string = string_type())
+ {
+ data_type& dat = data();
+ dat.file = file;
+ dat.line = line;
+ dat.expression = ex;
+ dat.options = opt;
+ dat.search_text = search_text;
+ dat.match_options = match_options;
+ dat.answer_table = answer_table;
+ dat.format_string = format_string;
+ dat.result_string = result_string;
+ dat.need_to_print = true;
+ }
+ static void set_typename(const std::string& n)
+ {
+ data().expression_type_name = n;
+ }
+
+ static const string_type& expression()
+ {
+ return data().expression;
+ }
+ static boost::regex_constants::syntax_option_type syntax_options()
+ {
+ return data().options;
+ }
+ static const string_type& search_text()
+ {
+ return data().search_text;
+ }
+ static boost::regex_constants::match_flag_type match_options()
+ {
+ return data().match_options;
+ }
+ static const int* answer_table()
+ {
+ return data().answer_table;
+ }
+ static const string_type& format_string()
+ {
+ return data().format_string;
+ }
+ static const string_type& result_string()
+ {
+ return data().result_string;
+ }
+ static bool need_to_print()
+ {
+ return data().need_to_print;
+ }
+ static const std::string& file()
+ {
+ return data().file;
+ }
+ static int line()
+ {
+ return data().line;
+ }
+ static void clear()
+ {
+ data().need_to_print = false;
+ }
+ static std::string& expression_typename()
+ {
+ return data().expression_type_name;
+ }
+};
+
+template <class T>
+struct test_info
+ : public test_info_base<wchar_t>
+{};
+
+template<>
+struct test_info<char>
+ : public test_info_base<char>
+{};
+
+#if BOOST_WORKAROUND(__DECCXX_VER, BOOST_TESTED_AT(60590042))
+
+// Some template instantiation modes (namely local, implicit local, and weak) of
+// this compiler need an explicit instantiation because otherwise we end up with
+// multiple copies of the static variable defined in this method. This explicit
+// instantiation generates the static variable with common linkage, which makes
+// the linker choose only one of the available definitions. For more details,
+// see "man ld".
+
+template test_info_base<wchar_t>::data_type & test_info_base<wchar_t>::data();
+template test_info_base<char>::data_type & test_info_base<char>::data();
+
+#endif
+
+template <class charT>
+std::ostream& operator<<(std::ostream& os, const test_info<charT>&)
+{
+ if(test_info<charT>::need_to_print())
+ {
+ os << test_info<charT>::file() << ":" << test_info<charT>::line() << ": Error in test here:" << std::endl;
+ test_info<charT>::clear();
+ }
+ return os;
+}
+//
+// define some test macros:
+//
+extern int error_count;
+
+#define BOOST_REGEX_TEST_ERROR(msg, charT)\
+ ++error_count;\
+ std::cerr << test_info<charT>();\
+ std::cerr << " " << __FILE__ << ":" << __LINE__ << ":" << msg \
+ << " (While testing " << test_info<charT>::expression_typename() << ")" << std::endl
+
+class errors_as_warnings
+{
+public:
+ errors_as_warnings()
+ {
+ m_saved_error_count = error_count;
+ }
+ ~errors_as_warnings()
+ {
+ if(m_saved_error_count != error_count)
+ {
+ std::cerr << "<note>The above " << (error_count - m_saved_error_count) << " errors are treated as warnings only.</note>" << std::endl;
+ error_count = m_saved_error_count;
+ }
+ }
+private:
+ int m_saved_error_count;
+};
+
+#endif
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/main.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/main.cpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,185 @@
+/*
+ *
+ * Copyright (c) 2004
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE main.cpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: entry point for test program.
+ */
+
+#include "test.hpp"
+#include "test_locale.hpp"
+#include <stdarg.h>
+
+#ifdef TEST_THREADS
+#include <list>
+#include <boost/thread.hpp>
+#include <boost/thread/tss.hpp>
+#include <boost/shared_ptr.hpp>
+#include <boost/array.hpp>
+
+int* get_array_data();
+
+#endif
+
+int error_count = 0;
+
+void run_tests()
+{
+ basic_tests();
+ test_simple_repeats();
+ test_alt();
+ test_sets();
+ test_sets2();
+ test_anchors();
+ test_backrefs();
+ test_character_escapes();
+ test_assertion_escapes();
+ test_tricky_cases();
+ test_grep();
+ test_replace();
+ test_non_greedy_repeats();
+ test_non_marking_paren();
+ test_partial_match();
+ test_forward_lookahead_asserts();
+ test_fast_repeats();
+ test_fast_repeats2();
+ test_independent_subs();
+ test_nosubs();
+ test_conditionals();
+ test_options();
+ test_options2();
+#ifndef TEST_THREADS
+ test_en_locale();
+#endif
+ test_emacs();
+ test_operators();
+ test_overloads();
+ test_unicode();
+}
+
+int cpp_main(int /*argc*/, char * /*argv*/[])
+{
+#ifdef TEST_THREADS
+ get_array_data(); // initialises data.
+
+ std::list<boost::shared_ptr<boost::thread> > threads;
+ for(int i = 0; i < 5; ++i)
+ {
+ threads.push_back(boost::shared_ptr<boost::thread>(new boost::thread(&run_tests)));
+ }
+ std::list<boost::shared_ptr<boost::thread> >::const_iterator a(threads.begin()), b(threads.end());
+ while(a != b)
+ {
+ (*a)->join();
+ ++a;
+ }
+#else
+ run_tests();
+#endif
+ return error_count;
+}
+
+#ifdef TEST_THREADS
+
+int* get_array_data()
+{
+ static boost::thread_specific_ptr<boost::array<int, 200> > tp;
+
+ if(tp.get() == 0)
+ tp.reset(new boost::array<int, 200>);
+
+ return tp.get()->data();
+}
+
+#endif
+
+const int* make_array(int first, ...)
+{
+ //
+ // this function takes a variable number of arguments
+ // and packs them into an array that we can pass through
+ // our testing macros (ideally we would use an array literal
+ // but these can't apparently be used as macro arguments).
+ //
+#ifdef TEST_THREADS
+ int* data = get_array_data();
+#else
+ static int data[200];
+#endif
+ va_list ap;
+ va_start(ap, first);
+ //
+ // keep packing args, until we get two successive -2 values:
+ //
+ int terminator_count;
+ int next_position = 1;
+ data[0] = first;
+ if(first == -2)
+ terminator_count = 1;
+ else
+ terminator_count = 0;
+ while(terminator_count < 2)
+ {
+ data[next_position] = va_arg(ap, int);
+ if(data[next_position] == -2)
+ ++terminator_count;
+ else
+ terminator_count = 0;
+ ++next_position;
+ }
+ va_end(ap);
+ return data;
+}
+
+#ifdef BOOST_NO_EXCEPTIONS
+
+namespace boost{
+
+void throw_exception(std::exception const & e)
+{
+ std::abort();
+}
+
+}
+
+#endif
+
+void test(const char& c, const test_regex_replace_tag& tag)
+{
+ do_test(c, tag);
+}
+void test(const char& c, const test_regex_search_tag& tag)
+{
+ do_test(c, tag);
+}
+void test(const char& c, const test_invalid_regex_tag& tag)
+{
+ do_test(c, tag);
+}
+
+#ifndef BOOST_NO_WREGEX
+void test(const wchar_t& c, const test_regex_replace_tag& tag)
+{
+ do_test(c, tag);
+}
+void test(const wchar_t& c, const test_regex_search_tag& tag)
+{
+ do_test(c, tag);
+}
+void test(const wchar_t& c, const test_invalid_regex_tag& tag)
+{
+ do_test(c, tag);
+}
+#endif
+
+#include <boost/test/included/prg_exec_monitor.hpp>

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/sunpro.mak
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/sunpro.mak 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,145 @@
+# copyright John Maddock 2003
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt.
+
+# very basic makefile for regression tests
+# tests every library combination, static/dynamic/multimthread/singlethread/narrow/wide
+#
+# Sun Workshop 6 and greater:
+#
+CXX= CC $(INCLUDES) -I../../../../ -I./ $(CXXFLAGS) -L../../../../stage/lib -L../../build/sunpro $(LDFLAGS)
+#
+# sources to compile for each test:
+#
+SOURCES=*.cpp
+
+total : r rm r/regress rm/regress rs rms rs/regress rms/regress rw rmw rw/regress rmw/regress rsw rmsw rsw/regress rmsw/regress
+ echo testsing narrow character versions:
+ ./r/regress tests.txt
+ ./rm/regress tests.txt
+ ./rs/regress tests.txt
+ ./rms/regress tests.txt
+ echo testsing wide character versions;
+ ./rw/regress tests.txt
+ ./rmw/regress tests.txt
+ ./rsw/regress tests.txt
+ ./rmsw/regress tests.txt
+
+#
+# delete the cache before each build.
+# NB this precludes multithread builds:
+#
+r/regress : $(SOURCES)
+ rm -f *.o
+ rm -fr SunWS_cache
+ $(CXX) -O2 -o r/regress $(SOURCES) -lboost_regex$(LIBSUFFIX) $(LIBS)
+
+rm/regress : $(SOURCES)
+ rm -f *.o
+ rm -fr SunWS_cache
+ $(CXX) -O2 -mt -o rm/regress $(SOURCES) -lboost_regex_mt$(LIBSUFFIX) $(LIBS)
+
+rs/regress : $(SOURCES)
+ rm -f *.o
+ rm -fr SunWS_cache
+ $(CXX) -O2 -o rs/regress $(SOURCES) -Bstatic -lboost_regex$(LIBSUFFIX) -Bdynamic $(LIBS)
+
+rms/regress : $(SOURCES)
+ rm -f *.o
+ rm -fr SunWS_cache
+ $(CXX) -O2 -mt -o rms/regress $(SOURCES) -Bstatic -lboost_regex_mt$(LIBSUFFIX) -Bdynamic $(LIBS)
+
+rw/regress : $(SOURCES)
+ rm -f *.o
+ rm -fr SunWS_cache
+ $(CXX) -O2 -DTEST_UNICODE -o rw/regress $(SOURCES) -lboost_regex$(LIBSUFFIX) $(LIBS)
+
+rmw/regress : $(SOURCES)
+ rm -f *.o
+ rm -fr SunWS_cache
+ $(CXX) -O2 -mt -DTEST_UNICODE -o rmw/regress $(SOURCES) -lboost_regex_mt$(LIBSUFFIX) $(LIBS)
+
+rsw/regress : $(SOURCES)
+ rm -f *.o
+ rm -fr SunWS_cache
+ $(CXX) -O2 -DTEST_UNICODE -o rsw/regress $(SOURCES) -Bstatic -lboost_regex$(LIBSUFFIX) -Bdynamic $(LIBS)
+
+rmsw/regress : $(SOURCES)
+ rm -f *.o
+ rm -fr SunWS_cache
+ $(CXX) -O2 -mt -DTEST_UNICODE -o rmsw/regress $(SOURCES) -Bstatic -lboost_regex_mt$(LIBSUFFIX) -Bdynamic $(LIBS)
+
+r:
+ mkdir -p r
+
+rm:
+ mkdir -p rm
+
+rs:
+ mkdir -p rs
+
+rms:
+ mkdir -p rms
+
+rw:
+ mkdir -p rw
+
+rmw:
+ mkdir -p rmw
+
+rsw:
+ mkdir -p rsw
+
+rmsw:
+ mkdir -p rmsw
+
+clean:
+ rm -f *.o
+ rm -fr SunWS_cache
+ rm -fr r rm rs rms rw rmw rsw rmsw
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test.hpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,264 @@
+/*
+ *
+ * Copyright (c) 2004
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE test.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Macros for test cases.
+ */
+
+
+#ifndef BOOST_REGEX_REGRESS_TEST_HPP
+#define BOOST_REGEX_REGRESS_TEST_HPP
+#include <typeinfo>
+#include "test_not_regex.hpp"
+#include "test_regex_search.hpp"
+#include "test_regex_replace.hpp"
+#include "test_deprecated.hpp"
+#include "test_mfc.hpp"
+#include "test_icu.hpp"
+#include "test_locale.hpp"
+
+
+//
+// define test entry proc, this forwards on to the appropriate
+// real test:
+//
+template <class charT, class tagT>
+void do_test(const charT& c, const tagT& tag);
+
+template <class charT, class tagT>
+void test(const charT& c, const tagT& tag)
+{
+ do_test(c, tag);
+}
+//
+// make these non-templates to speed up compilation times:
+//
+void test(const char&, const test_regex_replace_tag&);
+void test(const char&, const test_regex_search_tag&);
+void test(const char&, const test_invalid_regex_tag&);
+
+#ifndef BOOST_NO_WREGEX
+void test(const wchar_t&, const test_regex_replace_tag&);
+void test(const wchar_t&, const test_regex_search_tag&);
+void test(const wchar_t&, const test_invalid_regex_tag&);
+#endif
+
+template <class charT, class tagT>
+void do_test(const charT& c, const tagT& tag)
+{
+#ifndef BOOST_NO_STD_LOCALE
+#if BOOST_WORKAROUND(BOOST_MSVC, <= 1200) && defined(TEST_THREADS)
+ // typeid appears to fail in multithreaded environments:
+ test_info<charT>::set_typename("");
+#else
+ test_info<charT>::set_typename(typeid(boost::basic_regex<charT, boost::cpp_regex_traits<charT> >).name());
+#endif
+ boost::basic_regex<charT, boost::cpp_regex_traits<charT> > e1;
+ static bool done_empty_test = false;
+ if(done_empty_test == false)
+ {
+ test_empty(e1);
+ done_empty_test = true;
+ }
+ if(test_locale::cpp_locale_state() == test_locale::test_with_locale)
+ e1.imbue(test_locale::cpp_locale());
+ if(test_locale::cpp_locale_state() != test_locale::no_test)
+ test(e1, tag);
+#endif
+#if !BOOST_WORKAROUND(__BORLANDC__, < 0x560)
+#if BOOST_WORKAROUND(BOOST_MSVC, <= 1200) && defined(TEST_THREADS)
+ // typeid appears to fail in multithreaded environments:
+ test_info<charT>::set_typename("");
+#else
+ test_info<charT>::set_typename(typeid(boost::basic_regex<charT, boost::c_regex_traits<charT> >).name());
+#endif
+ boost::basic_regex<charT, boost::c_regex_traits<charT> > e2;
+ if(test_locale::c_locale_state() != test_locale::no_test)
+ test(e2, tag);
+#endif
+#if defined(_WIN32) && !defined(BOOST_REGEX_NO_W32)
+#if BOOST_WORKAROUND(BOOST_MSVC, <= 1200) && defined(TEST_THREADS)
+ // typeid appears to fail in multithreaded environments:
+ test_info<charT>::set_typename("");
+#else
+ test_info<charT>::set_typename(typeid(boost::basic_regex<charT, boost::w32_regex_traits<charT> >).name());
+#endif
+ boost::basic_regex<charT, boost::w32_regex_traits<charT> > e3;
+ if(test_locale::win_locale_state() == test_locale::test_with_locale)
+ e3.imbue(test_locale::win_locale());
+ if(test_locale::win_locale_state() != test_locale::no_test)
+ test(e3, tag);
+#endif
+ // test old depecated code:
+ test_info<charT>::set_typename("Deprecated interfaces");
+ if((test_locale::win_locale_state() == test_locale::test_no_locale)
+ && (test_locale::c_locale_state() == test_locale::test_no_locale)
+ &&(test_locale::cpp_locale_state() == test_locale::test_no_locale))
+ test_deprecated(c, tag);
+ // test MFC/ATL wrappers:
+ test_info<charT>::set_typename("MFC/ATL interfaces");
+ if((test_locale::win_locale_state() == test_locale::test_no_locale)
+ && (test_locale::c_locale_state() == test_locale::test_no_locale)
+ &&(test_locale::cpp_locale_state() == test_locale::test_no_locale))
+ test_mfc(c, tag);
+ // test ICU code:
+ test_info<charT>::set_typename("ICU interfaces");
+ test_icu(c, tag);
+}
+
+//
+// define function to pack args into an array:
+//
+const int* make_array(int first, ...);
+
+
+//
+// define macros for testing invalid regexes:
+//
+#define TEST_INVALID_REGEX_N(s, f)\
+ do{\
+ const char e[] = { s };\
+ std::string se(e, sizeof(e) - 1);\
+ test_info<char>::set_info(__FILE__, __LINE__, se, f);\
+ test(char(0), test_invalid_regex_tag());\
+ }while(0)
+
+#ifndef BOOST_NO_WREGEX
+#define TEST_INVALID_REGEX_W(s, f)\
+ do{\
+ const wchar_t e[] = { s };\
+ std::wstring se(e, (sizeof(e) / sizeof(wchar_t)) - 1);\
+ test_info<wchar_t>::set_info(__FILE__, __LINE__, se, f);\
+ test(wchar_t(0), test_invalid_regex_tag());\
+ }while(0)
+#else
+#define TEST_INVALID_REGEX_W(s, f)
+#endif
+
+#define TEST_INVALID_REGEX(s, f)\
+ TEST_INVALID_REGEX_N(s, f);\
+ TEST_INVALID_REGEX_W(BOOST_JOIN(L, s), f)
+
+//
+// define macros for testing regex searches:
+//
+#define TEST_REGEX_SEARCH_N(s, f, t, m, a)\
+ do{\
+ const char e[] = { s };\
+ std::string se(e, sizeof(e) - 1);\
+ const char st[] = { t };\
+ std::string sst(st, sizeof(st) - 1);\
+ test_info<char>::set_info(__FILE__, __LINE__, se, f, sst, m, a);\
+ test(char(0), test_regex_search_tag());\
+ }while(0)
+
+#ifndef BOOST_NO_WREGEX
+#define TEST_REGEX_SEARCH_W(s, f, t, m, a)\
+ do{\
+ const wchar_t e[] = { s };\
+ std::wstring se(e, (sizeof(e) / sizeof(wchar_t)) - 1);\
+ const wchar_t st[] = { t };\
+ std::wstring sst(st, (sizeof(st) / sizeof(wchar_t)) - 1);\
+ test_info<wchar_t>::set_info(__FILE__, __LINE__, se, f, sst, m, a);\
+ test(wchar_t(0), test_regex_search_tag());\
+ }while(0)
+#else
+#define TEST_REGEX_SEARCH_W(s, f, t, m, a)
+#endif
+
+#define TEST_REGEX_SEARCH(s, f, t, m, a)\
+ TEST_REGEX_SEARCH_N(s, f, t, m, a);\
+ TEST_REGEX_SEARCH_W(BOOST_JOIN(L, s), f, BOOST_JOIN(L, t), m, a)
+
+#if (defined(__GNUC__) && (__GNUC__ == 3) && (__GNUC_MINOR__ >= 4))
+#define TEST_REGEX_SEARCH_L(s, f, t, m, a) TEST_REGEX_SEARCH_W(BOOST_JOIN(L, s), f, BOOST_JOIN(L, t), m, a)
+#else
+#define TEST_REGEX_SEARCH_L(s, f, t, m, a) TEST_REGEX_SEARCH(s, f, t, m, a)
+#endif
+
+//
+// define macros for testing regex replaces:
+//
+#define TEST_REGEX_REPLACE_N(s, f, t, m, fs, r)\
+ do{\
+ const char e[] = { s };\
+ std::string se(e, sizeof(e) - 1);\
+ const char st[] = { t };\
+ std::string sst(st, sizeof(st) - 1);\
+ const char ft[] = { fs };\
+ std::string sft(ft, sizeof(ft) - 1);\
+ const char rt[] = { r };\
+ std::string srt(rt, sizeof(rt) - 1);\
+ test_info<char>::set_info(__FILE__, __LINE__, se, f, sst, m, 0, sft, srt);\
+ test(char(0), test_regex_replace_tag());\
+ }while(0)
+
+#ifndef BOOST_NO_WREGEX
+#define TEST_REGEX_REPLACE_W(s, f, t, m, fs, r)\
+ do{\
+ const wchar_t e[] = { s };\
+ std::wstring se(e, (sizeof(e) / sizeof(wchar_t)) - 1);\
+ const wchar_t st[] = { t };\
+ std::wstring sst(st, (sizeof(st) / sizeof(wchar_t)) - 1);\
+ const wchar_t ft[] = { fs };\
+ std::wstring sft(ft, (sizeof(ft) / sizeof(wchar_t)) - 1);\
+ const wchar_t rt[] = { r };\
+ std::wstring srt(rt, (sizeof(rt) / sizeof(wchar_t)) - 1);\
+ test_info<wchar_t>::set_info(__FILE__, __LINE__, se, f, sst, m, 0, sft, srt);\
+ test(wchar_t(0), test_regex_replace_tag());\
+ }while(0)
+#else
+#define TEST_REGEX_REPLACE_W(s, f, t, m, fs, r)
+#endif
+
+#define TEST_REGEX_REPLACE(s, f, t, m, fs, r)\
+ TEST_REGEX_REPLACE_N(s, f, t, m, fs, r);\
+ TEST_REGEX_REPLACE_W(BOOST_JOIN(L, s), f, BOOST_JOIN(L, t), m, BOOST_JOIN(L, fs), BOOST_JOIN(L, r))
+
+//
+// define the test group proceedures:
+//
+void basic_tests();
+void test_simple_repeats();
+void test_alt();
+void test_sets();
+void test_sets2();
+void test_anchors();
+void test_backrefs();
+void test_character_escapes();
+void test_assertion_escapes();
+void test_tricky_cases();
+void test_grep();
+void test_replace();
+void test_non_greedy_repeats();
+void test_non_marking_paren();
+void test_partial_match();
+void test_forward_lookahead_asserts();
+void test_fast_repeats();
+void test_fast_repeats2();
+void test_tricky_cases2();
+void test_independent_subs();
+void test_nosubs();
+void test_conditionals();
+void test_options();
+void test_options2();
+void test_en_locale();
+void test_emacs();
+void test_operators();
+void test_overloads();
+void test_unicode();
+
+
+#endif
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_alt.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_alt.cpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,50 @@
+/*
+ *
+ * Copyright (c) 2004
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+#include "test.hpp"
+
+#ifdef BOOST_MSVC
+#pragma warning(disable:4127)
+#endif
+
+void test_alt()
+{
+ using namespace boost::regex_constants;
+ // now test the alternation operator |
+ TEST_REGEX_SEARCH("a|b", perl, "a", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("a|b", perl, "b", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("a|b|c", perl, "c", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("a|(b)|.", perl, "b", match_default, make_array(0, 1, 0, 1, -2, -2));
+ TEST_REGEX_SEARCH("(a)|b|.", perl, "a", match_default, make_array(0, 1, 0, 1, -2, -2));
+ TEST_REGEX_SEARCH("a(b|c)", perl, "ab", match_default, make_array(0, 2, 1, 2, -2, -2));
+ TEST_REGEX_SEARCH("a(b|c)", perl, "ac", match_default, make_array(0, 2, 1, 2, -2, -2));
+ TEST_REGEX_SEARCH("a(b|c)", perl, "ad", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("(a|b|c)", perl, "c", match_default, make_array(0, 1, 0, 1, -2, -2));
+ TEST_REGEX_SEARCH("(a|(b)|.)", perl, "b", match_default, make_array(0, 1, 0, 1, 0, 1, -2, -2));
+ TEST_INVALID_REGEX("|c", perl);
+ TEST_INVALID_REGEX("c|", perl);
+ TEST_INVALID_REGEX("(|)", perl);
+ TEST_INVALID_REGEX("(a|)", perl);
+ TEST_INVALID_REGEX("(|a)", perl);
+ TEST_REGEX_SEARCH("a\\|", perl, "a|", match_default, make_array(0, 2, -2, -2));
+
+ TEST_REGEX_SEARCH("a|", basic, "a|", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("a\\|", basic, "a|", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("|", basic, "|", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("a|", basic|bk_vbar, "a|", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("a\\|b", basic|bk_vbar, "a", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("a\\|b", basic|bk_vbar, "b", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("a\nb", grep, "b", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("a\nb", grep, "a", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("a\nb", egrep, "b", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("a\nb", egrep, "a", match_default, make_array(0, 1, -2, -2));
+}
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_anchors.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_anchors.cpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,67 @@
+/*
+ *
+ * Copyright (c) 2004
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+#include "test.hpp"
+
+#ifdef BOOST_MSVC
+#pragma warning(disable:4127)
+#endif
+
+void test_anchors()
+{
+ // line anchors:
+ using namespace boost::regex_constants;
+ TEST_REGEX_SEARCH("^ab", extended, "ab", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("^ab", extended, "xxabxx", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("^ab", extended, "xx\nabzz", match_default, make_array(3, 5, -2, -2));
+ TEST_REGEX_SEARCH("ab$", extended, "ab", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("ab$", extended, "abxx", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("ab$", extended, "ab\nzz", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("^ab", extended, "\n\n a", match_default, make_array(-2, -2));
+
+ TEST_REGEX_SEARCH("^ab", basic, "ab", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("^ab", basic, "xxabxx", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("^ab", basic, "xx\nabzz", match_default, make_array(3, 5, -2, -2));
+ TEST_REGEX_SEARCH("ab$", basic, "ab", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("ab$", basic, "abxx", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("ab$", basic, "ab\nzz", match_default, make_array(0, 2, -2, -2));
+
+ TEST_REGEX_SEARCH("^ab", extended, "ab", match_default | match_not_bol | match_not_eol, make_array(-2, -2));
+ TEST_REGEX_SEARCH("^ab", extended, "xxabxx", match_default | match_not_bol | match_not_eol, make_array(-2, -2));
+ TEST_REGEX_SEARCH("^ab", extended, "xx\nabzz", match_default | match_not_bol | match_not_eol, make_array(3, 5, -2, -2));
+ TEST_REGEX_SEARCH("ab$", extended, "ab", match_default | match_not_bol | match_not_eol, make_array(-2, -2));
+ TEST_REGEX_SEARCH("ab$", extended, "abxx", match_default | match_not_bol | match_not_eol, make_array(-2, -2));
+ TEST_REGEX_SEARCH("ab$", extended, "ab\nzz", match_default | match_not_bol | match_not_eol, make_array(0, 2, -2, -2));
+
+ TEST_REGEX_SEARCH("^ab", extended, "ab", match_default | match_single_line, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("^ab", extended, "xxabxx", match_default | match_single_line, make_array(-2, -2));
+ TEST_REGEX_SEARCH("^ab", extended, "xx\nabzz", match_default | match_single_line, make_array(-2, -2));
+ TEST_REGEX_SEARCH("ab$", extended, "ab", match_default | match_single_line, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("ab$", extended, "abxx", match_default | match_single_line, make_array(-2, -2));
+ TEST_REGEX_SEARCH("ab$", extended, "ab\nzz", match_default | match_single_line, make_array(-2, -2));
+
+ TEST_REGEX_SEARCH("^ab", extended, "ab", match_default | match_not_bol | match_not_eol | match_single_line, make_array(-2, -2));
+ TEST_REGEX_SEARCH("^ab", extended, "xxabxx", match_default | match_not_bol | match_not_eol | match_single_line, make_array(-2, -2));
+ TEST_REGEX_SEARCH("^ab", extended, "xx\nabzz", match_default | match_not_bol | match_not_eol | match_single_line, make_array(-2, -2));
+ TEST_REGEX_SEARCH("ab$", extended, "ab", match_default | match_not_bol | match_not_eol | match_single_line, make_array(-2, -2));
+ TEST_REGEX_SEARCH("ab$", extended, "abxx", match_default | match_not_bol | match_not_eol | match_single_line, make_array(-2, -2));
+ TEST_REGEX_SEARCH("ab$", extended, "ab\nzz", match_default | match_not_bol | match_not_eol | match_single_line, make_array(-2, -2));
+ //
+ // changes to newline handling with 2.11:
+ //
+ TEST_REGEX_SEARCH("^.", extended, " \n \r\n ", match_default, make_array(0, 1, -2, 3, 4, -2, 7, 8, -2, -2));
+ TEST_REGEX_SEARCH(".$", extended, " \n \r\n ", match_default, make_array(1, 2, -2, 4, 5, -2, 8, 9, -2, -2));
+#if !BOOST_WORKAROUND(__BORLANDC__, < 0x560)
+ TEST_REGEX_SEARCH_W(L"^.", extended, L"\x2028 \x2028", match_default, make_array(0, 1, -2, 1, 2, -2, -2));
+ TEST_REGEX_SEARCH_W(L".$", extended, L" \x2028 \x2028", match_default, make_array(0, 1, -2, 2, 3, -2, 3, 4, -2, -2));
+#endif
+}
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_asserts.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_asserts.cpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,72 @@
+/*
+ *
+ * Copyright (c) 2004
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+#include "test.hpp"
+
+#ifdef BOOST_MSVC
+#pragma warning(disable:4127)
+#endif
+
+void test_forward_lookahead_asserts()
+{
+ //
+ // forward lookahead asserts added 21/01/02
+ //
+ using namespace boost::regex_constants;
+ TEST_REGEX_SEARCH("((?:(?!a|b)\\w)+)(\\w+)", perl, " xxxabaxxx ", match_default, make_array(2, 11, 2, 5, 5, 11, -2, -2));
+ TEST_REGEX_SEARCH("/\\*(?:(?!\\*/).)*\\*/", perl, " /**/ ", match_default, make_array(2, 6, -2, -2));
+ TEST_REGEX_SEARCH("/\\*(?:(?!\\*/).)*\\*/", perl, " /***/ ", match_default, make_array(2, 7, -2, -2));
+ TEST_REGEX_SEARCH("/\\*(?:(?!\\*/).)*\\*/", perl, " /********/ ", match_default, make_array(2, 12, -2, -2));
+ TEST_REGEX_SEARCH("/\\*(?:(?!\\*/).)*\\*/", perl, " /* comment */ ", match_default, make_array(2, 15, -2, -2));
+ TEST_REGEX_SEARCH("<\\s*a[^>]*>((?:(?!<\\s*/\\s*a\\s*>).)*)<\\s*/\\s*a\\s*>", perl, " <a href=\"here\">here</a> ", match_default, make_array(1, 24, 16, 20, -2, -2));
+ TEST_REGEX_SEARCH("<\\s*a[^>]*>((?:(?!<\\s*/\\s*a\\s*>).)*)<\\s*/\\s*a\\s*>", perl, " <a href=\"here\">here< / a > ", match_default, make_array(1, 28, 16, 20, -2, -2));
+ TEST_REGEX_SEARCH("<\\s*a[^>]*>((?:(?!<\\s*/\\s*a\\s*>).)*)(?=<\\s*/\\s*a\\s*>)", perl, " <a href=\"here\">here</a> ", match_default, make_array(1, 20, 16, 20, -2, -2));
+ TEST_REGEX_SEARCH("<\\s*a[^>]*>((?:(?!<\\s*/\\s*a\\s*>).)*)(?=<\\s*/\\s*a\\s*>)", perl, " <a href=\"here\">here< / a > ", match_default, make_array(1, 20, 16, 20, -2, -2));
+ TEST_REGEX_SEARCH("^(?!^(?:PRN|AUX|CLOCK\\$|NUL|CON|COM\\d|LPT\\d|\\..*)(?:\\..+)?$)[^\\x00-\\x1f\\\\?*:\"|/]+$", perl, "command.com", match_default, make_array(0, 11, -2, -2));
+ TEST_REGEX_SEARCH("^(?!^(?:PRN|AUX|CLOCK\\$|NUL|CON|COM\\d|LPT\\d|\\..*)(?:\\..+)?$)[^\\x00-\\x1f\\\\?*:\"|/]+$", perl, "PRN", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("^(?!^(?:PRN|AUX|CLOCK\\$|NUL|CON|COM\\d|LPT\\d|\\..*)(?:\\..+)?$)[^\\x00-\\x1f\\\\?*:\"|/]+$", perl, "COM2", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("^(?=.*\\d).{4,8}$", perl, "abc3", match_default, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("^(?=.*\\d).{4,8}$", perl, "abc3def4", match_default, make_array(0, 8, -2, -2));
+ TEST_REGEX_SEARCH("^(?=.*\\d).{4,8}$", perl, "ab2", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("^(?=.*\\d).{4,8}$", perl, "abcdefg", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z]).{4,8}$", perl, "abc3", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z]).{4,8}$", perl, "abC3", match_default, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z]).{4,8}$", perl, "ABCD3", match_default, make_array(-2, -2));
+
+ // bug report test cases:
+ TEST_REGEX_SEARCH("(?=.{1,10}$).*.", perl, "AAAAA", match_default, make_array(0, 5, -2, -2));
+
+ // lookbehind assertions, added 2004-04-30
+ TEST_REGEX_SEARCH("/\\*.*(?<=\\*)/", perl, "/**/", match_default, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("/\\*.*(?<=\\*)/", perl, "/*****/ ", match_default, make_array(0, 7, -2, -2));
+ TEST_REGEX_SEARCH("(?<=['\"]).*?(?=['\"])", perl, " 'ac' ", match_default, make_array(2, 4, -2, -2));
+ TEST_REGEX_SEARCH("(?<=['\"]).*?(?=['\"])", perl, " \"ac\" ", match_default, make_array(2, 4, -2, -2));
+ TEST_REGEX_SEARCH("(?<=['\"]).*?(?<!\\\\)(?=['\"])", perl, " \"ac\" ", match_default, make_array(2, 4, -2, -2));
+ TEST_REGEX_SEARCH("(?<=['\"]).*?(?<!\\\\)(?=['\"])", perl, " \"ac\\\" \" ", match_default, make_array(2, 7, -2, -2));
+ // lookbehind, with nested lookahead! :
+ TEST_REGEX_SEARCH("/\\*.*(?<=(?=[[:punct:]])\\*)/", perl, "/**/", match_default, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("/\\*.*(?<=(?![[:alnum:]])\\*)/", perl, "/**/", match_default, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("/\\*.*(?<=(?>\\*))/", perl, "/**/", match_default, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("/\\*.*(?<=(?:\\*))/", perl, "/**/", match_default, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("/\\*.*(?<=(\\*))/", perl, "/**/", match_default, make_array(0, 4, 2, 3, -2, -2));
+ // lookbehind with invalid content:
+ TEST_INVALID_REGEX("(/)\\*.*(?<=\\1)/", perl);
+ TEST_INVALID_REGEX("/\\*.*(?<=\\*+)/", perl);
+ TEST_INVALID_REGEX("/\\*.*(?<=\\X)/", perl);
+ TEST_INVALID_REGEX("/\\*.*(?<=[[.ae.]])/", perl);
+
+ TEST_INVALID_REGEX("(?<=[abc]", perl);
+ TEST_INVALID_REGEX("(?<=", perl);
+ TEST_INVALID_REGEX("(?<", perl);
+ TEST_INVALID_REGEX("(?<*", perl);
+ TEST_INVALID_REGEX("(?", perl);
+}
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_backrefs.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_backrefs.cpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,59 @@
+/*
+ *
+ * Copyright (c) 2004
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+#include "test.hpp"
+
+#ifdef BOOST_MSVC
+#pragma warning(disable:4127)
+#endif
+
+void test_backrefs()
+{
+ using namespace boost::regex_constants;
+ TEST_INVALID_REGEX("a(b)\\2c", perl);
+ TEST_INVALID_REGEX("a(b\\1)c", perl);
+ TEST_REGEX_SEARCH("a(b*)c\\1d", perl, "abbcbbd", match_default, make_array(0, 7, 1, 3, -2, -2));
+ TEST_REGEX_SEARCH("a(b*)c\\1d", perl, "abbcbd", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("a(b*)c\\1d", perl, "abbcbbbd", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("^(.)\\1", perl, "abc", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("a([bc])\\1d", perl, "abcdabbd", match_default, make_array(4, 8, 5, 6, -2, -2));
+ TEST_REGEX_SEARCH("a\\([bc]\\)\\1d", basic, "abcdabbd", match_default, make_array(4, 8, 5, 6, -2, -2));
+ // strictly speaking this is at best ambiguous, at worst wrong, this is what most
+ // re implimentations will match though.
+ TEST_REGEX_SEARCH("a(([bc])\\2)*d", perl, "abbccd", match_default, make_array(0, 6, 3, 5, 3, 4, -2, -2));
+ TEST_REGEX_SEARCH("a(([bc])\\2)*d", perl, "abbcbd", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("a((b)*\\2)*d", perl, "abbbd", match_default, make_array(0, 5, 1, 4, 2, 3, -2, -2));
+ TEST_REGEX_SEARCH("(ab*)[ab]*\\1", perl, "ababaaa", match_default, make_array(0, 4, 0, 2, -2, 4, 7, 4, 5, -2, -2));
+ TEST_REGEX_SEARCH("(a)\\1bcd", perl, "aabcd", match_default, make_array(0, 5, 0, 1, -2, -2));
+ TEST_REGEX_SEARCH("(a)\\1bc*d", perl, "aabcd", match_default, make_array(0, 5, 0, 1, -2, -2));
+ TEST_REGEX_SEARCH("(a)\\1bc*d", perl, "aabd", match_default, make_array(0, 4, 0, 1, -2, -2));
+ TEST_REGEX_SEARCH("(a)\\1bc*d", perl, "aabcccd", match_default, make_array(0, 7, 0, 1, -2, -2));
+ TEST_REGEX_SEARCH("(a)\\1bc*[ce]d", perl, "aabcccd", match_default, make_array(0, 7, 0, 1, -2, -2));
+ TEST_REGEX_SEARCH("^(a)\\1b(c)*cd$", perl, "aabcccd", match_default, make_array(0, 7, 0, 1, 4, 5, -2, -2));
+ TEST_REGEX_SEARCH("a\\(b*\\)c\\1d", basic, "abbcbbd", match_default, make_array(0, 7, 1, 3, -2, -2));
+ TEST_REGEX_SEARCH("a\\(b*\\)c\\1d", basic, "abbcbd", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("a\\(b*\\)c\\1d", basic, "abbcbbbd", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("^\\(.\\)\\1", basic, "abc", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("a\\([bc]\\)\\1d", basic, "abcdabbd", match_default, make_array(4, 8, 5, 6, -2, -2));
+ // strictly speaking this is at best ambiguous, at worst wrong, this is what most
+ // re implimentations will match though.
+ TEST_REGEX_SEARCH("a\\(\\([bc]\\)\\2\\)*d", basic, "abbccd", match_default, make_array(0, 6, 3, 5, 3, 4, -2, -2));
+ TEST_REGEX_SEARCH("a\\(\\([bc]\\)\\2\\)*d", basic, "abbcbd", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("a\\(\\(b\\)*\\2\\)*d", basic, "abbbd", match_default, make_array(0, 5, 1, 4, 2, 3, -2, -2));
+ TEST_REGEX_SEARCH("\\(a\\)\\1bcd", basic, "aabcd", match_default, make_array(0, 5, 0, 1, -2, -2));
+ TEST_REGEX_SEARCH("\\(a\\)\\1bc*d", basic, "aabcd", match_default, make_array(0, 5, 0, 1, -2, -2));
+ TEST_REGEX_SEARCH("\\(a\\)\\1bc*d", basic, "aabd", match_default, make_array(0, 4, 0, 1, -2, -2));
+ TEST_REGEX_SEARCH("\\(a\\)\\1bc*d", basic, "aabcccd", match_default, make_array(0, 7, 0, 1, -2, -2));
+ TEST_REGEX_SEARCH("\\(a\\)\\1bc*[ce]d", basic, "aabcccd", match_default, make_array(0, 7, 0, 1, -2, -2));
+ TEST_REGEX_SEARCH("^\\(a\\)\\1b\\(c\\)*cd$", basic, "aabcccd", match_default, make_array(0, 7, 0, 1, 4, 5, -2, -2));
+ TEST_REGEX_SEARCH("\\(ab*\\)[ab]*\\1", basic, "ababaaa", match_default, make_array(0, 7, 0, 1, -2, -2));
+}
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_deprecated.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_deprecated.cpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,377 @@
+/*
+ *
+ * Copyright (c) 2004
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE test_deprecated.cpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Tests for deprecated interfaces.
+ */
+
+#include "test.hpp"
+#include <boost/cregex.hpp>
+
+#ifdef BOOST_MSVC
+#pragma warning(disable:4267)
+#endif
+
+#ifdef BOOST_NO_STDC_NAMESPACE
+namespace std{
+ using ::atoi;
+ using ::wcstol;
+}
+#endif
+
+int get_posix_compile_options(boost::regex_constants::syntax_option_type opts)
+{
+ using namespace boost;
+ int result = 0;
+ switch(opts & regbase::main_option_type)
+ {
+ case regbase::perl:
+ result = (opts & regbase::no_perl_ex) ? REG_EXTENDED : REG_PERL;
+ if(opts & (regbase::no_bk_refs|regbase::no_mod_m|regbase::mod_x|regbase::mod_s|regbase::no_mod_s|regbase::no_escape_in_lists))
+ return -1;
+ break;
+ case regbase::basic:
+ result = REG_BASIC;
+ if(opts & (regbase::no_char_classes|regbase::no_intervals|regbase::bk_plus_qm|regbase::bk_vbar))
+ return -1;
+ if((opts & regbase::no_escape_in_lists) == 0)
+ return -1;
+ break;
+ default:
+ return -1;
+ }
+
+ if(opts & regbase::icase)
+ result |= REG_ICASE;
+ if(opts & regbase::nosubs)
+ result |= REG_NOSUB;
+ if(opts & regbase::newline_alt)
+ result |= REG_NEWLINE;
+ if((opts & regbase::collate) == 0)
+ result |= REG_NOCOLLATE;
+
+ return result;
+}
+
+int get_posix_match_flags(boost::regex_constants::match_flag_type f)
+{
+ int result = 0;
+ if(f & boost::regex_constants::match_not_bol)
+ result |= boost::REG_NOTBOL;
+ if(f & boost::regex_constants::match_not_eol)
+ result |= boost::REG_NOTEOL;
+ if(f & ~(boost::regex_constants::match_not_bol|boost::regex_constants::match_not_eol))
+ return -1;
+ return result;
+}
+
+void test_deprecated(const char&, const test_regex_search_tag&)
+{
+ const std::string& expression = test_info<char>::expression();
+ if(expression.find('\0') != std::string::npos)
+ return;
+ const std::string& search_text = test_info<char>::search_text();
+ if(search_text.find('\0') != std::string::npos)
+ return;
+ int posix_options = get_posix_compile_options(test_info<char>::syntax_options());
+ if(posix_options < 0)
+ return;
+ int posix_match_options = get_posix_match_flags(test_info<char>::match_options());
+ if(posix_match_options < 0)
+ return;
+ const int* results = test_info<char>::answer_table();
+
+ // OK try and compile the expression:
+ boost::regex_tA re;
+ if(boost::regcompA(&re, expression.c_str(), posix_options) != 0)
+ {
+ BOOST_REGEX_TEST_ERROR("Expression : \"" << expression.c_str() << "\" did not compile with the POSIX C API.", char);
+ return;
+ }
+ // try and find the first occurance:
+ static const unsigned max_subs = 100;
+ boost::regmatch_t matches[max_subs];
+ if(boost::regexecA(&re, search_text.c_str(), max_subs, matches, posix_match_options) == 0)
+ {
+ int i = 0;
+ while(results[2*i] != -2)
+ {
+ if(max_subs > i)
+ {
+ if(results[2*i] != matches[i].rm_so)
+ {
+ BOOST_REGEX_TEST_ERROR("Mismatch in start of subexpression " << i << " found with the POSIX C API.", char);
+ }
+ if(results[2*i+1] != matches[i].rm_eo)
+ {
+ BOOST_REGEX_TEST_ERROR("Mismatch in end of subexpression " << i << " found with the POSIX C API.", char);
+ }
+ }
+ ++i;
+ }
+ }
+ else
+ {
+ if(results[0] >= 0)
+ {
+ BOOST_REGEX_TEST_ERROR("Expression : \"" << expression.c_str() << "\" was not found with the POSIX C API.", char);
+ }
+ }
+ // clean up whatever:
+ boost::regfreeA(&re);
+
+ //
+ // now try the RegEx class:
+ //
+ if(test_info<char>::syntax_options() & ~boost::regex::icase)
+ return;
+ try{
+ boost::RegEx e(expression, test_info<char>::syntax_options() & boost::regex::icase);
+ if(e.error_code())
+ {
+ BOOST_REGEX_TEST_ERROR("Expression did not compile when it should have done, error code = " << e.error_code(), char);
+ }
+ if(e.Search(search_text, test_info<char>::match_options()))
+ {
+ int i = 0;
+ while(results[i*2] != -2)
+ {
+ if(e.Matched(i))
+ {
+ if(results[2*i] != static_cast<int>(e.Position(i)))
+ {
+ BOOST_REGEX_TEST_ERROR("Mismatch in start of subexpression " << i << " found with the RegEx class (found " << e.Position(i) << " expected " << results[2*i] << ").", char);
+ }
+ if(results[2*i+1] != static_cast<int>(e.Position(i) + e.Length(i)))
+ {
+ BOOST_REGEX_TEST_ERROR("Mismatch in end of subexpression " << i << " found with the RegEx class (found " << e.Position(i) + e.Length(i) << " expected " << results[2*i+1] << ").", char);
+ }
+ }
+ else
+ {
+ if(results[2*i] >= 0)
+ {
+ BOOST_REGEX_TEST_ERROR("Mismatch in start of subexpression " << i << " found with the RegEx class (found " << e.Position(i) << " expected " << results[2*i] << ").", char);
+ }
+ if(results[2*i+1] >= 0)
+ {
+ BOOST_REGEX_TEST_ERROR("Mismatch in end of subexpression " << i << " found with the RegEx class (found " << e.Position(i) + e.Length(i) << " expected " << results[2*i+1] << ").", char);
+ }
+ }
+ ++i;
+ }
+ }
+ else
+ {
+ if(results[0] >= 0)
+ {
+ BOOST_REGEX_TEST_ERROR("Expression : \"" << expression.c_str() << "\" was not found with class RegEx.", char);
+ }
+ }
+ }
+ catch(const boost::bad_expression& r)
+ {
+ BOOST_REGEX_TEST_ERROR("Expression did not compile with RegEx class: " << r.what(), char);
+ }
+ catch(const std::runtime_error& r)
+ {
+ BOOST_REGEX_TEST_ERROR("Unexpected std::runtime_error : " << r.what(), char);
+ }
+ catch(const std::exception& r)
+ {
+ BOOST_REGEX_TEST_ERROR("Unexpected std::exception: " << r.what(), char);
+ }
+ catch(...)
+ {
+ BOOST_REGEX_TEST_ERROR("Unexpected exception of unknown type", char);
+ }
+
+}
+
+void test_deprecated(const wchar_t&, const test_regex_search_tag&)
+{
+#ifndef BOOST_NO_WREGEX
+ const std::wstring& expression = test_info<wchar_t>::expression();
+ if(expression.find(L'\0') != std::wstring::npos)
+ return;
+ const std::wstring& search_text = test_info<wchar_t>::search_text();
+ if(search_text.find(L'\0') != std::wstring::npos)
+ return;
+ int posix_options = get_posix_compile_options(test_info<wchar_t>::syntax_options());
+ if(posix_options < 0)
+ return;
+ int posix_match_options = get_posix_match_flags(test_info<wchar_t>::match_options());
+ if(posix_match_options < 0)
+ return;
+ const int* results = test_info<wchar_t>::answer_table();
+
+ // OK try and compile the expression:
+ boost::regex_tW re;
+ if(boost::regcompW(&re, expression.c_str(), posix_options) != 0)
+ {
+ BOOST_REGEX_TEST_ERROR("Expression : \"" << expression.c_str() << "\" did not compile with the POSIX C API.", wchar_t);
+ return;
+ }
+ // try and find the first occurance:
+ static const unsigned max_subs = 100;
+ boost::regmatch_t matches[max_subs];
+ if(boost::regexecW(&re, search_text.c_str(), max_subs, matches, posix_match_options) == 0)
+ {
+ int i = 0;
+ while(results[2*i] != -2)
+ {
+ if(max_subs > i)
+ {
+ if(results[2*i] != matches[i].rm_so)
+ {
+ BOOST_REGEX_TEST_ERROR("Mismatch in start of subexpression " << i << " found with the POSIX C API.", wchar_t);
+ }
+ if(results[2*i+1] != matches[i].rm_eo)
+ {
+ BOOST_REGEX_TEST_ERROR("Mismatch in end of subexpression " << i << " found with the POSIX C API.", wchar_t);
+ }
+ }
+ ++i;
+ }
+ }
+ else
+ {
+ if(results[0] >= 0)
+ {
+ BOOST_REGEX_TEST_ERROR("Expression : \"" << expression.c_str() << "\" was not found with the POSIX C API.", wchar_t);
+ }
+ }
+ // clean up whatever:
+ boost::regfreeW(&re);
+#endif
+}
+
+void test_deprecated(const char&, const test_invalid_regex_tag&)
+{
+ const std::string& expression = test_info<char>::expression();
+ if(expression.find('\0') != std::string::npos)
+ return;
+ int posix_options = get_posix_compile_options(test_info<char>::syntax_options());
+ if(posix_options < 0)
+ return;
+
+ // OK try and compile the expression:
+ boost::regex_tA re;
+ int code = boost::regcompA(&re, expression.c_str(), posix_options);
+ if(code == 0)
+ {
+ boost::regfreeA(&re);
+ BOOST_REGEX_TEST_ERROR("Expression : \"" << expression.c_str() << "\" unexpectedly compiled with the POSIX C API.", char);
+ }
+ else
+ {
+ char buf[100];
+ int s = boost::regerrorA(code, &re, 0, 0);
+ if(s < 100)
+ s = boost::regerrorA(code, &re, buf, 100);
+ s = boost::regerrorA(code | boost::REG_ITOA, &re, 0, 0);
+ if(s < 100)
+ {
+ s = boost::regerrorA(code | boost::REG_ITOA, &re, buf, 100);
+ re.re_endp = buf;
+ s = boost::regerrorA(code | boost::REG_ATOI, &re, buf, 100);
+ if(s)
+ {
+ int code2 = std::atoi(buf);
+ if(code2 != code)
+ {
+ BOOST_REGEX_TEST_ERROR("Got a bad error code from regerrA with REG_ATOI set: ", char);
+ }
+ }
+ }
+ }
+ //
+ // now try the RegEx class:
+ //
+ if(test_info<char>::syntax_options() & ~boost::regex::icase)
+ return;
+ bool have_catch = false;
+ try{
+ boost::RegEx e(expression, test_info<char>::syntax_options() & boost::regex::icase);
+ if(e.error_code())
+ have_catch = true;
+ }
+ catch(const boost::bad_expression&)
+ {
+ have_catch = true;
+ }
+ catch(const std::runtime_error& r)
+ {
+ have_catch = true;
+ BOOST_REGEX_TEST_ERROR("Expected a bad_expression exception, but a std::runtime_error instead: " << r.what(), char);
+ }
+ catch(const std::exception& r)
+ {
+ have_catch = true;
+ BOOST_REGEX_TEST_ERROR("Expected a bad_expression exception, but a std::exception instead: " << r.what(), char);
+ }
+ catch(...)
+ {
+ have_catch = true;
+ BOOST_REGEX_TEST_ERROR("Expected a bad_expression exception, but got an exception of unknown type instead", char);
+ }
+ if(!have_catch)
+ {
+ // oops expected exception was not thrown:
+ BOOST_REGEX_TEST_ERROR("Expected an exception, but didn't find one.", char);
+ }
+}
+
+void test_deprecated(const wchar_t&, const test_invalid_regex_tag&)
+{
+#ifndef BOOST_NO_WREGEX
+ const std::wstring& expression = test_info<wchar_t>::expression();
+ if(expression.find(L'\0') != std::string::npos)
+ return;
+ int posix_options = get_posix_compile_options(test_info<wchar_t>::syntax_options());
+ if(posix_options < 0)
+ return;
+
+ // OK try and compile the expression:
+ boost::regex_tW re;
+ int code = boost::regcompW(&re, expression.c_str(), posix_options);
+ if(code == 0)
+ {
+ boost::regfreeW(&re);
+ BOOST_REGEX_TEST_ERROR("Expression : \"" << expression.c_str() << "\" unexpectedly compiled with the POSIX C API.", wchar_t);
+ }
+ else
+ {
+ wchar_t buf[100];
+ int s = boost::regerrorW(code, &re, 0, 0);
+ if(s < 100)
+ s = boost::regerrorW(code, &re, buf, 100);
+ s = boost::regerrorW(code | boost::REG_ITOA, &re, 0, 0);
+ if(s < 100)
+ {
+ s = boost::regerrorW(code | boost::REG_ITOA, &re, buf, 100);
+ re.re_endp = buf;
+ s = boost::regerrorW(code | boost::REG_ATOI, &re, buf, 100);
+ if(s)
+ {
+ long code2 = std::wcstol(buf, 0, 10);
+ if(code2 != code)
+ {
+ BOOST_REGEX_TEST_ERROR("Got a bad error code from regerrW with REG_ATOI set: ", char);
+ }
+ }
+ }
+ }
+#endif
+}

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_deprecated.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_deprecated.hpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,35 @@
+/*
+ *
+ * Copyright (c) 1998-2004
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE test_deprecated.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Forward declare deprecated test functions.
+ */
+
+#ifndef BOOST_REGEX_TEST_DEPRECATED
+#define BOOST_REGEX_TEST_DEPRECATED
+
+template <class charT, class Tag>
+void test_deprecated(const charT&, const Tag&)
+{
+ // do nothing
+}
+
+void test_deprecated(const char&, const test_regex_search_tag&);
+void test_deprecated(const wchar_t&, const test_regex_search_tag&);
+void test_deprecated(const char&, const test_invalid_regex_tag&);
+void test_deprecated(const wchar_t&, const test_invalid_regex_tag&);
+
+
+#endif
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_emacs.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_emacs.cpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,166 @@
+/*
+ *
+ * Copyright (c) 2004
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+#include "test.hpp"
+
+#ifdef BOOST_MSVC
+#pragma warning(disable:4127)
+#endif
+
+void test_emacs2();
+
+void test_emacs()
+{
+ using namespace boost::regex_constants;
+ // now try operator + :
+ TEST_REGEX_SEARCH("ab+", emacs, "a", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("ab+", emacs, "ab", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("ab+", emacs, "sssabbbbbbsss", match_default, make_array(3, 10, -2, -2));
+ TEST_REGEX_SEARCH("ab+c+", emacs, "abbb", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("ab+c+", emacs, "accc", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("ab+c+", emacs, "abbcc", match_default, make_array(0, 5, -2, -2));
+ TEST_INVALID_REGEX("\\<+", emacs);
+ TEST_INVALID_REGEX("\\>+", emacs);
+ TEST_REGEX_SEARCH("\n+", emacs, "\n\n", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("\\+", emacs, "+", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("\\+", emacs, "++", match_default, make_array(0, 1, -2, 1, 2, -2, -2));
+ TEST_REGEX_SEARCH("\\++", emacs, "++", match_default, make_array(0, 2, -2, -2));
+
+ // now try operator ?
+ TEST_REGEX_SEARCH("a?", emacs, "b", match_default, make_array(0, 0, -2, 1, 1, -2, -2));
+ TEST_REGEX_SEARCH("ab?", emacs, "a", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("ab?", emacs, "ab", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("ab?", emacs, "sssabbbbbbsss", match_default, make_array(3, 5, -2, -2));
+ TEST_REGEX_SEARCH("ab?c?", emacs, "a", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("ab?c?", emacs, "abbb", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("ab?c?", emacs, "accc", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("ab?c?", emacs, "abcc", match_default, make_array(0, 3, -2, -2));
+ TEST_INVALID_REGEX("\\<?", emacs);
+ TEST_INVALID_REGEX("\\>?", emacs);
+ TEST_REGEX_SEARCH("\n?", emacs, "\n\n", match_default, make_array(0, 1, -2, 1, 2, -2, 2, 2, -2, -2));
+ TEST_REGEX_SEARCH("\\?", emacs, "?", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("\\?", emacs, "?", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("\\??", emacs, "??", match_default, make_array(0, 1, -2, 1, 2, -2, 2, 2, -2, -2));
+
+ TEST_REGEX_SEARCH("a*?", emacs, "aa", match_default, make_array(0, 0, -2, 0, 1, -2, 1, 1, -2, 1, 2, -2, 2, 2, -2, -2));
+ TEST_REGEX_SEARCH("^a*?$", emacs, "aa", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("^.*?$", emacs, "aa", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("^\\(a\\)*?$", emacs, "aa", match_default, make_array(0, 2, 1, 2, -2, -2));
+ TEST_REGEX_SEARCH("^[ab]*?$", emacs, "aa", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("a??", emacs, "aa", match_default, make_array(0, 0, -2, 0, 1, -2, 1, 1, -2, 1, 2, -2, 2, 2, -2, -2));
+ TEST_REGEX_SEARCH("a+?", emacs, "aa", match_default, make_array(0, 1, -2, 1, 2, -2, -2));
+ TEST_REGEX_SEARCH("a\\{1,3\\}?", emacs, "aaa", match_default, make_array(0, 1, -2, 1, 2, -2, 2, 3, -2, -2));
+ TEST_REGEX_SEARCH("\\w+?w", emacs, "...ccccccwcccccw", match_default, make_array(3, 10, -2, 10, 16, -2, -2));
+ TEST_REGEX_SEARCH("\\W+\\w+?w", emacs, "...ccccccwcccccw", match_default, make_array(0, 10, -2, -2));
+ TEST_REGEX_SEARCH("abc\\|\\w+?", emacs, "abd", match_default, make_array(0, 1, -2, 1, 2, -2, 2, 3, -2, -2));
+ TEST_REGEX_SEARCH("abc\\|\\w+?", emacs, "abcd", match_default, make_array(0, 3, -2, 3, 4, -2, -2));
+ TEST_REGEX_SEARCH("<\\ss*tag[^>]*>\\(.*?\\)<\\ss*/tag\\ss*>", emacs, " <tag>here is some text</tag> <tag></tag>", match_default, make_array(1, 29, 6, 23, -2, 30, 41, 35, 35, -2, -2));
+ TEST_REGEX_SEARCH("<\\ss*tag[^>]*>\\(.*?\\)<\\ss*/tag\\ss*>", emacs, " < tag attr=\"something\">here is some text< /tag > <tag></tag>", match_default, make_array(1, 49, 24, 41, -2, 50, 61, 55, 55, -2, -2));
+ TEST_INVALID_REGEX("a\\{1,3\\}\\{1\\}", emacs);
+ TEST_INVALID_REGEX("a**", emacs);
+ TEST_INVALID_REGEX("a++", emacs);
+
+ TEST_REGEX_SEARCH("\\<abcd", emacs, " abcd", match_default, make_array(2, 6, -2, -2));
+ TEST_REGEX_SEARCH("\\<ab", emacs, "cab", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("\\<ab", emacs, "\nab", match_default, make_array(1, 3, -2, -2));
+ TEST_REGEX_SEARCH("\\<tag", emacs, "::tag", match_default, make_array(2, 5, -2, -2));
+ TEST_REGEX_SEARCH("\\<abcd", emacs, "abcd", match_default|match_not_bow, make_array(-2, -2));
+ TEST_REGEX_SEARCH("\\<abcd", emacs, " abcd", match_default|match_not_bow, make_array(2, 6, -2, -2));
+ TEST_REGEX_SEARCH("\\<", emacs, "ab ", match_default|match_not_bow, make_array(-2, -2));
+ TEST_REGEX_SEARCH(".\\<.", emacs, "ab", match_default|match_not_bow, make_array(-2, -2));
+ TEST_REGEX_SEARCH(".\\<.", emacs, " b", match_default|match_not_bow, make_array(0, 2, -2, -2));
+ // word end:
+ TEST_REGEX_SEARCH("abc\\>", emacs, "abc", match_default, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("abc\\>", emacs, "abcd", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("abc\\>", emacs, "abc\n", match_default, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("abc\\>", emacs, "abc::", match_default, make_array(0,3, -2, -2));
+ TEST_REGEX_SEARCH("abc\\(?:\\>..\\|$\\)", emacs, "abc::", match_default, make_array(0, 5, -2, -2));
+ TEST_REGEX_SEARCH("\\>", emacs, " ", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH(".\\>.", emacs, " ", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("abc\\>", emacs, "abc", match_default|match_not_eow, make_array(-2, -2));
+ // word boundary:
+ TEST_REGEX_SEARCH("\\babcd", emacs, " abcd", match_default, make_array(2, 6, -2, -2));
+ TEST_REGEX_SEARCH("\\bab", emacs, "cab", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("\\bab", emacs, "\nab", match_default, make_array(1, 3, -2, -2));
+ TEST_REGEX_SEARCH("\\btag", emacs, "::tag", match_default, make_array(2, 5, -2, -2));
+ TEST_REGEX_SEARCH("abc\\b", emacs, "abc", match_default, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("abc\\b", emacs, "abcd", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("abc\\b", emacs, "abc\n", match_default, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("abc\\b", emacs, "abc::", match_default, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("\\babcd", emacs, "abcd", match_default|match_not_bow, make_array(-2, -2));
+ // within word:
+ TEST_REGEX_SEARCH("\\B", emacs, "ab", match_default, make_array(1, 1, -2, -2));
+ TEST_REGEX_SEARCH("a\\Bb", emacs, "ab", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("a\\B", emacs, "ab", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("a\\B", emacs, "a", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("a\\B", emacs, "a ", match_default, make_array(-2, -2));
+ // buffer operators:
+ TEST_REGEX_SEARCH("\\`abc", emacs, "abc", match_default, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("\\`abc", emacs, "\nabc", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("\\`abc", emacs, " abc", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("abc\\'", emacs, "abc", match_default, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("abc\\'", emacs, "abc\n", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("abc\\'", emacs, "abc ", match_default, make_array(-2, -2));
+
+ TEST_REGEX_SEARCH("a\\|b", emacs, "a", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("a\\|b", emacs, "b", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("a\\|b\\|c", emacs, "c", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("a\\|\\(b\\)\\|.", emacs, "b", match_default, make_array(0, 1, 0, 1, -2, -2));
+ TEST_REGEX_SEARCH("\\(a\\)\\|b\\|.", emacs, "a", match_default, make_array(0, 1, 0, 1, -2, -2));
+ TEST_REGEX_SEARCH("a\\(b\\|c\\)", emacs, "ab", match_default, make_array(0, 2, 1, 2, -2, -2));
+ TEST_REGEX_SEARCH("a\\(b\\|c\\)", emacs, "ac", match_default, make_array(0, 2, 1, 2, -2, -2));
+ TEST_REGEX_SEARCH("a\\(b\\|c\\)", emacs, "ad", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("\\(a\\|b\\|c\\)", emacs, "c", match_default, make_array(0, 1, 0, 1, -2, -2));
+ TEST_REGEX_SEARCH("\\(a\\|\\(b\\)\\|.\\)", emacs, "b", match_default, make_array(0, 1, 0, 1, 0, 1, -2, -2));
+ TEST_INVALID_REGEX("\\|c", emacs);
+ TEST_INVALID_REGEX("c\\|", emacs);
+ TEST_INVALID_REGEX("\\(\\|\\)", emacs);
+ TEST_INVALID_REGEX("\\(a\\|\\)", emacs);
+ TEST_INVALID_REGEX("\\(\\|a\\)", emacs);
+
+ TEST_REGEX_SEARCH("\\(?:abc\\)+", emacs, "xxabcabcxx", match_default, make_array(2, 8, -2, -2));
+ TEST_REGEX_SEARCH("\\(?:a+\\)\\(b+\\)", emacs, "xaaabbbx", match_default, make_array(1, 7, 4, 7, -2, -2));
+ TEST_REGEX_SEARCH("\\(a+\\)\\(?:b+\\)", emacs, "xaaabbba", match_default, make_array(1, 7, 1, 4, -2, -2));
+ TEST_REGEX_SEARCH("\\(?:\\(a+\\)b+\\)", emacs, "xaaabbba", match_default, make_array(1, 7, 1, 4, -2, -2));
+ TEST_REGEX_SEARCH("\\(?:a+\\(b+\\)\\)", emacs, "xaaabbba", match_default, make_array(1, 7, 4, 7, -2, -2));
+ TEST_REGEX_SEARCH("a+\\(?#b+\\)b+", emacs, "xaaabbba", match_default, make_array(1, 7, -2, -2));
+ TEST_REGEX_SEARCH("\\(a\\)\\(?:b\\|$\\)", emacs, "ab", match_default, make_array(0, 2, 0, 1, -2, -2));
+ TEST_REGEX_SEARCH("\\(a\\)\\(?:b\\|$\\)", emacs, "a", match_default, make_array(0, 1, 0, 1, -2, -2));
+ test_emacs2();
+}
+
+void test_emacs2()
+{
+ using namespace boost::regex_constants;
+
+
+ TEST_REGEX_SEARCH("\\ss+", emacs, "a b", match_default, make_array(1, 3, -2, -2));
+ TEST_REGEX_SEARCH("\\Ss+", emacs, " ab ", match_default, make_array(1, 3, -2, -2));
+ TEST_REGEX_SEARCH("\\sw+", emacs, " ab ", match_default, make_array(1, 3, -2, -2));
+ TEST_REGEX_SEARCH("\\Sw+", emacs, "a b", match_default, make_array(1, 3, -2, -2));
+ TEST_REGEX_SEARCH("\\s_+", emacs, " $&*+-_<> ", match_default, make_array(1, 9, -2, -2));
+ TEST_REGEX_SEARCH("\\S_+", emacs, "$&*+-_<>b", match_default, make_array(8, 9, -2, -2));
+ TEST_REGEX_SEARCH("\\s.+", emacs, " .,;!? ", match_default, make_array(1, 6, -2, -2));
+ TEST_REGEX_SEARCH("\\S.+", emacs, ".,;!?b", match_default, make_array(5, 6, -2, -2));
+ TEST_REGEX_SEARCH("\\s(+", emacs, "([{ ", match_default, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("\\S(+", emacs, "([{ ", match_default, make_array(3, 4, -2, -2));
+ TEST_REGEX_SEARCH("\\s)+", emacs, ")]} ", match_default, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("\\S)+", emacs, ")]} ", match_default, make_array(3, 4, -2, -2));
+ TEST_REGEX_SEARCH("\\s\"+", emacs, "\"'` ", match_default, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("\\S\"+", emacs, "\"'` ", match_default, make_array(3, 4, -2, -2));
+ TEST_REGEX_SEARCH("\\s'+", emacs, "',# ", match_default, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("\\S'+", emacs, "',# ", match_default, make_array(3, 4, -2, -2));
+ TEST_REGEX_SEARCH("\\s<+", emacs, "; ", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("\\S<+", emacs, "; ", match_default, make_array(1, 2, -2, -2));
+ TEST_REGEX_SEARCH("\\s>+", emacs, "\n\f ", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("\\S>+", emacs, "\n\f ", match_default, make_array(2, 3, -2, -2));
+}
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_escapes.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_escapes.cpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,145 @@
+/*
+ *
+ * Copyright (c) 2004
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+#include "test.hpp"
+
+#ifdef BOOST_MSVC
+#pragma warning(disable:4127)
+#endif
+
+void test_character_escapes()
+{
+ using namespace boost::regex_constants;
+ // characters by code
+ TEST_REGEX_SEARCH("\\0101", perl, "A", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("\\00", perl, "\0", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("\\0", perl, "\0", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("\\0172", perl, "z", match_default, make_array(0, 1, -2, -2));
+ // extra escape sequences:
+ TEST_REGEX_SEARCH("\\a", perl, "\a", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("\\f", perl, "\f", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("\\n", perl, "\n", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("\\r", perl, "\r", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("\\v", perl, "\v", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("\\t", perl, "\t", match_default, make_array(0, 1, -2, -2));
+
+ // updated tests for version 2:
+ TEST_REGEX_SEARCH("\\x41", perl, "A", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("\\xff", perl, "\xff", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("\\xFF", perl, "\xff", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("\\c@", perl, "\0", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("\\cA", perl, "\x1", match_default, make_array(0, 1, -2, -2));
+ //TEST_REGEX_SEARCH("\\cz", perl, "\x3A", match_default, make_array(0, 1, -2, -2));
+ //TEST_INVALID_REGEX("\\c=", extended);
+ //TEST_INVALID_REGEX("\\c?", extended);
+ TEST_REGEX_SEARCH("=:", perl, "=:", match_default, make_array(0, 2, -2, -2));
+
+ TEST_REGEX_SEARCH("\\e", perl, "\x1B", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("\\x1b", perl, "\x1B", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("\\x{1b}", perl, "\x1B", match_default, make_array(0, 1, -2, -2));
+ TEST_INVALID_REGEX("\\x{}", perl);
+ TEST_INVALID_REGEX("\\x{", perl);
+ TEST_INVALID_REGEX("\\", perl);
+ TEST_INVALID_REGEX("\\c", perl);
+ TEST_INVALID_REGEX("\\x}", perl);
+ TEST_INVALID_REGEX("\\x", perl);
+ TEST_INVALID_REGEX("\\x{yy", perl);
+ TEST_INVALID_REGEX("\\x{1b", perl);
+ // \Q...\E sequences:
+ TEST_INVALID_REGEX("\\Qabc\\", perl);
+ TEST_REGEX_SEARCH("\\Qabc\\E", perl, "abcd", match_default, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("\\Qabc\\Ed", perl, "abcde", match_default, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("\\Q+*?\\\\E", perl, "+*?\\", match_default, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("a\\Q+*?\\\\Eb", perl, "a+*?\\b", match_default, make_array(0, 6, -2, -2));
+ TEST_REGEX_SEARCH("\\C+", perl, "abcde", match_default, make_array(0, 5, -2, -2));
+ TEST_REGEX_SEARCH("\\X+", perl, "abcde", match_default, make_array(0, 5, -2, -2));
+#if !BOOST_WORKAROUND(__BORLANDC__, < 0x560)
+ TEST_REGEX_SEARCH_W(L"\\X", perl, L"a\x0300\x0301", match_default, make_array(0, 3, -2, -2));
+#endif
+ // unknown escape sequences match themselves:
+ TEST_REGEX_SEARCH("\\~", perl, "~", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("\\~", basic, "~", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("\\~", extended, "~", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("\\j", extended, "j", match_default, make_array(0, 1, -2, -2));
+}
+
+void test_assertion_escapes()
+{
+ using namespace boost::regex_constants;
+ // word start:
+ TEST_REGEX_SEARCH("\\<abcd", perl, " abcd", match_default, make_array(2, 6, -2, -2));
+ TEST_REGEX_SEARCH("\\<ab", perl, "cab", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("\\<ab", perl, "\nab", match_default, make_array(1, 3, -2, -2));
+ TEST_REGEX_SEARCH("\\<tag", perl, "::tag", match_default, make_array(2, 5, -2, -2));
+ TEST_REGEX_SEARCH("\\<abcd", perl, "abcd", match_default|match_not_bow, make_array(-2, -2));
+ TEST_REGEX_SEARCH("\\<abcd", perl, " abcd", match_default|match_not_bow, make_array(2, 6, -2, -2));
+ TEST_REGEX_SEARCH("\\<", perl, "ab ", match_default|match_not_bow, make_array(-2, -2));
+ TEST_REGEX_SEARCH(".\\<.", perl, "ab", match_default|match_not_bow, make_array(-2, -2));
+ TEST_REGEX_SEARCH(".\\<.", perl, " b", match_default|match_not_bow, make_array(0, 2, -2, -2));
+ // word end:
+ TEST_REGEX_SEARCH("abc\\>", perl, "abc", match_default, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("abc\\>", perl, "abcd", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("abc\\>", perl, "abc\n", match_default, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("abc\\>", perl, "abc::", match_default, make_array(0,3, -2, -2));
+ TEST_REGEX_SEARCH("abc(?:\\>..|$)", perl, "abc::", match_default, make_array(0, 5, -2, -2));
+ TEST_REGEX_SEARCH("\\>", perl, " ", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH(".\\>.", perl, " ", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("abc\\>", perl, "abc", match_default|match_not_eow, make_array(-2, -2));
+ // word boundary:
+ TEST_REGEX_SEARCH("\\babcd", perl, " abcd", match_default, make_array(2, 6, -2, -2));
+ TEST_REGEX_SEARCH("\\bab", perl, "cab", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("\\bab", perl, "\nab", match_default, make_array(1, 3, -2, -2));
+ TEST_REGEX_SEARCH("\\btag", perl, "::tag", match_default, make_array(2, 5, -2, -2));
+ TEST_REGEX_SEARCH("abc\\b", perl, "abc", match_default, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("abc\\b", perl, "abcd", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("abc\\b", perl, "abc\n", match_default, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("abc\\b", perl, "abc::", match_default, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("\\babcd", perl, "abcd", match_default|match_not_bow, make_array(-2, -2));
+ // within word:
+ TEST_REGEX_SEARCH("\\B", perl, "ab", match_default, make_array(1, 1, -2, -2));
+ TEST_REGEX_SEARCH("a\\Bb", perl, "ab", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("a\\B", perl, "ab", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("a\\B", perl, "a", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("a\\B", perl, "a ", match_default, make_array(-2, -2));
+ // buffer operators:
+ TEST_REGEX_SEARCH("\\`abc", perl, "abc", match_default, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("\\`abc", perl, "\nabc", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("\\`abc", perl, " abc", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("abc\\'", perl, "abc", match_default, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("abc\\'", perl, "abc\n", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("abc\\'", perl, "abc ", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("abc(?:\\'|$)", perl, "abc", match_default, make_array(0, 3, -2, -2));
+
+ // word start:
+ TEST_REGEX_SEARCH("[[:<:]]abcd", perl, " abcd", match_default, make_array(2, 6, -2, -2));
+ TEST_REGEX_SEARCH("[[:<:]]ab", perl, "cab", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("[[:<:]]ab", perl, "\nab", match_default, make_array(1, 3, -2, -2));
+ TEST_REGEX_SEARCH("[[:<:]]tag", perl, "::tag", match_default, make_array(2, 5, -2, -2));
+ // word end
+ TEST_REGEX_SEARCH("abc[[:>:]]", perl, "abc", match_default, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("abc[[:>:]]", perl, "abcd", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("abc[[:>:]]", perl, "abc\n", match_default, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("abc[[:>:]]", perl, "abc::", match_default, make_array(0, 3, -2, -2));
+
+ TEST_REGEX_SEARCH("\\Aabc", perl, "abc", match_default, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("\\Aabc", perl, "aabc", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("abc\\z", perl, "abc", match_default, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("abc\\z", perl, "abcd", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("abc\\Z", perl, "abc\n\n", match_default, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("abc\\Z", perl, "abc\n\n", match_default|match_not_eob, make_array(-2, -2));
+ TEST_REGEX_SEARCH("abc\\Z", perl, "abc", match_default, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("\\Gabc", perl, "abc", match_default, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("\\Gabc", perl, "dabcd", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("a\\Gbc", perl, "abc", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("a\\Aab", perl, "abc", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("abc(?:\\Z|$)", perl, "abc\n\n", match_default, make_array(0, 3, -2, -2));
+}
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_grep.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_grep.cpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,67 @@
+/*
+ *
+ * Copyright (c) 2004
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+#include "test.hpp"
+
+#ifdef BOOST_MSVC
+#pragma warning(disable:4127)
+#endif
+
+void test_grep()
+{
+ //
+ // now test grep,
+ // basically check all our restart types - line, word, etc
+ // checking each one for null and non-null matches.
+ //
+ using namespace boost::regex_constants;
+ TEST_REGEX_SEARCH("a", perl|nosubs, " a a a aa", match_default, make_array(1, 2, -2, 3, 4, -2, 5, 6, -2, 7, 8, -2, 8, 9, -2, -2));
+ TEST_REGEX_SEARCH("a+b+", perl|nosubs, "aabaabbb ab", match_default, make_array(0, 3, -2, 3, 8, -2, 9, 11, -2, -2));
+ TEST_REGEX_SEARCH("a(b*|c|e)d", perl|nosubs, "adabbdacd", match_default, make_array(0, 2, -2, 2, 6, -2, 6, 9, -2, -2));
+ TEST_REGEX_SEARCH("a", perl|nosubs, "\na\na\na\naa", match_default, make_array(1, 2, -2, 3, 4, -2, 5, 6, -2, 7, 8, -2, 8, 9, -2, -2));
+ TEST_REGEX_SEARCH("^", perl|nosubs, " \n\n \n\n\n", match_default, make_array(0, 0, -2, 4, 4, -2, 5, 5, -2, 8, 8, -2, 9, 9, -2, 10, 10, -2, -2));
+ TEST_REGEX_SEARCH("^ab", perl|nosubs, "ab \nab ab\n", match_default, make_array(0, 2, -2, 5, 7, -2, -2));
+ TEST_REGEX_SEARCH("^[^\\n]*\n", perl|nosubs, " \n \n\n \n", match_default, make_array(0, 4, -2, 4, 7, -2, 7, 8, -2, 8, 11, -2, -2));
+ TEST_REGEX_SEARCH("\\<abc", perl|nosubs, "abcabc abc\n\nabc", match_default, make_array(0, 3, -2, 7, 10, -2, 12, 15, -2, -2));
+ TEST_REGEX_SEARCH("\\<", perl|nosubs, " ab a aaa ", match_default, make_array(2, 2, -2, 5, 5, -2, 7, 7, -2, -2));
+ TEST_REGEX_SEARCH("\\<\\w+\\W+", perl|nosubs, " aa aa a ", match_default, make_array(1, 5, -2, 5, 9, -2, 9, 11, -2, -2));
+
+ TEST_REGEX_SEARCH("\\Aabc", perl|nosubs, "abc abc", match_default, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("\\G\\w+\\W+", perl|nosubs, "abc abc a cbbb ", match_default, make_array(0, 5, -2, 5, 9, -2, 9, 11, -2, 11, 18, -2, -2));
+ TEST_REGEX_SEARCH("\\Ga+b+", perl|nosubs, "aaababb abb", match_default, make_array(0, 4, -2, 4, 7, -2, -2));
+ TEST_REGEX_SEARCH("abc", perl|nosubs, "abc", match_default, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("abc", perl|nosubs, " abc abcabc", match_default, make_array(1, 4, -2, 5, 8, -2, 8, 11, -2, -2));
+ TEST_REGEX_SEARCH("\\n\\n", perl|nosubs, " \n\n\n \n \n\n\n\n ", match_default, make_array(1, 3, -2, 18, 20, -2, 20, 22, -2, -2));
+ TEST_REGEX_SEARCH("$", perl|nosubs, " \n\n \n\n\n", match_default, make_array(3, 3, -2, 4, 4, -2, 7, 7, -2, 8, 8, -2, 9, 9, -2, 10, 10, -2, -2));
+ TEST_REGEX_SEARCH("\\b", perl|nosubs, " abb a abbb ", match_default, make_array(2, 2, -2, 5, 5, -2, 6, 6, -2, 7, 7, -2, 8, 8, -2, 12, 12, -2, -2));
+ TEST_REGEX_SEARCH("A", perl|icase|nosubs, " a a a aa", match_default, make_array(1, 2, -2, 3, 4, -2, 5, 6, -2, 7, 8, -2, 8, 9, -2, -2));
+ TEST_REGEX_SEARCH("A+B+", perl|icase|nosubs, "aabaabbb ab", match_default, make_array(0, 3, -2, 3, 8, -2, 9, 11, -2, -2));
+ TEST_REGEX_SEARCH("A(B*|c|e)D", perl|icase|nosubs, "adabbdacd", match_default, make_array(0, 2, -2, 2, 6, -2, 6, 9, -2, -2));
+ TEST_REGEX_SEARCH("A", perl|icase|nosubs, "\na\na\na\naa", match_default, make_array(1, 2, -2, 3, 4, -2, 5, 6, -2, 7, 8, -2, 8, 9, -2, -2));
+ TEST_REGEX_SEARCH("^aB", perl|icase|nosubs, "Ab \nab Ab\n", match_default, make_array(0, 2, -2, 5, 7, -2, -2));
+ TEST_REGEX_SEARCH("\\<abc", perl|icase|nosubs, "Abcabc aBc\n\nabc", match_default, make_array(0, 3, -2, 7, 10, -2, 12, 15, -2, -2));
+ TEST_REGEX_SEARCH("ABC", perl|icase|nosubs, "abc", match_default, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("abc", perl|icase|nosubs, " ABC ABCABC ", match_default, make_array(1, 4, -2, 5, 8, -2, 8, 11, -2, -2));
+ TEST_REGEX_SEARCH("a|\\Ab", perl, "b ab", match_default, make_array(0, 1, -2, 2, 3, -2, -2));
+ TEST_REGEX_SEARCH("a|^b", perl, "b ab\nb", match_default, make_array(0, 1, -2, 2, 3, -2, 5, 6, -2, -2));
+ TEST_REGEX_SEARCH("a|\\<b", perl, "b ab\nb", match_default, make_array(0, 1, -2, 2, 3, -2, 5, 6, -2, -2));
+
+ TEST_REGEX_SEARCH("\\Aabc", perl, "abcabc", match_default, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("^abc", perl, "abcabc", match_default, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("\\<abc", perl, "abcabc", match_default, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("\\babc", perl, "abcabc", match_default, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("(?<=\\Aabc)?abc", perl, "abcabc", match_default, make_array(0, 3, -2, 3, 6, -2, -2));
+ TEST_REGEX_SEARCH("(?<=^abc)?abc", perl, "abcabc", match_default, make_array(0, 3, -2, 3, 6, -2, -2));
+ TEST_REGEX_SEARCH("(?<=\\<abc)?abc", perl, "abcabc", match_default, make_array(0, 3, -2, 3, 6, -2, -2));
+ TEST_REGEX_SEARCH("(?<=\\babc)?abc", perl, "abcabc", match_default, make_array(0, 3, -2, 3, 6, -2, -2));
+ TEST_REGEX_SEARCH("(?<=^).{2}|(?<=^.{3}).{2}", perl, "123456789", match_default, make_array(0, 2, -2, 3, 5, -2, -2));
+}
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_icu.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_icu.cpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,649 @@
+/*
+ *
+ * Copyright (c) 2004
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE test_icu.cpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Test code for Unicode regexes with ICU support.
+ */
+
+//
+// We can only build this if we have ICU support:
+//
+#include <boost/regex/config.hpp>
+#if defined(BOOST_HAS_ICU) && !defined(BOOST_NO_STD_WSTRING)
+
+#include <boost/regex/icu.hpp>
+#include "test.hpp"
+
+namespace unnecessary_fix{
+//
+// Some outrageously broken std lib's don't have a conforming
+// back_insert_iterator, which means we can't use the std version
+// as an argument to regex_replace, sigh... use our own:
+//
+template <class Seq>
+class back_insert_iterator
+#ifndef BOOST_NO_STD_ITERATOR
+ : public std::iterator<std::output_iterator_tag,void,void,void,void>
+#endif
+{
+private:
+ Seq* container;
+ typedef const typename Seq::value_type value_type;
+public:
+ typedef Seq container_type;
+ typedef std::output_iterator_tag iterator_category;
+
+ explicit back_insert_iterator(Seq& x) : container(&x) {}
+ back_insert_iterator& operator=(const value_type& val)
+ {
+ container->push_back(val);
+ return *this;
+ }
+ back_insert_iterator& operator*() { return *this; }
+ back_insert_iterator& operator++() { return *this; }
+ back_insert_iterator operator++(int) { return *this; }
+};
+
+template <class Seq>
+inline back_insert_iterator<Seq> back_inserter(Seq& x)
+{
+ return back_insert_iterator<Seq>(x);
+}
+
+}
+
+//
+// compare two match_results struct's for equality,
+// converting the iterator as needed:
+//
+template <class MR1, class MR2>
+void compare_result(const MR1& w1, const MR2& w2, boost::mpl::int_<2> const*)
+{
+ typedef typename MR2::value_type MR2_value_type;
+ typedef typename MR2_value_type::const_iterator MR2_iterator_type;
+ typedef boost::u16_to_u32_iterator<MR2_iterator_type> iterator_type;
+ typedef typename MR1::size_type size_type;
+ if(w1.size() != w2.size())
+ {
+ BOOST_REGEX_TEST_ERROR("Size mismatch in match_results class", UChar32);
+ }
+ for(int i = 0; i < (int)w1.size(); ++i)
+ {
+ if(w1[i].matched)
+ {
+ if(w2[i].matched == 0)
+ {
+ BOOST_REGEX_TEST_ERROR("Matched mismatch in match_results class", UChar32);
+ }
+ if((w1.position(i) != boost::re_detail::distance(iterator_type(w2.prefix().first), iterator_type(w2[i].first))) || (w1.length(i) != boost::re_detail::distance(iterator_type(w2[i].first), iterator_type(w2[i].second))))
+ {
+ BOOST_REGEX_TEST_ERROR("Iterator mismatch in match_results class", UChar32);
+ }
+ }
+ else if(w2[i].matched)
+ {
+ BOOST_REGEX_TEST_ERROR("Matched mismatch in match_results class", UChar32);
+ }
+ }
+}
+template <class MR1, class MR2>
+void compare_result(const MR1& w1, const MR2& w2, boost::mpl::int_<1> const*)
+{
+ typedef typename MR2::value_type MR2_value_type;
+ typedef typename MR2_value_type::const_iterator MR2_iterator_type;
+ typedef boost::u8_to_u32_iterator<MR2_iterator_type> iterator_type;
+ typedef typename MR1::size_type size_type;
+ if(w1.size() != w2.size())
+ {
+ BOOST_REGEX_TEST_ERROR("Size mismatch in match_results class", UChar32);
+ }
+ for(int i = 0; i < (int)w1.size(); ++i)
+ {
+ if(w1[i].matched)
+ {
+ if(w2[i].matched == 0)
+ {
+ BOOST_REGEX_TEST_ERROR("Matched mismatch in match_results class", UChar32);
+ }
+ if((w1.position(i) != boost::re_detail::distance(iterator_type(w2.prefix().first), iterator_type(w2[i].first))) || (w1.length(i) != boost::re_detail::distance(iterator_type(w2[i].first), iterator_type(w2[i].second))))
+ {
+ BOOST_REGEX_TEST_ERROR("Iterator mismatch in match_results class", UChar32);
+ }
+ }
+ else if(w2[i].matched)
+ {
+ BOOST_REGEX_TEST_ERROR("Matched mismatch in match_results class", UChar32);
+ }
+ }
+}
+
+void test_icu_grep(const boost::u32regex& r, const std::vector< ::UChar32>& search_text)
+{
+ typedef std::vector< ::UChar32>::const_iterator const_iterator;
+ typedef boost::u32regex_iterator<const_iterator> test_iterator;
+ boost::regex_constants::match_flag_type opts = test_info<wchar_t>::match_options();
+ const int* answer_table = test_info<wchar_t>::answer_table();
+ test_iterator start(search_text.begin(), search_text.end(), r, opts), end;
+ test_iterator copy(start);
+ const_iterator last_end = search_text.begin();
+ while(start != end)
+ {
+ if(start != copy)
+ {
+ BOOST_REGEX_TEST_ERROR("Failed iterator != comparison.", wchar_t);
+ }
+ if(!(start == copy))
+ {
+ BOOST_REGEX_TEST_ERROR("Failed iterator == comparison.", wchar_t);
+ }
+ test_result(*start, search_text.begin(), answer_table);
+ // test $` and $' :
+ if(start->prefix().first != last_end)
+ {
+ BOOST_REGEX_TEST_ERROR("Incorrect position for start of $`", wchar_t);
+ }
+ if(start->prefix().second != (*start)[0].first)
+ {
+ BOOST_REGEX_TEST_ERROR("Incorrect position for end of $`", wchar_t);
+ }
+ if(start->prefix().matched != (start->prefix().first != start->prefix().second))
+ {
+ BOOST_REGEX_TEST_ERROR("Incorrect position for matched member of $`", wchar_t);
+ }
+ if(start->suffix().first != (*start)[0].second)
+ {
+ BOOST_REGEX_TEST_ERROR("Incorrect position for start of $'", wchar_t);
+ }
+ if(start->suffix().second != search_text.end())
+ {
+ BOOST_REGEX_TEST_ERROR("Incorrect position for end of $'", wchar_t);
+ }
+ if(start->suffix().matched != (start->suffix().first != start->suffix().second))
+ {
+ BOOST_REGEX_TEST_ERROR("Incorrect position for matched member of $'", wchar_t);
+ }
+ last_end = (*start)[0].second;
+ ++start;
+ ++copy;
+ // move on the answer table to next set of answers;
+ if(*answer_table != -2)
+ while(*answer_table++ != -2){}
+ }
+ if(answer_table[0] >= 0)
+ {
+ // we should have had a match but didn't:
+ BOOST_REGEX_TEST_ERROR("Expected match was not found.", wchar_t);
+ }
+}
+
+void test_icu(const wchar_t&, const test_regex_search_tag& )
+{
+ boost::u32regex r;
+ if(*test_locale::c_str())
+ {
+ U_NAMESPACE_QUALIFIER Locale l(test_locale::c_str());
+ if(l.isBogus())
+ return;
+ r.imbue(l);
+ }
+
+ std::vector< ::UChar32> expression;
+#ifndef BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
+ expression.assign(test_info<wchar_t>::expression().begin(), test_info<wchar_t>::expression().end());
+#else
+ std::copy(test_info<wchar_t>::expression().begin(), test_info<wchar_t>::expression().end(), std::back_inserter(expression));
+#endif
+ boost::regex_constants::syntax_option_type syntax_options = test_info<UChar32>::syntax_options();
+ try{
+#if !defined(BOOST_NO_MEMBER_TEMPLATES) && !defined(__IBMCPP__)
+ r.assign(expression.begin(), expression.end(), syntax_options);
+#else
+ if(expression.size())
+ r.assign(&*expression.begin(), expression.size(), syntax_options);
+ else
+ r.assign(static_cast<UChar32 const*>(0), expression.size(), syntax_options);
+#endif
+ if(r.status())
+ {
+ BOOST_REGEX_TEST_ERROR("Expression did not compile when it should have done, error code = " << r.status(), UChar32);
+ }
+ std::vector< ::UChar32> search_text;
+#ifndef BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
+ search_text.assign(test_info<wchar_t>::search_text().begin(), test_info<wchar_t>::search_text().end());
+#else
+ std::copy(test_info<wchar_t>::search_text().begin(), test_info<wchar_t>::search_text().end(), std::back_inserter(search_text));
+#endif
+ boost::regex_constants::match_flag_type opts = test_info<wchar_t>::match_options();
+ const int* answer_table = test_info<wchar_t>::answer_table();
+ boost::match_results<std::vector< ::UChar32>::const_iterator> what;
+ if(boost::u32regex_search(
+ const_cast<std::vector< ::UChar32>const&>(search_text).begin(),
+ const_cast<std::vector< ::UChar32>const&>(search_text).end(),
+ what,
+ r,
+ opts))
+ {
+ test_result(what, const_cast<std::vector< ::UChar32>const&>(search_text).begin(), answer_table);
+ }
+ else if(answer_table[0] >= 0)
+ {
+ // we should have had a match but didn't:
+ BOOST_REGEX_TEST_ERROR("Expected match was not found.", UChar32);
+ }
+
+ if(0 == *test_locale::c_str())
+ {
+ //
+ // Now try UTF-16 construction:
+ //
+ typedef boost::u32_to_u16_iterator<std::vector<UChar32>::const_iterator> u16_conv;
+ std::vector<UChar> expression16, text16;
+ boost::match_results<std::vector<UChar>::const_iterator> what16;
+ boost::match_results<const UChar*> what16c;
+#ifndef BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
+ expression16.assign(u16_conv(expression.begin()), u16_conv(expression.end()));
+ text16.assign(u16_conv(search_text.begin()), u16_conv(search_text.end()));
+#else
+ expression16.clear();
+ std::copy(u16_conv(expression.begin()), u16_conv(expression.end()), std::back_inserter(expression16));
+ text16.clear();
+ std::copy(u16_conv(search_text.begin()), u16_conv(search_text.end()), std::back_inserter(text16));
+#endif
+ r = boost::make_u32regex(expression16.begin(), expression16.end(), syntax_options);
+ if(boost::u32regex_search(const_cast<const std::vector<UChar>&>(text16).begin(), const_cast<const std::vector<UChar>&>(text16).end(), what16, r, opts))
+ {
+ compare_result(what, what16, static_cast<boost::mpl::int_<2> const*>(0));
+ }
+ else if(answer_table[0] >= 0)
+ {
+ // we should have had a match but didn't:
+ BOOST_REGEX_TEST_ERROR("Expected match was not found.", UChar32);
+ }
+ if(std::find(expression16.begin(), expression16.end(), 0) == expression16.end())
+ {
+ expression16.push_back(0);
+ r = boost::make_u32regex(&*expression16.begin(), syntax_options);
+ if(std::find(text16.begin(), text16.end(), 0) == text16.end())
+ {
+ text16.push_back(0);
+ if(boost::u32regex_search((const UChar*)&*text16.begin(), what16c, r, opts))
+ {
+ compare_result(what, what16c, static_cast<boost::mpl::int_<2> const*>(0));
+ }
+ else if(answer_table[0] >= 0)
+ {
+ // we should have had a match but didn't:
+ BOOST_REGEX_TEST_ERROR("Expected match was not found.", UChar32);
+ }
+ }
+ }
+ //
+ // Now try UTF-8 construction:
+ //
+ typedef boost::u32_to_u8_iterator<std::vector<UChar32>::const_iterator, unsigned char> u8_conv;
+ std::vector<unsigned char> expression8, text8;
+ boost::match_results<std::vector<unsigned char>::const_iterator> what8;
+ boost::match_results<const unsigned char*> what8c;
+#ifndef BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
+ expression8.assign(u8_conv(expression.begin()), u8_conv(expression.end()));
+ text8.assign(u8_conv(search_text.begin()), u8_conv(search_text.end()));
+#else
+ expression8.clear();
+ std::copy(u8_conv(expression.begin()), u8_conv(expression.end()), std::back_inserter(expression8));
+ text8.clear();
+ std::copy(u8_conv(search_text.begin()), u8_conv(search_text.end()), std::back_inserter(text8));
+#endif
+ r = boost::make_u32regex(expression8.begin(), expression8.end(), syntax_options);
+ if(boost::u32regex_search(const_cast<const std::vector<unsigned char>&>(text8).begin(), const_cast<const std::vector<unsigned char>&>(text8).end(), what8, r, opts))
+ {
+ compare_result(what, what8, static_cast<boost::mpl::int_<1> const*>(0));
+ }
+ else if(answer_table[0] >= 0)
+ {
+ // we should have had a match but didn't:
+ BOOST_REGEX_TEST_ERROR("Expected match was not found.", UChar32);
+ }
+ if(std::find(expression8.begin(), expression8.end(), 0) == expression8.end())
+ {
+ expression8.push_back(0);
+ r = boost::make_u32regex(&*expression8.begin(), syntax_options);
+ if(std::find(text8.begin(), text8.end(), 0) == text8.end())
+ {
+ text8.push_back(0);
+ if(boost::u32regex_search((const unsigned char*)&*text8.begin(), what8c, r, opts))
+ {
+ compare_result(what, what8c, static_cast<boost::mpl::int_<1> const*>(0));
+ }
+ else if(answer_table[0] >= 0)
+ {
+ // we should have had a match but didn't:
+ BOOST_REGEX_TEST_ERROR("Expected match was not found.", UChar32);
+ }
+ }
+ }
+ }
+ //
+ // finally try a grep:
+ //
+ test_icu_grep(r, search_text);
+ }
+ catch(const boost::bad_expression& e)
+ {
+ BOOST_REGEX_TEST_ERROR("Expression did not compile when it should have done: " << e.what(), UChar32);
+ }
+ catch(const std::runtime_error& r)
+ {
+ BOOST_REGEX_TEST_ERROR("Received an unexpected std::runtime_error: " << r.what(), UChar32);
+ }
+ catch(const std::exception& r)
+ {
+ BOOST_REGEX_TEST_ERROR("Received an unexpected std::exception: " << r.what(), UChar32);
+ }
+ catch(...)
+ {
+ BOOST_REGEX_TEST_ERROR("Received an unexpected exception of unknown type", UChar32);
+ }
+}
+
+void test_icu(const wchar_t&, const test_invalid_regex_tag&)
+{
+ typedef boost::u16_to_u32_iterator<std::wstring::const_iterator, ::UChar32> conv_iterator;
+ std::vector< ::UChar32> expression;
+#ifndef BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
+ expression.assign(test_info<wchar_t>::expression().begin(), test_info<wchar_t>::expression().end());
+#else
+ std::copy(test_info<wchar_t>::expression().begin(), test_info<wchar_t>::expression().end(), std::back_inserter(expression));
+#endif
+ boost::regex_constants::syntax_option_type syntax_options = test_info<wchar_t>::syntax_options();
+ boost::u32regex r;
+ if(*test_locale::c_str())
+ {
+ U_NAMESPACE_QUALIFIER Locale l(test_locale::c_str());
+ if(l.isBogus())
+ return;
+ r.imbue(l);
+ }
+ //
+ // try it with exceptions disabled first:
+ //
+ try
+ {
+#if !defined(BOOST_NO_MEMBER_TEMPLATES) && !defined(__IBMCPP__)
+ if(0 == r.assign(expression.begin(), expression.end(), syntax_options | boost::regex_constants::no_except).status())
+#else
+ if(expression.size())
+ r.assign(&*expression.begin(), expression.size(), syntax_options | boost::regex_constants::no_except);
+ else
+ r.assign(static_cast<UChar32 const*>(0), static_cast<boost::u32regex::size_type>(0), syntax_options | boost::regex_constants::no_except);
+ if(0 == r.status())
+#endif
+ {
+ BOOST_REGEX_TEST_ERROR("Expression compiled when it should not have done so.", wchar_t);
+ }
+ }
+ catch(...)
+ {
+ BOOST_REGEX_TEST_ERROR("Unexpected exception thrown.", wchar_t);
+ }
+ //
+ // now try again with exceptions:
+ //
+ bool have_catch = false;
+ try{
+#if !defined(BOOST_NO_MEMBER_TEMPLATES) && !defined(__IBMCPP__)
+ r.assign(expression.begin(), expression.end(), syntax_options);
+#else
+ if(expression.size())
+ r.assign(&*expression.begin(), expression.size(), syntax_options);
+ else
+ r.assign(static_cast<UChar32 const*>(0), static_cast<boost::u32regex::size_type>(0), syntax_options);
+#endif
+#ifdef BOOST_NO_EXCEPTIONS
+ if(r.status())
+ have_catch = true;
+#endif
+ }
+ catch(const boost::bad_expression&)
+ {
+ have_catch = true;
+ }
+ catch(const std::runtime_error& r)
+ {
+ have_catch = true;
+ BOOST_REGEX_TEST_ERROR("Expected a bad_expression exception, but a std::runtime_error instead: " << r.what(), wchar_t);
+ }
+ catch(const std::exception& r)
+ {
+ have_catch = true;
+ BOOST_REGEX_TEST_ERROR("Expected a bad_expression exception, but a std::exception instead: " << r.what(), wchar_t);
+ }
+ catch(...)
+ {
+ have_catch = true;
+ BOOST_REGEX_TEST_ERROR("Expected a bad_expression exception, but got an exception of unknown type instead", wchar_t);
+ }
+ if(!have_catch)
+ {
+ // oops expected exception was not thrown:
+ BOOST_REGEX_TEST_ERROR("Expected an exception, but didn't find one.", wchar_t);
+ }
+
+ if(0 == *test_locale::c_str())
+ {
+ //
+ // Now try UTF-16 construction:
+ //
+ typedef boost::u32_to_u16_iterator<std::vector<UChar32>::const_iterator> u16_conv;
+ std::vector<UChar> expression16;
+#ifndef BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
+ expression16.assign(u16_conv(expression.begin()), u16_conv(expression.end()));
+#else
+ std::copy(u16_conv(expression.begin()), u16_conv(expression.end()), std::back_inserter(expression16));
+#endif
+ if(0 == boost::make_u32regex(expression16.begin(), expression16.end(), syntax_options | boost::regex_constants::no_except).status())
+ {
+ BOOST_REGEX_TEST_ERROR("Expression compiled when it should not have done so.", wchar_t);
+ }
+ if(std::find(expression16.begin(), expression16.end(), 0) == expression16.end())
+ {
+ expression16.push_back(0);
+ if(0 == boost::make_u32regex(&*expression16.begin(), syntax_options | boost::regex_constants::no_except).status())
+ {
+ BOOST_REGEX_TEST_ERROR("Expression compiled when it should not have done so.", wchar_t);
+ }
+ }
+ //
+ // Now try UTF-8 construction:
+ //
+ typedef boost::u32_to_u8_iterator<std::vector<UChar32>::const_iterator> u8_conv;
+ std::vector<unsigned char> expression8;
+#ifndef BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
+ expression8.assign(u8_conv(expression.begin()), u8_conv(expression.end()));
+#else
+ std::copy(u8_conv(expression.begin()), u8_conv(expression.end()), std::back_inserter(expression8));
+#endif
+ if(0 == boost::make_u32regex(expression8.begin(), expression8.end(), syntax_options | boost::regex_constants::no_except).status())
+ {
+ BOOST_REGEX_TEST_ERROR("Expression compiled when it should not have done so.", wchar_t);
+ }
+ if(std::find(expression8.begin(), expression8.end(), 0) == expression8.end())
+ {
+ expression8.push_back(0);
+ if(0 == boost::make_u32regex(&*expression8.begin(), syntax_options | boost::regex_constants::no_except).status())
+ {
+ BOOST_REGEX_TEST_ERROR("Expression compiled when it should not have done so.", wchar_t);
+ }
+ }
+ }
+}
+
+void test_icu(const wchar_t&, const test_regex_replace_tag&)
+{
+ std::vector< ::UChar32> expression;
+#ifndef BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
+ expression.assign(test_info<wchar_t>::expression().begin(), test_info<wchar_t>::expression().end());
+#else
+ std::copy(test_info<wchar_t>::expression().begin(), test_info<wchar_t>::expression().end(), std::back_inserter(expression));
+#endif
+ boost::regex_constants::syntax_option_type syntax_options = test_info<UChar32>::syntax_options();
+ boost::u32regex r;
+ try{
+#if !defined(BOOST_NO_MEMBER_TEMPLATES) && !defined(__IBMCPP__)
+ r.assign(expression.begin(), expression.end(), syntax_options);
+#else
+ if(expression.size())
+ r.assign(&*expression.begin(), expression.size(), syntax_options);
+ else
+ r.assign(static_cast<UChar32 const*>(0), static_cast<boost::u32regex::size_type>(0), syntax_options);
+#endif
+ if(r.status())
+ {
+ BOOST_REGEX_TEST_ERROR("Expression did not compile when it should have done, error code = " << r.status(), UChar32);
+ }
+ typedef std::vector<UChar32> string_type;
+ string_type search_text;
+ boost::regex_constants::match_flag_type opts = test_info<UChar32>::match_options();
+ string_type format_string;
+ string_type result_string;
+#ifndef BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
+ search_text.assign(test_info<UChar32>::search_text().begin(), test_info<UChar32>::search_text().end());
+ format_string.assign(test_info<UChar32>::format_string().begin(), test_info<UChar32>::format_string().end());
+ format_string.push_back(0);
+ result_string.assign(test_info<UChar32>::result_string().begin(), test_info<UChar32>::result_string().end());
+#else
+ std::copy(test_info<UChar32>::search_text().begin(), test_info<UChar32>::search_text().end(), std::back_inserter(search_text));
+ std::copy(test_info<UChar32>::format_string().begin(), test_info<UChar32>::format_string().end(), std::back_inserter(format_string));
+ format_string.push_back(0);
+ std::copy(test_info<UChar32>::result_string().begin(), test_info<UChar32>::result_string().end(), std::back_inserter(result_string));
+#endif
+ string_type result;
+
+ boost::u32regex_replace(unnecessary_fix::back_inserter(result), search_text.begin(), search_text.end(), r, &*format_string.begin(), opts);
+ if(result != result_string)
+ {
+ BOOST_REGEX_TEST_ERROR("regex_replace generated an incorrect string result", UChar32);
+ }
+ //
+ // Mixed mode character encoding:
+ //
+ if(0 == *test_locale::c_str())
+ {
+ //
+ // Now try UTF-16 construction:
+ //
+ typedef boost::u32_to_u16_iterator<std::vector<UChar32>::const_iterator> u16_conv;
+ std::vector<UChar> expression16, text16, format16, result16, found16;
+#ifndef BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
+ expression16.assign(u16_conv(expression.begin()), u16_conv(expression.end()));
+ text16.assign(u16_conv(search_text.begin()), u16_conv(search_text.end()));
+ format16.assign(u16_conv(format_string.begin()), u16_conv(format_string.end()));
+ result16.assign(u16_conv(result_string.begin()), u16_conv(result_string.end()));
+#else
+ std::copy(u16_conv(expression.begin()), u16_conv(expression.end()), std::back_inserter(expression16));
+ std::copy(u16_conv(search_text.begin()), u16_conv(search_text.end()), std::back_inserter(text16));
+ std::copy(u16_conv(format_string.begin()), u16_conv(format_string.end()), std::back_inserter(format16));
+ std::copy(u16_conv(result_string.begin()), u16_conv(result_string.end()), std::back_inserter(result16));
+#endif
+ r = boost::make_u32regex(expression16.begin(), expression16.end(), syntax_options);
+ boost::u32regex_replace(unnecessary_fix::back_inserter(found16), text16.begin(), text16.end(), r, &*format16.begin(), opts);
+ if(result16 != found16)
+ {
+ BOOST_REGEX_TEST_ERROR("u32regex_replace with UTF-16 string returned incorrect result", UChar32);
+ }
+ //
+ // Now with UnicodeString:
+ //
+ UnicodeString expression16u, text16u, format16u, result16u, found16u;
+ if(expression16.size())
+ expression16u.setTo(&*expression16.begin(), expression16.size());
+ if(text16.size())
+ text16u.setTo(&*text16.begin(), text16.size());
+ format16u.setTo(&*format16.begin(), format16.size()-1);
+ if(result16.size())
+ result16u.setTo(&*result16.begin(), result16.size());
+ r = boost::make_u32regex(expression16.begin(), expression16.end(), syntax_options);
+ found16u = boost::u32regex_replace(text16u, r, format16u, opts);
+ if(result16u != found16u)
+ {
+ BOOST_REGEX_TEST_ERROR("u32regex_replace with UTF-16 string returned incorrect result", UChar32);
+ }
+
+ //
+ // Now try UTF-8 construction:
+ //
+ typedef boost::u32_to_u8_iterator<std::vector<UChar32>::const_iterator, unsigned char> u8_conv;
+ std::vector<char> expression8, text8, format8, result8, found8;
+#ifndef BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
+ expression8.assign(u8_conv(expression.begin()), u8_conv(expression.end()));
+ text8.assign(u8_conv(search_text.begin()), u8_conv(search_text.end()));
+ format8.assign(u8_conv(format_string.begin()), u8_conv(format_string.end()));
+ result8.assign(u8_conv(result_string.begin()), u8_conv(result_string.end()));
+#else
+ std::copy(u8_conv(expression.begin()), u8_conv(expression.end()), std::back_inserter(expression8));
+ std::copy(u8_conv(search_text.begin()), u8_conv(search_text.end()), std::back_inserter(text8));
+ std::copy(u8_conv(format_string.begin()), u8_conv(format_string.end()), std::back_inserter(format8));
+ std::copy(u8_conv(result_string.begin()), u8_conv(result_string.end()), std::back_inserter(result8));
+#endif
+ r = boost::make_u32regex(expression8.begin(), expression8.end(), syntax_options);
+ boost::u32regex_replace(unnecessary_fix::back_inserter(found8), text8.begin(), text8.end(), r, &*format8.begin(), opts);
+ if(result8 != found8)
+ {
+ BOOST_REGEX_TEST_ERROR("u32regex_replace with UTF-8 string returned incorrect result", UChar32);
+ }
+ //
+ // Now with std::string and UTF-8:
+ //
+ std::string expression8s, text8s, format8s, result8s, found8s;
+ if(expression8.size())
+ expression8s.assign(&*expression8.begin(), expression8.size());
+ if(text8.size())
+ text8s.assign(&*text8.begin(), text8.size());
+ format8s.assign(&*format8.begin(), format8.size()-1);
+ if(result8.size())
+ result8s.assign(&*result8.begin(), result8.size());
+ r = boost::make_u32regex(expression8.begin(), expression8.end(), syntax_options);
+ found8s = boost::u32regex_replace(text8s, r, format8s, opts);
+ if(result8s != found8s)
+ {
+ BOOST_REGEX_TEST_ERROR("u32regex_replace with UTF-8 string returned incorrect result", UChar32);
+ }
+ }
+ }
+ catch(const boost::bad_expression& e)
+ {
+ BOOST_REGEX_TEST_ERROR("Expression did not compile when it should have done: " << e.what(), UChar32);
+ }
+ catch(const std::runtime_error& r)
+ {
+ BOOST_REGEX_TEST_ERROR("Received an unexpected std::runtime_error: " << r.what(), UChar32);
+ }
+ catch(const std::exception& r)
+ {
+ BOOST_REGEX_TEST_ERROR("Received an unexpected std::exception: " << r.what(), UChar32);
+ }
+ catch(...)
+ {
+ BOOST_REGEX_TEST_ERROR("Received an unexpected exception of unknown type", UChar32);
+ }
+}
+
+#else
+
+#include "test.hpp"
+
+void test_icu(const wchar_t&, const test_regex_search_tag&){}
+void test_icu(const wchar_t&, const test_invalid_regex_tag&){}
+void test_icu(const wchar_t&, const test_regex_replace_tag&){}
+
+#endif

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_icu.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_icu.hpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,33 @@
+/*
+ *
+ * Copyright (c) 2004
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE test_icu.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: MFC/ATL test handlers.
+ */
+
+#ifndef TEST_ICU_HPP
+#define TEST_ICU_HPP
+
+template <class charT, class Tag>
+void test_icu(const charT&, const Tag&)
+{
+ // do nothing
+}
+
+void test_icu(const wchar_t&, const test_regex_search_tag&);
+void test_icu(const wchar_t&, const test_invalid_regex_tag&);
+void test_icu(const wchar_t&, const test_regex_replace_tag&);
+
+
+#endif

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_locale.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_locale.cpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,166 @@
+/*
+ *
+ * Copyright (c) 2004
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+#include "test.hpp"
+#include <clocale>
+#if defined(BOOST_WINDOWS) && !defined(BOOST_DISABLE_WIN32)
+#include <boost/scoped_array.hpp>
+#include <windows.h>
+#endif
+
+#ifdef BOOST_MSVC
+#pragma warning(disable:4127)
+#endif
+
+#ifdef BOOST_NO_STDC_NAMESPACE
+namespace std{ using ::setlocale; }
+#endif
+
+test_locale::test_locale(const char* c_name, boost::uint32_t lcid)
+{
+ // store the name:
+ m_old_name = m_name;
+ m_name = c_name;
+ // back up C locale and then set it's new name:
+ const char* pl = std::setlocale(LC_ALL, 0);
+ m_old_c_locale = pl ? pl : "";
+ m_old_c_state = s_c_locale;
+ if(std::setlocale(LC_ALL, c_name))
+ {
+ s_c_locale = test_with_locale;
+ std::cout << "Testing the global C locale: " << c_name << std::endl;
+ }
+ else
+ {
+ s_c_locale = no_test;
+ std::cout << "The global C locale: " << c_name << " is not available and will not be tested." << std::endl;
+ }
+#ifndef BOOST_NO_STD_LOCALE
+ // back up the C++ locale and create the new one:
+ m_old_cpp_locale = s_cpp_locale_inst;
+ m_old_cpp_state = s_cpp_locale;
+ try{
+ s_cpp_locale_inst = std::locale(c_name);
+ s_cpp_locale = test_with_locale;
+ std::cout << "Testing the C++ locale: " << c_name << std::endl;
+ }catch(std::runtime_error const &)
+ {
+ s_cpp_locale = no_test;
+ std::cout << "The C++ locale: " << c_name << " is not available and will not be tested." << std::endl;
+ }
+#else
+ s_cpp_locale = no_test;
+#endif
+
+ // back up win locale and create the new one:
+ m_old_win_locale = s_win_locale_inst;
+ m_old_win_state = s_win_locale;
+ s_win_locale_inst = lcid;
+#if defined(BOOST_WINDOWS) && !defined(BOOST_DISABLE_WIN32)
+ //
+ // Start by geting the printable name of the locale.
+ // We use this for debugging purposes only:
+ //
+ boost::scoped_array<char> p;
+ int r = ::GetLocaleInfoA(
+ lcid, // locale identifier
+ LOCALE_SCOUNTRY, // information type
+ 0, // information buffer
+ 0 // size of buffer
+ );
+ p.reset(new char[r+1]);
+ r = ::GetLocaleInfoA(
+ lcid, // locale identifier
+ LOCALE_SCOUNTRY, // information type
+ p.get(), // information buffer
+ r+1 // size of buffer
+ );
+ //
+ // now see if locale is installed and behave accordingly:
+ //
+ if(::IsValidLocale(lcid, LCID_INSTALLED))
+ {
+ s_win_locale = test_with_locale;
+ std::cout << "Testing the Win32 locale: \"" << p.get() << "\" (0x" << std::hex << lcid << ")" << std::endl;
+ }
+ else
+ {
+ s_win_locale = no_test;
+ std::cout << "The Win32 locale: \"" << p.get() << "\" (0x" << std::hex << lcid << ") is not available and will not be tested." << std::endl;
+ }
+#else
+ s_win_locale = no_test;
+#endif
+}
+
+test_locale::~test_locale()
+{
+ // restore to previous state:
+ std::setlocale(LC_ALL, m_old_c_locale.c_str());
+ s_c_locale = m_old_c_state;
+#ifndef BOOST_NO_STD_LOCALE
+ s_cpp_locale_inst = m_old_cpp_locale;
+#endif
+ s_cpp_locale = m_old_cpp_state;
+ s_win_locale_inst = m_old_win_locale;
+ s_win_locale = m_old_win_state;
+ m_name = m_old_name;
+}
+
+int test_locale::s_c_locale = test_no_locale;
+int test_locale::s_cpp_locale = test_no_locale;
+int test_locale::s_win_locale = test_no_locale;
+#ifndef BOOST_NO_STD_LOCALE
+std::locale test_locale::s_cpp_locale_inst;
+#endif
+boost::uint32_t test_locale::s_win_locale_inst = 0;
+std::string test_locale::m_name;
+
+
+void test_en_locale(const char* name, boost::uint32_t lcid)
+{
+ using namespace boost::regex_constants;
+ errors_as_warnings w;
+ test_locale l(name, lcid);
+ TEST_REGEX_SEARCH_L("[[:lower:]]+", perl, "\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xf7", match_default, make_array(1, 32, -2, -2));
+ TEST_REGEX_SEARCH_L("[[:upper:]]+", perl, "\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf", match_default, make_array(1, 31, -2, -2));
+// TEST_REGEX_SEARCH_L("[[:punct:]]+", perl, "\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0", match_default, make_array(0, 31, -2, -2));
+ TEST_REGEX_SEARCH_L("[[:print:]]+", perl, "\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe", match_default, make_array(0, 93, -2, -2));
+ TEST_REGEX_SEARCH_L("[[:graph:]]+", perl, "\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe", match_default, make_array(0, 93, -2, -2));
+ TEST_REGEX_SEARCH_L("[[:word:]]+", perl, "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf8\xf9\xfa\xfb\xfc\xfd\xfe", match_default, make_array(0, 61, -2, -2));
+ // collation sensitive ranges:
+#if !BOOST_WORKAROUND(__BORLANDC__, < 0x600)
+ // these tests are disabled for Borland C++: a bug in std::collate<wchar_t>
+ // causes these tests to crash (pointer overrun in std::collate<wchar_t>::do_transform).
+ TEST_REGEX_SEARCH_L("[a-z]+", perl|::boost::regex_constants::collate, "\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf8\xf9\xfa\xfb\xfc", match_default, make_array(0, 28, -2, -2));
+ TEST_REGEX_SEARCH_L("[a-z]+", perl|::boost::regex_constants::collate, "\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd8\xd9\xda\xdb\xdc", match_default, make_array(1, 28, -2, -2));
+ // and equivalence classes:
+ TEST_REGEX_SEARCH_L("[[=a=]]+", perl, "aA\xe0\xe1\xe2\xe3\xe4\xe5\xc0\xc1\xc2\xc3\xc4\xc5", match_default, make_array(0, 14, -2, -2));
+ // case mapping:
+ TEST_REGEX_SEARCH_L("[A-Z]+", perl|icase|::boost::regex_constants::collate, "\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf8\xf9\xfa\xfb\xfc", match_default, make_array(0, 28, -2, -2));
+ TEST_REGEX_SEARCH_L("[a-z]+", perl|icase|::boost::regex_constants::collate, "\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd8\xd9\xda\xdb\xdc", match_default, make_array(1, 28, -2, -2));
+ TEST_REGEX_SEARCH_L("\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd8\xd9\xda\xdb\xdc\xdd", perl|icase, "\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf8\xf9\xfa\xfb\xfc\xfd\xfe", match_default, make_array(1, 30, -2, -2));
+#endif
+}
+
+void test_en_locale()
+{
+ // VC6 seems to have problems with std::setlocale, I've never
+ // gotten to the bottem of this as the program runs fine under the
+ // debugger, but hangs when run from bjam:
+#if !BOOST_WORKAROUND(BOOST_MSVC, <1300) && !(defined(__ICL) && defined(_MSC_VER) && (_MSC_VER == 1200))
+ test_en_locale("en_US", 0x09 | 0x01 << 10);
+ test_en_locale("en_UK", 0x09 | 0x02 << 10);
+ test_en_locale("en", 0x09);
+#endif
+}
+
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_locale.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_locale.hpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,90 @@
+/*
+ *
+ * Copyright (c) 2004
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE test_locale.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Helper classes for testing locale-specific expressions.
+ */
+
+
+#ifndef BOOST_REGEX_REGRESS_TEST_LOCALE_HPP
+#define BOOST_REGEX_REGRESS_TEST_LOCALE_HPP
+//
+// defines class test_locale that handles the locale used for testing:
+//
+class test_locale
+{
+public:
+ enum{
+ no_test,
+ test_no_locale,
+ test_with_locale
+ };
+
+ test_locale(const char* c_name, boost::uint32_t lcid);
+ ~test_locale();
+
+ static int c_locale_state()
+ {
+ return s_c_locale;
+ }
+ static int cpp_locale_state()
+ {
+ return s_cpp_locale;
+ }
+ static int win_locale_state()
+ {
+ return s_win_locale;
+ }
+ static const char* c_str()
+ {
+ return m_name.c_str();
+ }
+#ifndef BOOST_NO_STD_LOCALE
+ static std::locale cpp_locale()
+ {
+ return s_cpp_locale_inst;
+ }
+#endif
+ static boost::uint32_t win_locale()
+ {
+ return s_win_locale_inst;
+ }
+
+private:
+ // the actions to take for each locale type:
+ static int s_c_locale;
+ static int s_cpp_locale;
+ static int s_win_locale;
+ // current locales:
+#ifndef BOOST_NO_STD_LOCALE
+ static std::locale s_cpp_locale_inst;
+#endif
+ static boost::uint32_t s_win_locale_inst;
+ static std::string m_name;
+
+ // backed up versions of the previous locales and their action state:
+ std::string m_old_c_locale;
+ std::string m_old_name;
+ int m_old_c_state;
+#ifndef BOOST_NO_STD_LOCALE
+ std::locale m_old_cpp_locale;
+#endif
+ int m_old_cpp_state;
+ boost::uint32_t m_old_win_locale;
+ int m_old_win_state;
+
+};
+
+#endif
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_mfc.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_mfc.cpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,551 @@
+/*
+ *
+ * Copyright (c) 2004
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE test_mfc.cpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Test code for MFC/ATL strings with Boost.Regex.
+ */
+
+//
+// We can only build this if we have ATL support:
+//
+#include <boost/config.hpp>
+
+#ifdef TEST_MFC
+
+#include <boost/regex/mfc.hpp>
+#include "test.hpp"
+#include "atlstr.h"
+
+#pragma warning(disable:4267)
+
+void test_mfc(const char&, const test_regex_search_tag&)
+{
+ const std::string& ss = test_info<char>::search_text();
+ const std::string& ss2 = test_info<char>::expression();
+ CAtlStringA s(ss.c_str(), ss.size());
+ CAtlStringA s2(ss2.c_str(), ss2.size());
+ boost::regex_constants::match_flag_type opts = test_info<char>::match_options();
+ const int* answer_table = test_info<char>::answer_table();
+ boost::regex r = boost::make_regex(s2, test_info<char>::syntax_options());
+ boost::cmatch what;
+ if(boost::regex_search(
+ s,
+ what,
+ r,
+ opts))
+ {
+ test_result(what, s.GetString(), answer_table);
+ }
+ else if(answer_table[0] >= 0)
+ {
+ // we should have had a match but didn't:
+ BOOST_REGEX_TEST_ERROR("Expected match was not found.", char);
+ }
+ //
+ // regex_match tests:
+ //
+ if(answer_table[0] < 0)
+ {
+ if(boost::regex_match(s, r, opts))
+ {
+ BOOST_REGEX_TEST_ERROR("boost::regex_match found a match when it should not have done so.", char);
+ }
+ }
+ else
+ {
+ if((answer_table[0] > 0) && boost::regex_match(s, r, opts))
+ {
+ BOOST_REGEX_TEST_ERROR("boost::regex_match found a match when it should not have done so.", char);
+ }
+ else if((answer_table[0] == 0) && (answer_table[1] == static_cast<int>(ss.size())))
+ {
+ if(boost::regex_match(
+ s,
+ what,
+ r,
+ opts))
+ {
+ test_result(what, s.GetString(), answer_table);
+ if(!boost::regex_match(s, r, opts))
+ {
+ // we should have had a match but didn't:
+ BOOST_REGEX_TEST_ERROR("Expected match was not found.", char);
+ }
+ }
+ else if(answer_table[0] >= 0)
+ {
+ // we should have had a match but didn't:
+ BOOST_REGEX_TEST_ERROR("Expected match was not found.", char);
+ }
+ }
+ }
+ //
+ // test regex_iterator:
+ //
+ boost::cregex_iterator start(boost::make_regex_iterator(s, r, opts)), end;
+ boost::cregex_iterator copy(start);
+ while(start != end)
+ {
+ if(start != copy)
+ {
+ BOOST_REGEX_TEST_ERROR("Failed iterator != comparison.", char);
+ }
+ if(!(start == copy))
+ {
+ BOOST_REGEX_TEST_ERROR("Failed iterator == comparison.", char);
+ }
+ test_result(*start, s.GetString(), answer_table);
+ ++start;
+ ++copy;
+ // move on the answer table to next set of answers;
+ if(*answer_table != -2)
+ while(*answer_table++ != -2){}
+ }
+ if(answer_table[0] >= 0)
+ {
+ // we should have had a match but didn't:
+ BOOST_REGEX_TEST_ERROR("Expected match was not found.", char);
+ }
+ //
+ // test regex_token_iterator:
+ //
+ typedef boost::regex_token_iterator<const char*> token_iterator;
+ answer_table = test_info<char>::answer_table();
+ //
+ // we start by testing sub-expression 0:
+ //
+ token_iterator tstart(boost::make_regex_token_iterator(s, r, 0, opts)), tend;
+ token_iterator tcopy(tstart);
+ while(tstart != tend)
+ {
+ if(tstart != tcopy)
+ {
+ BOOST_REGEX_TEST_ERROR("Failed iterator != comparison.", char);
+ }
+ if(!(tstart == tcopy))
+ {
+ BOOST_REGEX_TEST_ERROR("Failed iterator == comparison.", char);
+ }
+ test_sub_match(*tstart, s.GetString(), answer_table, 0);
+ ++tstart;
+ ++tcopy;
+ // move on the answer table to next set of answers;
+ if(*answer_table != -2)
+ while(*answer_table++ != -2){}
+ }
+ if(answer_table[0] >= 0)
+ {
+ // we should have had a match but didn't:
+ BOOST_REGEX_TEST_ERROR("Expected match was not found.", char);
+ }
+ //
+ // and now field spitting:
+ //
+ token_iterator tstart2(boost::make_regex_token_iterator(s, r, -1, opts)), tend2;
+ token_iterator tcopy2(tstart2);
+ int last_end2 = 0;
+ answer_table = test_info<char>::answer_table();
+ while(tstart2 != tend2)
+ {
+ if(tstart2 != tcopy2)
+ {
+ BOOST_REGEX_TEST_ERROR("Failed iterator != comparison.", char);
+ }
+ if(!(tstart2 == tcopy2))
+ {
+ BOOST_REGEX_TEST_ERROR("Failed iterator == comparison.", char);
+ }
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4244)
+#endif
+ if(boost::re_detail::distance(s.GetString(), tstart2->first) != last_end2)
+ {
+ BOOST_REGEX_TEST_ERROR(
+ "Error in location of start of field split, found: "
+ << boost::re_detail::distance(s.GetString(), tstart2->first)
+ << ", expected: "
+ << last_end2
+ << ".", char);
+ }
+ int expected_end = static_cast<int>(answer_table[0] < 0 ? s.GetLength() : answer_table[0]);
+ if(boost::re_detail::distance(s.GetString(), tstart2->second) != expected_end)
+ {
+ BOOST_REGEX_TEST_ERROR(
+ "Error in location of end2 of field split, found: "
+ << boost::re_detail::distance(s.GetString(), tstart2->second)
+ << ", expected: "
+ << expected_end
+ << ".", char);
+ }
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+ last_end2 = answer_table[1];
+ ++tstart2;
+ ++tcopy2;
+ // move on the answer table to next set of answers;
+ if(*answer_table != -2)
+ while(*answer_table++ != -2){}
+ }
+ if(answer_table[0] >= 0)
+ {
+ // we should have had a match but didn't:
+ BOOST_REGEX_TEST_ERROR("Expected match was not found.", char);
+ }
+
+}
+
+void test_mfc(const wchar_t&, const test_regex_search_tag&)
+{
+ const std::wstring& ss = test_info<wchar_t>::search_text();
+ const std::wstring& ss2 = test_info<wchar_t>::expression();
+ CAtlStringW s(ss.c_str(), ss.size());
+ CAtlStringW s2(ss2.c_str(), ss2.size());
+ boost::regex_constants::match_flag_type opts = test_info<wchar_t>::match_options();
+ const int* answer_table = test_info<wchar_t>::answer_table();
+ boost::wregex r = boost::make_regex(s2, test_info<wchar_t>::syntax_options());
+ boost::wcmatch what;
+ if(boost::regex_search(
+ s,
+ what,
+ r,
+ opts))
+ {
+ test_result(what, s.GetString(), answer_table);
+ }
+ else if(answer_table[0] >= 0)
+ {
+ // we should have had a match but didn't:
+ BOOST_REGEX_TEST_ERROR("Expected match was not found.", wchar_t);
+ }
+ //
+ // regex_match tests:
+ //
+ if(answer_table[0] < 0)
+ {
+ if(boost::regex_match(s, r, opts))
+ {
+ BOOST_REGEX_TEST_ERROR("boost::regex_match found a match when it should not have done so.", wchar_t);
+ }
+ }
+ else
+ {
+ if((answer_table[0] > 0) && boost::regex_match(s, r, opts))
+ {
+ BOOST_REGEX_TEST_ERROR("boost::regex_match found a match when it should not have done so.", wchar_t);
+ }
+ else if((answer_table[0] == 0) && (answer_table[1] == static_cast<int>(ss.size())))
+ {
+ if(boost::regex_match(
+ s,
+ what,
+ r,
+ opts))
+ {
+ test_result(what, s.GetString(), answer_table);
+ if(!boost::regex_match(s, r, opts))
+ {
+ // we should have had a match but didn't:
+ BOOST_REGEX_TEST_ERROR("Expected match was not found.", wchar_t);
+ }
+ }
+ else if(answer_table[0] >= 0)
+ {
+ // we should have had a match but didn't:
+ BOOST_REGEX_TEST_ERROR("Expected match was not found.", wchar_t);
+ }
+ }
+ }
+ //
+ // test regex_iterator:
+ //
+ boost::wcregex_iterator start(boost::make_regex_iterator(s, r, opts)), end;
+ boost::wcregex_iterator copy(start);
+ while(start != end)
+ {
+ if(start != copy)
+ {
+ BOOST_REGEX_TEST_ERROR("Failed iterator != comparison.", wchar_t);
+ }
+ if(!(start == copy))
+ {
+ BOOST_REGEX_TEST_ERROR("Failed iterator == comparison.", wchar_t);
+ }
+ test_result(*start, s.GetString(), answer_table);
+ ++start;
+ ++copy;
+ // move on the answer table to next set of answers;
+ if(*answer_table != -2)
+ while(*answer_table++ != -2){}
+ }
+ if(answer_table[0] >= 0)
+ {
+ // we should have had a match but didn't:
+ BOOST_REGEX_TEST_ERROR("Expected match was not found.", wchar_t);
+ }
+ //
+ // test regex_token_iterator:
+ //
+ typedef boost::regex_token_iterator<const wchar_t*> token_iterator;
+ answer_table = test_info<wchar_t>::answer_table();
+ //
+ // we start by testing sub-expression 0:
+ //
+ token_iterator tstart(boost::make_regex_token_iterator(s, r, 0, opts)), tend;
+ token_iterator tcopy(tstart);
+ while(tstart != tend)
+ {
+ if(tstart != tcopy)
+ {
+ BOOST_REGEX_TEST_ERROR("Failed iterator != comparison.", wchar_t);
+ }
+ if(!(tstart == tcopy))
+ {
+ BOOST_REGEX_TEST_ERROR("Failed iterator == comparison.", wchar_t);
+ }
+ test_sub_match(*tstart, s.GetString(), answer_table, 0);
+ ++tstart;
+ ++tcopy;
+ // move on the answer table to next set of answers;
+ if(*answer_table != -2)
+ while(*answer_table++ != -2){}
+ }
+ if(answer_table[0] >= 0)
+ {
+ // we should have had a match but didn't:
+ BOOST_REGEX_TEST_ERROR("Expected match was not found.", wchar_t);
+ }
+ //
+ // and now field spitting:
+ //
+ token_iterator tstart2(boost::make_regex_token_iterator(s, r, -1, opts)), tend2;
+ token_iterator tcopy2(tstart2);
+ int last_end2 = 0;
+ answer_table = test_info<wchar_t>::answer_table();
+ while(tstart2 != tend2)
+ {
+ if(tstart2 != tcopy2)
+ {
+ BOOST_REGEX_TEST_ERROR("Failed iterator != comparison.", wchar_t);
+ }
+ if(!(tstart2 == tcopy2))
+ {
+ BOOST_REGEX_TEST_ERROR("Failed iterator == comparison.", wchar_t);
+ }
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4244)
+#endif
+ if(boost::re_detail::distance(s.GetString(), tstart2->first) != last_end2)
+ {
+ BOOST_REGEX_TEST_ERROR(
+ "Error in location of start of field split, found: "
+ << boost::re_detail::distance(s.GetString(), tstart2->first)
+ << ", expected: "
+ << last_end2
+ << ".", wchar_t);
+ }
+ int expected_end = static_cast<int>(answer_table[0] < 0 ? s.GetLength() : answer_table[0]);
+ if(boost::re_detail::distance(s.GetString(), tstart2->second) != expected_end)
+ {
+ BOOST_REGEX_TEST_ERROR(
+ "Error in location of end2 of field split, found: "
+ << boost::re_detail::distance(s.GetString(), tstart2->second)
+ << ", expected: "
+ << expected_end
+ << ".", wchar_t);
+ }
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+ last_end2 = answer_table[1];
+ ++tstart2;
+ ++tcopy2;
+ // move on the answer table to next set of answers;
+ if(*answer_table != -2)
+ while(*answer_table++ != -2){}
+ }
+ if(answer_table[0] >= 0)
+ {
+ // we should have had a match but didn't:
+ BOOST_REGEX_TEST_ERROR("Expected match was not found.", wchar_t);
+ }
+
+}
+
+void test_mfc(const char&, const test_invalid_regex_tag&)
+{
+ std::string ss = test_info<char>::expression();
+ CAtlStringA s(ss.c_str(), ss.size());
+ bool have_catch = false;
+ try{
+ boost::regex e = boost::make_regex(s, test_info<char>::syntax_options());
+ if(e.error_code())
+ have_catch = true;
+ }
+ catch(const boost::bad_expression&)
+ {
+ have_catch = true;
+ }
+ catch(const std::runtime_error& r)
+ {
+ have_catch = true;
+ BOOST_REGEX_TEST_ERROR("Expected a bad_expression exception, but a std::runtime_error instead: " << r.what(), char);
+ }
+ catch(const std::exception& r)
+ {
+ have_catch = true;
+ BOOST_REGEX_TEST_ERROR("Expected a bad_expression exception, but a std::exception instead: " << r.what(), char);
+ }
+ catch(...)
+ {
+ have_catch = true;
+ BOOST_REGEX_TEST_ERROR("Expected a bad_expression exception, but got an exception of unknown type instead", char);
+ }
+ if(!have_catch)
+ {
+ // oops expected exception was not thrown:
+ BOOST_REGEX_TEST_ERROR("Expected an exception, but didn't find one.", char);
+ }
+
+}
+
+void test_mfc(const wchar_t&, const test_invalid_regex_tag&)
+{
+ std::wstring ss = test_info<wchar_t>::expression();
+ CAtlStringW s(ss.c_str(), ss.size());
+ bool have_catch = false;
+ try{
+ boost::wregex e = boost::make_regex(s, test_info<wchar_t>::syntax_options());
+ if(e.error_code())
+ have_catch = true;
+ }
+ catch(const boost::bad_expression&)
+ {
+ have_catch = true;
+ }
+ catch(const std::runtime_error& r)
+ {
+ have_catch = true;
+ BOOST_REGEX_TEST_ERROR("Expected a bad_expression exception, but a std::runtime_error instead: " << r.what(), wchar_t);
+ }
+ catch(const std::exception& r)
+ {
+ have_catch = true;
+ BOOST_REGEX_TEST_ERROR("Expected a bad_expression exception, but a std::exception instead: " << r.what(), wchar_t);
+ }
+ catch(...)
+ {
+ have_catch = true;
+ BOOST_REGEX_TEST_ERROR("Expected a bad_expression exception, but got an exception of unknown type instead", wchar_t);
+ }
+ if(!have_catch)
+ {
+ // oops expected exception was not thrown:
+ BOOST_REGEX_TEST_ERROR("Expected an exception, but didn't find one.", wchar_t);
+ }
+}
+
+void test_mfc(const char&, const test_regex_replace_tag&)
+{
+ const CStringA expression(test_info<char>::expression().c_str(), test_info<char>::expression().size());
+ boost::regex_constants::syntax_option_type syntax_options = test_info<char>::syntax_options();
+ try{
+ boost::regex r = boost::make_regex(expression, syntax_options);
+ if(r.status())
+ {
+ BOOST_REGEX_TEST_ERROR("Expression did not compile when it should have done, error code = " << r.status(), char);
+ }
+ const CStringA search_text(test_info<char>::search_text().c_str(), test_info<char>::search_text().size());
+ boost::regex_constants::match_flag_type opts = test_info<char>::match_options();
+ const CStringA format_string(test_info<char>::format_string().c_str(), test_info<char>::format_string().size());
+ const CStringA result_string(test_info<char>::result_string().c_str(), test_info<char>::result_string().size());
+
+ CStringA result = boost::regex_replace(search_text, r, format_string, opts);
+ if(result != result_string)
+ {
+ BOOST_REGEX_TEST_ERROR("regex_replace generated an incorrect string result", char);
+ }
+ }
+ catch(const boost::bad_expression& e)
+ {
+ BOOST_REGEX_TEST_ERROR("Expression did not compile when it should have done: " << e.what(), char);
+ }
+ catch(const std::runtime_error& r)
+ {
+ BOOST_REGEX_TEST_ERROR("Received an unexpected std::runtime_error: " << r.what(), char);
+ }
+ catch(const std::exception& r)
+ {
+ BOOST_REGEX_TEST_ERROR("Received an unexpected std::exception: " << r.what(), char);
+ }
+ catch(...)
+ {
+ BOOST_REGEX_TEST_ERROR("Received an unexpected exception of unknown type", char);
+ }
+}
+
+void test_mfc(const wchar_t&, const test_regex_replace_tag&)
+{
+ const CStringW expression(test_info<wchar_t>::expression().c_str(), test_info<wchar_t>::expression().size());
+ boost::regex_constants::syntax_option_type syntax_options = test_info<wchar_t>::syntax_options();
+ try{
+ boost::wregex r = boost::make_regex(expression, syntax_options);
+ if(r.status())
+ {
+ BOOST_REGEX_TEST_ERROR("Expression did not compile when it should have done, error code = " << r.status(), wchar_t);
+ }
+ const CStringW search_text(test_info<wchar_t>::search_text().c_str(), test_info<wchar_t>::search_text().size());
+ boost::regex_constants::match_flag_type opts = test_info<wchar_t>::match_options();
+ const CStringW format_string(test_info<wchar_t>::format_string().c_str(), test_info<wchar_t>::format_string().size());
+ const CStringW result_string(test_info<wchar_t>::result_string().c_str(), test_info<wchar_t>::result_string().size());
+
+ CStringW result = boost::regex_replace(search_text, r, format_string, opts);
+ if(result != result_string)
+ {
+ BOOST_REGEX_TEST_ERROR("regex_replace generated an incorrect string result", wchar_t);
+ }
+ }
+ catch(const boost::bad_expression& e)
+ {
+ BOOST_REGEX_TEST_ERROR("Expression did not compile when it should have done: " << e.what(), wchar_t);
+ }
+ catch(const std::runtime_error& r)
+ {
+ BOOST_REGEX_TEST_ERROR("Received an unexpected std::runtime_error: " << r.what(), wchar_t);
+ }
+ catch(const std::exception& r)
+ {
+ BOOST_REGEX_TEST_ERROR("Received an unexpected std::exception: " << r.what(), wchar_t);
+ }
+ catch(...)
+ {
+ BOOST_REGEX_TEST_ERROR("Received an unexpected exception of unknown type", wchar_t);
+ }
+}
+
+#else
+
+#include "test.hpp"
+
+void test_mfc(const char&, const test_regex_search_tag&){}
+void test_mfc(const wchar_t&, const test_regex_search_tag&){}
+void test_mfc(const char&, const test_invalid_regex_tag&){}
+void test_mfc(const wchar_t&, const test_invalid_regex_tag&){}
+void test_mfc(const char&, const test_regex_replace_tag&){}
+void test_mfc(const wchar_t&, const test_regex_replace_tag&){}
+
+
+#endif

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_mfc.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_mfc.hpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,36 @@
+/*
+ *
+ * Copyright (c) 2004
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE test_mfc.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: MFC/ATL test handlers.
+ */
+
+#ifndef TEST_MFC_HPP
+#define TEST_MFC_HPP
+
+template <class charT, class Tag>
+void test_mfc(const charT&, const Tag&)
+{
+ // do nothing
+}
+
+void test_mfc(const char&, const test_regex_search_tag&);
+void test_mfc(const wchar_t&, const test_regex_search_tag&);
+void test_mfc(const char&, const test_invalid_regex_tag&);
+void test_mfc(const wchar_t&, const test_invalid_regex_tag&);
+void test_mfc(const char&, const test_regex_replace_tag&);
+void test_mfc(const wchar_t&, const test_regex_replace_tag&);
+
+
+#endif

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_non_greedy_repeats.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_non_greedy_repeats.cpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,46 @@
+/*
+ *
+ * Copyright (c) 2004
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+#include "test.hpp"
+
+#ifdef BOOST_MSVC
+#pragma warning(disable:4127)
+#endif
+
+void test_non_greedy_repeats()
+{
+ //
+ // non-greedy repeats added 21/04/00
+ //
+ using namespace boost::regex_constants;
+ TEST_REGEX_SEARCH("a*?", perl, "aa", match_default, make_array(0, 0, -2, 0, 1, -2, 1, 1, -2, 1, 2, -2, 2, 2, -2, -2));
+ TEST_REGEX_SEARCH("^a*?$", perl, "aa", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("^.*?$", perl, "aa", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("^(a)*?$", perl, "aa", match_default, make_array(0, 2, 1, 2, -2, -2));
+ TEST_REGEX_SEARCH("^[ab]*?$", perl, "aa", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("a??", perl, "aa", match_default, make_array(0, 0, -2, 0, 1, -2, 1, 1, -2, 1, 2, -2, 2, 2, -2, -2));
+ TEST_REGEX_SEARCH("a+?", perl, "aa", match_default, make_array(0, 1, -2, 1, 2, -2, -2));
+ TEST_REGEX_SEARCH("a{1,3}?", perl, "aaa", match_default, make_array(0, 1, -2, 1, 2, -2, 2, 3, -2, -2));
+ TEST_REGEX_SEARCH("\\w+?w", perl, "...ccccccwcccccw", match_default, make_array(3, 10, -2, 10, 16, -2, -2));
+ TEST_REGEX_SEARCH("\\W+\\w+?w", perl, "...ccccccwcccccw", match_default, make_array(0, 10, -2, -2));
+ TEST_REGEX_SEARCH("abc|\\w+?", perl, "abd", match_default, make_array(0, 1, -2, 1, 2, -2, 2, 3, -2, -2));
+ TEST_REGEX_SEARCH("abc|\\w+?", perl, "abcd", match_default, make_array(0, 3, -2, 3, 4, -2, -2));
+ TEST_REGEX_SEARCH("<\\s*tag[^>]*>(.*?)<\\s*/tag\\s*>", perl, " <tag>here is some text</tag> <tag></tag>", match_default, make_array(1, 29, 6, 23, -2, 30, 41, 35, 35, -2, -2));
+ TEST_REGEX_SEARCH("<\\s*tag[^>]*>(.*?)<\\s*/tag\\s*>", perl, " < tag attr=\"something\">here is some text< /tag > <tag></tag>", match_default, make_array(1, 49, 24, 41, -2, 50, 61, 55, 55, -2, -2));
+ TEST_REGEX_SEARCH("xx-{0,2}?(?:[+-][0-9])??\\z", perl, "xx--", match_default, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("xx.{0,2}?(?:[+-][0-9])??\\z", perl, "xx--", match_default, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("xx.{0,2}?(?:[+-][0-9])??\\z", perl, "xx--", match_default|match_not_dot_newline, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("xx[/-]{0,2}?(?:[+-][0-9])??\\z", perl, "xx--", match_default, make_array(0, 4, -2, -2));
+ TEST_INVALID_REGEX("a{1,3}{1}", perl);
+ TEST_INVALID_REGEX("a**", perl);
+ TEST_INVALID_REGEX("a++", perl);
+}
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_not_regex.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_not_regex.hpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,114 @@
+/*
+ *
+ * Copyright (c) 2004
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE test_not_regex.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Declares tests for invalid regexes.
+ */
+
+
+#ifndef BOOST_REGEX_REGRESS_TEST_NOT_REGEX_HPP
+#define BOOST_REGEX_REGRESS_TEST_NOT_REGEX_HPP
+#include "info.hpp"
+//
+// this file implements a test for a regular expression that should not compile:
+//
+struct test_invalid_regex_tag{};
+
+template<class charT, class traits>
+void test_empty(boost::basic_regex<charT, traits>& r)
+{
+ if(!r.empty())
+ {
+ BOOST_REGEX_TEST_ERROR("Invalid value returned from basic_regex<>::empty().", charT);
+ }
+ if(r.size())
+ {
+ BOOST_REGEX_TEST_ERROR("Invalid value returned from basic_regex<>::size().", charT);
+ }
+ if(r.str().size())
+ {
+ BOOST_REGEX_TEST_ERROR("Invalid value returned from basic_regex<>::str().", charT);
+ }
+ if(r.begin() != r.end())
+ {
+ BOOST_REGEX_TEST_ERROR("Invalid value returned from basic_regex<>::begin().", charT);
+ }
+ if(r.status() == 0)
+ {
+ BOOST_REGEX_TEST_ERROR("Invalid value returned from basic_regex<>::status().", charT);
+ }
+}
+
+template<class charT, class traits>
+void test(boost::basic_regex<charT, traits>& r, const test_invalid_regex_tag&)
+{
+ const std::basic_string<charT>& expression = test_info<charT>::expression();
+ boost::regex_constants::syntax_option_type syntax_options = test_info<charT>::syntax_options();
+ //
+ // try it with exceptions disabled first:
+ //
+ try
+ {
+ if(0 == r.assign(expression, syntax_options | boost::regex_constants::no_except).status())
+ {
+ BOOST_REGEX_TEST_ERROR("Expression compiled when it should not have done so.", charT);
+ }
+ test_empty(r);
+ }
+ catch(...)
+ {
+ BOOST_REGEX_TEST_ERROR("Unexpected exception thrown.", charT);
+ }
+ //
+ // now try again with exceptions:
+ //
+ bool have_catch = false;
+ try{
+ r.assign(expression, syntax_options);
+#ifdef BOOST_NO_EXCEPTIONS
+ if(r.status())
+ have_catch = true;
+#endif
+ }
+ catch(const boost::bad_expression&)
+ {
+ have_catch = true;
+ test_empty(r);
+ }
+ catch(const std::runtime_error& r)
+ {
+ have_catch = true;
+ BOOST_REGEX_TEST_ERROR("Expected a bad_expression exception, but a std::runtime_error instead: " << r.what(), charT);
+ }
+ catch(const std::exception& r)
+ {
+ have_catch = true;
+ BOOST_REGEX_TEST_ERROR("Expected a bad_expression exception, but a std::exception instead: " << r.what(), charT);
+ }
+ catch(...)
+ {
+ have_catch = true;
+ BOOST_REGEX_TEST_ERROR("Expected a bad_expression exception, but got an exception of unknown type instead", charT);
+ }
+ if(!have_catch)
+ {
+ // oops expected exception was not thrown:
+ BOOST_REGEX_TEST_ERROR("Expected an exception, but didn't find one.", charT);
+ }
+
+}
+
+
+
+#endif

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_operators.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_operators.cpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,176 @@
+/*
+ *
+ * Copyright (c) 2004
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+#include "test.hpp"
+
+#if !BOOST_WORKAROUND(BOOST_MSVC, <= 1300)\
+ && !BOOST_WORKAROUND(__HP_aCC, BOOST_TESTED_AT(55500))\
+ && !(defined(__GNUC__) && (__GNUC__ < 3) && !(defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)))
+
+template <class T1, class T2>
+void test_less(const T1& t1, const T2& t2)
+{
+ if(!(t1 < t2))
+ {
+ BOOST_REGEX_TEST_ERROR("Failed < comparison", char);
+ }
+ if(!(t1 <= t2))
+ {
+ BOOST_REGEX_TEST_ERROR("Failed <= comparison", char);
+ }
+ if(!(t1 != t2))
+ {
+ BOOST_REGEX_TEST_ERROR("Failed != comparison", char);
+ }
+ if(t1 == t2)
+ {
+ BOOST_REGEX_TEST_ERROR("Failed == comparison", char);
+ }
+ if(t1 >= t2)
+ {
+ BOOST_REGEX_TEST_ERROR("Failed >= comparison", char);
+ }
+ if(t1 > t2)
+ {
+ BOOST_REGEX_TEST_ERROR("Failed > comparison", char);
+ }
+}
+
+template <class T1, class T2>
+void test_greater(const T1& t1, const T2& t2)
+{
+ if(t1 < t2)
+ {
+ BOOST_REGEX_TEST_ERROR("Failed < comparison", char);
+ }
+ if(t1 <= t2)
+ {
+ BOOST_REGEX_TEST_ERROR("Failed <= comparison", char);
+ }
+ if(!(t1 != t2))
+ {
+ BOOST_REGEX_TEST_ERROR("Failed != comparison", char);
+ }
+ if(t1 == t2)
+ {
+ BOOST_REGEX_TEST_ERROR("Failed == comparison", char);
+ }
+ if(!(t1 >= t2))
+ {
+ BOOST_REGEX_TEST_ERROR("Failed >= comparison", char);
+ }
+ if(!(t1 > t2))
+ {
+ BOOST_REGEX_TEST_ERROR("Failed > comparison", char);
+ }
+}
+
+template <class T1, class T2>
+void test_equal(const T1& t1, const T2& t2)
+{
+ if(t1 < t2)
+ {
+ BOOST_REGEX_TEST_ERROR("Failed < comparison", char);
+ }
+ if(!(t1 <= t2))
+ {
+ BOOST_REGEX_TEST_ERROR("Failed <= comparison", char);
+ }
+ if(t1 != t2)
+ {
+ BOOST_REGEX_TEST_ERROR("Failed != comparison", char);
+ }
+ if(!(t1 == t2))
+ {
+ BOOST_REGEX_TEST_ERROR("Failed == comparison", char);
+ }
+ if(!(t1 >= t2))
+ {
+ BOOST_REGEX_TEST_ERROR("Failed >= comparison", char);
+ }
+ if(t1 > t2)
+ {
+ BOOST_REGEX_TEST_ERROR("Failed > comparison", char);
+ }
+}
+
+template <class T1, class T2, class T3>
+void test_plus(const T1& t1, const T2& t2, const T3& t3)
+{
+ if(t1 + t2 != t3)
+ {
+ BOOST_REGEX_TEST_ERROR("Failed addition", char);
+ }
+ if(t3 != t1 + t2)
+ {
+ BOOST_REGEX_TEST_ERROR("Failed addition", char);
+ }
+}
+
+void test_operators()
+{
+ test_info<char>::set_typename("sub_match operators");
+
+ std::string s1("a");
+ std::string s2("b");
+ boost::sub_match<std::string::const_iterator> sub1, sub2;
+ sub1.first = s1.begin();
+ sub1.second = s1.end();
+ sub1.matched = true;
+ sub2.first = s2.begin();
+ sub2.second = s2.end();
+ sub2.matched = true;
+
+ test_less(sub1, sub2);
+ test_less(sub1, s2.c_str());
+ test_less(s1.c_str(), sub2);
+ test_less(sub1, *s2.c_str());
+ test_less(*s1.c_str(), sub2);
+ test_less(sub1, s2);
+ test_less(s1, sub2);
+ test_greater(sub2, sub1);
+ test_greater(sub2, s1.c_str());
+ test_greater(s2.c_str(), sub1);
+ test_greater(sub2, *s1.c_str());
+ test_greater(*s2.c_str(), sub1);
+ test_greater(sub2, s1);
+ test_greater(s2, sub1);
+ test_equal(sub1, sub1);
+ test_equal(sub1, s1.c_str());
+ test_equal(s1.c_str(), sub1);
+ test_equal(sub1, *s1.c_str());
+ test_equal(*s1.c_str(), sub1);
+ test_equal(sub1, s1);
+ test_equal(s1, sub1);
+ test_plus(sub2, sub1, "ba");
+ test_plus(sub2, s1.c_str(), "ba");
+ test_plus(s2.c_str(), sub1, "ba");
+ test_plus(sub2, *s1.c_str(), "ba");
+ test_plus(*s2.c_str(), sub1, "ba");
+ test_plus(sub2, s1, "ba");
+ test_plus(s2, sub1, "ba");
+}
+
+#else
+
+#include <iostream>
+
+void test_operators()
+{
+ std::cout <<
+ "\n<note>\n"
+ "This compiler version does not support the sub_match comparison operators\n"
+ "tests for these operators are not carried out\n"
+ "</note>\n";
+}
+
+#endif
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_overloads.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_overloads.cpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,56 @@
+/*
+ *
+ * Copyright (c) 2004
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+#include "test.hpp"
+
+#define BOOST_REGEX_TEST(x)\
+ if(!(x)){ BOOST_REGEX_TEST_ERROR("Error in: " BOOST_STRINGIZE(x), char); }
+
+void test_overloads()
+{
+ test_info<char>::set_typename("sub_match operators");
+
+ // test all the available overloads with *one* simple
+ // expression, doing all these tests with all the test
+ // cases would just take to long...
+
+ boost::regex e("abc");
+ std::string s("abc");
+ const std::string& cs = s;
+ boost::smatch sm;
+ boost::cmatch cm;
+ // regex_match:
+ BOOST_REGEX_TEST(boost::regex_match(cs.begin(), cs.end(), sm, e))
+ BOOST_REGEX_TEST(boost::regex_match(cs.begin(), cs.end(), sm, e, boost::regex_constants::match_default))
+ BOOST_REGEX_TEST(boost::regex_match(cs.begin(), cs.end(), e))
+ BOOST_REGEX_TEST(boost::regex_match(cs.begin(), cs.end(), e, boost::regex_constants::match_default))
+ BOOST_REGEX_TEST(boost::regex_match(s.c_str(), cm, e))
+ BOOST_REGEX_TEST(boost::regex_match(s.c_str(), cm, e, boost::regex_constants::match_default))
+ BOOST_REGEX_TEST(boost::regex_match(s.c_str(), e))
+ BOOST_REGEX_TEST(boost::regex_match(s.c_str(), e, boost::regex_constants::match_default))
+ BOOST_REGEX_TEST(boost::regex_match(s, sm, e))
+ BOOST_REGEX_TEST(boost::regex_match(s, sm, e, boost::regex_constants::match_default))
+ BOOST_REGEX_TEST(boost::regex_match(s, e))
+ BOOST_REGEX_TEST(boost::regex_match(s, e, boost::regex_constants::match_default))
+ // regex_search:
+ BOOST_REGEX_TEST(boost::regex_search(cs.begin(), cs.end(), sm, e))
+ BOOST_REGEX_TEST(boost::regex_search(cs.begin(), cs.end(), sm, e, boost::regex_constants::match_default))
+ BOOST_REGEX_TEST(boost::regex_search(cs.begin(), cs.end(), e))
+ BOOST_REGEX_TEST(boost::regex_search(cs.begin(), cs.end(), e, boost::regex_constants::match_default))
+ BOOST_REGEX_TEST(boost::regex_search(s.c_str(), cm, e))
+ BOOST_REGEX_TEST(boost::regex_search(s.c_str(), cm, e, boost::regex_constants::match_default))
+ BOOST_REGEX_TEST(boost::regex_search(s.c_str(), e))
+ BOOST_REGEX_TEST(boost::regex_search(s.c_str(), e, boost::regex_constants::match_default))
+ BOOST_REGEX_TEST(boost::regex_search(s, sm, e))
+ BOOST_REGEX_TEST(boost::regex_search(s, sm, e, boost::regex_constants::match_default))
+ BOOST_REGEX_TEST(boost::regex_search(s, e))
+ BOOST_REGEX_TEST(boost::regex_search(s, e, boost::regex_constants::match_default))
+}

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_partial_match.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_partial_match.hpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,388 @@
+/*
+ *
+ * Copyright (c) 2004
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE test_regex_search.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Declares tests for regex search and iteration.
+ */
+
+#ifndef BOOST_REGEX_REGRESS_REGEX_SEARCH_HPP
+#define BOOST_REGEX_REGRESS_REGEX_SEARCH_HPP
+#include "info.hpp"
+//
+// this file implements a test for a regular expression that should compile,
+// followed by a search for that expression:
+//
+struct test_regex_search_tag{};
+
+template <class BidirectionalIterator>
+void test_sub_match(const boost::sub_match<BidirectionalIterator>& sub, BidirectionalIterator base, const int* answer_table, int i)
+{
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4244)
+#endif
+ typedef typename boost::sub_match<BidirectionalIterator>::value_type charT;
+ if((sub.matched == 0)
+ &&
+ !((i == 0)
+ && (test_info<charT>::match_options() & boost::match_partial)) )
+ {
+ if(answer_table[2*i] >= 0)
+ {
+ BOOST_REGEX_TEST_ERROR(
+ "Sub-expression " << i
+ << " was not matched when it should have been.", charT);
+ }
+ }
+ else
+ {
+ if(boost::re_detail::distance(base, sub.first) != answer_table[2*i])
+ {
+ BOOST_REGEX_TEST_ERROR(
+ "Error in start location of sub-expression "
+ << i << ", found " << boost::re_detail::distance(base, sub.first)
+ << ", expected " << answer_table[2*i] << ".", charT);
+ }
+ if(boost::re_detail::distance(base, sub.second) != answer_table[1+ 2*i])
+ {
+ BOOST_REGEX_TEST_ERROR(
+ "Error in end location of sub-expression "
+ << i << ", found " << boost::re_detail::distance(base, sub.second)
+ << ", expected " << answer_table[1 + 2*i] << ".", charT);
+ }
+ }
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+}
+
+template <class BidirectionalIterator, class Allocator>
+void test_result(const boost::match_results<BidirectionalIterator, Allocator>& what, BidirectionalIterator base, const int* answer_table)
+{
+ for(unsigned i = 0; i < what.size(); ++i)
+ {
+ test_sub_match(what[i], base, answer_table, i);
+ }
+}
+
+template<class charT, class traits>
+void test_simple_search(boost::basic_regex<charT, traits>& r)
+{
+ typedef typename std::basic_string<charT>::const_iterator const_iterator;
+ const std::basic_string<charT>& search_text = test_info<charT>::search_text();
+ boost::regex_constants::match_flag_type opts = test_info<charT>::match_options();
+ const int* answer_table = test_info<charT>::answer_table();
+ boost::match_results<const_iterator> what;
+ if(boost::regex_search(
+ search_text.begin(),
+ search_text.end(),
+ what,
+ r,
+ opts))
+ {
+ test_result(what, search_text.begin(), answer_table);
+ // setting match_any should have no effect on the result returned:
+ if(!boost::regex_search(
+ search_text.begin(),
+ search_text.end(),
+ r,
+ opts|boost::regex_constants::match_any))
+ {
+ BOOST_REGEX_TEST_ERROR("Expected match was not found when using the match_any flag.", charT);
+ }
+ }
+ else
+ {
+ if(answer_table[0] >= 0)
+ {
+ // we should have had a match but didn't:
+ BOOST_REGEX_TEST_ERROR("Expected match was not found.", charT);
+ }
+ // setting match_any should have no effect on the result returned:
+ else if(boost::regex_search(
+ search_text.begin(),
+ search_text.end(),
+ r,
+ opts|boost::regex_constants::match_any))
+ {
+ BOOST_REGEX_TEST_ERROR("Unexpected match was found when using the match_any flag.", charT);
+ }
+ }
+}
+
+template<class charT, class traits>
+void test_regex_iterator(boost::basic_regex<charT, traits>& r)
+{
+ typedef typename std::basic_string<charT>::const_iterator const_iterator;
+ typedef boost::regex_iterator<const_iterator, charT, traits> test_iterator;
+ const std::basic_string<charT>& search_text = test_info<charT>::search_text();
+ boost::regex_constants::match_flag_type opts = test_info<charT>::match_options();
+ const int* answer_table = test_info<charT>::answer_table();
+ test_iterator start(search_text.begin(), search_text.end(), r, opts), end;
+ test_iterator copy(start);
+ const_iterator last_end = search_text.begin();
+ while(start != end)
+ {
+ if(start != copy)
+ {
+ BOOST_REGEX_TEST_ERROR("Failed iterator != comparison.", charT);
+ }
+ if(!(start == copy))
+ {
+ BOOST_REGEX_TEST_ERROR("Failed iterator == comparison.", charT);
+ }
+ test_result(*start, search_text.begin(), answer_table);
+ // test $` and $' :
+ if(start->prefix().first != last_end)
+ {
+ BOOST_REGEX_TEST_ERROR("Incorrect position for start of $`", charT);
+ }
+ if(start->prefix().second != (*start)[0].first)
+ {
+ BOOST_REGEX_TEST_ERROR("Incorrect position for end of $`", charT);
+ }
+ if(start->prefix().matched != (start->prefix().first != start->prefix().second))
+ {
+ BOOST_REGEX_TEST_ERROR("Incorrect position for matched member of $`", charT);
+ }
+ if(start->suffix().first != (*start)[0].second)
+ {
+ BOOST_REGEX_TEST_ERROR("Incorrect position for start of $'", charT);
+ }
+ if(start->suffix().second != search_text.end())
+ {
+ BOOST_REGEX_TEST_ERROR("Incorrect position for end of $'", charT);
+ }
+ if(start->suffix().matched != (start->suffix().first != start->suffix().second))
+ {
+ BOOST_REGEX_TEST_ERROR("Incorrect position for matched member of $'", charT);
+ }
+ last_end = (*start)[0].second;
+ ++start;
+ ++copy;
+ // move on the answer table to next set of answers;
+ if(*answer_table != -2)
+ while(*answer_table++ != -2){}
+ }
+ if(answer_table[0] >= 0)
+ {
+ // we should have had a match but didn't:
+ BOOST_REGEX_TEST_ERROR("Expected match was not found.", charT);
+ }
+}
+
+template<class charT, class traits>
+void test_regex_token_iterator(boost::basic_regex<charT, traits>& r)
+{
+ typedef typename std::basic_string<charT>::const_iterator const_iterator;
+ typedef boost::regex_token_iterator<const_iterator, charT, traits> test_iterator;
+ const std::basic_string<charT>& search_text = test_info<charT>::search_text();
+ boost::regex_constants::match_flag_type opts = test_info<charT>::match_options();
+ const int* answer_table = test_info<charT>::answer_table();
+ //
+ // we start by testing sub-expression 0:
+ //
+ test_iterator start(search_text.begin(), search_text.end(), r, 0, opts), end;
+ test_iterator copy(start);
+ while(start != end)
+ {
+ if(start != copy)
+ {
+ BOOST_REGEX_TEST_ERROR("Failed iterator != comparison.", charT);
+ }
+ if(!(start == copy))
+ {
+ BOOST_REGEX_TEST_ERROR("Failed iterator == comparison.", charT);
+ }
+ test_sub_match(*start, search_text.begin(), answer_table, 0);
+ ++start;
+ ++copy;
+ // move on the answer table to next set of answers;
+ if(*answer_table != -2)
+ while(*answer_table++ != -2){}
+ }
+ if(answer_table[0] >= 0)
+ {
+ // we should have had a match but didn't:
+ BOOST_REGEX_TEST_ERROR("Expected match was not found.", charT);
+ }
+ //
+ // and now field spitting:
+ //
+ test_iterator start2(search_text.begin(), search_text.end(), r, -1, opts), end2;
+ test_iterator copy2(start2);
+ int last_end2 = 0;
+ answer_table = test_info<charT>::answer_table();
+ while(start2 != end2)
+ {
+ if(start2 != copy2)
+ {
+ BOOST_REGEX_TEST_ERROR("Failed iterator != comparison.", charT);
+ }
+ if(!(start2 == copy2))
+ {
+ BOOST_REGEX_TEST_ERROR("Failed iterator == comparison.", charT);
+ }
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4244)
+#endif
+ if(boost::re_detail::distance(search_text.begin(), start2->first) != last_end2)
+ {
+ BOOST_REGEX_TEST_ERROR(
+ "Error in location of start of field split, found: "
+ << boost::re_detail::distance(search_text.begin(), start2->first)
+ << ", expected: "
+ << last_end2
+ << ".", charT);
+ }
+ int expected_end = static_cast<int>(answer_table[0] < 0 ? search_text.size() : answer_table[0]);
+ if(boost::re_detail::distance(search_text.begin(), start2->second) != expected_end)
+ {
+ BOOST_REGEX_TEST_ERROR(
+ "Error in location of end2 of field split, found: "
+ << boost::re_detail::distance(search_text.begin(), start2->second)
+ << ", expected: "
+ << expected_end
+ << ".", charT);
+ }
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+ last_end2 = answer_table[1];
+ ++start2;
+ ++copy2;
+ // move on the answer table to next set of answers;
+ if(*answer_table != -2)
+ while(*answer_table++ != -2){}
+ }
+ if(answer_table[0] >= 0)
+ {
+ // we should have had a match but didn't:
+ BOOST_REGEX_TEST_ERROR("Expected match was not found.", charT);
+ }
+}
+
+template <class charT, class traits>
+struct grep_test_predicate
+{
+ typedef typename std::basic_string<charT>::const_iterator test_iter;
+
+ grep_test_predicate(test_iter b, const int* a)
+ : m_base(b), m_table(a)
+ {}
+ bool operator()(const boost::match_results<test_iter>& what)
+ {
+ test_result(what, m_base, m_table);
+ // move on the answer table to next set of answers;
+ if(*m_table != -2)
+ while(*m_table++ != -2){}
+ return true;
+ }
+private:
+ test_iter m_base;
+ const int* m_table;
+};
+
+template<class charT, class traits>
+void test_regex_grep(boost::basic_regex<charT, traits>& r)
+{
+ typedef typename std::basic_string<charT>::const_iterator const_iterator;
+ const std::basic_string<charT>& search_text = test_info<charT>::search_text();
+ boost::regex_constants::match_flag_type opts = test_info<charT>::match_options();
+ const int* answer_table = test_info<charT>::answer_table();
+ grep_test_predicate<charT, traits> pred(search_text.begin(), answer_table);
+ boost::regex_grep(pred, search_text.begin(), search_text.end(), r, opts);
+}
+
+template<class charT, class traits>
+void test_regex_match(boost::basic_regex<charT, traits>& r)
+{
+ typedef typename std::basic_string<charT>::const_iterator const_iterator;
+ const std::basic_string<charT>& search_text = test_info<charT>::search_text();
+ boost::regex_constants::match_flag_type opts = test_info<charT>::match_options();
+ const int* answer_table = test_info<charT>::answer_table();
+ boost::match_results<const_iterator> what;
+ if(answer_table[0] < 0)
+ {
+ if(boost::regex_match(search_text, r, opts))
+ {
+ BOOST_REGEX_TEST_ERROR("boost::regex_match found a match when it should not have done so.", charT);
+ }
+ }
+ else
+ {
+ if((answer_table[0] > 0) && boost::regex_match(search_text, r, opts))
+ {
+ BOOST_REGEX_TEST_ERROR("boost::regex_match found a match when it should not have done so.", charT);
+ }
+ else if((answer_table[0] == 0) && (answer_table[1] == static_cast<int>(search_text.size())))
+ {
+ if(boost::regex_match(
+ search_text.begin(),
+ search_text.end(),
+ what,
+ r,
+ opts))
+ {
+ test_result(what, search_text.begin(), answer_table);
+ }
+ else if(answer_table[0] >= 0)
+ {
+ // we should have had a match but didn't:
+ BOOST_REGEX_TEST_ERROR("Expected match was not found.", charT);
+ }
+ }
+ }
+}
+
+template<class charT, class traits>
+void test(boost::basic_regex<charT, traits>& r, const test_regex_search_tag&)
+{
+ const std::basic_string<charT>& expression = test_info<charT>::expression();
+ boost::regex_constants::syntax_option_type syntax_options = test_info<charT>::syntax_options();
+ try{
+ r.assign(expression, syntax_options);
+ if(r.status())
+ {
+ BOOST_REGEX_TEST_ERROR("Expression did not compile when it should have done, error code = " << r.status(), charT);
+ }
+ test_simple_search(r);
+ test_regex_iterator(r);
+ test_regex_token_iterator(r);
+ test_regex_grep(r);
+ test_regex_match(r);
+ }
+ catch(const boost::bad_expression& e)
+ {
+ BOOST_REGEX_TEST_ERROR("Expression did not compile when it should have done: " << e.what(), charT);
+ }
+ catch(const std::runtime_error& r)
+ {
+ BOOST_REGEX_TEST_ERROR("Received an unexpected std::runtime_error: " << r.what(), charT);
+ }
+ catch(const std::exception& r)
+ {
+ BOOST_REGEX_TEST_ERROR("Received an unexpected std::exception: " << r.what(), charT);
+ }
+ catch(...)
+ {
+ BOOST_REGEX_TEST_ERROR("Received an unexpected exception of unknown type", charT);
+ }
+
+}
+
+
+
+#endif

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_perl_ex.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_perl_ex.cpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,642 @@
+/*
+ *
+ * Copyright (c) 2004
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+#include "test.hpp"
+
+#ifdef BOOST_MSVC
+#pragma warning(disable:4127)
+#endif
+
+void test_options3();
+
+void test_independent_subs()
+{
+ using namespace boost::regex_constants;
+ TEST_REGEX_SEARCH("(?>^abc)", perl, "abc", match_default, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("(?>^abc)", perl, "def\nabc", match_default, make_array(4, 7, -2, -2));
+ TEST_REGEX_SEARCH("(?>^abc)", perl, "defabc", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("(?>.*/)foo", perl, "/this/is/a/very/long/line/in/deed/with/very/many/slashes/in/it/you/see/", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("(?>.*/)foo", perl, "/this/is/a/very/long/line/in/deed/with/very/many/slashes/in/and/foo", match_default, make_array(0, 67, -2, -2));
+ TEST_REGEX_SEARCH("(?>(\\.\\d\\d[1-9]?))\\d+", perl, "1.230003938", match_default, make_array(1, 11, 1, 4, -2, -2));
+ TEST_REGEX_SEARCH("(?>(\\.\\d\\d[1-9]?))\\d+", perl, "1.875000282", match_default, make_array(1, 11, 1, 5, -2, -2));
+ TEST_REGEX_SEARCH("(?>(\\.\\d\\d[1-9]?))\\d+", perl, "1.235", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("^((?>\\w+)|(?>\\s+))*$", perl, "now is the time for all good men to come to the aid of the party", match_default, make_array(0, 64, 59, 64, -2, -2));
+ TEST_REGEX_SEARCH("^((?>\\w+)|(?>\\s+))*$", perl, "this is not a line with only words and spaces!", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("((?>\\d+))(\\w)", perl, "12345a", match_default, make_array(0, 6, 0, 5, 5, 6, -2, -2));
+ TEST_REGEX_SEARCH("((?>\\d+))(\\w)", perl, "12345+", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("((?>\\d+))(\\d)", perl, "12345", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("(?>a+)b", perl, "aaab", match_default, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("((?>a+)b)", perl, "aaab", match_default, make_array(0, 4, 0, 4, -2, -2));
+ TEST_REGEX_SEARCH("(?>(a+))b", perl, "aaab", match_default, make_array(0, 4, 0, 3, -2, -2));
+ TEST_REGEX_SEARCH("(?>b)+", perl, "aaabbbccc", match_default, make_array(3, 6, -2, -2));
+ TEST_REGEX_SEARCH("(?>a+|b+|c+)*c", perl, "aaabbbbccccd", match_default, make_array(0, 8, -2, 8, 9, -2, 9, 10, -2, 10, 11, -2, -2));
+ TEST_REGEX_SEARCH("((?>[^()]+)|\\([^()]*\\))+", perl, "((abc(ade)ufh()()x", match_default, make_array(2, 18, 17, 18, -2, -2));
+ TEST_REGEX_SEARCH("\\(((?>[^()]+)|\\([^()]+\\))+\\)", perl, "(abc)", match_default, make_array(0, 5, 1, 4, -2, -2));
+ TEST_REGEX_SEARCH("\\(((?>[^()]+)|\\([^()]+\\))+\\)", perl, "(abc(def)xyz)", match_default, make_array(0, 13, 9, 12, -2, -2));
+ TEST_REGEX_SEARCH("\\(((?>[^()]+)|\\([^()]+\\))+\\)", perl, "((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", match_default, make_array(-2, -2));
+
+ TEST_REGEX_SEARCH("(?>a*)*", perl, "a", match_default, make_array(0, 1, -2, 1, 1, -2, -2));
+ TEST_REGEX_SEARCH("(?>a*)*", perl, "aa", match_default, make_array(0, 2, -2, 2, 2, -2, -2));
+ TEST_REGEX_SEARCH("(?>a*)*", perl, "aaaa", match_default, make_array(0, 4, -2, 4, 4, -2, -2));
+ TEST_REGEX_SEARCH("(?>a*)*", perl, "a", match_default, make_array(0, 1, -2, 1, 1, -2, -2));
+ TEST_REGEX_SEARCH("(?>a*)*", perl, "aaabcde", match_default, make_array(0, 3, -2, 3, 3, -2, 4, 4, -2, 5, 5, -2, 6, 6, -2, 7, 7, -2, -2));
+ TEST_REGEX_SEARCH("((?>a*))*", perl, "aaaaa", match_default, make_array(0, 5, 5, 5, -2, 5, 5, 5, 5, -2, -2));
+ TEST_REGEX_SEARCH("((?>a*))*", perl, "aabbaa", match_default, make_array(0, 2, 2, 2, -2, 2, 2, 2, 2, -2, 3, 3, 3, 3, -2, 4, 6, 6, 6, -2, 6, 6, 6, 6, -2, -2));
+ TEST_REGEX_SEARCH("((?>a*?))*", perl, "aaaaa", match_default, make_array(0, 0, 0, 0, -2, 1, 1, 1, 1, -2, 2, 2, 2, 2, -2, 3, 3, 3, 3, -2, 4, 4, 4, 4, -2, 5, 5, 5, 5, -2, -2));
+ TEST_REGEX_SEARCH("((?>a*?))*", perl, "aabbaa", match_default, make_array(0, 0, 0, 0, -2, 1, 1, 1, 1, -2, 2, 2, 2, 2, -2, 3, 3, 3, 3, -2, 4, 4, 4, 4, -2, 5, 5, 5, 5, -2, 6, 6, 6, 6, -2, -2));
+ TEST_REGEX_SEARCH("word (?>(?:(?!otherword)[a-zA-Z0-9]+ ){0,30})otherword", perl, "word cat dog elephant mussel cow horse canary baboon snake shark otherword", match_default, make_array(0, 74, -2, -2));
+ TEST_REGEX_SEARCH("word (?>(?:(?!otherword)[a-zA-Z0-9]+ ){0,30})otherword", perl, "word cat dog elephant mussel cow horse canary baboon snake shark", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("word (?>[a-zA-Z0-9]+ ){0,30}otherword", perl, "word cat dog elephant mussel cow horse canary baboon snake shark the quick brown fox and the lazy dog and several other words getting close to thirty by now I hope", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("word (?>[a-zA-Z0-9]+ ){0,30}otherword", perl, "word cat dog elephant mussel cow horse canary baboon snake shark the quick brown fox and the lazy dog and several other words getting close to thirty by now I really really hope otherword", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("((?>Z)+|A)+", perl, "ZABCDEFG", match_default, make_array(0, 2, 1, 2, -2, -2));
+ TEST_INVALID_REGEX("((?>)+|A)+", perl);
+}
+
+void test_conditionals()
+{
+ using namespace boost::regex_constants;
+ TEST_REGEX_SEARCH("(?:(a)|b)(?(1)A|B)", perl, "aA", match_default, make_array(0, 2, 0, 1, -2, -2));
+ TEST_REGEX_SEARCH("(?:(a)|b)(?(1)A|B)", perl, "bB", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("(?:(a)|b)(?(1)A|B)", perl, "aB", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("(?:(a)|b)(?(1)A|B)", perl, "bA", match_default, make_array(-2, -2));
+
+ TEST_REGEX_SEARCH("(a)?(?(1)A)B", perl, "aAB", match_default, make_array(0, 3, 0, 1, -2, -2));
+ TEST_REGEX_SEARCH("(a)?(?(1)A)B", perl, "B", match_default, make_array(0, 1, -1, -1, -2, -2));
+ TEST_REGEX_SEARCH("(a)?(?(1)|A)B", perl, "aB", match_default, make_array(0, 2, 0, 1, -2, -2));
+ TEST_REGEX_SEARCH("(a)?(?(1)|A)B", perl, "AB", match_default, make_array(0, 2, -1, -1, -2, -2));
+
+ TEST_REGEX_SEARCH("^(a)?(?(1)a|b)+$", perl, "aa", match_default, make_array(0, 2, 0, 1, -2, -2));
+ TEST_REGEX_SEARCH("^(a)?(?(1)a|b)+$", perl, "b", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("^(a)?(?(1)a|b)+$", perl, "bb", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("^(a)?(?(1)a|b)+$", perl, "ab", match_default, make_array(-2, -2));
+
+ TEST_REGEX_SEARCH("^(?(?=abc)\\w{3}:|\\d\\d)$", perl, "abc:", match_default, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("^(?(?=abc)\\w{3}:|\\d\\d)$", perl, "12", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("^(?(?=abc)\\w{3}:|\\d\\d)$", perl, "123", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("^(?(?=abc)\\w{3}:|\\d\\d)$", perl, "xyz", match_default, make_array(-2, -2));
+
+ TEST_REGEX_SEARCH("^(?(?!abc)\\d\\d|\\w{3}:)$", perl, "abc:", match_default, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("^(?(?!abc)\\d\\d|\\w{3}:)$", perl, "12", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("^(?(?!abc)\\d\\d|\\w{3}:)$", perl, "123", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("^(?(?!abc)\\d\\d|\\w{3}:)$", perl, "xyz", match_default, make_array(-2, -2));
+
+ TEST_REGEX_SEARCH("(?(?<=foo)bar|cat)", perl, "foobar", match_default, make_array(3, 6, -2, -2));
+ TEST_REGEX_SEARCH("(?(?<=foo)bar|cat)", perl, "cat", match_default, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("(?(?<=foo)bar|cat)", perl, "fcat", match_default, make_array(1, 4, -2, -2));
+ TEST_REGEX_SEARCH("(?(?<=foo)bar|cat)", perl, "focat", match_default, make_array(2, 5, -2, -2));
+ TEST_REGEX_SEARCH("(?(?<=foo)bar|cat)", perl, "foocat", match_default, make_array(-2, -2));
+
+ TEST_REGEX_SEARCH("(?(?<!foo)cat|bar)", perl, "foobar", match_default, make_array(3, 6, -2, -2));
+ TEST_REGEX_SEARCH("(?(?<!foo)cat|bar)", perl, "cat", match_default, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("(?(?<!foo)cat|bar)", perl, "fcat", match_default, make_array(1, 4, -2, -2));
+ TEST_REGEX_SEARCH("(?(?<!foo)cat|bar)", perl, "focat", match_default, make_array(2, 5, -2, -2));
+ TEST_REGEX_SEARCH("(?(?<!foo)cat|bar)", perl, "foocat", match_default, make_array(-2, -2));
+
+ TEST_REGEX_SEARCH("(\\()?[^()]+(?(1)\\))", perl, "abcd", match_default, make_array(0, 4, -1, -1, -2, -2));
+ TEST_REGEX_SEARCH("(\\()?[^()]+(?(1)\\))", perl, "(abcd)", match_default, make_array(0, 6, 0, 1, -2, -2));
+ TEST_REGEX_SEARCH("(\\()?[^()]+(?(1)\\))", perl, "the quick (abcd) fox", match_default, make_array(0, 10, -1, -1, -2, 10, 16, 10, 11, -2, 16, 20, -1, -1, -2, -2));
+ TEST_REGEX_SEARCH("(\\()?[^()]+(?(1)\\))", perl, "(abcd", match_default, make_array(1, 5, -1, -1, -2, -2));
+
+ TEST_REGEX_SEARCH("^(?(2)a|(1)(2))+$", perl, "12", match_default, make_array(0, 2, 0, 1, 1, 2, -2, -2));
+ TEST_REGEX_SEARCH("^(?(2)a|(1)(2))+$", perl, "12a", match_default, make_array(0, 3, 0, 1, 1, 2, -2, -2));
+ TEST_REGEX_SEARCH("^(?(2)a|(1)(2))+$", perl, "12aa", match_default, make_array(0, 4, 0, 1, 1, 2, -2, -2));
+ TEST_REGEX_SEARCH("^(?(2)a|(1)(2))+$", perl, "1234", match_default, make_array(-2, -2));
+
+ TEST_INVALID_REGEX("(a)(?(1)a|b|c)", perl);
+ TEST_INVALID_REGEX("(?(?=a)a|b|c)", perl);
+ TEST_INVALID_REGEX("(?(1a)", perl);
+ TEST_INVALID_REGEX("(?:(a)|b)(?(", perl);
+ TEST_INVALID_REGEX("(?:(a)|b)(?(1", perl);
+ TEST_INVALID_REGEX("(?:(a)|b)(?(1)", perl);
+ TEST_INVALID_REGEX("(?:(a)|b)(?(a", perl);
+ TEST_INVALID_REGEX("(?:(a)|b)(?(?", perl);
+ TEST_INVALID_REGEX("(?:(a)|b)(?(?:", perl);
+ TEST_INVALID_REGEX("(?:(a)|b)(?(?<", perl);
+ TEST_INVALID_REGEX("(?:(a)|b)(?(?<a", perl);
+}
+
+void test_options()
+{
+ // test the (?imsx) construct:
+ using namespace boost::regex_constants;
+ TEST_INVALID_REGEX("(?imsx", perl);
+ TEST_INVALID_REGEX("(?g", perl);
+ TEST_INVALID_REGEX("(?im-sx", perl);
+ TEST_INVALID_REGEX("(?im-sx:", perl);
+ TEST_INVALID_REGEX("(?-g)", perl);
+ TEST_REGEX_SEARCH("(?-m)^abc", perl, "abc\nabc", match_default, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("(?m)^abc", perl|no_mod_m, "abc\nabc", match_default, make_array(0, 3, -2, 4, 7, -2, -2));
+ TEST_REGEX_SEARCH("(?-m)^abc", perl, "abc\nabc", match_default, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("(?m)^abc", perl|no_mod_m, "abc\nabc", match_default, make_array(0, 3, -2, 4, 7, -2, -2));
+
+ TEST_REGEX_SEARCH(" ^ a (?# begins with a) b\\sc (?# then b c) $ (?# then end)", perl|mod_x, "ab c", match_default, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH(" ^ a (?# begins with a) b\\sc (?# then b c) $ (?# then end)", perl|mod_x, "abc", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH(" ^ a (?# begins with a) b\\sc (?# then b c) $ (?# then end)", perl|mod_x, "ab cde", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("(?x) ^ a (?# begins with a) b\\sc (?# then b c) $ (?# then end)", perl, "ab c", match_default, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("(?x) ^ a (?# begins with a) b\\sc (?# then b c) $ (?# then end)", perl, "abc", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("(?x) ^ a (?# begins with a) b\\sc (?# then b c) $ (?# then end)", perl, "ab cde", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("^ a\\ b[c ]d $", perl|mod_x, "a bcd", match_default, make_array(0, 5, -2, -2));
+ TEST_REGEX_SEARCH("^ a\\ b[c ]d $", perl|mod_x, "a b d", match_default, make_array(0, 5, -2, -2));
+ TEST_REGEX_SEARCH("^ a\\ b[c ]d $", perl|mod_x, "abcd", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("^ a\\ b[c ]d $", perl|mod_x, "ab d", match_default, make_array(-2, -2));
+
+ TEST_REGEX_SEARCH("^1234(?# test newlines\n inside)", perl|mod_x, "1234", match_default, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("^1234 #comment in extended re\n", perl|mod_x, "1234", match_default, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("#rhubarb\n abcd", perl|mod_x, "abcd", match_default, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("^1234 #comment in extended re\r\n", perl|mod_x, "1234", match_default, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("#rhubarb\r\n abcd", perl|mod_x, "abcd", match_default, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("^abcd#rhubarb", perl|mod_x, "abcd", match_default, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("^abcd#rhubarb", perl, "abcd#rhubarb", match_default, make_array(0, 12, -2, -2));
+ TEST_REGEX_SEARCH("^a b\n\n c", perl|mod_x, "abc", match_default, make_array(0, 3, -2, -2));
+
+ TEST_REGEX_SEARCH("(?(?=[^a-z]+[a-z]) \\d{2}-[a-z]{3}-\\d{2} | \\d{2}-\\d{2}-\\d{2} ) ", perl|mod_x, "12-sep-98", match_default, make_array(0, 9, -2, -2));
+ TEST_REGEX_SEARCH("(?(?=[^a-z]+[a-z]) \\d{2}-[a-z]{3}-\\d{2} | \\d{2}-\\d{2}-\\d{2} ) ", perl|mod_x, "12-09-98", match_default, make_array(0, 8, -2, -2));
+ TEST_REGEX_SEARCH("(?(?=[^a-z]+[a-z]) \\d{2}-[a-z]{3}-\\d{2} | \\d{2}-\\d{2}-\\d{2} ) ", perl|mod_x, "sep-12-98", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("^a (?#xxx) (?#yyy) {3}c", perl|mod_x, "aaac", match_default, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("a b", perl|mod_x, "ab", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH(" abc\\Q abc\\Eabc", perl|mod_x, "abc abcabc", match_default, make_array(0, 10, -2, -2));
+ TEST_REGEX_SEARCH(" abc\\Q abc\\Eabc", perl|mod_x, "abcabcabc", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("abc#comment\n \\Q#not comment\n literal\\E", perl|mod_x, "abc#not comment\n literal", match_default, make_array(0, 27, -2, -2));
+ TEST_REGEX_SEARCH("abc#comment\n \\Q#not comment\n literal", perl|mod_x, "abc#not comment\n literal", match_default, make_array(0, 27, -2, -2));
+ TEST_REGEX_SEARCH("abc#comment\n \\Q#not comment\n literal\\E #more comment\n ", perl|mod_x, "abc#not comment\n literal", match_default, make_array(0, 27, -2, -2));
+ TEST_REGEX_SEARCH("abc#comment\n \\Q#not comment\n literal\\E #more comment", perl|mod_x, "abc#not comment\n literal", match_default, make_array(0, 27, -2, -2));
+
+ TEST_REGEX_SEARCH("(a (?x)b c)d e", perl, "a bcd e", match_default, make_array(0, 7, 0, 4, -2, -2));
+ TEST_REGEX_SEARCH("(a (?x)b c)d e", perl, "a b cd e", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("(a (?x)b c)d e", perl, "abcd e", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("(a (?x)b c)d e", perl, "a bcde", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("(a b(?x)c d (?-x)e f)", perl, "a bcde f", match_default, make_array(0, 8, 0, 8, -2, -2));
+ TEST_REGEX_SEARCH("(a b(?x)c d (?-x)e f)", perl, "abcdef", match_default, make_array(-2, -2));
+
+ TEST_REGEX_SEARCH("a(?x: b c )d", perl, "XabcdY", match_default, make_array(1, 5, -2, -2));
+ TEST_REGEX_SEARCH("a(?x: b c )d", perl, "Xa b c d Y", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("((?x)x y z | a b c)", perl, "XabcY", match_default, make_array(1, 4, 1, 4, -2, -2));
+ TEST_REGEX_SEARCH("((?x)x y z | a b c)", perl, "AxyzB", match_default, make_array(1, 4, 1, 4, -2, -2));
+
+ TEST_REGEX_SEARCH("(a (?x)b c)d e", perl, "a bcd e", match_default, make_array(0, 7, 0, 4, -2, -2));
+ TEST_REGEX_SEARCH("(a (?x)b c)d e", perl, "a b cd e", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("(a (?x)b c)d e", perl, "abcd e", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("(a (?x)b c)d e", perl, "a bcde", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("(a b(?x)c d (?-x)e f)", perl, "a bcde f", match_default, make_array(0, 8, 0, 8, -2, -2));
+ TEST_REGEX_SEARCH("(a b(?x)c d (?-x)e f)", perl, "abcdef", match_default, make_array(-2, -2));
+}
+
+void test_options2()
+{
+ using namespace boost::regex_constants;
+ TEST_INVALID_REGEX("(?i-", perl);
+ TEST_INVALID_REGEX("(?i-s", perl);
+ TEST_INVALID_REGEX("(?i-sd)", perl);
+ TEST_REGEX_SEARCH("(a(?i)b)c", perl, "abc", match_default, make_array(0, 3, 0, 2, -2, -2));
+ TEST_REGEX_SEARCH("(a(?i)b)c", perl, "aBc", match_default, make_array(0, 3, 0, 2, -2, -2));
+ TEST_REGEX_SEARCH("(a(?i)b)c", perl, "abC", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("(a(?i)b)c", perl, "aBC", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("(a(?i)b)c", perl, "Abc", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("(a(?i)b)c", perl, "ABc", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("(a(?i)b)c", perl, "ABC", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("(a(?i)b)c", perl, "AbC", match_default, make_array(-2, -2));
+
+ TEST_REGEX_SEARCH("(a(?i)B)c", perl, "abc", match_default, make_array(0, 3, 0, 2, -2, -2));
+ TEST_REGEX_SEARCH("(a(?i)B)c", perl, "aBc", match_default, make_array(0, 3, 0, 2, -2, -2));
+ TEST_REGEX_SEARCH("(a(?i)B)c", perl, "abC", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("(a(?i)B)c", perl, "aBC", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("(a(?i)B)c", perl, "Abc", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("(a(?i)B)c", perl, "ABc", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("(a(?i)B)c", perl, "ABC", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("(a(?i)B)c", perl, "AbC", match_default, make_array(-2, -2));
+
+ TEST_REGEX_SEARCH("a(?i:b)c", perl, "abc", match_default, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("a(?i:b)c", perl, "aBc", match_default, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("a(?i:b)c", perl, "ABC", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("a(?i:b)c", perl, "abC", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("a(?i:b)c", perl, "aBC", match_default, make_array(-2, -2));
+
+ TEST_REGEX_SEARCH("a(?i:b)*c", perl, "aBc", match_default, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("a(?i:b)*c", perl, "aBBc", match_default, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("a(?i:b)*c", perl, "aBC", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("a(?i:b)*c", perl, "aBBC", match_default, make_array(-2, -2));
+
+ TEST_REGEX_SEARCH("a(?=b(?i)c)\\w\\wd", perl, "abcd", match_default, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("a(?=b(?i)c)\\w\\wd", perl, "abCd", match_default, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("a(?=b(?i)c)\\w\\wd", perl, "aBCd", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("a(?=b(?i)c)\\w\\wd", perl, "abcD", match_default, make_array(-2, -2));
+
+ TEST_REGEX_SEARCH("(?s-i:more.*than).*million", perl|icase, "more than million", match_default, make_array(0, 17, -2, -2));
+ TEST_REGEX_SEARCH("(?s-i:more.*than).*million", perl|icase, "more than MILLION", match_default, make_array(0, 17, -2, -2));
+ TEST_REGEX_SEARCH("(?s-i:more.*than).*million", perl|icase, "more \n than Million", match_default, make_array(0, 19, -2, -2));
+ TEST_REGEX_SEARCH("(?s-i:more.*than).*million", perl|icase, "MORE THAN MILLION", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("(?s-i:more.*than).*million", perl|icase|no_mod_s|no_mod_m, "more \n than \n million", match_default, make_array(-2, -2));
+
+ TEST_REGEX_SEARCH("(?:(?s-i)more.*than).*million", perl|icase, "more than million", match_default, make_array(0, 17, -2, -2));
+ TEST_REGEX_SEARCH("(?:(?s-i)more.*than).*million", perl|icase, "more than MILLION", match_default, make_array(0, 17, -2, -2));
+ TEST_REGEX_SEARCH("(?:(?s-i)more.*than).*million", perl|icase, "more \n than Million", match_default, make_array(0, 19, -2, -2));
+ TEST_REGEX_SEARCH("(?:(?s-i)more.*than).*million", perl|icase, "MORE THAN MILLION", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("(?:(?s-i)more.*than).*million", perl|icase|no_mod_s|no_mod_m, "more \n than \n million", match_default, make_array(-2, -2));
+
+ TEST_REGEX_SEARCH("(?>a(?i)b+)+c", perl, "abc", match_default, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("(?>a(?i)b+)+c", perl, "aBbc", match_default, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("(?>a(?i)b+)+c", perl, "aBBc", match_default, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("(?>a(?i)b+)+c", perl, "Abc", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("(?>a(?i)b+)+c", perl, "abAb", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("(?>a(?i)b+)+c", perl, "abbC", match_default, make_array(-2, -2));
+
+ TEST_REGEX_SEARCH("(?=a(?i)b)\\w\\wc", perl, "abc", match_default, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("(?=a(?i)b)\\w\\wc", perl, "aBc", match_default, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("(?=a(?i)b)\\w\\wc", perl, "Ab", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("(?=a(?i)b)\\w\\wc", perl, "abC", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("(?=a(?i)b)\\w\\wc", perl, "aBC", match_default, make_array(-2, -2));
+
+ TEST_REGEX_SEARCH("(?<=a(?i)b)(\\w\\w)c", perl, "abxxc", match_default, make_array(2, 5, 2, 4, -2, -2));
+ TEST_REGEX_SEARCH("(?<=a(?i)b)(\\w\\w)c", perl, "aBxxc", match_default, make_array(2, 5, 2, 4, -2, -2));
+ TEST_REGEX_SEARCH("(?<=a(?i)b)(\\w\\w)c", perl, "Abxxc", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("(?<=a(?i)b)(\\w\\w)c", perl, "ABxxc", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("(?<=a(?i)b)(\\w\\w)c", perl, "abxxC", match_default, make_array(-2, -2));
+
+ TEST_REGEX_SEARCH("(?<=^.{4})(?:bar|cat)", perl, "fooocat", match_default, make_array(4, 7, -2, -2));
+ TEST_REGEX_SEARCH("(?<=^.{4})(?:bar|cat)", perl, "foocat", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("(?<=^a{4})(?:bar|cat)", perl, "aaaacat", match_default, make_array(4, 7, -2, -2));
+ TEST_REGEX_SEARCH("(?<=^a{4})(?:bar|cat)", perl, "aaacat", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("(?<=^[[:alpha:]]{4})(?:bar|cat)", perl, "aaaacat", match_default, make_array(4, 7, -2, -2));
+ TEST_REGEX_SEARCH("(?<=^[[:alpha:]]{4})(?:bar|cat)", perl, "aaacat", match_default, make_array(-2, -2));
+
+ TEST_REGEX_SEARCH("(?<=ab(?i)x(?-i)y|(?i)z|b)ZZ", perl, "abxyZZ", match_default, make_array(4, 6, -2, -2));
+ TEST_REGEX_SEARCH("(?<=ab(?i)x(?-i)y|(?i)z|b)ZZ", perl, "abXyZZ", match_default, make_array(4, 6, -2, -2));
+ TEST_REGEX_SEARCH("(?:ab(?i)x(?-i)y|(?i)z|b)ZZ", perl, "ZZZ", match_default, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("(?:ab(?i)x(?-i)y|(?i)z|b)ZZ", perl, "zZZ", match_default, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("(?:ab(?i)x(?-i)y|(?i)z|b)ZZ", perl, "bZZ", match_default, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("(?:ab(?i)x(?-i)y|(?i)z|b)ZZ", perl, "BZZ", match_default, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("(?:ab(?i)x(?-i)y|(?i)z|b)ZZ", perl, "ZZ", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("(?:ab(?i)x(?-i)y|(?i)z|b)ZZ", perl, "abXYZZ", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("(?:ab(?i)x(?-i)y|(?i)z|b)ZZ", perl, "zzz", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("(?:ab(?i)x(?-i)y|(?i)z|b)ZZ", perl, "bzz", match_default, make_array(-2, -2));
+
+ TEST_REGEX_SEARCH("((?-i)[[:lower:]])[[:lower:]]", perl|icase, "ab", match_default, make_array(0, 2, 0, 1, -2, -2));
+ TEST_REGEX_SEARCH("((?-i)[[:lower:]])[[:lower:]]", perl|icase, "aB", match_default, make_array(0, 2, 0, 1, -2, -2));
+ TEST_REGEX_SEARCH("((?-i)[[:lower:]])[[:lower:]]", perl|icase, "Ab", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("((?-i)[[:lower:]])[[:lower:]]", perl|icase, "AB", match_default, make_array(-2, -2));
+
+ TEST_REGEX_SEARCH("a(?-i)b", perl|icase, "ab", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("a(?-i)b", perl|icase, "Ab", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("a(?-i)b", perl|icase, "aB", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("a(?-i)b", perl|icase, "AB", match_default, make_array(-2, -2));
+
+ TEST_REGEX_SEARCH("(?:(?-i)a)b", perl|icase, "ab", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("((?-i)a)b", perl|icase, "ab", match_default, make_array(0, 2, 0, 1, -2, -2));
+ TEST_REGEX_SEARCH("(?:(?-i)a)b", perl|icase, "aB", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("((?-i)a)b", perl|icase, "aB", match_default, make_array(0, 2, 0, 1, -2, -2));
+
+ TEST_REGEX_SEARCH("(?:(?-i)a)b", perl|icase, "Ab", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("(?:(?-i)a)b", perl|icase, "aB", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("((?-i)a)b", perl|icase, "aB", match_default, make_array(0, 2, 0, 1, -2, -2));
+
+ TEST_REGEX_SEARCH("(?:(?-i)a)b", perl|icase, "Ab", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("(?:(?-i)a)b", perl|icase, "AB", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("(?-i:a)b", perl|icase, "ab", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("((?-i:a))b", perl|icase, "ab", match_default, make_array(0, 2, 0, 1, -2, -2));
+ TEST_REGEX_SEARCH("(?-i:a)b", perl|icase, "aB", match_default, make_array(0, 2, -2, -2));
+
+ TEST_REGEX_SEARCH("((?-i:a))b", perl|icase, "aB", match_default, make_array(0, 2, 0, 1, -2, -2));
+ TEST_REGEX_SEARCH("(?-i:a)b", perl|icase, "AB", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("(?-i:a)b", perl|icase, "Ab", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("(?-i:a)b", perl|icase, "aB", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("((?-i:a))b", perl|icase, "aB", match_default, make_array(0, 2, 0, 1, -2, -2));
+ TEST_REGEX_SEARCH("(?-i:a)b", perl|icase, "Ab", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("(?-i:a)b", perl|icase, "AB", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("((?-i:a.))b", perl|icase, "AB", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("((?-i:a.))b", perl|icase, "A\nB", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("((?s-i:a.))b", perl|icase, "a\nB", match_default, make_array(0, 3, 0, 2, -2, -2));
+
+ TEST_REGEX_SEARCH(".", perl, "\n", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH(".", perl, "\n", match_default|match_not_dot_newline, make_array(-2, -2));
+ TEST_REGEX_SEARCH(".", perl|mod_s, "\n", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH(".", perl|mod_s, "\n", match_default|match_not_dot_newline, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH(".", perl|no_mod_s, "\n", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH(".", perl|no_mod_s, "\n", match_default|match_not_dot_newline, make_array(-2, -2));
+ TEST_REGEX_SEARCH("(?s).", perl, "\n", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("(?s).", perl, "\n", match_default|match_not_dot_newline, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("(?-s).", perl, "\n", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("(?-s).", perl, "\n", match_default|match_not_dot_newline, make_array(-2, -2));
+ test_options3();
+}
+
+void test_options3()
+{
+ using namespace boost::regex_constants;
+
+ TEST_REGEX_SEARCH(".+", perl, " \n ", match_default, make_array(0, 5, -2, -2));
+ TEST_REGEX_SEARCH(".+", perl, " \n ", match_default|match_not_dot_newline, make_array(0, 2, -2, 3, 5, -2, -2));
+ TEST_REGEX_SEARCH(".+", perl|mod_s, " \n ", match_default, make_array(0, 5, -2, -2));
+ TEST_REGEX_SEARCH(".+", perl|mod_s, " \n ", match_default|match_not_dot_newline, make_array(0, 5, -2, -2));
+ TEST_REGEX_SEARCH(".+", perl|no_mod_s, " \n ", match_default, make_array(0, 2, -2, 3, 5, -2, -2));
+ TEST_REGEX_SEARCH(".+", perl|no_mod_s, " \n ", match_default|match_not_dot_newline, make_array(0, 2, -2, 3, 5, -2, -2));
+ TEST_REGEX_SEARCH("(?s).+", perl, " \n ", match_default, make_array(0, 5, -2, -2));
+ TEST_REGEX_SEARCH("(?s).+", perl, " \n ", match_default|match_not_dot_newline, make_array(0, 5, -2, -2));
+ TEST_REGEX_SEARCH("(?-s).+", perl, " \n ", match_default, make_array(0, 2, -2, 3, 5, -2, -2));
+ TEST_REGEX_SEARCH("(?-s).+", perl, " \n ", match_default|match_not_dot_newline, make_array(0, 2, -2, 3, 5, -2, -2));
+
+ const char* big_expression =
+" (?: [\\040\\t] | \\(\n"
+"(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )*\n"
+"\\) )* # optional leading comment\n"
+"(?: (?:\n"
+"[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters...\n"
+"(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom\n"
+"|\n"
+"\" (?: # opening quote...\n"
+"[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote\n"
+"| # or\n"
+"\\\\ [^\\x80-\\xff] # Escaped something (something != CR)\n"
+")* \" # closing quote\n"
+") # initial word\n"
+"(?: (?: [\\040\\t] | \\(\n"
+"(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )*\n"
+"\\) )* \\. (?: [\\040\\t] | \\(\n"
+"(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )*\n"
+"\\) )* (?:\n"
+"[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters...\n"
+"(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom\n"
+"|\n"
+"\" (?: # opening quote...\n"
+"[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote\n"
+"| # or\n"
+"\\\\ [^\\x80-\\xff] # Escaped something (something != CR)\n"
+")* \" # closing quote\n"
+") )* # further okay, if led by a period\n"
+"(?: [\\040\\t] | \\(\n"
+"(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )*\n"
+"\\) )* @ (?: [\\040\\t] | \\(\n"
+"(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )*\n"
+"\\) )* (?:\n"
+"[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters...\n"
+"(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom\n"
+"| \\[ # [\n"
+"(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff\n"
+"\\] # ]\n"
+") # initial subdomain\n"
+"(?: #\n"
+"(?: [\\040\\t] | \\(\n"
+"(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )*\n"
+"\\) )* \\. # if led by a period...\n"
+"(?: [\\040\\t] | \\(\n"
+"(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )*\n"
+"\\) )* (?:\n"
+"[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters...\n"
+"(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom\n"
+"| \\[ # [\n"
+"(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff\n"
+"\\] # ]\n"
+") # ...further okay\n"
+")*\n"
+"# address\n"
+"| # or\n"
+"(?:\n"
+"[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters...\n"
+"(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom\n"
+"|\n"
+"\" (?: # opening quote...\n"
+"[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote\n"
+"| # or\n"
+"\\\\ [^\\x80-\\xff] # Escaped something (something != CR)\n"
+")* \" # closing quote\n"
+") # one word, optionally followed by....\n"
+"(?:\n"
+"[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037] | # atom and space parts, or...\n"
+"\\(\n"
+"(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )*\n"
+"\\) | # comments, or...\n"
+"\" (?: # opening quote...\n"
+"[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote\n"
+"| # or\n"
+"\\\\ [^\\x80-\\xff] # Escaped something (something != CR)\n"
+")* \" # closing quote\n"
+"# quoted strings\n"
+")*\n"
+"< (?: [\\040\\t] | \\(\n"
+"(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )*\n"
+"\\) )* # leading <\n"
+"(?: @ (?: [\\040\\t] | \\(\n"
+"(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )*\n"
+"\\) )* (?:\n"
+"[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters...\n"
+"(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom\n"
+"| \\[ # [\n"
+"(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff\n"
+"\\] # ]\n"
+") # initial subdomain\n"
+"(?: #\n"
+"(?: [\\040\\t] | \\(\n"
+"(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )*\n"
+"\\) )* \\. # if led by a period...\n"
+"(?: [\\040\\t] | \\(\n"
+"(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )*\n"
+"\\) )* (?:\n"
+"[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters...\n"
+"(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom\n"
+"| \\[ # [\n"
+"(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff\n"
+"\\] # ]\n"
+") # ...further okay\n"
+")*\n"
+"(?: (?: [\\040\\t] | \\(\n"
+"(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )*\n"
+"\\) )* , (?: [\\040\\t] | \\(\n"
+"(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )*\n"
+"\\) )* @ (?: [\\040\\t] | \\(\n"
+"(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )*\n"
+"\\) )* (?:\n"
+"[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters...\n"
+"(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom\n"
+"| \\[ # [\n"
+"(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff\n"
+"\\] # ]\n"
+") # initial subdomain\n"
+"(?: #\n"
+"(?: [\\040\\t] | \\(\n"
+"(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )*\n"
+"\\) )* \\. # if led by a period...\n"
+"(?: [\\040\\t] | \\(\n"
+"(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )*\n"
+"\\) )* (?:\n"
+"[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters...\n"
+"(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom\n"
+"| \\[ # [\n"
+"(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff\n"
+"\\] # ]\n"
+") # ...further okay\n"
+")*\n"
+")* # further okay, if led by comma\n"
+": # closing colon\n"
+"(?: [\\040\\t] | \\(\n"
+"(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )*\n"
+"\\) )* )? # optional route\n"
+"(?:\n"
+"[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters...\n"
+"(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom\n"
+"|\n"
+"\" (?: # opening quote...\n"
+"[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote\n"
+"| # or\n"
+"\\\\ [^\\x80-\\xff] # Escaped something (something != CR)\n"
+")* \" # closing quote\n"
+") # initial word\n"
+"(?: (?: [\\040\\t] | \\(\n"
+"(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )*\n"
+"\\) )* \\. (?: [\\040\\t] | \\(\n"
+"(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )*\n"
+"\\) )* (?:\n"
+"[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters...\n"
+"(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom\n"
+"|\n"
+"\" (?: # opening quote...\n"
+"[^\\\\\\x80-\\xff\\n\\015\"] # Anything except backslash and quote\n"
+"| # or\n"
+"\\\\ [^\\x80-\\xff] # Escaped something (something != CR)\n"
+")* \" # closing quote\n"
+") )* # further okay, if led by a period\n"
+"(?: [\\040\\t] | \\(\n"
+"(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )*\n"
+"\\) )* @ (?: [\\040\\t] | \\(\n"
+"(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )*\n"
+"\\) )* (?:\n"
+"[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters...\n"
+"(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom\n"
+"| \\[ # [\n"
+"(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff\n"
+"\\] # ]\n"
+") # initial subdomain\n"
+"(?: #\n"
+"(?: [\\040\\t] | \\(\n"
+"(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )*\n"
+"\\) )* \\. # if led by a period...\n"
+"(?: [\\040\\t] | \\(\n"
+"(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )*\n"
+"\\) )* (?:\n"
+"[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+ # some number of atom characters...\n"
+"(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]) # ..not followed by something that could be part of an atom\n"
+"| \\[ # [\n"
+"(?: [^\\\\\\x80-\\xff\\n\\015\\[\\]] | \\\\ [^\\x80-\\xff] )* # stuff\n"
+"\\] # ]\n"
+") # ...further okay\n"
+")*\n"
+"# address spec\n"
+"(?: [\\040\\t] | \\(\n"
+"(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )*\n"
+"\\) )* > # trailing >\n"
+"# name and address\n"
+") (?: [\\040\\t] | \\(\n"
+"(?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] | \\( (?: [^\\\\\\x80-\\xff\\n\\015()] | \\\\ [^\\x80-\\xff] )* \\) )*\n"
+"\\) )* # optional trailing comment\n"
+"\n";
+
+ do{
+ test_info<char>::set_info(__FILE__, __LINE__,
+ big_expression,
+ perl|mod_x, "Alan Other <user_at_dom.ain>", match_default,
+ make_array(0, 25, -2, -2));
+ test(char(0), test_regex_search_tag());
+ }while(0);
+#if !defined(BOOST_NO_WREGEX) && !defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS) && !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+ do{
+ std::string st(big_expression);
+ test_info<wchar_t>::set_info(__FILE__, __LINE__,
+ std::wstring(st.begin(), st.end()),
+ perl|mod_x, L"Alan Other <user_at_dom.ain>", match_default,
+ make_array(0, 25, -2, -2));
+ test(char(0), test_regex_search_tag());
+ }while(0);
+#endif
+ do{
+ test_info<char>::set_info(__FILE__, __LINE__,
+ big_expression,
+ perl|mod_x, "<user_at_dom.ain>", match_default,
+ make_array(1, 13, -2, -2));
+ test(char(0), test_regex_search_tag());
+ }while(0);
+#if !defined(BOOST_NO_WREGEX) && !defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS) && !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+ do{
+ std::string st(big_expression);
+ test_info<wchar_t>::set_info(__FILE__, __LINE__,
+ std::wstring(st.begin(), st.end()),
+ perl|mod_x, L"<user_at_dom.ain>", match_default,
+ make_array(1, 13, -2, -2));
+ test(char(0), test_regex_search_tag());
+ }while(0);
+#endif
+ do{
+ test_info<char>::set_info(__FILE__, __LINE__,
+ big_expression,
+ perl|mod_x, "\"A. Other\" <user.1234_at_dom.ain> (a comment)", match_default,
+ make_array(0, 42, -2, -2));
+ test(char(0), test_regex_search_tag());
+ }while(0);
+#if !defined(BOOST_NO_WREGEX) && !defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS) && !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+ do{
+ std::string st(big_expression);
+ test_info<wchar_t>::set_info(__FILE__, __LINE__,
+ std::wstring(st.begin(), st.end()),
+ perl|mod_x, L"\"A. Other\" <user.1234_at_dom.ain> (a comment)", match_default,
+ make_array(0, 42, -2, -2));
+ test(char(0), test_regex_search_tag());
+ }while(0);
+#endif
+ do{
+ test_info<char>::set_info(__FILE__, __LINE__,
+ big_expression,
+ perl|mod_x, "A. Other <user.1234_at_dom.ain> (a comment)", match_default,
+ make_array(2, 40, -2, -2));
+ test(char(0), test_regex_search_tag());
+ }while(0);
+#if !defined(BOOST_NO_WREGEX) && !defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS) && !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+ do{
+ std::string st(big_expression);
+ test_info<wchar_t>::set_info(__FILE__, __LINE__,
+ std::wstring(st.begin(), st.end()),
+ perl|mod_x, L"A. Other <user.1234_at_dom.ain> (a comment)", match_default,
+ make_array(2, 40, -2, -2));
+ test(char(0), test_regex_search_tag());
+ }while(0);
+#endif
+ do{
+ test_info<char>::set_info(__FILE__, __LINE__,
+ big_expression,
+ perl|mod_x, "\"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"@x400-re.lay", match_default,
+ make_array(0, 61, -2, -2));
+ test(char(0), test_regex_search_tag());
+ }while(0);
+#if !defined(BOOST_NO_WREGEX) && !defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS) && !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+ do{
+ std::string st(big_expression);
+ test_info<wchar_t>::set_info(__FILE__, __LINE__,
+ std::wstring(st.begin(), st.end()),
+ perl|mod_x, L"\"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"@x400-re.lay", match_default,
+ make_array(0, 61, -2, -2));
+ test(char(0), test_regex_search_tag());
+ }while(0);
+#endif
+ do{
+ test_info<char>::set_info(__FILE__, __LINE__,
+ big_expression,
+ perl|mod_x, "A missing angle <user_at_some.where", match_default,
+ make_array(17, 32, -2, -2));
+ test(char(0), test_regex_search_tag());
+ }while(0);
+#if !defined(BOOST_NO_WREGEX) && !defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS) && !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+ do{
+ std::string st(big_expression);
+ test_info<wchar_t>::set_info(__FILE__, __LINE__,
+ std::wstring(st.begin(), st.end()),
+ perl|mod_x, L"A missing angle <user_at_some.where", match_default,
+ make_array(17, 32, -2, -2));
+ test(char(0), test_regex_search_tag());
+ }while(0);
+#endif
+}
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_regex_replace.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_regex_replace.hpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,75 @@
+/*
+ *
+ * Copyright (c) 2004
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE test_regex_replace.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Declares tests for regex search and replace.
+ */
+
+#ifndef BOOST_REGEX_REGRESS_REGEX_REPLACE_HPP
+#define BOOST_REGEX_REGRESS_REGEX_REPLACE_HPP
+#include "info.hpp"
+
+template<class charT, class traits>
+void test_regex_replace(boost::basic_regex<charT, traits>& r)
+{
+ typedef std::basic_string<charT> string_type;
+ const string_type& search_text = test_info<charT>::search_text();
+ boost::regex_constants::match_flag_type opts = test_info<charT>::match_options();
+ const string_type& format_string = test_info<charT>::format_string();
+ const string_type& result_string = test_info<charT>::result_string();
+
+ string_type result = boost::regex_replace(search_text, r, format_string, opts);
+ if(result != result_string)
+ {
+ BOOST_REGEX_TEST_ERROR("regex_replace generated an incorrect string result", charT);
+ }
+}
+
+
+struct test_regex_replace_tag{};
+
+template<class charT, class traits>
+void test(boost::basic_regex<charT, traits>& r, const test_regex_replace_tag&)
+{
+ const std::basic_string<charT>& expression = test_info<charT>::expression();
+ boost::regex_constants::syntax_option_type syntax_options = test_info<charT>::syntax_options();
+ try{
+ r.assign(expression, syntax_options);
+ if(r.status())
+ {
+ BOOST_REGEX_TEST_ERROR("Expression did not compile when it should have done, error code = " << r.status(), charT);
+ }
+ test_regex_replace(r);
+ }
+ catch(const boost::bad_expression& e)
+ {
+ BOOST_REGEX_TEST_ERROR("Expression did not compile when it should have done: " << e.what(), charT);
+ }
+ catch(const std::runtime_error& r)
+ {
+ BOOST_REGEX_TEST_ERROR("Received an unexpected std::runtime_error: " << r.what(), charT);
+ }
+ catch(const std::exception& r)
+ {
+ BOOST_REGEX_TEST_ERROR("Received an unexpected std::exception: " << r.what(), charT);
+ }
+ catch(...)
+ {
+ BOOST_REGEX_TEST_ERROR("Received an unexpected exception of unknown type", charT);
+ }
+
+}
+
+#endif
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_regex_search.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_regex_search.hpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,459 @@
+/*
+ *
+ * Copyright (c) 2004
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE test_regex_search.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Declares tests for regex search and iteration.
+ */
+
+#ifndef BOOST_REGEX_REGRESS_REGEX_SEARCH_HPP
+#define BOOST_REGEX_REGRESS_REGEX_SEARCH_HPP
+#include "info.hpp"
+//
+// this file implements a test for a regular expression that should compile,
+// followed by a search for that expression:
+//
+struct test_regex_search_tag{};
+
+template <class BidirectionalIterator>
+void test_sub_match(const boost::sub_match<BidirectionalIterator>& sub, BidirectionalIterator base, const int* answer_table, int i)
+{
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4244)
+#endif
+ typedef typename boost::sub_match<BidirectionalIterator>::value_type charT;
+ if((sub.matched == 0)
+ &&
+ !((i == 0)
+ && (test_info<charT>::match_options() & boost::match_partial)) )
+ {
+ if(answer_table[2*i] >= 0)
+ {
+ BOOST_REGEX_TEST_ERROR(
+ "Sub-expression " << i
+ << " was not matched when it should have been.", charT);
+ }
+ }
+ else
+ {
+ if(boost::re_detail::distance(base, sub.first) != answer_table[2*i])
+ {
+ BOOST_REGEX_TEST_ERROR(
+ "Error in start location of sub-expression "
+ << i << ", found " << boost::re_detail::distance(base, sub.first)
+ << ", expected " << answer_table[2*i] << ".", charT);
+ }
+ if(boost::re_detail::distance(base, sub.second) != answer_table[1+ 2*i])
+ {
+ BOOST_REGEX_TEST_ERROR(
+ "Error in end location of sub-expression "
+ << i << ", found " << boost::re_detail::distance(base, sub.second)
+ << ", expected " << answer_table[1 + 2*i] << ".", charT);
+ }
+ }
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+}
+
+template <class BidirectionalIterator, class Allocator>
+void test_result(const boost::match_results<BidirectionalIterator, Allocator>& what, BidirectionalIterator base, const int* answer_table)
+{
+ for(unsigned i = 0; i < what.size(); ++i)
+ {
+ test_sub_match(what[i], base, answer_table, i);
+ }
+}
+
+template<class charT, class traits>
+void test_simple_search(boost::basic_regex<charT, traits>& r)
+{
+ typedef typename std::basic_string<charT>::const_iterator const_iterator;
+ const std::basic_string<charT>& search_text = test_info<charT>::search_text();
+ boost::regex_constants::match_flag_type opts = test_info<charT>::match_options();
+ const int* answer_table = test_info<charT>::answer_table();
+ boost::match_results<const_iterator> what;
+ if(boost::regex_search(
+ search_text.begin(),
+ search_text.end(),
+ what,
+ r,
+ opts))
+ {
+ test_result(what, search_text.begin(), answer_table);
+ // setting match_any should have no effect on the result returned:
+ if(!boost::regex_search(
+ search_text.begin(),
+ search_text.end(),
+ r,
+ opts|boost::regex_constants::match_any))
+ {
+ BOOST_REGEX_TEST_ERROR("Expected match was not found when using the match_any flag.", charT);
+ }
+ }
+ else
+ {
+ if(answer_table[0] >= 0)
+ {
+ // we should have had a match but didn't:
+ BOOST_REGEX_TEST_ERROR("Expected match was not found.", charT);
+ }
+ // setting match_any should have no effect on the result returned:
+ else if(boost::regex_search(
+ search_text.begin(),
+ search_text.end(),
+ r,
+ opts|boost::regex_constants::match_any))
+ {
+ BOOST_REGEX_TEST_ERROR("Unexpected match was found when using the match_any flag.", charT);
+ }
+ }
+}
+
+template<class charT, class traits>
+void test_regex_iterator(boost::basic_regex<charT, traits>& r)
+{
+ typedef typename std::basic_string<charT>::const_iterator const_iterator;
+ typedef boost::regex_iterator<const_iterator, charT, traits> test_iterator;
+ const std::basic_string<charT>& search_text = test_info<charT>::search_text();
+ boost::regex_constants::match_flag_type opts = test_info<charT>::match_options();
+ const int* answer_table = test_info<charT>::answer_table();
+ test_iterator start(search_text.begin(), search_text.end(), r, opts), end;
+ test_iterator copy(start);
+ const_iterator last_end = search_text.begin();
+ while(start != end)
+ {
+ if(start != copy)
+ {
+ BOOST_REGEX_TEST_ERROR("Failed iterator != comparison.", charT);
+ }
+ if(!(start == copy))
+ {
+ BOOST_REGEX_TEST_ERROR("Failed iterator == comparison.", charT);
+ }
+ test_result(*start, search_text.begin(), answer_table);
+ // test $` and $' :
+ if(start->prefix().first != last_end)
+ {
+ BOOST_REGEX_TEST_ERROR("Incorrect position for start of $`", charT);
+ }
+ if(start->prefix().second != (*start)[0].first)
+ {
+ BOOST_REGEX_TEST_ERROR("Incorrect position for end of $`", charT);
+ }
+ if(start->prefix().matched != (start->prefix().first != start->prefix().second))
+ {
+ BOOST_REGEX_TEST_ERROR("Incorrect position for matched member of $`", charT);
+ }
+ if(start->suffix().first != (*start)[0].second)
+ {
+ BOOST_REGEX_TEST_ERROR("Incorrect position for start of $'", charT);
+ }
+ if(start->suffix().second != search_text.end())
+ {
+ BOOST_REGEX_TEST_ERROR("Incorrect position for end of $'", charT);
+ }
+ if(start->suffix().matched != (start->suffix().first != start->suffix().second))
+ {
+ BOOST_REGEX_TEST_ERROR("Incorrect position for matched member of $'", charT);
+ }
+ last_end = (*start)[0].second;
+ ++start;
+ ++copy;
+ // move on the answer table to next set of answers;
+ if(*answer_table != -2)
+ while(*answer_table++ != -2){}
+ }
+ if(answer_table[0] >= 0)
+ {
+ // we should have had a match but didn't:
+ BOOST_REGEX_TEST_ERROR("Expected match was not found.", charT);
+ }
+}
+
+template<class charT, class traits>
+void test_regex_token_iterator(boost::basic_regex<charT, traits>& r)
+{
+ typedef typename std::basic_string<charT>::const_iterator const_iterator;
+ typedef boost::regex_token_iterator<const_iterator, charT, traits> test_iterator;
+ const std::basic_string<charT>& search_text = test_info<charT>::search_text();
+ boost::regex_constants::match_flag_type opts = test_info<charT>::match_options();
+ const int* answer_table = test_info<charT>::answer_table();
+ //
+ // we start by testing sub-expression 0:
+ //
+ test_iterator start(search_text.begin(), search_text.end(), r, 0, opts), end;
+ test_iterator copy(start);
+ while(start != end)
+ {
+ if(start != copy)
+ {
+ BOOST_REGEX_TEST_ERROR("Failed iterator != comparison.", charT);
+ }
+ if(!(start == copy))
+ {
+ BOOST_REGEX_TEST_ERROR("Failed iterator == comparison.", charT);
+ }
+ test_sub_match(*start, search_text.begin(), answer_table, 0);
+ ++start;
+ ++copy;
+ // move on the answer table to next set of answers;
+ if(*answer_table != -2)
+ while(*answer_table++ != -2){}
+ }
+ if(answer_table[0] >= 0)
+ {
+ // we should have had a match but didn't:
+ BOOST_REGEX_TEST_ERROR("Expected match was not found.", charT);
+ }
+ //
+ // and now field spitting:
+ //
+ test_iterator start2(search_text.begin(), search_text.end(), r, -1, opts), end2;
+ test_iterator copy2(start2);
+ int last_end2 = 0;
+ answer_table = test_info<charT>::answer_table();
+ while(start2 != end2)
+ {
+ if(start2 != copy2)
+ {
+ BOOST_REGEX_TEST_ERROR("Failed iterator != comparison.", charT);
+ }
+ if(!(start2 == copy2))
+ {
+ BOOST_REGEX_TEST_ERROR("Failed iterator == comparison.", charT);
+ }
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4244)
+#endif
+ if(boost::re_detail::distance(search_text.begin(), start2->first) != last_end2)
+ {
+ BOOST_REGEX_TEST_ERROR(
+ "Error in location of start of field split, found: "
+ << boost::re_detail::distance(search_text.begin(), start2->first)
+ << ", expected: "
+ << last_end2
+ << ".", charT);
+ }
+ int expected_end = static_cast<int>(answer_table[0] < 0 ? search_text.size() : answer_table[0]);
+ if(boost::re_detail::distance(search_text.begin(), start2->second) != expected_end)
+ {
+ BOOST_REGEX_TEST_ERROR(
+ "Error in location of end2 of field split, found: "
+ << boost::re_detail::distance(search_text.begin(), start2->second)
+ << ", expected: "
+ << expected_end
+ << ".", charT);
+ }
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+ last_end2 = answer_table[1];
+ ++start2;
+ ++copy2;
+ // move on the answer table to next set of answers;
+ if(*answer_table != -2)
+ while(*answer_table++ != -2){}
+ }
+ if(answer_table[0] >= 0)
+ {
+ // we should have had a match but didn't:
+ BOOST_REGEX_TEST_ERROR("Expected match was not found.", charT);
+ }
+#if !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+ //
+ // and now both field splitting and $0:
+ //
+ std::vector<int> subs;
+ subs.push_back(-1);
+ subs.push_back(0);
+ start2 = test_iterator(search_text.begin(), search_text.end(), r, subs, opts);
+ copy2 = start2;
+ last_end2 = 0;
+ answer_table = test_info<charT>::answer_table();
+ while(start2 != end2)
+ {
+ if(start2 != copy2)
+ {
+ BOOST_REGEX_TEST_ERROR("Failed iterator != comparison.", charT);
+ }
+ if(!(start2 == copy2))
+ {
+ BOOST_REGEX_TEST_ERROR("Failed iterator == comparison.", charT);
+ }
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4244)
+#endif
+ if(boost::re_detail::distance(search_text.begin(), start2->first) != last_end2)
+ {
+ BOOST_REGEX_TEST_ERROR(
+ "Error in location of start of field split, found: "
+ << boost::re_detail::distance(search_text.begin(), start2->first)
+ << ", expected: "
+ << last_end2
+ << ".", charT);
+ }
+ int expected_end = static_cast<int>(answer_table[0] < 0 ? search_text.size() : answer_table[0]);
+ if(boost::re_detail::distance(search_text.begin(), start2->second) != expected_end)
+ {
+ BOOST_REGEX_TEST_ERROR(
+ "Error in location of end2 of field split, found: "
+ << boost::re_detail::distance(search_text.begin(), start2->second)
+ << ", expected: "
+ << expected_end
+ << ".", charT);
+ }
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+ last_end2 = answer_table[1];
+ ++start2;
+ ++copy2;
+ if((start2 == end2) && (answer_table[0] >= 0))
+ {
+ BOOST_REGEX_TEST_ERROR(
+ "Expected $0 match not found", charT);
+ }
+ if(start2 != end2)
+ {
+ test_sub_match(*start2, search_text.begin(), answer_table, 0);
+ ++start2;
+ ++copy2;
+ }
+ // move on the answer table to next set of answers;
+ if(*answer_table != -2)
+ while(*answer_table++ != -2){}
+ }
+ if(answer_table[0] >= 0)
+ {
+ // we should have had a match but didn't:
+ BOOST_REGEX_TEST_ERROR("Expected match was not found.", charT);
+ }
+#endif
+}
+
+template <class charT, class traits>
+struct grep_test_predicate
+{
+ typedef typename std::basic_string<charT>::const_iterator test_iter;
+
+ grep_test_predicate(test_iter b, const int* a)
+ : m_base(b), m_table(a)
+ {}
+ bool operator()(const boost::match_results<test_iter>& what)
+ {
+ test_result(what, m_base, m_table);
+ // move on the answer table to next set of answers;
+ if(*m_table != -2)
+ while(*m_table++ != -2){}
+ return true;
+ }
+private:
+ test_iter m_base;
+ const int* m_table;
+};
+
+template<class charT, class traits>
+void test_regex_grep(boost::basic_regex<charT, traits>& r)
+{
+ typedef typename std::basic_string<charT>::const_iterator const_iterator;
+ const std::basic_string<charT>& search_text = test_info<charT>::search_text();
+ boost::regex_constants::match_flag_type opts = test_info<charT>::match_options();
+ const int* answer_table = test_info<charT>::answer_table();
+ grep_test_predicate<charT, traits> pred(search_text.begin(), answer_table);
+ boost::regex_grep(pred, search_text.begin(), search_text.end(), r, opts);
+}
+
+template<class charT, class traits>
+void test_regex_match(boost::basic_regex<charT, traits>& r)
+{
+ typedef typename std::basic_string<charT>::const_iterator const_iterator;
+ const std::basic_string<charT>& search_text = test_info<charT>::search_text();
+ boost::regex_constants::match_flag_type opts = test_info<charT>::match_options();
+ const int* answer_table = test_info<charT>::answer_table();
+ boost::match_results<const_iterator> what;
+ if(answer_table[0] < 0)
+ {
+ if(boost::regex_match(search_text, r, opts))
+ {
+ BOOST_REGEX_TEST_ERROR("boost::regex_match found a match when it should not have done so.", charT);
+ }
+ }
+ else
+ {
+ if((answer_table[0] > 0) && boost::regex_match(search_text, r, opts))
+ {
+ BOOST_REGEX_TEST_ERROR("boost::regex_match found a match when it should not have done so.", charT);
+ }
+ else if((answer_table[0] == 0) && (answer_table[1] == static_cast<int>(search_text.size())))
+ {
+ if(boost::regex_match(
+ search_text.begin(),
+ search_text.end(),
+ what,
+ r,
+ opts))
+ {
+ test_result(what, search_text.begin(), answer_table);
+ }
+ else if(answer_table[0] >= 0)
+ {
+ // we should have had a match but didn't:
+ BOOST_REGEX_TEST_ERROR("Expected match was not found.", charT);
+ }
+ }
+ }
+}
+
+template<class charT, class traits>
+void test(boost::basic_regex<charT, traits>& r, const test_regex_search_tag&)
+{
+ const std::basic_string<charT>& expression = test_info<charT>::expression();
+ boost::regex_constants::syntax_option_type syntax_options = test_info<charT>::syntax_options();
+ try{
+ r.assign(expression, syntax_options);
+ if(r.status())
+ {
+ BOOST_REGEX_TEST_ERROR("Expression did not compile when it should have done, error code = " << r.status(), charT);
+ }
+ test_simple_search(r);
+ test_regex_iterator(r);
+ test_regex_token_iterator(r);
+ test_regex_grep(r);
+ test_regex_match(r);
+ }
+ catch(const boost::bad_expression& e)
+ {
+ BOOST_REGEX_TEST_ERROR("Expression did not compile when it should have done: " << e.what(), charT);
+ }
+ catch(const std::runtime_error& r)
+ {
+ BOOST_REGEX_TEST_ERROR("Received an unexpected std::runtime_error: " << r.what(), charT);
+ }
+ catch(const std::exception& r)
+ {
+ BOOST_REGEX_TEST_ERROR("Received an unexpected std::exception: " << r.what(), charT);
+ }
+ catch(...)
+ {
+ BOOST_REGEX_TEST_ERROR("Received an unexpected exception of unknown type", charT);
+ }
+
+}
+
+
+
+#endif

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_replace.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_replace.cpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,119 @@
+/*
+ *
+ * Copyright (c) 2004
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+#include "test.hpp"
+
+#ifdef BOOST_MSVC
+#pragma warning(disable:4127)
+#endif
+
+void test_replace()
+{
+ using namespace boost::regex_constants;
+ // start by testing subs:
+ TEST_REGEX_REPLACE("a+", perl, "...aaa,,,", match_default|format_no_copy, "$`", "...");
+ TEST_REGEX_REPLACE("a+", perl, "...aaa,,,", match_default|format_no_copy, "$'", ",,,");
+ TEST_REGEX_REPLACE("a+", perl, "...aaa,,,", match_default|format_no_copy, "$&", "aaa");
+ TEST_REGEX_REPLACE("a+", perl, "...aaa,,,", match_default|format_no_copy, "$0", "aaa");
+ TEST_REGEX_REPLACE("a+", perl, "...aaa,,,", match_default|format_no_copy, "$1", "");
+ TEST_REGEX_REPLACE("a+", perl, "...aaa,,,", match_default|format_no_copy, "$15", "");
+ TEST_REGEX_REPLACE("(a+)b+", perl, "...aaabbb,,,", match_default|format_no_copy, "$1", "aaa");
+ TEST_REGEX_REPLACE("[[:digit:]]*", perl, "123ab", match_default|format_no_copy, "<$0>", "<123><><><>");
+ TEST_REGEX_REPLACE("[[:digit:]]*", perl, "123ab1", match_default|format_no_copy, "<$0>", "<123><><><1><>");
+ TEST_REGEX_REPLACE("a+", perl, "...aaa,,,", match_default|format_no_copy, "$`$", "...$");
+ TEST_REGEX_REPLACE("a+", perl, "...aaa,,,", match_default|format_no_copy, "(?1x:y)", "(?1x:y)");
+ // and now escapes:
+ TEST_REGEX_REPLACE("a+", perl, "...aaa,,,", match_default|format_no_copy, "$x", "$x");
+ TEST_REGEX_REPLACE("a+", perl, "...aaa,,,", match_default|format_no_copy, "\\a", "\a");
+ TEST_REGEX_REPLACE("a+", perl, "...aaa,,,", match_default|format_no_copy, "\\f", "\f");
+ TEST_REGEX_REPLACE("a+", perl, "...aaa,,,", match_default|format_no_copy, "\\n", "\n");
+ TEST_REGEX_REPLACE("a+", perl, "...aaa,,,", match_default|format_no_copy, "\\r", "\r");
+ TEST_REGEX_REPLACE("a+", perl, "...aaa,,,", match_default|format_no_copy, "\\t", "\t");
+ TEST_REGEX_REPLACE("a+", perl, "...aaa,,,", match_default|format_no_copy, "\\v", "\v");
+ TEST_REGEX_REPLACE("a+", perl, "...aaa,,,", match_default|format_no_copy, "\\", "\\");
+ TEST_REGEX_REPLACE("a+", perl, "...aaa,,,", match_default|format_no_copy, "\\x21", "!");
+ TEST_REGEX_REPLACE("a+", perl, "...aaa,,,", match_default|format_no_copy, "\\xz", "xz");
+ TEST_REGEX_REPLACE("a+", perl, "...aaa,,,", match_default|format_no_copy, "\\x", "x");
+ TEST_REGEX_REPLACE("a+", perl, "...aaa,,,", match_default|format_no_copy, "\\x{z}", "x{z}");
+ TEST_REGEX_REPLACE("a+", perl, "...aaa,,,", match_default|format_no_copy, "\\x{12b", "x{12b");
+ TEST_REGEX_REPLACE("a+", perl, "...aaa,,,", match_default|format_no_copy, "\\x{21}", "!");
+ TEST_REGEX_REPLACE("a+", perl, "...aaa,,,", match_default|format_no_copy, "\\c@", "\0");
+ TEST_REGEX_REPLACE("a+", perl, "...aaa,,,", match_default|format_no_copy, "\\c", "c");
+ TEST_REGEX_REPLACE("a+", perl, "...aaa,,,", match_default|format_no_copy, "\\e", "\x1B");
+ TEST_REGEX_REPLACE("a+", perl, "...aaa,,,", match_default|format_no_copy, "\\0101", "A");
+ TEST_REGEX_REPLACE("(a+)", perl, "...aaa,,,", match_default|format_no_copy, "\\u$1", "Aaa");
+ TEST_REGEX_REPLACE("(a+)", perl, "...aaa,,,", match_default|format_no_copy, "\\U$1", "AAA");
+ TEST_REGEX_REPLACE("(a+)", perl, "...aaa,,,", match_default|format_no_copy, "\\U$1\\E$1", "AAAaaa");
+ TEST_REGEX_REPLACE("(A+)", perl, "...AAA,,,", match_default|format_no_copy, "\\l$1", "aAA");
+ TEST_REGEX_REPLACE("(A+)", perl, "...AAA,,,", match_default|format_no_copy, "\\L$1", "aaa");
+ TEST_REGEX_REPLACE("(A+)", perl, "...AAA,,,", match_default|format_no_copy, "\\L$1\\E$1", "aaaAAA");
+ // sed format sequences:
+ TEST_REGEX_REPLACE("(a+)(b+)", perl, " ...aabb,,", match_default|format_sed|format_no_copy, "\\0", "aabb");
+ TEST_REGEX_REPLACE("(a+)(b+)", perl, " ...aabb,,", match_default|format_sed|format_no_copy, "\\1", "aa");
+ TEST_REGEX_REPLACE("(a+)(b+)", perl, " ...aabb,,", match_default|format_sed|format_no_copy, "\\2", "bb");
+ TEST_REGEX_REPLACE("(a+)(b+)", perl, " ...aabb,,", match_default|format_sed|format_no_copy, "&", "aabb");
+ TEST_REGEX_REPLACE("(a+)(b+)", perl, " ...aabb,,", match_default|format_sed|format_no_copy, "$", "$");
+ TEST_REGEX_REPLACE("(a+)(b+)", perl, " ...aabb,,", match_default|format_sed|format_no_copy, "$1", "$1");
+ TEST_REGEX_REPLACE("(a+)(b+)", perl, " ...aabb,,", match_default|format_sed|format_no_copy, "()?:", "()?:");
+ TEST_REGEX_REPLACE("(a+)(b+)", perl, " ...aabb,,", match_default|format_sed|format_no_copy, "\\\\", "\\");
+ TEST_REGEX_REPLACE("(a+)(b+)", perl, " ...aabb,,", match_default|format_sed|format_no_copy, "\\&", "&");
+ TEST_REGEX_REPLACE("(a+)(b+)", perl, " ...aabb,,", match_default|format_sed|format_no_copy, "\\l\\u\\L\\U\\E", "luLUE");
+
+ TEST_REGEX_REPLACE("(a+)(b+)", perl, " ...aabb,,", match_default|format_perl|format_no_copy, "$0", "aabb");
+ TEST_REGEX_REPLACE("(a+)(b+)", perl, " ...aabb,,", match_default|format_perl|format_no_copy, "$1", "aa");
+ TEST_REGEX_REPLACE("(a+)(b+)", perl, " ...aabb,,", match_default|format_perl|format_no_copy, "$2", "bb");
+ TEST_REGEX_REPLACE("(a+)(b+)", perl, " ...aabb,,", match_default|format_perl|format_no_copy, "$&", "aabb");
+ TEST_REGEX_REPLACE("(a+)(b+)", perl, " ...aabb,,", match_default|format_perl|format_no_copy, "$$", "$");
+ TEST_REGEX_REPLACE("(a+)(b+)", perl, " ...aabb,,", match_default|format_perl|format_no_copy, "&", "&");
+ TEST_REGEX_REPLACE("(a+)(b+)", perl, " ...aabb,,", match_default|format_perl|format_no_copy, "\\0", "\0");
+ TEST_REGEX_REPLACE("(a+)(b+)", perl, " ...aabb,,", match_default|format_perl|format_no_copy, "()?:", "()?:");
+ TEST_REGEX_REPLACE("a+", perl, "...aaa,,", match_default|format_perl|format_no_copy, "\\0101", "A");
+ TEST_REGEX_REPLACE("(a+)(b+)", perl, " ...aabb,,", match_default|format_perl|format_no_copy, "\\1", "aa");
+ TEST_REGEX_REPLACE("(a+)(b+)", perl, " ...aabb,,", match_default|format_perl|format_no_copy, "\\2", "bb");
+
+ // move to copying unmatched data:
+ TEST_REGEX_REPLACE("a+", perl, "...aaa,,,", match_default|format_all, "bbb", "...bbb,,,");
+ TEST_REGEX_REPLACE("a+(b+)", perl, "...aaabb,,,", match_default|format_all, "$1", "...bb,,,");
+ TEST_REGEX_REPLACE("a+(b+)", perl, "...aaabb,,,ab*abbb?", match_default|format_all, "$1", "...bb,,,b*bbb?");
+ TEST_REGEX_REPLACE("(a+)|(b+)", perl, "...aaabb,,,ab*abbb?", match_default|format_all, "(?1A)(?2B)", "...AB,,,AB*AB?");
+ TEST_REGEX_REPLACE("(a+)|(b+)", perl, "...aaabb,,,ab*abbb?", match_default|format_all, "?1A:B", "...AB,,,AB*AB?");
+ TEST_REGEX_REPLACE("(a+)|(b+)", perl, "...aaabb,,,ab*abbb?", match_default|format_all, "(?1A:B)C", "...ACBC,,,ACBC*ACBC?");
+ TEST_REGEX_REPLACE("(a+)|(b+)", perl, "...aaabb,,,ab*abbb?", match_default|format_all, "?1:B", "...B,,,B*B?");
+ // move to copying unmatched data, but replace first occurance only:
+ TEST_REGEX_REPLACE("a+", perl, "...aaa,,,", match_default|format_all|format_first_only, "bbb", "...bbb,,,");
+ TEST_REGEX_REPLACE("a+(b+)", perl, "...aaabb,,,", match_default|format_all|format_first_only, "$1", "...bb,,,");
+ TEST_REGEX_REPLACE("a+(b+)", perl, "...aaabb,,,ab*abbb?", match_default|format_all|format_first_only, "$1", "...bb,,,ab*abbb?");
+ TEST_REGEX_REPLACE("(a+)|(b+)", perl, "...aaabb,,,ab*abbb?", match_default|format_all|format_first_only, "(?1A)(?2B)", "...Abb,,,ab*abbb?");
+ TEST_REGEX_REPLACE("(a+)|(b+)", perl, "...aaabb,,,ab*abbb?", match_default|format_all, "?1A", "...A,,,A*A?");
+ TEST_REGEX_REPLACE("(a+)|(b+)", perl, "...aaabb,,,ab*abbb?", match_default|format_all, "?1:B", "...B,,,B*B?");
+ TEST_REGEX_REPLACE("(a+)|(b+)", perl, "...aaabb,,,ab*abbb?", match_default|format_all, "(?1A:(?2B))", "...AB,,,AB*AB?");
+ TEST_REGEX_REPLACE("X", literal, "XX", match_default, "Y", "YY");
+ TEST_REGEX_REPLACE("(a+)|(b+)", perl, "...aaabb,,,ab*abbb?", match_default|format_all, "(?", "...??,,,??*???");
+ TEST_REGEX_REPLACE("(a+)|(b+)", perl, "...aaabb,,,ab*abbb?", match_default|format_all, "(?a", "...?a?a,,,?a?a*?a?a?");
+ TEST_REGEX_REPLACE("(a+)|(b+)", perl, "...aaabb,,,ab*abbb?", match_default|format_all, "(?1A:(?2B))abc", "...AabcBabc,,,AabcBabc*AabcBabc?");
+ TEST_REGEX_REPLACE("a+(b+)", perl, "...aaabb,,,", match_default|format_all|format_no_copy, "(?2abc:def)", "def");
+ TEST_REGEX_REPLACE("a+(b+)", perl, "...aaabb,,,", match_default|format_all|format_no_copy, "(?1abc:def)", "abc");
+ TEST_REGEX_REPLACE("a+(b+)", perl, "...aaabb,,,", match_default|format_perl|format_no_copy, "(?1abc:def)", "(?1abc:def)");
+ TEST_REGEX_REPLACE("a+(b+)", perl, "...", match_default|format_perl, "(?1abc:def)", "...");
+ TEST_REGEX_REPLACE("a+(b+)", perl, "...", match_default|format_perl|format_no_copy, "(?1abc:def)", "");
+ // probe bug reports and other special cases:
+ TEST_REGEX_REPLACE("([^\\d]+).*", normal|icase, "tesd 999 test", match_default|format_all, "($1)replace", "tesd replace");
+ TEST_REGEX_REPLACE("(a)(b)", perl, "ab", match_default|format_all, "$1:$2", "a:b");
+ TEST_REGEX_REPLACE("(a(c)?)|(b)", perl, "acab", match_default|format_all, "(?1(?2(C:):A):B:)", "C:AB:");
+ TEST_REGEX_REPLACE("x", icase, "xx", match_default|format_all, "a", "aa");
+ TEST_REGEX_REPLACE("x", basic|icase, "xx", match_default|format_all, "a", "aa");
+ TEST_REGEX_REPLACE("x", extended|icase, "xx", match_default|format_all, "a", "aa");
+ TEST_REGEX_REPLACE("x", emacs|icase, "xx", match_default|format_all, "a", "aa");
+ TEST_REGEX_REPLACE("x", literal|icase, "xx", match_default|format_all, "a", "aa");
+ // literals:
+ TEST_REGEX_REPLACE("(a(c)?)|(b)", perl, "acab", match_default|format_literal, "\\&$", "\\&$\\&$\\&$");
+}
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_sets.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_sets.cpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,402 @@
+/*
+ *
+ * Copyright (c) 2004
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+#include "test.hpp"
+
+#ifdef BOOST_MSVC
+#pragma warning(disable:4127)
+#endif
+
+void test_sets()
+{
+ using namespace boost::regex_constants;
+ // now test the set operator []
+ TEST_REGEX_SEARCH("[abc]", extended, "a", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("[abc]", extended, "b", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("[abc]", extended, "c", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("[abc]", extended, "d", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("[^bcd]", extended, "a", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("[^bcd]", extended, "b", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("[^bcd]", extended, "d", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("[^bcd]", extended, "e", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("a[b]c", extended, "abc", match_default, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("a[ab]c", extended, "abc", match_default, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("a[a^b]*c", extended, "aba^c", match_default, make_array(0, 5, -2, -2));
+ TEST_REGEX_SEARCH("a[^ab]c", extended, "adc", match_default, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("a[]b]c", extended, "a]c", match_default, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("a[[b]c", extended, "a[c", match_default, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("a[-b]c", extended, "a-c", match_default, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("a[^]b]c", extended, "adc", match_default, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("a[^-b]c", extended, "adc", match_default, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("a[b-]c", extended, "a-c", match_default, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("a[a-z-]c", extended, "a-c", match_default, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("a[a-z-]+c", extended, "aaz-c", match_default, make_array(0, 5, -2, -2));
+ TEST_INVALID_REGEX("a[b", extended);
+ TEST_INVALID_REGEX("a[", extended);
+ TEST_INVALID_REGEX("a[]", extended);
+
+ // now some ranges:
+ TEST_REGEX_SEARCH("[b-e]", extended, "a", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("[b-e]", extended, "b", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("[b-e]", extended, "e", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("[b-e]", extended, "f", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("[^b-e]", extended, "a", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("[^b-e]", extended, "b", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("[^b-e]", extended, "e", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("[^b-e]", extended, "f", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("a[1-3]c", extended, "a2c", match_default, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("a[-3]c", extended, "a-c", match_default, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("a[-3]c", extended, "a3c", match_default, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("a[^-3]c", extended, "a-c", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("a[^-3]c", extended, "a3c", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("a[^-3]c", extended, "axc", match_default, make_array(0, 3, -2, -2));
+ TEST_INVALID_REGEX("a[3-1]c", extended & ~::boost::regex_constants::collate);
+ TEST_INVALID_REGEX("a[1-3-5]c", extended);
+ TEST_INVALID_REGEX("a[1-", extended);
+ TEST_INVALID_REGEX("a[\\9]", perl);
+
+ // and some classes
+ TEST_REGEX_SEARCH("a[[:alpha:]]c", extended, "abc", match_default, make_array(0, 3, -2, -2));
+ TEST_INVALID_REGEX("a[[:unknown:]]c", extended);
+ TEST_INVALID_REGEX("a[[", extended);
+ TEST_INVALID_REGEX("a[[:", extended);
+ TEST_INVALID_REGEX("a[[:a", extended);
+ TEST_INVALID_REGEX("a[[:alpha", extended);
+ TEST_INVALID_REGEX("a[[:alpha:", extended);
+ TEST_INVALID_REGEX("a[[:alpha:]", extended);
+ TEST_INVALID_REGEX("a[[:alpha:!", extended);
+ TEST_INVALID_REGEX("a[[:alpha,:]", extended);
+ TEST_INVALID_REGEX("a[[:]:]]b", extended);
+ TEST_INVALID_REGEX("a[[:-:]]b", extended);
+ TEST_INVALID_REGEX("a[[:alph:]]", extended);
+ TEST_INVALID_REGEX("a[[:alphabet:]]", extended);
+ TEST_REGEX_SEARCH("[[:alnum:]]+", extended, "-%_at_a0X_-", match_default, make_array(3, 6, -2, -2));
+ TEST_REGEX_SEARCH("[[:alpha:]]+", extended, " -%_at_aX_0-", match_default, make_array(4, 6, -2, -2));
+ TEST_REGEX_SEARCH("[[:blank:]]+", extended, "a \tb", match_default, make_array(1, 4, -2, -2));
+ TEST_REGEX_SEARCH("[[:cntrl:]]+", extended, " a\n\tb", match_default, make_array(2, 4, -2, -2));
+ TEST_REGEX_SEARCH("[[:digit:]]+", extended, "a019b", match_default, make_array(1, 4, -2, -2));
+ TEST_REGEX_SEARCH("[[:graph:]]+", extended, " a%b ", match_default, make_array(1, 4, -2, -2));
+ TEST_REGEX_SEARCH("[[:lower:]]+", extended, "AabC", match_default, make_array(1, 3, -2, -2));
+ TEST_REGEX_SEARCH("[[:print:]]+", extended, "AabC", match_default, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("[[:punct:]]+", extended, " %-&\t", match_default, make_array(1, 4, -2, -2));
+ TEST_REGEX_SEARCH("[[:space:]]+", extended, "a \n\t\rb", match_default, make_array(1, 5, -2, -2));
+ TEST_REGEX_SEARCH("[[:upper:]]+", extended, "aBCd", match_default, make_array(1, 3, -2, -2));
+ TEST_REGEX_SEARCH("[[:xdigit:]]+", extended, "p0f3Cx", match_default, make_array(1, 5, -2, -2));
+ TEST_REGEX_SEARCH("[\\d]+", perl, "a019b", match_default, make_array(1, 4, -2, -2));
+
+ //
+ // escapes are supported in character classes if we have either
+ // perl or awk regular expressions:
+ //
+ TEST_REGEX_SEARCH("[\\n]", perl, "\n", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("[\\b]", perl, "\b", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("[\\n]", basic, "\n", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("[\\n]", basic, "\\", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("[[:class:]", basic|no_char_classes, ":", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("[[:class:]", basic|no_char_classes, "[", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("[[:class:]", basic|no_char_classes, "c", match_default, make_array(0, 1, -2, -2));
+ //
+ // test single character escapes:
+ //
+ TEST_REGEX_SEARCH("\\w", perl, "A", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("\\w", perl, "Z", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("\\w", perl, "a", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("\\w", perl, "z", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("\\w", perl, "_", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("\\w", perl, "}", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("\\w", perl, "`", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("\\w", perl, "[", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("\\w", perl, "@", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("\\W", perl, "a", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("\\W", perl, "z", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("\\W", perl, "A", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("\\W", perl, "Z", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("\\W", perl, "_", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("\\W", perl, "}", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("\\W", perl, "`", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("\\W", perl, "[", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("\\W", perl, "@", match_default, make_array(0, 1, -2, -2));
+
+ TEST_REGEX_SEARCH("[[:lower:]]", perl|icase, "A", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("[[:upper:]]", perl|icase, "A", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("[[:alpha:]]", perl|icase, "A", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("[[:alnum:]]", perl|icase, "A", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("[[:lower:]]", perl|icase, "a", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("[[:upper:]]", perl|icase, "a", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("[[:alpha:]]", perl|icase, "a", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("[[:alnum:]]", perl|icase, "a", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("[[:lower:][:upper:]]", perl, "A", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("[[:lower:][:upper:]]", perl, "a", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("[[:lower:][:alpha:]]", perl, "A", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("[[:lower:][:alpha:]]", perl, "a", match_default, make_array(0, 1, -2, -2));
+}
+
+void test_sets2b();
+void test_sets2c();
+
+void test_sets2()
+{
+ using namespace boost::regex_constants;
+ // collating elements
+ TEST_REGEX_SEARCH("[[.zero.]]", perl, "0", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("[[.one.]]", perl, "1", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("[[.two.]]", perl, "2", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("[[.three.]]", perl, "3", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("[[.a.]]", perl, "bac", match_default, make_array(1, 2, -2, -2));
+ TEST_REGEX_SEARCH("[[.\xf0.]]", perl, "b\xf0x", match_default, make_array(1, 2, -2, -2));
+ TEST_REGEX_SEARCH("[[.right-curly-bracket.]]", perl, "}", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("[[.NUL.]]", perl, "\0", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("[[.NUL.][.ae.]]", perl, "\0", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("[[.NUL.]-a]", extended, "\0", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("[[.NUL.]-a]", perl, "\0", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("[[.NUL.]-a]", extended, "a", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("[[.NUL.]-a]", perl, "a", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("[[.NUL.]-[.NUL.]a]", extended, "a", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("[[.NUL.]-[.NUL.]a]", perl, "a", match_default, make_array(0, 1, -2, -2));
+ TEST_INVALID_REGEX("[[..]]", perl);
+ TEST_INVALID_REGEX("[[.not-a-collating-element.]]", perl);
+ TEST_INVALID_REGEX("[[.", perl);
+ TEST_INVALID_REGEX("[[.N", perl);
+ TEST_INVALID_REGEX("[[.NUL", perl);
+ TEST_INVALID_REGEX("[[.NUL.", perl);
+ TEST_INVALID_REGEX("[[.NUL.]", perl);
+ TEST_INVALID_REGEX("[[:<:]z]", perl);
+ TEST_INVALID_REGEX("[a[:>:]]", perl);
+ TEST_REGEX_SEARCH("[[.A.]]", extended|icase, "A", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("[[.A.]]", extended|icase, "a", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("[[.A.]-b]+", extended|icase, "AaBb", match_default, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("[A-[.b.]]+", extended|icase, "AaBb", match_default, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("[[.a.]-B]+", extended|icase, "AaBb", match_default, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("[a-[.B.]]+", extended|icase, "AaBb", match_default, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("[\x61]", extended, "a", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("[\x61-c]+", extended, "abcd", match_default, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("[a-\x63]+", extended, "abcd", match_default, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("[[.a.]-c]+", extended, "abcd", match_default, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("[a-[.c.]]+", extended, "abcd", match_default, make_array(0, 3, -2, -2));
+ TEST_INVALID_REGEX("[[:alpha:]-a]", extended);
+ TEST_INVALID_REGEX("[a-[:alpha:]]", extended);
+ TEST_REGEX_SEARCH("[[.ae.]]", basic, "ae", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("[[.ae.]]", basic, "aE", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("[[.AE.]]", basic, "AE", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("[[.Ae.]]", basic, "Ae", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("[[.ae.]-b]", basic, "a", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("[[.ae.]-b]", basic, "b", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("[[.ae.]-b]", basic, "ae", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("[a-[.ae.]]", basic, "a", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("[a-[.ae.]]", basic, "b", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("[a-[.ae.]]", basic, "ae", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("[[.ae.]]", basic|icase, "AE", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("[[.ae.]]", basic|icase, "Ae", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("[[.AE.]]", basic|icase, "Ae", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("[[.Ae.]]", basic|icase, "aE", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("[[.AE.]-B]", basic|icase, "a", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("[[.Ae.]-b]", basic|icase, "b", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("[[.Ae.]-b]", basic|icase, "B", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("[[.ae.]-b]", basic|icase, "AE", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("[[.ae.]]", perl, "ae", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("[[.ae.]]", perl, "aE", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("[[.AE.]]", perl, "AE", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("[[.Ae.]]", perl, "Ae", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("[[.ae.]-b]", perl, "a", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("[[.ae.]-b]", perl, "b", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("[[.ae.]-b]", perl, "ae", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("[a-[.ae.]]", perl, "a", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("[a-[.ae.]]", perl, "b", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("[a-[.ae.]]", perl, "ae", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("[[.ae.]]", perl|icase, "AE", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("[[.ae.]]", perl|icase, "Ae", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("[[.AE.]]", perl|icase, "Ae", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("[[.Ae.]]", perl|icase, "aE", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("[[.AE.]-B]", perl|icase, "a", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("[[.Ae.]-b]", perl|icase, "b", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("[[.Ae.]-b]", perl|icase, "B", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("[[.ae.]-b]", perl|icase, "AE", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("[[.ae.][:lower:]]", perl|icase, "AE", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("[[.ae.][:lower:]]", perl|icase, "A", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("[[.ae.][=a=]]+", perl, "zzaA", match_default, make_array(2, 4, -2, -2));
+ TEST_INVALID_REGEX("[d-[.ae.]]", perl);
+ //
+ // try some equivalence classes:
+ //
+ TEST_REGEX_SEARCH("[[=a=]]", basic, "a", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("[[=a=]]", basic, "A", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("[[=ae=]]", basic, "ae", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("[[=right-curly-bracket=]]", basic, "}", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("[[=NUL=]]", basic, "\x0", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("[[=NUL=]]", perl, "\x0", match_default, make_array(0, 1, -2, -2));
+ TEST_INVALID_REGEX("[[=", perl);
+ TEST_INVALID_REGEX("[[=a", perl);
+ TEST_INVALID_REGEX("[[=ae", perl);
+ TEST_INVALID_REGEX("[[=ae=", perl);
+ TEST_INVALID_REGEX("[[=ae=]", perl);
+ //
+ // now some perl style single character classes:
+ //
+ TEST_REGEX_SEARCH("\\l+", perl, "ABabcAB", match_default, make_array(2, 5, -2, -2));
+ TEST_REGEX_SEARCH("[\\l]+", perl, "ABabcAB", match_default, make_array(2, 5, -2, -2));
+ TEST_INVALID_REGEX("[\\l-a]", perl);
+ TEST_REGEX_SEARCH("[\\L]+", perl, "abABCab", match_default, make_array(2, 5, -2, -2));
+ TEST_REGEX_SEARCH("[[:^lower:]]+", perl, "abABCab", match_default, make_array(2, 5, -2, -2));
+ TEST_REGEX_SEARCH("\\L+", perl, "abABCab", match_default, make_array(2, 5, -2, -2));
+ TEST_REGEX_SEARCH("\\u+", perl, "abABCab", match_default, make_array(2, 5, -2, -2));
+ TEST_REGEX_SEARCH("[\\u]+", perl, "abABCab", match_default, make_array(2, 5, -2, -2));
+ TEST_REGEX_SEARCH("[\\U]+", perl, "ABabcAB", match_default, make_array(2, 5, -2, -2));
+ TEST_REGEX_SEARCH("[[:^upper:]]+", perl, "ABabcAB", match_default, make_array(2, 5, -2, -2));
+ TEST_REGEX_SEARCH("\\U+", perl, "ABabcAB", match_default, make_array(2, 5, -2, -2));
+ TEST_REGEX_SEARCH("\\d+", perl, "AB012AB", match_default, make_array(2, 5, -2, -2));
+ TEST_REGEX_SEARCH("[\\d]+", perl, "AB012AB", match_default, make_array(2, 5, -2, -2));
+ TEST_REGEX_SEARCH("[\\D]+", perl, "01abc01", match_default, make_array(2, 5, -2, -2));
+ TEST_REGEX_SEARCH("[[:^digit:]]+", perl, "01abc01", match_default, make_array(2, 5, -2, -2));
+ TEST_REGEX_SEARCH("\\D+", perl, "01abc01", match_default, make_array(2, 5, -2, -2));
+ TEST_REGEX_SEARCH("\\s+", perl, "AB AB", match_default, make_array(2, 5, -2, -2));
+ TEST_REGEX_SEARCH("[\\s]+", perl, "AB AB", match_default, make_array(2, 5, -2, -2));
+ TEST_REGEX_SEARCH("[\\S]+", perl, " abc ", match_default, make_array(2, 5, -2, -2));
+ TEST_REGEX_SEARCH("[[:^space:]]+", perl, " abc ", match_default, make_array(2, 5, -2, -2));
+ TEST_REGEX_SEARCH("\\S+", perl, " abc ", match_default, make_array(2, 5, -2, -2));
+ TEST_REGEX_SEARCH("\\s+", perl, "AB AB", match_default, make_array(2, 5, -2, -2));
+ TEST_REGEX_SEARCH("[\\w]+", perl, "AB_ AB", match_default, make_array(0, 3, -2, 6, 8, -2, -2));
+ TEST_REGEX_SEARCH("[\\W]+", perl, "AB_ AB", match_default, make_array(3, 6, -2, -2));
+ TEST_REGEX_SEARCH("[[:^word:]]+", perl, "AB_ AB", match_default, make_array(3, 6, -2, -2));
+ TEST_REGEX_SEARCH("\\W+", perl, "AB_ AB", match_default, make_array(3, 6, -2, -2));
+ test_sets2c();
+}
+
+void test_sets2c()
+{
+ using namespace boost::regex_constants;
+ // and some Perl style properties:
+ TEST_REGEX_SEARCH("\\pl+", perl, "ABabcAB", match_default, make_array(2, 5, -2, -2));
+ TEST_REGEX_SEARCH("\\Pl+", perl, "abABCab", match_default, make_array(2, 5, -2, -2));
+ TEST_REGEX_SEARCH("\\pu+", perl, "abABCab", match_default, make_array(2, 5, -2, -2));
+ TEST_REGEX_SEARCH("\\Pu+", perl, "ABabcAB", match_default, make_array(2, 5, -2, -2));
+ TEST_REGEX_SEARCH("\\pd+", perl, "AB012AB", match_default, make_array(2, 5, -2, -2));
+ TEST_REGEX_SEARCH("\\PD+", perl, "01abc01", match_default, make_array(2, 5, -2, -2));
+ TEST_REGEX_SEARCH("\\ps+", perl, "AB AB", match_default, make_array(2, 5, -2, -2));
+ TEST_REGEX_SEARCH("\\PS+", perl, " abc ", match_default, make_array(2, 5, -2, -2));
+
+ TEST_REGEX_SEARCH("\\p{alnum}+", perl, "-%_at_a0X_-", match_default, make_array(3, 6, -2, -2));
+ TEST_REGEX_SEARCH("\\p{alpha}+", perl, " -%_at_aX_0-", match_default, make_array(4, 6, -2, -2));
+ TEST_REGEX_SEARCH("\\p{blank}+", perl, "a \tb", match_default, make_array(1, 4, -2, -2));
+ TEST_REGEX_SEARCH("\\p{cntrl}+", perl, " a\n\tb", match_default, make_array(2, 4, -2, -2));
+ TEST_REGEX_SEARCH("\\p{digit}+", perl, "a019b", match_default, make_array(1, 4, -2, -2));
+ TEST_REGEX_SEARCH("\\p{graph}+", perl, " a%b ", match_default, make_array(1, 4, -2, -2));
+ TEST_REGEX_SEARCH("\\p{lower}+", perl, "AabC", match_default, make_array(1, 3, -2, -2));
+ TEST_REGEX_SEARCH("\\p{print}+", perl, "AabC", match_default, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("\\p{punct}+", perl, " %-&\t", match_default, make_array(1, 4, -2, -2));
+ TEST_REGEX_SEARCH("\\p{space}+", perl, "a \n\t\rb", match_default, make_array(1, 5, -2, -2));
+ TEST_REGEX_SEARCH("\\p{upper}+", perl, "aBCd", match_default, make_array(1, 3, -2, -2));
+ TEST_REGEX_SEARCH("\\p{xdigit}+", perl, "p0f3Cx", match_default, make_array(1, 5, -2, -2));
+ TEST_REGEX_SEARCH("\\P{alnum}+", perl, "-%_at_a", match_default, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("\\P{alpha}+", perl, " -%_at_a", match_default, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("\\P{blank}+", perl, "a ", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("\\P{cntrl}+", perl, " a\n", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("\\P{digit}+", perl, "a0", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("\\P{graph}+", perl, " a", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("\\P{lower}+", perl, "Aa", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("\\P{print}+", perl, "Absc", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("\\P{punct}+", perl, " %", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("\\P{space}+", perl, "a ", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("\\P{upper}+", perl, "aB", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("\\P{xdigit}+", perl, "pf", match_default, make_array(0, 1, -2, -2));
+
+ TEST_INVALID_REGEX("\\p{invalid class}", perl);
+ TEST_INVALID_REGEX("\\p{upper", perl);
+ TEST_INVALID_REGEX("\\p{", perl);
+ TEST_INVALID_REGEX("\\p", perl);
+ TEST_INVALID_REGEX("\\P{invalid class}", perl);
+ TEST_INVALID_REGEX("\\P{upper", perl);
+ TEST_INVALID_REGEX("\\P{", perl);
+ TEST_INVALID_REGEX("\\P", perl);
+
+ // try named characters:
+ TEST_REGEX_SEARCH("\\N{zero}", perl, "0", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("\\N{one}", perl, "1", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("\\N{two}", perl, "2", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("\\N{three}", perl, "3", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("\\N{a}", perl, "bac", match_default, make_array(1, 2, -2, -2));
+ TEST_REGEX_SEARCH("\\N{\xf0}", perl, "b\xf0x", match_default, make_array(1, 2, -2, -2));
+ TEST_REGEX_SEARCH("\\N{right-curly-bracket}", perl, "}", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("\\N{NUL}", perl, "\0", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("[\\N{zero}-\\N{nine}]+", perl, " 0123456789 ", match_default, make_array(1, 11, -2, -2));
+
+ TEST_INVALID_REGEX("\\N", perl);
+ TEST_INVALID_REGEX("\\N{", perl);
+ TEST_INVALID_REGEX("\\N{}", perl);
+ TEST_INVALID_REGEX("\\N{invalid-name}", perl);
+ TEST_INVALID_REGEX("\\N{zero", perl);
+ test_sets2b();
+}
+
+void test_sets2b()
+{
+ using namespace boost::regex_constants;
+
+ // and repeat with POSIX-extended syntax:
+ TEST_REGEX_SEARCH("\\pl+", extended, "ABabcAB", match_default, make_array(2, 5, -2, -2));
+ TEST_REGEX_SEARCH("\\Pl+", extended, "abABCab", match_default, make_array(2, 5, -2, -2));
+ TEST_REGEX_SEARCH("\\pu+", extended, "abABCab", match_default, make_array(2, 5, -2, -2));
+ TEST_REGEX_SEARCH("\\Pu+", extended, "ABabcAB", match_default, make_array(2, 5, -2, -2));
+ TEST_REGEX_SEARCH("\\pd+", extended, "AB012AB", match_default, make_array(2, 5, -2, -2));
+ TEST_REGEX_SEARCH("\\PD+", extended, "01abc01", match_default, make_array(2, 5, -2, -2));
+ TEST_REGEX_SEARCH("\\ps+", extended, "AB AB", match_default, make_array(2, 5, -2, -2));
+ TEST_REGEX_SEARCH("\\PS+", extended, " abc ", match_default, make_array(2, 5, -2, -2));
+
+ TEST_REGEX_SEARCH("\\p{alnum}+", extended, "-%_at_a0X_-", match_default, make_array(3, 6, -2, -2));
+ TEST_REGEX_SEARCH("\\p{alpha}+", extended, " -%_at_aX_0-", match_default, make_array(4, 6, -2, -2));
+ TEST_REGEX_SEARCH("\\p{blank}+", extended, "a \tb", match_default, make_array(1, 4, -2, -2));
+ TEST_REGEX_SEARCH("\\p{cntrl}+", extended, " a\n\tb", match_default, make_array(2, 4, -2, -2));
+ TEST_REGEX_SEARCH("\\p{digit}+", extended, "a019b", match_default, make_array(1, 4, -2, -2));
+ TEST_REGEX_SEARCH("\\p{graph}+", extended, " a%b ", match_default, make_array(1, 4, -2, -2));
+ TEST_REGEX_SEARCH("\\p{lower}+", extended, "AabC", match_default, make_array(1, 3, -2, -2));
+ TEST_REGEX_SEARCH("\\p{print}+", extended, "AabC", match_default, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("\\p{punct}+", extended, " %-&\t", match_default, make_array(1, 4, -2, -2));
+ TEST_REGEX_SEARCH("\\p{space}+", extended, "a \n\t\rb", match_default, make_array(1, 5, -2, -2));
+ TEST_REGEX_SEARCH("\\p{upper}+", extended, "aBCd", match_default, make_array(1, 3, -2, -2));
+ TEST_REGEX_SEARCH("\\p{xdigit}+", extended, "p0f3Cx", match_default, make_array(1, 5, -2, -2));
+ TEST_REGEX_SEARCH("\\P{alnum}+", extended, "-%_at_a", match_default, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("\\P{alpha}+", extended, " -%_at_a", match_default, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("\\P{blank}+", extended, "a ", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("\\P{cntrl}+", extended, " a\n", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("\\P{digit}+", extended, "a0", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("\\P{graph}+", extended, " a", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("\\P{lower}+", extended, "Aa", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("\\P{print}+", extended, "Absc", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("\\P{punct}+", extended, " %", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("\\P{space}+", extended, "a ", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("\\P{upper}+", extended, "aB", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("\\P{xdigit}+", extended, "pf", match_default, make_array(0, 1, -2, -2));
+
+ TEST_INVALID_REGEX("\\p{invalid class}", extended);
+ TEST_INVALID_REGEX("\\p{upper", extended);
+ TEST_INVALID_REGEX("\\p{", extended);
+ TEST_INVALID_REGEX("\\p", extended);
+ TEST_INVALID_REGEX("\\P{invalid class}", extended);
+ TEST_INVALID_REGEX("\\P{upper", extended);
+ TEST_INVALID_REGEX("\\P{", extended);
+ TEST_INVALID_REGEX("\\P", extended);
+
+ // try named characters:
+ TEST_REGEX_SEARCH("\\N{zero}", extended, "0", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("\\N{one}", extended, "1", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("\\N{two}", extended, "2", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("\\N{three}", extended, "3", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("\\N{a}", extended, "bac", match_default, make_array(1, 2, -2, -2));
+ TEST_REGEX_SEARCH("\\N{\xf0}", extended, "b\xf0x", match_default, make_array(1, 2, -2, -2));
+ TEST_REGEX_SEARCH("\\N{right-curly-bracket}", extended, "}", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("\\N{NUL}", extended, "\0", match_default, make_array(0, 1, -2, -2));
+
+ TEST_INVALID_REGEX("\\N", extended);
+ TEST_INVALID_REGEX("\\N{", extended);
+ TEST_INVALID_REGEX("\\N{}", extended);
+ TEST_INVALID_REGEX("\\N{invalid-name}", extended);
+ TEST_INVALID_REGEX("\\N{zero", extended);
+}
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_simple_repeats.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_simple_repeats.cpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,438 @@
+/*
+ *
+ * Copyright (c) 2004
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+#include "test.hpp"
+
+#ifdef BOOST_MSVC
+#pragma warning(disable:4127)
+#endif
+
+void test_simple_repeats2();
+
+void test_simple_repeats()
+{
+ using namespace boost::regex_constants;
+ // simple repeats:
+ TEST_REGEX_SEARCH("a*", perl, "b", match_default, make_array(0, 0, -2, 1, 1, -2, -2));
+ TEST_REGEX_SEARCH("ab*", perl, "ab", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("ab*", basic, "ab", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("ab*", perl, "sssabbbbbbsss", match_default, make_array(3, 10, -2, -2));
+ TEST_REGEX_SEARCH("ab*c*", perl, "a", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("ab*c*", perl, "abbb", match_default, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("ab*c*", perl, "accc", match_default, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("ab*c*", perl, "abbcc", match_default, make_array(0, 5, -2, -2));
+ TEST_REGEX_SEARCH("*a", basic, "*a", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("^*a", basic, "*a", match_default, make_array(0, 2, -2, -2));
+ TEST_INVALID_REGEX("*a", perl);
+ TEST_INVALID_REGEX("\\<*", perl);
+ TEST_INVALID_REGEX("\\>*", perl);
+ TEST_REGEX_SEARCH("\n*", perl, "\n\n", match_default, make_array(0, 2, -2, 2, 2, -2, -2));
+ TEST_REGEX_SEARCH("\\**", perl, "**", match_default, make_array(0, 2, -2, 2, 2, -2, -2));
+ TEST_REGEX_SEARCH("\\*", perl, "*", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("(ab)*", perl, "abab", match_default, make_array(0, 4, 2, 4, -2, 4, 4, -2, -2));
+
+ TEST_INVALID_REGEX("(*)", perl);
+ TEST_INVALID_REGEX("(*)", extended);
+ TEST_INVALID_REGEX("\\(*\\)", basic);
+ TEST_INVALID_REGEX("^*", perl);
+ TEST_INVALID_REGEX("^*", extended);
+ TEST_INVALID_REGEX("$*", perl);
+ TEST_INVALID_REGEX("$*", extended);
+ TEST_INVALID_REGEX("$*", basic);
+ TEST_INVALID_REGEX("\\b*", perl);
+ TEST_INVALID_REGEX("\\B*", perl);
+ TEST_INVALID_REGEX("\\A*", perl);
+ TEST_INVALID_REGEX("\\z*", perl);
+ TEST_INVALID_REGEX("\\Z*", perl);
+ TEST_INVALID_REGEX("\\A*", perl);
+ TEST_INVALID_REGEX("a|*", perl);
+ TEST_INVALID_REGEX("a|*", extended);
+ TEST_INVALID_REGEX("(+)", perl);
+ TEST_INVALID_REGEX("(+)", extended);
+ TEST_INVALID_REGEX("^+", perl);
+ TEST_INVALID_REGEX("^+", extended);
+ TEST_INVALID_REGEX("$+", perl);
+ TEST_INVALID_REGEX("$+", extended);
+ TEST_INVALID_REGEX("\\b+", perl);
+ TEST_INVALID_REGEX("\\B+", perl);
+ TEST_INVALID_REGEX("\\A+", perl);
+ TEST_INVALID_REGEX("\\z+", perl);
+ TEST_INVALID_REGEX("\\Z+", perl);
+ TEST_INVALID_REGEX("\\A+", perl);
+ TEST_INVALID_REGEX("a|+", perl);
+ TEST_INVALID_REGEX("a|+", extended);
+ TEST_INVALID_REGEX("(?)", perl);
+ TEST_INVALID_REGEX("(?)", extended);
+ TEST_INVALID_REGEX("^?", perl);
+ TEST_INVALID_REGEX("^?", extended);
+ TEST_INVALID_REGEX("$?", perl);
+ TEST_INVALID_REGEX("$?", extended);
+ TEST_INVALID_REGEX("\\b?", perl);
+ TEST_INVALID_REGEX("\\B?", perl);
+ TEST_INVALID_REGEX("\\A?", perl);
+ TEST_INVALID_REGEX("\\z?", perl);
+ TEST_INVALID_REGEX("\\Z?", perl);
+ TEST_INVALID_REGEX("\\A?", perl);
+ TEST_INVALID_REGEX("a|?", perl);
+ TEST_INVALID_REGEX("a|?", extended);
+ TEST_INVALID_REGEX("({1,2})", perl);
+ TEST_INVALID_REGEX("({1,2})", extended);
+ TEST_INVALID_REGEX("^{1,2}", perl);
+ TEST_INVALID_REGEX("^{1,2}", extended);
+ TEST_INVALID_REGEX("${1,2}", perl);
+ TEST_INVALID_REGEX("${1,2}", extended);
+ TEST_INVALID_REGEX("\\b{1,2}", perl);
+ TEST_INVALID_REGEX("\\B{1,2}", perl);
+ TEST_INVALID_REGEX("\\A{1,2}", perl);
+ TEST_INVALID_REGEX("\\z{1,2}", perl);
+ TEST_INVALID_REGEX("\\Z{1,2}", perl);
+ TEST_INVALID_REGEX("\\A{1,2}", perl);
+ TEST_INVALID_REGEX("a|{1,2}", perl);
+ TEST_INVALID_REGEX("a|{1,2}", extended);
+
+ // now try operator + :
+ TEST_REGEX_SEARCH("ab+", perl, "a", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("ab+", perl, "ab", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("ab+", perl, "sssabbbbbbsss", match_default, make_array(3, 10, -2, -2));
+ TEST_REGEX_SEARCH("ab+c+", perl, "abbb", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("ab+c+", perl, "accc", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("ab+c+", perl, "abbcc", match_default, make_array(0, 5, -2, -2));
+ TEST_INVALID_REGEX("+a", perl);
+ TEST_INVALID_REGEX("\\<+", perl);
+ TEST_INVALID_REGEX("\\>+", perl);
+ TEST_REGEX_SEARCH("\n+", perl, "\n\n", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("\\+", perl, "+", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("\\+", perl, "++", match_default, make_array(0, 1, -2, 1, 2, -2, -2));
+ TEST_REGEX_SEARCH("\\++", perl, "++", match_default, make_array(0, 2, -2, -2));
+
+ TEST_REGEX_SEARCH("+", basic|bk_plus_qm, "+", match_default, make_array(0, 1, -2, -2));
+ TEST_INVALID_REGEX("\\+", basic|bk_plus_qm);
+ TEST_REGEX_SEARCH("a\\+", basic|bk_plus_qm, "aa", match_default, make_array(0, 2, -2, -2));
+
+ // now try operator ?
+ TEST_REGEX_SEARCH("a?", perl, "b", match_default, make_array(0, 0, -2, 1, 1, -2, -2));
+ TEST_REGEX_SEARCH("ab?", perl, "a", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("ab?", perl, "ab", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("ab?", perl, "sssabbbbbbsss", match_default, make_array(3, 5, -2, -2));
+ TEST_REGEX_SEARCH("ab?c?", perl, "a", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("ab?c?", perl, "abbb", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("ab?c?", perl, "accc", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("ab?c?", perl, "abcc", match_default, make_array(0, 3, -2, -2));
+ TEST_INVALID_REGEX("?a", perl);
+ TEST_INVALID_REGEX("\\<?", perl);
+ TEST_INVALID_REGEX("\\>?", perl);
+ TEST_REGEX_SEARCH("\n?", perl, "\n\n", match_default, make_array(0, 1, -2, 1, 2, -2, 2, 2, -2, -2));
+ TEST_REGEX_SEARCH("\\?", perl, "?", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("\\?", perl, "?", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("\\??", perl, "??", match_default, make_array(0, 1, -2, 1, 2, -2, 2, 2, -2, -2));
+ TEST_REGEX_SEARCH("?", basic|bk_plus_qm, "?", match_default, make_array(0, 1, -2, -2));
+ TEST_INVALID_REGEX("\\?", basic|bk_plus_qm);
+ TEST_REGEX_SEARCH("a\\?", basic|bk_plus_qm, "aa", match_default, make_array(0, 1, -2, 1, 2, -2, 2, 2, -2, -2));
+ TEST_REGEX_SEARCH("a\\?", basic|bk_plus_qm, "b", match_default, make_array(0, 0, -2, 1, 1, -2, -2));
+
+ TEST_REGEX_SEARCH("a?", basic, "a?", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("a+", basic, "a+", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("a\\?", basic, "a?", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("a\\+", basic, "a+", match_default, make_array(0, 2, -2, -2));
+
+ // now try operator {}
+ TEST_REGEX_SEARCH("a{2}", perl, "a", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("a{2}", perl, "aa", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("a{2}", perl, "aaa", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("a{2,}", perl, "a", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("a{2,}", perl, "aa", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("a{2,}", perl, "aaaaa", match_default, make_array(0, 5, -2, -2));
+ TEST_REGEX_SEARCH("a{2,4}", perl, "a", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("a{2,4}", perl, "aa", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("a{2,4}", perl, "aaa", match_default, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("a{2,4}", perl, "aaaa", match_default, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("a{2,4}", perl, "aaaaa", match_default, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("a{ 2 , 4 }", perl, "aaaaa", match_default, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("a{ 2 , }", perl, "aaaaa", match_default, make_array(0, 5, -2, -2));
+ TEST_REGEX_SEARCH("a{ 2 }", perl, "aaa", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("a\\{\\}", perl, "a{}", match_default, make_array(0, 3, -2, -2));
+
+ TEST_REGEX_SEARCH("a{2,4}?", perl, "a", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("a{2,4}?", perl, "aa", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("a{2,4}?", perl, "aaa", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("a{2,4}?", perl, "aaaa", match_default, make_array(0, 2, -2, 2, 4, -2, -2));
+ TEST_REGEX_SEARCH("a{2,4}?", perl, "aaaaa", match_default, make_array(0, 2, -2, 2, 4, -2, -2));
+ TEST_REGEX_SEARCH("a{2,4}?$", perl, "aa", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("a{2,4}?$", perl, "aaa", match_default, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("a{2,4}?$", perl, "aaaa", match_default, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("a{2,4}?$", perl, "aaaaa", match_default, make_array(1, 5, -2, -2));
+ TEST_REGEX_SEARCH("^a{0,1}?$", perl, "aaaaa", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("^(?:a){0,1}?$", perl, "aaaaa", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("^a(?:bc)?", perl, "abcbc", match_any|match_all, make_array(-2, -2));
+}
+
+void test_simple_repeats2()
+{
+ using namespace boost::regex_constants;
+
+ TEST_INVALID_REGEX("a{}", perl);
+ TEST_INVALID_REGEX("a{", perl);
+ TEST_INVALID_REGEX("a{1", perl);
+ TEST_INVALID_REGEX("a{1,", perl);
+ TEST_INVALID_REGEX("a{1,2", perl);
+ TEST_INVALID_REGEX("a{ 1 , 2 ", perl);
+ TEST_INVALID_REGEX("a{ }", perl);
+ TEST_INVALID_REGEX("a}", perl);
+ TEST_INVALID_REGEX("{1}", perl);
+ TEST_INVALID_REGEX("a{b}", perl);
+ TEST_INVALID_REGEX("a{1b}", perl);
+ TEST_INVALID_REGEX("a{1,b}", perl);
+ TEST_INVALID_REGEX("a{1,2v}", perl);
+ TEST_INVALID_REGEX("a{2,1}", perl);
+
+ // now try operator \\{\\} for POSIX basic regexes
+ TEST_REGEX_SEARCH("a\\{2\\}", basic, "a", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("a\\{2\\}", basic|no_intervals, "a{2}", match_default, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("a\\{2\\}", basic, "aa", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("a\\{2\\}", basic, "aaa", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("a\\{2,\\}", basic, "a", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("a\\{2,\\}", basic, "aa", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("a\\{2,\\}", basic, "aaaaa", match_default, make_array(0, 5, -2, -2));
+ TEST_REGEX_SEARCH("a\\{2,4\\}", basic, "a", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("a\\{2,4\\}", basic, "aa", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("a\\{2,4\\}", basic, "aaa", match_default, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("a\\{2,4\\}", basic, "aaaa", match_default, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("a\\{2,4\\}", basic, "aaaaa", match_default, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("a\\{ 2 , 4 \\}", basic, "aaaaa", match_default, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("a\\{ 2 , \\}", basic, "aaaaa", match_default, make_array(0, 5, -2, -2));
+ TEST_REGEX_SEARCH("a\\{ 2 \\}", basic, "aaa", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("a{}", basic, "a{}", match_default, make_array(0, 3, -2, -2));
+ TEST_INVALID_REGEX("a\\{\\}", basic);
+ TEST_INVALID_REGEX("a\\{", basic);
+ TEST_INVALID_REGEX("a\\{1", basic);
+ TEST_INVALID_REGEX("a\\{1,", basic);
+ TEST_INVALID_REGEX("a\\{1,\\", basic);
+ TEST_INVALID_REGEX("a\\{ \\}", basic);
+ TEST_INVALID_REGEX("a\\}", basic);
+ TEST_INVALID_REGEX("\\{1\\}", basic);
+ TEST_INVALID_REGEX("a\\{b\\}", basic);
+ TEST_INVALID_REGEX("a\\{1b\\}", basic);
+ TEST_INVALID_REGEX("a\\{1,b\\}", basic);
+ TEST_INVALID_REGEX("a\\{1,2v\\}", basic);
+ TEST_INVALID_REGEX("a\\{3,1\\}", basic);
+
+}
+
+void test_fast_repeats()
+{
+ using namespace boost::regex_constants;
+ // extended repeat checking to exercise new algorithms:
+ TEST_REGEX_SEARCH("ab.*xy", perl, "abxy_", match_default, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("ab.*xy", perl, "ab_xy_", match_default, make_array(0, 5, -2, -2));
+ TEST_REGEX_SEARCH("ab.*xy", perl, "abxy", match_default, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("ab.*xy", perl, "ab_xy", match_default, make_array(0, 5, -2, -2));
+ TEST_REGEX_SEARCH("ab.*", perl, "ab", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("ab.*", perl, "ab__", match_default, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH(".*xy", perl, "abc", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH(".*?xy", perl, "abc", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("a+?xy", perl, "abc", match_default, make_array(-2, -2));
+
+ TEST_REGEX_SEARCH("ab.{2,5}xy", perl, "ab__xy_", match_default, make_array(0, 6, -2, -2));
+ TEST_REGEX_SEARCH("ab.{2,5}xy", perl, "ab____xy_", match_default, make_array(0, 8, -2, -2));
+ TEST_REGEX_SEARCH("ab.{2,5}xy", perl, "ab_____xy_", match_default, make_array(0, 9, -2, -2));
+ TEST_REGEX_SEARCH("ab.{2,5}xy", perl, "ab__xy", match_default, make_array(0, 6, -2, -2));
+ TEST_REGEX_SEARCH("ab.{2,5}xy", perl, "ab_____xy", match_default, make_array(0, 9, -2, -2));
+ TEST_REGEX_SEARCH("ab.{2,5}", perl, "ab__", match_default, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("ab.{2,5}", perl, "ab_______", match_default, make_array(0, 7, -2, -2));
+ TEST_REGEX_SEARCH("ab.{2,5}xy", perl, "ab______xy", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("ab.{2,5}xy", perl, "ab_xy", match_default, make_array(-2, -2));
+
+ TEST_REGEX_SEARCH("ab.*?xy", perl, "abxy_", match_default, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("ab.*?xy", perl, "ab_xy_", match_default, make_array(0, 5, -2, -2));
+ TEST_REGEX_SEARCH("ab.*?xy", perl, "abxy", match_default, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("ab.*?xy", perl, "ab_xy", match_default, make_array(0, 5, -2, -2));
+ TEST_REGEX_SEARCH("ab.*?", perl, "ab", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("ab.*?", perl, "ab__", match_default, make_array(0, 2, -2, -2));
+
+ TEST_REGEX_SEARCH("ab.{2,5}?xy", perl, "ab__xy_", match_default, make_array(0, 6, -2, -2));
+ TEST_REGEX_SEARCH("ab.{2,5}?xy", perl, "ab____xy_", match_default, make_array(0, 8, -2, -2));
+ TEST_REGEX_SEARCH("ab.{2,5}?xy", perl, "ab_____xy_", match_default, make_array(0, 9, -2, -2));
+ TEST_REGEX_SEARCH("ab.{2,5}?xy", perl, "ab__xy", match_default, make_array(0, 6, -2, -2));
+ TEST_REGEX_SEARCH("ab.{2,5}?xy", perl, "ab_____xy", match_default, make_array(0, 9, -2, -2));
+ TEST_REGEX_SEARCH("ab.{2,5}?", perl, "ab__", match_default, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("ab.{2,5}?", perl, "ab_______", match_default, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("ab.{2,5}?xy", perl, "ab______xy", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("ab.{2,5}xy", perl, "ab_xy", match_default, make_array(-2, -2));
+
+ // again but with slower algorithm variant:
+ TEST_REGEX_SEARCH("ab.*xy", perl, "abxy_", match_not_dot_newline|match_not_dot_null, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("ab.*xy", perl, "ab_xy_", match_not_dot_newline|match_not_dot_null, make_array(0, 5, -2, -2));
+ TEST_REGEX_SEARCH("ab.*xy", perl, "abxy", match_not_dot_newline|match_not_dot_null, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("ab.*xy", perl, "ab_xy", match_not_dot_newline|match_not_dot_null, make_array(0, 5, -2, -2));
+ TEST_REGEX_SEARCH("ab.*", perl, "ab", match_not_dot_newline|match_not_dot_null, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("ab.*", perl, "ab__", match_not_dot_newline|match_not_dot_null, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH(".*xy", perl, "abc", match_not_dot_newline|match_not_dot_null, make_array(-2, -2));
+ TEST_REGEX_SEARCH(".*?xy", perl, "abc", match_not_dot_newline|match_not_dot_null, make_array(-2, -2));
+ TEST_REGEX_SEARCH(".*xy", perl, "ab\nbc", match_not_dot_newline|match_not_dot_null, make_array(-2, -2));
+ TEST_REGEX_SEARCH(".*?xy", perl, "ax\nbc", match_not_dot_newline|match_not_dot_null, make_array(-2, -2));
+
+ TEST_REGEX_SEARCH("ab.{2,5}xy", perl, "ab__xy_", match_not_dot_newline|match_not_dot_null, make_array(0, 6, -2, -2));
+ TEST_REGEX_SEARCH("ab.{2,5}xy", perl, "ab____xy_", match_not_dot_newline|match_not_dot_null, make_array(0, 8, -2, -2));
+ TEST_REGEX_SEARCH("ab.{2,5}xy", perl, "ab_____xy_", match_not_dot_newline|match_not_dot_null, make_array(0, 9, -2, -2));
+ TEST_REGEX_SEARCH("ab.{2,5}xy", perl, "ab__xy", match_not_dot_newline|match_not_dot_null, make_array(0, 6, -2, -2));
+ TEST_REGEX_SEARCH("ab.{2,5}xy", perl, "ab_____xy", match_not_dot_newline|match_not_dot_null, make_array(0, 9, -2, -2));
+ TEST_REGEX_SEARCH("ab.{2,5}", perl, "ab__", match_not_dot_newline|match_not_dot_null, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("ab.{2,5}", perl, "ab_______", match_not_dot_newline|match_not_dot_null, make_array(0, 7, -2, -2));
+ TEST_REGEX_SEARCH("ab.{2,5}xy", perl, "ab______xy", match_not_dot_newline|match_not_dot_null, make_array(-2, -2));
+ TEST_REGEX_SEARCH("ab.{2,5}xy", perl, "ab_xy", match_not_dot_newline|match_not_dot_null, make_array(-2, -2));
+
+ TEST_REGEX_SEARCH("ab.*?xy", perl, "abxy_", match_not_dot_newline|match_not_dot_null, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("ab.*?xy", perl, "ab_xy_", match_not_dot_newline|match_not_dot_null, make_array(0, 5, -2, -2));
+ TEST_REGEX_SEARCH("ab.*?xy", perl, "abxy", match_not_dot_newline|match_not_dot_null, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("ab.*?xy", perl, "ab_xy", match_not_dot_newline|match_not_dot_null, make_array(0, 5, -2, -2));
+ TEST_REGEX_SEARCH("ab.*?", perl, "ab", match_not_dot_newline|match_not_dot_null, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("ab.*?", perl, "ab__", match_not_dot_newline|match_not_dot_null, make_array(0, 2, -2, -2));
+
+ TEST_REGEX_SEARCH("ab.{2,5}?xy", perl, "ab__xy_", match_not_dot_newline|match_not_dot_null, make_array(0, 6, -2, -2));
+ TEST_REGEX_SEARCH("ab.{2,5}?xy", perl, "ab____xy_", match_not_dot_newline|match_not_dot_null, make_array(0, 8, -2, -2));
+ TEST_REGEX_SEARCH("ab.{2,5}?xy", perl, "ab_____xy_", match_not_dot_newline|match_not_dot_null, make_array(0, 9, -2, -2));
+ TEST_REGEX_SEARCH("ab.{2,5}?xy", perl, "ab__xy", match_not_dot_newline|match_not_dot_null, make_array(0, 6, -2, -2));
+ TEST_REGEX_SEARCH("ab.{2,5}?xy", perl, "ab_____xy", match_not_dot_newline|match_not_dot_null, make_array(0, 9, -2, -2));
+ TEST_REGEX_SEARCH("ab.{2,5}?", perl, "ab__", match_not_dot_newline|match_not_dot_null, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("ab.{2,5}?", perl, "ab_______", match_not_dot_newline|match_not_dot_null, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("ab.{2,5}?xy", perl, "ab______xy", match_not_dot_newline|match_not_dot_null, make_array(-2, -2));
+ TEST_REGEX_SEARCH("ab.{2,5}xy", perl, "ab_xy", match_not_dot_newline|match_not_dot_null, make_array(-2, -2));
+
+ // now again for single character repeats:
+ TEST_REGEX_SEARCH("ab_*xy", perl, "abxy_", match_default, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("ab_*xy", perl, "ab_xy_", match_default, make_array(0, 5, -2, -2));
+ TEST_REGEX_SEARCH("ab_*xy", perl, "abxy", match_default, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("ab_*xy", perl, "ab_xy", match_default, make_array(0, 5, -2, -2));
+ TEST_REGEX_SEARCH("ab_*", perl, "ab", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("ab_*", perl, "ab__", match_default, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("ab_*?z", perl, "ab__", match_default, make_array(-2, -2));
+
+ TEST_REGEX_SEARCH("ab_{2,5}xy", perl, "ab__xy_", match_default, make_array(0, 6, -2, -2));
+ TEST_REGEX_SEARCH("ab_{2,5}xy", perl, "ab____xy_", match_default, make_array(0, 8, -2, -2));
+ TEST_REGEX_SEARCH("ab_{2,5}xy", perl, "ab_____xy_", match_default, make_array(0, 9, -2, -2));
+ TEST_REGEX_SEARCH("ab_{2,5}xy", perl, "ab__xy", match_default, make_array(0, 6, -2, -2));
+ TEST_REGEX_SEARCH("ab_{2,5}xy", perl, "ab_____xy", match_default, make_array(0, 9, -2, -2));
+ TEST_REGEX_SEARCH("ab_{2,5}", perl, "ab__", match_default, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("ab_{2,5}", perl, "ab_______", match_default, make_array(0, 7, -2, -2));
+ TEST_REGEX_SEARCH("ab_{2,5}xy", perl, "ab______xy", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("ab_{2,5}xy", perl, "ab_xy", match_default, make_array(-2, -2));
+
+ TEST_REGEX_SEARCH("ab_*?xy", perl, "abxy_", match_default, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("ab_*?xy", perl, "ab_xy_", match_default, make_array(0, 5, -2, -2));
+ TEST_REGEX_SEARCH("ab_*?xy", perl, "abxy", match_default, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("ab_*?xy", perl, "ab_xy", match_default, make_array(0, 5, -2, -2));
+ TEST_REGEX_SEARCH("ab_*?", perl, "ab", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("ab_*?", perl, "ab__", match_default, make_array(0, 2, -2, -2));
+
+ TEST_REGEX_SEARCH("ab_{2,5}?xy", perl, "ab__xy_", match_default, make_array(0, 6, -2, -2));
+ TEST_REGEX_SEARCH("ab_{2,5}?xy", perl, "ab____xy_", match_default, make_array(0, 8, -2, -2));
+ TEST_REGEX_SEARCH("ab_{2,5}?xy", perl, "ab_____xy_", match_default, make_array(0, 9, -2, -2));
+ TEST_REGEX_SEARCH("ab_{2,5}?xy", perl, "ab__xy", match_default, make_array(0, 6, -2, -2));
+ TEST_REGEX_SEARCH("ab_{2,5}?xy", perl, "ab_____xy", match_default, make_array(0, 9, -2, -2));
+ TEST_REGEX_SEARCH("ab_{2,5}?", perl, "ab__", match_default, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("ab_{2,5}?", perl, "ab_______", match_default, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("ab_{2,5}?xy", perl, "ab______xy", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("ab_{2,5}xy", perl, "ab_xy", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("(5*?).somesite", perl, "//555.somesite", match_default, make_array(2, 14, 2, 5, -2, -2));
+}
+
+void test_fast_repeats2()
+{
+ using namespace boost::regex_constants;
+ // and again for sets:
+ TEST_REGEX_SEARCH("ab[_,;]*xy", perl, "abxy_", match_default, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("ab[_,;]*xy", perl, "ab_xy_", match_default, make_array(0, 5, -2, -2));
+ TEST_REGEX_SEARCH("ab[_,;]*xy", perl, "abxy", match_default, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("ab[_,;]*xy", perl, "ab_xy", match_default, make_array(0, 5, -2, -2));
+ TEST_REGEX_SEARCH("ab[_,;]*", perl, "ab", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("ab[_,;]*", perl, "ab__", match_default, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("ab[_,;]*?xy", perl, "ab__z", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("ab[_,;]*?z", perl, "ab__", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("ab[_,;]*?.z", perl, "ab__,;,__z", match_default, make_array(0, 10, -2, -2));
+ TEST_REGEX_SEARCH("ab[_,;]*?.z", perl, "ab__,;,__y", match_default, make_array(-2, -2));
+
+ TEST_REGEX_SEARCH("ab[_,;]{2,5}xy", perl, "ab__xy_", match_default, make_array(0, 6, -2, -2));
+ TEST_REGEX_SEARCH("ab[_,;]{2,5}xy", perl, "ab____xy_", match_default, make_array(0, 8, -2, -2));
+ TEST_REGEX_SEARCH("ab[_,;]{2,5}xy", perl, "ab_____xy_", match_default, make_array(0, 9, -2, -2));
+ TEST_REGEX_SEARCH("ab[_,;]{2,5}xy", perl, "ab__xy", match_default, make_array(0, 6, -2, -2));
+ TEST_REGEX_SEARCH("ab[_,;]{2,5}xy", perl, "ab_____xy", match_default, make_array(0, 9, -2, -2));
+ TEST_REGEX_SEARCH("ab[_,;]{2,5}", perl, "ab__", match_default, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("ab[_,;]{2,5}", perl, "ab_______", match_default, make_array(0, 7, -2, -2));
+ TEST_REGEX_SEARCH("ab[_,;]{2,5}xy", perl, "ab______xy", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("ab[_,;]{2,5}xy", perl, "ab_xy", match_default, make_array(-2, -2));
+
+ TEST_REGEX_SEARCH("ab[_,;]*?xy", perl, "abxy_", match_default, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("ab[_,;]*?xy", perl, "ab_xy_", match_default, make_array(0, 5, -2, -2));
+ TEST_REGEX_SEARCH("ab[_,;]*?xy", perl, "abxy", match_default, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("ab[_,;]*?xy", perl, "ab_xy", match_default, make_array(0, 5, -2, -2));
+ TEST_REGEX_SEARCH("ab[_,;]*?", perl, "ab", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("ab[_,;]*?", perl, "ab__", match_default, make_array(0, 2, -2, -2));
+
+ TEST_REGEX_SEARCH("ab[_,;]{2,5}?xy", perl, "ab__xy_", match_default, make_array(0, 6, -2, -2));
+ TEST_REGEX_SEARCH("ab[_,;]{2,5}?xy", perl, "ab____xy_", match_default, make_array(0, 8, -2, -2));
+ TEST_REGEX_SEARCH("ab[_,;]{2,5}?xy", perl, "ab_____xy_", match_default, make_array(0, 9, -2, -2));
+ TEST_REGEX_SEARCH("ab[_,;]{2,5}?xy", perl, "ab__xy", match_default, make_array(0, 6, -2, -2));
+ TEST_REGEX_SEARCH("ab[_,;]{2,5}?xy", perl, "ab_____xy", match_default, make_array(0, 9, -2, -2));
+ TEST_REGEX_SEARCH("ab[_,;]{2,5}?", perl, "ab__", match_default, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("ab[_,;]{2,5}?", perl, "ab_______", match_default, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("ab[_,;]{2,5}?xy", perl, "ab______xy", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("ab[_,;]{2,5}xy", perl, "ab_xy", match_default, make_array(-2, -2));
+
+ // and again for tricky sets with digraphs:
+ TEST_REGEX_SEARCH("ab[_[.ae.]]*xy", perl, "abxy_", match_default, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("ab[_[.ae.]]*xy", perl, "ab_xy_", match_default, make_array(0, 5, -2, -2));
+ TEST_REGEX_SEARCH("ab[_[.ae.]]*xy", perl, "abxy", match_default, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("ab[_[.ae.]]*xy", perl, "ab_xy", match_default, make_array(0, 5, -2, -2));
+ TEST_REGEX_SEARCH("ab[_[.ae.]]*", perl, "ab", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("ab[_[.ae.]]*", perl, "ab__", match_default, make_array(0, 4, -2, -2));
+
+ TEST_REGEX_SEARCH("ab[_[.ae.]]{2,5}xy", perl, "ab__xy_", match_default, make_array(0, 6, -2, -2));
+ TEST_REGEX_SEARCH("ab[_[.ae.]]{2,5}xy", perl, "ab____xy_", match_default, make_array(0, 8, -2, -2));
+ TEST_REGEX_SEARCH("ab[_[.ae.]]{2,5}xy", perl, "ab_____xy_", match_default, make_array(0, 9, -2, -2));
+ TEST_REGEX_SEARCH("ab[_[.ae.]]{2,5}xy", perl, "ab__xy", match_default, make_array(0, 6, -2, -2));
+ TEST_REGEX_SEARCH("ab[_[.ae.]]{2,5}xy", perl, "ab_____xy", match_default, make_array(0, 9, -2, -2));
+ TEST_REGEX_SEARCH("ab[_[.ae.]]{2,5}", perl, "ab__", match_default, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("ab[_[.ae.]]{2,5}", perl, "ab_______", match_default, make_array(0, 7, -2, -2));
+ TEST_REGEX_SEARCH("ab[_[.ae.]]{2,5}xy", perl, "ab______xy", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("ab[_[.ae.]]{2,5}xy", perl, "ab_xy", match_default, make_array(-2, -2));
+
+ TEST_REGEX_SEARCH("ab[_[.ae.]]*?xy", perl, "abxy_", match_default, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("ab[_[.ae.]]*?xy", perl, "ab_xy_", match_default, make_array(0, 5, -2, -2));
+ TEST_REGEX_SEARCH("ab[_[.ae.]]*?xy", perl, "abxy", match_default, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("ab[_[.ae.]]*?xy", perl, "ab_xy", match_default, make_array(0, 5, -2, -2));
+ TEST_REGEX_SEARCH("ab[_[.ae.]]*?", perl, "ab", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("ab[_[.ae.]]*?", perl, "ab__", match_default, make_array(0, 2, -2, -2));
+
+ TEST_REGEX_SEARCH("ab[_[.ae.]]{2,5}?xy", perl, "ab__xy_", match_default, make_array(0, 6, -2, -2));
+ TEST_REGEX_SEARCH("ab[_[.ae.]]{2,5}?xy", perl, "ab____xy_", match_default, make_array(0, 8, -2, -2));
+ TEST_REGEX_SEARCH("ab[_[.ae.]]{2,5}?xy", perl, "ab_____xy_", match_default, make_array(0, 9, -2, -2));
+ TEST_REGEX_SEARCH("ab[_[.ae.]]{2,5}?xy", perl, "ab__xy", match_default, make_array(0, 6, -2, -2));
+ TEST_REGEX_SEARCH("ab[_[.ae.]]{2,5}?xy", perl, "ab_____xy", match_default, make_array(0, 9, -2, -2));
+ TEST_REGEX_SEARCH("ab[_[.ae.]]{2,5}?", perl, "ab__", match_default, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("ab[_[.ae.]]{2,5}?", perl, "ab_______", match_default, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("ab[_[.ae.]]{2,5}?xy", perl, "ab______xy", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("ab[_[.ae.]]{2,5}xy", perl, "ab_xy", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("([5[.ae.]]*?).somesite", perl, "//555.somesite", match_default, make_array(2, 14, 2, 5, -2, -2));
+
+ TEST_REGEX_SEARCH("A[^B]*?B.*?C", perl, "AxBxxxx", match_default|match_partial, make_array(0, 7, -2, -2));
+ TEST_REGEX_SEARCH("A[^B]*?B.*?C", perl, "AxBx", match_default|match_partial, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("A[^B]*?B.*?C", perl, "AxBxxxx", match_default|match_partial|match_not_dot_null, make_array(0, 7, -2, -2));
+ TEST_REGEX_SEARCH("A[^B]*?B.*?C", perl, "AxBx", match_default|match_partial|match_not_dot_null, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("A[^B]*?Bx*?C", perl, "AxBxxxx", match_default|match_partial|match_not_dot_null, make_array(0, 7, -2, -2));
+ TEST_REGEX_SEARCH("A[^B]*?Bx*?C", perl, "AxBx", match_default|match_partial|match_not_dot_null, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("A[^B]*?B[xac]*?C", perl, "AxBxxxx", match_default|match_partial|match_not_dot_null, make_array(0, 7, -2, -2));
+ TEST_REGEX_SEARCH("A[^B]*?B[xac]*?C", perl, "AxBx", match_default|match_partial|match_not_dot_null, make_array(0, 4, -2, -2));
+ TEST_REGEX_SEARCH("A[^B]*?B[xac[.ae.]]*?C", perl, "AxBxxxx", match_default|match_partial|match_not_dot_null, make_array(0, 7, -2, -2));
+ TEST_REGEX_SEARCH("A[^B]*?B[xac[.ae.]]*?C", perl, "AxBx", match_default|match_partial|match_not_dot_null, make_array(0, 4, -2, -2));
+
+
+}
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_tricky_cases.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_tricky_cases.cpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,435 @@
+/*
+ *
+ * Copyright (c) 2004
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+#include "test.hpp"
+
+#ifdef BOOST_MSVC
+#pragma warning(disable:4127)
+#endif
+
+void test_tricky_cases2();
+void test_tricky_cases3();
+
+void test_tricky_cases()
+{
+ using namespace boost::regex_constants;
+ //
+ // now follows various complex expressions designed to try and bust the matcher:
+ //
+ TEST_REGEX_SEARCH("a(((b)))c", perl, "abc", match_default, make_array(0, 3, 1, 2, 1, 2, 1, 2, -2, -2));
+ TEST_REGEX_SEARCH("a(b|(c))d", perl, "abd", match_default, make_array(0, 3, 1, 2, -1, -1, -2, -2));
+ TEST_REGEX_SEARCH("a(b|(c))d", perl, "acd", match_default, make_array(0, 3, 1, 2, 1, 2, -2, -2));
+ TEST_REGEX_SEARCH("a(b*|c)d", perl, "abbd", match_default, make_array(0, 4, 1, 3, -2, -2));
+ // just gotta have one DFA-buster, of course
+ TEST_REGEX_SEARCH("a[ab]{20}", perl, "aaaaabaaaabaaaabaaaab", match_default, make_array(0, 21, -2, -2));
+ // and an inline expansion in case somebody gets tricky
+ TEST_REGEX_SEARCH("a[ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab]", perl, "aaaaabaaaabaaaabaaaab", match_default, make_array(0, 21, -2, -2));
+ // and in case somebody just slips in an NFA...
+ TEST_REGEX_SEARCH("a[ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab](wee|week)(knights|night)", perl, "aaaaabaaaabaaaabaaaabweeknights", match_default, make_array(0, 31, 21, 24, 24, 31, -2, -2));
+ // one really big one
+ TEST_REGEX_SEARCH("1234567890123456789012345678901234567890123456789012345678901234567890", perl, "a1234567890123456789012345678901234567890123456789012345678901234567890b", match_default, make_array(1, 71, -2, -2));
+ // fish for problems as brackets go past 8
+ TEST_REGEX_SEARCH("[ab][cd][ef][gh][ij][kl][mn]", perl, "xacegikmoq", match_default, make_array(1, 8, -2, -2));
+ TEST_REGEX_SEARCH("[ab][cd][ef][gh][ij][kl][mn][op]", perl, "xacegikmoq", match_default, make_array(1, 9, -2, -2));
+ TEST_REGEX_SEARCH("[ab][cd][ef][gh][ij][kl][mn][op][qr]", perl, "xacegikmoqy", match_default, make_array(1, 10, -2, -2));
+ TEST_REGEX_SEARCH("[ab][cd][ef][gh][ij][kl][mn][op][q]", perl, "xacegikmoqy", match_default, make_array(1, 10, -2, -2));
+ // and as parenthesis go past 9:
+ TEST_REGEX_SEARCH("(a)(b)(c)(d)(e)(f)(g)(h)", perl, "zabcdefghi", match_default, make_array(1, 9, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, -2, -2));
+ TEST_REGEX_SEARCH("(a)(b)(c)(d)(e)(f)(g)(h)(i)", perl, "zabcdefghij", match_default, make_array(1, 10, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, -2, -2));
+ TEST_REGEX_SEARCH("(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)", perl, "zabcdefghijk", match_default, make_array(1, 11, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, -2, -2));
+ TEST_REGEX_SEARCH("(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)", perl, "zabcdefghijkl", match_default, make_array(1, 12, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, -2, -2));
+ TEST_REGEX_SEARCH("(a)d|(b)c", perl, "abc", match_default, make_array(1, 3, -1, -1, 1, 2, -2, -2));
+ TEST_REGEX_SEARCH("_+((www)|(ftp)|(mailto)):_*", perl, "_wwwnocolon _mailto:", match_default, make_array(12, 20, 13, 19, -1, -1, -1, -1, 13, 19, -2, -2));
+ // subtleties of matching
+ TEST_REGEX_SEARCH("a(b)?c\\1d", perl, "acd", match_default, make_array(0, 3, -1, -1, -2, -2));
+ TEST_REGEX_SEARCH("a(b?c)+d", perl, "accd", match_default, make_array(0, 4, 2, 3, -2, -2));
+ TEST_REGEX_SEARCH("(wee|week)(knights|night)", perl, "weeknights", match_default, make_array(0, 10, 0, 3, 3, 10, -2, -2));
+ TEST_REGEX_SEARCH(".*", perl, "abc", match_default, make_array(0, 3, -2, 3, 3, -2, -2));
+ TEST_REGEX_SEARCH("a(b|(c))d", perl, "abd", match_default, make_array(0, 3, 1, 2, -1, -1, -2, -2));
+ TEST_REGEX_SEARCH("a(b|(c))d", perl, "acd", match_default, make_array(0, 3, 1, 2, 1, 2, -2, -2));
+ TEST_REGEX_SEARCH("a(b*|c|e)d", perl, "abbd", match_default, make_array(0, 4, 1, 3, -2, -2));
+ TEST_REGEX_SEARCH("a(b*|c|e)d", perl, "acd", match_default, make_array(0, 3, 1, 2, -2, -2));
+ TEST_REGEX_SEARCH("a(b*|c|e)d", perl, "ad", match_default, make_array(0, 2, 1, 1, -2, -2));
+ TEST_REGEX_SEARCH("a(b?)c", perl, "abc", match_default, make_array(0, 3, 1, 2, -2, -2));
+ TEST_REGEX_SEARCH("a(b?)c", perl, "ac", match_default, make_array(0, 2, 1, 1, -2, -2));
+ TEST_REGEX_SEARCH("a(b+)c", perl, "abc", match_default, make_array(0, 3, 1, 2, -2, -2));
+ TEST_REGEX_SEARCH("a(b+)c", perl, "abbbc", match_default, make_array(0, 5, 1, 4, -2, -2));
+ TEST_REGEX_SEARCH("a(b*)c", perl, "ac", match_default, make_array(0, 2, 1, 1, -2, -2));
+ TEST_REGEX_SEARCH("(a|ab)(bc([de]+)f|cde)", perl, "abcdef", match_default, make_array(0, 6, 0, 1, 1, 6, 3, 5, -2, -2));
+ TEST_REGEX_SEARCH("a([bc]?)c", perl, "abc", match_default, make_array(0, 3, 1, 2, -2, -2));
+ TEST_REGEX_SEARCH("a([bc]?)c", perl, "ac", match_default, make_array(0, 2, 1, 1, -2, -2));
+ TEST_REGEX_SEARCH("a([bc]+)c", perl, "abc", match_default, make_array(0, 3, 1, 2, -2, -2));
+ TEST_REGEX_SEARCH("a([bc]+)c", perl, "abcc", match_default, make_array(0, 4, 1, 3, -2, -2));
+ TEST_REGEX_SEARCH("a([bc]+)bc", perl, "abcbc", match_default, make_array(0, 5, 1, 3, -2, -2));
+ TEST_REGEX_SEARCH("a(bb+|b)b", perl, "abb", match_default, make_array(0, 3, 1, 2, -2, -2));
+ TEST_REGEX_SEARCH("a(bbb+|bb+|b)b", perl, "abb", match_default, make_array(0, 3, 1, 2, -2, -2));
+ TEST_REGEX_SEARCH("a(bbb+|bb+|b)b", perl, "abbb", match_default, make_array(0, 4, 1, 3, -2, -2));
+ TEST_REGEX_SEARCH("a(bbb+|bb+|b)bb", perl, "abbb", match_default, make_array(0, 4, 1, 2, -2, -2));
+ TEST_REGEX_SEARCH("(.*).*", perl, "abcdef", match_default, make_array(0, 6, 0, 6, -2, 6, 6, 6, 6, -2, -2));
+ TEST_REGEX_SEARCH("(a*)*", perl, "bc", match_default, make_array(0, 0, 0, 0, -2, 1, 1, 1, 1, -2, 2, 2, 2, 2, -2, -2));
+ TEST_REGEX_SEARCH("Z(((((((a+)+)+)+)+)+)+)+|Y(((((((a+)+)+)+)+)+)+)+|X(((((((a+)+)+)+)+)+)+)+|W(((((((a+)+)+)+)+)+)+)+|V(((((((a+)+)+)+)+)+)+)+|CZ(((((((a+)+)+)+)+)+)+)+|CY(((((((a+)+)+)+)+)+)+)+|CX(((((((a+)+)+)+)+)+)+)+|CW(((((((a+)+)+)+)+)+)+)+|CV(((((((a+)+)+)+)+)+)+)+|(a+)+", perl, "bc", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("Z(((((((a+)+)+)+)+)+)+)+|Y(((((((a+)+)+)+)+)+)+)+|X(((((((a+)+)+)+)+)+)+)+|W(((((((a+)+)+)+)+)+)+)+|V(((((((a+)+)+)+)+)+)+)+|CZ(((((((a+)+)+)+)+)+)+)+|CY(((((((a+)+)+)+)+)+)+)+|CX(((((((a+)+)+)+)+)+)+)+|CW(((((((a+)+)+)+)+)+)+)+|CV(((((((a+)+)+)+)+)+)+)+|(a+)+", perl, "aaa", match_default,
+ make_array(0, 3,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 0, 3,
+ -2, -2));
+ TEST_REGEX_SEARCH("Z(((((((a+)+)+)+)+)+)+)+|Y(((((((a+)+)+)+)+)+)+)+|X(((((((a+)+)+)+)+)+)+)+|W(((((((a+)+)+)+)+)+)+)+|V(((((((a+)+)+)+)+)+)+)+|CZ(((((((a+)+)+)+)+)+)+)+|CY(((((((a+)+)+)+)+)+)+)+|CX(((((((a+)+)+)+)+)+)+)+|CW(((((((a+)+)+)+)+)+)+)+|CV(((((((a+)+)+)+)+)+)+)+|(a+)+",
+ perl, "Zaaa", match_default,
+ make_array(0, 4,
+ 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1,
+ -2, -2));
+ TEST_REGEX_SEARCH("xyx*xz", perl, "xyxxxxyxxxz", match_default, make_array(5, 11, -2, -2));
+ // do we get the right subexpression when it is used more than once?
+ TEST_REGEX_SEARCH("a(b|c)*d", perl, "ad", match_default, make_array(0, 2, -1, -1, -2, -2));
+ TEST_REGEX_SEARCH("a(b|c)*d", perl, "abcd", match_default, make_array(0, 4, 2, 3, -2, -2));
+ TEST_REGEX_SEARCH("a(b|c)+d", perl, "abd", match_default, make_array(0, 3, 1, 2, -2, -2));
+ TEST_REGEX_SEARCH("a(b|c)+d", perl, "abcd", match_default, make_array(0, 4, 2, 3, -2, -2));
+ TEST_REGEX_SEARCH("a(b|c?)+d", perl, "ad", match_default, make_array(0, 2, 1, 1, -2, -2));
+ TEST_REGEX_SEARCH("a(b|c){0,0}d", perl, "ad", match_default, make_array(0, 2, -1, -1, -2, -2));
+ TEST_REGEX_SEARCH("a(b|c){0,1}d", perl, "ad", match_default, make_array(0, 2, -1, -1, -2, -2));
+ TEST_REGEX_SEARCH("a(b|c){0,1}d", perl, "abd", match_default, make_array(0, 3, 1, 2, -2, -2));
+ TEST_REGEX_SEARCH("a(b|c){0,2}d", perl, "ad", match_default, make_array(0, 2, -1, -1, -2, -2));
+ TEST_REGEX_SEARCH("a(b|c){0,2}d", perl, "abcd", match_default, make_array(0, 4, 2, 3, -2, -2));
+ TEST_REGEX_SEARCH("a(b|c){0,}d", perl, "ad", match_default, make_array(0, 2, -1, -1, -2, -2));
+ TEST_REGEX_SEARCH("a(b|c){0,}d", perl, "abcd", match_default, make_array(0, 4, 2, 3, -2, -2));
+ TEST_REGEX_SEARCH("a(b|c){1,1}d", perl, "abd", match_default, make_array(0, 3, 1, 2, -2, -2));
+ TEST_REGEX_SEARCH("a(b|c){1,2}d", perl, "abd", match_default, make_array(0, 3, 1, 2, -2, -2));
+ TEST_REGEX_SEARCH("a(b|c){1,2}d", perl, "abcd", match_default, make_array(0, 4, 2, 3, -2, -2));
+ TEST_REGEX_SEARCH("a(b|c){1,}d", perl, "abd", match_default, make_array(0, 3, 1, 2, -2, -2));
+ TEST_REGEX_SEARCH("a(b|c){1,}d", perl, "abcd", match_default, make_array(0, 4, 2, 3, -2, -2));
+ TEST_REGEX_SEARCH("a(b|c){2,2}d", perl, "acbd", match_default, make_array(0, 4, 2, 3, -2, -2));
+ TEST_REGEX_SEARCH("a(b|c){2,2}d", perl, "abcd", match_default, make_array(0, 4, 2, 3, -2, -2));
+ TEST_REGEX_SEARCH("a(b|c){2,4}d", perl, "abcd", match_default, make_array(0, 4, 2, 3, -2, -2));
+ TEST_REGEX_SEARCH("a(b|c){2,4}d", perl, "abcbd", match_default, make_array(0, 5, 3, 4, -2, -2));
+ TEST_REGEX_SEARCH("a(b|c){2,4}d", perl, "abcbcd", match_default, make_array(0, 6, 4, 5, -2, -2));
+ TEST_REGEX_SEARCH("a(b|c){2,}d", perl, "abcd", match_default, make_array(0, 4, 2, 3, -2, -2));
+ TEST_REGEX_SEARCH("a(b|c){2,}d", perl, "abcbd", match_default, make_array(0, 5, 3, 4, -2, -2));
+
+ test_tricky_cases2();
+ test_tricky_cases3();
+}
+
+void test_tricky_cases2()
+{
+ using namespace boost::regex_constants;
+
+ TEST_REGEX_SEARCH("a(((b)))c", extended, "abc", match_default, make_array(0, 3, 1, 2, 1, 2, 1, 2, -2, -2));
+ TEST_REGEX_SEARCH("a(b|(c))d", extended, "abd", match_default, make_array(0, 3, 1, 2, -1, -1, -2, -2));
+ TEST_REGEX_SEARCH("a(b|(c))d", extended, "acd", match_default, make_array(0, 3, 1, 2, 1, 2, -2, -2));
+ TEST_REGEX_SEARCH("a(b*|c)d", extended, "abbd", match_default, make_array(0, 4, 1, 3, -2, -2));
+ // just gotta have one DFA-buster, of course
+ TEST_REGEX_SEARCH("a[ab]{20}", extended, "aaaaabaaaabaaaabaaaab", match_default, make_array(0, 21, -2, -2));
+ // and an inline expansion in case somebody gets tricky
+ TEST_REGEX_SEARCH("a[ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab]", extended, "aaaaabaaaabaaaabaaaab", match_default, make_array(0, 21, -2, -2));
+ // and in case somebody just slips in an NFA...
+ TEST_REGEX_SEARCH("a[ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab](wee|week)(knights|night)", extended, "aaaaabaaaabaaaabaaaabweeknights", match_default, make_array(0, 31, 21, 24, 24, 31, -2, -2));
+ // one really big one
+ TEST_REGEX_SEARCH("1234567890123456789012345678901234567890123456789012345678901234567890", extended, "a1234567890123456789012345678901234567890123456789012345678901234567890b", match_default, make_array(1, 71, -2, -2));
+ // fish for problems as brackets go past 8
+ TEST_REGEX_SEARCH("[ab][cd][ef][gh][ij][kl][mn]", extended, "xacegikmoq", match_default, make_array(1, 8, -2, -2));
+ TEST_REGEX_SEARCH("[ab][cd][ef][gh][ij][kl][mn][op]", extended, "xacegikmoq", match_default, make_array(1, 9, -2, -2));
+ TEST_REGEX_SEARCH("[ab][cd][ef][gh][ij][kl][mn][op][qr]", extended, "xacegikmoqy", match_default, make_array(1, 10, -2, -2));
+ TEST_REGEX_SEARCH("[ab][cd][ef][gh][ij][kl][mn][op][q]", extended, "xacegikmoqy", match_default, make_array(1, 10, -2, -2));
+ // and as parenthesis go past 9:
+ TEST_REGEX_SEARCH("(a)(b)(c)(d)(e)(f)(g)(h)", extended, "zabcdefghi", match_default, make_array(1, 9, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, -2, -2));
+ TEST_REGEX_SEARCH("(a)(b)(c)(d)(e)(f)(g)(h)(i)", extended, "zabcdefghij", match_default, make_array(1, 10, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, -2, -2));
+ TEST_REGEX_SEARCH("(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)", extended, "zabcdefghijk", match_default, make_array(1, 11, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, -2, -2));
+ TEST_REGEX_SEARCH("(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)", extended, "zabcdefghijkl", match_default, make_array(1, 12, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, -2, -2));
+ TEST_REGEX_SEARCH("(a)d|(b)c", extended, "abc", match_default, make_array(1, 3, -1, -1, 1, 2, -2, -2));
+ TEST_REGEX_SEARCH("_+((www)|(ftp)|(mailto)):_*", extended, "_wwwnocolon _mailto:", match_default, make_array(12, 20, 13, 19, -1, -1, -1, -1, 13, 19, -2, -2));
+ // subtleties of matching
+ TEST_REGEX_SEARCH("a\\(b\\)\\?c\\1d", basic|bk_plus_qm, "acd", match_default, make_array(0, 3, -1, -1, -2, -2));
+ TEST_REGEX_SEARCH("a(b?c)+d", extended, "accd", match_default, make_array(0, 4, 2, 3, -2, -2));
+ TEST_REGEX_SEARCH("(wee|week)(knights|night)", extended, "weeknights", match_default, make_array(0, 10, 0, 3, 3, 10, -2, -2));
+ TEST_REGEX_SEARCH(".*", extended, "abc", match_default, make_array(0, 3, -2, 3, 3, -2, -2));
+ TEST_REGEX_SEARCH("a(b|(c))d", extended, "abd", match_default, make_array(0, 3, 1, 2, -1, -1, -2, -2));
+ TEST_REGEX_SEARCH("a(b|(c))d", extended, "acd", match_default, make_array(0, 3, 1, 2, 1, 2, -2, -2));
+ TEST_REGEX_SEARCH("a(b*|c|e)d", extended, "abbd", match_default, make_array(0, 4, 1, 3, -2, -2));
+ TEST_REGEX_SEARCH("a(b*|c|e)d", extended, "acd", match_default, make_array(0, 3, 1, 2, -2, -2));
+ TEST_REGEX_SEARCH("a(b*|c|e)d", extended, "ad", match_default, make_array(0, 2, 1, 1, -2, -2));
+ TEST_REGEX_SEARCH("a(b?)c", extended, "abc", match_default, make_array(0, 3, 1, 2, -2, -2));
+ TEST_REGEX_SEARCH("a(b?)c", extended, "ac", match_default, make_array(0, 2, 1, 1, -2, -2));
+ TEST_REGEX_SEARCH("a(b+)c", extended, "abc", match_default, make_array(0, 3, 1, 2, -2, -2));
+ TEST_REGEX_SEARCH("a(b+)c", extended, "abbbc", match_default, make_array(0, 5, 1, 4, -2, -2));
+ TEST_REGEX_SEARCH("a(b*)c", extended, "ac", match_default, make_array(0, 2, 1, 1, -2, -2));
+ TEST_REGEX_SEARCH("(a|ab)(bc([de]+)f|cde)", extended, "abcdef", match_default, make_array(0, 6, 0, 1, 1, 6, 3, 5, -2, -2));
+ TEST_REGEX_SEARCH("a([bc]?)c", extended, "abc", match_default, make_array(0, 3, 1, 2, -2, -2));
+ TEST_REGEX_SEARCH("a([bc]?)c", extended, "ac", match_default, make_array(0, 2, 1, 1, -2, -2));
+ TEST_REGEX_SEARCH("a([bc]+)c", extended, "abc", match_default, make_array(0, 3, 1, 2, -2, -2));
+ TEST_REGEX_SEARCH("a([bc]+)c", extended, "abcc", match_default, make_array(0, 4, 1, 3, -2, -2));
+ TEST_REGEX_SEARCH("a([bc]+)bc", extended, "abcbc", match_default, make_array(0, 5, 1, 3, -2, -2));
+ TEST_REGEX_SEARCH("a(bb+|b)b", extended, "abb", match_default, make_array(0, 3, 1, 2, -2, -2));
+ TEST_REGEX_SEARCH("a(bbb+|bb+|b)b", extended, "abb", match_default, make_array(0, 3, 1, 2, -2, -2));
+ TEST_REGEX_SEARCH("a(bbb+|bb+|b)b", extended, "abbb", match_default, make_array(0, 4, 1, 3, -2, -2));
+ TEST_REGEX_SEARCH("a(bbb+|bb+|b)bb", extended, "abbb", match_default, make_array(0, 4, 1, 2, -2, -2));
+ TEST_REGEX_SEARCH("(.*).*", extended, "abcdef", match_default, make_array(0, 6, 0, 6, -2, 6, 6, 6, 6, -2, -2));
+ TEST_REGEX_SEARCH("(a*)*", extended, "bc", match_default, make_array(0, 0, 0, 0, -2, 1, 1, 1, 1, -2, 2, 2, 2, 2, -2, -2));
+ TEST_REGEX_SEARCH("xyx*xz", extended, "xyxxxxyxxxz", match_default, make_array(5, 11, -2, -2));
+ // do we get the right subexpression when it is used more than once?
+ TEST_REGEX_SEARCH("a(b|c)*d", extended, "ad", match_default, make_array(0, 2, -1, -1, -2, -2));
+ TEST_REGEX_SEARCH("a(b|c)*d", extended, "abcd", match_default, make_array(0, 4, 2, 3, -2, -2));
+ TEST_REGEX_SEARCH("a(b|c)+d", extended, "abd", match_default, make_array(0, 3, 1, 2, -2, -2));
+ TEST_REGEX_SEARCH("a(b|c)+d", extended, "abcd", match_default, make_array(0, 4, 2, 3, -2, -2));
+ TEST_REGEX_SEARCH("a(b|c?)+d", extended, "ad", match_default, make_array(0, 2, 1, 1, -2, -2));
+ TEST_REGEX_SEARCH("a(b|c){0,0}d", extended, "ad", match_default, make_array(0, 2, -1, -1, -2, -2));
+ TEST_REGEX_SEARCH("a(b|c){0,1}d", extended, "ad", match_default, make_array(0, 2, -1, -1, -2, -2));
+ TEST_REGEX_SEARCH("a(b|c){0,1}d", extended, "abd", match_default, make_array(0, 3, 1, 2, -2, -2));
+ TEST_REGEX_SEARCH("a(b|c){0,2}d", extended, "ad", match_default, make_array(0, 2, -1, -1, -2, -2));
+ TEST_REGEX_SEARCH("a(b|c){0,2}d", extended, "abcd", match_default, make_array(0, 4, 2, 3, -2, -2));
+ TEST_REGEX_SEARCH("a(b|c){0,}d", extended, "ad", match_default, make_array(0, 2, -1, -1, -2, -2));
+ TEST_REGEX_SEARCH("a(b|c){0,}d", extended, "abcd", match_default, make_array(0, 4, 2, 3, -2, -2));
+ TEST_REGEX_SEARCH("a(b|c){1,1}d", extended, "abd", match_default, make_array(0, 3, 1, 2, -2, -2));
+ TEST_REGEX_SEARCH("a(b|c){1,2}d", extended, "abd", match_default, make_array(0, 3, 1, 2, -2, -2));
+ TEST_REGEX_SEARCH("a(b|c){1,2}d", extended, "abcd", match_default, make_array(0, 4, 2, 3, -2, -2));
+ TEST_REGEX_SEARCH("a(b|c){1,}d", extended, "abd", match_default, make_array(0, 3, 1, 2, -2, -2));
+ TEST_REGEX_SEARCH("a(b|c){1,}d", extended, "abcd", match_default, make_array(0, 4, 2, 3, -2, -2));
+ TEST_REGEX_SEARCH("a(b|c){2,2}d", extended, "acbd", match_default, make_array(0, 4, 2, 3, -2, -2));
+ TEST_REGEX_SEARCH("a(b|c){2,2}d", extended, "abcd", match_default, make_array(0, 4, 2, 3, -2, -2));
+ TEST_REGEX_SEARCH("a(b|c){2,4}d", extended, "abcd", match_default, make_array(0, 4, 2, 3, -2, -2));
+ TEST_REGEX_SEARCH("a(b|c){2,4}d", extended, "abcbd", match_default, make_array(0, 5, 3, 4, -2, -2));
+ TEST_REGEX_SEARCH("a(b|c){2,4}d", extended, "abcbcd", match_default, make_array(0, 6, 4, 5, -2, -2));
+ TEST_REGEX_SEARCH("a(b|c){2,}d", extended, "abcd", match_default, make_array(0, 4, 2, 3, -2, -2));
+ TEST_REGEX_SEARCH("a(b|c){2,}d", extended, "abcbd", match_default, make_array(0, 5, 3, 4, -2, -2));
+ // perl only:
+ TEST_REGEX_SEARCH("a(b|c?)+d", perl, "abcd", match_default, make_array(0, 4, 3, 3, -2, -2));
+ TEST_REGEX_SEARCH("a(b+|((c)*))+d", perl, "abd", match_default, make_array(0, 3, 2, 2, 2, 2, -1, -1, -2, -2));
+ TEST_REGEX_SEARCH("a(b+|((c)*))+d", perl, "abcd", match_default, make_array(0, 4, 3, 3, 3, 3, 2, 3, -2, -2));
+ // posix only:
+ TEST_REGEX_SEARCH("a(b|c?)+d", extended, "abcd", match_default, make_array(0, 4, 2, 3, -2, -2));
+ TEST_REGEX_SEARCH("a(b|((c)*))+d", extended, "abcd", match_default, make_array(0, 4, 2, 3, 2, 3, 2, 3, -2, -2));
+ TEST_REGEX_SEARCH("a(b+|((c)*))+d", extended, "abd", match_default, make_array(0, 3, 1, 2, -1, -1, -1, -1, -2, -2));
+ TEST_REGEX_SEARCH("a(b+|((c)*))+d", extended, "abcd", match_default, make_array(0, 4, 2, 3, 2, 3, 2, 3, -2, -2));
+ // literals:
+ TEST_REGEX_SEARCH("\\**?/{}", literal, "\\**?/{}", match_default, make_array(0, 7, -2, -2));
+ TEST_REGEX_SEARCH("\\**?/{}", literal, "\\**?/{", match_default, make_array(-2, -2));
+ // try to match C++ syntax elements:
+ // line comment:
+ TEST_REGEX_SEARCH("//[^\\n]*", perl, "++i //here is a line comment\n", match_default, make_array(4, 28, -2, -2));
+ // block comment:
+ TEST_REGEX_SEARCH("/\\*([^*]|\\*+[^*/])*\\*+/", perl, "/* here is a block comment */", match_default, make_array(0, 29, 26, 27, -2, -2));
+ TEST_REGEX_SEARCH("/\\*([^*]|\\*+[^*/])*\\*+/", perl, "/**/", match_default, make_array(0, 4, -1, -1, -2, -2));
+ TEST_REGEX_SEARCH("/\\*([^*]|\\*+[^*/])*\\*+/", perl, "/***/", match_default, make_array(0, 5, -1, -1, -2, -2));
+ TEST_REGEX_SEARCH("/\\*([^*]|\\*+[^*/])*\\*+/", perl, "/****/", match_default, make_array(0, 6, -1, -1, -2, -2));
+ TEST_REGEX_SEARCH("/\\*([^*]|\\*+[^*/])*\\*+/", perl, "/*****/", match_default, make_array(0, 7, -1, -1, -2, -2));
+ TEST_REGEX_SEARCH("/\\*([^*]|\\*+[^*/])*\\*+/", perl, "/*****/*/", match_default, make_array(0, 7, -1, -1, -2, -2));
+ // preprossor directives:
+ TEST_REGEX_SEARCH("^[[:blank:]]*#([^\\n]*\\\\[[:space:]]+)*[^\\n]*", perl, "#define some_symbol", match_default, make_array(0, 19, -1, -1, -2, -2));
+ TEST_REGEX_SEARCH("^[[:blank:]]*#([^\\n]*\\\\[[:space:]]+)*[^\\n]*", perl, "#define some_symbol(x) #x", match_default, make_array(0, 25, -1, -1, -2, -2));
+ // try to match C++ syntax elements:
+ // line comment:
+ TEST_REGEX_SEARCH("//[^\\n]*", extended&~no_escape_in_lists, "++i //here is a line comment\n", match_default, make_array(4, 28, -2, -2));
+ // block comment:
+ TEST_REGEX_SEARCH("/\\*([^*]|\\*+[^*/])*\\*+/", extended&~no_escape_in_lists, "/* here is a block comment */", match_default, make_array(0, 29, 26, 27, -2, -2));
+ TEST_REGEX_SEARCH("/\\*([^*]|\\*+[^*/])*\\*+/", extended&~no_escape_in_lists, "/**/", match_default, make_array(0, 4, -1, -1, -2, -2));
+ TEST_REGEX_SEARCH("/\\*([^*]|\\*+[^*/])*\\*+/", extended&~no_escape_in_lists, "/***/", match_default, make_array(0, 5, -1, -1, -2, -2));
+ TEST_REGEX_SEARCH("/\\*([^*]|\\*+[^*/])*\\*+/", extended&~no_escape_in_lists, "/****/", match_default, make_array(0, 6, -1, -1, -2, -2));
+ TEST_REGEX_SEARCH("/\\*([^*]|\\*+[^*/])*\\*+/", extended&~no_escape_in_lists, "/*****/", match_default, make_array(0, 7, -1, -1, -2, -2));
+ TEST_REGEX_SEARCH("/\\*([^*]|\\*+[^*/])*\\*+/", extended&~no_escape_in_lists, "/*****/*/", match_default, make_array(0, 7, -1, -1, -2, -2));
+ // preprossor directives:
+ TEST_REGEX_SEARCH("^[[:blank:]]*#([^\\n]*\\\\[[:space:]]+)*[^\\n]*", extended&~no_escape_in_lists, "#define some_symbol", match_default, make_array(0, 19, -1, -1, -2, -2));
+ TEST_REGEX_SEARCH("^[[:blank:]]*#([^\\n]*\\\\[[:space:]]+)*[^\\n]*", extended&~no_escape_in_lists, "#define some_symbol(x) #x", match_default, make_array(0, 25, -1, -1, -2, -2));
+ // perl only:
+ TEST_REGEX_SEARCH("^[[:blank:]]*#([^\\n]*\\\\[[:space:]]+)*[^\\n]*", perl, "#define some_symbol(x) \\ \r\n foo();\\\r\n printf(#x);", match_default, make_array(0, 53, 30, 42, -2, -2));
+ // POSIX leftmost longest checks:
+ TEST_REGEX_SEARCH("(aaa)|(\\w+)", extended&~no_escape_in_lists, "a", match_default, make_array(0, 1, -1, -1, 0, 1, -2, -2));
+ TEST_REGEX_SEARCH("(aaa)|(\\w+)", extended&~no_escape_in_lists, "aa", match_default, make_array(0, 2, -1, -1, 0, 2, -2, -2));
+ TEST_REGEX_SEARCH("(aaa)|(\\w+)", extended&~no_escape_in_lists, "aaa", match_default, make_array(0, 3, 0, 3, -1, -1, -2, -2));
+ TEST_REGEX_SEARCH("(aaa)|(\\w+)", extended&~no_escape_in_lists, "aaaa", match_default, make_array(0, 4, -1, -1, 0, 4, -2, -2));
+ TEST_REGEX_SEARCH("($)|(\\>)", extended&~no_escape_in_lists, "aaaa", match_default, make_array(4, 4, 4, 4, -1, -1, -2, -2));
+ TEST_REGEX_SEARCH("($)|(\\>)", extended&~no_escape_in_lists, "aaaa", match_default|match_not_eol, make_array(4, 4, -1, -1, 4, 4, -2, -2));
+ TEST_REGEX_SEARCH("(aaa)(ab)*", extended, "aaaabab", match_default, make_array(0, 7, 0, 3, 5, 7, -2, -2));
+}
+
+void test_tricky_cases3()
+{
+ using namespace boost::regex_constants;
+ TEST_REGEX_SEARCH("((0x[[:xdigit:]]+)|([[:digit:]]+))u?((int(8|16|32|64))|L)?", perl, "0xFF", match_default, make_array(0, 4, 0, 4, 0, 4, -1, -1, -1, -1, -1, -1, -1, -1, -2, -2));
+ TEST_REGEX_SEARCH("((0x[[:xdigit:]]+)|([[:digit:]]+))u?((int(8|16|32|64))|L)?", perl, "35", match_default, make_array(0, 2, 0, 2, -1, -1, 0, 2, -1, -1, -1, -1, -1, -1, -2, -2));
+ TEST_REGEX_SEARCH("((0x[[:xdigit:]]+)|([[:digit:]]+))u?((int(8|16|32|64))|L)?", perl, "0xFFu", match_default, make_array(0, 5, 0, 4, 0, 4, -1, -1, -1, -1, -1, -1, -1, -1, -2, -2));
+ TEST_REGEX_SEARCH("((0x[[:xdigit:]]+)|([[:digit:]]+))u?((int(8|16|32|64))|L)?", perl, "0xFFL", match_default, make_array(0, 5, 0, 4, 0, 4, -1, -1, 4, 5, -1, -1, -1, -1, -2, -2));
+ TEST_REGEX_SEARCH("((0x[[:xdigit:]]+)|([[:digit:]]+))u?((int(8|16|32|64))|L)?", perl, "0xFFFFFFFFFFFFFFFFuint64", match_default, make_array(0, 24, 0, 18, 0, 18, -1, -1, 19, 24, 19, 24, 22, 24, -2, -2));
+ // strings:
+ TEST_REGEX_SEARCH("'([^\\\\']|\\\\.)*'", perl, "'\\x3A'", match_default, make_array(0, 6, 4, 5, -2, -2));
+ TEST_REGEX_SEARCH("'([^\\\\']|\\\\.)*'", perl, "'\\''", match_default, make_array(0, 4, 1, 3, -2, -2));
+ TEST_REGEX_SEARCH("'([^\\\\']|\\\\.)*'", perl, "'\\n'", match_default, make_array(0, 4, 1, 3, -2, -2));
+ // posix only:
+ TEST_REGEX_SEARCH("^[[:blank:]]*#([^\\n]*\\\\[[:space:]]+)*[^\\n]*", awk, "#define some_symbol(x) \\ \r\n foo();\\\r\n printf(#x);", match_default, make_array(0, 53, 28, 42, -2, -2));
+ // now try and test some unicode specific characters:
+#if !BOOST_WORKAROUND(__BORLANDC__, < 0x560)
+ TEST_REGEX_SEARCH_W(L"[[:unicode:]]+", perl, L"a\x0300\x0400z", match_default, make_array(1, 3, -2, -2));
+ TEST_REGEX_SEARCH_W(L"[\x10-\xff]", perl, L"\x0300\x0400", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH_W(L"[\01-\05]{5}", perl, L"\x0300\x0400\x0300\x0400\x0300\x0400", match_default, make_array(-2, -2));
+#if !BOOST_WORKAROUND(__DECCXX_VER, BOOST_TESTED_AT(60590042))
+ TEST_REGEX_SEARCH_W(L"[\x300-\x400]+", perl, L"\x0300\x0400\x0300\x0400\x0300\x0400", match_default, make_array(0, 6, -2, -2));
+ TEST_REGEX_SEARCH_W(L"[\\x{300}-\\x{400}]+", perl, L"\x0300\x0400\x0300\x0400\x0300\x0400", match_default, make_array(0, 6, -2, -2));
+ TEST_REGEX_SEARCH_W(L"\\x{300}\\x{400}+", perl, L"\x0300\x0400\x0400\x0400\x0400\x0400", match_default, make_array(0, 6, -2, -2));
+#endif
+#endif
+ // finally try some case insensitive matches:
+ TEST_REGEX_SEARCH("0123456789_at_abcdefghijklmnopqrstuvwxyz\\[\\\\\\]\\^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ\\{\\|\\}", perl|icase, "0123456789_at_ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}", match_default, make_array(0, 72, -2, -2));
+ TEST_REGEX_SEARCH("a", perl|icase, "A", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("A", perl|icase, "a", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("[abc]+", perl|icase, "abcABC", match_default, make_array(0, 6, -2, -2));
+ TEST_REGEX_SEARCH("[ABC]+", perl|icase, "abcABC", match_default, make_array(0, 6, -2, -2));
+ TEST_REGEX_SEARCH("[a-z]+", perl|icase, "abcABC", match_default, make_array(0, 6, -2, -2));
+ TEST_REGEX_SEARCH("[A-Z]+", perl|icase, "abzANZ", match_default, make_array(0, 6, -2, -2));
+ TEST_REGEX_SEARCH("[a-Z]+", perl|icase, "abzABZ", match_default, make_array(0, 6, -2, -2));
+ TEST_REGEX_SEARCH("[A-z]+", perl|icase, "abzABZ", match_default, make_array(0, 6, -2, -2));
+ TEST_REGEX_SEARCH("[[:lower:]]+", perl|icase, "abyzABYZ", match_default, make_array(0, 8, -2, -2));
+ TEST_REGEX_SEARCH("[[:upper:]]+", perl|icase, "abzABZ", match_default, make_array(0, 6, -2, -2));
+ TEST_REGEX_SEARCH("[[:word:]]+", perl|icase, "abcZZZ", match_default, make_array(0, 6, -2, -2));
+ TEST_REGEX_SEARCH("[[:alpha:]]+", perl|icase, "abyzABYZ", match_default, make_array(0, 8, -2, -2));
+ TEST_REGEX_SEARCH("[[:alnum:]]+", perl|icase, "09abyzABYZ", match_default, make_array(0, 10, -2, -2));
+
+ // known and suspected bugs:
+ TEST_REGEX_SEARCH("\\(", perl, "(", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("\\)", perl, ")", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("\\$", perl, "$", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("\\^", perl, "^", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("\\.", perl, ".", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("\\*", perl, "*", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("\\+", perl, "+", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("\\?", perl, "?", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("\\[", perl, "[", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("\\]", perl, "]", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("\\|", perl, "|", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("\\\\", perl, "\\", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("#", perl, "#", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("\\#", perl, "#", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("a-", perl, "a-", match_default, make_array(0, 2, -2, -2));
+ TEST_REGEX_SEARCH("\\-", perl, "-", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("\\{", perl, "{", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("\\}", perl, "}", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("0", perl, "0", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("1", perl, "1", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("9", perl, "9", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("b", perl, "b", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("B", perl, "B", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("<", perl, "<", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH(">", perl, ">", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("w", perl, "w", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("W", perl, "W", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("`", perl, "`", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH(" ", perl, " ", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("\\n", perl, "\n", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH(",", perl, ",", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("a", perl, "a", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("f", perl, "f", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("n", perl, "n", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("r", perl, "r", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("t", perl, "t", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("v", perl, "v", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("c", perl, "c", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("x", perl, "x", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH(":", perl, ":", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH("(\\.[[:alnum:]]+){2}", perl, "w.a.b ", match_default, make_array(1, 5, 3, 5, -2, -2));
+
+ // new bugs detected in spring 2003:
+ TEST_REGEX_SEARCH("b", perl, "abc", match_default|match_continuous, make_array(-2, -2));
+ TEST_REGEX_SEARCH("(?!foo)bar", perl, "foobar", match_default, make_array(3, 6, -2, -2));
+ TEST_REGEX_SEARCH("(?!foo)bar", perl, "??bar", match_default, make_array(2, 5, -2, -2));
+ TEST_REGEX_SEARCH("(?!foo)bar", perl, "barfoo", match_default, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("(?!foo)bar", perl, "bar??", match_default, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("(?!foo)bar", perl, "bar", match_default, make_array(0, 3, -2, -2));
+ TEST_REGEX_SEARCH("a\\Z", perl, "a\nb", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("()", perl, "abc", match_default, make_array(0, 0, 0, 0, -2, 1, 1, 1, 1, -2, 2, 2, 2, 2, -2, 3, 3, 3, 3, -2, -2));
+ TEST_REGEX_SEARCH("^()", perl, "abc", match_default, make_array(0, 0, 0, 0, -2, -2));
+ TEST_REGEX_SEARCH("^()+", perl, "abc", match_default, make_array(0, 0, 0, 0, -2, -2));
+ TEST_REGEX_SEARCH("^(){1}", perl, "abc", match_default, make_array(0, 0, 0, 0, -2, -2));
+ TEST_REGEX_SEARCH("^(){2}", perl, "abc", match_default, make_array(0, 0, 0, 0, -2, -2));
+ TEST_REGEX_SEARCH("^((){2})", perl, "abc", match_default, make_array(0, 0, 0, 0, 0, 0, -2, -2));
+ TEST_REGEX_SEARCH("()", perl, "", match_default, make_array(0, 0, 0, 0, -2, -2));
+ TEST_REGEX_SEARCH("()\\1", perl, "", match_default, make_array(0, 0, 0, 0, -2, -2));
+ TEST_REGEX_SEARCH("()\\1", perl, "a", match_default, make_array(0, 0, 0, 0, -2, 1, 1, 1, 1, -2, -2));
+ TEST_REGEX_SEARCH("a()\\1b", perl, "ab", match_default, make_array(0, 2, 1, 1, -2, -2));
+ TEST_REGEX_SEARCH("a()b\\1", perl, "ab", match_default, make_array(0, 2, 1, 1, -2, -2));
+ TEST_REGEX_SEARCH("([a-c]+)\\1", perl, "abcbc", match_default, make_array(1, 5, 1, 3, -2, -2));
+ TEST_REGEX_SEARCH(".+abc", perl, "xxxxxxxxyyyyyyyyab", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("(.+)\\1", perl, "abcdxxxyyyxxxyyy", match_default, make_array(4, 16, 4, 10, -2, -2));
+ // this should not throw:
+ TEST_REGEX_SEARCH("[_]+$", perl, "___________________________________________x", match_default, make_array(-2, -2));
+ // bug in V4 code detected 2004/05/12:
+ TEST_REGEX_SEARCH("\\l+", perl|icase, "abcXYZ", match_default, make_array(0, 6, -2, -2));
+ TEST_REGEX_SEARCH("\\u+", perl|icase, "abcXYZ", match_default, make_array(0, 6, -2, -2));
+ TEST_REGEX_SEARCH("(a)(?:b)", perl|nosubs, "ab", match_default, make_array(0, 2, -2, -2));
+ // bug reported 2006-09-20:
+ TEST_REGEX_SEARCH("(?:\\d{9}.*){2}", perl, "123456789dfsdfsdfsfsdfds123456789b", match_default, make_array(0, 34, -2, -2));
+ TEST_REGEX_SEARCH("(?:\\d{9}.*){2}", perl, "123456789dfsdfsdfsfsdfds12345678", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH("(?:\\d{9}.*){2}", perl, "123456789dfsdfsdfsfsdfds", match_default, make_array(-2, -2));
+
+
+ //
+ // the strings in the next test case are too long for most compilers to cope with,
+ // we have to break them up and call the testing procs directly rather than rely on the macros:
+ //
+ static const char* big_text = "00001 01 \r\n00002 02 1 2 3 4 5 6"
+ "7 8 9 0\r\n00003 03 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890\r\n"
+ "00004 04 \r\n00005 05 \r\n00006 06 "
+ "Seite: 0001\r\n00007 07 "
+ "StartSeitEEnde: 0001\r\n00008 08 "
+ "StartSeiTe Ende: 0001\r\n00009 09 "
+ "Start seiteEnde: 0001\r\n00010 10 "
+ "28.2.03\r\n00011 11 "
+ "Page: 0001\r\n00012 12 "
+ "Juhu die Erste: 0001\r\n00013 13 "
+ "Es war einmal! 0001\r\n00014 14 ABCDEFGHIJKLMNOPQRSTUVWXYZ0001\r\n"
+ "00015 15 abcdefghijklmnopqrstuvwxyz0001\r\n"
+ "00016 16 lars.schmeiser_at_[hidden]\r\n00017 17 \r\n"
+ "00018 18 \r\n00019 19 \r\n00020 20 \r\n00021 21 1 2 3 4 5 "
+ "6 7 8 9 0\r\n"
+ "00022 22 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890\r\n"
+ "00023 01 \r\n00024 02 1 2 3 4 5 6 7 8 9 0\r\n"
+ "00025 03 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890\r\n"
+ "00026 04 \r\n00027 05 \r\n00028 06 "
+ "Seite: 0002\r\n00029 07 StartSeitEEnde: 0002\r\n"
+ "00030 08 "
+ "StartSeiTe Ende: 0002\r\n00031 09 "
+ "Start seiteEnde: 0002\r\n00032 10 "
+ "28.02.2003\r\n00033 11 "
+ "Page: 0002\r\n00034 12 "
+ "Juhu die Erste: 0002\r\n00035 13 "
+ "Es war einmal! 0002\r\n00036 14 ABCDEFGHIJKLMNOPQRSTUVWXYZ0002\r\n00037 "
+ "15 abcdefghijklmnopqrstuvwxyz0002\r\n00038 16 "
+ "lars.schmeiser_at_194.1.12.111\r\n00039 17 \r\n00040 18 \r\n00041 19 \r\n"
+ "00042 20 \r\n00043 21 1 2 3 4 5 6 7 8 9 0\r\n";
+
+ do{
+ test_info<char>::set_info(__FILE__, __LINE__,
+ "(.*\\r\\n){3}.* abcdefghijklmnopqrstuvwxyz.*\\r\\n",
+ perl, big_text, match_default|match_not_dot_newline,
+ make_array(753, 1076, 934, 1005, -2, 2143, 2466, 2324, 2395, -2, -2));
+ test(char(0), test_regex_search_tag());
+ }while(0);
+#if !defined(BOOST_NO_WREGEX) && !defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS) && !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+ do{
+ std::string st(big_text);
+ test_info<wchar_t>::set_info(__FILE__, __LINE__,
+ L"(.*\\r\\n){3}.* abcdefghijklmnopqrstuvwxyz.*\\r\\n",
+ perl, std::wstring(st.begin(), st.end()), match_default|match_not_dot_newline,
+ make_array(753, 1076, 934, 1005, -2, 2143, 2466, 2324, 2395, -2, -2));
+ test(char(0), test_regex_search_tag());
+ }while(0);
+#endif
+}
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_unicode.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/test_unicode.cpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,170 @@
+/*
+ *
+ * Copyright (c) 2004
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE test_unicode.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Unicode specific tests (requires ICU).
+ */
+
+#include <boost/regex/config.hpp>
+#ifdef BOOST_HAS_ICU
+#include "test.hpp"
+
+#ifdef BOOST_MSVC
+#pragma warning(disable:4127)
+#endif
+
+#ifndef BOOST_NO_STD_WSTRING
+
+#define TEST_REGEX_SEARCH_U(s, f, t, m, a)\
+ do{\
+ const wchar_t e[] = { s };\
+ std::wstring se(e, (sizeof(e) / sizeof(wchar_t)) - 1);\
+ const wchar_t st[] = { t };\
+ std::wstring sst(st, (sizeof(st) / sizeof(wchar_t)) - 1);\
+ test_info<wchar_t>::set_info(__FILE__, __LINE__, se, f, sst, m, a);\
+ test_icu(wchar_t(0), test_regex_search_tag());\
+ }while(0)
+
+#define TEST_REGEX_CLASS_U(classname, character)\
+ TEST_REGEX_SEARCH_U(\
+ L"[[:" BOOST_JOIN(L, BOOST_STRINGIZE(classname)) L":]]",\
+ perl, \
+ BOOST_JOIN(L, \
+ BOOST_STRINGIZE(\
+ BOOST_JOIN(\x, character))), \
+ match_default, \
+ make_array(0, 1, -2, -2))
+
+#else
+
+#define TEST_REGEX_SEARCH_U(s, f, t, m, a)
+#define TEST_REGEX_CLASS_U(classname, character)
+
+#endif
+
+void test_unicode()
+{
+ using namespace boost::regex_constants;
+
+ TEST_REGEX_CLASS_U(L*, 3108);
+ TEST_REGEX_CLASS_U(Letter, 3108);
+ TEST_REGEX_CLASS_U(Lu, 2145);
+ TEST_REGEX_CLASS_U(Uppercase Letter, 2145);
+ TEST_REGEX_CLASS_U(Ll, 2146);
+ TEST_REGEX_CLASS_U(Lowercase Letter, 2146);
+ TEST_REGEX_CLASS_U(Lt, 1FFC);
+ TEST_REGEX_CLASS_U(Titlecase Letter, 1FFC);
+ TEST_REGEX_CLASS_U(Lm, 1D61);
+ TEST_REGEX_CLASS_U(Modifier Letter, 1D61);
+ TEST_REGEX_CLASS_U(Lo, 1974);
+ TEST_REGEX_CLASS_U(Other Letter, 1974);
+ TEST_REGEX_CLASS_U(M*, 20EA);
+ TEST_REGEX_CLASS_U(Mark, 20EA);
+ TEST_REGEX_CLASS_U(Mn, 20EA);
+ TEST_REGEX_CLASS_U(Non-Spacing Mark, 20EA);
+ TEST_REGEX_CLASS_U(Mc, 1938);
+ TEST_REGEX_CLASS_U(Spacing Combining Mark, 1938);
+ TEST_REGEX_CLASS_U(Me, 06DE);
+ TEST_REGEX_CLASS_U(Enclosing Mark, 06DE);
+ TEST_REGEX_CLASS_U(N*, 0669);
+ TEST_REGEX_CLASS_U(Number, 0669);
+ TEST_REGEX_CLASS_U(Nd, 0669);
+ TEST_REGEX_CLASS_U(Decimal Digit Number, 0669);
+ TEST_REGEX_CLASS_U(Nl, 303A);
+ TEST_REGEX_CLASS_U(Letter Number, 303A);
+ TEST_REGEX_CLASS_U(No, 2793);
+ TEST_REGEX_CLASS_U(Other Number, 2793);
+
+ TEST_REGEX_CLASS_U(S*, 2144);
+ TEST_REGEX_CLASS_U(Symbol, 2144);
+ TEST_REGEX_CLASS_U(Sm, 2144);
+ TEST_REGEX_CLASS_U(Math Symbol, 2144);
+ TEST_REGEX_CLASS_U(Sc, 20B1);
+ TEST_REGEX_CLASS_U(Currency Symbol, 20B1);
+ TEST_REGEX_CLASS_U(Sk, 1FFE);
+ TEST_REGEX_CLASS_U(Modifier Symbol, 1FFE);
+ TEST_REGEX_CLASS_U(So, 19FF);
+ TEST_REGEX_CLASS_U(Other Symbol, 19FF);
+
+ TEST_REGEX_CLASS_U(P*, 005F);
+ TEST_REGEX_CLASS_U(Punctuation, 005F);
+ TEST_REGEX_CLASS_U(Pc, 005F);
+ TEST_REGEX_CLASS_U(Connector Punctuation, 005F);
+ TEST_REGEX_CLASS_U(Pd, 002D);
+ TEST_REGEX_CLASS_U(Dash Punctuation, 002D);
+ TEST_REGEX_CLASS_U(Ps, 0028);
+ TEST_REGEX_CLASS_U(Open Punctuation, 0028);
+ TEST_REGEX_CLASS_U(Pe, FF63);
+ TEST_REGEX_CLASS_U(Close Punctuation, FF63);
+ TEST_REGEX_CLASS_U(Pi, 2039);
+ TEST_REGEX_CLASS_U(Initial Punctuation, 2039);
+ TEST_REGEX_CLASS_U(Pf, 203A);
+ TEST_REGEX_CLASS_U(Final Punctuation, 203A);
+ TEST_REGEX_CLASS_U(Po, 2038);
+ TEST_REGEX_CLASS_U(Other Punctuation, 2038);
+
+ TEST_REGEX_CLASS_U(Z*, 202F);
+ TEST_REGEX_CLASS_U(Separator, 202F);
+ TEST_REGEX_CLASS_U(Zs, 202F);
+ TEST_REGEX_CLASS_U(Space Separator, 202F);
+ TEST_REGEX_CLASS_U(Zl, 2028);
+ TEST_REGEX_CLASS_U(Line Separator, 2028);
+ TEST_REGEX_CLASS_U(Zp, 2029);
+ TEST_REGEX_CLASS_U(Paragraph Separator, 2029);
+#if !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+ // Some tests have to be disabled for VC6 because the compiler
+ // mangles the string literals...
+ TEST_REGEX_CLASS_U(C*, 009F);
+ TEST_REGEX_CLASS_U(Other, 009F);
+ TEST_REGEX_CLASS_U(Cc, 009F);
+ TEST_REGEX_CLASS_U(Control, 009F);
+#endif
+ TEST_REGEX_CLASS_U(Cf, FFFB);
+ TEST_REGEX_CLASS_U(Format, FFFB);
+ //TEST_REGEX_CLASS_U(Cs, DC00);
+ //TEST_REGEX_CLASS_U(Surrogate, DC00);
+ TEST_REGEX_CLASS_U(Co, F8FF);
+ TEST_REGEX_CLASS_U(Private Use, F8FF);
+ TEST_REGEX_CLASS_U(Cn, FFFF);
+ TEST_REGEX_CLASS_U(Not Assigned, FFFF);
+ TEST_REGEX_CLASS_U(Any, 2038);
+ TEST_REGEX_CLASS_U(Assigned, 2038);
+ TEST_REGEX_CLASS_U(ASCII, 7f);
+ TEST_REGEX_SEARCH_U(L"[[:Assigned:]]", perl, L"\xffff", match_default, make_array(-2, -2));
+ TEST_REGEX_SEARCH_U(L"[[:ASCII:]]", perl, L"\x80", match_default, make_array(-2, -2));
+
+ TEST_REGEX_SEARCH_U(L"\\N{KHMER DIGIT SIX}", perl, L"\x17E6", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH_U(L"\\N{MODIFIER LETTER LOW ACUTE ACCENT}", perl, L"\x02CF", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH_U(L"\\N{SUPERSCRIPT ONE}", perl, L"\x00B9", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH_U(L"[\\N{KHMER DIGIT SIX}]", perl, L"\x17E6", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH_U(L"[\\N{MODIFIER LETTER LOW ACUTE ACCENT}]", perl, L"\x02CF", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH_U(L"[\\N{SUPERSCRIPT ONE}]", perl, L"\x00B9", match_default, make_array(0, 1, -2, -2));
+ TEST_REGEX_SEARCH_U(L"\\N{CJK UNIFIED IDEOGRAPH-7FED}", perl, L"\x7FED", match_default, make_array(0, 1, -2, -2));
+#if !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+ // Some tests have to be disabled for VC6 because the compiler
+ // mangles the string literals...
+ TEST_REGEX_SEARCH_U(L"\\w+", perl, L" e\x301" L"coute ", match_default, make_array(1, 8, -2, -2));
+
+ TEST_REGEX_SEARCH_U(L"^", perl, L" \x2028 \x2029 \x000D\x000A \x000A \x000C \x000D \x0085 ",
+ match_default | match_not_bol, make_array(2, 2, -2, 4, 4, -2, 7, 7, -2, 9, 9, -2, 11, 11, -2, 13, 13, -2, 15, 15, -2, -2));
+ TEST_REGEX_SEARCH_U(L"$", perl, L" \x2028 \x2029 \x000D\x000A \x000A \x000C \x000D \x0085 ",
+ match_default | match_not_eol, make_array(1, 1, -2, 3, 3, -2, 5, 5, -2, 8, 8, -2, 10, 10, -2, 12, 12, -2, 14, 14, -2, -2));
+ TEST_REGEX_SEARCH_U(L".", perl, L" \x2028\x2029\x000D\x000A\x000A\x000C\x000D\x0085 ",
+ match_default | match_not_dot_newline, make_array(0, 1, -2, 9, 10, -2, -2));
+#endif
+}
+
+#else
+void test_unicode(){}
+#endif

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/vc6-stlport.mak
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/vc6-stlport.mak 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,77 @@
+# copyright John Maddock 2003
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt.
+
+# very basic makefile for regression tests
+#
+# Visual C++ 6 + full stlport 4.x
+#
+# we don't test single threaded builds as stlport doesn't support these...
+#
+#
+# Add additional compiler options here:
+#
+CXXFLAGS=
+#
+# Add additional debugging options here:
+#
+CXXDEBUG=/D_STLP_DEBUG=1
+#
+# Add additional include directories here:
+#
+INCLUDES=
+#
+# add additional linker flags here:
+#
+XLFLAGS=
+#
+# sources to compile for each test:
+#
+SOURCES=*.cpp
+
+!IF "$(MSVCDIR)" == ""
+!ERROR Variable MSVCDIR not set.
+!ENDIF
+
+!IF "$(STLPORT_PATH)" == ""
+!ERROR Variable STLPORT_PATH not set.
+!ENDIF
+
+
+CFLAGS= $(INCLUDES) /I$(STLPORT_PATH)\stlport /Zm400 /GF /Gy -GX -GR -I..\..\..\..\ $(CXXFLAGS) /DBOOST_LIB_DIAGNOSTIC=1
+
+LFLAGS= -link /LIBPATH:..\..\..\..\stage\lib /LIBPATH:..\..\build\vc6-stlport /LIBPATH:$(STLPORT_PATH)\lib user32.lib $(XLFLAGS)
+
+all :: r3-vc6-stlport.exe r4-vc6-stlport.exe r5-vc6-stlport.exe r6-vc6-stlport.exe r7-vc6-stlport.exe r8-vc6-stlport.exe
+ r1-vc6-stlport
+ r2-vc6-stlport
+ r3-vc6-stlport
+ r4-vc6-stlport
+ r5-vc6-stlport
+ r6-vc6-stlport
+ -copy ..\..\build\vc6\boost_regex*.dll
+ -copy ..\..\..\..\stage\lib\boost_regex*.dll
+ r7-vc6-stlport
+ r8-vc6-stlport
+
+r3-vc6-stlport.exe :
+ cl /MT $(CFLAGS) /O2 -o r3-vc6-stlport.exe $(SOURCES) $(LFLAGS)
+
+r4-vc6-stlport.exe :
+ cl /MTd $(CFLAGS) -o r4-vc6-stlport.exe $(SOURCES) $(LFLAGS)
+
+r5-vc6-stlport.exe :
+ cl /MD $(CFLAGS) /O2 -o r5-vc6-stlport.exe $(SOURCES) $(LFLAGS)
+
+r6-vc6-stlport.exe :
+ cl /MDd $(CFLAGS) -o r6-vc6-stlport.exe $(SOURCES) $(LFLAGS)
+
+r7-vc6-stlport.exe :
+ cl /MD $(CFLAGS) /O2 /DBOOST_ALL_DYN_LINK -o r7-vc6-stlport.exe $(SOURCES) $(LFLAGS)
+
+r8-vc6-stlport.exe :
+ cl /MDd $(CFLAGS) /DBOOST_ALL_DYN_LINK -o r8-vc6-stlport.exe $(SOURCES) $(LFLAGS)
+
+
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/vc6.mak
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/vc6.mak 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,68 @@
+# copyright John Maddock 2003
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt.
+
+# very basic makefile for regression tests
+#
+# Visual C++ 6
+#
+#
+# Add additional compiler options here:
+#
+CXXFLAGS=
+#
+# Add additional include directories here:
+#
+INCLUDES=
+#
+# add additional linker flags here:
+#
+XLFLAGS=
+#
+# sources to compile for each test:
+#
+SOURCES=*.cpp
+
+CFLAGS= $(INCLUDES) /Zm400 /GF /Gy -GX -GR -I..\..\..\..\ /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS)
+
+LFLAGS= -link /LIBPATH:..\..\..\..\stage\lib /LIBPATH:..\..\build\vc6 user32.lib $(XLFLAGS)
+
+all :: r1-vc6.exe r2-vc6.exe r3-vc6.exe r4-vc6.exe r5-vc6.exe r6-vc6.exe r7-vc6.exe r8-vc6.exe
+ r1-vc6
+ r2-vc6
+ r3-vc6
+ r4-vc6
+ r5-vc6
+ r6-vc6
+ -copy ..\..\build\vc6\boost_regex*.dll
+ -copy ..\..\..\..\stage\lib\boost_regex*.dll
+ r7-vc6
+ r8-vc6
+
+r1-vc6.exe :
+ cl /ML $(CFLAGS) /O2 -o r1-vc6.exe $(SOURCES) $(LFLAGS)
+
+r2-vc6.exe :
+ cl /MLd $(CFLAGS) -o r2-vc6.exe $(SOURCES) $(LFLAGS)
+
+r3-vc6.exe :
+ cl /MT $(CFLAGS) /O2 -o r3-vc6.exe $(SOURCES) $(LFLAGS)
+
+r4-vc6.exe :
+ cl /MTd $(CFLAGS) -o r4-vc6.exe $(SOURCES) $(LFLAGS)
+
+r5-vc6.exe :
+ cl /MD $(CFLAGS) /O2 -o r5-vc6.exe $(SOURCES) $(LFLAGS)
+
+r6-vc6.exe :
+ cl /MDd $(CFLAGS) -o r6-vc6.exe $(SOURCES) $(LFLAGS)
+
+r7-vc6.exe :
+ cl /MD $(CFLAGS) /O2 /DBOOST_ALL_DYN_LINK -o r7-vc6.exe $(SOURCES) $(LFLAGS)
+
+r8-vc6.exe :
+ cl /MDd $(CFLAGS) /DBOOST_ALL_DYN_LINK -o r8-vc6.exe $(SOURCES) $(LFLAGS)
+
+
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/vc7.mak
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/vc7.mak 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,68 @@
+# copyright John Maddock 2003
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt.
+
+# very basic makefile for regression tests
+#
+# Visual C++ 6
+#
+#
+# Add additional compiler options here:
+#
+CXXFLAGS=
+#
+# Add additional include directories here:
+#
+INCLUDES=
+#
+# add additional linker flags here:
+#
+XLFLAGS=
+#
+# sources to compile for each test:
+#
+SOURCES=*.cpp
+
+CFLAGS= $(INCLUDES) /Zm400 /O2 /GB /GF /Gy -GX -GR -I..\..\..\..\ $(CXXFLAGS) /DBOOST_LIB_DIAGNOSTIC=1 /Zc:wchar_t
+
+LFLAGS= -link /LIBPATH:..\..\..\..\stage\lib /LIBPATH:..\..\build\vc7 $(XLFLAGS)
+
+all :: r1-vc7.exe r2-vc7.exe r3-vc7.exe r4-vc7.exe r5-vc7.exe r6-vc7.exe r7-vc7.exe r8-vc7.exe
+ r1-vc7
+ r2-vc7
+ r3-vc7
+ r4-vc7
+ r5-vc7
+ r6-vc7
+ -copy ..\..\build\vc7\boost_regex*.dll
+ -copy ..\..\..\..\stage\lib\boost_regex*.dll
+ r7-vc7
+ r8-vc7
+
+r1-vc7.exe :
+ cl /ML $(CFLAGS) /O2 -o r1-vc7.exe $(SOURCES) $(LFLAGS)
+
+r2-vc7.exe :
+ cl /MLd $(CFLAGS) -o r2-vc7.exe $(SOURCES) $(LFLAGS)
+
+r3-vc7.exe :
+ cl /MT $(CFLAGS) /O2 -o r3-vc7.exe $(SOURCES) $(LFLAGS)
+
+r4-vc7.exe :
+ cl /MTd $(CFLAGS) -o r4-vc7.exe $(SOURCES) $(LFLAGS)
+
+r5-vc7.exe :
+ cl /MD $(CFLAGS) /O2 -o r5-vc7.exe $(SOURCES) $(LFLAGS)
+
+r6-vc7.exe :
+ cl /MDd $(CFLAGS) -o r6-vc7.exe $(SOURCES) $(LFLAGS)
+
+r7-vc7.exe :
+ cl /MD $(CFLAGS) /O2 /DBOOST_ALL_DYN_LINK -o r7-vc7.exe $(SOURCES) $(LFLAGS)
+
+r8-vc7.exe :
+ cl /MDd $(CFLAGS) /DBOOST_ALL_DYN_LINK -o r8-vc7.exe $(SOURCES) $(LFLAGS)
+
+
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/vc71.mak
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/vc71.mak 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,68 @@
+# copyright John Maddock 2003
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt.
+
+# very basic makefile for regression tests
+#
+# Visual C++ 7.1
+#
+#
+# Add additional compiler options here:
+#
+CXXFLAGS=
+#
+# Add additional include directories here:
+#
+INCLUDES=
+#
+# add additional linker flags here:
+#
+XLFLAGS=
+#
+# sources to compile for each test:
+#
+SOURCES=*.cpp
+
+CFLAGS= $(INCLUDES) /Zm400 /GB /GF /Gy -GX -GR -I..\..\..\..\ $(CXXFLAGS) /DBOOST_LIB_DIAGNOSTIC=1 /Zc:wchar_t
+
+LFLAGS= -link /LIBPATH:..\..\..\..\stage\lib /LIBPATH:..\..\build\vc71 $(XLFLAGS)
+
+all :: r1-vc71.exe r2-vc71.exe r3-vc71.exe r4-vc71.exe r5-vc71.exe r6-vc71.exe r7-vc71.exe r8-vc71.exe
+ r1-vc71
+ r2-vc71
+ r3-vc71
+ r4-vc71
+ r5-vc71
+ r6-vc71
+ -copy ..\..\build\vc71\boost_regex*.dll
+ -copy ..\..\..\..\stage\lib\boost_regex*.dll
+ r7-vc71
+ r8-vc71
+
+r1-vc71.exe :
+ cl /ML $(CFLAGS) /O2 -o r1-vc71.exe $(SOURCES) $(LFLAGS)
+
+r2-vc71.exe :
+ cl /MLd $(CFLAGS) -o r2-vc71.exe $(SOURCES) $(LFLAGS)
+
+r3-vc71.exe :
+ cl /MT $(CFLAGS) /O2 -o r3-vc71.exe $(SOURCES) $(LFLAGS)
+
+r4-vc71.exe :
+ cl /MTd $(CFLAGS) -o r4-vc71.exe $(SOURCES) $(LFLAGS)
+
+r5-vc71.exe :
+ cl /MD $(CFLAGS) /O2 -o r5-vc71.exe $(SOURCES) $(LFLAGS)
+
+r6-vc71.exe :
+ cl /MDd $(CFLAGS) -o r6-vc71.exe $(SOURCES) $(LFLAGS)
+
+r7-vc71.exe :
+ cl /MD $(CFLAGS) /O2 /DBOOST_ALL_DYN_LINK -o r7-vc71.exe $(SOURCES) $(LFLAGS)
+
+r8-vc71.exe :
+ cl /MDd $(CFLAGS) /DBOOST_ALL_DYN_LINK -o r8-vc71.exe $(SOURCES) $(LFLAGS)
+
+
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/vc8.mak
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/test/regress/vc8.mak 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,68 @@
+# copyright John Maddock 2003
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt.
+
+# very basic makefile for regression tests
+#
+# Visual C++ 8.0
+#
+#
+# Add additional compiler options here:
+#
+CXXFLAGS=
+#
+# Add additional include directories here:
+#
+INCLUDES=
+#
+# add additional linker flags here:
+#
+XLFLAGS=
+#
+# sources to compile for each test:
+#
+SOURCES=*.cpp
+
+CFLAGS= $(INCLUDES) /Zm400 /GB /GF /Gy -GX -GR -I..\..\..\..\ $(CXXFLAGS) /DBOOST_LIB_DIAGNOSTIC=1 /Zc:wchar_t
+
+LFLAGS= -link /LIBPATH:..\..\..\..\stage\lib /LIBPATH:..\..\build\vc80 $(XLFLAGS)
+
+all :: r1-vc8.exe r2-vc8.exe r3-vc8.exe r4-vc8.exe r5-vc8.exe r6-vc8.exe r7-vc8.exe r8-vc8.exe
+ r1-vc8
+ r2-vc8
+ r3-vc8
+ r4-vc8
+ r5-vc8
+ r6-vc8
+ -copy ..\..\build\vc80\boost_regex*.dll
+ -copy ..\..\..\..\stage\lib\boost_regex*.dll
+ r7-vc8
+ r8-vc8
+
+r1-vc8.exe :
+ cl /ML $(CFLAGS) /O2 -o r1-vc8.exe $(SOURCES) $(LFLAGS)
+
+r2-vc8.exe :
+ cl /MLd $(CFLAGS) -o r2-vc8.exe $(SOURCES) $(LFLAGS)
+
+r3-vc8.exe :
+ cl /MT $(CFLAGS) /O2 -o r3-vc8.exe $(SOURCES) $(LFLAGS)
+
+r4-vc8.exe :
+ cl /MTd $(CFLAGS) -o r4-vc8.exe $(SOURCES) $(LFLAGS)
+
+r5-vc8.exe :
+ cl /MD $(CFLAGS) /O2 -o r5-vc8.exe $(SOURCES) $(LFLAGS)
+
+r6-vc8.exe :
+ cl /MDd $(CFLAGS) -o r6-vc8.exe $(SOURCES) $(LFLAGS)
+
+r7-vc8.exe :
+ cl /MD $(CFLAGS) /O2 /DBOOST_ALL_DYN_LINK -o r7-vc8.exe $(SOURCES) $(LFLAGS)
+
+r8-vc8.exe :
+ cl /MDd $(CFLAGS) /DBOOST_ALL_DYN_LINK -o r8-vc8.exe $(SOURCES) $(LFLAGS)
+
+
+

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/test/static_mutex/static_mutex_test.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/test/static_mutex/static_mutex_test.cpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,181 @@
+/*
+ *
+ * Copyright (c) 2004
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE static_mutex_test.cpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: test program for boost::static_mutex.
+ */
+
+#include <iostream>
+#include <boost/regex/pending/static_mutex.hpp>
+#include <boost/thread/thread.hpp>
+#include <boost/timer.hpp>
+
+//
+// we cannot use the regular Boost.Test in here: it is not thread safe
+// and calls to BOOST_TEST will eventually crash on some compilers
+// (Borland certainly) due to race conditions inside the Boost.Test lib.
+//
+#define BOOST_TEST(pred) if(!(pred)) failed_test(__FILE__, __LINE__, BOOST_STRINGIZE(pred));
+
+int total_failures = 0;
+void failed_test(const char* file, int line, const char* pred)
+{
+ static boost::static_mutex mut = BOOST_STATIC_MUTEX_INIT ;
+ boost::static_mutex::scoped_lock guard(mut);
+ ++total_failures;
+ std::cout << "Failed test in \"" << file << "\" at line " << line << ": " << pred << std::endl;
+}
+
+void print_cycles(int c)
+{
+ static boost::static_mutex mut = BOOST_STATIC_MUTEX_INIT ;
+ boost::static_mutex::scoped_lock guard(mut);
+ std::cout << "Thread exited after " << c << " cycles." << std::endl;
+}
+
+bool sufficient_time()
+{
+ // return true if enough time has passed since the tests began:
+ static boost::static_mutex mut = BOOST_STATIC_MUTEX_INIT ;
+ boost::static_mutex::scoped_lock guard(mut);
+ static boost::timer t;
+ // is 10 seconds enough?
+ return t.elapsed() >= 10.0;
+}
+
+// define three trivial test proceedures:
+bool t1()
+{
+ static boost::static_mutex mut = BOOST_STATIC_MUTEX_INIT ;
+ static int has_lock = 0;
+ static int data = 10000;
+
+ boost::static_mutex::scoped_lock guard(mut);
+ BOOST_TEST(++has_lock == 1);
+ BOOST_TEST(guard.locked());
+ BOOST_TEST(guard);
+ bool result = (--data > 0) ? true : false;
+ BOOST_TEST(--has_lock == 0);
+ return result;
+}
+
+bool t2()
+{
+ static boost::static_mutex mut = BOOST_STATIC_MUTEX_INIT ;
+ static int has_lock = 0;
+ static int data = 10000;
+
+ boost::static_mutex::scoped_lock guard(mut, false);
+ BOOST_TEST(0 == guard.locked());
+ BOOST_TEST(!guard);
+ guard.lock();
+ BOOST_TEST(++has_lock == 1);
+ BOOST_TEST(guard.locked());
+ BOOST_TEST(guard);
+ bool result = (--data > 0) ? true : false;
+ BOOST_TEST(--has_lock == 0);
+ guard.unlock();
+ BOOST_TEST(0 == guard.locked());
+ BOOST_TEST(!guard);
+ return result;
+}
+
+bool t3()
+{
+ static boost::static_mutex mut = BOOST_STATIC_MUTEX_INIT ;
+ static int has_lock = 0;
+ static int data = 10000;
+
+ boost::static_mutex::scoped_lock guard(mut);
+ BOOST_TEST(++has_lock == 1);
+ BOOST_TEST(guard.locked());
+ BOOST_TEST(guard);
+ bool result = (--data > 0) ? true : false;
+ BOOST_TEST(--has_lock == 0);
+ return result;
+}
+
+// define their thread procs:
+void thread1_proc()
+{
+ int cycles = 0;
+ while(!sufficient_time())
+ {
+ t1();
+ t2();
+ ++cycles;
+ }
+ print_cycles(cycles);
+}
+
+void thread2_proc()
+{
+ int cycles = 0;
+ while(!sufficient_time())
+ {
+ t2();
+ t3();
+ ++cycles;
+ }
+ print_cycles(cycles);
+}
+
+void thread3_proc()
+{
+ int cycles = 0;
+ while(!sufficient_time())
+ {
+ t1();
+ t3();
+ ++cycles;
+ }
+ print_cycles(cycles);
+}
+
+// make sure that at least one of our test proceedures
+// is called during program startup:
+struct startup1
+{
+ startup1()
+ {
+ t1();
+ }
+ ~startup1()
+ {
+ t1();
+ }
+};
+
+startup1 up1;
+
+int main()
+{
+ BOOST_TEST(0 != &up1);
+
+ boost::thread thrd1(&thread1_proc);
+ boost::thread thrd2(&thread1_proc);
+ boost::thread thrd3(&thread2_proc);
+ boost::thread thrd4(&thread2_proc);
+ boost::thread thrd5(&thread3_proc);
+ boost::thread thrd6(&thread3_proc);
+
+ thrd1.join();
+ thrd2.join();
+ thrd3.join();
+ thrd4.join();
+ thrd5.join();
+ thrd6.join();
+
+ return total_failures;
+}

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/test/unicode/unicode_iterator_test.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/test/unicode/unicode_iterator_test.cpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,208 @@
+/*
+ *
+ * Copyright (c) 2004
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE unicode_iterator_test.cpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Simple test suite for Unicode interconversions.
+ */
+
+#include <boost/regex/pending/unicode_iterator.hpp>
+#include <boost/test/included/test_exec_monitor.hpp>
+#include <vector>
+#include <iterator>
+#include <algorithm>
+
+void spot_checks()
+{
+ // test specific values ripped straight out of the Unicode standard
+ // to verify that our encoding is the same as theirs, as well as
+ // self-consistent:
+ ::boost::uint32_t spot16[] = { 0x10302u, };
+ typedef boost::u32_to_u16_iterator<const ::boost::uint32_t*> u32to16type;
+
+ u32to16type it(spot16);
+ BOOST_CHECK_EQUAL(*it++, 0xD800u);
+ BOOST_CHECK_EQUAL(*it++, 0xDF02u);
+ BOOST_CHECK_EQUAL(*--it, 0xDF02u);
+ BOOST_CHECK_EQUAL(*--it, 0xD800u);
+
+ ::boost::uint32_t spot8[] = { 0x004Du, 0x0430u, 0x4E8Cu, 0x10302u, };
+ typedef boost::u32_to_u8_iterator<const ::boost::uint32_t*> u32to8type;
+
+ u32to8type it8(spot8);
+ BOOST_CHECK_EQUAL(*it8++, 0x4Du);
+ BOOST_CHECK_EQUAL(*it8++, 0xD0u);
+ BOOST_CHECK_EQUAL(*it8++, 0xB0u);
+ BOOST_CHECK_EQUAL(*it8++, 0xE4u);
+ BOOST_CHECK_EQUAL(*it8++, 0xBAu);
+ BOOST_CHECK_EQUAL(*it8++, 0x8Cu);
+ BOOST_CHECK_EQUAL(*it8++, 0xF0u);
+ BOOST_CHECK_EQUAL(*it8++, 0x90u);
+ BOOST_CHECK_EQUAL(*it8++, 0x8Cu);
+ BOOST_CHECK_EQUAL(*it8++, 0x82u);
+
+ BOOST_CHECK_EQUAL(*--it8, 0x82u);
+ BOOST_CHECK_EQUAL(*--it8, 0x8Cu);
+ BOOST_CHECK_EQUAL(*--it8, 0x90u);
+ BOOST_CHECK_EQUAL(*--it8, 0xF0u);
+ BOOST_CHECK_EQUAL(*--it8, 0x8Cu);
+ BOOST_CHECK_EQUAL(*--it8, 0xBAu);
+ BOOST_CHECK_EQUAL(*--it8, 0xE4u);
+ BOOST_CHECK_EQUAL(*--it8, 0xB0u);
+ BOOST_CHECK_EQUAL(*--it8, 0xD0u);
+ BOOST_CHECK_EQUAL(*--it8, 0x4Du);
+}
+
+void test(const std::vector< ::boost::uint32_t>& v)
+{
+ typedef std::vector< ::boost::uint32_t> vector32_type;
+ typedef std::vector< ::boost::uint16_t> vector16_type;
+ typedef std::vector< ::boost::uint8_t> vector8_type;
+ typedef boost::u32_to_u16_iterator<vector32_type::const_iterator, ::boost::uint16_t> u32to16type;
+ typedef boost::u16_to_u32_iterator<vector16_type::const_iterator, ::boost::uint32_t> u16to32type;
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_NO_STD_ITERATOR) && !defined(_RWSTD_NO_CLASS_PARTIAL_SPEC)
+ typedef std::reverse_iterator<u32to16type> ru32to16type;
+ typedef std::reverse_iterator<u16to32type> ru16to32type;
+#endif
+ typedef boost::u32_to_u8_iterator<vector32_type::const_iterator, ::boost::uint8_t> u32to8type;
+ typedef boost::u8_to_u32_iterator<vector8_type::const_iterator, ::boost::uint32_t> u8to32type;
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_NO_STD_ITERATOR) && !defined(_RWSTD_NO_CLASS_PARTIAL_SPEC)
+ typedef std::reverse_iterator<u32to8type> ru32to8type;
+ typedef std::reverse_iterator<u8to32type> ru8to32type;
+#endif
+ vector8_type v8;
+ vector16_type v16;
+ vector32_type v32;
+ vector32_type::const_iterator i, j, k;
+ //
+ // begin by testing forward iteration, of 32-16 bit interconversions:
+ //
+#if !defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS)
+ v16.assign(u32to16type(v.begin()), u32to16type(v.end()));
+#else
+ v16.clear();
+ std::copy(u32to16type(v.begin()), u32to16type(v.end()), std::back_inserter(v16));
+#endif
+#ifndef BOOST_NO_STD_DISTANCE
+ BOOST_CHECK_EQUAL(std::distance(u32to16type(v.begin()), u32to16type(v.end())), v16.size());
+#endif
+#if !defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS)
+ v32.assign(u16to32type(v16.begin()), u16to32type(v16.end()));
+#else
+ v32.clear();
+ std::copy(u16to32type(v16.begin()), u16to32type(v16.end()), std::back_inserter(v32));
+#endif
+#ifndef BOOST_NO_STD_DISTANCE
+ BOOST_CHECK_EQUAL(std::distance(u16to32type(v16.begin()), u16to32type(v16.end())), v32.size());
+#endif
+ BOOST_CHECK_EQUAL(v.size(), v32.size());
+ i = v.begin();
+ j = i;
+ std::advance(j, (std::min)(v.size(), v32.size()));
+ k = v32.begin();
+ BOOST_CHECK_EQUAL_COLLECTIONS(v.begin(), v.end(), v32.begin(), v32.end());
+ //
+ // test backward iteration, of 32-16 bit interconversions:
+ //
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_NO_STD_ITERATOR) && !defined(_RWSTD_NO_CLASS_PARTIAL_SPEC)
+ v16.assign(ru32to16type(u32to16type(v.end())), ru32to16type(u32to16type(v.begin())));
+#ifndef BOOST_NO_STD_DISTANCE
+ BOOST_CHECK_EQUAL(std::distance(ru32to16type(u32to16type(v.end())), ru32to16type(u32to16type(v.begin()))), v16.size());
+#endif
+ std::reverse(v16.begin(), v16.end());
+ v32.assign(ru16to32type(u16to32type(v16.end())), ru16to32type(u16to32type(v16.begin())));
+#ifndef BOOST_NO_STD_DISTANCE
+ BOOST_CHECK_EQUAL(std::distance(ru16to32type(u16to32type(v16.end())), ru16to32type(u16to32type(v16.begin()))), v32.size());
+#endif
+ BOOST_CHECK_EQUAL(v.size(), v32.size());
+ std::reverse(v32.begin(), v32.end());
+ i = v.begin();
+ j = i;
+ std::advance(j, (std::min)(v.size(), v32.size()));
+ k = v32.begin();
+ BOOST_CHECK_EQUAL_COLLECTIONS(v.begin(), v.end(), v32.begin(), v32.end());
+#endif
+ //
+ // Test forward iteration, of 32-8 bit interconversions:
+ //
+#if !defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS)
+ v8.assign(u32to8type(v.begin()), u32to8type(v.end()));
+#else
+ v8.clear();
+ std::copy(u32to8type(v.begin()), u32to8type(v.end()), std::back_inserter(v8));
+#endif
+#ifndef BOOST_NO_STD_DISTANCE
+ BOOST_CHECK_EQUAL(std::distance(u32to8type(v.begin()), u32to8type(v.end())), v8.size());
+#endif
+#if !defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS)
+ v32.assign(u8to32type(v8.begin()), u8to32type(v8.end()));
+#else
+ v32.clear();
+ std::copy(u8to32type(v8.begin()), u8to32type(v8.end()), std::back_inserter(v32));
+#endif
+#ifndef BOOST_NO_STD_DISTANCE
+ BOOST_CHECK_EQUAL(std::distance(u8to32type(v8.begin()), u8to32type(v8.end())), v32.size());
+#endif
+ BOOST_CHECK_EQUAL(v.size(), v32.size());
+ i = v.begin();
+ j = i;
+ std::advance(j, (std::min)(v.size(), v32.size()));
+ k = v32.begin();
+ BOOST_CHECK_EQUAL_COLLECTIONS(v.begin(), v.end(), v32.begin(), v32.end());
+ //
+ // test backward iteration, of 32-8 bit interconversions:
+ //
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_NO_STD_ITERATOR) && !defined(_RWSTD_NO_CLASS_PARTIAL_SPEC)
+ v8.assign(ru32to8type(u32to8type(v.end())), ru32to8type(u32to8type(v.begin())));
+#ifndef BOOST_NO_STD_DISTANCE
+ BOOST_CHECK_EQUAL(std::distance(ru32to8type(u32to8type(v.end())), ru32to8type(u32to8type(v.begin()))), v8.size());
+#endif
+ std::reverse(v8.begin(), v8.end());
+ v32.assign(ru8to32type(u8to32type(v8.end())), ru8to32type(u8to32type(v8.begin())));
+#ifndef BOOST_NO_STD_DISTANCE
+ BOOST_CHECK_EQUAL(std::distance(ru8to32type(u8to32type(v8.end())), ru8to32type(u8to32type(v8.begin()))), v32.size());
+#endif
+ BOOST_CHECK_EQUAL(v.size(), v32.size());
+ std::reverse(v32.begin(), v32.end());
+ i = v.begin();
+ j = i;
+ std::advance(j, (std::min)(v.size(), v32.size()));
+ k = v32.begin();
+ BOOST_CHECK_EQUAL_COLLECTIONS(v.begin(), v.end(), v32.begin(), v32.end());
+#endif
+}
+
+int test_main( int, char* [] )
+{
+ // test specific value points from the standard:
+ spot_checks();
+ // now test a bunch of values for self-consistency and round-tripping:
+ std::vector< ::boost::uint32_t> v;
+ // start with boundary conditions:
+ v.push_back(0);
+ v.push_back(0xD7FF);
+ v.push_back(0xE000);
+ v.push_back(0xFFFF);
+ v.push_back(0x10000);
+ v.push_back(0x10FFFF);
+ v.push_back(0x80u);
+ v.push_back(0x80u - 1);
+ v.push_back(0x800u);
+ v.push_back(0x800u - 1);
+ v.push_back(0x10000u);
+ v.push_back(0x10000u - 1);
+ test(v);
+ return 0;
+}
+
+#include <boost/test/included/test_exec_monitor.hpp>

Added: sandbox/SOC/2007/regex/named-captures/libs/regex/tools/generate/tables.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/regex/named-captures/libs/regex/tools/generate/tables.cpp 2007-06-09 15:19:38 EDT (Sat, 09 Jun 2007)
@@ -0,0 +1,217 @@
+/*
+ *
+ * Copyright (c) 2004
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE tables.cpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Generates code snippets programatically, for cut-and
+ * paste into regex source.
+ */
+
+#include <map>
+#include <vector>
+#include <string>
+#include <iostream>
+#include <algorithm>
+#include <cctype>
+#include <boost/config.hpp>
+
+std::string g_char_type;
+std::string g_data_type;
+std::map<std::string, std::string> g_table;
+std::map<std::string, std::pair<std::string, std::string> > g_help_table;
+
+void add(std::string key, std::string data)
+{
+ g_table[key] = data;
+ if(key.size() <= 2)
+ g_help_table[data].first = key;
+ else
+ g_help_table[data].second = key;
+
+ std::string::size_type i = 0;
+ while(i < key.size())
+ {
+ if(std::isspace(key[i]) || (key[i] == '-') || (key[i] == '_'))
+ key.erase(i, 1);
+ else
+ {
+ key[i] = std::tolower(key[i]);
+ ++i;
+ }
+ }
+}
+
+#define ADD(x, y) add(BOOST_STRINGIZE(x), BOOST_STRINGIZE(y))
+
+void generate_code()
+{
+ std::map<std::string, std::string>::const_iterator i, j;
+
+ // begin with the character tables:
+ std::cout << "static const " << g_char_type << " prop_name_table[] = {\n";
+ for(i = g_table.begin(), j = g_table.end(); i != j; ++i)
+ {
+ std::cout << " /* " << i->first << " */ ";
+ for(std::string::size_type n = 0; n < i->first.size(); ++n)
+ {
+ std::cout.put('\'');
+ std::cout.put((i->first)[n]);
+ std::cout.put('\'');
+ std::cout.put(',');
+ std::cout.put(' ');
+ }
+ std::cout << std::endl;;
+ }
+ std::cout << "};\n\n";
+
+ // now the iterator table:
+ std::cout << "static const re_detail::character_pointer_range<" << g_char_type << "> range_data[] = {\n";
+ std::size_t index = 0;
+ for(i = g_table.begin(), j = g_table.end(); i != j; ++i)
+ {
+ std::cout << " { prop_name_table+" << index << ", prop_name_table+";
+ index += i->first.size();
+ std::cout << index << ", }, // " << i->first << std::endl;
+ }
+ std::cout << "};\n\n";
+
+ // now the value table:
+ std::cout << "static const " << g_data_type << " icu_class_map[] = {\n";
+ for(i = g_table.begin(), j = g_table.end(); i != j; ++i)
+ {
+ std::cout << " " << i->second << ", // " << i->first << std::endl;
+ }
+ std::cout << "};\n\n" << std::flush;
+ g_table.clear();
+}
+
+void generate_html()
+{
+ // start by producing a sorted list:
+ std::vector<std::pair<std::string, std::string> > v;
+ std::map<std::string, std::pair<std::string, std::string> >::const_iterator i, j;
+ i = g_help_table.begin();
+ j = g_help_table.end();
+ while(i != j)
+ {
+ v.push_back(i->second);
+ ++i;
+ }
+ std::sort(v.begin(), v.end());
+
+ std::vector<std::pair<std::string, std::string> >::const_iterator h, k;
+ h = v.begin();
+ k = v.end();
+
+ std::cout << "<table width=\"100%\"><tr><td><b>Short Name</b></td><td><b>Long Name</b></td></tr>\n";
+ while(h != k)
+ {
+ std::cout << "<tr><td>" << (h->first.size() ? h->first : std::string(" ")) << "</td><td>" << h->second << "</td></tr>\n";
+ ++h;
+ }
+ std::cout << "</table>\n\n";
+}
+
+int main()
+{
+ g_char_type = "::UChar32";
+ g_data_type = "icu_regex_traits::char_class_type";
+ ADD(L*, U_GC_L_MASK);
+ ADD(Letter, U_GC_L_MASK);
+ ADD(Lu, U_GC_LU_MASK);
+ ADD(Ll, U_GC_LL_MASK);
+ ADD(Lt, U_GC_LT_MASK);
+ ADD(Lm, U_GC_LM_MASK);
+ ADD(Lo, U_GC_LO_MASK);
+ ADD(Uppercase Letter, U_GC_LU_MASK);
+ ADD(Lowercase Letter, U_GC_LL_MASK);
+ ADD(Titlecase Letter, U_GC_LT_MASK);
+ ADD(Modifier Letter, U_GC_LM_MASK);
+ ADD(Other Letter, U_GC_LO_MASK);
+
+ ADD(M*, U_GC_M_MASK);
+ ADD(Mn, U_GC_MN_MASK);
+ ADD(Mc, U_GC_MC_MASK);
+ ADD(Me, U_GC_ME_MASK);
+ ADD(Mark, U_GC_M_MASK);
+ ADD(Non-Spacing Mark, U_GC_MN_MASK);
+ ADD(Spacing Combining Mark, U_GC_MC_MASK);
+ ADD(Enclosing Mark, U_GC_ME_MASK);
+
+ ADD(N*, U_GC_N_MASK);
+ ADD(Nd, U_GC_ND_MASK);
+ ADD(Nl, U_GC_NL_MASK);
+ ADD(No, U_GC_NO_MASK);
+ ADD(Number, U_GC_N_MASK);
+ ADD(Decimal Digit Number, U_GC_ND_MASK);
+ ADD(Letter Number, U_GC_NL_MASK);
+ ADD(Other Number, U_GC_NO_MASK);
+
+ ADD(S*, U_GC_S_MASK);
+ ADD(Sm, U_GC_SM_MASK);
+ ADD(Sc, U_GC_SC_MASK);
+ ADD(Sk, U_GC_SK_MASK);
+ ADD(So, U_GC_SO_MASK);
+ ADD(Symbol, U_GC_S_MASK);
+ ADD(Math Symbol, U_GC_SM_MASK);
+ ADD(Currency Symbol, U_GC_SC_MASK);
+ ADD(Modifier Symbol, U_GC_SK_MASK);
+ ADD(Other Symbol, U_GC_SO_MASK);
+
+ ADD(P*, U_GC_P_MASK);
+ ADD(Pc, U_GC_PC_MASK);
+ ADD(Pd, U_GC_PD_MASK);
+ ADD(Ps, U_GC_PS_MASK);
+ ADD(Pe, U_GC_PE_MASK);
+ ADD(Pi, U_GC_PI_MASK);
+ ADD(Pf, U_GC_PF_MASK);
+ ADD(Po, U_GC_PO_MASK);
+ ADD(Punctuation, U_GC_P_MASK);
+ ADD(Connector Punctuation, U_GC_PC_MASK);
+ ADD(Dash Punctuation, U_GC_PD_MASK);
+ ADD(Open Punctuation, U_GC_PS_MASK);
+ ADD(Close Punctuation, U_GC_PE_MASK);
+ ADD(Initial Punctuation, U_GC_PI_MASK);
+ ADD(Final Punctuation, U_GC_PF_MASK);
+ ADD(Other Punctuation, U_GC_PO_MASK);
+
+ ADD(Z*, U_GC_Z_MASK);
+ ADD(Zs, U_GC_ZS_MASK);
+ ADD(Zl, U_GC_ZL_MASK);
+ ADD(Zp, U_GC_ZP_MASK);
+ ADD(Separator, U_GC_Z_MASK);
+ ADD(Space Separator, U_GC_ZS_MASK);
+ ADD(Line Separator, U_GC_ZL_MASK);
+ ADD(Paragraph Separator, U_GC_ZP_MASK);
+
+ ADD(C*, U_GC_C_MASK);
+ ADD(Cc, U_GC_CC_MASK);
+ ADD(Cf, U_GC_CF_MASK);
+ ADD(Cs, U_GC_CS_MASK);
+ ADD(Co, U_GC_CO_MASK);
+ ADD(Cn, U_GC_CN_MASK);
+ ADD(Other, U_GC_C_MASK);
+ ADD(Control, U_GC_CC_MASK);
+ ADD(Format, U_GC_CF_MASK);
+ ADD(Surrogate, U_GC_CS_MASK);
+ ADD(Private Use, U_GC_CO_MASK);
+ ADD(Not Assigned, U_GC_CN_MASK);
+ ADD(Any, icu_regex_traits::mask_any);
+ ADD(Assigned, (0x3FFFFFFFu) & ~(U_GC_CN_MASK));
+ ADD(ASCII, icu_regex_traits::mask_ascii);
+ ADD(Titlecase, U_GC_LT_MASK);
+
+ generate_code();
+ generate_html();
+ return 0;
+}


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk