match_flag_type.pass.cpp revision 0ce02245a96edc9d1b2d60653fc06e9941e6fd2a
13257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant// -*- C++ -*-
20ce02245a96edc9d1b2d60653fc06e9941e6fd2aHoward Hinnant//===----------------------------------------------------------------------===//
33257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant//
43257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant//                     The LLVM Compiler Infrastructure
53257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant//
63257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant// This file is distributed under the University of Illinois Open Source
73257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant// License. See LICENSE.TXT for details.
83257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant//
93257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant//===----------------------------------------------------------------------===//
103257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant
113257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant// <regex>
123257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant
133257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant// namespace regex_constants
143257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant// {
15bbd8086ee3448f38026219777112e787fde8504dHoward Hinnant//
163257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant// emum match_flag_type  // bitmask type
173257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant// {
183257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant//     match_default     = 0,
193257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant//     match_not_bol     = unspecified,
203257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant//     match_not_eol     = unspecified,
213257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant//     match_not_bow     = unspecified,
223257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant//     match_not_eow     = unspecified,
233257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant//     match_any         = unspecified,
243257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant//     match_not_null    = unspecified,
253257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant//     match_continuous  = unspecified,
263257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant//     match_prev_avail  = unspecified,
273257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant//     format_default    = 0,
283257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant//     format_sed        = unspecified,
293257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant//     format_no_copy    = unspecified,
303257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant//     format_first_only = unspecified
313257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant// };
32bbd8086ee3448f38026219777112e787fde8504dHoward Hinnant//
333257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant// }
343257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant
353257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant#include <regex>
363257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant#include <cassert>
373257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant
383257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnantint main()
393257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant{
403257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert(std::regex_constants::match_default == 0);
413257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert(std::regex_constants::match_not_bol != 0);
423257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert(std::regex_constants::match_not_eol != 0);
433257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert(std::regex_constants::match_not_bow != 0);
443257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert(std::regex_constants::match_not_eow != 0);
453257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert(std::regex_constants::match_any != 0);
463257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert(std::regex_constants::match_not_null != 0);
473257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert(std::regex_constants::match_continuous != 0);
483257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert(std::regex_constants::match_prev_avail != 0);
493257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert(std::regex_constants::format_default == 0);
503257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert(std::regex_constants::format_sed != 0);
513257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert(std::regex_constants::format_no_copy != 0);
523257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert(std::regex_constants::format_first_only != 0);
533257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant
543257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::match_not_bol & std::regex_constants::match_not_eol) == 0);
553257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::match_not_bol & std::regex_constants::match_not_bow) == 0);
563257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::match_not_bol & std::regex_constants::match_not_eow) == 0);
573257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::match_not_bol & std::regex_constants::match_any) == 0);
583257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::match_not_bol & std::regex_constants::match_not_null) == 0);
593257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::match_not_bol & std::regex_constants::match_continuous) == 0);
603257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::match_not_bol & std::regex_constants::match_prev_avail) == 0);
613257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::match_not_bol & std::regex_constants::format_sed) == 0);
623257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::match_not_bol & std::regex_constants::format_no_copy) == 0);
633257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::match_not_bol & std::regex_constants::format_first_only) == 0);
643257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant
653257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::match_not_eol & std::regex_constants::match_not_bow) == 0);
663257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::match_not_eol & std::regex_constants::match_not_eow) == 0);
673257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::match_not_eol & std::regex_constants::match_any) == 0);
683257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::match_not_eol & std::regex_constants::match_not_null) == 0);
693257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::match_not_eol & std::regex_constants::match_continuous) == 0);
703257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::match_not_eol & std::regex_constants::match_prev_avail) == 0);
713257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::match_not_eol & std::regex_constants::format_sed) == 0);
723257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::match_not_eol & std::regex_constants::format_no_copy) == 0);
733257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::match_not_eol & std::regex_constants::format_first_only) == 0);
743257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant
753257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::match_not_bow & std::regex_constants::match_not_eow) == 0);
763257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::match_not_bow & std::regex_constants::match_any) == 0);
773257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::match_not_bow & std::regex_constants::match_not_null) == 0);
783257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::match_not_bow & std::regex_constants::match_continuous) == 0);
793257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::match_not_bow & std::regex_constants::match_prev_avail) == 0);
803257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::match_not_bow & std::regex_constants::format_sed) == 0);
813257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::match_not_bow & std::regex_constants::format_no_copy) == 0);
823257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::match_not_bow & std::regex_constants::format_first_only) == 0);
833257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant
843257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::match_not_eow & std::regex_constants::match_any) == 0);
853257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::match_not_eow & std::regex_constants::match_not_null) == 0);
863257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::match_not_eow & std::regex_constants::match_continuous) == 0);
873257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::match_not_eow & std::regex_constants::match_prev_avail) == 0);
883257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::match_not_eow & std::regex_constants::format_sed) == 0);
893257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::match_not_eow & std::regex_constants::format_no_copy) == 0);
903257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::match_not_eow & std::regex_constants::format_first_only) == 0);
913257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant
923257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::match_any & std::regex_constants::match_not_null) == 0);
933257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::match_any & std::regex_constants::match_continuous) == 0);
943257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::match_any & std::regex_constants::match_prev_avail) == 0);
953257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::match_any & std::regex_constants::format_sed) == 0);
963257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::match_any & std::regex_constants::format_no_copy) == 0);
973257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::match_any & std::regex_constants::format_first_only) == 0);
983257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant
993257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::match_not_null & std::regex_constants::match_continuous) == 0);
1003257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::match_not_null & std::regex_constants::match_prev_avail) == 0);
1013257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::match_not_null & std::regex_constants::format_sed) == 0);
1023257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::match_not_null & std::regex_constants::format_no_copy) == 0);
1033257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::match_not_null & std::regex_constants::format_first_only) == 0);
1043257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant
1053257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::match_continuous & std::regex_constants::match_prev_avail) == 0);
1063257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::match_continuous & std::regex_constants::format_sed) == 0);
1073257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::match_continuous & std::regex_constants::format_no_copy) == 0);
1083257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::match_continuous & std::regex_constants::format_first_only) == 0);
1093257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant
1103257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::match_prev_avail & std::regex_constants::format_sed) == 0);
1113257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::match_prev_avail & std::regex_constants::format_no_copy) == 0);
1123257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::match_prev_avail & std::regex_constants::format_first_only) == 0);
1133257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant
1143257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::format_sed & std::regex_constants::format_no_copy) == 0);
1153257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::format_sed & std::regex_constants::format_first_only) == 0);
1163257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant
1173257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::format_no_copy & std::regex_constants::format_first_only) == 0);
1183257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant
1193257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    std::regex_constants::match_flag_type e1 = std::regex_constants::match_not_bol;
1203257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    std::regex_constants::match_flag_type e2 = std::regex_constants::match_not_eol;
1213257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    e1 = ~e1;
1223257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    e1 = e1 & e2;
1233257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    e1 = e1 | e2;
1243257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    e1 = e1 ^ e2;
1253257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    e1 &= e2;
1263257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    e1 |= e2;
1273257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    e1 ^= e2;
1283257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant}
129