public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [v3] <regex> implementation foundation, version 3
@ 2010-06-23 20:47 Stephen M. Webb
  2010-06-23 20:49 ` Paolo Carlini
  0 siblings, 1 reply; 4+ messages in thread
From: Stephen M. Webb @ 2010-06-23 20:47 UTC (permalink / raw)
  To: gcc-patches; +Cc: libstdc++

[-- Attachment #1: Type: text/plain, Size: 572 bytes --]

<regex> take 3.  The following have changed since version 2, at Paolo's 
request.

o  Some static const data members have been converted to enums where
   appropriate.
o  Definitions have been added for other static const data members.
o  Smaller member functions have been moved inline into the class
   definitions (a few placeholders have been left as out of line because
   their implementation is expected to be nontrivial and I am leery of
   pointless code churn).
o  Three more (xfailed) testcases.  More is better.

-- 
Stephen M. Webb
stephen.webb@bregmasoft.ca

[-- Attachment #2: ChangeLog --]
[-- Type: text/plain, Size: 8699 bytes --]

2010-06-23  Stephen M. Webb  <stephen.webb@bregmasoft.ca>

  Initial regex implementation.

  * include/std/regex: Modified to use bits/regex_* headers.
  * include/bits/regex_compiler.h: New file.
  * include/bits/regex_constants.h: New file.
  * include/bits/regex_cursor.h: New file.
  * include/bits/regex_error.h: New file.
  * include/bits/regex_grep_matcher.h: New file.
  * include/bits/regex_grep_matcher.tcc: New file.
  * include/bits/regex.h: New file.
  * include/bits/regex_nfa.h: New file.
  * include/bits/regex_nfa.tcc: New file.
  * include/Makefile.am: Added above new files.
  * include/Makefile.in: Regenerated.
  * src/regex_compiler.cc: New file.
  * src/Makefile.am: Added regex_compiler.cc.
  * src/Makefile.in: Regenerated.
  * config/abi/pre/gnu.ver: Added new exported symbols.
  * testsuite/28_regex/02_definitions: New file.
  * testsuite/28_regex/03_requirements: New file.
  * testsuite/28_regex/03_requirements/typedefs.cc: New file.
  * testsuite/28_regex/04_header: New file.
  * testsuite/28_regex/04_header/regex: New file.
  * testsuite/28_regex/04_header/regex/std_c++0x_neg.cc: New file.
  * testsuite/28_regex/05_constants: New file.
  * testsuite/28_regex/05_constants/error_type.cc: New file.
  * testsuite/28_regex/05_constants/match_flag_type.cc: New file.
  * testsuite/28_regex/05_constants/syntax_option_type.cc: New file.
  * testsuite/28_regex/06_exception_type: New file.
  * testsuite/28_regex/06_exception_type/regex_error.cc: New file.
  * testsuite/28_regex/07_traits: New file.
  * testsuite/28_regex/07_traits/char: New file.
  * testsuite/28_regex/07_traits/char/ctor.cc: New file.
  * testsuite/28_regex/07_traits/char/isctype.cc: New file.
  * testsuite/28_regex/07_traits/char/length.cc: New file.
  * testsuite/28_regex/07_traits/char/lookup_classname.cc: New file.
  * testsuite/28_regex/07_traits/char/lookup_collatename.cc: New file.
  * testsuite/28_regex/07_traits/char/transform.cc: New file.
  * testsuite/28_regex/07_traits/char/transform_primary.cc: New file.
  * testsuite/28_regex/07_traits/char/translate.cc: New file.
  * testsuite/28_regex/07_traits/char/translate_nocase.cc: New file.
  * testsuite/28_regex/07_traits/char/value.cc: New file.
  * testsuite/28_regex/07_traits/wchar_t: New file.
  * testsuite/28_regex/07_traits/wchar_t/ctor.cc: New file.
  * testsuite/28_regex/07_traits/wchar_t/length.cc: New file.
  * testsuite/28_regex/07_traits/wchar_t/transform.cc: New file.
  * testsuite/28_regex/07_traits/wchar_t/translate.cc: New file.
  * testsuite/28_regex/07_traits/wchar_t/translate_nocase.cc: New file.
  * testsuite/28_regex/07_traits/wchar_t/value.cc: New file.
  * testsuite/28_regex/08_basic_regex: New file.
  * testsuite/28_regex/08_basic_regex/assign: New file.
  * testsuite/28_regex/08_basic_regex/assign/char: New file.
  * testsuite/28_regex/08_basic_regex/assign/char/cstring.cc: New file.
  * testsuite/28_regex/08_basic_regex/assign/char/cstring_op.cc: New file.
  * testsuite/28_regex/08_basic_regex/assign/char/moveable.cc: New file.
  * testsuite/28_regex/08_basic_regex/assign/char/pstring.cc: New file.
  * testsuite/28_regex/08_basic_regex/assign/char/range.cc: New file.
  * testsuite/28_regex/08_basic_regex/assign/char/string.cc: New file.
  * testsuite/28_regex/08_basic_regex/assign/char/string_op.cc: New file.
  * testsuite/28_regex/08_basic_regex/assign/wchar_t: New file.
  * testsuite/28_regex/08_basic_regex/assign/wchar_t/cstring.cc: New file.
  * testsuite/28_regex/08_basic_regex/assign/wchar_t/cstring_op.cc: New file.
  * testsuite/28_regex/08_basic_regex/assign/wchar_t/pstring.cc: New file.
  * testsuite/28_regex/08_basic_regex/assign/wchar_t/range.cc: New file.
  * testsuite/28_regex/08_basic_regex/assign/wchar_t/string.cc: New file.
  * testsuite/28_regex/08_basic_regex/assign/wchar_t/string_op.cc: New file.
  * testsuite/28_regex/08_basic_regex/ctors: New file.
  * testsuite/28_regex/08_basic_regex/ctors/basic: New file.
  * testsuite/28_regex/08_basic_regex/ctors/basic/cstring.cc: New file.
  * testsuite/28_regex/08_basic_regex/ctors/basic/pstring_char.cc: New file.
  * testsuite/28_regex/08_basic_regex/ctors/basic/pstring_wchar_t.cc: New file.
  * testsuite/28_regex/08_basic_regex/ctors/basic/string_range_01_02_03.cc: New file.
  * testsuite/28_regex/08_basic_regex/ctors/char: New file.
  * testsuite/28_regex/08_basic_regex/ctors/char/cstring_awk.cc: New file.
  * testsuite/28_regex/08_basic_regex/ctors/char/cstring.cc: New file.
  * testsuite/28_regex/08_basic_regex/ctors/char/cstring_ecma.cc: New file.
  * testsuite/28_regex/08_basic_regex/ctors/char/cstring_egrep.cc: New file.
  * testsuite/28_regex/08_basic_regex/ctors/char/cstring_grep.cc: New file.
  * testsuite/28_regex/08_basic_regex/ctors/char/default.cc: New file.
  * testsuite/28_regex/08_basic_regex/ctors/char/range.cc: New file.
  * testsuite/28_regex/08_basic_regex/ctors/copy_char.cc: New file.
  * testsuite/28_regex/08_basic_regex/ctors/extended: New file.
  * testsuite/28_regex/08_basic_regex/ctors/extended/cstring.cc: New file.
  * testsuite/28_regex/08_basic_regex/ctors/extended/string_range_01_02_03.cc: New file.
  * testsuite/28_regex/08_basic_regex/ctors/move_char.cc: New file.
  * testsuite/28_regex/08_basic_regex/ctors/string_char.cc: New file.
  * testsuite/28_regex/08_basic_regex/ctors/string_wchar_t.cc: New file.
  * testsuite/28_regex/08_basic_regex/ctors/wchar_t: New file.
  * testsuite/28_regex/08_basic_regex/ctors/wchar_t/cstring.cc: New file.
  * testsuite/28_regex/08_basic_regex/ctors/wchar_t/default.cc: New file.
  * testsuite/28_regex/08_basic_regex/ctors/wchar_t/range.cc: New file.
  * testsuite/28_regex/08_basic_regex/regex.cc: New file.
  * testsuite/28_regex/09_sub_match: New file.
  * testsuite/28_regex/09_sub_match/cast_char.cc: New file.
  * testsuite/28_regex/09_sub_match/cast_wchar_t.cc: New file.
  * testsuite/28_regex/09_sub_match/length.cc: New file.
  * testsuite/28_regex/09_sub_match/typedefs.cc: New file.
  * testsuite/28_regex/10_match_results: New file.
  * testsuite/28_regex/10_match_results/ctors: New file.
  * testsuite/28_regex/10_match_results/ctors/char: New file.
  * testsuite/28_regex/10_match_results/ctors/char/default.cc: New file.
  * testsuite/28_regex/10_match_results/ctors/wchar_t: New file.
  * testsuite/28_regex/10_match_results/ctors/wchar_t/default.cc: New file.
  * testsuite/28_regex/10_match_results/typedefs.cc: New file.
  * testsuite/28_regex/11_algorithms: New file.
  * testsuite/28_regex/11_algorithms/02_match: New file.
  * testsuite/28_regex/11_algorithms/02_match/basic: New file.
  * testsuite/28_regex/11_algorithms/02_match/basic/string_01.cc: New file.
  * testsuite/28_regex/11_algorithms/02_match/basic/string_range_00_03.cc: New file.
  * testsuite/28_regex/11_algorithms/02_match/basic/string_range_01_03.cc: New file.
  * testsuite/28_regex/11_algorithms/02_match/basic/string_range_02_03.cc: New file.
  * testsuite/28_regex/11_algorithms/02_match/extended: New file.
  * testsuite/28_regex/11_algorithms/02_match/extended/cstring_plus.cc: New file.
  * testsuite/28_regex/11_algorithms/02_match/extended/cstring_questionmark.cc: New file.
  * testsuite/28_regex/11_algorithms/02_match/extended/string_any.cc: New file.
  * testsuite/28_regex/11_algorithms/02_match/extended/string_range_00_03.cc: New file.
  * testsuite/28_regex/11_algorithms/02_match/extended/string_range_01_03.cc: New file.
  * testsuite/28_regex/11_algorithms/02_match/extended/string_range_02_03.cc: New file.
  * testsuite/28_regex/12_iterators: New file.
  * testsuite/28_regex/12_iterators/regex_iterator: New file.
  * testsuite/28_regex/12_iterators/regex_iterator/ctors: New file.
  * testsuite/28_regex/12_iterators/regex_iterator/ctors/char: New file.
  * testsuite/28_regex/12_iterators/regex_iterator/ctors/char/default.cc: New file.
  * testsuite/28_regex/12_iterators/regex_iterator/ctors/wchar_t: New file.
  * testsuite/28_regex/12_iterators/regex_iterator/ctors/wchar_t/default.cc: New file.
  * testsuite/28_regex/12_iterators/regex_iterator/typedefs.cc: New file.
  * testsuite/28_regex/12_iterators/regex_token_iterator: New file.
  * testsuite/28_regex/12_iterators/regex_token_iterator/ctors: New file.
  * testsuite/28_regex/12_iterators/regex_token_iterator/ctors/char: New file.
  * testsuite/28_regex/12_iterators/regex_token_iterator/ctors/char/default.cc: New file.
  * testsuite/28_regex/12_iterators/regex_token_iterator/ctors/wchar_t: New file.
  * testsuite/28_regex/12_iterators/regex_token_iterator/ctors/wchar_t/default.cc: New file.
  * testsuite/28_regex/12_iterators/regex_token_iterator/typedefs.cc: New file.
  * testsuite/28_regex/13_ecmascript: New file.

[-- Attachment #3: patch --]
[-- Type: application/x-bzip2, Size: 28662 bytes --]

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [v3] <regex> implementation foundation, version 3
  2010-06-23 20:47 [v3] <regex> implementation foundation, version 3 Stephen M. Webb
@ 2010-06-23 20:49 ` Paolo Carlini
  2010-06-23 21:22   ` Stephen M. Webb
  0 siblings, 1 reply; 4+ messages in thread
From: Paolo Carlini @ 2010-06-23 20:49 UTC (permalink / raw)
  To: stephen.webb; +Cc: Stephen M. Webb, gcc-patches, libstdc++

On 06/23/2010 10:22 PM, Stephen M. Webb wrote:
> <regex> take 3.  The following have changed since version 2, at Paolo's 
> request.
>
> o  Some static const data members have been converted to enums where
>    appropriate.
> o  Definitions have been added for other static const data members.
> o  Smaller member functions have been moved inline into the class
>    definitions (a few placeholders have been left as out of line because
>    their implementation is expected to be nontrivial and I am leery of
>    pointless code churn).
> o  Three more (xfailed) testcases.  More is better.
>   
Excellent, thanks. As far as I'm concerned, I think we are *very* close
to the point of actually committing the code. Maybe Jon has more comments.

Only, since we have those three static constants - belonging to a non
template class, thus, correctly, in a *.cc file - we must actually add a
pattern to the linker script, otherwise we could as well take the risk
of leaving out the definitions for now. I don't have a strong opinion,
if the code works anyway (ie, doesn't take the address), and we are not
exposed to the user... The problem with new exports is that you cannot
go back, if you make a mistake... Whatever is ok with Jon is ok with me.

Paolo.

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [v3] <regex> implementation foundation, version 3
  2010-06-23 20:49 ` Paolo Carlini
@ 2010-06-23 21:22   ` Stephen M. Webb
  2010-06-23 22:39     ` Paolo Carlini
  0 siblings, 1 reply; 4+ messages in thread
From: Stephen M. Webb @ 2010-06-23 21:22 UTC (permalink / raw)
  To: Paolo Carlini; +Cc: gcc-patches, libstdc++

On 23/06/10 16:36, Paolo Carlini wrote:
>
> Excellent, thanks. As far as I'm concerned, I think we are *very* close
> to the point of actually committing the code. Maybe Jon has more comments.

If I get no more comments in 24 hours or so should I go ahead and commit, 
then?

> Only, since we have those three static constants - belonging to a non
> template class, thus, correctly, in a *.cc file - we must actually add a
> pattern to the linker script, otherwise we could as well take the risk
> of leaving out the definitions for now. I don't have a strong opinion,
> if the code works anyway (ie, doesn't take the address), and we are not
> exposed to the user... The problem with new exports is that you cannot
> go back, if you make a mistake... Whatever is ok with Jon is ok with me.

The linker script change is included in the patch.

If constexpr get finished soon I could replace those three constants with 
something more compile-timey, but I would rather just get this checked in so 
I can move on to implementing more functionality.

-- 
Stephen M. Webb
stephen.webb@bregmasoft.ca

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [v3] <regex> implementation foundation, version 3
  2010-06-23 21:22   ` Stephen M. Webb
@ 2010-06-23 22:39     ` Paolo Carlini
  0 siblings, 0 replies; 4+ messages in thread
From: Paolo Carlini @ 2010-06-23 22:39 UTC (permalink / raw)
  To: stephen.webb; +Cc: Stephen M. Webb, gcc-patches, libstdc++

Hi,
>> Excellent, thanks. As far as I'm concerned, I think we are *very* close
>> to the point of actually committing the code. Maybe Jon has more comments.
>>     
> If I get no more comments in 24 hours or so should I go ahead and commit, 
> then?
>   
I think so. Make sure to include in your regression tests also a 32-bit
target, x86_64 multilib is fine. Also, it would be nice if you could
also run the testsuite with CXXFLAGS="-O2 -g -Wall", we strive to keep
the testsuite -Wall clean.
> The linker script change is included in the patch.
Oops, I didn't see it, sorry. You know what I think, let's leave out
those three defs for now, and let's add instead 3 XXX FIXME comments in
the *.h. Also I would suggest FIXME comment before the big inline
functions defined in *.tcc files, sooner or later must go.

Thanks,
Paolo.

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2010-06-23 21:57 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-06-23 20:47 [v3] <regex> implementation foundation, version 3 Stephen M. Webb
2010-06-23 20:49 ` Paolo Carlini
2010-06-23 21:22   ` Stephen M. Webb
2010-06-23 22:39     ` Paolo Carlini

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).