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