13257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant// -*- C++ -*-
20ce02245a96edc9d1b2d60653fc06e9941e6fd2aHoward Hinnant//===----------------------------------------------------------------------===//
33257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant//
43257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant//                     The LLVM Compiler Infrastructure
53257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant//
6b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant// This file is dual licensed under the MIT and the University of Illinois Open
7b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant// Source Licenses. 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 syntax_option_type  // bitmask type
173257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant// {
183257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant//     icase      = unspecified,
193257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant//     nosubs     = unspecified,
203257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant//     optimize   = unspecified,
213257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant//     collate    = unspecified,
223257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant//     ECMAScript = unspecified,
233257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant//     basic      = unspecified,
243257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant//     extended   = unspecified,
253257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant//     awk        = unspecified,
263257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant//     grep       = unspecified,
273257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant//     egrep      = unspecified
283257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant// };
29bbd8086ee3448f38026219777112e787fde8504dHoward Hinnant//
303257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant// }
313257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant
323257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant#include <regex>
333257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant#include <cassert>
343257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant
353257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnantint main()
363257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant{
373257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert(std::regex_constants::icase != 0);
383257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert(std::regex_constants::nosubs != 0);
393257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert(std::regex_constants::optimize != 0);
403257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert(std::regex_constants::collate != 0);
41ad2a7ab9a9a370dad9d6a70bcefa9d8471bb2ed6Howard Hinnant    assert(std::regex_constants::ECMAScript == 0);
423257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert(std::regex_constants::basic != 0);
433257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert(std::regex_constants::extended != 0);
443257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert(std::regex_constants::awk != 0);
453257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert(std::regex_constants::grep != 0);
463257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert(std::regex_constants::egrep != 0);
473257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant
483257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::icase & std::regex_constants::nosubs) == 0);
493257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::icase & std::regex_constants::optimize) == 0);
503257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::icase & std::regex_constants::collate) == 0);
513257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::icase & std::regex_constants::ECMAScript) == 0);
523257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::icase & std::regex_constants::basic) == 0);
533257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::icase & std::regex_constants::extended) == 0);
543257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::icase & std::regex_constants::awk) == 0);
553257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::icase & std::regex_constants::grep) == 0);
563257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::icase & std::regex_constants::egrep) == 0);
573257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant
583257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::nosubs & std::regex_constants::optimize) == 0);
593257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::nosubs & std::regex_constants::collate) == 0);
603257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::nosubs & std::regex_constants::ECMAScript) == 0);
613257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::nosubs & std::regex_constants::basic) == 0);
623257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::nosubs & std::regex_constants::extended) == 0);
633257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::nosubs & std::regex_constants::awk) == 0);
643257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::nosubs & std::regex_constants::grep) == 0);
653257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::nosubs & std::regex_constants::egrep) == 0);
663257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant
673257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::optimize & std::regex_constants::collate) == 0);
683257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::optimize & std::regex_constants::ECMAScript) == 0);
693257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::optimize & std::regex_constants::basic) == 0);
703257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::optimize & std::regex_constants::extended) == 0);
713257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::optimize & std::regex_constants::awk) == 0);
723257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::optimize & std::regex_constants::grep) == 0);
733257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::optimize & std::regex_constants::egrep) == 0);
743257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant
753257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::collate & std::regex_constants::ECMAScript) == 0);
763257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::collate & std::regex_constants::basic) == 0);
773257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::collate & std::regex_constants::extended) == 0);
783257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::collate & std::regex_constants::awk) == 0);
793257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::collate & std::regex_constants::grep) == 0);
803257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::collate & std::regex_constants::egrep) == 0);
813257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant
823257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::ECMAScript & std::regex_constants::basic) == 0);
833257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::ECMAScript & std::regex_constants::extended) == 0);
843257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::ECMAScript & std::regex_constants::awk) == 0);
853257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::ECMAScript & std::regex_constants::grep) == 0);
863257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::ECMAScript & std::regex_constants::egrep) == 0);
873257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant
883257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::basic & std::regex_constants::extended) == 0);
893257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::basic & std::regex_constants::awk) == 0);
903257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::basic & std::regex_constants::grep) == 0);
913257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::basic & std::regex_constants::egrep) == 0);
923257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant
933257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::extended & std::regex_constants::awk) == 0);
943257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::extended & std::regex_constants::grep) == 0);
953257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::extended & std::regex_constants::egrep) == 0);
963257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant
973257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::awk & std::regex_constants::grep) == 0);
983257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::awk & std::regex_constants::egrep) == 0);
993257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant
1003257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::grep & std::regex_constants::egrep) == 0);
1013257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant
1023257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::icase | std::regex_constants::nosubs) != 0);
1033257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    assert((std::regex_constants::icase ^ std::regex_constants::nosubs) != 0);
1043257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant
1053257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    std::regex_constants::syntax_option_type e1 = std::regex_constants::icase;
1063257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    std::regex_constants::syntax_option_type e2 = std::regex_constants::nosubs;
1073257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    e1 = ~e1;
1083257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    e1 = e1 & e2;
1093257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    e1 = e1 | e2;
1103257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    e1 = e1 ^ e2;
1113257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    e1 &= e2;
1123257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    e1 |= e2;
1133257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant    e1 ^= e2;
1143257c9853f0612761bbde4adfd56dce566d9f2a6Howard Hinnant}
115