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 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