ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/COMP/CMSDIST/gccxml4.patch
Revision: 1.1
Committed: Sun Oct 21 07:56:19 2007 UTC (17 years, 6 months ago) by elmer
Branch: MAIN
CVS Tags: cmsbuild_20130422-53X-slc5, cmsbuild_20130422-53X-osx107, cmsbuild_20130311_1500-61X-osx107, cmsbuild_20130311_1424-61X-osx108-gcc472, cmsbuild_20130327-61X-slc6, cmsbuild_20130405_1715-61X-gcc472, eulisse_20130330_1130-62X-armv7hl-dev, eulisse_20130411_1456-62X-slc6-dev, eulisse_20130227_1854-62X-dev, eulisse_20130411_1120-62X, eulisse_20130411_1129-62X-next, CMSSW_6_2_0_pre5slc6, dmendezl_20130423_1116-62X-next, dmendezl_20130423_1154-62X-next, dmendezl_20130423_1129-62X-slc6-dev, dmendezl_20130423_1112-62X-next, dmendezl_20130423_1102-62X, ForCMSSW_6_2_0_pre5slc6-slc6_amd64_gcc472, dgmlForCMSSW_6_2_0_pre5slc6-osx107_amd64_gcc472, ForCMSSW_6_2_0_pre5slc6-slc6_amd64_gcc480, dgmlForCMSSW_6_2_0_pre5slc6-slc5_amd64_gcc472, dmendezl_20130422_1417-62X-next, dmendezl_20130422_1359-62X-next, dmendezl_20130418_1659-62X-next, dmendezl_20130418_1643-62X-next, dmendezl_20130418_1706-62X-slc6-dev, dmendezl_20130418_1710-62X, sm20130422-53X-osx107, sm20130422-53X-slc5, dmendezl_20130411_1456-62X-slc6-dev, dmendezl_20130411_1134-62X-next, dmendezl_20130411_1129-62X-next, dmendezl_20130411_1124-62X-next, dmendezl_20130411_1120-62X, CMSSW_6_2_0_pre5-osx108_amd64_gcc472, CMSSW_6_2_0_pre5-osx107_amd64_gcc472, CMSSW_5_3_9_patch3-osx107, CMSSW_5_3_9_patch3, CMSSW_6_2_0_pre5-slc6_amd64_gcc472, CMSSW_6_2_0_pre5-slc6_amd64_gcc480, dmendezlForCMSSW_6_1_2_SLHC1-slc5_amd64_gcc472, geForCMSSW_6_2_0_pre5-slc5_amd64_gcc472, davidltForCMSSW_6_2_0_pre5-slc6_amd64_gcc472, davidltForCMSSW_6_2_0_pre5-osx108_amd64_gcc472, davidltForCMSSW_6_2_0_pre5-slc6_amd64_gcc480, davidltForCMSSW_6_2_0_pre5-osx107_amd64_gcc472, sm130409-53X-osx107, sm130409-53X, CMSSW_6_1_2_SLHC1-slc5_amd64_gcc472, CMSSW_6_1_2_SLHC1, davidltForCMSSW_6_1_2_SLHC1-slc5_amd64_gcc472, CMSSW_6_2_0_pre5-slc5_amd64_gcc472, CMSSW_6_2_0_pre5, davidltForCMSSW_6_2_0_pre5-slc5_amd64_gcc472, davidlt_20130408_1108-62X-slc6-dev, davidlt_20130408_1239-62X-next, davidlt_20130408_1107-62X, eulisse_20130407_1388-62X, eulisse_20130407_1218-62X, ge20130406_2000-62X, davidlt_20130403_1140-62X-slc6-dev, davidlt_20130403_1144-62X-next, davidlt_20130403_1139-62X, CMSSW_5_3_9_sherpa2beta2, sm130402-63X-slc5_mic, eulisseForCMSSW_6_1_2-slc6_amd64_gcc472, dmendezlForCMSSW_6_1_2-slc6_amd64_gcc472, davidlt_20130330_1130-62X-armv7hl-dev, davidlt_arm_6, davidlt_arm_5, davidlt_arm_4, davidlt_arm_3, davidlt_arm_2, davidlt_arm_1, davidlt_20130328_0732-62X-slc6-dev, davidlt_20130328_0731-62X-next, davidlt_20130328_0731-62X, dm20130327-61X-slc6, dgmlForCMSSW_6_1_2-osx107_amd64_gcc472, dgmlForCMSSW_6_1_2-osx108_amd64_gcc472, CMSSW_6_1_2, ForCMSSW_6_1_2-slc6_amd64_gcc472, davidlt_20130325_1139-62X-next, davidlt_20130325_1353-62X-next, davidlt_20130325_1132-62X-slc6-dev, davidlt_20130325_1131-62X-next, davidlt_20130325_1108-62X, dgmlForCMSSW_6_1_2-slc5_amd64_gcc472, CMSSW_6_2_0_pre4-slc6_amd64_gcc472, ForCMSSW_6_2_0_pre4-slc6_amd64_gcc472, CMSSW_6_2_0_pre4-osx107_amd64_gcc472, CMSSW_6_2_0_pre4-osx108_amd64_gcc472, CMSSW_6_2_0_pre4-slc6_amd64_gcc480, daForCMSSW_6_2_0_pre4-osx107_amd64_gcc472, daForCMSSW_6_2_0_pre4-osx108_amd64_gcc472, ForCMSSW_6_2_0_pre4-slc6_amd64_gcc480, CMSSW_5_3_9_patch2-osx107, davidlt_20130320_1840-62X-slc6-dev, CMSSW_5_3_9_patch2, BOOTSTRAP_slc6_amd64_gcc480, CMSSW_6_2_0_pre4-slc5_amd64_gcc472, CMSSW_6_2_0_pre4, daForCMSSW_6_2_0_pre4-slc5_amd64_gcc472, BOOTSTRAP_fc18_armv7hl_gcc480, pgForCMSSW_6_2_X_2013-03-15-0200-slc5_amd64_gcc472, davidlt_20130314_1540-62X-next, dmendezl_20130312_1520-slc6, dmendezl_20130311_1500-61X-osx107, dmendezl_20130311_1424-61X-osx108-gcc472, eulisse_20130311_0939-61X, geForCMSSW_6_1_2-slc5_amd64_gcc472, davidlt_20130307_0945-62X-next, davidlt_20130307_0943-62X, CMSSW_6_2_0_pre3-osx107_amd64_gcc472, CMSSW_6_2_0_pre3-osx108_amd64_gcc472, eulisse_20130405_1715-61X-gcc472, eulisse_20130304_1715-61X-osx107, eulisse_20130304_1715-61X-osx108-gcc472, eulisse_20130304_1714_61X-slc6, daForCMSSW_6_2_0_pre3-osx107_amd64_gcc472, daForCMSSW_6_2_0_pre3-osx108_amd64_gcc472, CMSSW_5_3_9_patch1-osx107, CMSSW_5_3_9_patch1, CMSSW_5_3_9, CMSSW_6_2_0_pre3-slc6_amd64_gcc472, ForCMSSW_6_2_0_pre3-slc6_amd64_gcc472, CMSSW_6_2_0_pre3-slc5_amd64_gcc472, CMSSW_6_2_0_pre3, CMSSW_6_1_1-osx108_amd64_gcc472, CMSSW_6_1_1-osx107_amd64_gcc472, daForCMSSW_6_2_0_pre3-slc5_amd64_gcc472, daForCMSSW_6_1_1-osx108_amd64_gcc472, daForCMSSW_6_1_1-osx107_amd64_gcc472, CMSSW_6_1_1_SLHCphase2tk1-slc5_amd64_gcc472, CMSSW_6_1_1_SLHCphase2tk1, daForCMSSW_6_1_1_SLHCphase2tk1-slc5_amd64_gcc472, davidlt_20130227_1855-62X-next, davidlt_20130227_1854-62X-dev, davidlt_20130227_1854-62X, CMSSW_5_3_9-osx107, CMSW_5_3_9, davidlt_20130227_1127-62X-next, davidlt_20130227_1126-62X-dev, davidlt_20130227_1125-62X, sm130226-53X-osx107, sm130226-53X-gcc462, davidlt_20130226_1240-62X-next, davidlt_20130226_1320-62X-dev, davidlt_20130226_1239-62X, CMSSW_6_1_1_SLHCphase1tk1-slc5_amd64_gcc472, CMSSW_6_1_1_SLHCphase1tk1, daForCMSSW_6_1_1_SLHCphase1tk1-slc5_amd64_gcc472, eulisse_20130225_1400-62x-next, eulisse_20130225_1400-62x, davidlt_20130225_1102-62X-next, davidlt_20130225_1025-62X-dev, davidlt_20130225_1025-62X, davidlt_20130222_1635-62X-next, davidlt_20130222_1634-62X-dev, davidlt_20130222_1633-62X, CMSSW_5_2_9, geForCMSSW_5_2_9-slc5_amd64_gcc462, davidlt_20130220_1737-62X-next, davidlt_20130220_1736-62X-dev, davidlt_20130220_1735-62X, CMSSW_6_2_0_pre2-slc5_amd64_gcc480, daForCMSSW_6_2_0_pre2-osx107_amd64_gcc472, daForCMSSW_6_2_0_pre2-osx108_amd64_gcc472, ForCMSSW_6_2_0_pre2-slc6_amd64_gcc472, daForCMSSW_6_2_0_pre2-slc5_amd64_gcc480, CMS_CONDWEB_DEV, CMS_CONDWEB_0_2, CMSSW_6_2_0_pre2-slc5_amd64_gcc472, CMSSW_6_2_0_pre2, CMS_CONDWEB_0_1, daForCMSSW_6_2_0_pre2-slc5_amd64_gcc472, sm130214a-53X-gcc462, sm130214a-53X-osx107, sm130214-53X-osx107, sm130214-53X-gcc462, CMSSW_6_1_1-slc5_amd64_gcc472, CMSSW_6_1_1, daForCMSSW_6_1_1-slc5_amd64_gcc472, davidlt_20130213_0902-62X-dev, davidlt_20130212_1424-62X-next, davidlt_20130212_1424-62X, davidlt_20130212_1000-62X-dev, davidlt_20130212_1020-62X-next, davidlt_20130212_1001-62X, daForCMSSW_6_1_0_SLHC-slc5_amd64_gcc472, davidlt_20130209_1053-61X-osx107-gcc472, davidlt_20130209_1051-61X-osx108-gcc472, davidlt_20130209_1109-61X-slc6-gcc472, davidlt_20130208_1428-62X-next, davidlt_20130208_1427-62X, BOOTSTRAP_slc5_amd64_gcc480, davidlt_20130207_2033-61X-gcc472, davidlt_20130207_1856-62X, davidlt_20130206_2133-62X-next, davidlt_20130206_2129-62X-osx107-gcc472, davidlt_20130207_1345-62X-osx108-gcc472, davidlt_20130206_2133-62X-gcc472-next, davidlt_20130206_1150-62X-osx107-gcc472, davidlt_20130206_1150-62X-osx108-gcc472, davidlt_20130206_1149-62X-gcc472-next, davidlt_20130206_1149-62X, davidlt_20130206_0923-62X-osx107-gcc472, davidlt_20130206_0922-62X-osx108-gcc472, davidlt_20130206_0922-62X-gcc472-next, davidlt_20130206_0909-62X, davidlt_20130205_2014-62X-osx108-gcc472, davidlt_20130205_1941-62X-osx107-gcc472, davidlt_20130205_1942-62X-gcc472-next, davidlt_20130205_1939-62X, CMSSW_5_3_8_patch3-osx107, CMSSW_5_3_8_patch3, CMSSW_5_3_7_patch6, CMSSW_5_3_7_patch6-osx107, geForCMSSW_6_2_0_pre1-osx108_amd64_gcc472, geForCMSSW_6_2_0_pre1-osx107_amd64_gcc472, CMSSW_6_2_0_pre1, geForCMSSW_6_2_0_pre1-slc5_amd64_gcc472, ForCMSSW_6_1_0-slc6_amd64_gcc472, CMSSW_5_3_8_patch2-osx107, CMSSW_5_3_8_patch2, eulisse_20130128_1430-62X-gcc472-next, eulisse_20130128_1430-62X-slc6-gcc472, eulisse_20130128_1430-62X, eulisse_20130128_1043-62X, CMSSW_5_3_8_patch1-osx107, CMSSW_5_3_8_patch1, CMSSW_5_3_8-osx107, CMSSW_5_3_8, davidlt_20130116_1037-62X-osx108-gcc472, davidlt_20130116_1009-62X-osx107-gcc472, davidlt_20130116_1008-62X-slc6-gcc472, davidlt_20130116_1043-62X, CMSSW_5_3_8_HI_patch2-osx107, CMSSW_5_3_8_HI_patch2, CMSSW_5_3_8_HI_patch1-osx107, CMSSW_5_3_7_patch5-osx107, CMSSW_5_3_8_HI_patch1, CMSSW_5_3_7_patch5, cms_adminFor-slc5_amd64_gcc472, eulisse_20130112_1105-62X, CMSSW_5_2_6_patch2, eulisse_20130112_0044-62X, geForCMSSW_5_2_6_patch2-slc5_amd64_gcc462, eulisse_20130109_2108-62X-gcc472, eulisse_20121231_1245-61X-gcc472, eulisse_20121230_2125-61X-gcc472, CMSSW_6_1_0-osx107, CMSSW_6_1_0-osx108, CMSSW_6_1_0, CMSSW_5_3_8_HI-osx107, CMSSW_5_3_8_HI, eulisse_20121217_2120-61X-gcc472, eulisse_20121217_2135-61X-gcc472, eulisse_20121217_2127-61X-slc6-gcc472, CMSSW_5_3_7_patch4-osx107, CMSSW_5_3_7_patch4, eulisse_20121217_2059-61X-osx107-gcc472, eulisse_20121217_1941-61X-osx107-gcc472, eulisse_20121216_1036-61X-gcc472, CMSSW_5_3_7_patch3-osx107, CMSSW_5_3_7_patch3, CMSSW_5_2_8_patch1, geForCMSSW_5_2_8_patch1-slc5_amd64_gcc462, eulisse_20121214_2046-61X-osx108-gcc472, eulisse_20121214_2022-61X-gcc472, CMSSW_6_0_1_PostLS1v2_patch4, eulisse_20121214_1049-61X-osx107-gcc472, eulisse_20121214_1044-61X-slc6-gcc472, eulisse_20121214_1009-61X-gcc472, eulisse_20121213_2246-61X-osx107-gcc472, eulisse_20121213_2133-61X-slc6-gcc472, eulisse_20121213_1659-61X-gcc472, davidlt_20121212_1833-61X-osx107-gcc472, davidlt_20121212_1832-61X-osx108-gcc472, davidlt_20121212_1831-61X-slc6-gcc472, davidlt_20121212_1831-61X-gcc472, CMSSW_6_1_0_pre8-slc5_amd64_gcc472, CMSSW_6_1_0_pre8, daForCMSSW_6_1_0_pre8-osx108_amd64_gcc472, daForCMSSW_6_1_0_pre8-osx107_amd64_gcc472, daForCMSSW_6_1_0_pre8-slc5_amd64_gcc472, davidlt_20121207_1047-61X-osx107-gcc472, davidlt_20121207_1046-61X-osx108-gcc472, davidlt_20121207_1045-61X-slc6-gcc472, davidlt_20121207_1045-61X-gcc472, CMSSW_5_3_7_25nspatch1-osx107, CMSSW_5_3_7_patch2-osx107, CMSSW_5_3_7_25nspatch1, CMSSW_5_3_7_patch2, davidlt_20121206_0901-61X-osx107-gcc472, davidlt_20121206_1159-61X-osx108-gcc472, davidlt_20121206_0900-61X-slc6-gcc472, davidlt_20121206_0859-61X-gcc472, CMSSW_6_1_0_pre7_TS127013-slc5_amd64_gcc472, CMSSW_6_1_0_pre7_TS127013, davidlt_20121204_1200-61X-osx107-gcc472, davidlt_20121204_1200-61X-osx108-gcc472, davidlt_20121204_1200-61X-slc6-gcc472, davidlt_20121204_1200-61X-gcc472, daForCMSSW_6_1_0_pre7_TS127013-slc5_amd64_gcc472, davidlt_20121204_0745-61X-osx107-gcc472, davidlt_20121204_0743-61X-osx108-gcc472, davidlt_20121204_0844-61X-slc6-gcc472, davidlt_20121204_0843-61X-gcc472, davidlt_20121203_1104-61X-osx107-gcc472, davidlt_20121203_0957-61X-osx108-gcc472, davidlt_20121203_0956-61X-slc6-gcc472, davidlt_20121203_0955-61X-gcc472, CMSSW_6_1_0_pre7-osx108_amd64_gcc472, CMSSW_6_1_0_pre7-osx107_amd64_gcc472, eulisse_20121129_1546-61X-gcc472, eulisse_20121129_1439-61X-gcc472, eulisse_20121129_1406-61X-gcc472, daForCMSSW_6_1_0_pre7-osx108_amd64_gcc472, daForCMSSW_6_1_0_pre7-osx107_amd64_gcc472, eulisse_20121129_1155-61X-gcc472, CMSSW_6_0_1_PostLS1v2_patch3-slc5_amd64_gcc462, CMSSW_6_0_1_PostLS1v2_patch3, daForCMSSW_6_0_1_PostLS1v2_patch3-slc5_amd64_gcc462, CMSSW_6_1_0_pre7-slc5_amd64_gcc472, CMSSW_6_1_0_pre7, sm121128-53X-osx107, sm121128-53X, daForCMSSW_6_1_0_pre7-slc5_amd64_gcc472, davidlt_20121128_0903-61X-osx107-gcc472, davidlt_20121128_0902-61X-osx108-gcc472, davidlt_20121128_0904-61X-slc6-gcc472, davidlt_20121128_0902-61X-gcc472, davidlt_20121127_1909-61X-osx108-gcc472, davidlt_20121127_1909-61X-osx107-gcc472, davidlt_20121127_1908-61X-slc6-gcc472, davidlt_20121127_1907-61X-gcc472, CMSSW_5_3_7_patch1-osx107, CMSSW_5_3_7_patch1, davidlt_20121127_1044-61X-osx107-gcc472, davidlt_20121127_1028-osx108-gcc472, davidlt_20121127_1020-61X-slc6-gcc472, davidlt_20121127_1012-gcc472, eulisse_20121126_2202_61X-gcc472, CMSSW_6_1_0_pre6_TS126203_TS126341_patch1-slc5_amd64_gcc472, CMSSW_6_1_0_pre6_TS126203_TS126341_patch1, daForCMSSW_6_1_0_pre6_TS126203_TS126341_patch1-slc5_amd64_gcc472, CMSSW_5_3_7_alcapatch1, CMSSW_6_1_0_pre6g496cand01-slc5_amd64_gcc472, CMSSW_6_1_0_pre6g496cand01, CMSSW_5_3_7, CMSSW_5_3_7-osx107, daForCMSSW_6_1_0_pre6g496cand01-slc5_amd64_gcc472, davidlt_20121122_1002-61X-g496cand01-gcc472, CMSSW_6_0_1_PostLS1v2_patch2-slc5_amd64_gcc462, CMSSW_6_0_1_PostLS1v2_patch2, daForCMSSW_6_0_1_PostLS1v2_patch2-slc5_amd64_gcc462, CMSSW_6_0_1_PostLS1v2_patch1-slc5_amd64_gcc462, CMSSW_6_0_1_PostLS1v2_patch1, daForCMSSW_6_0_1_PostLS1v2_patch1-slc5_amd64_gcc462, CMSSW_6_1_0_pre6-osx108_amd64_gcc472, CMSSW_6_1_0_pre6-osx107_amd64_gcc472, eulisse_20121120_1136_61X-gcc472, daForCMSSW_6_1_0_pre6-osx107_amd64_gcc472, daForCMSSW_6_1_0_pre6-osx108_amd64_gcc472, ForCMSSW_6_1_0_pre6-slc6_amd64_gcc472, davidlt_20121119_1533-61X-g496cand01-gcc472, CMSSW_6_1_0_pre6_TS126203_TS126341-slc5_amd64_gcc472, CMSSW_6_1_0_pre6_TS126203_TS126341, sm121119-53X-osx107, daForCMSSW_6_1_0_pre6_TS126203_TS126341-slc5_amd64_gcc472, sm121119-53X, CMSSW_6_1_0_pre6-slc5_amd64_gcc472, CMSSW_6_1_0_pre6, daForCMSSW_6_1_0_pre6-slc5_amd64_gcc472, CMSSW_6_0_1_PostLS1v2, sm121113-52X, sm121113-52X-osx107, sm121113-53X-osx107, sm121113-53X, davidlt_20121113_0821-61X-osx107-gcc472, davidlt_20121113_0816-osx108-gcc472, davidlt_20121113_0835-61X-slc6-gcc472, davidlt_20121113_0819-61X-gcc472, CMSSW_4_4_5_patch2, CMSSW_5_3_6_patch1, CMSSW_5_3_6_patch1-osx107, CMSSW_5_2_8-osx107, CMSSW_5_2_8, sm121112-53X-osx107, sm121112-53X, davidlt_20121110_0800-osx108-gcc472, davidlt_20121109_1131-61X-osx107-gcc472, davidlt_20121109_1130-61X-slc6-gcc472, davidlt_20121109_1127-0735-61X-gcc472, eulisse_20121107-0735-61X-gcc472, davidlt_20121105_1212-osx108-gcc472, davidlt_20121105_1128-61X-osx107-gcc472, davidlt_20121105_1127-61X-slc6-gcc472, davidlt_20121105_1126-61X-gcc472, CMSSW_5_3_6-osx107, CMSSW_5_3_6, CMSSW_6_1_0_pre5-slc5_amd64_gcc472, CMSSW_6_1_0_pre5, sm121102-53X-osx107, sm121102-53X, daForCMSSW_6_1_0_pre5-slc5_amd64_gcc472, CMSSW_6_0_1_PostLS1v1-slc5_amd64_gcc472, CMSSW_6_0_1_PostLS1v1-slc5_amd64_gcc462, CMSSW_6_0_1_PostLS1v1, geForCMSSW_5_2_8-slc5_amd64_gcc462, daForCMSSW_6_0_1_PostLS1v1-slc5_amd64_gcc472, daForCMSSW_6_0_1_PostLS1v1-slc5_amd64_gcc462, davidlt_20121101_1230-osx108-gcc472, davidlt_20121101_1230-61X-gcc472, davidlt_20121101_1230-61X-osx107-gcc472, davidlt_20121101_1230-61X-slc6-gcc472, eulisse_20121031_1202-52X, CMSSW_5_3_4_TC125616patch1, davidlt_20121030_1450-osx108-gcc472, davidlt_20121030_1450-61X-slc6-gcc472, davidlt_20121030_1450-61X-osx107-gcc472, davidlt_20121030_1450-61X-gcc472, eulisse_20121030_1025-52X, davidlt_20121029_1240-osx108-gcc472, davidlt_20121029_1251-61X-osx107-gcc472, davidlt_20121029_1108-61X-slc6-gcc472, davidlt_20121029_1056-61X-gcc472, CMSSW_6_0_1-osx107_amd64_gcc462, CMSSW_6_0_1-slc6_amd64_gcc462, eulisse_20121026_1128-61X-gcc472, ForCMSSW_6_0_1-slc6_amd64_gcc462, daForCMSSW_6_0_1-osx107_amd64_gcc462, eulisse_20121025_1358-61X-gcc472, davidlt_20121025_1106-osx108-gcc472, davidlt_20121025_1108-61X-osx107-gcc472, davidlt_20121025_1107-61X-slc6-gcc472, davidlt_20121025_1106-61X-gcc472, davidlt_20121024_1014-osx108-gcc472, davidlt_20121024_1014-61X-osx107-gcc472, davidlt_20121024_1013-61X-slc6-gcc472, davidlt_20121024_1011-61X-gcc472, eulisse_20121024_0912-61X-gcc472, eulisse_20121023_0912-61X-gcc472, davidlt_20121023_1647-61X-osx107-gcc472, BOOTSTRAP_osx107_amd64_gcc472, eulisse_20121023_1600-61X-gcc472, CMSSW_6_0_1-slc5_amd64_gcc472, CMSSW_6_0_1-slc5_amd64_gcc462, CMSSW_6_0_1, davidlt_20121023_1155-61X-slc6-gcc472, daForCMSSW_6_0_1-slc5_amd64_gcc472, daForCMSSW_6_0_1-slc5_amd64_gcc462, CMSSW_5_2_7_hltpatch2, CMSSW_5_2_7_onlpatch2_ONLINE, geForCMSSW_5_2_7_hltpatch2-slc5_amd64_gcc462, BOOTSTRAP_slc6_amd64_gcc472, davidlt_20121022_1024-60X-osx107, davidlt_20121022_1027-60X-slc6, davidlt_20121022_1019-60X-gcc472, davidlt_20121022_1013-60X, CMSSW_5_3_4_patch2, eulisse_20121017_1120-61X-gcc472, CMSSW_6_1_0_pre4-osx108_amd64_gcc472, CMSSW_6_1_0_pre4-osx107_amd64_gcc462, CMSSW_6_1_0_pre4-slc6_amd64_gcc462, eulisse_20121015_1727-61X-gcc472, daForCMSSW_6_1_0_pre4-osx108_amd64_gcc472, daForCMSSW_6_1_0_pre4-osx107_amd64_gcc462, ForCMSSW_6_1_0_pre4-slc6_amd64_gcc462, CMSSW_5_2_7_hltpatch1, geForCMSSW_5_2_7_hltpatch1-slc5_amd64_gcc462, CMSSW_5_2_7_onlpatch1_ONLINE, CMSSW_6_1_0_pre4-slc5_amd64_gcc472, CMSSW_6_1_0_pre4-slc5_amd64_gcc462, CMSSW_6_1_0_pre4, CMSSW_6_1_0_pre3_TS124729-slc5_amd64_gcc462, daForCMSSW_6_1_0_pre4-slc5_amd64_gcc472, daForCMSSW_6_1_0_pre4-slc5_amd64_gcc462, CMSSW_6_1_0_pre3_TS124729, eulisse_20121011_1741-61X-gcc472, eulisse_20121011_1728-61X-gcc472, eulisse_20121011_1718-61X-gcc472, daForCMSSW_6_1_0_pre3_TS124729-slc5_amd64_gcc462, CMSSW_5_3_5-osx107, CMSSW_5_3_5, davidlt_20121009_1600-61X-slc6, davidlt_20121009_1600-61X-osx107, davidlt_20121009_1600-61X-gcc472, davidlt_20121009_1600-61X, davidlt_20121009_1530-osx108-gcc472, sm121008a-53X-osx107, sm121008a-53X, davidlt_20121008_1222-osx108-gcc472, davidlt_20121008_1257-61X-osx107, davidlt_20121008_1223-61X-slc6, davidlt_20121008_1221-61X-gcc472, davidlt_20121008_1220-61X, sm121008-53X-osx107, sm121008-53X, davidlt_20121005_1417-61X-osx108_amd64_gcc472, davidlt_20121004_1021-60X-gcc472, BOOTSTRAP_osx108_amd64_gcc472, davidlt_20121003_1452-61X-gcc472, davidlt_2, davidlt_1, eulisse_20121003_1138-61X-gcc470, CMSSW_6_0_0_patch1-slc5_amd64_gcc472, CMSSW_6_0_0_patch1-slc5_amd64_gcc462, CMSSW_6_1_0_pre3-osx108_amd64_gcc470, CMSSW_6_1_0_pre3-osx107_amd64_gcc462, CMSSW_6_1_0_pre3-slc6_amd64_gcc462, CMSSW_6_1_0_pre3-slc5_amd64_gcc470, daForCMSSW_6_0_0_patch1-slc5_amd64_gcc462, daForCMSSW_6_0_0_patch1-slc5_amd64_gcc472, CMSSW_5_3_4_patch1, eulisse_20121001_1347-61X-gcc470, CMSSW_6_1_0_pre3-slc5_amd64_gcc462, CMSSW_6_1_0_pre3, daForCMSSW_6_1_0_pre3-osx108_amd64_gcc470, daForCMSSW_6_1_0_pre3-osx107_amd64_gcc462, ForCMSSW_6_1_0_pre3-slc6_amd64_gcc462, daForCMSSW_6_1_0_pre3-slc5_amd64_gcc470, daForCMSSW_6_1_0_pre3-slc5_amd64_gcc462, eulisse_20120930_1000-61X-gcc470, CMSSW_4_4_5_patch1, eulisse_20120928_0244-61X-gcc470, eulisse_20120928_0219-61X-gcc470, eulisse_20120928_0150-61X-gcc470, davidlt_20120927_1517-61X-osx108, davidlt_20120927_1510-61X-osx107, davidlt_20120927_1511-61X-slc6, davidlt_20120927_1508-61X-gcc470, davidlt_20120927_1507-61X, BOOTSTRAP_slc5_amd64_gcc472, davidlt_20120925_1134-61X-osx108, davidlt_20120925_1135-61X-osx107, davidlt_20120925_1129-61X-slc6, davidlt_20120925_1124-61X-gcc470, davidlt_20120925_1123-61X, CMSSW_5_2_7_ONLINE, CMSSW_5_2_7, CMSSW_5_3_4, sm1209122-53X, sm1209122-53X-osx107, geForCMSSW_5_2_7-slc5_amd64_gcc462, eulisse_20120921_1641-52X, davidlt_20120921_1153-61X-osx107, davidlt_20120921_1158-61X-slc6, davidlt_20120921_1151-61X-osx108, davidlt_20120921_1150-61X-gcc470, davidlt_20120921_1150-61X, davidlt_20120920_1536-61X-osx107, davidlt_20120920_1529-61X-osx108, davidlt_20120920_1529-61X-slc6, davidlt_20120920_1528-61X-gcc470, davidlt_20120920_1527-61X, eulisse_20120920_1429-61X-gcc470, CMSSW_5_3_2_patch5, CMSSW_5_2_7_cand4, geForCMSSW_5_2_7_cand4-slc5_amd64_gcc462, CMSSW_6_1_0_pre2-slc6_amd64_gcc462, CMSSW_6_1_0_pre2-slc5_amd64_gcc470, CMSSW_6_1_0_pre2-osx107_amd64_gcc462, CMSSW_6_1_0_pre2-osx108_amd64_gcc470, CMSSW_6_1_0_pre2-slc5_amd64_gcc462, CMSSW_6_1_0_pre2, eulisse_20120918_2117-61X-gcc470, CMSSW_5_3_4_cand2, CMSSW_5_3_4_cand1_patch1, eulisse_20120918_1706-61X-gcc470, ForCMSSW_6_1_0_pre2-slc6_amd64_gcc462, daForCMSSW_6_1_0_pre2-slc5_amd64_gcc470, CMSSW_6_0_0_patch1, daForCMSSW_6_1_0_pre2-osx107_amd64_gcc462, daForCMSSW_6_1_0_pre2-osx108_amd64_gcc470, daForCMSSW_6_1_0_pre2-slc5_amd64_gcc462, daForCMSSW_6_0_0_patch1-slc5_amd64_gcc470, davidlt_20120917_0750-61X-osx108, davidlt_20120917_0748-61X-osx107, davidlt_20120917_0802-61X-slc6, davidlt_20120917_0746-61X-gcc470, davidlt_20120917_0745-61X, davidlt_20120914_1755-61X-osx108, davidlt_20120914_1415-61X-osx107, davidlt_20120914_1414-61X-slc6, davidlt_20120914_1412-61X-gcc470, davidlt_20120914_1412-61X, davidlt_20120914_1040-61X-osx108, davidlt_20120914_1040-61X-osx107, davidlt_20120914_1039-61X-slc6, davidlt_20120914_1109-61X-gcc470, davidlt_20120914_1042-61X, davidlt-20120912-1527-osx107_amd64_gcc462, davidlt_20120912_1154-61X-osx107, davidlt_20120912_1156-61X-slc6, davidlt_20120912_1130-61X-gcc470, davidlt_20120912_1127-61X, CMSSW_6_0_0_SLHCtkpre1, daForCMSSW_6_0_0_SLHCtkpre1-slc5_amd64_gcc462, davidlt_20120911_0937-61X-osx108, ecbForCMSSW_6_0_0_SLHCtkpre1-slc5_amd64_gcc462, davidlt_20120910_1500-61X-osx108, davidlt-20120910-1500-61X-osx108_amd64_gcc470, CMSSW_5_2_6_hltpatch4, geForCMSSW_5_2_6_hltpatch4-slc5_amd64_gcc462, davidlt-20120910-1247-61X-osx108_amd64_gcc470, CMSSW_6_1_0_pre1-slc6_amd64_gcc462, ForCMSSW_6_1_0_pre1-slc6_amd64_gcc462, CMSSW_5_2_6_onlpatch4_ONLINE, CMSSW_6_1_0_pre1-slc5_amd64_gcc470, CMSSW_6_1_0_pre1, davidlt-20120904-1046-61X-osx108_amd64_gcc470, davidlt_20120903_2145-61X-osx107, davidlt_20120903_2005-61X-slc6, davidlt_20120903_1832-61X-gcc470, davidlt_20120903_1830-61X, daForCMSSW_6_1_0_pre1-slc5_amd64_gcc470, daForCMSSW_6_1_0_pre1-slc5_amd64_gcc462, CMSSW_5_3_4_cand1_TTpatch1, CMSSW_6_0_0-osx107_amd64_gcc462, CMSSW_6_0_0-slc6_amd64_gcc462, CMSSW_6_0_0-slc5_amd64_gcc470, fw20120831_after_the_changes, CMSSW_5_2_7_cand3_ONLINE-cms, fw20120831_before_the_changes, fw20120831_before_the_merge, CMSSW_5_3_4_cand1, daForCMSSW_6_0_0-osx107_amd64_gcc462, ForCMSSW_6_0_0-slc6_amd64_gcc462, daForCMSSW_6_0_0-slc5_amd64_gcc470, davidlt_20120831_0948-61X-osx107, davidlt_20120831_0947-61X-slc6, davidlt_20120831_0937-61X-gcc470, davidlt_20120831_0930-61X, cmsForCMSSW_6_1_X_2012-08-30-1000-slc5_amd64_gcc470, CMSSW_5_2_6_patch1, CMSSW_6_0_0_TS123272, davidlt_20120830_0812-61X-osx107, davidlt_20120830_1035-61X-slc6, davidlt_20120830_0810-61X-gcc470, davidlt_20120830_0810-61X, daForCMSSW_6_0_0_TS123272-slc5_amd64_gcc462, CMSSW_6_0_0_TS123032, davidlt_20120829_1119-61X-osx107, davidlt_20120829_1117-61X-slc6, davidlt_20120829_1116-61X-gcc470, davidlt_20120829_1115-61X, daForCMSSW_6_0_0_TS123032-slc5_amd64_gcc462, CMSSW_6_0_0, daForCMSSW_6_0_0-slc5_amd64_gcc462, davidlt-20120827-1519-61X-osx108_amd64_gcc470, davidlt-20120827-1506-61X-osx108_amd64_gcc470, davidlt-20120827-1431-61X-osx108_amd64_gcc470, davidlt_20120824_1354-61X-osx107, davidlt_20120824_1352-61X-slc6, davidlt_20120824_1351-61X, davidlt_20120824_1352-61X-gcc470, davidlt_20120824_0928-61X-osx107, davidlt_20120824_0927-61X-slc6, davidlt_20120824_0926-61X, davidlt_20120824_0926-61X-gcc470, CMSSW_5_3_3_patch3, geForCMSSW_5_3_3_patch3-slc5_amd64_gcc462, davidlt_20120822_1706-61X, davidlt_20120822_0925-61X-osx107, davidlt_20120822_1136-61X-slc6, davidlt_20120822_0921-61X-gcc470, davidlt_20120822_0921-61X, davidlt_20120820_1005-61X-gcc470, davidlt_20120820_1003-61X-osx107, davidlt_20120820_0956-61X-slc6, davidlt_20120820_0956-61X, CMSSW_5_2_7_cand3_ONLINE, CMSSW_5_2_6_onlpatch3_ONLINE, CMSSW_5_2_7_cand3, geForCMSSW_5_2_7_cand3-slc5_amd64_gcc462, geForCMSSW_5_3_3_cand1_patch1-slc5_amd64_gcc462, geForCMSSW_5_3_3_cand1patch1-slc5_amd64_gcc462, CMSSW_4_4_5, sm120813-44X, davidlt_20120813_1021-60X-gcc470, sm120810a-53X, sm120810a-53X-osx107, sm120810-53X-osx107, sm120810-53X, geForCMSSW_5_2_7_cand2-slc5_amd64_gcc462, sm120809-53X-osx107, sm120809-53X, davidlt_20120809_1259-60X-gcc470, davidlt_20120809_1258-60X, davidlt_20120809_1256-60X-slc6, davidlt_20120809_1255-60X-osx107, davidlt_20120809_1000-52X, davidlt_20120809_1000-52X-osx106, CMSSW_5_3_3_patch2-osx107, CMSSW_5_3_3_patch2, davidlt_20120808_1030-60X-osx107, davidlt_20120808_1030-60X-gcc470, davidlt_20120808_1030-60X-slc6, davidlt_20120808_1030-60X, davidlt_20120808_1000-60X-osx107, davidlt_20120808_1000-60X-gcc470, davidlt_20120808_1000-60X-slc6, davidlt_20120808_1000-60X, CMSSW_4_2_8_SLHChcal6, CMSSW_6_0_0_pre11-slc6, CMSSW_6_0_0_pre11-osx107, CMSSW_6_0_0_pre11-gcc470, ecbForCMSSW_4_2_8_SLHChcal6-slc5_amd64_gcc434, ForCMSSW_6_0_0_pre11-slc6_amd64_gcc462, daForCMSSW_6_0_0_pre11-osx107_amd64_gcc462, daForCMSSW_6_0_0_pre11-slc5_amd64_gcc470, CMSSW_6_0_0_pre11, eulisse_20120803_1320-52X, daForCMSSW_6_0_0_pre11-slc5_amd64_gcc462, CMSSW_5_3_3_patch1-osx107, CMSSW_5_3_3_patch1, sm120801-53X-osx107, sm120801-53X, davidlt_20120801_0942-60X-osx107, davidlt_20120801_0941-60X-slc6, davidlt_20120801_0940-60X-gcc470, davidlt_20120801_0940-60X, davidlt_20120730_1526-60X-osx107, davidlt_20120730_1520-60X-gcc470, davidlt_20120730_1521-60X-slc6, davidlt_20120730_1520-60X, CMSSW_5_3_3, CMSSW_5_3_3-osx107, CMSSW_5_2_6_onlpatch2_ONLINE, davidlt_20120725_1000-60X-osx107, davidlt_20120725_1000-60X-gcc470, davidlt_20120725_1000-60X-slc6, davidlt_20120725_1000-60X, CMSSW_6_0_0_pre10, daForCMSSW_6_0_0_pre10-slc5_amd64_gcc462, davidlt_20120724_1813-60X-osx107, davidlt_20120724_1817-60X-slc6, davidlt_20120724_1811-60X-gcc470, davidlt_20120724_1805-60X, CMSSW_6_0_0_pre9-gcc470, CMSSW_6_0_0_pre9-osx107, CMSSW_6_0_0_pre9, CMSSW_6_0_0_pre9-slc6, CMSSW_5_2_6_onlpatch1_ONLINE, CMSSW_4_2_8_SLHChcal5, daForCMSSW_6_0_0_pre9-slc5_amd64_gcc470, ForCMSSW_6_0_0_pre9-slc6_amd64_gcc462, daForCMSSW_6_0_0_pre9-osx107_amd64_gcc462, daForCMSSW_6_0_0_pre9-slc5_amd64_gcc462, ecbForCMSSW_4_2_8_SLHChcal5-slc5_amd64_gcc434, davidlt_20120718_1227-60X-osx107, davidlt_20120718_1208-60X-slc6, davidlt_20120718_1202-60X-gcc470, davidlt_20120718_1232-60X, davidlt_20120716_1513-53X-osx107, davidlt_20120716_1512-53X, davidlt_20120716_1148-52X-osx106, davidlt_20120716_1146-52X-osx107, davidlt_20120716_1143-52X, davidlt_20120715_1023-60X-osx107, davidlt_20120715_1022-60X-slc6, davidlt_20120715_1021-60X-gcc470, davidlt_20120715_1021-60X, davidlt_20120714_2227-60X-osx107, davidlt_20120714_2232-60X-slc6, davidlt_20120714_2228-60X-gcc470, davidlt_20120714_2229-60X, CMSSW_6_0_0_pre8-slc6, CMSSW_6_0_0_pre8-osx107, CMSSW_6_0_0_pre8-gcc470, CMSSW_4_2_8_SLHCstd2_patch2, CMSSW_4_2_8_SLHCtk3_patch2, CMSSW_4_2_8_SLHChcal2_patch3, daForCMSSW_4_2_8_SLHChcal2_patch3-slc5_amd64_gcc434, ecbForCMSSW_4_2_8_SLHCstd2_patch2-slc5_amd64_gcc434, ecbForCMSSW_4_2_8_SLHCtk3_patch2-slc5_amd64_gcc434, davidlt_20120712_1112-60X-gcc470, davidlt_20120712_1111-60X-slc6, davidlt_20120712_1109-60X-osx107, davidlt_20120712_1054-60X, CMSSW_5_3_2_patch4, geForCMSSW_5_3_2_patch4-slc5_amd64_gcc462, ForCMSSW_6_0_0_pre8-slc6_amd64_gcc462, daForCMSSW_6_0_0_pre8-osx107_amd64_gcc462, daForCMSSW_6_0_0_pre8-slc5_amd64_gcc470, CMSSW_5_2_6_ONLINE, CMSSW_6_0_0_pre8, daForCMSSW_6_0_0_pre8-slc5_amd64_gcc462, CMSSW_4_2_8_SLHCstd2_patch1, CMSSW_4_2_8_SLHCtk3_patch1, CMSSW_4_2_8_SLHChcal4_patch4, ecbForCMSSW_4_2_8_SLHCtk3_patch1-slc5_amd64_gcc434, ecbForCMSSW_4_2_8_SLHCstd2_patch1-slc5_amd64_gcc434, ecbForCMSSW_4_2_8_SLHChcal4_patch4-slc5_amd64_gcc434, davidlt_20120710_1803-60X-osx107, davidlt_20120710_1802-60X-slc6, davidlt_20120710_1801-60X-gcc470, davidlt_20120710_1759-60X, ecbForCMSSW_4_2_8_SLHChcal2_patch3-slc5_amd64_gcc434, CMSSW_5_3_2_patch3, davidlt_20120709_0949-60X-osx107, davidlt_20120709_0947-60X-slc6, davidlt_20120709_0945-60X-gcc470, davidlt_20120709_0944-60X, CMSSW_5_3_3_cand1, CMSSW_5_3_2_patch2, CMSSW_5_2_7_cand1, av20120708-cmssw526-gcc462onl, CMSSW_5_2_4_onlpatch5_ONLINE, CMSSW_5_2_4_onlpatch4_ONLINE, geForCMSSW_5_3_2_patch2-slc5_amd64_gcc462, geForCMSSW_5_2_7_cand1-slc5_amd64_gcc462, CMSSW_5_3_2_metpatch1, CMSSW_5_2_6_hltpatch1, geForCMSSW_5_2_6_hltpatch1-slc5_amd64_gcc462, davidlt_20120630_1032-60X, davidlt_20120629_1426-60X-osx107, davidlt_20120629_1422-60X-slc6, davidlt_20120629_1419-60X-gcc470, davidlt_20120629_1321-60X, davidlt_20120629_1048-53X-osx107, davidlt_20120629_1042-53X, davidlt_20120629_1042-CMSSW_5_3_2_patch1, davidlt_20120628_1611-52X-osx107, davidlt_20120628_1603-52X-osx106, davidlt_20120628_1536-52X, CMSSW_4_2_8_SLHChcal4_patch3, daForCMSSW_4_2_8_SLHChcal4_patch3-slc5_amd64_gcc434, davidlt_20120628_1117-52X-osx107, davidlt_20120628_1114-52X-osx106, davidlt_20120628_1114-52X, davidlt_20120627_1636-60X-slc6, davidlt_20120627_1635-60X-osx107, davidlt_20120627_1634-60X-gcc470, davidlt_20120627_1632-60X, davidlt_20120627_1115-60X-slc6, davidlt_20120627_1106-60X-osx107, davidlt_20120627_1104-60X-gcc470, CMSSW_6_0_0_pre7py273, davidlt_20120627_1102-60X, sm120627-53X-osx107, sm120626-53X-osx107, ecbForCMSSW_4_2_8_SLHChcal4_patch3-slc5_amd64_gcc434, CMSSW_5_2_6, CMSSW_5_3_2_patch1, sm120626-53X, daForCMSSW_6_0_0_pre7py273-osx107_amd64_gcc462, daForCMSSW_6_0_0_pre7py273-slc5_amd64_gcc462, geForCMSSW_5_2_6-slc5_amd64_gcc462, sm120625-53X, davidlt_20120625_1521-osx107, davidlt_20120625_1518-CMSSW_6_0_0_pre7, davidlt_20120625_1026-60X-osx107, davidlt_20120625_1025-60X-slc6, davidlt_20120625_1024-60X-gcc470, davidlt_20120625_1016-60X, davidlt_test_py273, CMSSW_4_2_8_SLHChcal4_patch2, daForCMSSW_4_2_8_SLHChcal4_patch2-slc5_amd64_gcc434, CMSSW_6_0_0_pre7-osx107, CMSSW_6_0_0_pre7-slc6, CMSSW_6_0_0_pre7-gcc470, daForCMSSW_6_0_0_pre7-osx107_amd64_gcc462, ForCMSSW_6_0_0_pre7-slc6_amd64_gcc462, daForCMSSW_6_0_0_pre7-slc5_amd64_gcc470, CMSSW_4_2_8_SLHChcal4_patch1, daForCMSSW_4_2_8_SLHChcal4_patch1-slc5_amd64_gcc434, CMSSW_5_3_2, CMSSW_6_0_0_pre7, geForCMSSW_5_3_2-slc5_amd64_gcc462, ge20120615-52X, ge20120615, CMSSW_5_2_6_cand1, eulisse_20120615_1606-53X, daForCMSSW_6_0_0_pre7-slc5_amd64_gcc462, ecbForCMSSW_4_2_8_SLHChcal4_patch1-slc5_amd64_gcc434, geForCMSSW_5_2_6_cand1-slc5_amd64_gcc462, davidlt_20120614_2147-gcc470, davidlt_20120614_2144-CMSSW_6_0_0_pre6, eulisse_20120614_2109-ge20120614, ge20120614, davidlt_20120613_1051-60X-gcc470, ge20120612-xdaq-fixed, eulisse_20120612_1208-ge20120606, CMSSW_5_3_1_TS121128, davidlt_20120611_1736-CMSSW_6_0_0_pre6, davidlt_20120611_1739-gcc470, CMSSW_5_3_1_TS120913, CMSSW_5_2_4_hltpatch4, geForCMSSW_5_2_4_hltpatch4-slc5_amd64_gcc462, davidlt_20120608_1804-60X-gcc470, davidlt_20120608_1759-60X-slc6, davidlt_20120608_1756-60X-osx107, davidlt_20120608_1436-60X, CMSSW_6_0_0_pre6Nmix-gcc470, CMSSW_6_0_0_pre6Nmix, daForCMSSW_6_0_0_pre6Nmix-slc5_amd64_gcc470, daForCMSSW_6_0_0_pre6Nmix-slc5_amd64_gcc462, CMSSW_6_0_0_pre6g495p01-gcc470, CMSSW_6_0_0_pre6g495p01, daForCMSSW_6_0_0_pre6g495p01-slc5_amd64_gcc462, daForCMSSW_6_0_0_pre6g495p01-slc5_amd64_gcc470, davidlt_20120607_1801-60X-gcc470, davidlt_20120607_1755-60X, davidlt_20120607_1525-60X-gcc470, davidlt_20120607_1041-60X-osx107, davidlt_20120607_1039-60X-slc6, davidlt_20120607_1035-60X, CMSSW_4_2_8_lowpupatch1, daForCMSSW_4_2_8_lpupatch1-slc5_amd64_gcc434, davidlt_20120606_2304-60X-gcc470, eulisse_20120606_2052-52X-osx107, eulisse_20120606_2011-52X-osx106, ge20120606, davidlt_20120606_1728-53X, daForCMSSW_4_2_8_lowpupatch1-slc5_amd64_gcc434, davidlt_20120606_1135-52X-osx107, davidlt_20120606_1130-52X-osx106, davidlt_20120606_1126-52X, CMSSW_5_2_5_patch3, geForCMSSW_5_2_5_patch3-slc5_amd64_gcc462, davidlt_20120605_2037-60X-gcc470, ge20120605b, ge20120605, CMSSW_5_2_5_patch2, geForCMSSW_5_2_5_patch2-slc5_amd64_gcc462, CMSSW_4_2_8_patch7, davidlt_20120604_1841-60X-gcc470, ge20120604-llvm, CMSSW_6_0_0_pre6-slc6, CMSSW_6_0_0_pre6-osx107, CMSSW_6_0_0_pre6-gcc470, CMSSW_6_0_0_pre6, sm120601-53X, sm120601-53X-osx107, daForCMSSW_6_0_0_pre6-osx107_amd64_gcc462, ForCMSSW_6_0_0_pre6-slc6_amd64_gcc462, daForCMSSW_6_0_0_pre6-slc5_amd64_gcc470, daForCMSSW_6_0_0_pre6-slc5_amd64_gcc462, davidlt_20120531_1114-60X-osx107, davidlt_20120531_1112-60X-slc6, davidlt_20120531_1111-60X-gcc470, davidlt_20120531_1110-60X, davidlt_20120529_1108-60X, davidlt_20120529_1110-60X-gcc470, davidlt_20120529_1112-60X-slc6, davidlt_20120529_1113-60X-osx107, davidlt_20120529_1024-60X-gcc470, davidlt_20120528_1234-60X-osx107, davidlt_20120528_1232-60X-slc6, davidlt_20120528_1230-60X-gcc470, davidlt_20120528_1228-60X, davidlt_20120525_1144-60X-gcc470, cmsForCMSSW_6_0_X_2012-05-25-0200-slc5_amd64_gcc470, davidlt_20120525_0906-60X-slc6, davidlt_20120525_0901-60X-osx107, davidlt_20120524_1540-60X-gcc470, davidlt_20120524_1535-60X, davidlt_test_gcc470_1, davidlt_20120523_1319-60X-slc6, davidlt_20120523_1316-60X-osx107, davidlt_20120523_1314-60X-gcc470, davidlt_20120523_1311-60X, CMSSW_5_3_1, CMSSW_4_1_8_patch10, daForCMSSW_4_1_8_patch10-slc5_amd64_gcc434, CMSSW_6_0_0_pre5-gcc470, CMSSW_6_0_0_pre5-osx107, CMSSW_6_0_0_pre5-slc6, CMSSW_5_2_5_ecalpatch1, geForCMSSW_5_2_5_ecalpatch1-slc5_amd64_gcc462, daForCMSSW_6_0_0_pre5-slc5_amd64_gcc470, davidltForCMSSW_6_0_0_pre5-osx107_amd64_gcc462, ForCMSSW_6_0_0_pre5-slc6_amd64_gcc462, ge20120521-cms-common, CMSSW_6_0_0_pre5, cmsForCMSSW_6_0_X_2012-05-18-1400-slc5_amd64_gcc470, CMSSW_5_3_0_patch1, CMSSW_4_2_8_SLHCtk3, CMSSW_4_2_8_SLHChcal4, sm120518-60X-slc6, sm120518-60X-osx107, sm120518-60X-gcc470, sm120518-60X, sm120508a-60X-osx107, sm120508a-60X-gcc470, sm120508a-60X, sm120518a-52X-slc6, sm120518-52X-osx106, sm120518-52X, sm120518-52X-slc6, sm120518-52X-osx107, sm120518-53X, sm120518-53X-slc6, sm120518-53X-gcc470, sm120518-53X-osx107, sm120508-60X-slc6, sm120508-60X-gcc470, sm120508-60X-osx107, sm120508-60X, sm120508-slc6, sm120508-gcc470, sm120508-osx107, wtForCMSSW_6_0_0_pre4-slc5_amd64_gcc462, ecbForCMSSW_4_2_8_SLHChcal4-slc5_amd64_gcc434b, CMSSW_5_2_5_patch1, ecbForCMSSW_4_2_8_SLHCtk3-slc5_amd64_gcc434, daForCMSSW_6_0_0_pre5-slc5_amd64_gcc462, CMSSW_4_2_9_HLT1_bphpatch4, daForCMSSW_4_2_9_HLT1_bphpatch4-slc5_amd64_gcc434, geForCMSSW_5_2_5_patch1-slc5_amd64_gcc462, CMSSW_4_2_8_SLHCstd2, davidlt_20120514_1045-60X, davidlt_20120514_1052-60X-gcc470, davidlt_20120514_1054-60X-slc6, davidlt_20120514_1057-60X-osx107, cmsForCMSSW_6_0_X_2012-05-11-1400-slc5_amd64_gcc470, ge20120511-clang, CMSSW_5_2_5_ONLINE, ge20120511b-gcc47x, davidlt_20120510_1929-60X, ge20120511-gcc47x, ge20120510-gcc47x, cmsForCMSSW_6_0_X_2012-05-10-1400-slc5_amd64_gcc470, ecbForCMSSW_4_2_8_SLHCstd2-slc5_amd64_gcc434b, ecbForCMSSW_4_2_8_SLHCstd2-slc5_amd64_gcc434, davidlt_20120510_1021-60X-gcc470, davidlt_20120510_1028-60X-osx107, davidlt_20120510_1008-60X-slc6, davidlt_test_6, ecbForCMSSW_4_2_8_SLHCstd_patch1-slc5_amd64_gcc434, CMSSW_5_3_0, CMSSW_6_0_0_pre4-slc6, CMSSW_6_0_0_pre4-osx107, CMSSW_6_0_0_pre4-gcc470, CMSSW_6_0_0_pre4, ge20120508-slc6, ForCMSSW_6_0_0_pre4-slc6_amd64_gcc462, daForCMSSW_6_0_0_pre4-slc5_amd64_gcc470, geForCMSSW_5_2_5-osx106_amd64_gcc462, geForCMSSW_5_2_5-osx107_amd64_gcc462, daForCMSSW_6_0_0_pre4-osx107_amd64_gcc462, daForCMSSW_6_0_0_pre4-slc5_amd64_gcc462, CMSSW_5_2_5, davidlt_20120504_1635-60X-osx107, davidlt_20120504_1632-60X-slc6, davidlt_20120504_1630-60X-gcc470, davidlt_20120504_1624-60X, davidlt_20120504_1635-53X-osx107, CMSSW_5_2_4_onlpatch3_ONLINE, geForCMSSW_5_2_5-slc5_amd64_gcc462, CMSSW_5_2_4_hltpatch3, davidlt_20120504_1635-63X-osx107, davidlt_20120504_1632-53X-slc6, davidlt_20120504_1630-53X-gcc470, davidlt_20120504_1624-53X, ge20120505, ge20120503-60x-gcc470, geForCMSSW_5_2_4_hltpatch3-slc5_amd64_gcc462, CMSSW_5_2_4_hltpatch2, geForCMSSW_5_2_4_hltpatch2-slc5_amd64_gcc462, CMSSW_4_2_9_HLT1_bphpatch3, ge20120502b, ge20120502, daForCMSSW_4_2_9_HLT1_bphpatch3-slc5_amd64_gcc434, av20120430-cmssw525cand1-gcc462onl, davidlt_20120428_1114-60X-osx107, davidlt_20120428_1111-60X-slc6, davidlt_20120428_1106-60X, CMSSW_5_2_5_cand1, geForCMSSW_5_2_5_cand1-slc5_amd64_gcc462, ge20120428, ge20120427, davidlt_20120427_1349-60X-gcc470, davidlt_test_5, ge20120426-lion, ge20120426, CMSSW_4_2_8_SLHCtk_patch2, CMSSW_4_2_8_SLHChcal2_patch2, CMSSW_4_2_8_SLHC2_patch2, CMSSW_5_2_4_patch4, geForCMSSW_5_2_4_patch4-slc5_amd64_gcc462, cmsForCMSSW_6_0_X_2012-04-25-1400-slc5_amd64_gcc470, ecbForCMSSW_4_2_8_SLHCtk_patch2-slc5_amd64_gcc434d, ecbForCMSSW_4_2_8_SLHCtk_patch2-slc5_amd64_gcc434c, ecbForCMSSW_4_2_8_SLHCtk_patch2-slc5_amd64_gcc434b, ecbForCMSSW_4_2_8_SLHC2_patch2-slc5_amd64_gcc434, ecbForCMSSW_4_2_8_SLHCtk_patch2-slc5_amd64_gcc434, ecbForCMSSW_4_2_8_SLHChcal2_patch2-slc5_amd64_gcc434, davidlt_test_4, davidlt_20120425_1142-60X-osx107, davidlt_20120425_1139-60X-gcc470, davidlt_20120425_1137-60X-slc6, davidlt_20120425_1134-60X, davidlt_20120425_1120-52X-slc6, davidlt_20120425_1117-52X-lion, davidlt_20120425_1113-52X, ecbForCMSSW_4_2_8_SLHChcal4-slc5_amd64_gcc434, CMSSW_6_0_0_pre3-osx107, CMSSW_6_0_0_pre3-slc6, CMSSW_6_0_0_pre3-gcc470, CMSSW_6_0_0_pre3, ge20120424-cms-common, ForCMSSW_6_0_0_pre3-slc6_amd64_gcc462, daForCMSSW_6_0_0_pre3-osx107_amd64_gcc462, daForCMSSW_6_0_0_pre3-slc5_amd64_gcc470, CMSSW_5_2_4_patch3, CMSSW_4_2_8_SLHCtk2, geForCMSSW_5_2_4_patch3-slc5_amd64_gcc462, daForCMSSW_6_0_0_pre3-slc5_amd64_gcc462, daForCMSSW_4_2_8_SLHCtk2-slc5_amd64_gcc434, CMSSW_5_2_4_patch2, geForCMSSW_5_2_4_patch2-slc5_amd64_gcc462, CMSSW_4_2_8_SLHChcal3, CMSSW_4_2_8_SLHCstd, daForCMSSW_4_2_8_SLHChcal3-slc5_amd64_gcc434, daForCMSSW_4_2_8_SLHCstd-slc5_amd64_gcc434, davidlt_20120419_1945-CMSSW_4_2_8_SLHChcal3-gcc434, davidlt_20120419_1841-CMSSW_4_2_8_SLHCstd-gcc434, davidlt_20120419_1841-slc5_amd64_gcc434b, ecbForCMSSW_4_2_8_SLHCtk2-slc5_amd64_gcc434, davidlt_20120419_1431-60X-gcc470, davidlt_20120418_2032-60X-gcc470, davidlt_20120418_1546-60X-gcc470, ecbForCMSSW_4_2_8_SLHChcal3-slc5_amd64_gcc434, davidlt_test_3, davidlt_test_2, ecbForCMSSW_4_2_8_SLHCstd-slc5_amd64_gcc434b, davidlt_test_1, CMSSW_5_2_4_onlpatch1_ONLINE, CMSSW_5_2_4_ONLINE, ecbForCMSSW_4_2_8_SLHCstd-slc5_amd64_gcc434, CMSSW_5_2_4_patch1, daForCMSSW_5_2_4_patch1-slc5_amd64_gcc462, CMSSW_5_2_4-osx107, CMSSW_5_2_4-osx106, daForCMSSW_5_2_4-osx106_amd64_gcc462, daForCMSSW_5_2_4-osx107_amd64_gcc462, CMSSW_5_2_4, daForCMSSW_5_2_4-slc5_amd64_gcc462, CMSSW_5_2_3_patch4_ONLINE, CMSSW_5_2_3_patch4, CMSSW_4_2_8_SLHC2_patch1, CMSSW_4_2_8_SLHCtk_patch1, CMSSW_4_2_8_SLHChcal2_patch1, daForCMSSW_4_2_8_SLHC2_patch1-slc5_amd64_gcc434, daForCMSSW_4_2_8_SLHChcal2_patch1-slc5_amd64_gcc434, daForCMSSW_4_2_8_SLHCtk_patch1-slc5_amd64_gcc434, CMSSW_4_2_9_HLT1_bphpatch2, daForCMSSW_4_2_9_HLT1_bphpatch2-slc5_amd64_gcc434, davidlt_20120406_1647-60X-gcc470, CMSSW_5_2_3_patch3, daForCMSSW_5_2_3_patch3-slc5_amd64_gcc462, ecbForCMSSW_4_2_8_SLHC2_patch1-slc5_amd64_gcc434, ecbForCMSSW_4_2_8_SLHChcal2_patch1-slc5_amd64_gcc434, ecbFor428slhctkp1, davidlt_20120405_1007-60X-gcc470, CMSSW_4_2_9_HLT1_bphpatch1, CMSSW_6_0_0_pre2-osx107, CMSSW_6_0_0_pre2-slc6, CMSSW_6_0_0_pre2, daForCMSSW_4_2_9_HLT1_bphpatch1-slc5_amd64_gcc434, sm20120404-60X-osx107, sm20120404-60X-slc6, sm20120404-60X-gcc470, sm20120404-60X, davidlt_20120404_1419-42X-HLT1-bph1, CMSSW_5_2_3_patch2, geForCMSSW_5_2_3_patch2-slc5_amd64_gcc462, davidlt_20120403_1447-60X-slc6, davidlt_20120403_1455-60X-gcc470, davidlt_20120403_1459-60X-osx107, davidlt_20120403_1446-60X, geForCMSSW_5_2_3-osx106_amd64_gcc462, geForCMSSW_5_2_3-osx107_amd64_gcc462, davidlt_20120401_1059-60X-slc6, CMSSW_5_2_3_patch1_ONLINE, CMSSW_5_2_3_patch1, av20120330-cmssw523patch1-gcc462onl, geForCMSSW_5_2_3_patch1-slc5_amd64_gcc462, CMSSW_5_2_3_onlpatch1_ONLINE, av20120329-cmssw523onlpatch1-gcc462onl, CMSSW_5_2_3_ONLINE, CMSSW_5_2_3, geForCMSSW_5_2_3-slc5_amd64_gcc462, davidlt_20120327_1112-51X-gcc470, davidlt_1-51X-gcc470, sm20120327-60X-osx107, sm20120327-60X-gcc470, sm20120327-60X-slc6, sm20120327-60X, CMSSW_5_2_2_ONLINE, fw20120325-cmssw522-gcc462onl, av20120324-cmssw522-gcc462onl, CMSSW_6_0_0_pre1_LOOPER, davidlt_20120323_1820-slc6, davidlt_20120323_1438-osx107, davidlt_20120323_1340-60X, CMSSW_6_0_0_pre1-osx107, CMSSW_6_0_0_pre1-slc6, CMSSW_6_0_0_pre1, sm20120322-60x-slc6, CMSSW_4_1_8_patch9, eulisse_20120321_1634-52X, davidlt_20120321_1033-60X-lion, davidlt_20120321_1024-60X, CMSSW_5_1_3, geForCMSSW_5_2_2-osx107_amd64_gcc462, geForCMSSW_5_2_2-osx106_amd64_gcc462, CMSSW_5_2_2, geForCMSSW_5_2_2-slc5_amd64_gcc462, geForCMSSW_5_2_1-osx107_amd64_gcc462, ge20120314-52X-lion, geForCMSSW_5_2_1-osx106_amd64_gcc462, CMSSW_5_2_1, daForCMSSW_5_1_3-osx106_amd64_gcc462, daForCMSSW_5_1_3-slc5_amd64_gcc462, geForCMSSW_5_2_1-slc5_amd64_gcc462, ge20120316-52X, davidlt_20120315_1325-60X-gcc470, davidlt_20120313_1031-60X-lion, davidlt_20120307_0959-60X-slc6, davidlt_20120313_1023-60X, davidlt_20120314_1407-60X-gcc470, BOOTSTRAP_slc5_amd64_gcc470, davidlt_20120314_1059-51X-gcc462, ge20120314-52X, davidlt_20120313_1031-52X-lion, davidlt_20120313_1023-52X, davidlt_20120312_1508-51X-gcc462, davidlt_60X_gcc470_2, davidlt_60X_gcc470, CMSSW_4_4_4-ports, CMSSW_4_4_4, ge20120310-52X, sm20120309, sm20120309-ports, CMSSW_5_1_2_patch1, daForCMSSW_5_1_2_patch1-slc5_amd64_gcc462, geForCMSSW_5_2_0-osx106_amd64_gcc462, geForCMSSW_5_2_0-osx107_amd64_gcc462, CMSSW_5_2_0, davidlt_20120307_1529-51X-gcc462, davidlt_20120307_0959-52X-slc6, geForCMSSW_5_2_0-slc5_amd64_gcc462, CMSSW_5_1_2_ONLINE, ge20120305-52X-lion, fw20120305-cmssw512-gcc462onl, CMSSW_5_1_1_patch2_ONLINE, ge20120305-52X, davidlt_20120304_1754-52X-slc6, CMSSW_5_1_1_patch3, daForCMSSW_5_1_1_patch3-slc5_amd64_gcc462, sm20120302-52X-slc6, sm20120302-52X-lion, sm20120302-52X, fw20120302-cmssw511p2-gcc461onl, davidlt_20120301_1448-52X-gcc462-slc6, ge20120301-52X-lion, ge20120301-52X, davidlt_20120229_1507-52X-gcc462-slc6, da20120229-52X-gcc462-slc6, davidlt_slc6c, davidlt_slc6b, geForCMSSW_5_2_0_pre6_TS117498-slc5_amd64_gcc462, CMSSW_5_2_0_pre5_TS117504, davidlt_slc6a, sm20120228-44X-ports, sm20120228-44X, geForCMSSW_5_2_0_pre5_TS117504-slc5_amd64_gcc462, BOOTSTRAP_slc6_amd64_gcc462, ge20120227-52X, geForCMSSW_5_2_0_pre6-osx106_amd64_gcc462, geForCMSSW_5_2_0_pre6DQM-slc5_amd64_gcc462, CMSSW_5_1_2, daForCMSSW_5_1_2-osx106_amd64_gcc462, daForCMSSW_5_1_2-slc5_amd64_gcc462, geForCMSSW_5_2_0_pre6-osx107_amd64_gcc462, CMSSW_5_2_0_pre6, davidlt_20120224_2132-51X-gcc462, CMSSW_5_1_1_ONLINE, geForCMSSW_5_2_0_pre6-slc5_amd64_gcc462, fw20120222-cmssw511-gcc461onl-3, fw20120222-cmssw511-gcc461onl-2, fw20120222-cmssw511-gcc461onl, ge20120222-52X-gcc462-lion, ge20120222-52X-gcc462, fw20120221-gcc461onl, sm120221, CMSSW_5_1_1_patch2, daForCMSSW_5_1_1_patch2-slc5_amd64_gcc462, sm120220-ports, sm120220, ge20120218-52X-gcc462-lion, vs20120218-52X-gcc462-lion, ge20120218-52X-gcc462, ge20120215-52X-gcc462, CMSSW_4_4_3_patch1-ports, CMSSW_4_4_3_patch1, CMSSW_5_1_1_patch1, daForCMSSW_5_1_1_patch1-slc5_amd64_gcc462, vs20120215-52X-gcc462, vs20120215-52X, vs20120215-52X-gcc462-lion, vs20120215-51X-gcc462, vs20120215-51X, vs20120215-50X-gcc461-ports, vs20120215-50X, vs20120215-50X-ports, vs20120215-44X, vs20120215-44X-ports, CMSSW_5_2_0_pre5, da20120215-52X-gcc462-lion, da20120215-52X-gcc462, da20120214-50X-ports, da20120214-50X, da20120214-50X-gcc461-ports, CMSSW_5_1_1, geForCMSSW_5_2_0_pre5-osx106_amd64_gcc462, geForCMSSW_5_2_0_pre5-osx107_amd64_gcc462, geForCMSSW_5_2_0_pre5-slc5_amd64_gcc462, geForCMSSW_5_2_0_pre5-slc5_amd64_gcc461, CMSSW_5_0_1_patch3-gcc461-ports, CMSSW_5_0_1_patch3, ge20120213-52X-gcc462, daForCMSSW_5_0_1_patch3b-slc5_amd64_gcc461, daForCMSSW_5_0_1_patch3b-slc5_amd64_gcc434, daForCMSSW_5_1_1b-osx106_amd64_gcc462, daForCMSSW_5_1_1b-slc5_amd64_gcc462, da20120213-51X-gcc462, ge20120213-52X-gcc462-lion, ge20120212c-52X-gcc462-lion, daForCMSSW_5_1_1-osx106_amd64_gcc462, daForCMSSW_5_0_1_patch3-slc5_amd64_gcc434, daForCMSSW_5_1_1-slc5_amd64_gcc462, ge20120212b-52X-gcc462-lion, ge20120212-52X-gcc462-lion, ecbForCMSSW_4_2_8_SLHChcal2-slc5_amd64_gcc434, CMSSW_4_1_8_patch8, da20120209-52X-gcc462-lion, da20120209-52X-gcc462, da20120209-52X, CMSSW_5_0_1_patch2-gcc461-ports, CMSSW_5_0_1_patch2, vs20120207-52X, vs20120207a-51X, da20120207b-51X-gcc462, da20120207-51X-gcc462, daForCMSSW_5_0_1_patch2c-slc5_amd64_gcc461, daForCMSSW_5_0_1_patch2c-slc5_amd64_gcc434, daForCMSSW_5_0_1_patch2-slc5_amd64_gcc461, CMSSW_5_2_0_pre4, daForCMSSW_5_0_1_patch2b-slc5_amd64_gcc434, vs20120207-51X, daForCMSSW_5_0_1_patch2-slc5_amd64_gcc434, da20120206-50X-gcc461-ports, da20120206-50X, da20120206-50X-ports, geForCMSSW_5_2_0_pre4-slc5_amd64_gcc461, geForCMSSW_5_2_0_pre4, da20120205-44X-ports, da20120205-44X, da20120205-50X-gcc461-ports, da20120205-50X-ports, da20120205-50X, da20120205-51X, fw20120205-cmssw50x-online, CMSSW_5_0_1_ONLINE, ge20120204-51X-gcc462-lion, ge20120204-51X-gcc462, da20120204-52X-gcc462-lion, da20120204-52X, geForCMSSW_5_2_0_pre2_TS113282_TS115242, CMSSW_4_2_8_SLHCtk, CMSSW_5_0_1_patch1-gcc461-ports, CMSSW_5_0_1_patch1, vskarupeForCMSSW_4_2_8_SLHCtkd, vskarupeForCMSSW_4_2_8_SLHCtkc, da20120201-42X-ports, da20120201-42X, vskarupeForCMSSW_4_2_8_SLHCtkb, vskarupeForCMSSW_4_2_8_SLHCtk, CMSSW_5_0_0_patch2-gcc461-ports, CMSSW_5_0_0_patch2, fw20120202cmssw501online, CMSSW_4_2_8_p7rootfix, fw20120201cmssw501online, ecbFor428slhcstd, da20120130-52X, daFor428p7rootfix-ports, daFor428p7rootfix, CMSSW_5_0_1-ports, CMSSW_5_0_1-gcc461-ports, CMSSW_5_0_1, da20120129-50X-ports, da20120129-50X, da20120129-50X-gcc461-ports, da20120129-52X, ecbFor428slhctk, CMSSW_5_0_0_ONLINE-cms, fw20120127gcc461cmssw500onl, ebFor428slhc1p1, fw20120126gcc461cmssw500onl, CMSSW_5_2_0_pre2_TS113282, daFor520pre2TS113282, daFor520pre2TS113042, fw20120125gcc461cmssw500onl, CMSSW_4_4_3-ports, CMSSW_4_4_3, sm120124-ports, da20120124-52X, da20120123-52X, da20120123-51X, da20120123-50X-ports, da20120123-50X, da20120123-50X-gcc461-ports, da20120123-44X-ports, da20120123-44X, CMSSW_5_0_0_patch1-gcc461-ports, CMSSW_5_0_0_patch1, CMSSW_5_2_0_pre2, daFor520pre2, da20120120-52X, CMSSW_5_2_0_pre1, daFor520pre1, CMSSW_4_4_2_p10JEmalloc, CMSSW_5_1_0_pre2, daFor510pre2, da20120116-52X, da20120112b-51X, da20120112b-52X, da20120112-50X-ports, da20120112-50X, da20120112-50X-gcc461-ports, da20120112-51X, da20120112-52X, CMSSW_5_0_0_ONLINE, da20120110-50X-ports, da20120110-50X, da20120110-50X-gcc461-ports, da20120110-51X, fw20120110gcc461cmssw500onl, da20120110-52X, CMSSW_4_1_8_patch7, da20120109b-51X, da20120109b-52X, da20120109-52X, da20120108-52X-ports, da20120108-52X, da20120108-52X-gcc461-ports, da20120106-52X-ports, da20120106-52X, da20120106-52X-gcc461-ports, sm120105onl500, CMSSW_5_0_0_g4emtest, sm111222a-onlgcc461, sm111222-onlgcc461, CMSSW_4_4_2_patch10-ports, CMSSW_4_4_2_patch10, CMSSW_5_0_0-ports, azFor442patch10gcc451, azFor442patch10, da20111220-50X-ports, da20111220-50X, da20111220-50X-gcc461-ports, da20111219-50X-ports, da20111219-50X, da20111219-50X-gcc461-ports, sjgFor510pre1, CMSSW_5_1_0_pre1-gcc461-ports, sjgFor510pre1d-gcc461-ports, sjgFor510pre1c-gcc461-ports, sjgFor510pre1b-gcc461-ports, daFor510pre1c-gcc461-ports, sjgFor500-ports, CMSSW_5_0_0-gcc461-ports, CMSSW_5_0_0, sjgFor500-gcc461-ports, sjgFor500, daFor510pre1b-gcc461-ports, az20111214-50X-gcc461-ports, az20111214-50X-ports, az20111214-50X, CMSSW_4_2_8_SLHChcal, CMSSW_4_4_2_patch9-ports, CMSSW_4_4_2_patch9, vsFor442patch9gcc451, vsFor442patch9, ecbFor428slhchcal, vs20111213-50X-ports, vs20111213-50X, daFor510pre1-gcc461-ports, sjgFor510pre1-gcc461-ports, fwFor500pre7-online, CMSSW_4_4_2_patch8-ports, CMSSW_4_4_2_patch8, CMSSW_5_0_0_pre7pythia424, sjgFor500pre7p424b, sjgFor500pre7p424, CMSSW_4_1_8_patch6, CMSSW_5_0_0_pre7, CMSSW_5_0_0_pre7-gcc461-ports, sjgFor500pre7-ports, sjgFor500pre7-gcc461-ports, sjgFor500pre7, da20111206b-50X-gcc461-ports, da20111206-50X-gcc461-ports, da20111205-50X-ports, da20111205-50X-gcc461-ports, da20111205-50X, sjg20111204b-50X, sjg20111204-50X, da20111202-50X-ports, da20111202-50X-gcc461-ports, da20111202-50X, vs20111201-50X-ports, da20111201f-50X-gcc461-ports, da20111201e-50X-gcc461-ports, vs20111201c-50X, vs20111201temp-50X, da20111201d-50X-gcc461-ports, vs20111201b-50X, CMSSW_4_2_4_g94p03c, da20111201c-50X-gcc461-ports, vs20111201-50X, da20111201c-50X-ports, da20111201b-50X-ports, da20111201b-50X-gcc461-ports, da20111201b-50X, da20111201-50X-gcc461-ports, da20111201-50X, vs20111130-42X-ports, vs20111130-42X, vs20111130-44X-ports, vs20111130-44X, da20111130-50X-ports, da20111130-50X-gcc461-ports, da20111130-50X, CMSSW_4_2_8_SLHC1, CMSSW_4_2_8_SLHC2, CMSSW_5_0_0_pre6g494, da20111128-50X-ports, da20111128-50X-gcc461-ports, da20111128-50X, sjgFor500pre6gcc494, az20111126-50X-gcc461-ports, az20111126-50X-ports, az20111126-50X, sm20111126-50X-gcc461-ports, sm20111126-50X-ports, sm20111126-50X, az20111125-50X-ports, az20111125-50X-gcc461-ports, az20111125-50X, az20111124-50X-ports, az20111124-50X-gcc461-ports, az20111124-50X, az20111123-50X-gcc461-ports, az20111123-50X-ports, az20111123-50X, CMSSW_4_4_2_patch7-ports, CMSSW_4_4_2_patch7, azFor442patch7gcc451, azFor442patch7gcc434, CMSSW_4_1_8_patch5, azFor418patch5, ecbFor428slhc1, CMSSW_5_0_0_pre6, CMSSW_5_0_0_pre6-ports, CMSSW_5_0_0_pre6-gcc461-ports, ecbFor428slhc2, sjgFor500pre6-ports, sjgFor500pre6-gcc461-ports, sjgFor500pre6, sm20111121-50X-gcc461-ports, sm20111121-50X, sm20111121-50X-ports, az20111121-50X-ports, CMSSW_4_4_2_patch6-ports, CMSSW_4_4_2_patch6, az20111118b-50X-gcc461-ports, az20111118b-50X-ports, az20111118-50X-ports, azFor442patch6gcc451, azFor442patch6gcc434, sm20111118-50X-gcc461-ports, az20111117b-50X-gcc461-ports, az20111117b-50X-ports, az20111117b-50X, az20111117-50X-gcc461-ports, az20111117-50X-ports, az20111117-50X, az20111116-50X-gcc461-ports, az20111116-50X-ports, az20111116-50X, CMSSW_4_4_2_onlpatch2_ONLINE, az20111115b-50X-gcc461-ports, az20111115b-50X-ports, az20111115-50X-gcc461-ports, az20111115-50X-ports, sm111115-onlgcc461, az20111115-50X, CMSSW_4_1_8_patch4, az20111110-42X-ports, CMSSW_5_0_0_pre5_root532rc1, azFor500pre5r532rc1, az20111111b-50X, az20111111-50X, CMSSW_4_4_2_patch5-ports, CMSSW_4_4_2_patch5, azFor442patch5gcc451, azFor442patch5gcc434, CMSSW_4_4_2_patch4-ports, CMSSW_4_4_2_patch4, azFor442patch4gcc451, azFor442patch4gcc434, az20111110-42X, az20111109b-44X, az20111109b-44X-ports, az20111109-44X-ports, az20111109-44X, CMSSW_4_4_2_patch3-ports, CMSSW_4_4_2_patch3, azFor442patch3gcc451, azFor442patch3gcc434, sjg111108-50X-gcc461-ports, az20111108-50X-gcc461-ports, az20111108-50X-ports, az20111108-50X, CMSSW_4_2_3_SLHC4_patch1, CMSSW_4_4_2_patch2-ports, CMSSW_4_4_2_patch2, CMSSW_5_0_0_pre5-ports, CMSSW_5_0_0_pre5, CMSSW_5_0_0_pre5-gcc461-ports, sjgFor500pre5-50X-gcc461-ports, sjgFor500pre5-ports, sjgFor500pre5, CMSSW_4_4_2_patch1-ports, CMSSW_4_4_2_patch1, azFor442patch1gcc451, azFor442patch1gcc434, CMSSW_4_1_8_patch3, fwFor500pre4-online, az20111102b-50X-ports, az20111102b-50X-gcc461-ports, az20111102b-50X, az20111102-50X, CMSSW_4_4_2_onlpatch1_ONLINE, CMSSW_4_4_2_ONLINE, az20111031-42X-ports, az20111031-42X, az20111031c-50X-gcc461-ports, az20111031c-50X-ports, az20111031c-50X, az20111031b-50X, az20111031-50X, ebFor423slhc4p1, CMSSW_4_4_2-ports, CMSSW_4_4_2, az20111027c-50X-gcc461-ports, azFor442gcc451, azFor442gcc434, CMSSW_5_0_0_pre4-gcc461-ports, CMSSW_5_0_0_pre4-ports, CMSSW_5_0_0_pre4, az20111027b-50X-gcc461-ports, az20111027b-50X-ports, az20111027b-50X, az20111027-50X-gcc461-ports, az20111027-50X-ports, az20111027-50X, sjgFor500pre4-gcc461-ports, sjgFor500pre4-ports, sjgFor500pre4, az20111026-50X-gcc461-ports, az20111026-50X-ports, az20111026-50X, az20111025-50X-gcc461-ports, az20111025-50X-ports, az20111025-50X, sm20111025-50X-ports, sm20111025-50X-gcc461-ports, sm20111025-50X, CMSSW_4_2_9_HLT3_onlpatch4_ONLINE, az20111024-50X-gcc461-ports, az20111024-50X-ports, az20111024-50X, az20111022-50X, sjg111021c-50X-gcc461-ports, sjg111021b-50X-ports, sjg111021b-50X-gcc461-ports, sjg111021d-50X, sjg111021c-50X, sjg111021-50X-gcc461-ports, sjg111021-50X-ports, sjg111021b-50X, sjg111021-50X, CMSSW_4_2_9_HLT3_onlpatch3_ONLINE, az20111020-50X-gcc461-ports, CMSSW_4_4_0_patch4-ports, CMSSW_4_4_0_patch4, azFor440patch4gcc451, azFor440patch4gcc434, CMSSW_5_0_0_pre3, CMSSW_5_0_0_pre3-gcc461-ports, CMSSW_5_0_0_pre3-ports, CMSSW_4_1_8_patch2, sjgFor500pre3-gcc461-ports, sjgFor500pre3-ports, sjgFor500pre3, sjgFor500pre2d-gcc461-ports, sjgFor500pre2c-gcc461-ports, sjgFor500pre2b-gcc461-ports, az20111014b-50X-gcc461-ports, az20111014-50X-ports, az20111014-50X, CMSSW_4_4_1_ONLINE, az20111014-50X-gcc461-ports, CMSSW_4_2_9_HLT3_hltpatch3, CMSSW_4_4_1-ports, CMSSW_4_4_1, sjgFor500pre2-gcc461-ports, az20111012-50X-ports, az20111012-50X, azFor441gcc451, azFor441gcc434, az20111011c-50X-gcc461-ports, az20111011b-50X-gcc461-ports, az20111011b-50X-ports, az20111011b-50X, az20111011a-50X-gcc461-ports, az20111011a-50X-ports, az20111011a-50X, az20111011-50X, az20111010-50X-gcc461-ports, CMSSW_4_2_9_HLT3_onlpatch2_ONLINE, CMSSW_5_0_0_pre2, CMSSW_5_0_0_pre2-ports, sjgFor500pre2-ports, sjgFor500pre2, CMSSW_4_4_0_patch3-ports, CMSSW_4_4_0_patch3, CMSSW_4_2_8_patch6, CMSSW_4_2_8_patch6-ports, azFor440patch3gcc451, azFor440patch3gcc434, az20111007-50X-gcc461-ports, az20111007-50X-ports, az20111007-50X, CMSSW_4_4_0_patch2-ports, CMSSW_4_4_0_patch2, azFor440patch2gcc451, azFor440patch2gcc434, az20111005-50X-gcc461-ports, az20111004a-50X-gcc461-ports, az20111004-50X-gcc461-ports, CMSSW_4_2_4_g94p02, CMSSW_4_2_4_g93p01, CMSSW_4_2_9_HLT3_hltpatch1, CMSSW_4_2_9_HLT3_hltpatch2, az20111003-50X-gcc461-ports, CMSSW_4_2_9_HLT3_onlpatch1_ONLINE, CMSSW_4_2_9_HLT3_ONLINE, CMSSW_4_4_0_patch1-ports, CMSSW_4_4_0_patch1, azFor440patch1gcc451a, azFor440patch1gcc434a, azFor440patch1gcc451, azFor440patch1gcc434, CMSSW_4_2_8_patch5-ports, CMSSW_4_2_8_patch5, az20110930a-50X-gcc461-ports, az20110930-50X-gcc461-ports, ge20110930-gcc461-ports, CMSSW_5_0_0_pre1-ports, CMSSW_4_2_9_HLT3-ports, CMSSW_4_2_9_HLT3, az20110929a-50X-gcc461-ports, sjgFor500pre1-ports, az20110929-50X-ports, az20110929-50X-gcc461-ports, ge20110929-gcc461-ports, az20110928a-50X-gcc461-ports, az20110928a-50X-ports, az20110928a-50X, az20110928-50X-gcc461-ports, az20110928-50X-ports, az20110928-50X, az20110928-50X-461-ports, az20110926-50X-ports, az20110926a-50X-gcc461-ports, az20110926-gcc461-ports, ge20110926-gcc461-ports, CMSSW_5_0_0_pre1, sjgFor500pre1b, sjgFor500pre1, az20110922c-50X, ge20110923-gcc461-ports, CMSSW_4_4_0-ports, CMSSW_4_4_0, az20110922c-50X-ports, azFor440gcc451, azFor440gcc434, az20110922b-50X-ports, az20110922b-50X, ge20110922b-gcc461-ports, CMSSW_4_2_9_HLT2_hltpatch1, az20110922a-50X-ports, az20110922a-50X, az20110922-50X, ge20110922-gcc461-ports, ge20110921-gcc461-ports, CMSSW_4_2_9_HLT2_onlpatch1_ONLINE, CMSSW_4_2_9_HLT2_ONLINE, az20110921-44X-ports, az20110921-44X, CMSSW_4_2_9_HLT2, CMSSW_4_2_9_HLT2-ports, az20110920-50X-ports, az20110920-50X, ge20110919-gcc461, az20110918-50X-ports, az20110918-50X, az20110916c-50X-ports, az20110916c-50X, az20110916b-50X, az20110916a-50X, az20110916-50X, CMSSW_4_2_8_patch4-ports, CMSSW_4_2_8_patch4, CMSSW_4_2_9_HLT1_patch1-ports, CMSSW_4_2_9_HLT1_patch1, az20110914-44X-ports, az20110914-44X, ge20110914-gcc461, az20110913-44X-ports, az20110913-44X, az20110912-50X-ports, az20110912-50X, CMSSW_4_2_9_HLT1_ONLINE, az20110912-44X-ports, az20110912-44X, sm20110912-50X-ports, sm20110912-50X, CMSSW_4_4_0_pre10_ONLINE, fwFor440pre10online, CMSSW_4_4_0_pre10-ports, CMSSW_4_4_0_pre10, azFor440pre10gcc451, azFor440pre10gcc434, az20110909b-44X-ports, az20110909b-44X, az20110909a-44X-ports, az20110909a-44X, az20110909-44X-ports, az20110909-44X, az20110908-50X-ports, az20110908-50X, az20110907c-50X, az20110907c-50X-ports, CMSSW_4_1_8_patch1, az20110907b-50X, sjgFor418p1a, sjgFor418p1, az20110906b-44X, az20110906a-44X, sm20110907-50X-ports, sm20110907-50X, az20110906a-50X-ports, az20110906-44X-ports, az20110906-44X, az20110906-50X-ports, az20110904-50X-ports, az20110904-50X, az20110902b-50X-ports, az20110902b-50X, az20110902a-50X, az20110902-50X-ports, az20110902-50X, CMSSW_4_2_8_patch3-ports, CMSSW_4_2_8_patch3, azFor428patch3gcc451, azFor428patch3gcc434, az20110831-50X-ports, az20110831-50X, ebFor423slhc2p1, CMSSW_4_4_0_pre9, CMSSW_4_4_0_pre9-ports, azFor440pre9gcc451, azFor440pre9gcc434, az20110827-50X-ports, az20110827-50X, CMSSW_4_2_9_HLT1_hltpatch1-ports, CMSSW_4_2_9_HLT1_hltpatch1, az20110826b-50X-ports, az20110826b-50X, az20110826a-50X, az20110826-50X, CMSSW_4_2_7_hinpatch1_ONLINE, az20110825-50X-ports, az20110825-50X, CMSSW_4_1_8_FWLITE, CMSSW_4_1_8, azFor418gcc434, az20110823-50X-ports, az20110823-50X, CMSSW_4_2_8_patch2-ports, CMSSW_4_2_8_patch2, az20110821-44X-ports, az20110821-44X, CMSSW_4_2_9_HLT1-ports, CMSSW_4_2_9_HLT1, az20110818a-50X-ports, az20110818a-50X, az20110818-50X-ports, az20110818-50X, CMSSW_4_2_9_HLT-ports, CMSSW_4_2_9_HLT, sm20110816-42X, sm20110816-42X-ports, CMSSW_4_4_0_pre8-ports, CMSSW_4_4_0_pre8, azFor440pre8gcc451, azFor440pre8gcc434, sjg110813b-50X-ports, sjg110813b-50X, sjg110813a-50X-ports, sjg110813a-50X, CMSSW_4_2_7_onlpatch3_ONLINE, CMSSW_4_2_7_hltpatch3, CMSSW_4_1_7_patch3, az20110809b-50X-ports, az20110809b-50X, az20110809a-50X, az20110809a-44X-ports, az20110809a-44X, az20110809-50X-ports, az20110809-50X, az20110809-44X-ports, az20110809-44X, CMSSW_4_2_8_patch1-ports, CMSSW_4_2_8_patch1, CMSSW_4_4_0_pre7_g494p02-ports, CMSSW_4_4_0_pre7_g494p02, azFor440p7g494p02-g451, azFor440p7g494p02, az20110804-44X-ports, az20110804-44X, sjg110804-50X-ports, sjg110804-50X, sjg110803-50X-ports, sjg110803-50X, az20110802-42X-ports, az20110802-42X, CMSSW_4_1_7_patch2, CMSSW_4_4_0_pre7-ports, CMSSW_4_4_0_pre7, azFor440pre7gcc451, azFor440pre7gcc434, az20110801-44X, az20110801-44X-ports, CMSSW_4_4_0_pre6-ports, CMSSW_4_4_0_pre6, azFor440pre6gcc451, azFor440pre6gcc434, az20110729-44X-ports, az20110729-44X, CMSSW_4_2_8-ports, CMSSW_4_2_8, CMSSW_4_2_7_onlpatch2_ONLINE, CMSSW_4_2_7_hltpatch2, azFor428gcc451, azFor428gcc434, DBS_2_1_6-pre1, az20110726a-44X-ports, az20110726a-44X, az20110726-44X-ports, az20110726-44X, az20110725c-44X-ports, az20110725c-44X, az20110725b-44X-ports, az20110725b-44X, az20110725a-44X-ports, az20110725-44X-ports, az20110725a-44X, az20110725-44X, az20110723a-44X-ports, az20110723a-44X, az20110723-44X, CMSSW_4_2_7_hltpatch1, az20110720-42X-ports, az20110720-42X, CMSSW_4_2_7_patch2, CMSSW_4_2_7_patch2-ports, azFor427patch2gcc451, azFor427patch2gcc434, CMSSW_4_4_0_pre5-ports, CMSSW_4_4_0_pre5, azFor440pre5gcc451, azFor440pre5gcc434, az20110718-42X-ports, az20110718-42X, az20110715a-44X-ports, az20110715a-44X, az20110715-44X, CMSSW_4_2_7_patch1, CMSSW_4_2_7_patch1-ports, azFor427patch1g451, azFor427patch1, az20110714a-44X-ports, az20110714a-44X, az20110714-44X-ports, az20110714-44X, CMSSW_4_2_7_onlpatch1_ONLINE, CMSSW_4_2_7_ONLINE, CMSSW_4_2_7-ports_FWLITE, CMSSW_4_2_7-ports, CMSSW_4_2_7_FWLITE, CMSSW_4_2_7, azFor427g451, azFor427g434, az20110713a-44X-ports, az20110713a-44X, az20110713-44X, ebFor423slhc4, CMSSW_4_1_7_patch1, az20110712c-44X-ports, az20110712c-44X, az20110712b-44X-ports, az20110712a-44X, az20110712-42X-ports, az20110712-42X, ge20110712-44X-ports, az20110712-44X-ports, az20110712-44X, CMSSW_4_2_6_onlpatch1_ONLINE, az20110711-43X-ports, az20110711-43X, ge20110711-44X, ge20110711-44X-ports, ge20110710b-44X, ge20110710b-44X-ports, ge20110710-44X, ge20110710-44X-ports, ge20110709b-44X-ports, ge20110709-44X-ports, ge20110708-44X-ports, CMSSW_4_4_0_pre4-ports_FWLITE, CMSSW_4_4_0_pre4-ports, CMSSW_4_4_0_pre4_FWLITE, CMSSW_4_4_0_pre4, azFor440p4g451, azFor440p4g434, CMSSW_4_3_0_dqmpatch2-ports, CMSSW_4_3_0_dqmpatch2, sjgFor430dqmp2-ports, sjgFor430dqmp2, CMSSW_4_2_6_ONLINE, CMSSW_4_2_6-ports_FWLITE, CMSSW_4_2_6-ports, CMSSW_4_2_6_FWLITE, CMSSW_4_2_6, az20110706-44X-ports, az20110706-44X, azFor426gcc451, azFor426gcc434, az20110705-42X-ports, az20110705-42X, az20110701-44X-ports, az20110701-44X, CMSSW_4_4_0_pre3-ports, CMSSW_4_4_0_pre3, azFor440pre3gcc451, azFor440pre3gcc434, CMSSW_4_3_0_dqmpatch1-ports, CMSSW_4_3_0_dqmpatch1, az20110629-44X-ports, az20110629-44X, sjgFor430dqmp1, sjgFor430dqmp1-ports, sjfFor430dqmp1-ports, sjfFor430dqmp1, az20110627a-44X-ports, az20110627-44X-ports, az20110627-44X, CMSSW_4_3_0-ports, CMSSW_4_3_0, sjgFor430-ports, sjgFor430, CMSSW_4_4_0_pre2_FWLITE, CMSSW_4_4_0_pre2, CMSSW_4_4_0_pre2-ports_FWLITE, CMSSW_4_4_0_pre2-ports, azFor440pre2gcc451, azFor440pre2gcc434, CMSSW_4_2_5_hltpatch1, CMSSW_4_2_5_onlpatch1_ONLINE, CMSSW_4_2_5_ONLINE, fwFor425online, sm20110622a-44X-ports, sm20110622a-43X-ports, sm20110622a-43X, sm20110622a-44X, CMSSW_4_2_4_hltpatch1, sm20110622-43X-ports, sm20110622-43X, sm20110622-44X-ports, sm20110622-44X, CMSSW_4_2_5, CMSSW_4_2_5-ports, CMSSW_4_1_7, sm20110621-42X-ports, sm20110621-42X, sjgFor425b-ports, sjgFor425b, sjg110620a, sm20110620-42X-ports, sm20110620-42X, sjgFor425-ports, sjgFor425, sm20110620-44X, sm20110620-44X-ports, fw20110617-41X, sm20110616-44X-ports, sm20110616-44X, CMSSW_4_4_0_pre1-ports, CMSSW_4_4_0_pre1, az20110615-43X-ports, az20110615-43X, azFor20110615-43X, azFor20110615-43X-ports, azFor440pre1gcc451, azFor440pre1, sm20110615-43X-ports, sm20110615-43X, sm20110615-42X-ports, sm20110615-42X, sjgFor430pre6dqmIO-ports, sjgFor430pre6dqmIO, sm20110614b-44X-ports, sm20110614b-44X, sm20110614a-44X-ports, sm20110614a-44X, sm20110614-44X-ports, sm20110614-44X, sm20110607a-44X, sm20110607a-44X-ports, CMSSW_4_3_0_pre7, CMSSW_4_3_0_pre7-ports, sjgFor430pre6dp1, sjgFor430pre6dp1-ports, sjgFor430pre7, sjgFor430pre7-ports, sm20110610-44X-ports, sm20110610-44X, sm20110609-43X-ports, sm20110609-43X, CMSSW_4_2_4_patch1-ports, CMSSW_4_2_4_patch1, sm20110608-44X-ports, sm20110608-44X, fwFor424online3, fwFor424online2, sm20110607-44X, sm20110607-44X-ports, sm20110606a-ports, CMSSW_4_2_4_onlpatch1_ONLINE, CMSSW_4_2_4_ONLINE, fwFor424online, sm20110606a, CMSSW_4_2_3_SLHC3, sm20110606, CMSSW_4_2_4-ports_FWLITE, CMSSW_4_2_4-ports, CMSSW_4_2_4_FWLITE, CMSSW_4_2_4, azFor424fgcc451, azFor424fgcc434, azFor424g434, ebFor423slhc3, az20110601-for42X-ports, az20110601-for42X, azFor424agcc451, azFor424agcc434, CMSSW_4_2_3_SLHC2, azFor424gcc451, for423SLHC2, azFor424gcc434, CMSSW_4_1_6_patch1, CMSSW_4_1_6, CMSSW_4_2_3_patch5-ports, CMSSW_4_2_3_patch5, azFor423patch5gcc451, azFor423patch5gcc434, azFor423patch4agcc434, CMSSW_4_2_3_patch4-ports, CMSSW_4_2_3_patch4, azFor423patch4gcc451, azFor423patch4gcc434, CMSSW_4_3_0_pre6, CMSSW_4_3_0_pre6-ports, sjgFor430pre6-ports, sjgFor430pre6, sm20110528-for42X-ports, sm20110528-for42X, sm20110528-for43X, sm20110528-for43X-ports, sm20110527-for43X-ports, CMSSW_4_2_3_patch3-ports, CMSSW_4_2_3_patch3, azFor423patch3gcc451, azFor423patch3gcc434, sm20110523a-for43X-ports, sm20110523a-for43X, sm20110523-for43X, sm20110523-for43X-ports, CMSSW_4_2_3_onlpatch4_ONLINE, sm20110516-for43X-ports, sm20110516-for43X, CMSSW_4_2_3_patch2-ports, CMSSW_4_2_3_patch2, azFor423patch2gcc451, azFor423patch2gcc434, sjg110514a-for43x-ports, sjg110514a-for43x, sm20110514a-for43X-ports, sm20110514a-for43X, ge20110514-for43X-ports, sm20110514-for43X, sm20110514-for43X-ports, CMSSW_4_2_3_onlpatch3_ONLINE, sjg110513a-for43X-ports, sjg110513a-for43X, CMSSW_4_2_3_onlpatch2_ONLINE, azFor423onlpatch2, CMSSW_4_3_0_pre5-ports, CMSSW_4_3_0_pre5, sjgFor430pre5, sjgFor430pre5-ports, CMSSW_4_2_3_patch1, CMSSW_4_2_3_patch1-ports, azFor423patch1gcc451, azFor423patch1gcc434, CMSSW_4_2_3_SLHC_pre1, ebFor423slhcPre1, CMSSW_4_2_3_onlpatch1_ONLINE, CMSSW_4_2_3_ONLINE, fwFor423online, sm20110509a-for43X, sm20110509a-for43X-ports, sm20110509-for43X, CMSSW_4_2_2_patch2, CMSSW_4_2_2_patch2-ports, fwFor416, fwFor416sherpa123, CMSSW_4_2_3, CMSSW_4_2_3_FWLITE, CMSSW_4_2_3-ports_FWLITE, CMSSW_4_2_3-ports, azFor423gcc434_fwlite, azFor423g451, azFor423gcc451, azFor423gcc434, sm20110505-for42X-ports, sm20110505-for42X, sm20110504-for43X, sm20110504-for43X-ports, sm20110504-for42X-ports, sm20110504-for42X, sm20100504-ports, sm20100504, CMSSW_4_3_0_pre4-ports_FWLITE, CMSSW_4_3_0_pre4_FWLITE, CMSSW_4_3_0_pre4-ports, CMSSW_4_3_0_pre4, CMSSW_4_2_2_patch1-ports, CMSSW_4_2_2_patch1, azFor430pre4gcc451, azFor430pre4gcc434, CMSSW_4_2_1_patch2-ports, CMSSW_4_2_1_patch2, azFor421patch2gcc451, azFor421patch2gcc434, CMSSW_4_2_2_SLHC_pre1, pe20110427a-for43X-ports, pe20110427a-for43X, pe20110426a-for43X-ports, pe20110426a-for43X, ebFor422slhcPre1, CMSSW_4_2_2-ports_FWLITE, CMSSW_4_2_2_FWLITE, CMSSW_4_2_2-ports, CMSSW_4_2_2, azFor422gcc451, azFor422gcc434, azFor422g451, azFor422g434, CMSSW_4_2_1_patch1-ports, CMSSW_4_2_1_patch1, CMSSW_4_1_4_patch3, azFor421patch1gcc451a, azFor421patch1gcc434a, CMSSW_4_1_5, CMSSW_4_1_4_patch2, azFor421patch1gcc451, azFor421patch1gcc434, azFor421patch1g451, azFor421patch1g434, pe20110420b-for43X-ports, pe20110420b-for43X, pe20110420a-for43X, sjg110420a-ports, sjg110420a, pe20110419a-for43X-ports, pe20110419a-for43X, pe20110418a-for43X-ports, pe20110418a-for43X, CMSSW_4_3_0_pre3, CMSSW_4_3_0_pre3-ports, sjgFor430pre3-ports, sjgFor430pre3, sjg110417a-for43X-ports, sjg110417a-for43X, sm20110415-for43X, sm20110415-for43X-ports, CMSSW_4_2_1-ports_FWLITE, CMSSW_4_2_1-ports, CMSSW_4_2_1_FWLITE, CMSSW_4_2_1, azFor421g451, azFor421g434, CMSSW_4_1_4_onlpatch1_ONLINE, CMSSW_4_1_4_ONLINE, fwFor414p2, pe20110413a-for43X-ports, pe20110413a-for43X, fwFor414online, sm110412-for43X, pe20110412a-for43X, pe20110411a-for43X, CMSSW_4_1_4_patch1, sm110408, CMSSW_4_2_0-ports_FWLITE, CMSSW_4_2_0_FWLITE, CMSSW_4_3_0_pre2, CMSSW_4_2_0-ports, CMSSW_4_2_0, azFor420g451-fwlite, azFor420g434-fwlite, azFor420p434-fwlite, azFor420gcc451, azFor420gcc434, azFor420g451, azFor420g434, CMSSW_4_3_0_pre2-ports, CMSSW_4_1_4, sjgFor430pre2-ports, sjgFor430pre2, pe20110331b-for43X-ports, pe20110331b-for43X, pe20110331a-for43X-ports, pe20110331a-for43X, fwFor413op1, ge20110430-for43X-ports, CMSSW_4_1_3_patch3, CMSSW_4_1_2_patch2, pe20110328a-for43X-ports, pe20110328a-for43X, CMSSW_4_2_0_pre8_FWLITE, sjgFor430pre1-fwlite, CMSSW_4_3_0_pre1-ports, CMSSW_4_3_0_pre1, azFor420p8_fwlite, sjgFor430pre1-ports, pe20110324b-for43X-ports, pe20110324b-for43X, fwFor413xdaq11b6online, CMSSW_4_1_3_ONLINE, sjgFor430pre1, fwFor413p2, pe20110324a-for43X-ports, pe20110324a-for43X, CMSSW_4_2_0_pre8-ports, CMSSW_4_2_0_pre8, azFor420p8g451, azFor420p8g434, CMSSW_4_1_3_patch1, fwFor412op1, fwFor413online, pe20110318b-for4XY-ports, CMSSW_4_1_3, pe20110318a-for4XY-ports, fwFor413, pe20110317a-for4XY-ports, pe20110317a-for4XY, pe20110315a-for4XY-ports, pe20110315a-for4XY, ebFor363slhc3p1, azFor420p7g434_fwlite, azFor420p7_fwlite, sm110311fwlite, pe20110310a-for4XY-ports, CMSSW_3_11_3, pe20110310a-for4XY, CMSSW_4_2_0_pre7-ports, CMSSW_4_2_0_pre7, azFor420p7g451, azFor420p7g434, CMSSW_4_1_2_patch1, CMSSW_4_1_1_onlpatch2_ONLINE, pe20110307a-for4XY-ports, pe20110307a-for4XY, CMSSW_4_1_2_ONLINE, pe20110303-for412-ports, CMSSW_4_1_2, CMSSW_4_1_1_onlpatch1_ONLINE, CMSSW_4_1_1_ONLINE, CMSSW_4_2_0_pre6-ports, CMSSW_4_2_0_pre6, DQMGUI_5_4_0, azFor420p6g451, azFor420p6g434, fwFor411online, pe20110301-for412, CMSSW_3_11_2, CMSSW_4_1_1, pe20110228a-for4XY-ports, pe20110228a-for4XY, CMSSW_3_11_1_hclpatch1, sjgFor3111hclp1, sjgFor3111hcalp1, CMSSW_4_1_0_pre3-ports, CMSSW_4_1_0_pre3, pe20110225a-for311X, pe20110225b-for4XY-ports, pe20110225b-for4XY, pe20110225a-for4XY-ports, pe20110225a-for4XY, CMSSW_3_11_1_hltpatch1, CMSSW_3_11_1_patch3, pe20110223a-for4XY-ports-osx, pe20110223a-for4XY-ports, pe20110223a-for4XY, CmsTC_0_0_4, CMSSW_3_9_9_patch1, apFor399p1v0, fwFor410pre2online, CMSSW_3_11_1_onlpatch1_ONLINE, CMSSW_4_2_0_pre5-ports, CMSSW_4_2_0_pre5, CMSSW_3_9_9, azFor420p5g451a, fwFor3111op1-online, azFor420p5g451, azFor420p5g434, azFor420pre5gcc451a, azFor420pre5gcc451, azFor420pre5gcc434, apFor399v0, CMSSW_3_6_3_SLHC3, ebFor363slhc3, CMSSW_3_11_1_patch2, CMSSW_4_1_0_pre2, pe20110215-for410p2, CMSSW_4_2_0_pre4-ports, CMSSW_4_2_0_pre4, azFor420pre4gcc451, azFor420pre4gcc434, azFor420p4g451, azFor420p4g434, pe20110213a-for4XY-ports, pe20110213a-for4XY, CMSSW_3_11_1_patch1, CMSSW_4_2_0_pre3-ports, CMSSW_4_2_0_pre3, sjgFor3111p1b, sjgFor3111p1, azFor420pre3gcc451, azFor420pre3gcc434, DQMGUI_5_3_2b, pe20110210a-for4XY-ports, pe20110210a-for4XY, DQMGUI_5_3_2a, CMSSW_3_11_1_ONLINE, CMSSW_3_11_1, fwFor3111, CMSSW_3_9_8_patch2, apFor398p2v0, ebFor363slhc2, pe20110208a-for4XY, pe20110208a-for4XY-ports, pe20110207b-for4XY-ports, pe20110207b-for4XY, pe20110207a-for4XY, CMSSW_4_2_0_pre2-ports, CMSSW_4_2_0_pre2, azFor420pre2gcc434c, azFor420pre2gcc434b, azFor420pre2gcc451, CMSSW_4_1_0_pre1, azFor420pre2gcc434, pe20110205-for410p1, CMSSW_3_9_8_patch1, apFor398p1v0, pe20110203a-for4XY-ports, pe20110203a-for4XY, CMSSW_3_9_8, pe20110203-for410p1, pe20110202a-for311X, pe20110202a-for4XY-ports, pe20110202a-for4XY, apFor398v0, CMSSW_3_6_3_SLHC1_patch3, fw20110201-41X-online, pe20110131b-for4XY-ports, pe20110131b-for4XY, pe20110131a-for4XY-ports, pe20110131a-for4XY, ebFor363slhc1pat3, fw20110131-311x-online, CMSSW_3_11_0_pre5r52706bT2, CMSSW_3_11_0_ONLINE, fw20110128-311X-online, CMSSW_4_2_0_pre1-ports, CMSSW_4_2_0_pre1, CMSSW_3_6_3_SLHC1_patch2, CMSSW_3_11_0, azFor420pre1gcc451, azFor420pre1g451n, azFor420pre1g434, pe20110127a-for311X-ports, pe20110127a-for311X, azFor420pre1g451, azFor420pre1, fw20110127a-311X, fw20110127-311X, fwFor3110, pe20110126b-for311X-ports, pe20110126b-for311X, fw20110126a-311X-online, fw20110126a-311X-ports, smFor398a, smFor398, pe20110126a-for311X-ports, pe20110126a-for311X, sm110126a, sm110126, fw20110126-311X-online, ebFor363slhc1pat2, sm110125, pe20110125-for3110p5r52706bT2, pe20110124b-311X-ports, pe20110124b-311X, pe20110124a-311X, fw20110122-311X-ports, fw20110122-311X-online, pe20110122b-311X-ports, pe20110122a-311X-ports, pe20110122a-311X, CMSSW_3_11_0_pre5_ONLINE, fw20110121b-311X-ports, fw20110121b-311X-online, pe20110121-for3110p5r52706b, fw20110121a-311X-ports, fw20110121a-311X-online, fw20110121-311X-ports, fw20110121-311X-online, fw20110121, pe20110120b-311X, pe20110120a-311X-ports, pe20110120a-311X, fw20110120b-311X-ports, fw20110120b-311X-online, CMSSW_3_10_1, CMSSW_3_11_0_pre5-ports, CMSSW_3_11_0_pre5, fw20110120a-311X-ports, fw20110120a-311X-online, fw20110120-311X-online, fw20110119-311X-online, smFor3101, fwFor3110pre5-online, fwFor3110pre5-ports, CMSSW_3_10_0_pre9G493, fwFor3110pre5, pe20110118b-311X-ports, pe20110118b-311X, pe20110118a-311X, CMSSW_3_11_0_pre4, fwFor3110pre4online, pe20110117c-311X-ports, pe20110117b-311X-ports, pe20110117c-311X, fwFor3110pre4, fw20110117-for311X, pe20110117a-311X-ports, pe20110117b-311X, sm110117, fwFor3100xdaq11b4online, pe20110112d-for311X, pe20110112c-for311X-ports, CMSSW_3_9_5_xdaq11b4_ONLINE, CMSSW_3_8_7_patch2, sjgFor387p2b, sjgFor387p2, pe20110112b-for311X-ports, pe20110112a-for311X-ports, pe20110112a-for311X, pe20110111b-for311X, pe20110111a-ports, pe20110110-ports, sm110110-for311X, pe20110107e-for311Xrb, pe20110107d-for311Xrb, pe20110107c-for311Xrb, CMSSW_3_11_0_pre3, pe20110106b-for311Xrb, smFor3110pre3a, smFor3110pre3, pe20110106a-for311Xrb, pe20110105e-for311Xrb, pe20110105d-for311Xrb, pe20110105c-for311Xrb, pe20110105b-for311Xrb, pe20110105a-for311Xrb, pe20101230-311XAB, CMSSW_3_11_0_pre2, pe20101229-for311X, fwFor311pre2, CMSSW_3_10_0, CMSSW_3_9_7, smFor3100c, apFor397v0, CMSSW_3_9_6, pe20101221a-for3100p9io, smFor3100b, apFor396v0, smFor3100a, smFor3100, pe20101217b-for3100p9io, pe20101217a-for3100p9io, CMSSW_3_8_7_patch1, pe20101217a-for310Xrb, CMSSW_3_11_0_pre1, fwFor311pre1, smFor3100pre9G493, CMSSW_3_10_0_pre9r52706b, pe20101215-for3100p9r52706b, pe20101215a-for310Xrb, pe20101214b-for310Xrb, CMSSW_3_10_0_pre9, pe20101214a-for310Xrb, smFor3100pre9a, pe20101213a-for310Xrb, smFor3100pre9, CMSSW_3_9_5_patch2, apFor395p2v0, CMSSW_3_10_0_pre8, pe20101208c-for310Xrb, pe20101208b-for310Xrb, pe20101208a-for310Xrb, smFor3100pre8, smFor310X-101207, smFor310X-101206b, smFor310X-101206ab, smFor310X-101206a, smFor310X-101206, pe20101206-for3100pre7r52706b, CMSSW_3_10_0_pre7g494c1, CMSSW_3_9_5_patch1, apFor395p1v0, smFor3100pre7G494C1a, pe20101203-root52706b, DQMGUI_5_3_2, pe20101202a-for310Xrb, dsr20101201fwlite387, CMSSW_3_10_0_pre7io, azFor3100pre7io-a, smFor3100pre7io-a, azFor3100pre7io-Updated, smFor3100pre7G494C1, azFor3100pre7io, smFor3100pre7io, CMSSW_3_10_0_pre7, pe20101130a-for310Xrb, smFor3100pre7, smFor310X-101130, CMSSW_3_8_7, smFor310X-101129, dsr20101129fwlite394, CMSSW_3_9_5_ONLINE, CMSSW_3_9_5, CMSSW_3_10_0_pre6, smFor3100pre6, apFor395v0, sjg101126b, sjg101126a, pe20101125f-for310Xrb, pe20101125e-for310Xrb, pe20101125d-for310Xrb, pe20101125c-for310Xrb, pe20101125b-for310Xrb, pe20101125a-for310Xrb, CMSSW_3_9_4, smFor310X-101123, apFor394v0, smFor39X-101123, for310X-101122a, CMSSW_3_8_6_patch2, sjgFor386p2, CMSSW_3_9_1_onlpatch4_ONLINE, CMSSW_3_9_1_onlpatch3_ONLINE, for310X-101122, sjg101122b, sjg101122a, CMSSW_3_10_0_pre5, CMSSW_3_9_3_ONLINE, azFor3100p5, CMSSW_3_9_3, apFor393v0, pe20101114a-for310Xrb, CMSSW_3_10_0_pre4r52706, pe20101112b-for3100p4r52706, pe20101112-for3100p4r52706, smFor310X-101111, pe20101111a-for310Xrb, CMSSW_3_9_2_patch5, CMSSW_3_10_0_pre4, CMSSW_3_9_2_patch4, azFor3100pre4-Updated, azFor3100pre4, ge20101109, smFor392p4, CMSSW_3_8_6_patch1, pe20101108d-for310Xrb, sjgFor386p1, pe20101108c-for310Xrb, pe20101108b-for310Xrb, CMSSW_3_9_2_patch3, apFor392p3v0, pe20101108a-for310Xrb, CMSSW_3_9_2_patch2, apFor392p2v0, smFor310-101106, pe20101105b-for310Xrb, pe20101105a-for310Xrb, CMSSW_3_9_2_patch1, apFor392p1v0, CMSSW_3_9_1_onlpatch2_ONLINE, CMSSW_3_9_1_onlpatch1_ONLINE, pe20101104c-for310Xrb, pe20101104b-for310Xrb, smFor310-101104, CMSSW_3_9_2, pe20101104a-for310Xrb, apFor392v0, sjgFor392, CMSSW_3_10_0_pre3, pe20101103e-for310Xrb, CMSSW_3_8_6, azFor3100p3a, pe20101103d-for310Xrb, pe20101103c-for310Xrb, pe20101103b-for310Xrb, smFor386a, azFor3100p3, pe20101103a-for310Xrb, pe20101102e-for310Xrb, CMSSW_3_9_1_patch1, pe20101102d-for310Xrb, smFor391patch1, pe20101102c-for310Xrb, pe20101102b-for310Xrb, pe20101102a-for310Xrb, CMSSW_3_9_1_ONLINE, smFor391onl, CMSSW_3_9_1, smFor391, pe20101029a-for310Xrb, apFor391v1, apFor391v0, ebFor363slhc1pat1v0, smFor386, CMSSW_3_10_0_pre2, pe20101028a-for310Xrb, smFor3100pre2, CMSSW_3_8_5_patch3, apFor385p3v0, pe20101025c-for310Xrb, pe20101025b-for310Xrb, pe20101025a-for310Xrb, CMSSW_3_8_5_onlpatch4_ONLINE, CMSSW_3_8_5_onlpatch3_ONLINE, CMSSW_3_10_0_pre1, smFor3100pre1, CMSSW_3_8_5_patch2, sjgFor385p2, CMSSW_3_8_5_patch1, sjgFor385p1, eskFor3XYpreZ, CMSSW_3_9_0, apFor390v0, CMSSW_3_8_5_onlpatch1_ONLINE, CMSSW_3_8_5_ONLINE, fw385online, pe20101011f-for39Xrb, pe20101011e-for39Xrb, pe20101011d-for39Xrb, pe20101011c-for39Xrb, pe20101011b-for39Xrb, pe20101011a-for39Xrb, CMSSW_3_8_1_onlpatch7_ONLINE, pe20101008c-for39Xrb, pe20101008b-for39Xrb, pe20101008a-for39Xrb, CMSSW_3_9_0_pre7, CMSSW_3_8_4_patch4, sjfFor384p4, apFor390pre7v0, sm39Xtoolconf-101007, CMSSW_3_8_5, sjgFor385, sm39Xtoolconf-101005, pe20101005a-for39Xrb, pe20101004a-for39Xrb, DQMGUI_5_3_1, CMSSW_3_9_0_pre6, CMSSW_3_8_1_onlpatch6_ONLINE, apFor390pre6v0, smFor390pre6toolconf-101001, pe20101001b-for39Xrb, pe20101001a-for39Xrb, pe20100930c-for39Xrb, CMSSW_3_8_4_patch3, pe20100930b-for39Xrb, pe20100930a-for39Xrb, sjgFor384patch3v3, sjgFor384patch3v2, sjgFor384patch3, smFor390pre6toolconf-100929, smFor390pre6toolconf, smFor385toolconf, sm100928a, pe20100925a-for39Xrb, CMSSW_3_9_0_pre5, apFor390pre5v0, pe20100924b-for39Xrb, pe20100924a-for39Xrb, pe20100923c-for39Xrb, pe20100923b-for39Xrb, pe20100923a-for39Xrb, CMSSW_3_8_4_patch2, bhFor384p2, CMSSW_3_8_4_patch1, bhFor384p1, pe20100922b-for39Xrb, pe20100922a-for39Xrb, CMSSW_3_9_0_pre4, CMSSW_3_8_4, bhFor384, CMSSW_3_8_1_onlpatch5_ONLINE, apFor390pre4v0, CMSSW_3_8_3, pe20100912-for39X, bhFor383, apFor383v1, apFor383v0, CMSSW_3_8_1_onlpatch4_ONLINE, pe20100908b-for39Xrb, pe20100908a-for39Xrb, pe20100907c-for39Xrb, pe20100907b-for39Xrb, pe20100907a-for39Xrb, pe20100906a-for39Xrb, CMSSW_3_8_2_patch1, bhFor382p1, CMSSW_3_6_3_SLHC1, pe20100902a-for39Xrb, CMSSW_3_8_1_onlpatch3_ONLINE, pe20100901b-for39Xrb, fc20100901b, fc20100901a, pe20100901a-for39Xrb, CMSSW_3_9_0_pre3, sm100901a, CMSSW_3_8_1_onlpatch2_ONLINE, CMSSW_3_8_1_onlpatch1_ONLINE, CMSSW_3_8_1_patch4, bhFor381patch4, sm390p3toolconf, pe20100830c-for39Xrb, pe20100830b-for39Xrb, pe20100830a-for39Xrb, pe20100829a-for39Xrb, pe20100827a-for39Xrb, sm100826a, pe20100826a-for39Xrb, pe20100825b-for39Xrb, pe20100825a-for39Xrb, pe20100824c-for39Xrb, pe20100824b-for39Xrb, sm100824a, pe20100824a-for39Xrb, CMSSW_3_8_2, bhFor382, sm39XPoolLess, sm100823a, CMSSW_3_8_1_patch3, smFor381patch3, pe20100819a-for390p2r52704, CMSSW_3_6_1_patch7, pe20100817a-for390p2r52704, smFor361patch7, dsr20100816fwlite381, dsr20100816fwlite371, CMSSW_3_9_0_pre2, CMSSW_3_8_1_ONLINE, for390pre2, dsr20100812fwlite371, CMSSW_3_6_3_hltpatch4, CRABSERVER_1_1_3_pre2_BUILD_SLC5, CMSSW_3_8_1_patch2, bhFor381p2, for390p2tools1, for390pre2tools, sm100811b, sm100811a, sm20100810a, CRABSERVER_1_1_3_pre1_BUILD_SLC5, CMSSW_3_8_1_patch1, bhFor381patch1, fw381online, CMSSW_3_7_1, CMSSW_3_8_1, bhFor381, fw371, dsr20100805fwlite363, CMSSW_3_6_3_onlpatch4_ONLINE, CMSSW_3_8_0_patch2, bhFor380patch2, smFor363patch2, fw380online, fw380online_3, fw380online_2, CMSSW_3_9_0_pre1, fw380online_0, apFor390pre1v0, pe20100727a-for39X, FRONTEND_CONF_3_30_20100724, FRONTEND_CONF_3_29_20100723, CMSSW_3_6_3_onlpatch3_ONLINE, CMSSW_3_8_0_patch1, bhFor380patch1, ge20100722-rpm-osx-64-bit, CMSSW_3_8_0, bhFor380, CMSSW_3_6_1_patch6, apFor361p6v0, CMSSW_3_8_0_pre8, bhFor380pre8, CMSSW_3_6_3_patch1, apFor363p1v0, CMSSW_3_6_3_onlpatch2_ONLINE, CMSSW_3_8_0_pre7, bhFor380pre7, CMSSW_3_7_0_patch4, CMSSW_3_8_0_pre6, smFor370patch4, CMSSW_3_7_0_patch3, bhFor380pre6, CMSSW_3_8_0_pre5ssl, pe20100624b-for38Xssl, pe20100624a-for38Xssl, CMSSW_3_8_0_pre5, CMSSW_3_6_1_patch5, smFor370patch3, pe20100623a-for38Xssl, smFor361patch5, apFor380pre5v0, ge20100621-bootstrap-rpm-4-8-macosx, CRABSERVER_1_1_2_py26_BUILD_SLC5, CRABSERVER_1_1_2_BUILD_SLC5, CMSSW_3_8_0_pre4catfix, bhFor380pre4catfix, bhFor380pre4_cat_fix, CMSSW_3_8_0_pre4, bhFor380pre4, CMSSW_3_8_0_pre3, CMSSW_3_6_3_onlpatch1_ONLINE, bhFor380pre3, CMSSW_3_6_3_ONLINE, CMSSW_3_6_3, apFor363v0, pe20100612a-gcc45-from380p2, CRABSERVER_1_1_2_pre1_BUILD_SLC5, ge20100611-apt-rpm-4-8-gcc-4-5-0, MotT0_1_0_15, CMSSW_3_8_0_pre2, MotT0_1_0_14, CMSSW_3_7_0_patch2, smFor370p2, bhFor380_pre2, MotT0_1_0_13, pe20100606a-for38X, CMSSW_3_6_2_ONLINE, fw361online_test5, CMSSW_3_6_2, MotT0_1_0_12, MotT0_1_0_11, MotT0_1_0_10, CMSSW_3_7_0_patch1, MotT0_1_0_9, MotT0_1_0_8, smFor370patch1, MotT0_1_0_6, MotT0_1_0_5, apFor362v1, apFor362v0, CMSSW_3_8_0_pre1, MotT0_1_0_4, MotT0_1_0_3, apFor380pre1v0, MotT0_1_0_2, MotT0_1_0_1, MotT0_1_0_0, MotT0_100531_1, CRABSERVER_1_1_2_beta_BUILD_SLC5, fw361online_test4, CRABSERVER_1_1_2_beta_BUILD_SLC4, CMSSW_3_6_1_patch4, MotT0_100528_1, apFor361p4v0, fw361online_test3, CMSSW_3_7_0, smFor370, dsr20100526fwlite361, fw361online_test2, CMSSW_3_6_1_patch3, fw361online_test1, apFor361p3v0, CMSSW_3_5_7_hltpatch4, apFor357hltp4v0, CMSSW_3_7_0_pre5g493ref04, CMSSW_3_6_1_patch2, apFor361p2v0, ge20100521b-new-rpm, ge20100521-new-rpm, pe20100521-for37X-newG4, DQMGUI_5_2_1c, DQMGUI_5_2_1, pe20100519a-for37X, ge20100519-new-apt, CMSSW_3_7_0_pre5, smFor370pre5, CMSSW_3_6_1_patch1, apFor361p1v2, apFor361p1v1, apFor361p1v0, T0Mon_100518_1, CMSSW_3_5_8_patch4, apFor358p4v3, apFor358p4v2, apFor358p4v1, apFor358p4v0, DQMGUI_5_2_0, CMSSW_3_7_0_pre4, sm370pre4, sm100511a, pe20100511b-for37X, pe20100511a-for37X, sm100511, CMSSW_3_6_1, pe20100510b-for37X, pe20100510a-for37X, apFor361v1, apFor361v0, fw360online_test5, fw360online_test4, fw360online_test3, sm100507pftrack, fw360online_test2, fw360online_test1, sm100506, sm100505a, sm100505, CMSSW_3_7_0_pre3, for370pre3, CMSSW_3_6_0_patch2, apFor360p2v0, CMSSW_3_6_0_patch1, apFor360p1v2, apFor360p1v1, apFor360p1v0, CMSSW_3_5_8_patch3, apFor358p3v0, T0Mon_100503_1, CMSSW_3_5_8_patch2, apFor358p2v0, CMSSW_3_5_8_patch1, apFor358p1v1, apFor358p1v0, CMSSW_3_5_7_onlpatch2_ONLINE, CMSSW_3_7_0_pre2, for370pre2, ge20100427-rpm-on-linux, CMSSW_3_5_8, CMSSW_3_5_7_onlpatch1_ONLINE, CMSSW_3_5_7_ONLINE, apFor358v0, ge20100422-rpm-4-8-0, CMSSW_3_5_4_onlpatch4_ONLINE, CMSSW_3_7_0_pre1, smFor370pre1, pe20100420a-for37X, pe20100419b-for37X, pe20100419a-for37X, pe20100419a-for36X-37X, pe20100419a-gcc45-from360, CMSSW_3_6_0, fwFor357online, pe20100416a-for36X, CMSSW_3_5_7, apFor357v2, apFor357v1, pe20100414b-gcc45-from360p6, pe20100414-gcc45-from360p6, apFor357v0, pe20100410-gcc45-from360p6, CMSSW_3_6_0_pre6, pe20100409b-for36X, pe20100409a-for36X, CMSSW_3_6_0_pre5io, pe20100408a-for36Xio, CMSSW_3_5_6_patch1, for356p1, CRABSERVER_1_1_1_BUILD_SLC4, CMSSW_3_6_0_pre5, pe20100401a-for36X, pe20100330a-for36X, CMSSW_3_5_4_patch2, CMSSW_3_5_6, for356, pe20100329a-for36X, for354p2, CRABSERVER_1_1_1_BUILD_SLC5, dsr20100326fwlite355osx, dsr20100326fwlite355, CMSSW_3_5_5, CMSSW_3_6_0_pre4, pe20100324a-for36X, dg20100323-prodagent, CMSSW_3_5_4_onlpatch3_ONLINE, apFor355v0, pe20100321a-for36X, CMSSW_3_5_4_patch1, for354patch1, CMSSW_3_5_4_onlpatch2_ONLINE, CMSSW_3_5_4_onlpatch1_ONLINE, CMSSW_3_5_4_ONLINE, T0Mon_100316_1, CMSSW_3_6_0_pre3, DQMGUI_5_1_8, pe20100313a-for36X, pe20100312a-for36X, pe20100311a-for36X, fwFor354onl, CMSSW_3_5_4, apFor354v0, T0Mon_100308_2, T0Mon_100308_1, CRABSERVER_1_1_1_pre12_BUILD_SLC5, pe20100307a-for36X, pe20100305e-for36X, pe20100305d-for36X, pe20100305c-for36X, pe20100305b-for36X, CMSSW_3_5_3_ONLINE, pe20100305-for36X, fwFor353onl, CMSSW_3_5_3, CRABSERVER_1_1_1_pre10_BUILD_SLC5, CMSSW_3_6_0_pre2, apFor353v0, CRABSERVER_1_1_1_pre9_BUILD_SLC4, DAS_20100302_slc5_amd64_gcc434, sm100302a-for35X, sm100302b-for36X, sm100302a-for36X, wmtFor360pre2, fc20100228, pe20100228a-for36X, CMSSW_3_5_2_patch2, apFor352p2v0, CMSSW_3_5_2_patch1, apFor352p1v0, DBS_20100226_slc5_amd64_gcc434, fwFor352onl, CMSSW_3_5_1_onlpatch1_ONLINE, CMSSW_3_6_0_pre1, pe20100223c-for36X, pe20100223b-for36X, CRABSERVER_1_1_1_pre9_BUILD_SLC5, pe20100223a-for36X, CMSSW_3_5_2, apFor352v0, CRABSERVER_1_1_1_pre8_BUILD_SLC5, apFor351p2v0, CRABSERVER_1_1_1_pre7_BUILD_SLC5, CRABSERVER_1_1_1_pre7_BUILD_SLC4, CMSSW_3_5_1_patch1, for351patch1, CMSSW_3_5_1_ONLINE, DBS_20100217_slc5_amd64_gcc434, FILEMOVER_20100217_slc5_amd64_gcc434, FRONTEND_CONF_3_24_20100217, DAS_20100217_slc5_amd64_gcc434, dsr20100216fwlite350, DAS_20100216b_slc5_amd64_gcc434, CRABSERVER_1_1_1_pre6_BUILD_SLC4, CRABSERVER_1_1_1_pre6_BUILD_SLC5, CMSSW_3_5_1, T0Mon_100216_1, DAS_20100216_slc5_amd64_gcc434, forFrontend-3, pe20100216b-for36Xmin, pe20100216a-for36X, apFor351v0, ge20100215-rootqt-r522, ge20100215-rootqt-pre5r526, CMSSW_3_3_6_patch6, CMSSW_3_5_0_pre5r526, sm100215, ge20100212-boost, ge20100112-boost, T0Mon_100210_1, dsr20100209fwlite342, T0Mon_100204_4, DQMGUI_5_1_7b, CMSSW_3_5_0_patch1, CMSSW_3_4_2_patch1, T0Mon_100204_3, for350patch1, for342patch1, T0Mon_100204_2, CRABSERVER_1_1_1_pre5_BUILD_SLC5, CRABSERVER_1_1_1_pre5_BUILD_SLC4, CMSSW_3_5_0_ONLINE, CMSSW_3_4_2, fwFor350online, CMSSW_3_5_0, apFor350v0, CMSSW_3_3_6_patch5, pe20100205a-for35X, T0Mon_100204_1, apFor336p5v1, eskFor342, pe20100204a-for35X, DQMGUI_5_1_7, DQMGUI_5_1_6, CMSSW_3_3_6_patch4, apFor336p5v0, for341op1-onl-slc5, dg20100201-dbs3, FILEMOVER_20100201_slc5_amd64_gcc434, CMSSW_3_5_0_pre5_ONLINE, FILEMOVER_20100128b_slc5_amd64_gcc434, dg20100129-dbs3, for350p5-onl-slc5, pe20100131c-for35Xr526, pe20100131b-for35Xr526, pe20100131a-for35Xr526, CMSSW_3_5_0_pre5g493, pe20100130b-for35Xg493, pe20100130-for35Xg493, CMSSW_3_5_0_pre5, for350p4-onl-slc5, pe20100129a-for35X, CMSSW_3_5_0_pre4, for336patch4, apFor350pre5v0, dg20100128-dbs3, FILEMOVER_20100128_slc5_amd64_gcc434, sm100128a, sm100128, apFor350pre4v0, DAS_20100127_slc5_amd64_gcc434, pe20100127e-for35X, pe20100127d-for35X, T0Mon_100127_1, pe20100127c-for35X, sm100127-onl35x, CMSSW_3_4_1_ONLINE, pe20100127b-for35X, pe20100127a-for35X, DAS_20100126_slc5_amd64_gcc434, sm100126, pe20100124a-for35X, ap20100123a-for35X, DBS-APP_20100122_slc4, FILEMOVER_20100122_slc5_amd64_gcc434, DBS-APP_20100121_slc4, CRABSERVER_1_1_1_pre4_BUILD_SLC5, CRABSERVER_1_1_1_pre4_BUILD_SLC4, DBS-WEB_20100120_slc4, DBS-APP_20100120_slc4, CRABSERVER_1_1_1_pre3_BUILD_SLC5_1, CRABSERVER_1_1_1_pre3_BUILD_SLC4, CRABSERVER_1_1_1_pre3_BUILD_SLC5, CRABSERVER_1_1_1_pre3_BUILD_OK, DAS_20100119_slc5_amd64_gcc434, CS_1_1_1_slc4_1_BUILD, DBS-APP_20100118_slc4, DBS-WEB_20100118_slc4, CMSSW_3_3_3_TSG, CMSSW_3_5_0_pre3, CS_1_1_1_test1_SLC4_BUILD, CS_1_1_1_test1_BUILD, DAS_20100115_slc5_amd64_gcc434, dg20100115-security, CS_1_1_1_slc5_BUILD, DBS_20100115_slc5_amd64_gcc434, CS_1_1_1_slc4_BUILD, ds20100115_cs_SLC5_workOK, apFor350pre3v0, sm100115-333tsg, DBS-APP_20100114_slc4, DBS-WEB_20100113_slc4, pe20100113a-for35X, sm20100113a-for35X, sm20100113-for35X, pe20100112b-for35X, dg20100112-security, DBS_20100112_slc5_amd64_gcc434, sm20100112a-for35X, sm20100112-for35X, pe20100112-for35X, DBS_20100111_slc5_amd64_gcc434, dg20100111-security, CS_SLC5_test_4, dg20100107b-wmcore, dg20100107-wmcore, dsr20100107fwlite341, sm100107a, sm100106a, DAS_20100105_slc5_amd64_gcc434, sm100105c, sm100105b, pe20100105a-for34X-for35X, ge20100105-pyqt-relocatable-build, sm100105a, CRABSERVER_CS_SLC5_test_3_BUILD, pe20091227a-ports, DAS_20091221_slc5_amd64_gcc434, CMSSW_3_5_0_pre2, CMSSW_3_4_1, apFor350pre2v2, apFor350pre2v1, apFor350pre2v0, eskFor341, dg20091218c-crabserver, dg20091215c-crabserver, dg20091218b-crabserver, dg20091218-crabserver, CMSSW_3_3_6_patch3, apFor336p3v0, CRABSERVER_1_1_1_pre3_BUILD, CRABSERVER_1_1_1_pre2_BUILD, pe20091216b-for34X-for35X, pe20091216a-for34X-for35X, CMSSW_3_4_0, dg20091215b-crabserver, ge20091214b-new-bootstrap, ge20091214a-new-bootstrap, ge20091214-new-bootstrap, DAS_20091214_slc5_amd64_gcc434, ge20091214-fix-rh5x, dg20091215-crabserver, CMSSW_3_5_0_pre1, CMSSW_3_3_6_patch1, apFor350pre1v0, eskFor336ptch1, eskFor340, dg20091211-couchdb, dg20091210-phedex, DQMGUI_5_1_5, pe20091209b-for34X-for35X, dg20091203c-comp-base, pe20091209a-for34X-for35X, DD_20091208_slc5_amd64_gcc434, DAS_20091208_slc5_amd64_gcc434, FILEMOVER_20091208_slc5_amd64_gcc434, DBS_20091208_slc5_amd64_gcc434, CMSSW_3_3_6, CMSSW_3_3_6_slc5-gcc434, apFor336v0-slc5-gcc434, apFor336v0, CMSSW_3_3_5_patch4, CMSSW_3_3_5_patch4_slc5-gcc434, apFor335p4v0-slc5-gcc434, apFor335p4-slc5-gcc434, apFor335p4v0, CMSSW_3_3_5_patch3, CMSSW_3_3_5_patch3_slc5-gcc434, apFor335p3v0-slc5-gcc434, apFor335p3v0, CMSSW_3_4_0_pre7, eskFor340p7-slc5-gcc434, CMSSW_3_3_5_patch2_slc5-gcc434, CMSSW_3_3_5_patch2, dg20091203b-comp-base, dg20091203-comp-base, CMSSW_3_3_3_onlpatch5_ONLINE, CRABSERVER_1_1_1_pre1_BUILD, apFor335p2v0-slc5-gcc434, apFor335p2v0, CMSSW_3_3_5_patch1_slc5-gcc434, DAS_20091202, pe20091201a-for34X-slc5-gcc434, CMSSW_3_3_5_patch1, apFor335pat1v2-slc5-gcc434, apFor335pat1v2, apFor335pat1v1, apFor335pat1v1-slc5-gcc434, apFor335pat1v0-slc5-gcc434, apFor335pat1v0, DQMCATTEST_0_0_1, lsFor335patch1, lsFOR335patch1v0, pe20091130b-for34X-slc5-gcc434, pe20091130a-for34X-slc5-gcc434, CMSSW_3_3_5_slc5-gcc434, CMSSW_3_3_5, FILEMOVER_20091118, CMSSW_3_3_3_onlpatch4_ONLINE, apFor335v0, apFor335v0-sl5igcc4, pe20091126a-for33X-slc4-gcc345, pe20091126a-for33X-slc5-gcc434, DBS-APPS_20090929, CMSSW_3_1_6, bhFor316v0, CMSSW_3_3_3_onlpatch2_ONLINE, CMSSW_3_3_3_onlpatch3_ONLINE, pe20091120c-for34X-slc5-gcc434, CMSSW_3_4_0_pre6, pe20091120b-for34X-slc5-gcc434, pe20091120a-for34X-slc5-gcc434, DQMGUI_5_1_5_pre1, pe20091119b-for34X-slc5-gcc434, DQMGUI_5_1_4, pe20091119a-for34X-slc5-gcc434, CMSSW_3_3_4_slc5-gcc434, CMSSW_3_3_4, eskFor340p6-slc5-gcc434, apFor334v0-sl5igcc4, apFor334v0, pe20091117a-fromDAS_20090709, DAS_20091117, CMSSW_3_3_3_DQM, pe20091116b-fromDAS_20090709, apFor333dqmv0, CRABSERVER_1_1_0_BUILD, pe20091116a-fromDAS_20090709, pe20091116a-for34X-slc5-gcc434, CMSSW_3_3_3_patch1, CMSSW_3_3_3_slc5-gcc434, lmFor333pat1v0, CMSSW_3_3_3_ONLINE, fw20091114b, fw20091114a, pe20091114a-for34X-slc5-gcc434, ap20091114a, fw20091114, ap20091114, CMSSW_3_3_3, pe20091113c-for34X-slc5-gcc434, pe20091113c-for33X-slc5-gcc434, CMSSW_3_1_5, pe20091113b-for33X-slc5-gcc434, pe20091113a-for33X-slc5-gcc434, pe20091113a-for33X-slc4-gcc345, apFor333v1-sl5igcc4, apFor333v1-sl4igcc4, apFor333v1, apFor333v0_sl5igcc4, apFor333v0_sl4igcc4, apFor333v0, CMSSW_3_3_2_ONLINE-slc5, bhFor315v0, bhFor314v0, sm091112c-slc5onl, sm091112b-slc5onl, sm091112a-slc5onl, sm091112-slc5onl, T0Mon_091111_1, pe20091110c-34X-slc5-gcc434, pe20091110c-34X-slc4-gcc432, pe20091110c-for33X-slc5-gcc434, pe20091110c-for33X-slc4-gcc432, pe20091110c-for33X-slc4-gcc345, pe20091110b-for33X-slc5-gcc434, pe20091110b-for33X-slc4-gcc345, pe20091110b-for33X-slc4-gcc432, pe20091110a-for33X-slc5-gcc434, pe20091110a-for33X-slc4-gcc432, pe20091110a-for33X-slc4-gcc345, CRABSERVER_1_1_0_pre7_BUILD, CMSSW_3_3_2_onlpatch2_ONLINE, CMSSW_3_3_2_ONLINE, CMSSW_3_3_2_onlpatch1_ONLINE, pe20091109a-for33X-slc4-gcc345, pe20091108c-34X-slc5-gcc434, pe20091108c-34X-slc4-gcc432, pe20091108b-34X-slc5-gcc434, pe20091108b-34X-slc4-gcc432, pe20091108a-34X-slc4-gcc432, ap20091107-slc5onl, CMSSW_3_4_0_pre5-slc5-gcc434, pe20091106a-34X-slc5-gcc434, pe20091106a-34X-slc4-gcc432, CMSSW_3_4_0_pre5-slc4-gcc432, CMSSW_3_4_0_pre4-slc4-gcc432, CMSSW_3_4_0_pre5-slc4_gcc432, dl091106, BUILDBOT_01, DQMGUI_5_1_3, DQMGUI_5_1_2, CERNOIDv02, DAS_20091104, pe20091103d-34X-slc5-gcc434, pe20091103d-34X-slc4-gcc432, pe20091103c-34X-slc5-gcc434, pe20091103c-34X-slc4-gcc432, pe20091103b-slc4-gcc432, ap-20091103a-slc5onl-bootstrap, pe20091103a-slc5-gcc434, pe20091103a-slc4-gcc432, pe20091103a--slc4-gcc432, pe20091103a-for34X, ap-20091103-slc5onl-bootstrap, DQMGUI_5_1_1, CRABSERVER_1_1_0_pre6_BUILD, ge20091102-qt-conf, CMSSW_3_3_2_FWLITE-slc5-gcc434, apFor332fwlv1, apFor332fwlv1-slc5-gcc434, apFor332fwlv0, eskFor340p4, CMSSW_3_3_2-slc5-gcc434, CMSSW_3_3_2-slc4-gcc432, CMSSW_3_3_2, DQMGUI_5_1_0, pe20091031a-for34X, apFor332v0_sl4igcc4, apFor332v0_sl5igcc4, apFor332v0, pe20091030a-for34X, DBS-WEB_20091021, CMSSW_3_4_0_pre3, CouchDB_0_10_0, eskFor340p3, apFor331fwlv1-slc5gcc434, apFor331fwlv1, apFor331fwlv0, sm091023b-slc5onl, sm091023a-slc5onl, CMSSW_3_3_1-slc5-gcc434, CMSSW_3_3_1-slc4-gcc432, CMSSW_3_3_1, CMSSW_3_3_0_onlpatch2_ONLINE, CMSSW_3_2_7_onlpatch6_ONLINE, for330op2, for327op6, pe20091022a-ports, pe20091022a-ports5, pe20091022a-for33X, CMSSW_3_3_0_onlpatch1_ONLINE, pe20091021a-ports5, pe20091021a-ports, CMSSW_3_2_7_onlpatch5_ONLINE, pe20091021a-for33X, CMSSW_3_2_7_onlpatch4_ONLINE, CMSSW_3_4_0_pre2-432, CMSSW_3_4_0_pre1-432, CMSSW_3_4_0_pre2, CRABSERVER_1_1_0_pre5_BUILD, pe20091018a-ports5, ge20091019, sm327op4, sm340p2, CMSSW_3_2_8, DAS_20091016, CERNOIDv01, ge20091015-comp-bootstrap, CMSSW_3_3_0-slc5, CMSSW_3_3_0-432, DAS_20091014, WMCORE-before-refactor, CMSSW_3_3_0_ONLINE, sm091013a, DBS-WEB_20091012, sm091012c, sm091012b, sm091012a, CMSSW_3_2_7_onlpatch3_ONLINE, CMSSW_3_3_0, eskFor328, apFor330v0, pe20091009a-for33X, pe20091008d-ports5, pe20091008d-ports, pe20091008d-for33X, pe20091008c-ports5, ge20091008-fix-rpm-relocation, CMSSW_3_4_0_pre1, pe20091008b-ports5, pe20091008a-ports5, sm091007a, ge20091010-bootstrap, CRABSERVER_1_1_0_pre4_BUILD, pe20091006e-ports5, ge20091006-bootstrap-3, pe20091006d-ports5, ge20091006-bootstrap-2, CMSSW_3_3_0_pre6-432, pe20091006c-ports5, ge20091006, pe20091006b-ports5, pe20091006a-ports5, pe20091006a-ports, pe20091006a-for33X, CMSSW_3_1_4, CRABSERVER_1_1_0_pre3_BUILD, CMSSW_3_3_0_pre6, apFor330pre6v0, PerfSuiteDB_20090930, CRABSERVER_1_0_10_BUILD, pe20090929a-ports, pe20090929a-for33X, ge20090929-amd64, ge20090929-ia32, ap20090929a-ports, ap20090929a-for33X, ap20090929-for33X, CMSSW_3_3_0_pre5-432, CMSSW_3_2_7_onlpatch2_ONLINE, sm090928a, CMSSW_3_3_0_pre5, apFor330pre5v0, pe20090925a-ports, pe20090925a-for33X, pe20090924b-for33X, CRABSERVER_1_0_10_pre1_BUILD, pe20090924a-ports, pe20090924a-for33X, CMSSW_3_1_3, pe20090923b-for33X, pe20090923b-ports, CMSSW_3_2_7_onlpatch1_ONLINE, CMSSW_3_2_7_ONLINE, sm090923a, pe20090923a-ports, pe20090923a-for33X, pe20090922e-ports, pe20090922e-for33X, pe20090922d-ports, pe20090922c-ports, pe20090922c-for33X, pe20090922b-ports, pe20090922a-ports, pe20090922a-for33X, ge20090922-ports, sm090922a, CMSSW_3_2_7, pe20090921d-ports, pe20090921d-for33X, ge20090921-ports, pe20090921c-ports, pe20090921c-for33X, pe20090921b-for33X, DBS-WEB_20090921, pe20090921a-ports, CMSSW_3_3_0_pre4, apFor330pre4v0, eskFor327, pe20090918a-ports, webconddb173, condapp173, CRABSERVER_1_1_0_pre2_BUILD, PerfSuiteDB_20090916, webconddb172, condapp172, pe20090912a-ports-xdaq, pe20090911a-ports-xdaq, CMSSW_3_3_0_pre3, pe20090910-fromDAS_20090709, FILEMOVER_20090910, apFor330pre3v0, pe20090907a-ports, pe20090907a-for33X, CMSSW_3_3_0_pre2, apFor330pre2v1, apFor330pre2v0, CMSSW_3_2_6, PerfSuiteDB_20090904_almost_stable, CRABSERVER_1_1_0_pre1_BUILD, pe20090904a-ports, pe20090904a-for33X, DBS-WEB_20090817, PerfSuiteDB_20090904, pe20090903b-for33X, eskFor326, pe20090903b-ports, pe20090903a-ports, pe20090903-for33X, FILEMOVER_20090828, PerfSuiteDB_20090901, DBS-APPS_20090706, CMSSW_3_3_0_pre1, CMSSW_3_2_1_onlpatch6_ONLINE, sm090829a, T0Mon_090828_1, forHEARTBEATr04, esk090827, pe20090827a-ports, pe20090827a-33X, pe20090826a-33X, CMSSW_3_2_1_onlpatch5_ONLINE, pe20090826a-ports, RPMVERIFY_0_2, sm090826a, forHEARTBEATr01, T0Mon_090822_1, CMSSW_3_2_5, smFor325v0, eskFor325, CMSSW_3_2_1_onlpatch4_ONLINE, sm090818a, webconddb171, condapp171, WEBTOOLS_APPS_20090817, CMSSW_3_2_4_ONLINE, sm090813e, CMSSW_3_2_4_patch1, CMSSW_3_2_4, sm090813d, sm090813c, sm090813b, sm324p1a, sm090813a, CMSSW_3_2_1_onlpatch3_ONLINE, sm090810a, CMSSW_3_2_1_onlpatch2_ONLINE, sm090806a, DBS-APPS_20090804, CMSSW_3_2_3, apFor323v1, apFor323v0, DQMGUI_5_0_2, DQMGUI_5_0_1, DQMGUI_5_0_0, DBS-APPS_20090730, DAS_20090709, CMSSW_3_2_1_onlpatch1_ONLINE, CMSSW_3_2_2_patch2, apFor321onlp1v1, apFor321onlp1v0, apFor322patch2v0, CRABSERVER_1_0_9_BUILD, CMSSW_3_2_2_patch1, apFor322pa1v0, CMSSW_3_2_2, CMSSW_3_1_2, CMSSW_3_2_1-432, apFor322v0, dl090723, CRABSERVER_1_0_9_pre3_BUILD, pe20090722b-31Xports-432, pe20090722a-31Xports-432, CRABSERVER_1_0_9_pre2_BUILD, CRABSERVER_1_0_9_pre1_BUILD, CRABSERVER_1_0_9_pre1, CMSSW_3_2_1_ONLINE, CMSSW_3_2_1, sm090721b, sm090721a, apFor321v0, sm090720b, sm090720a, apFor320onlv1, apFor320onlv0, CMSSW_3_2_0, apFor320v1, apFor320v0, CMSSW_3_1_1_patch1, sm090716a_off, CMSSW_3_1_1_onlpatch3_ONLINE, sm090716a, T0Mon_090715_1, CMSSW_3_1_1_onlpatch2_ONLINE, sm090715c, sm090715b, sm090715a, CMSSW_3_ONLINE_BOOTSTRAP, sm090709a, CMSSW_3_1_1_onlpatch1_ONLINE, sm090708g, CMSSW_3_1_1_ONLINE, CMSSW_3_1_1_reallyThisTime, sm090708f, sm090708e, sm090708d, sm090708c, sm090708b, CMSSW_3_1_0_ONLINE2, sm090708a, CMSSW_3_1_1, dl090707, pe20090707c-31Xports-432, pe20090707b-31Xports-432, pe20090707a-31Xports-432, pe20090706b-31Xports-432, pe20090706a-31Xports-432, CMSSW_3_1_0_onlpatch1_ONLINE, sm090703a, CMSSW_2_2_13_offpatch1, apFor2213offpatch1v0, CMSSW_3_1_0_patch1, pe20090701a-31Xports-432, CMSSW_3_1_0_ONLINE, sm090701b, CMSSW_3_1_0, sm090701a, CMSSW_3_1_0_pre11, DAS_20090607, CMSSW_2_2_13_FWLITE, apFor2213fwlitev0, CRABSERVER_1_0_8_BUILD, DBS-WEB_20090618, CRABSERVER_1_0_8_pre7_BUILD, webconddb170, condapp170, dl090623, CRABSERVER_1_0_8_pre6_BUILD, CMSSW_3_1_0_pre10_ONLINE, sm090621b, sm090621a, sm090620b, sm090620a, sm090619e, sm090619d, DBS-APPS_20090619, sm090619c, sm090619b, sm090619a, sm090618a, CRABSERVER_1_0_8_pre5_BUILD, CMSSW_3_1_0_pre10-432, pe20090616a-31Xports-432, pe20090615a-31Xports-432, T0Mon_090612_1, CMSSW_3_1_0_pre10, dl090611, DBS-APPS_20090608, CMSSW_3_1_0_pre9, pe20090611c-31Xports-432, pe20090611b-31Xports-432, T0Mon_090611_1, pe20090611a-31Xports-432, pe20090610d-31Xports-432, CRABSERVER_1_0_8_pre4_BUILD, pe20090610c-31Xports-432, pe20090610b-31Xports-432, pe20090610a-31Xports-432, T0Mon_090610_1, CMSSW_2_2_13_HLT, apFor2213hltv0, CMSSW_2_2_13, apFor2213v0, DBS-APPS_20090604_1, DAS_20090604, DBS-APPS_20090604, pe20090604a-31Xports-432, DAS_20090603, condapp164b, webconddb164b, DBS-APPS_20090603, CMSSW_2_2_12_HLT, T0Mon_090601_1, CMSSW_2_2_12, apFor2212hltv0, CMSSW_3_1_0_pre8, apFor2212v2, apFor2212v1, apFor2212v0, DBS-APPS_20090528, apFor2211off1v0, CMSSW_2_2_11_offpatch1, T0Mon_090527_2, T0Mon_090527_1, CRABSERVER_1_0_8_pre3_BUILD, pe20090526a-31Xports-432, webconddb164, conapp164, condcore306, pe20090525b-31Xports-432, pe20090525a-31Xports-432, T0Mon_090522_1, dl090520t2, dl090520, ap20090520-osx105, T0Mon_090519_2, T0Mon_090519_1, ap20090519-osx105, DBS_APPS_20090518, T0Mon_090517_1, CMSSW_2_2_11, CMSSW_2_2_11_HLT, T0Mon_090516_1, apFor2211v1, apFor2211hltv0, apFor2211v0, T0Mon_090515_4, CMSSW_3_1_0_pre7, T0Mon_090515_3, T0Mon_090515_2, T0Mon_090515_1, DAS_20090514_3, DAS_20090514_2, DAS_20090514_1, DAS_20090514, pe20090514b-31Xports-432, dl090514t3, dl090514t2, pe20090514a-31Xports-432, dl090514, CMSSW_2_2_10_HLT, DBS-WEB_20090512, pe20090512a-31Xports-432, apFor2210hltv0, pe20090511a-31Xports-432, CRABSERVER_1_0_8_pre2_BUILD, T0Mon_090510_1, CMSSW_2_2_10, dl090509, apFor2210v0, DBS-WEB_20090507, zx20090506, dl090504gcc41, pe20090505b-31Xports-432, pe20090505a-31Xports-432, dl090504, pe20090504a-31Xports-432, DBS_APPS_20090504, CMSSW_3_1_0_pre6, DBS_APPS_20090501, DBS-APPS_20090429_2, DBS-WEB_20090429, DBS-APPS_20090429, DBS-WEB_20090428, dl090425, CMSSW_2_2_9, apFor229v2, apFor229v1, apFor229v0, forPHEDEX-web-services-20090423, DBS-WEB_20090422, dl090421, apFor2119v1, apFor2119v0, DBS-WEB_20090420, DBS-APPS_20090417, CMSSW_2_2_8, apFor228v0, CMSSW_3_1_0_pre5, dl090416, DBS-APPS_20090415, pe20090414a-31Xports-432, dl090410, DBS-APPS_20090410, dl090409t2, dl090409, DAS_20090408, pe20090407a-31Xports-432, dl090406t2, dl090406, DBS-APPS_20090406, T0Mon_090406_1, pe20090406b-31Xports-432, pe20090406a-31Xports-432, forPHEDEX-web-services-20090406, dl090403, pe20090403a-31Xports-432, dl090401t2, DAS_20090330, dl090401, dl090330, dl090329, dl0903029, CMSSW_2_2_7, apFor227v2, CMSSW_3_1_0_pre4, DBS-APPS_20090326, T0Mon_090326_1, T0Mon_090325_1, DAS_20090319_1, DAS_20090319, CMSSW_2_2_6_HLT_ONLINE1, nr090319_for226hltonl1, pe20090318b-for31X-412, pe20090318b-for31X, DBS-APPS_20090318, pe20090318-for31X, CMSSW_2_2_6_HLT_ONLINE, T0Mon_090318_1, apFor227v1, dl090317t2, dl090317, DBS-APPS_20090316, DAS_20090316, T0Mon_090315_1, DAS_20090313, COUCHDB_20090313, apFor227v0, CMSSW_2_2_6_onlpatch1_ONLINE, CMSSW_2_2_6_ONLINE, CMSSW_2_2_6_HLT, apFor226HLTv0, CRABSERVER_1_0_8_pre1_BUILD, forPHEDEX313a, DBS-APPS_20090310, WEBTOOLS-APPS_20090310_1, WEBTOOLS-APPS_20090310, WEBTOOLS-APPS_20090309, CMSSW_2_2_6, nr090307for226_onlpatch1, CMSSW_3_1_0_pre3, DBS-APPS_20090306, apFor226v3, nr090306onl226_tkonlsw_too_new, DBS-APPS_20090304_1, DBS-APPS_20090304, pe20090304-for31X-412, pe20090304-for31X, pe20090304b-30Xports-432, pe20090304a-30Xports-432, dl090304_cmsswtoolconf9cms_gcc412, dl090304_cmsswtoolconf9cms, DBS-APPS_20090303_1, DBS-APPS_20090303, T0Mon_090303_1, apFor226v2, apFor226v1, DBS-APPS_20090302, dl090302_cmsswtoolconf9gcc412, dl090302_cmsswtoolconf9, dl090301, apFor226v0, apFor226, pe20090226b-30Xports-432, pe20090226a-30Xports-432, CMSSW_3_1_0_pre2, pe20090225d-for30XIB-412, pe20090225d-for30XIB, pe20090225c-for30XIB, pe20090225b-for30XIB-412, pe20090225b-for30XIB, pe20090225a-for30XIB, zx20090224, nr20090224_for226, CMSSW_3_1_0_pre1, pe20090224b-30Xports-432, pe20090224a-30Xports-432, pe20090224c-for30XIB-412, pe20090224c-for30XIB, pe20090224b-for30XIB-412, pe20090224b-for30XIB, pe20090224a-for30XIB-412, pe20090224a-for30XIB, DBS-APPS_20090220_1, DBS-APPS_20090220, CMSSW_3_0_0_pre10, T0M_0_0_5, MEMCACHED_20090219_1, MEMCACHED_20090219, sm080219a, zx20090219, pe20090218a-30Xports-432, forPHEDEX313, WEBTOOLS-APPS_20090217_1, WEBTOOLS-APPS_20090217, WEBTOOLS-APPS_20090216, pe20090216b-30Xports-432, pe20090216a-30Xports-432, zx20090217, forPHEDEX-web-services-20090216, zx20090216, CMSSW_3_0_0_pre9, pe20090213b-for30X-412, pe20090213b-for30X, pe20090213-for30X-412, pe20090213-for30X, WEBTOOLS-APPS_20090212, CMSSW_2_2_5, apFor225v0, condcore305, CRABSERVER_1_0_7_BUILD, WEBTOOLS-APPS_20090209_64bit, CRABSERVER_1_0_7_pre4_BUILD, zx20090209, condcore304, forPHEDEX312, WEBTOOLS-APPS_20090206, CRABSERVER_1_0_7_pre3_BUILD, condcore303, T0M_0_0_4, T0M_0_0_3, pe20090205-for30X, CMSSW_2_2_4, WEBTOOLS-APPS_20090203_1, WEBTOOLS-APPS_20090203, apFor224v4, T0M_0_0_2, apFor224v3, zx20090201, pe20090202-for30X, dl090131-412, dl090131, WEBTOOLS-APPS_20090130, apFor224v2, apFor224v1, apFor224v0, WEBTOOLS-APPS_20090129, PRODAGENT_0_12_10_pre3, CRABSERVER_1_0_7_pre2_BUILD, smFor224v0, pe20090127c-30Xports-432, pe20090127b-30Xports-432, PRODAGENT_0_12_10_pre2_20090127_V2, pe20090127a-30Xports-432, CRABSERVER_1_0_7_pre1_BUILD, pe20090125a-30Xports-432, CMSSW_3_0_0_pre8, pe20090124b-for30X-root522-412, pe20090124b-for30X-root522, pe20090124a-for30X-root522-412, pe20090124a-for30X-root522, pe20090123b-for30X-root522-412, pe20090123b-for30X-root522, pe20090123a-for30X-root522, PRODAGENT_0_12_10_20090122, PRODAGENT_0_12_10_pre1_MISC, CMSSW_3_0_0_pre7, pe20090116a-for30X-root522, pe20090115a-for30X-root522, sw_20090115a, sw_20090115, zx20090115, zx20090114, pe20090114c-ports, pe20090114b-ports, pe20090114a-ports, WEBTOOLS-APPS_20090113, DBS-APPS_20090109, pe20090109b-for30XIB-412, pe20090109b-for30XIB, pe20090109a-for30XIB-412, pe20090109a-for30XIB, DBS-APPS_20090108, sw_20090108, CMSSW_3_0_0_pre6, WEBTOOLS-APPS_20090108, CMSSW_3_0_0_pre5, pe20090107a-for30XIB-412, pe20090107a-for30XIB, CMSSW_2_2_3_FWLITE, CMSSW_3_0_0_pre4, DBS-APPS_20090106, DBS-APPS_20090105, pe20090105a-for30XIB-412, pe20090105a-for30XIB, FMWS_20090103, pe20090101a-for30XIB-412, pe20090101a-for30XIB, nr081230_fwlite223, pe20081230a-for30XIB, pe20081230-for30X-newcoralpool, pe20081229-for30X-G492, FMWS_20081224_1, FMWS_20081224, FMWS_20081222_3, FMWS_20081222_2, FMWS_20081222, PRODAGENT_0_12_9_patch1_20081219, PRODAGENT_0_12_10_20081219, DBS-APPS_20081218, PRODAGENT_0_12_9_20081218, pe20081218b-for30XIB-412, pe20081218b-for30XIB, pe20081218-for30XIB-412, pe20081218-for30XIB, pe20081216-for30XIB-412, pe20081216-for30XIB, pe20081216c-for30X, pe20081216b-for30X, pe20081216a-for30X, CMSSW_2_2_3, apFor223v0, pe20081214a-for30X, pe20081213c-30Xports-432, pe20081213c-30Xports, pe20081213b-30Xports, pe20081213a-30Xports, FMWS_20081212_1, CMSSW_2_2_2, CMSSW_3_0_0_pre3, FMWS_20081212, apFor222v0, FMWS_20081211, DBS-APPS_20081211, PRODAGENT_0_12_8_20081211, forPHEDEX311, DBS-APPS_20081210, CRABSERVER_1_0_6_BUILD, forPHEDEX310, DBS-APPS_20081209, pe20081209a-for30X-412, pe20081209a-for30X, CRABSERVER_1_0_6_pre6_BUILD, WEBTOOLS-APPS_20081208, forPHEDEX310pre2, DBS-APPS_20081205, CRABSERVER_1_0_6_pre5_BUILD, forPHEDEX-web-services-20081205, smFor221v1, DBS-APPS_20081204, DBS-APPS_200811204, pe20081204a-for30X-412, pe20081204a-for30X, pe20081104a-for30X, forPHEDEX310pre1, CRABSERVER_1_0_6_pre4_BUILD, apFor221v0, PRODAGENT_0_12_8_pre1_20081129, CRABSERVER_1_0_6_pre3_BUILD, DBS-APPS_20081126_1, DBS-APPS_20081126, DBS-APPS_20081125, pe20081125d-30Xports-432, pe20081125d-30Xports, pe20081125c-30Xports-432, pe20081125c-30Xports, pe20081125b-30Xports, pe20081125b-30Xports-432, pe20081125a-30Xports, pe20081124d-30Xports, pe20081124a-for30X-412, pe20081124a-for30X, pe20081124c-30Xports, pe20081124b-30Xports, pe20081124a-30Xports, pe20081121a-for30X-412, pe20081121a-for30X, CMSSW_2_2_0, pe20081121b-30Xports, pe20081121a-30Xports, apFor220v0, ofctest, testofc, PRODAGENT_BUILD_TEST_0_0_5_20081120, PRODAGENT_BUILD_TEST_0_0_4_20081120, PRODAGENT_BUILD_TEST_0_0_3_20081120_V1, PRODAGENT_BUILD_TEST_0_0_3_20081120, CRABSERVER_1_0_6_pre2_BUILD, CMSSW_2_1_17, DBS-APPS_20081119, DBS-APPS_20081118, PRODAGENT_0_12_7_20081118_V3, PRODAGENT_0_12_7_20081118_V2, PRODAGENT_0_12_7_20081118_V1, PRODAGENT_0_12_7_20081118, apFor2117v1, apFor2117v0, DBS-APPS_20081117, pe20081117a-for30X-412, pe20081117a-for30X, DBS-APPS_20081114_1, DBS-APPS_20081114, CRABSERVER_1_0_6_pre1_BUILD, DBS-APPS_20081112, CRABSERVER_1_0_5_BUILD, CRABSERVER_1_0_5_pre5_BUILD, DBS-APPS_20081111_1, DBS-APPS_20081110_2, DBS-APPS_20081110_1, WEBTOOLS-APPS_20081110, DBS-APPS_20081110, CMSSW_3_0_0_pre2, PRODAGENT_0_12_7_pre2_20081110, pe20081110a-for30X, pe20081108a-for30X-412, pe20081108a-for30X, CRABSERVER_1_0_5_pre4_BUILD, CMSSW_2_2_0_pre1, apFor220p1v1, WEBTOOLS-APPS_20081107_1, WEBTOOLS-APPS_20081107, apFor220p1v0, DBS-APPS_20081107, pe20081107a-for30X-412, pe20081107a-for30X, T0Mon_081107_1, pe20081105-noseal, CRABSERVER_1_0_5_TEST_2_BUILD, CRABSERVER_1_0_5_TEST_1_BUILD, DBS-APPS_20081105, T0Mon_081105_1, DBS-APPS_20081104, CRABSERVER_1_0_5_TEST_BUILD, WEBTOOLS-APPS_20081031_2, pe20081031b-for30X-412, pe20081031b-for30X, DBS-APPS_20081031_2, DBS-APPS_20081031_1, WEBTOOLS-APPS_20081031_1, pe20081031-for30X-412, pe20081031-for30X, WEBTOOLS-APPS_20081031, PRODAGENT_0_12_6_20081030, CMSSW_2_1_12, forPHEDEX307, apFor2112v0, DBS-APPS_20081024, CMSSW_3_0_0_pre1, CMSSW_2_1_10_patch2, WEBTOOLS-APPS_20081020_1, WEBTOOLS-APPS_20081020, DQMGUI_4_2_6c, DQMGUI_4_2_6b, CMSSW_2_1_10_patch1, forFrontend-2, PRODAGENT_0_12_5_20081016, WEBTOOLS-APPS_20081016_2, WEBTOOLS-APPS_20081016_1, WEBTOOLS-APPS_20081016, CRABSERVER_104_BUILD, WEBTOOLS-APPS_20081015, WEBTOOLS-APPS_20081013_1, WEBTOOLS-APPS_20081013, CRABSERVER_TEST_BUILD_V14, CRABSERVER_TEST_BUILD_V13, CMSSW_2_1_10, CRABSERVER_TEST_BUILD_V12, PRODAGENT_0_12_4_20081009, WEBTOOLS-APPS_20081009, apFor2110v2-gcc412, apFor2110v2, apFor2110v1-gcc412, apFor2110v1, PRODAGENT_0_12_3_20081009, WEBTOOLS-APPS_20081008_1, WEBTOOLS-APPS_20081008, CRABSERVER_TEST_BUILD_V11, DQMGUI_4_2_6, forPHEDEX-web-services-20081008, forPHEDEX-web-services-20081007, forPHEDEX-web302_test1, apFor2110v0-gcc412, apFor2110v0, PRODAGENT_0_12_2_20081001_V3, PRODAGENT_0_12_2_20081001_V2, PRODAGENT_0_12_2_20081001_V1, PRODAGENT_0_12_2_20081001, PRODAGENT_0_12_2, CMSSW_2_1_9_ONLINE, forPHEDEX306, forPHEDEX-datasvc120_test1, T0Mon_080926_1, CRABSERVER_TEST_BUILD_V10, CRABSERVER_TEST_BUILD_V9, CRABSERVER_TEST_BUILD_V8, CMSSW_2_1_7_FWLITE, WEBTOOLS-APPS_20080922, T0Mon_080920_2, T0Mon_080920_1, T0Mon_080916_2, forFrontend-1, CMSSW_2_1_9, apFor219v0, WEBTOOLS-APPS_20080917, WEBTOOLS-APPS_20080916, PRODAGENT_0_12_1_20090916, WEBTOOLS-APPS_20080915, PRODAGENT_0_12_0_20090915_V2, PRODAGENT_0_12_0_20090915, CMSSW_2_1_8, apFor218v0, apFor217patch1v1, DQMGUI_4_2_4, DQMGUI_4_2_3, PRODAGENT_BUILD_TEST_0_0_2_20090912, forPHEDEX305, DBS-APPS_20080910_1, WEBTOOLS-APPS_20080910_1, WEBTOOLS-APPS_20080910, CRABSERVER_TEST_BUILD_V7, CRABSERVER_TEST_BUILD_V6, CRABSERVER_TEST_BUILD_V5, DBS-APPS_20080910, apFor217patch1v0, DQMGUI_4_2_2c, WEBTOOLS-APPS_20080909, DQMGUI_4_2_2, DBS-APPS_20080908, DQMGUI_4_2_1d, DQMGUI_4_2_1c, DQMGUI_4_2_1b, DQMGUI_4_2_1, DQMGUI_4_2_0, CMSSW_2_1_7, CMSSW_2_1_, apFor217v1, T0Mon_080905_1, apFor217v0, T0Mon_080905_01, WEBTOOLS-APPS_20080903, T0Mon_080902_2, T0Mon_080902_1, CMSSW_2_1_6, apFor216v0, PRODAGENT_0_11_8_20080901, CMSSW_2_1_5, PRODAGENT_0_12_0_pre3_20080828, apFor215v1, apFor215v0, WEBTOOLS-APPS_20080826, zx20080825, T0Mon_080824_1, T0Mon_080823_1, T0Mon_080826_1, CMSSW_2_1_4_FWLITE, T0Mon_080825_1, CMSSW_2_0_10_FWLITE, WEBTOOLS-APPS_20080822, PRODAGENT_TEST_BUILD_20080822_V3, PRODAGENT_TEST_BUILD_20080822_V2, PRODAGENT_TEST_BUILD_20080822_V1, WEBTOOLS-APPS_20080821, WEBTOOLS-APPS_20080818_1, WEBTOOLS-APPS_20080818, CMSSW_2_1_4_ONLINE1, buildset_V2_8, CMSSW_2_1_4, apFor214v1, apFor214v0, CMSSW_2_1_3, PRODAGENT_0_11_7_20080813_V1, apFor213v0, CMSSW_2_1_2, CMSSW_2_1_1, CMSSW_2_1_1_ONLINE1, apFor212v0, apFor211v0, CMSSW_2_1_0_ONLINE1, apTestv0, PRODAGENT_0_11_6_20080807_V1, PRODAGENT_0_11_5_20080807_V4, PRODAGENT_0_11_5_20080807_V3, PRODAGENT_0_11_5_20080807_V2, PRODAGENT_0_11_5_20080807_V1, nr080806_for210onl, PRODAGENT_0_12_0_pre1_20080806_V2, forPHEDEX-web301, PRODAGENT_0_12_0_pre1_20080805_V1, PRODAGENT_0_11_4_20080805_V4, PRODAGENT_0_11_4_20080805_V3, PRODAGENT_0_11_4_20080805_V2, PRODAGENT_0_11_4_20080805_V1, CMSSW_2_1_0, apFor210v0, CMSSW_2_1_0_pre11, apFor210p11v0, dl080727_bootstrap, CMSSW_2_0_11, CMSSW_2_1_0_pre10, apFor210p10v1, apFor210p10v0, WEBTOOLS-APPS_20080725, WEBTOOLS-APPS_20080724, pe20080723a-for21X-412, pe20080723a-for21X, re-deps-20080722, CMSSW_2_1_0_pre9, apFor210p9v0, zx20080718, WEBTOOLS-APPS_20080717, PRODAGENT_0_11_0_20080717, WEBTOOLS-APPS_20080716, PRODAGENT_0_11_0_20080716, WEBTOOLS-APPS_20080715_2, WEBTOOLS-APPS_20080715_1, WEBTOOLS-APPS_20080715, PRODAGENT_0_0_13_V2, PRODAGENT_0_0_13, zx20080715, CMSSW_2_0_10_ONLINE1, nr080714_forCRAB, PRODAGENT_0_10_12_V18, PRODAGENT_0_10_12_V17, PRODAGENT_0_10_12_V16, PRODAGENT_0_10_12_V15, PRODAGENT_0_10_12_V14, PRODAGENT_0_10_12_V13, WEBTOOLS-APPS_20080713, CMSSW_2_1_0_pre8, PRODAGENT_0_10_12_V12, PRODAGENT_0_10_12_V11, apFor210p8v1, PRODAGENT_0_10_12_V10, PRODAGENT_0_10_12_V9, apFor210p8v0, dl080710_apt0_5_15lorg3_2, forPHEDEX304, CMSSW_2_1_0_pre7, apFor210p7v1, apFor210pre7v1, zx20080707, CMSSW_2_0_10, apFor210p7v0, pe20080702b-for21X-412, pe20080702b-for21X, pe20080702a-for21X-412, pe20080702a-for21X, forPHEDEX-datasvc110, forPHEDEX-web300, forPHEDEX-web110, pe20080627a-for21X-412, pe20080627a-for21X, re20080627, pe20080626a-for21X-412, pe20080626a-for21X, CMSSW_2_0_9, zx20080625, WEBTOOLS-APPS_20080624, nr080624_for21x, pe20080624a-for21X-412, pe20080624a-for21X, nr080623_for21x, pe20080623b-for21X-gp-412, pe20080623b-for21X-gp, pe20080623-for21X-gp, CMSSW_2_1_0_pre6, WEBTOOLS-APPS_20080619_1, WEBTOOLS-APPS_20080619, apFor210p6v0, WEBTOOLS-APPS_20080617, pe20080616-for21X-412, pe20080616-for21X, zx20080611, pe20080611-for21X-412, WEBTOOLS-APPS_20080611, pe20080611-for21X, CMSSW_2_0_8_ONLINE1-cms2, pe20080610-for21X, zx20080610, pe20080610-for21X-412, WEBTOOLS-APPS_20080609_1, WEBTOOLS-APPS_20080609, zx20080609, pe20080609-for21X-412, pe20080609-for21X, sw_20080509, pe20080607-21X-gendict, sm080606a, CMSSW_2_1_0_pre5g491p02, CMSSW_2_0_8_ONLINE1, pe20080604-for21X-g491p02, SiteDB_030608_1, CMSSW_2_0_8, CMSSW_2_1_0_pre5, pe20080531-for210p5, SiteDB_300508_1, nr080529_onl_cmsBuild, nr080528_onl_cmsBuild, SiteDB_280508_1, WEBTOOLS-APPS_20080527_2, WEBTOOLS-APPS_20080527, WEBTOOLS-APPS_20080523, CMSSW_2_0_7_FWLITE, WEBTOOLS-APPS_20080522, WEBTOOLS-APPS_20080521, sm080520a, WEBTOOLS-APPS_20080520, WEBTOOLS-APPS_20080519, pe20080518b-ports-from210p4, pe20080518a-ports-from210p4, zx20080519, CMSSW_2_1_0_pre4, CMSSW_2_0_7, nr080514_206fwlite_no_trajectory, nr080514_206fwlite_alldicts, pe20080512-for21X, WEBTOOLS-APPS_20080511, zx20080509b, zx20080509, pe20080508-testcvs, dl080507, CMSSW_2_0_6, apFor210p4v1, WEBTOOLS-APPS_20080507_1, WEBTOOLS-APPS_20080507, apFor210p4v0, pe20080507-for21X, WEBTOOLS-APPS_20080506, dl080506, dl080505t2, dl080505, WEBTOOLS-APPS_20080501, CMSSW_2_0_5, zx20080430, CMSSW_2_0_4_ONLINE1, dl080425_for21x, dl080425, nr080425for204onl1, CMSSW_2_0_0_ONLINE2, CMSSW_2_1_0_pre3, nrnr080424for200onl2, CMSSW_2_0_3_ONLINE1, nr080326fwl200p7, CMSSW_2_0_4, dl080422, WEBTOOLS-APPS_20080422, nr080421for203onl, CMSSW_2_0_3, apFor210p3v1, apFor210p3v0, dl080419for202, CMSSW_2_0_1, dl080418, CMSSW_2_1_0_pre2, WEBTOOLS-APPS_20080416, CMSSW_2_0_0_ONLINE1, apFor210p2v2, dl080415t2, dl080415, apFor210p2v1, apFor210p2v0, zx20080415-comp, webconddb_1_1_1, WEBTOOLS-APPS_20080414, nr080413, WEBTOOLS-APPS_20080412, WEBTOOLS-APPS_20080411_1, WEBTOOLS-APPS_20080411, CMSSW_2_0_0, WEBTOOLS-APPS_20080410, WEBTOOLS-APPS_20080409_1, WEBTOOLS-APPS_20080409, dl080408cand200t1, dl080408t1, WEBTOOLS-APPS_20080408_1, WEBTOOLS-APPS_20080408, nr080408for200p9, dl080407t3, dl080407t2, CMSSW_2_1_0_pre1, DBS-APPS_20080407, CMSSW_2_0_0_pre7_ONLINE1, WEBTOOLS-APPS_20080407, dl080407, apFor210p1, CMSSW_2_0_0_pre9, dl080405, CMSSW_1_8_4, pe20080405-for184, WEBTOOLS-APPS_20080404_2, WEBTOOLS-APPS_20080404_1, WEBTOOLS-APPS_20080404, WEBTOOLS-APPS_20080403_4, WEBTOOLS-APPS_20080403_3, WEBTOOLS-APPS_20080403_2, WEBTOOLS-APPS_20080403_1, WEBTOOLS-APPS_20080403, nr080331for200p7onl1, CMSSW_2_0_0_pre8, sm080328a, WEBTOOLS-APPS_20080328, WEBTOOLS-APPS_20080327_1, WEBTOOLS-APPS_20080327, CMSSW_1_8_3, CMSSW_2_0_0_pre7, WEBTOOLS-APPS_20080326_6, WEBTOOLS-APPS_20080326_5, WEBTOOLS-APPS_20080326_4, WEBTOOLS-APPS_20080326_3, WEBTOOLS-APPS_20080326_2, WEBTOOLS-APPS_20080326, DBSweb_260308_1, pe20080326-for183, DBSweb_260308, pe20080325-for183, CMSSW_1_8_2, pe20080324-for182, CMSSW_2_0_0_pre6, forPHEDEX262_cmsbuild3, sw_20080319, sw20080319, DBSweb_180308_2, DBSweb_180308_1, DBSweb_180308, DBSweb_170308_8, DBSweb_170308_7, DBSweb_170308_6, DBSweb_170308_5, DBSweb_170308_4, DBSweb_170308_3, DBSweb_170308_2, DBSweb_170308, SiteDB_170308, CMSSW_2_0_0_pre5, SiteDB_1_2_1-160308_2, SiteDB_1_2_1-160308, SM_150308_DBSDisc_9, SM_150308_DBSDisc_8, SM_150308_DBSDisc_7, SM_150308_DBSDisc_6, SM_150308_DBSDisc_5, SM_150308_DBSDisc_4, SM_150308_DBSDisc_3, SM_150308_DBSDisc_2, SM_150308_DBSDisc_1, SM_150308_DBSDisc, CMSSW_1_8_1, nr080314_181onl1, pe20080314-for181, SiteDB_140308, SiteDB_130308, CMSSW_2_0_0_pre4, dl080312, CMSSW_1_8_0_ONLINE1, nr080310_180onl1, dl080308, dl080307cmsswtoolconf2cms5, dl080307, dl080307cmsswtoolconf2cms4, nr080307onl180onl1, CMSSW_1_8_0, dl080304t4, dl080304t3, dl080304t2, dl080304, pe20080304a-for180, ge20080304-comp, pe20080303a-for18X, dl080229, CMSSW_1_8_0_pre10, pe20080229-ports, dl080228t2, dl080228, CMSSW_2_0_0_pre3, SiteDB_080227, dl080227, ge20080226, dl080226t2, dl080226, pe20080226-for180p10, dl080225intbld, ge20080225-nightlies, ge20080225-fixed-bootstrap, dl080224t3, dl080224t2, dl080224, dl080223, dl080222, dl080221, pe20080221a-ports-412, pe20080221a-ports, dl080220, pe20080220a-for18X, pe20080220a-ports-412, pe20080220a-ports, CMSSW_1_8_0_pre9, sm080219, ge20080219, dl080218, nr080215g491p01dbg, COMP_NIGHTLY_INIT_V1, SiteDB_SM_Nightly_150208, ge20080215, pe20080214a-ports-for190p9-412, pe20080214a-ports-for190p9, pe20080211a-ports-for190p9-412, pe20080211a-ports-for190p9, COMP_NIGHTLY_20080211, CMSSW_2_0_0_pre1, pe20080207c-ports-for190p8-412, pe20080207c-ports-for190p8, pe20080207b-ports-lcg54pre2-412, pe20080207b-ports-lcg54pre2, pe20080207a-ports-lcg54pre2-412, pe20080207a-ports-lcg54pre2, pe20080206b-ports-lcg54pre2-412, pe20080206b-ports-lcg54pre2, pe20080206a-ports-lcg54pre2-412, pe20080206a-ports-lcg54pre2, pe20080205c-ports-lcg54pre2-412, pe20080205c-ports-lcg54pre2, pe20080205b-ports-lcg54pre2-412, pe20080205b-ports-lcg54pre2, pe20080205a-ports-lcg54pre2-412, pe20080205a-ports-lcg54pre2, CMSSW_1_8_0_pre8, pe20080204a-ports-lcg54pre2-412, pe20080204a-ports-lcg54pre2, dl080202, pe20080127a-ports-lcg54pre2-412, pe20080127a-ports-lcg54pre2, pe20080126-for180p8, pe20080125a-ports-lcg54pre2-412, pe20080125a-ports-lcg54pre2, pe20080125a-ports-lcg54-412, pe20080125a-ports-lcg54, pe20080123a-ports-412, pe20080123a-ports, CMSSW_1_8_0_pre7, pe20080122a-for180p7, dl080120, pe20080120a-ports-412, pe20080120a-ports, pe20080120a-for180p7, pe20080119a-ports-412, pe20080119a-ports, pe20080118g-ports-412, pe20080118g-ports, pe20080118f-ports-412, pe20080118f-ports, nr_pe20080118e-ports-onl, pe20080118e-ports-412, pe20080118e-ports, pe20080118d-ports-412, pe20080118d-ports, pe20080118c-ports, pe20080118b-ports, pe20080118a-ports, pe20080117b-for180p7, pe20080117-for180p7, dl080115, pe20080111b-ports, CMSSW_1_8_0_pre6, pe20080111a-ports, pe20080110b-ports, pe20080110a-ports, pe20080109a-ports, NR080108_geant491-dbg-global, pe20080108c-ports, ge20080108-wt, pe20080108b-ports, pe20080108a-ports, pe20080105a-ports, pe20080104a-ports, pe20080103a-ports-gcc422, pe20080103a-ports, pe20070103a-ports, pe20080101a-ports, sm20080101a-newscram, pe20071128b-ports, pe20071128a-ports, pe20071127b-ports, pe20071127-ports, pe20071226c-for180p6, pe20071226b-for180p6, pe20071226a-for180p6, ge20071224, ge20071223, ge20071221, pe20071220b-for180p6, ge20071220, pe20071220-for180p6, ge20071217, CMSSW_1_8_0_pre5, pe20071216-for180p5, ge20071216, CMSSW_1_8_0_pre4-vg330, ge20071213, ge20071212-perfreport, ge20071212, ge20071211, ge20071210a, ge20071210, pe20071207-for180p4g491c3, NR071206_geant491cand3-global, ge20071207, pe20071206-for180test1, CMSSW_1_8_0_pre4-412, CMSSW_1_8_0_pre4, pe20071205b-for180p4-412, pe20071205b-for180p4, pe20071205-for180p4, ge20071205, CMSSW_1_8_0_pre3a-412, ge20071203, pe20071202-for180p3a-gcc412, CMSSW_1_8_0_pre3a, pe20071201b-for180p3a, pe20071201-for180p3a, V00-06-08, ge20071128, pe20071130-for180p3, pe20071129-for180p3, ge20071127a-leopard, ge20071127-leopard, pe20071127a-ports-412, ge20071126-new-bootstrap, CMSSW_1_8_0_pre2, CMSSW_1_8_0_pre0-amd64, CMSSW_1_8_0_pre0, pe20071123e-ports-412, pe20071123d-ports-412, pe20071123c-ports-422, pe20071123c-ports-412, pe20071123c-ports, pe20071123b-ports-422, pe20071123b-ports-412, pe20071123b-ports, pe20071123a-ports-422, pe20071123a-ports-412, pe20071123a-ports, ge20071122-new-bootstrap, pe20071121a-ports-422, pe20071121a-ports-412, pe20071121a-ports, pe20071112c-ports-422, pe20071112c-ports-412, pe20071112c-ports, pe20071112b-ports-412, pe20071112b-ports, pe20071112a-ports, pe20071105c-ports, pe20071105b-ports, pe20071105a-ports, pe20071103e-ports, pe20071103d-ports, pe20071103c-ports, pe20071103b-ports, pe20071103a-ports, forTony_001, pe20071021a-ports
Branch point for: conddb-branch
Log Message:
Add LCG gccxml-0.6.0-patch4.diff, with fixes for gcc4.1 (still to do: figure
out whether any of our previous patches are still required)

File Contents

# User Rev Content
1 elmer 1.1 diff -Nur gccxml-0.6.0-p3/GCC_XML/Support/GCC/4.1/bits/basic_string.h gccxml-0.6.0-p4/GCC_XML/Support/GCC/4.1/bits/basic_string.h
2     --- gccxml-0.6.0-p3/GCC_XML/Support/GCC/4.1/bits/basic_string.h 1970-01-01 01:00:00.000000000 +0100
3     +++ gccxml-0.6.0-p4/GCC_XML/Support/GCC/4.1/bits/basic_string.h 2007-08-22 16:17:35.000000000 +0200
4     @@ -0,0 +1,4875 @@
5     +#if defined(__APPLE__) && (__GLIBCXX__ < 20050421)
6     +// Components for manipulating sequences of characters -*- C++ -*-
7     +
8     +// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
9     +// Free Software Foundation, Inc.
10     +//
11     +// This file is part of the GNU ISO C++ Library. This library is free
12     +// software; you can redistribute it and/or modify it under the
13     +// terms of the GNU General Public License as published by the
14     +// Free Software Foundation; either version 2, or (at your option)
15     +// any later version.
16     +
17     +// This library is distributed in the hope that it will be useful,
18     +// but WITHOUT ANY WARRANTY; without even the implied warranty of
19     +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20     +// GNU General Public License for more details.
21     +
22     +// You should have received a copy of the GNU General Public License along
23     +// with this library; see the file COPYING. If not, write to the Free
24     +// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
25     +// USA.
26     +
27     +// As a special exception, you may use this file as part of a free software
28     +// library without restriction. Specifically, if other files instantiate
29     +// templates or use macros or inline functions from this file, or you compile
30     +// this file and link it with other files to produce an executable, this
31     +// file does not by itself cause the resulting executable to be covered by
32     +// the GNU General Public License. This exception does not however
33     +// invalidate any other reasons why the executable file might be covered by
34     +// the GNU General Public License.
35     +
36     +//
37     +// ISO C++ 14882: 21 Strings library
38     +//
39     +
40     +/** @file basic_string.h
41     + * This is an internal header file, included by other library headers.
42     + * You should not attempt to use it directly.
43     + */
44     +
45     +#ifndef _BASIC_STRING_H
46     +#define _BASIC_STRING_H 1
47     +
48     +#pragma GCC system_header
49     +
50     +#include <bits/atomicity.h>
51     +#include <debug/debug.h>
52     +
53     +namespace std
54     +{
55     + /**
56     + * @class basic_string basic_string.h <string>
57     + * @brief Managing sequences of characters and character-like objects.
58     + *
59     + * @ingroup Containers
60     + * @ingroup Sequences
61     + *
62     + * Meets the requirements of a <a href="tables.html#65">container</a>, a
63     + * <a href="tables.html#66">reversible container</a>, and a
64     + * <a href="tables.html#67">sequence</a>. Of the
65     + * <a href="tables.html#68">optional sequence requirements</a>, only
66     + * @c push_back, @c at, and array access are supported.
67     + *
68     + * @doctodo
69     + *
70     + *
71     + * @if maint
72     + * Documentation? What's that?
73     + * Nathan Myers <ncm@cantrip.org>.
74     + *
75     + * A string looks like this:
76     + *
77     + * @code
78     + * [_Rep]
79     + * _M_length
80     + * [basic_string<char_type>] _M_capacity
81     + * _M_dataplus _M_refcount
82     + * _M_p ----------------> unnamed array of char_type
83     + * @endcode
84     + *
85     + * Where the _M_p points to the first character in the string, and
86     + * you cast it to a pointer-to-_Rep and subtract 1 to get a
87     + * pointer to the header.
88     + *
89     + * This approach has the enormous advantage that a string object
90     + * requires only one allocation. All the ugliness is confined
91     + * within a single pair of inline functions, which each compile to
92     + * a single "add" instruction: _Rep::_M_data(), and
93     + * string::_M_rep(); and the allocation function which gets a
94     + * block of raw bytes and with room enough and constructs a _Rep
95     + * object at the front.
96     + *
97     + * The reason you want _M_data pointing to the character array and
98     + * not the _Rep is so that the debugger can see the string
99     + * contents. (Probably we should add a non-inline member to get
100     + * the _Rep for the debugger to use, so users can check the actual
101     + * string length.)
102     + *
103     + * Note that the _Rep object is a POD so that you can have a
104     + * static "empty string" _Rep object already "constructed" before
105     + * static constructors have run. The reference-count encoding is
106     + * chosen so that a 0 indicates one reference, so you never try to
107     + * destroy the empty-string _Rep object.
108     + *
109     + * All but the last paragraph is considered pretty conventional
110     + * for a C++ string implementation.
111     + * @endif
112     + */
113     + // 21.3 Template class basic_string
114     + template<typename _CharT, typename _Traits, typename _Alloc>
115     + class basic_string
116     + {
117     + // Types:
118     + public:
119     + typedef _Traits traits_type;
120     + typedef typename _Traits::char_type value_type;
121     + typedef _Alloc allocator_type;
122     + typedef typename _Alloc::size_type size_type;
123     + typedef typename _Alloc::difference_type difference_type;
124     + typedef typename _Alloc::reference reference;
125     + typedef typename _Alloc::const_reference const_reference;
126     + typedef typename _Alloc::pointer pointer;
127     + typedef typename _Alloc::const_pointer const_pointer;
128     + typedef __gnu_cxx::__normal_iterator<pointer, basic_string> iterator;
129     + typedef __gnu_cxx::__normal_iterator<const_pointer, basic_string>
130     + const_iterator;
131     + typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
132     + typedef std::reverse_iterator<iterator> reverse_iterator;
133     +
134     + private:
135     + // _Rep: string representation
136     + // Invariants:
137     + // 1. String really contains _M_length + 1 characters: due to 21.3.4
138     + // must be kept null-terminated.
139     + // 2. _M_capacity >= _M_length
140     + // Allocated memory is always (_M_capacity + 1) * sizeof(_CharT).
141     + // 3. _M_refcount has three states:
142     + // -1: leaked, one reference, no ref-copies allowed, non-const.
143     + // 0: one reference, non-const.
144     + // n>0: n + 1 references, operations require a lock, const.
145     + // 4. All fields==0 is an empty string, given the extra storage
146     + // beyond-the-end for a null terminator; thus, the shared
147     + // empty string representation needs no constructor.
148     +
149     + struct _Rep_base
150     + {
151     + size_type _M_length;
152     + size_type _M_capacity;
153     + _Atomic_word _M_refcount;
154     + };
155     +
156     + struct _Rep : _Rep_base
157     + {
158     + // Types:
159     + typedef typename _Alloc::template rebind<char>::other _Raw_bytes_alloc;
160     +
161     + // (Public) Data members:
162     +
163     + // The maximum number of individual char_type elements of an
164     + // individual string is determined by _S_max_size. This is the
165     + // value that will be returned by max_size(). (Whereas npos
166     + // is the maximum number of bytes the allocator can allocate.)
167     + // If one was to divvy up the theoretical largest size string,
168     + // with a terminating character and m _CharT elements, it'd
169     + // look like this:
170     + // npos = sizeof(_Rep) + (m * sizeof(_CharT)) + sizeof(_CharT)
171     + // Solving for m:
172     + // m = ((npos - sizeof(_Rep))/sizeof(CharT)) - 1
173     + // In addition, this implementation quarters this amount.
174     + static const size_type _S_max_size;
175     + static const _CharT _S_terminal;
176     +
177     + // The following storage is init'd to 0 by the linker, resulting
178     + // (carefully) in an empty string with one reference.
179     + static size_type _S_empty_rep_storage[];
180     +
181     + static _Rep&
182     + _S_empty_rep()
183     + { return *reinterpret_cast<_Rep*>(&_S_empty_rep_storage); }
184     +
185     + bool
186     + _M_is_leaked() const
187     + { return this->_M_refcount < 0; }
188     +
189     + bool
190     + _M_is_shared() const
191     + { return this->_M_refcount > 0; }
192     +
193     + void
194     + _M_set_leaked()
195     + { this->_M_refcount = -1; }
196     +
197     + void
198     + _M_set_sharable()
199     + { this->_M_refcount = 0; }
200     +
201     + void
202     + _M_set_length_and_sharable(size_type __n)
203     + {
204     + this->_M_set_sharable(); // One reference.
205     + this->_M_length = __n;
206     + this->_M_refdata()[__n] = _S_terminal; // grrr. (per 21.3.4)
207     + // You cannot leave those LWG people alone for a second.
208     + }
209     +
210     + _CharT*
211     + _M_refdata() throw()
212     + { return reinterpret_cast<_CharT*>(this + 1); }
213     +
214     + _CharT*
215     + _M_grab(const _Alloc& __alloc1, const _Alloc& __alloc2)
216     + {
217     + return (!_M_is_leaked() && __alloc1 == __alloc2)
218     + ? _M_refcopy() : _M_clone(__alloc1);
219     + }
220     +
221     + // Create & Destroy
222     + static _Rep*
223     + _S_create(size_type, size_type, const _Alloc&);
224     +
225     + void
226     + _M_dispose(const _Alloc& __a)
227     + {
228     +#ifndef _GLIBCXX_FULLY_DYNAMIC_STRING
229     + if (__builtin_expect(this != &_S_empty_rep(), false))
230     +#endif
231     + if (__gnu_cxx::__exchange_and_add(&this->_M_refcount, -1) <= 0)
232     + _M_destroy(__a);
233     + } // XXX MT
234     +
235     + void
236     + _M_destroy(const _Alloc&) throw();
237     +
238     + _CharT*
239     + _M_refcopy() throw()
240     + {
241     +#ifndef _GLIBCXX_FULLY_DYNAMIC_STRING
242     + if (__builtin_expect(this != &_S_empty_rep(), false))
243     +#endif
244     + __gnu_cxx::__atomic_add(&this->_M_refcount, 1);
245     + return _M_refdata();
246     + } // XXX MT
247     +
248     + _CharT*
249     + _M_clone(const _Alloc&, size_type __res = 0);
250     + };
251     +
252     + // Use empty-base optimization: http://www.cantrip.org/emptyopt.html
253     + struct _Alloc_hider : _Alloc
254     + {
255     + _Alloc_hider(_CharT* __dat, const _Alloc& __a)
256     + : _Alloc(__a), _M_p(__dat) { }
257     +
258     + _CharT* _M_p; // The actual data.
259     + };
260     +
261     + public:
262     + // Data Members (public):
263     + // NB: This is an unsigned type, and thus represents the maximum
264     + // size that the allocator can hold.
265     + /// @var
266     + /// Value returned by various member functions when they fail.
267     + static const size_type npos = static_cast<size_type>(-1);
268     +
269     + private:
270     + // Data Members (private):
271     + mutable _Alloc_hider _M_dataplus;
272     +
273     + _CharT*
274     + _M_data() const
275     + { return _M_dataplus._M_p; }
276     +
277     + _CharT*
278     + _M_data(_CharT* __p)
279     + { return (_M_dataplus._M_p = __p); }
280     +
281     + _Rep*
282     + _M_rep() const
283     + { return &((reinterpret_cast<_Rep*> (_M_data()))[-1]); }
284     +
285     + // For the internal use we have functions similar to `begin'/`end'
286     + // but they do not call _M_leak.
287     + iterator
288     + _M_ibegin() const
289     + { return iterator(_M_data()); }
290     +
291     + iterator
292     + _M_iend() const
293     + { return iterator(_M_data() + this->size()); }
294     +
295     + void
296     + _M_leak() // for use in begin() & non-const op[]
297     + {
298     + if (!_M_rep()->_M_is_leaked())
299     + _M_leak_hard();
300     + }
301     +
302     + size_type
303     + _M_check(size_type __pos, const char* __s) const
304     + {
305     + if (__pos > this->size())
306     + __throw_out_of_range(__N(__s));
307     + return __pos;
308     + }
309     +
310     + void
311     + _M_check_length(size_type __n1, size_type __n2, const char* __s) const
312     + {
313     + if (this->max_size() - (this->size() - __n1) < __n2)
314     + __throw_length_error(__N(__s));
315     + }
316     +
317     + // NB: _M_limit doesn't check for a bad __pos value.
318     + size_type
319     + _M_limit(size_type __pos, size_type __off) const
320     + {
321     + const bool __testoff = __off < this->size() - __pos;
322     + return __testoff ? __off : this->size() - __pos;
323     + }
324     +
325     + // True if _Rep and source do not overlap.
326     + bool
327     + _M_disjunct(const _CharT* __s) const
328     + {
329     + less<const _CharT*> __less;
330     + return (__less(__s, _M_data())
331     + || __less(_M_data() + this->size(), __s));
332     + }
333     +
334     + // When __n = 1 way faster than the general multichar
335     + // traits_type::copy/move/assign.
336     + static void
337     + _M_copy(_CharT* __d, const _CharT* __s, size_type __n)
338     + {
339     + if (__n == 1)
340     + traits_type::assign(*__d, *__s);
341     + else
342     + traits_type::copy(__d, __s, __n);
343     + }
344     +
345     + static void
346     + _M_move(_CharT* __d, const _CharT* __s, size_type __n)
347     + {
348     + if (__n == 1)
349     + traits_type::assign(*__d, *__s);
350     + else
351     + traits_type::move(__d, __s, __n);
352     + }
353     +
354     + static void
355     + _M_assign(_CharT* __d, size_type __n, _CharT __c)
356     + {
357     + if (__n == 1)
358     + traits_type::assign(*__d, __c);
359     + else
360     + traits_type::assign(__d, __n, __c);
361     + }
362     +
363     + // _S_copy_chars is a separate template to permit specialization
364     + // to optimize for the common case of pointers as iterators.
365     + template<class _Iterator>
366     + static void
367     + _S_copy_chars(_CharT* __p, _Iterator __k1, _Iterator __k2)
368     + {
369     + for (; __k1 != __k2; ++__k1, ++__p)
370     + traits_type::assign(*__p, *__k1); // These types are off.
371     + }
372     +
373     + static void
374     + _S_copy_chars(_CharT* __p, iterator __k1, iterator __k2)
375     + { _S_copy_chars(__p, __k1.base(), __k2.base()); }
376     +
377     + static void
378     + _S_copy_chars(_CharT* __p, const_iterator __k1, const_iterator __k2)
379     + { _S_copy_chars(__p, __k1.base(), __k2.base()); }
380     +
381     + static void
382     + _S_copy_chars(_CharT* __p, _CharT* __k1, _CharT* __k2)
383     + { _M_copy(__p, __k1, __k2 - __k1); }
384     +
385     + static void
386     + _S_copy_chars(_CharT* __p, const _CharT* __k1, const _CharT* __k2)
387     + { _M_copy(__p, __k1, __k2 - __k1); }
388     +
389     + void
390     + _M_mutate(size_type __pos, size_type __len1, size_type __len2);
391     +
392     + void
393     + _M_leak_hard();
394     +
395     + static _Rep&
396     + _S_empty_rep()
397     + { return _Rep::_S_empty_rep(); }
398     +
399     + public:
400     + // Construct/copy/destroy:
401     + // NB: We overload ctors in some cases instead of using default
402     + // arguments, per 17.4.4.4 para. 2 item 2.
403     +
404     + /**
405     + * @brief Default constructor creates an empty string.
406     + */
407     + inline
408     + basic_string();
409     +
410     + /**
411     + * @brief Construct an empty string using allocator a.
412     + */
413     + explicit
414     + basic_string(const _Alloc& __a);
415     +
416     + // NB: per LWG issue 42, semantics different from IS:
417     + /**
418     + * @brief Construct string with copy of value of @a str.
419     + * @param str Source string.
420     + */
421     + basic_string(const basic_string& __str);
422     + /**
423     + * @brief Construct string as copy of a substring.
424     + * @param str Source string.
425     + * @param pos Index of first character to copy from.
426     + * @param n Number of characters to copy (default remainder).
427     + */
428     + basic_string(const basic_string& __str, size_type __pos,
429     + size_type __n = npos);
430     + /**
431     + * @brief Construct string as copy of a substring.
432     + * @param str Source string.
433     + * @param pos Index of first character to copy from.
434     + * @param n Number of characters to copy.
435     + * @param a Allocator to use.
436     + */
437     + basic_string(const basic_string& __str, size_type __pos,
438     + size_type __n, const _Alloc& __a);
439     +
440     + /**
441     + * @brief Construct string initialized by a character array.
442     + * @param s Source character array.
443     + * @param n Number of characters to copy.
444     + * @param a Allocator to use (default is default allocator).
445     + *
446     + * NB: s must have at least n characters, '\0' has no special
447     + * meaning.
448     + */
449     + basic_string(const _CharT* __s, size_type __n,
450     + const _Alloc& __a = _Alloc());
451     + /**
452     + * @brief Construct string as copy of a C string.
453     + * @param s Source C string.
454     + * @param a Allocator to use (default is default allocator).
455     + */
456     + basic_string(const _CharT* __s, const _Alloc& __a = _Alloc());
457     + /**
458     + * @brief Construct string as multiple characters.
459     + * @param n Number of characters.
460     + * @param c Character to use.
461     + * @param a Allocator to use (default is default allocator).
462     + */
463     + basic_string(size_type __n, _CharT __c, const _Alloc& __a = _Alloc());
464     +
465     + /**
466     + * @brief Construct string as copy of a range.
467     + * @param beg Start of range.
468     + * @param end End of range.
469     + * @param a Allocator to use (default is default allocator).
470     + */
471     + template<class _InputIterator>
472     + basic_string(_InputIterator __beg, _InputIterator __end,
473     + const _Alloc& __a = _Alloc());
474     +
475     + /**
476     + * @brief Destroy the string instance.
477     + */
478     + ~basic_string()
479     + { _M_rep()->_M_dispose(this->get_allocator()); }
480     +
481     + /**
482     + * @brief Assign the value of @a str to this string.
483     + * @param str Source string.
484     + */
485     + basic_string&
486     + operator=(const basic_string& __str)
487     + { return this->assign(__str); }
488     +
489     + /**
490     + * @brief Copy contents of @a s into this string.
491     + * @param s Source null-terminated string.
492     + */
493     + basic_string&
494     + operator=(const _CharT* __s)
495     + { return this->assign(__s); }
496     +
497     + /**
498     + * @brief Set value to string of length 1.
499     + * @param c Source character.
500     + *
501     + * Assigning to a character makes this string length 1 and
502     + * (*this)[0] == @a c.
503     + */
504     + basic_string&
505     + operator=(_CharT __c)
506     + {
507     + this->assign(1, __c);
508     + return *this;
509     + }
510     +
511     + // Iterators:
512     + /**
513     + * Returns a read/write iterator that points to the first character in
514     + * the %string. Unshares the string.
515     + */
516     + iterator
517     + begin()
518     + {
519     + _M_leak();
520     + return iterator(_M_data());
521     + }
522     +
523     + /**
524     + * Returns a read-only (constant) iterator that points to the first
525     + * character in the %string.
526     + */
527     + const_iterator
528     + begin() const
529     + { return const_iterator(_M_data()); }
530     +
531     + /**
532     + * Returns a read/write iterator that points one past the last
533     + * character in the %string. Unshares the string.
534     + */
535     + iterator
536     + end()
537     + {
538     + _M_leak();
539     + return iterator(_M_data() + this->size());
540     + }
541     +
542     + /**
543     + * Returns a read-only (constant) iterator that points one past the
544     + * last character in the %string.
545     + */
546     + const_iterator
547     + end() const
548     + { return const_iterator(_M_data() + this->size()); }
549     +
550     + /**
551     + * Returns a read/write reverse iterator that points to the last
552     + * character in the %string. Iteration is done in reverse element
553     + * order. Unshares the string.
554     + */
555     + reverse_iterator
556     + rbegin()
557     + { return reverse_iterator(this->end()); }
558     +
559     + /**
560     + * Returns a read-only (constant) reverse iterator that points
561     + * to the last character in the %string. Iteration is done in
562     + * reverse element order.
563     + */
564     + const_reverse_iterator
565     + rbegin() const
566     + { return const_reverse_iterator(this->end()); }
567     +
568     + /**
569     + * Returns a read/write reverse iterator that points to one before the
570     + * first character in the %string. Iteration is done in reverse
571     + * element order. Unshares the string.
572     + */
573     + reverse_iterator
574     + rend()
575     + { return reverse_iterator(this->begin()); }
576     +
577     + /**
578     + * Returns a read-only (constant) reverse iterator that points
579     + * to one before the first character in the %string. Iteration
580     + * is done in reverse element order.
581     + */
582     + const_reverse_iterator
583     + rend() const
584     + { return const_reverse_iterator(this->begin()); }
585     +
586     + public:
587     + // Capacity:
588     + /// Returns the number of characters in the string, not including any
589     + /// null-termination.
590     + size_type
591     + size() const
592     + { return _M_rep()->_M_length; }
593     +
594     + /// Returns the number of characters in the string, not including any
595     + /// null-termination.
596     + size_type
597     + length() const
598     + { return _M_rep()->_M_length; }
599     +
600     + /// Returns the size() of the largest possible %string.
601     + size_type
602     + max_size() const
603     + { return _Rep::_S_max_size; }
604     +
605     + /**
606     + * @brief Resizes the %string to the specified number of characters.
607     + * @param n Number of characters the %string should contain.
608     + * @param c Character to fill any new elements.
609     + *
610     + * This function will %resize the %string to the specified
611     + * number of characters. If the number is smaller than the
612     + * %string's current size the %string is truncated, otherwise
613     + * the %string is extended and new elements are set to @a c.
614     + */
615     + void
616     + resize(size_type __n, _CharT __c);
617     +
618     + /**
619     + * @brief Resizes the %string to the specified number of characters.
620     + * @param n Number of characters the %string should contain.
621     + *
622     + * This function will resize the %string to the specified length. If
623     + * the new size is smaller than the %string's current size the %string
624     + * is truncated, otherwise the %string is extended and new characters
625     + * are default-constructed. For basic types such as char, this means
626     + * setting them to 0.
627     + */
628     + void
629     + resize(size_type __n)
630     + { this->resize(__n, _CharT()); }
631     +
632     + /**
633     + * Returns the total number of characters that the %string can hold
634     + * before needing to allocate more memory.
635     + */
636     + size_type
637     + capacity() const
638     + { return _M_rep()->_M_capacity; }
639     +
640     + /**
641     + * @brief Attempt to preallocate enough memory for specified number of
642     + * characters.
643     + * @param n Number of characters required.
644     + * @throw std::length_error If @a n exceeds @c max_size().
645     + *
646     + * This function attempts to reserve enough memory for the
647     + * %string to hold the specified number of characters. If the
648     + * number requested is more than max_size(), length_error is
649     + * thrown.
650     + *
651     + * The advantage of this function is that if optimal code is a
652     + * necessity and the user can determine the string length that will be
653     + * required, the user can reserve the memory in %advance, and thus
654     + * prevent a possible reallocation of memory and copying of %string
655     + * data.
656     + */
657     + void
658     + reserve(size_type __res_arg = 0);
659     +
660     + /**
661     + * Erases the string, making it empty.
662     + */
663     + void
664     + clear()
665     + { _M_mutate(0, this->size(), 0); }
666     +
667     + /**
668     + * Returns true if the %string is empty. Equivalent to *this == "".
669     + */
670     + bool
671     + empty() const
672     + { return this->size() == 0; }
673     +
674     + // Element access:
675     + /**
676     + * @brief Subscript access to the data contained in the %string.
677     + * @param n The index of the character to access.
678     + * @return Read-only (constant) reference to the character.
679     + *
680     + * This operator allows for easy, array-style, data access.
681     + * Note that data access with this operator is unchecked and
682     + * out_of_range lookups are not defined. (For checked lookups
683     + * see at().)
684     + */
685     + const_reference
686     + operator[] (size_type __pos) const
687     + {
688     + _GLIBCXX_DEBUG_ASSERT(__pos <= size());
689     + return _M_data()[__pos];
690     + }
691     +
692     + /**
693     + * @brief Subscript access to the data contained in the %string.
694     + * @param n The index of the character to access.
695     + * @return Read/write reference to the character.
696     + *
697     + * This operator allows for easy, array-style, data access.
698     + * Note that data access with this operator is unchecked and
699     + * out_of_range lookups are not defined. (For checked lookups
700     + * see at().) Unshares the string.
701     + */
702     + reference
703     + operator[](size_type __pos)
704     + {
705     + _GLIBCXX_DEBUG_ASSERT(__pos < size());
706     + _M_leak();
707     + return _M_data()[__pos];
708     + }
709     +
710     + /**
711     + * @brief Provides access to the data contained in the %string.
712     + * @param n The index of the character to access.
713     + * @return Read-only (const) reference to the character.
714     + * @throw std::out_of_range If @a n is an invalid index.
715     + *
716     + * This function provides for safer data access. The parameter is
717     + * first checked that it is in the range of the string. The function
718     + * throws out_of_range if the check fails.
719     + */
720     + const_reference
721     + at(size_type __n) const
722     + {
723     + if (__n >= this->size())
724     + __throw_out_of_range(__N("basic_string::at"));
725     + return _M_data()[__n];
726     + }
727     +
728     + /**
729     + * @brief Provides access to the data contained in the %string.
730     + * @param n The index of the character to access.
731     + * @return Read/write reference to the character.
732     + * @throw std::out_of_range If @a n is an invalid index.
733     + *
734     + * This function provides for safer data access. The parameter is
735     + * first checked that it is in the range of the string. The function
736     + * throws out_of_range if the check fails. Success results in
737     + * unsharing the string.
738     + */
739     + reference
740     + at(size_type __n)
741     + {
742     + if (__n >= size())
743     + __throw_out_of_range(__N("basic_string::at"));
744     + _M_leak();
745     + return _M_data()[__n];
746     + }
747     +
748     + // Modifiers:
749     + /**
750     + * @brief Append a string to this string.
751     + * @param str The string to append.
752     + * @return Reference to this string.
753     + */
754     + basic_string&
755     + operator+=(const basic_string& __str)
756     + { return this->append(__str); }
757     +
758     + /**
759     + * @brief Append a C string.
760     + * @param s The C string to append.
761     + * @return Reference to this string.
762     + */
763     + basic_string&
764     + operator+=(const _CharT* __s)
765     + { return this->append(__s); }
766     +
767     + /**
768     + * @brief Append a character.
769     + * @param s The character to append.
770     + * @return Reference to this string.
771     + */
772     + basic_string&
773     + operator+=(_CharT __c)
774     + {
775     + this->push_back(__c);
776     + return *this;
777     + }
778     +
779     + /**
780     + * @brief Append a string to this string.
781     + * @param str The string to append.
782     + * @return Reference to this string.
783     + */
784     + basic_string&
785     + append(const basic_string& __str)
786     + {
787     + const size_type __size = __str.size();
788     + if (__size)
789     + {
790     + const size_type __len = __size + this->size();
791     + if (__len > this->capacity() || _M_rep()->_M_is_shared())
792     + this->reserve(__len);
793     + _M_copy(_M_data() + this->size(), __str._M_data(), __size);
794     + _M_rep()->_M_set_length_and_sharable(__len);
795     + }
796     + return *this;
797     + }
798     +
799     + /**
800     + * @brief Append a substring.
801     + * @param str The string to append.
802     + * @param pos Index of the first character of str to append.
803     + * @param n The number of characters to append.
804     + * @return Reference to this string.
805     + * @throw std::out_of_range if @a pos is not a valid index.
806     + *
807     + * This function appends @a n characters from @a str starting at @a pos
808     + * to this string. If @a n is is larger than the number of available
809     + * characters in @a str, the remainder of @a str is appended.
810     + */
811     + basic_string&
812     + append(const basic_string& __str, size_type __pos, size_type __n);
813     +
814     + /**
815     + * @brief Append a C substring.
816     + * @param s The C string to append.
817     + * @param n The number of characters to append.
818     + * @return Reference to this string.
819     + */
820     + basic_string&
821     + append(const _CharT* __s, size_type __n);
822     +
823     + /**
824     + * @brief Append a C string.
825     + * @param s The C string to append.
826     + * @return Reference to this string.
827     + */
828     + basic_string&
829     + append(const _CharT* __s)
830     + {
831     + __glibcxx_requires_string(__s);
832     + return this->append(__s, traits_type::length(__s));
833     + }
834     +
835     + /**
836     + * @brief Append multiple characters.
837     + * @param n The number of characters to append.
838     + * @param c The character to use.
839     + * @return Reference to this string.
840     + *
841     + * Appends n copies of c to this string.
842     + */
843     + basic_string&
844     + append(size_type __n, _CharT __c)
845     + {
846     + if (__n)
847     + {
848     + _M_check_length(size_type(0), __n, "basic_string::append");
849     + const size_type __len = __n + this->size();
850     + if (__len > this->capacity() || _M_rep()->_M_is_shared())
851     + this->reserve(__len);
852     + _M_assign(_M_data() + this->size(), __n, __c);
853     + _M_rep()->_M_set_length_and_sharable(__len);
854     + }
855     + return *this;
856     + }
857     +
858     + /**
859     + * @brief Append a range of characters.
860     + * @param first Iterator referencing the first character to append.
861     + * @param last Iterator marking the end of the range.
862     + * @return Reference to this string.
863     + *
864     + * Appends characters in the range [first,last) to this string.
865     + */
866     + template<class _InputIterator>
867     + basic_string&
868     + append(_InputIterator __first, _InputIterator __last)
869     + { return this->replace(_M_iend(), _M_iend(), __first, __last); }
870     +
871     + /**
872     + * @brief Append a single character.
873     + * @param c Character to append.
874     + */
875     + void
876     + push_back(_CharT __c)
877     + {
878     + const size_type __len = 1 + this->size();
879     + if (__len > this->capacity() || _M_rep()->_M_is_shared())
880     + this->reserve(__len);
881     + traits_type::assign(_M_data()[this->size()], __c);
882     + _M_rep()->_M_set_length_and_sharable(__len);
883     + }
884     +
885     + /**
886     + * @brief Set value to contents of another string.
887     + * @param str Source string to use.
888     + * @return Reference to this string.
889     + */
890     + basic_string&
891     + assign(const basic_string& __str)
892     + {
893     + if (_M_rep() != __str._M_rep())
894     + {
895     + // XXX MT
896     + const allocator_type __a = this->get_allocator();
897     + _CharT* __tmp = __str._M_rep()->_M_grab(__a, __str.get_allocator());
898     + _M_rep()->_M_dispose(__a);
899     + _M_data(__tmp);
900     + }
901     + return *this;
902     + }
903     +
904     + /**
905     + * @brief Set value to a substring of a string.
906     + * @param str The string to use.
907     + * @param pos Index of the first character of str.
908     + * @param n Number of characters to use.
909     + * @return Reference to this string.
910     + * @throw std::out_of_range if @a pos is not a valid index.
911     + *
912     + * This function sets this string to the substring of @a str consisting
913     + * of @a n characters at @a pos. If @a n is is larger than the number
914     + * of available characters in @a str, the remainder of @a str is used.
915     + */
916     + basic_string&
917     + assign(const basic_string& __str, size_type __pos, size_type __n)
918     + { return this->assign(__str._M_data()
919     + + __str._M_check(__pos, "basic_string::assign"),
920     + __str._M_limit(__pos, __n)); }
921     +
922     + /**
923     + * @brief Set value to a C substring.
924     + * @param s The C string to use.
925     + * @param n Number of characters to use.
926     + * @return Reference to this string.
927     + *
928     + * This function sets the value of this string to the first @a n
929     + * characters of @a s. If @a n is is larger than the number of
930     + * available characters in @a s, the remainder of @a s is used.
931     + */
932     + basic_string&
933     + assign(const _CharT* __s, size_type __n);
934     +
935     + /**
936     + * @brief Set value to contents of a C string.
937     + * @param s The C string to use.
938     + * @return Reference to this string.
939     + *
940     + * This function sets the value of this string to the value of @a s.
941     + * The data is copied, so there is no dependence on @a s once the
942     + * function returns.
943     + */
944     + basic_string&
945     + assign(const _CharT* __s)
946     + {
947     + __glibcxx_requires_string(__s);
948     + return this->assign(__s, traits_type::length(__s));
949     + }
950     +
951     + /**
952     + * @brief Set value to multiple characters.
953     + * @param n Length of the resulting string.
954     + * @param c The character to use.
955     + * @return Reference to this string.
956     + *
957     + * This function sets the value of this string to @a n copies of
958     + * character @a c.
959     + */
960     + basic_string&
961     + assign(size_type __n, _CharT __c)
962     + { return _M_replace_aux(size_type(0), this->size(), __n, __c); }
963     +
964     + /**
965     + * @brief Set value to a range of characters.
966     + * @param first Iterator referencing the first character to append.
967     + * @param last Iterator marking the end of the range.
968     + * @return Reference to this string.
969     + *
970     + * Sets value of string to characters in the range [first,last).
971     + */
972     + template<class _InputIterator>
973     + basic_string&
974     + assign(_InputIterator __first, _InputIterator __last)
975     + { return this->replace(_M_ibegin(), _M_iend(), __first, __last); }
976     +
977     + /**
978     + * @brief Insert multiple characters.
979     + * @param p Iterator referencing location in string to insert at.
980     + * @param n Number of characters to insert
981     + * @param c The character to insert.
982     + * @throw std::length_error If new length exceeds @c max_size().
983     + *
984     + * Inserts @a n copies of character @a c starting at the position
985     + * referenced by iterator @a p. If adding characters causes the length
986     + * to exceed max_size(), length_error is thrown. The value of the
987     + * string doesn't change if an error is thrown.
988     + */
989     + void
990     + insert(iterator __p, size_type __n, _CharT __c)
991     + { this->replace(__p, __p, __n, __c); }
992     +
993     + /**
994     + * @brief Insert a range of characters.
995     + * @param p Iterator referencing location in string to insert at.
996     + * @param beg Start of range.
997     + * @param end End of range.
998     + * @throw std::length_error If new length exceeds @c max_size().
999     + *
1000     + * Inserts characters in range [beg,end). If adding characters causes
1001     + * the length to exceed max_size(), length_error is thrown. The value
1002     + * of the string doesn't change if an error is thrown.
1003     + */
1004     + template<class _InputIterator>
1005     + void
1006     + insert(iterator __p, _InputIterator __beg, _InputIterator __end)
1007     + { this->replace(__p, __p, __beg, __end); }
1008     +
1009     + /**
1010     + * @brief Insert value of a string.
1011     + * @param pos1 Iterator referencing location in string to insert at.
1012     + * @param str The string to insert.
1013     + * @return Reference to this string.
1014     + * @throw std::length_error If new length exceeds @c max_size().
1015     + *
1016     + * Inserts value of @a str starting at @a pos1. If adding characters
1017     + * causes the length to exceed max_size(), length_error is thrown. The
1018     + * value of the string doesn't change if an error is thrown.
1019     + */
1020     + basic_string&
1021     + insert(size_type __pos1, const basic_string& __str)
1022     + { return this->insert(__pos1, __str, size_type(0), __str.size()); }
1023     +
1024     + /**
1025     + * @brief Insert a substring.
1026     + * @param pos1 Iterator referencing location in string to insert at.
1027     + * @param str The string to insert.
1028     + * @param pos2 Start of characters in str to insert.
1029     + * @param n Number of characters to insert.
1030     + * @return Reference to this string.
1031     + * @throw std::length_error If new length exceeds @c max_size().
1032     + * @throw std::out_of_range If @a pos1 > size() or
1033     + * @a pos2 > @a str.size().
1034     + *
1035     + * Starting at @a pos1, insert @a n character of @a str beginning with
1036     + * @a pos2. If adding characters causes the length to exceed
1037     + * max_size(), length_error is thrown. If @a pos1 is beyond the end of
1038     + * this string or @a pos2 is beyond the end of @a str, out_of_range is
1039     + * thrown. The value of the string doesn't change if an error is
1040     + * thrown.
1041     + */
1042     + basic_string&
1043     + insert(size_type __pos1, const basic_string& __str,
1044     + size_type __pos2, size_type __n)
1045     + { return this->insert(__pos1, __str._M_data()
1046     + + __str._M_check(__pos2, "basic_string::insert"),
1047     + __str._M_limit(__pos2, __n)); }
1048     +
1049     + /**
1050     + * @brief Insert a C substring.
1051     + * @param pos Iterator referencing location in string to insert at.
1052     + * @param s The C string to insert.
1053     + * @param n The number of characters to insert.
1054     + * @return Reference to this string.
1055     + * @throw std::length_error If new length exceeds @c max_size().
1056     + * @throw std::out_of_range If @a pos is beyond the end of this
1057     + * string.
1058     + *
1059     + * Inserts the first @a n characters of @a s starting at @a pos. If
1060     + * adding characters causes the length to exceed max_size(),
1061     + * length_error is thrown. If @a pos is beyond end(), out_of_range is
1062     + * thrown. The value of the string doesn't change if an error is
1063     + * thrown.
1064     + */
1065     + basic_string&
1066     + insert(size_type __pos, const _CharT* __s, size_type __n);
1067     +
1068     + /**
1069     + * @brief Insert a C string.
1070     + * @param pos Iterator referencing location in string to insert at.
1071     + * @param s The C string to insert.
1072     + * @return Reference to this string.
1073     + * @throw std::length_error If new length exceeds @c max_size().
1074     + * @throw std::out_of_range If @a pos is beyond the end of this
1075     + * string.
1076     + *
1077     + * Inserts the first @a n characters of @a s starting at @a pos. If
1078     + * adding characters causes the length to exceed max_size(),
1079     + * length_error is thrown. If @a pos is beyond end(), out_of_range is
1080     + * thrown. The value of the string doesn't change if an error is
1081     + * thrown.
1082     + */
1083     + basic_string&
1084     + insert(size_type __pos, const _CharT* __s)
1085     + {
1086     + __glibcxx_requires_string(__s);
1087     + return this->insert(__pos, __s, traits_type::length(__s));
1088     + }
1089     +
1090     + /**
1091     + * @brief Insert multiple characters.
1092     + * @param pos Index in string to insert at.
1093     + * @param n Number of characters to insert
1094     + * @param c The character to insert.
1095     + * @return Reference to this string.
1096     + * @throw std::length_error If new length exceeds @c max_size().
1097     + * @throw std::out_of_range If @a pos is beyond the end of this
1098     + * string.
1099     + *
1100     + * Inserts @a n copies of character @a c starting at index @a pos. If
1101     + * adding characters causes the length to exceed max_size(),
1102     + * length_error is thrown. If @a pos > length(), out_of_range is
1103     + * thrown. The value of the string doesn't change if an error is
1104     + * thrown.
1105     + */
1106     + basic_string&
1107     + insert(size_type __pos, size_type __n, _CharT __c)
1108     + { return _M_replace_aux(_M_check(__pos, "basic_string::insert"),
1109     + size_type(0), __n, __c); }
1110     +
1111     + /**
1112     + * @brief Insert one character.
1113     + * @param p Iterator referencing position in string to insert at.
1114     + * @param c The character to insert.
1115     + * @return Iterator referencing newly inserted char.
1116     + * @throw std::length_error If new length exceeds @c max_size().
1117     + *
1118     + * Inserts character @a c at position referenced by @a p. If adding
1119     + * character causes the length to exceed max_size(), length_error is
1120     + * thrown. If @a p is beyond end of string, out_of_range is thrown.
1121     + * The value of the string doesn't change if an error is thrown.
1122     + */
1123     + iterator
1124     + insert(iterator __p, _CharT __c)
1125     + {
1126     + _GLIBCXX_DEBUG_PEDASSERT(__p >= _M_ibegin() && __p <= _M_iend());
1127     + const size_type __pos = __p - _M_ibegin();
1128     + _M_replace_aux(__pos, size_type(0), size_type(1), __c);
1129     + _M_rep()->_M_set_leaked();
1130     + return this->_M_ibegin() + __pos;
1131     + }
1132     +
1133     + /**
1134     + * @brief Remove characters.
1135     + * @param pos Index of first character to remove (default 0).
1136     + * @param n Number of characters to remove (default remainder).
1137     + * @return Reference to this string.
1138     + * @throw std::out_of_range If @a pos is beyond the end of this
1139     + * string.
1140     + *
1141     + * Removes @a n characters from this string starting at @a pos. The
1142     + * length of the string is reduced by @a n. If there are < @a n
1143     + * characters to remove, the remainder of the string is truncated. If
1144     + * @a p is beyond end of string, out_of_range is thrown. The value of
1145     + * the string doesn't change if an error is thrown.
1146     + */
1147     + basic_string&
1148     + erase(size_type __pos = 0, size_type __n = npos)
1149     + { return _M_replace_safe(_M_check(__pos, "basic_string::erase"),
1150     + _M_limit(__pos, __n), NULL, size_type(0)); }
1151     +
1152     + /**
1153     + * @brief Remove one character.
1154     + * @param position Iterator referencing the character to remove.
1155     + * @return iterator referencing same location after removal.
1156     + *
1157     + * Removes the character at @a position from this string. The value
1158     + * of the string doesn't change if an error is thrown.
1159     + */
1160     + iterator
1161     + erase(iterator __position)
1162     + {
1163     + _GLIBCXX_DEBUG_PEDASSERT(__position >= _M_ibegin()
1164     + && __position < _M_iend());
1165     + const size_type __pos = __position - _M_ibegin();
1166     + _M_replace_safe(__pos, size_type(1), NULL, size_type(0));
1167     + _M_rep()->_M_set_leaked();
1168     + return _M_ibegin() + __pos;
1169     + }
1170     +
1171     + /**
1172     + * @brief Remove a range of characters.
1173     + * @param first Iterator referencing the first character to remove.
1174     + * @param last Iterator referencing the end of the range.
1175     + * @return Iterator referencing location of first after removal.
1176     + *
1177     + * Removes the characters in the range [first,last) from this string.
1178     + * The value of the string doesn't change if an error is thrown.
1179     + */
1180     + iterator
1181     + erase(iterator __first, iterator __last)
1182     + {
1183     + _GLIBCXX_DEBUG_PEDASSERT(__first >= _M_ibegin() && __first <= __last
1184     + && __last <= _M_iend());
1185     + const size_type __pos = __first - _M_ibegin();
1186     + _M_replace_safe(__pos, __last - __first, NULL, size_type(0));
1187     + _M_rep()->_M_set_leaked();
1188     + return _M_ibegin() + __pos;
1189     + }
1190     +
1191     + /**
1192     + * @brief Replace characters with value from another string.
1193     + * @param pos Index of first character to replace.
1194     + * @param n Number of characters to be replaced.
1195     + * @param str String to insert.
1196     + * @return Reference to this string.
1197     + * @throw std::out_of_range If @a pos is beyond the end of this
1198     + * string.
1199     + * @throw std::length_error If new length exceeds @c max_size().
1200     + *
1201     + * Removes the characters in the range [pos,pos+n) from this string.
1202     + * In place, the value of @a str is inserted. If @a pos is beyond end
1203     + * of string, out_of_range is thrown. If the length of the result
1204     + * exceeds max_size(), length_error is thrown. The value of the string
1205     + * doesn't change if an error is thrown.
1206     + */
1207     + basic_string&
1208     + replace(size_type __pos, size_type __n, const basic_string& __str)
1209     + { return this->replace(__pos, __n, __str._M_data(), __str.size()); }
1210     +
1211     + /**
1212     + * @brief Replace characters with value from another string.
1213     + * @param pos1 Index of first character to replace.
1214     + * @param n1 Number of characters to be replaced.
1215     + * @param str String to insert.
1216     + * @param pos2 Index of first character of str to use.
1217     + * @param n2 Number of characters from str to use.
1218     + * @return Reference to this string.
1219     + * @throw std::out_of_range If @a pos1 > size() or @a pos2 >
1220     + * str.size().
1221     + * @throw std::length_error If new length exceeds @c max_size().
1222     + *
1223     + * Removes the characters in the range [pos1,pos1 + n) from this
1224     + * string. In place, the value of @a str is inserted. If @a pos is
1225     + * beyond end of string, out_of_range is thrown. If the length of the
1226     + * result exceeds max_size(), length_error is thrown. The value of the
1227     + * string doesn't change if an error is thrown.
1228     + */
1229     + basic_string&
1230     + replace(size_type __pos1, size_type __n1, const basic_string& __str,
1231     + size_type __pos2, size_type __n2)
1232     + { return this->replace(__pos1, __n1, __str._M_data()
1233     + + __str._M_check(__pos2, "basic_string::replace"),
1234     + __str._M_limit(__pos2, __n2)); }
1235     +
1236     + /**
1237     + * @brief Replace characters with value of a C substring.
1238     + * @param pos Index of first character to replace.
1239     + * @param n1 Number of characters to be replaced.
1240     + * @param str C string to insert.
1241     + * @param n2 Number of characters from str to use.
1242     + * @return Reference to this string.
1243     + * @throw std::out_of_range If @a pos1 > size().
1244     + * @throw std::length_error If new length exceeds @c max_size().
1245     + *
1246     + * Removes the characters in the range [pos,pos + n1) from this string.
1247     + * In place, the first @a n2 characters of @a str are inserted, or all
1248     + * of @a str if @a n2 is too large. If @a pos is beyond end of string,
1249     + * out_of_range is thrown. If the length of result exceeds max_size(),
1250     + * length_error is thrown. The value of the string doesn't change if
1251     + * an error is thrown.
1252     + */
1253     + basic_string&
1254     + replace(size_type __pos, size_type __n1, const _CharT* __s,
1255     + size_type __n2);
1256     +
1257     + /**
1258     + * @brief Replace characters with value of a C string.
1259     + * @param pos Index of first character to replace.
1260     + * @param n1 Number of characters to be replaced.
1261     + * @param str C string to insert.
1262     + * @return Reference to this string.
1263     + * @throw std::out_of_range If @a pos > size().
1264     + * @throw std::length_error If new length exceeds @c max_size().
1265     + *
1266     + * Removes the characters in the range [pos,pos + n1) from this string.
1267     + * In place, the first @a n characters of @a str are inserted. If @a
1268     + * pos is beyond end of string, out_of_range is thrown. If the length
1269     + * of result exceeds max_size(), length_error is thrown. The value of
1270     + * the string doesn't change if an error is thrown.
1271     + */
1272     + basic_string&
1273     + replace(size_type __pos, size_type __n1, const _CharT* __s)
1274     + {
1275     + __glibcxx_requires_string(__s);
1276     + return this->replace(__pos, __n1, __s, traits_type::length(__s));
1277     + }
1278     +
1279     + /**
1280     + * @brief Replace characters with multiple characters.
1281     + * @param pos Index of first character to replace.
1282     + * @param n1 Number of characters to be replaced.
1283     + * @param n2 Number of characters to insert.
1284     + * @param c Character to insert.
1285     + * @return Reference to this string.
1286     + * @throw std::out_of_range If @a pos > size().
1287     + * @throw std::length_error If new length exceeds @c max_size().
1288     + *
1289     + * Removes the characters in the range [pos,pos + n1) from this string.
1290     + * In place, @a n2 copies of @a c are inserted. If @a pos is beyond
1291     + * end of string, out_of_range is thrown. If the length of result
1292     + * exceeds max_size(), length_error is thrown. The value of the string
1293     + * doesn't change if an error is thrown.
1294     + */
1295     + basic_string&
1296     + replace(size_type __pos, size_type __n1, size_type __n2, _CharT __c)
1297     + { return _M_replace_aux(_M_check(__pos, "basic_string::replace"),
1298     + _M_limit(__pos, __n1), __n2, __c); }
1299     +
1300     + /**
1301     + * @brief Replace range of characters with string.
1302     + * @param i1 Iterator referencing start of range to replace.
1303     + * @param i2 Iterator referencing end of range to replace.
1304     + * @param str String value to insert.
1305     + * @return Reference to this string.
1306     + * @throw std::length_error If new length exceeds @c max_size().
1307     + *
1308     + * Removes the characters in the range [i1,i2). In place, the value of
1309     + * @a str is inserted. If the length of result exceeds max_size(),
1310     + * length_error is thrown. The value of the string doesn't change if
1311     + * an error is thrown.
1312     + */
1313     + basic_string&
1314     + replace(iterator __i1, iterator __i2, const basic_string& __str)
1315     + { return this->replace(__i1, __i2, __str._M_data(), __str.size()); }
1316     +
1317     + /**
1318     + * @brief Replace range of characters with C substring.
1319     + * @param i1 Iterator referencing start of range to replace.
1320     + * @param i2 Iterator referencing end of range to replace.
1321     + * @param s C string value to insert.
1322     + * @param n Number of characters from s to insert.
1323     + * @return Reference to this string.
1324     + * @throw std::length_error If new length exceeds @c max_size().
1325     + *
1326     + * Removes the characters in the range [i1,i2). In place, the first @a
1327     + * n characters of @a s are inserted. If the length of result exceeds
1328     + * max_size(), length_error is thrown. The value of the string doesn't
1329     + * change if an error is thrown.
1330     + */
1331     + basic_string&
1332     + replace(iterator __i1, iterator __i2, const _CharT* __s, size_type __n)
1333     + {
1334     + _GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2
1335     + && __i2 <= _M_iend());
1336     + return this->replace(__i1 - _M_ibegin(), __i2 - __i1, __s, __n);
1337     + }
1338     +
1339     + /**
1340     + * @brief Replace range of characters with C string.
1341     + * @param i1 Iterator referencing start of range to replace.
1342     + * @param i2 Iterator referencing end of range to replace.
1343     + * @param s C string value to insert.
1344     + * @return Reference to this string.
1345     + * @throw std::length_error If new length exceeds @c max_size().
1346     + *
1347     + * Removes the characters in the range [i1,i2). In place, the
1348     + * characters of @a s are inserted. If the length of result exceeds
1349     + * max_size(), length_error is thrown. The value of the string doesn't
1350     + * change if an error is thrown.
1351     + */
1352     + basic_string&
1353     + replace(iterator __i1, iterator __i2, const _CharT* __s)
1354     + {
1355     + __glibcxx_requires_string(__s);
1356     + return this->replace(__i1, __i2, __s, traits_type::length(__s));
1357     + }
1358     +
1359     + /**
1360     + * @brief Replace range of characters with multiple characters
1361     + * @param i1 Iterator referencing start of range to replace.
1362     + * @param i2 Iterator referencing end of range to replace.
1363     + * @param n Number of characters to insert.
1364     + * @param c Character to insert.
1365     + * @return Reference to this string.
1366     + * @throw std::length_error If new length exceeds @c max_size().
1367     + *
1368     + * Removes the characters in the range [i1,i2). In place, @a n copies
1369     + * of @a c are inserted. If the length of result exceeds max_size(),
1370     + * length_error is thrown. The value of the string doesn't change if
1371     + * an error is thrown.
1372     + */
1373     + basic_string&
1374     + replace(iterator __i1, iterator __i2, size_type __n, _CharT __c)
1375     + {
1376     + _GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2
1377     + && __i2 <= _M_iend());
1378     + return _M_replace_aux(__i1 - _M_ibegin(), __i2 - __i1, __n, __c);
1379     + }
1380     +
1381     + /**
1382     + * @brief Replace range of characters with range.
1383     + * @param i1 Iterator referencing start of range to replace.
1384     + * @param i2 Iterator referencing end of range to replace.
1385     + * @param k1 Iterator referencing start of range to insert.
1386     + * @param k2 Iterator referencing end of range to insert.
1387     + * @return Reference to this string.
1388     + * @throw std::length_error If new length exceeds @c max_size().
1389     + *
1390     + * Removes the characters in the range [i1,i2). In place, characters
1391     + * in the range [k1,k2) are inserted. If the length of result exceeds
1392     + * max_size(), length_error is thrown. The value of the string doesn't
1393     + * change if an error is thrown.
1394     + */
1395     + template<class _InputIterator>
1396     + basic_string&
1397     + replace(iterator __i1, iterator __i2,
1398     + _InputIterator __k1, _InputIterator __k2)
1399     + {
1400     + _GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2
1401     + && __i2 <= _M_iend());
1402     + __glibcxx_requires_valid_range(__k1, __k2);
1403     + typedef typename _Is_integer<_InputIterator>::_Integral _Integral;
1404     + return _M_replace_dispatch(__i1, __i2, __k1, __k2, _Integral());
1405     + }
1406     +
1407     + // Specializations for the common case of pointer and iterator:
1408     + // useful to avoid the overhead of temporary buffering in _M_replace.
1409     + basic_string&
1410     + replace(iterator __i1, iterator __i2, _CharT* __k1, _CharT* __k2)
1411     + {
1412     + _GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2
1413     + && __i2 <= _M_iend());
1414     + __glibcxx_requires_valid_range(__k1, __k2);
1415     + return this->replace(__i1 - _M_ibegin(), __i2 - __i1,
1416     + __k1, __k2 - __k1);
1417     + }
1418     +
1419     + basic_string&
1420     + replace(iterator __i1, iterator __i2,
1421     + const _CharT* __k1, const _CharT* __k2)
1422     + {
1423     + _GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2
1424     + && __i2 <= _M_iend());
1425     + __glibcxx_requires_valid_range(__k1, __k2);
1426     + return this->replace(__i1 - _M_ibegin(), __i2 - __i1,
1427     + __k1, __k2 - __k1);
1428     + }
1429     +
1430     + basic_string&
1431     + replace(iterator __i1, iterator __i2, iterator __k1, iterator __k2)
1432     + {
1433     + _GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2
1434     + && __i2 <= _M_iend());
1435     + __glibcxx_requires_valid_range(__k1, __k2);
1436     + return this->replace(__i1 - _M_ibegin(), __i2 - __i1,
1437     + __k1.base(), __k2 - __k1);
1438     + }
1439     +
1440     + basic_string&
1441     + replace(iterator __i1, iterator __i2,
1442     + const_iterator __k1, const_iterator __k2)
1443     + {
1444     + _GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2
1445     + && __i2 <= _M_iend());
1446     + __glibcxx_requires_valid_range(__k1, __k2);
1447     + return this->replace(__i1 - _M_ibegin(), __i2 - __i1,
1448     + __k1.base(), __k2 - __k1);
1449     + }
1450     +
1451     + private:
1452     + template<class _Integer>
1453     + basic_string&
1454     + _M_replace_dispatch(iterator __i1, iterator __i2, _Integer __n,
1455     + _Integer __val, __true_type)
1456     + { return _M_replace_aux(__i1 - _M_ibegin(), __i2 - __i1, __n, __val); }
1457     +
1458     + template<class _InputIterator>
1459     + basic_string&
1460     + _M_replace_dispatch(iterator __i1, iterator __i2, _InputIterator __k1,
1461     + _InputIterator __k2, __false_type);
1462     +
1463     + basic_string&
1464     + _M_replace_aux(size_type __pos1, size_type __n1, size_type __n2,
1465     + _CharT __c)
1466     + {
1467     + _M_check_length(__n1, __n2, "basic_string::_M_replace_aux");
1468     + _M_mutate(__pos1, __n1, __n2);
1469     + if (__n2)
1470     + _M_assign(_M_data() + __pos1, __n2, __c);
1471     + return *this;
1472     + }
1473     +
1474     + basic_string&
1475     + _M_replace_safe(size_type __pos1, size_type __n1, const _CharT* __s,
1476     + size_type __n2)
1477     + {
1478     + _M_mutate(__pos1, __n1, __n2);
1479     + if (__n2)
1480     + _M_copy(_M_data() + __pos1, __s, __n2);
1481     + return *this;
1482     + }
1483     +
1484     + // _S_construct_aux is used to implement the 21.3.1 para 15 which
1485     + // requires special behaviour if _InIter is an integral type
1486     + template<class _InIterator>
1487     + static _CharT*
1488     + _S_construct_aux(_InIterator __beg, _InIterator __end,
1489     + const _Alloc& __a, __false_type)
1490     + {
1491     + typedef typename iterator_traits<_InIterator>::iterator_category _Tag;
1492     + return _S_construct(__beg, __end, __a, _Tag());
1493     + }
1494     +
1495     + template<class _InIterator>
1496     + static _CharT*
1497     + _S_construct_aux(_InIterator __beg, _InIterator __end,
1498     + const _Alloc& __a, __true_type)
1499     + { return _S_construct(static_cast<size_type>(__beg),
1500     + static_cast<value_type>(__end), __a); }
1501     +
1502     + template<class _InIterator>
1503     + static _CharT*
1504     + _S_construct(_InIterator __beg, _InIterator __end, const _Alloc& __a)
1505     + {
1506     + typedef typename _Is_integer<_InIterator>::_Integral _Integral;
1507     + return _S_construct_aux(__beg, __end, __a, _Integral());
1508     + }
1509     +
1510     + // For Input Iterators, used in istreambuf_iterators, etc.
1511     + template<class _InIterator>
1512     + static _CharT*
1513     + _S_construct(_InIterator __beg, _InIterator __end, const _Alloc& __a,
1514     + input_iterator_tag);
1515     +
1516     + // For forward_iterators up to random_access_iterators, used for
1517     + // string::iterator, _CharT*, etc.
1518     + template<class _FwdIterator>
1519     + static _CharT*
1520     + _S_construct(_FwdIterator __beg, _FwdIterator __end, const _Alloc& __a,
1521     + forward_iterator_tag);
1522     +
1523     + static _CharT*
1524     + _S_construct(size_type __req, _CharT __c, const _Alloc& __a);
1525     +
1526     + public:
1527     +
1528     + /**
1529     + * @brief Copy substring into C string.
1530     + * @param s C string to copy value into.
1531     + * @param n Number of characters to copy.
1532     + * @param pos Index of first character to copy.
1533     + * @return Number of characters actually copied
1534     + * @throw std::out_of_range If pos > size().
1535     + *
1536     + * Copies up to @a n characters starting at @a pos into the C string @a
1537     + * s. If @a pos is greater than size(), out_of_range is thrown.
1538     + */
1539     + size_type
1540     + copy(_CharT* __s, size_type __n, size_type __pos = 0) const;
1541     +
1542     + /**
1543     + * @brief Swap contents with another string.
1544     + * @param s String to swap with.
1545     + *
1546     + * Exchanges the contents of this string with that of @a s in constant
1547     + * time.
1548     + */
1549     + void
1550     + swap(basic_string& __s);
1551     +
1552     + // String operations:
1553     + /**
1554     + * @brief Return const pointer to null-terminated contents.
1555     + *
1556     + * This is a handle to internal data. Do not modify or dire things may
1557     + * happen.
1558     + */
1559     + const _CharT*
1560     + c_str() const
1561     + { return _M_data(); }
1562     +
1563     + /**
1564     + * @brief Return const pointer to contents.
1565     + *
1566     + * This is a handle to internal data. Do not modify or dire things may
1567     + * happen.
1568     + */
1569     + const _CharT*
1570     + data() const
1571     + { return _M_data(); }
1572     +
1573     + /**
1574     + * @brief Return copy of allocator used to construct this string.
1575     + */
1576     + allocator_type
1577     + get_allocator() const
1578     + { return _M_dataplus; }
1579     +
1580     + /**
1581     + * @brief Find position of a C substring.
1582     + * @param s C string to locate.
1583     + * @param pos Index of character to search from.
1584     + * @param n Number of characters from @a s to search for.
1585     + * @return Index of start of first occurrence.
1586     + *
1587     + * Starting from @a pos, searches forward for the first @a n characters
1588     + * in @a s within this string. If found, returns the index where it
1589     + * begins. If not found, returns npos.
1590     + */
1591     + size_type
1592     + find(const _CharT* __s, size_type __pos, size_type __n) const;
1593     +
1594     + /**
1595     + * @brief Find position of a string.
1596     + * @param str String to locate.
1597     + * @param pos Index of character to search from (default 0).
1598     + * @return Index of start of first occurrence.
1599     + *
1600     + * Starting from @a pos, searches forward for value of @a str within
1601     + * this string. If found, returns the index where it begins. If not
1602     + * found, returns npos.
1603     + */
1604     + size_type
1605     + find(const basic_string& __str, size_type __pos = 0) const
1606     + { return this->find(__str.data(), __pos, __str.size()); }
1607     +
1608     + /**
1609     + * @brief Find position of a C string.
1610     + * @param s C string to locate.
1611     + * @param pos Index of character to search from (default 0).
1612     + * @return Index of start of first occurrence.
1613     + *
1614     + * Starting from @a pos, searches forward for the value of @a s within
1615     + * this string. If found, returns the index where it begins. If not
1616     + * found, returns npos.
1617     + */
1618     + size_type
1619     + find(const _CharT* __s, size_type __pos = 0) const
1620     + {
1621     + __glibcxx_requires_string(__s);
1622     + return this->find(__s, __pos, traits_type::length(__s));
1623     + }
1624     +
1625     + /**
1626     + * @brief Find position of a character.
1627     + * @param c Character to locate.
1628     + * @param pos Index of character to search from (default 0).
1629     + * @return Index of first occurrence.
1630     + *
1631     + * Starting from @a pos, searches forward for @a c within this string.
1632     + * If found, returns the index where it was found. If not found,
1633     + * returns npos.
1634     + */
1635     + size_type
1636     + find(_CharT __c, size_type __pos = 0) const;
1637     +
1638     + /**
1639     + * @brief Find last position of a string.
1640     + * @param str String to locate.
1641     + * @param pos Index of character to search back from (default end).
1642     + * @return Index of start of last occurrence.
1643     + *
1644     + * Starting from @a pos, searches backward for value of @a str within
1645     + * this string. If found, returns the index where it begins. If not
1646     + * found, returns npos.
1647     + */
1648     + size_type
1649     + rfind(const basic_string& __str, size_type __pos = npos) const
1650     + { return this->rfind(__str.data(), __pos, __str.size()); }
1651     +
1652     + /**
1653     + * @brief Find last position of a C substring.
1654     + * @param s C string to locate.
1655     + * @param pos Index of character to search back from.
1656     + * @param n Number of characters from s to search for.
1657     + * @return Index of start of last occurrence.
1658     + *
1659     + * Starting from @a pos, searches backward for the first @a n
1660     + * characters in @a s within this string. If found, returns the index
1661     + * where it begins. If not found, returns npos.
1662     + */
1663     + size_type
1664     + rfind(const _CharT* __s, size_type __pos, size_type __n) const;
1665     +
1666     + /**
1667     + * @brief Find last position of a C string.
1668     + * @param s C string to locate.
1669     + * @param pos Index of character to start search at (default 0).
1670     + * @return Index of start of last occurrence.
1671     + *
1672     + * Starting from @a pos, searches backward for the value of @a s within
1673     + * this string. If found, returns the index where it begins. If not
1674     + * found, returns npos.
1675     + */
1676     + size_type
1677     + rfind(const _CharT* __s, size_type __pos = npos) const
1678     + {
1679     + __glibcxx_requires_string(__s);
1680     + return this->rfind(__s, __pos, traits_type::length(__s));
1681     + }
1682     +
1683     + /**
1684     + * @brief Find last position of a character.
1685     + * @param c Character to locate.
1686     + * @param pos Index of character to search back from (default 0).
1687     + * @return Index of last occurrence.
1688     + *
1689     + * Starting from @a pos, searches backward for @a c within this string.
1690     + * If found, returns the index where it was found. If not found,
1691     + * returns npos.
1692     + */
1693     + size_type
1694     + rfind(_CharT __c, size_type __pos = npos) const;
1695     +
1696     + /**
1697     + * @brief Find position of a character of string.
1698     + * @param str String containing characters to locate.
1699     + * @param pos Index of character to search from (default 0).
1700     + * @return Index of first occurrence.
1701     + *
1702     + * Starting from @a pos, searches forward for one of the characters of
1703     + * @a str within this string. If found, returns the index where it was
1704     + * found. If not found, returns npos.
1705     + */
1706     + size_type
1707     + find_first_of(const basic_string& __str, size_type __pos = 0) const
1708     + { return this->find_first_of(__str.data(), __pos, __str.size()); }
1709     +
1710     + /**
1711     + * @brief Find position of a character of C substring.
1712     + * @param s String containing characters to locate.
1713     + * @param pos Index of character to search from (default 0).
1714     + * @param n Number of characters from s to search for.
1715     + * @return Index of first occurrence.
1716     + *
1717     + * Starting from @a pos, searches forward for one of the first @a n
1718     + * characters of @a s within this string. If found, returns the index
1719     + * where it was found. If not found, returns npos.
1720     + */
1721     + size_type
1722     + find_first_of(const _CharT* __s, size_type __pos, size_type __n) const;
1723     +
1724     + /**
1725     + * @brief Find position of a character of C string.
1726     + * @param s String containing characters to locate.
1727     + * @param pos Index of character to search from (default 0).
1728     + * @return Index of first occurrence.
1729     + *
1730     + * Starting from @a pos, searches forward for one of the characters of
1731     + * @a s within this string. If found, returns the index where it was
1732     + * found. If not found, returns npos.
1733     + */
1734     + size_type
1735     + find_first_of(const _CharT* __s, size_type __pos = 0) const
1736     + {
1737     + __glibcxx_requires_string(__s);
1738     + return this->find_first_of(__s, __pos, traits_type::length(__s));
1739     + }
1740     +
1741     + /**
1742     + * @brief Find position of a character.
1743     + * @param c Character to locate.
1744     + * @param pos Index of character to search from (default 0).
1745     + * @return Index of first occurrence.
1746     + *
1747     + * Starting from @a pos, searches forward for the character @a c within
1748     + * this string. If found, returns the index where it was found. If
1749     + * not found, returns npos.
1750     + *
1751     + * Note: equivalent to find(c, pos).
1752     + */
1753     + size_type
1754     + find_first_of(_CharT __c, size_type __pos = 0) const
1755     + { return this->find(__c, __pos); }
1756     +
1757     + /**
1758     + * @brief Find last position of a character of string.
1759     + * @param str String containing characters to locate.
1760     + * @param pos Index of character to search back from (default end).
1761     + * @return Index of last occurrence.
1762     + *
1763     + * Starting from @a pos, searches backward for one of the characters of
1764     + * @a str within this string. If found, returns the index where it was
1765     + * found. If not found, returns npos.
1766     + */
1767     + size_type
1768     + find_last_of(const basic_string& __str, size_type __pos = npos) const
1769     + { return this->find_last_of(__str.data(), __pos, __str.size()); }
1770     +
1771     + /**
1772     + * @brief Find last position of a character of C substring.
1773     + * @param s C string containing characters to locate.
1774     + * @param pos Index of character to search back from (default end).
1775     + * @param n Number of characters from s to search for.
1776     + * @return Index of last occurrence.
1777     + *
1778     + * Starting from @a pos, searches backward for one of the first @a n
1779     + * characters of @a s within this string. If found, returns the index
1780     + * where it was found. If not found, returns npos.
1781     + */
1782     + size_type
1783     + find_last_of(const _CharT* __s, size_type __pos, size_type __n) const;
1784     +
1785     + /**
1786     + * @brief Find last position of a character of C string.
1787     + * @param s C string containing characters to locate.
1788     + * @param pos Index of character to search back from (default end).
1789     + * @return Index of last occurrence.
1790     + *
1791     + * Starting from @a pos, searches backward for one of the characters of
1792     + * @a s within this string. If found, returns the index where it was
1793     + * found. If not found, returns npos.
1794     + */
1795     + size_type
1796     + find_last_of(const _CharT* __s, size_type __pos = npos) const
1797     + {
1798     + __glibcxx_requires_string(__s);
1799     + return this->find_last_of(__s, __pos, traits_type::length(__s));
1800     + }
1801     +
1802     + /**
1803     + * @brief Find last position of a character.
1804     + * @param c Character to locate.
1805     + * @param pos Index of character to search back from (default 0).
1806     + * @return Index of last occurrence.
1807     + *
1808     + * Starting from @a pos, searches backward for @a c within this string.
1809     + * If found, returns the index where it was found. If not found,
1810     + * returns npos.
1811     + *
1812     + * Note: equivalent to rfind(c, pos).
1813     + */
1814     + size_type
1815     + find_last_of(_CharT __c, size_type __pos = npos) const
1816     + { return this->rfind(__c, __pos); }
1817     +
1818     + /**
1819     + * @brief Find position of a character not in string.
1820     + * @param str String containing characters to avoid.
1821     + * @param pos Index of character to search from (default 0).
1822     + * @return Index of first occurrence.
1823     + *
1824     + * Starting from @a pos, searches forward for a character not contained
1825     + * in @a str within this string. If found, returns the index where it
1826     + * was found. If not found, returns npos.
1827     + */
1828     + size_type
1829     + find_first_not_of(const basic_string& __str, size_type __pos = 0) const
1830     + { return this->find_first_not_of(__str.data(), __pos, __str.size()); }
1831     +
1832     + /**
1833     + * @brief Find position of a character not in C substring.
1834     + * @param s C string containing characters to avoid.
1835     + * @param pos Index of character to search from (default 0).
1836     + * @param n Number of characters from s to consider.
1837     + * @return Index of first occurrence.
1838     + *
1839     + * Starting from @a pos, searches forward for a character not contained
1840     + * in the first @a n characters of @a s within this string. If found,
1841     + * returns the index where it was found. If not found, returns npos.
1842     + */
1843     + size_type
1844     + find_first_not_of(const _CharT* __s, size_type __pos,
1845     + size_type __n) const;
1846     +
1847     + /**
1848     + * @brief Find position of a character not in C string.
1849     + * @param s C string containing characters to avoid.
1850     + * @param pos Index of character to search from (default 0).
1851     + * @return Index of first occurrence.
1852     + *
1853     + * Starting from @a pos, searches forward for a character not contained
1854     + * in @a s within this string. If found, returns the index where it
1855     + * was found. If not found, returns npos.
1856     + */
1857     + size_type
1858     + find_first_not_of(const _CharT* __s, size_type __pos = 0) const
1859     + {
1860     + __glibcxx_requires_string(__s);
1861     + return this->find_first_not_of(__s, __pos, traits_type::length(__s));
1862     + }
1863     +
1864     + /**
1865     + * @brief Find position of a different character.
1866     + * @param c Character to avoid.
1867     + * @param pos Index of character to search from (default 0).
1868     + * @return Index of first occurrence.
1869     + *
1870     + * Starting from @a pos, searches forward for a character other than @a c
1871     + * within this string. If found, returns the index where it was found.
1872     + * If not found, returns npos.
1873     + */
1874     + size_type
1875     + find_first_not_of(_CharT __c, size_type __pos = 0) const;
1876     +
1877     + /**
1878     + * @brief Find last position of a character not in string.
1879     + * @param str String containing characters to avoid.
1880     + * @param pos Index of character to search from (default 0).
1881     + * @return Index of first occurrence.
1882     + *
1883     + * Starting from @a pos, searches backward for a character not
1884     + * contained in @a str within this string. If found, returns the index
1885     + * where it was found. If not found, returns npos.
1886     + */
1887     + size_type
1888     + find_last_not_of(const basic_string& __str, size_type __pos = npos) const
1889     + { return this->find_last_not_of(__str.data(), __pos, __str.size()); }
1890     +
1891     + /**
1892     + * @brief Find last position of a character not in C substring.
1893     + * @param s C string containing characters to avoid.
1894     + * @param pos Index of character to search from (default 0).
1895     + * @param n Number of characters from s to consider.
1896     + * @return Index of first occurrence.
1897     + *
1898     + * Starting from @a pos, searches backward for a character not
1899     + * contained in the first @a n characters of @a s within this string.
1900     + * If found, returns the index where it was found. If not found,
1901     + * returns npos.
1902     + */
1903     + size_type
1904     + find_last_not_of(const _CharT* __s, size_type __pos,
1905     + size_type __n) const;
1906     + /**
1907     + * @brief Find position of a character not in C string.
1908     + * @param s C string containing characters to avoid.
1909     + * @param pos Index of character to search from (default 0).
1910     + * @return Index of first occurrence.
1911     + *
1912     + * Starting from @a pos, searches backward for a character not
1913     + * contained in @a s within this string. If found, returns the index
1914     + * where it was found. If not found, returns npos.
1915     + */
1916     + size_type
1917     + find_last_not_of(const _CharT* __s, size_type __pos = npos) const
1918     + {
1919     + __glibcxx_requires_string(__s);
1920     + return this->find_last_not_of(__s, __pos, traits_type::length(__s));
1921     + }
1922     +
1923     + /**
1924     + * @brief Find last position of a different character.
1925     + * @param c Character to avoid.
1926     + * @param pos Index of character to search from (default 0).
1927     + * @return Index of first occurrence.
1928     + *
1929     + * Starting from @a pos, searches backward for a character other than
1930     + * @a c within this string. If found, returns the index where it was
1931     + * found. If not found, returns npos.
1932     + */
1933     + size_type
1934     + find_last_not_of(_CharT __c, size_type __pos = npos) const;
1935     +
1936     + /**
1937     + * @brief Get a substring.
1938     + * @param pos Index of first character (default 0).
1939     + * @param n Number of characters in substring (default remainder).
1940     + * @return The new string.
1941     + * @throw std::out_of_range If pos > size().
1942     + *
1943     + * Construct and return a new string using the @a n characters starting
1944     + * at @a pos. If the string is too short, use the remainder of the
1945     + * characters. If @a pos is beyond the end of the string, out_of_range
1946     + * is thrown.
1947     + */
1948     + basic_string
1949     + substr(size_type __pos = 0, size_type __n = npos) const
1950     + { return basic_string(*this,
1951     + _M_check(__pos, "basic_string::substr"), __n); }
1952     +
1953     + /**
1954     + * @brief Compare to a string.
1955     + * @param str String to compare against.
1956     + * @return Integer < 0, 0, or > 0.
1957     + *
1958     + * Returns an integer < 0 if this string is ordered before @a str, 0 if
1959     + * their values are equivalent, or > 0 if this string is ordered after
1960     + * @a str. If the lengths of @a str and this string are different, the
1961     + * shorter one is ordered first. If they are the same, returns the
1962     + * result of traits::compare(data(),str.data(),size());
1963     + */
1964     + int
1965     + compare(const basic_string& __str) const
1966     + {
1967     + const size_type __size = this->size();
1968     + const size_type __osize = __str.size();
1969     + const size_type __len = std::min(__size, __osize);
1970     +
1971     + int __r = traits_type::compare(_M_data(), __str.data(), __len);
1972     + if (!__r)
1973     + __r = __size - __osize;
1974     + return __r;
1975     + }
1976     +
1977     + /**
1978     + * @brief Compare substring to a string.
1979     + * @param pos Index of first character of substring.
1980     + * @param n Number of characters in substring.
1981     + * @param str String to compare against.
1982     + * @return Integer < 0, 0, or > 0.
1983     + *
1984     + * Form the substring of this string from the @a n characters starting
1985     + * at @a pos. Returns an integer < 0 if the substring is ordered
1986     + * before @a str, 0 if their values are equivalent, or > 0 if the
1987     + * substring is ordered after @a str. If the lengths @a of str and the
1988     + * substring are different, the shorter one is ordered first. If they
1989     + * are the same, returns the result of
1990     + * traits::compare(substring.data(),str.data(),size());
1991     + */
1992     + int
1993     + compare(size_type __pos, size_type __n, const basic_string& __str) const;
1994     +
1995     + /**
1996     + * @brief Compare substring to a substring.
1997     + * @param pos1 Index of first character of substring.
1998     + * @param n1 Number of characters in substring.
1999     + * @param str String to compare against.
2000     + * @param pos2 Index of first character of substring of str.
2001     + * @param n2 Number of characters in substring of str.
2002     + * @return Integer < 0, 0, or > 0.
2003     + *
2004     + * Form the substring of this string from the @a n1 characters starting
2005     + * at @a pos1. Form the substring of @a str from the @a n2 characters
2006     + * starting at @a pos2. Returns an integer < 0 if this substring is
2007     + * ordered before the substring of @a str, 0 if their values are
2008     + * equivalent, or > 0 if this substring is ordered after the substring
2009     + * of @a str. If the lengths of the substring of @a str and this
2010     + * substring are different, the shorter one is ordered first. If they
2011     + * are the same, returns the result of
2012     + * traits::compare(substring.data(),str.substr(pos2,n2).data(),size());
2013     + */
2014     + int
2015     + compare(size_type __pos1, size_type __n1, const basic_string& __str,
2016     + size_type __pos2, size_type __n2) const;
2017     +
2018     + /**
2019     + * @brief Compare to a C string.
2020     + * @param s C string to compare against.
2021     + * @return Integer < 0, 0, or > 0.
2022     + *
2023     + * Returns an integer < 0 if this string is ordered before @a s, 0 if
2024     + * their values are equivalent, or > 0 if this string is ordered after
2025     + * @a s. If the lengths of @a s and this string are different, the
2026     + * shorter one is ordered first. If they are the same, returns the
2027     + * result of traits::compare(data(),s,size());
2028     + */
2029     + int
2030     + compare(const _CharT* __s) const;
2031     +
2032     + // _GLIBCXX_RESOLVE_LIB_DEFECTS
2033     + // 5 String::compare specification questionable
2034     + /**
2035     + * @brief Compare substring to a C string.
2036     + * @param pos Index of first character of substring.
2037     + * @param n1 Number of characters in substring.
2038     + * @param s C string to compare against.
2039     + * @return Integer < 0, 0, or > 0.
2040     + *
2041     + * Form the substring of this string from the @a n1 characters starting
2042     + * at @a pos. Returns an integer < 0 if the substring is ordered
2043     + * before @a s, 0 if their values are equivalent, or > 0 if the
2044     + * substring is ordered after @a s. If the lengths of @a s and the
2045     + * substring are different, the shorter one is ordered first. If they
2046     + * are the same, returns the result of
2047     + * traits::compare(substring.data(),s,size());
2048     + */
2049     + int
2050     + compare(size_type __pos, size_type __n1, const _CharT* __s) const;
2051     +
2052     + /**
2053     + * @brief Compare substring against a character array.
2054     + * @param pos1 Index of first character of substring.
2055     + * @param n1 Number of characters in substring.
2056     + * @param s character array to compare against.
2057     + * @param n2 Number of characters of s.
2058     + * @return Integer < 0, 0, or > 0.
2059     + *
2060     + * Form the substring of this string from the @a n1 characters starting
2061     + * at @a pos1. Form a string from the first @a n2 characters of @a s.
2062     + * Returns an integer < 0 if this substring is ordered before the string
2063     + * from @a s, 0 if their values are equivalent, or > 0 if this substring
2064     + * is ordered after the string from @a s. If the lengths of this
2065     + * substring and @a n2 are different, the shorter one is ordered first.
2066     + * If they are the same, returns the result of
2067     + * traits::compare(substring.data(),s,size());
2068     + *
2069     + * NB: s must have at least n2 characters, '\0' has no special
2070     + * meaning.
2071     + */
2072     + int
2073     + compare(size_type __pos, size_type __n1, const _CharT* __s,
2074     + size_type __n2) const;
2075     + };
2076     +
2077     + template<typename _CharT, typename _Traits, typename _Alloc>
2078     + inline basic_string<_CharT, _Traits, _Alloc>::
2079     + basic_string()
2080     +#ifndef _GLIBCXX_FULLY_DYNAMIC_STRING
2081     + : _M_dataplus(_S_empty_rep()._M_refdata(), _Alloc()) { }
2082     +#else
2083     + : _M_dataplus(_S_construct(size_type(), _CharT(), _Alloc()), _Alloc()) { }
2084     +#endif
2085     +
2086     + // operator+
2087     + /**
2088     + * @brief Concatenate two strings.
2089     + * @param lhs First string.
2090     + * @param rhs Last string.
2091     + * @return New string with value of @a lhs followed by @a rhs.
2092     + */
2093     + template<typename _CharT, typename _Traits, typename _Alloc>
2094     + basic_string<_CharT, _Traits, _Alloc>
2095     + operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
2096     + const basic_string<_CharT, _Traits, _Alloc>& __rhs)
2097     + {
2098     + basic_string<_CharT, _Traits, _Alloc> __str(__lhs);
2099     + __str.append(__rhs);
2100     + return __str;
2101     + }
2102     +
2103     + /**
2104     + * @brief Concatenate C string and string.
2105     + * @param lhs First string.
2106     + * @param rhs Last string.
2107     + * @return New string with value of @a lhs followed by @a rhs.
2108     + */
2109     + template<typename _CharT, typename _Traits, typename _Alloc>
2110     + basic_string<_CharT,_Traits,_Alloc>
2111     + operator+(const _CharT* __lhs,
2112     + const basic_string<_CharT,_Traits,_Alloc>& __rhs);
2113     +
2114     + /**
2115     + * @brief Concatenate character and string.
2116     + * @param lhs First string.
2117     + * @param rhs Last string.
2118     + * @return New string with @a lhs followed by @a rhs.
2119     + */
2120     + template<typename _CharT, typename _Traits, typename _Alloc>
2121     + basic_string<_CharT,_Traits,_Alloc>
2122     + operator+(_CharT __lhs, const basic_string<_CharT,_Traits,_Alloc>& __rhs);
2123     +
2124     + /**
2125     + * @brief Concatenate string and C string.
2126     + * @param lhs First string.
2127     + * @param rhs Last string.
2128     + * @return New string with @a lhs followed by @a rhs.
2129     + */
2130     + template<typename _CharT, typename _Traits, typename _Alloc>
2131     + inline basic_string<_CharT, _Traits, _Alloc>
2132     + operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
2133     + const _CharT* __rhs)
2134     + {
2135     + basic_string<_CharT, _Traits, _Alloc> __str(__lhs);
2136     + __str.append(__rhs);
2137     + return __str;
2138     + }
2139     +
2140     + /**
2141     + * @brief Concatenate string and character.
2142     + * @param lhs First string.
2143     + * @param rhs Last string.
2144     + * @return New string with @a lhs followed by @a rhs.
2145     + */
2146     + template<typename _CharT, typename _Traits, typename _Alloc>
2147     + inline basic_string<_CharT, _Traits, _Alloc>
2148     + operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs, _CharT __rhs)
2149     + {
2150     + typedef basic_string<_CharT, _Traits, _Alloc> __string_type;
2151     + typedef typename __string_type::size_type __size_type;
2152     + __string_type __str(__lhs);
2153     + __str.append(__size_type(1), __rhs);
2154     + return __str;
2155     + }
2156     +
2157     + // operator ==
2158     + /**
2159     + * @brief Test equivalence of two strings.
2160     + * @param lhs First string.
2161     + * @param rhs Second string.
2162     + * @return True if @a lhs.compare(@a rhs) == 0. False otherwise.
2163     + */
2164     + template<typename _CharT, typename _Traits, typename _Alloc>
2165     + inline bool
2166     + operator==(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
2167     + const basic_string<_CharT, _Traits, _Alloc>& __rhs)
2168     + { return __lhs.compare(__rhs) == 0; }
2169     +
2170     + /**
2171     + * @brief Test equivalence of C string and string.
2172     + * @param lhs C string.
2173     + * @param rhs String.
2174     + * @return True if @a rhs.compare(@a lhs) == 0. False otherwise.
2175     + */
2176     + template<typename _CharT, typename _Traits, typename _Alloc>
2177     + inline bool
2178     + operator==(const _CharT* __lhs,
2179     + const basic_string<_CharT, _Traits, _Alloc>& __rhs)
2180     + { return __rhs.compare(__lhs) == 0; }
2181     +
2182     + /**
2183     + * @brief Test equivalence of string and C string.
2184     + * @param lhs String.
2185     + * @param rhs C string.
2186     + * @return True if @a lhs.compare(@a rhs) == 0. False otherwise.
2187     + */
2188     + template<typename _CharT, typename _Traits, typename _Alloc>
2189     + inline bool
2190     + operator==(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
2191     + const _CharT* __rhs)
2192     + { return __lhs.compare(__rhs) == 0; }
2193     +
2194     + // operator !=
2195     + /**
2196     + * @brief Test difference of two strings.
2197     + * @param lhs First string.
2198     + * @param rhs Second string.
2199     + * @return True if @a lhs.compare(@a rhs) != 0. False otherwise.
2200     + */
2201     + template<typename _CharT, typename _Traits, typename _Alloc>
2202     + inline bool
2203     + operator!=(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
2204     + const basic_string<_CharT, _Traits, _Alloc>& __rhs)
2205     + { return __rhs.compare(__lhs) != 0; }
2206     +
2207     + /**
2208     + * @brief Test difference of C string and string.
2209     + * @param lhs C string.
2210     + * @param rhs String.
2211     + * @return True if @a rhs.compare(@a lhs) != 0. False otherwise.
2212     + */
2213     + template<typename _CharT, typename _Traits, typename _Alloc>
2214     + inline bool
2215     + operator!=(const _CharT* __lhs,
2216     + const basic_string<_CharT, _Traits, _Alloc>& __rhs)
2217     + { return __rhs.compare(__lhs) != 0; }
2218     +
2219     + /**
2220     + * @brief Test difference of string and C string.
2221     + * @param lhs String.
2222     + * @param rhs C string.
2223     + * @return True if @a lhs.compare(@a rhs) != 0. False otherwise.
2224     + */
2225     + template<typename _CharT, typename _Traits, typename _Alloc>
2226     + inline bool
2227     + operator!=(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
2228     + const _CharT* __rhs)
2229     + { return __lhs.compare(__rhs) != 0; }
2230     +
2231     + // operator <
2232     + /**
2233     + * @brief Test if string precedes string.
2234     + * @param lhs First string.
2235     + * @param rhs Second string.
2236     + * @return True if @a lhs precedes @a rhs. False otherwise.
2237     + */
2238     + template<typename _CharT, typename _Traits, typename _Alloc>
2239     + inline bool
2240     + operator<(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
2241     + const basic_string<_CharT, _Traits, _Alloc>& __rhs)
2242     + { return __lhs.compare(__rhs) < 0; }
2243     +
2244     + /**
2245     + * @brief Test if string precedes C string.
2246     + * @param lhs String.
2247     + * @param rhs C string.
2248     + * @return True if @a lhs precedes @a rhs. False otherwise.
2249     + */
2250     + template<typename _CharT, typename _Traits, typename _Alloc>
2251     + inline bool
2252     + operator<(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
2253     + const _CharT* __rhs)
2254     + { return __lhs.compare(__rhs) < 0; }
2255     +
2256     + /**
2257     + * @brief Test if C string precedes string.
2258     + * @param lhs C string.
2259     + * @param rhs String.
2260     + * @return True if @a lhs precedes @a rhs. False otherwise.
2261     + */
2262     + template<typename _CharT, typename _Traits, typename _Alloc>
2263     + inline bool
2264     + operator<(const _CharT* __lhs,
2265     + const basic_string<_CharT, _Traits, _Alloc>& __rhs)
2266     + { return __rhs.compare(__lhs) > 0; }
2267     +
2268     + // operator >
2269     + /**
2270     + * @brief Test if string follows string.
2271     + * @param lhs First string.
2272     + * @param rhs Second string.
2273     + * @return True if @a lhs follows @a rhs. False otherwise.
2274     + */
2275     + template<typename _CharT, typename _Traits, typename _Alloc>
2276     + inline bool
2277     + operator>(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
2278     + const basic_string<_CharT, _Traits, _Alloc>& __rhs)
2279     + { return __lhs.compare(__rhs) > 0; }
2280     +
2281     + /**
2282     + * @brief Test if string follows C string.
2283     + * @param lhs String.
2284     + * @param rhs C string.
2285     + * @return True if @a lhs follows @a rhs. False otherwise.
2286     + */
2287     + template<typename _CharT, typename _Traits, typename _Alloc>
2288     + inline bool
2289     + operator>(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
2290     + const _CharT* __rhs)
2291     + { return __lhs.compare(__rhs) > 0; }
2292     +
2293     + /**
2294     + * @brief Test if C string follows string.
2295     + * @param lhs C string.
2296     + * @param rhs String.
2297     + * @return True if @a lhs follows @a rhs. False otherwise.
2298     + */
2299     + template<typename _CharT, typename _Traits, typename _Alloc>
2300     + inline bool
2301     + operator>(const _CharT* __lhs,
2302     + const basic_string<_CharT, _Traits, _Alloc>& __rhs)
2303     + { return __rhs.compare(__lhs) < 0; }
2304     +
2305     + // operator <=
2306     + /**
2307     + * @brief Test if string doesn't follow string.
2308     + * @param lhs First string.
2309     + * @param rhs Second string.
2310     + * @return True if @a lhs doesn't follow @a rhs. False otherwise.
2311     + */
2312     + template<typename _CharT, typename _Traits, typename _Alloc>
2313     + inline bool
2314     + operator<=(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
2315     + const basic_string<_CharT, _Traits, _Alloc>& __rhs)
2316     + { return __lhs.compare(__rhs) <= 0; }
2317     +
2318     + /**
2319     + * @brief Test if string doesn't follow C string.
2320     + * @param lhs String.
2321     + * @param rhs C string.
2322     + * @return True if @a lhs doesn't follow @a rhs. False otherwise.
2323     + */
2324     + template<typename _CharT, typename _Traits, typename _Alloc>
2325     + inline bool
2326     + operator<=(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
2327     + const _CharT* __rhs)
2328     + { return __lhs.compare(__rhs) <= 0; }
2329     +
2330     + /**
2331     + * @brief Test if C string doesn't follow string.
2332     + * @param lhs C string.
2333     + * @param rhs String.
2334     + * @return True if @a lhs doesn't follow @a rhs. False otherwise.
2335     + */
2336     + template<typename _CharT, typename _Traits, typename _Alloc>
2337     + inline bool
2338     + operator<=(const _CharT* __lhs,
2339     + const basic_string<_CharT, _Traits, _Alloc>& __rhs)
2340     + { return __rhs.compare(__lhs) >= 0; }
2341     +
2342     + // operator >=
2343     + /**
2344     + * @brief Test if string doesn't precede string.
2345     + * @param lhs First string.
2346     + * @param rhs Second string.
2347     + * @return True if @a lhs doesn't precede @a rhs. False otherwise.
2348     + */
2349     + template<typename _CharT, typename _Traits, typename _Alloc>
2350     + inline bool
2351     + operator>=(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
2352     + const basic_string<_CharT, _Traits, _Alloc>& __rhs)
2353     + { return __lhs.compare(__rhs) >= 0; }
2354     +
2355     + /**
2356     + * @brief Test if string doesn't precede C string.
2357     + * @param lhs String.
2358     + * @param rhs C string.
2359     + * @return True if @a lhs doesn't precede @a rhs. False otherwise.
2360     + */
2361     + template<typename _CharT, typename _Traits, typename _Alloc>
2362     + inline bool
2363     + operator>=(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
2364     + const _CharT* __rhs)
2365     + { return __lhs.compare(__rhs) >= 0; }
2366     +
2367     + /**
2368     + * @brief Test if C string doesn't precede string.
2369     + * @param lhs C string.
2370     + * @param rhs String.
2371     + * @return True if @a lhs doesn't precede @a rhs. False otherwise.
2372     + */
2373     + template<typename _CharT, typename _Traits, typename _Alloc>
2374     + inline bool
2375     + operator>=(const _CharT* __lhs,
2376     + const basic_string<_CharT, _Traits, _Alloc>& __rhs)
2377     + { return __rhs.compare(__lhs) <= 0; }
2378     +
2379     + /**
2380     + * @brief Swap contents of two strings.
2381     + * @param lhs First string.
2382     + * @param rhs Second string.
2383     + *
2384     + * Exchanges the contents of @a lhs and @a rhs in constant time.
2385     + */
2386     + template<typename _CharT, typename _Traits, typename _Alloc>
2387     + inline void
2388     + swap(basic_string<_CharT, _Traits, _Alloc>& __lhs,
2389     + basic_string<_CharT, _Traits, _Alloc>& __rhs)
2390     + { __lhs.swap(__rhs); }
2391     +
2392     + /**
2393     + * @brief Read stream into a string.
2394     + * @param is Input stream.
2395     + * @param str Buffer to store into.
2396     + * @return Reference to the input stream.
2397     + *
2398     + * Stores characters from @a is into @a str until whitespace is found, the
2399     + * end of the stream is encountered, or str.max_size() is reached. If
2400     + * is.width() is non-zero, that is the limit on the number of characters
2401     + * stored into @a str. Any previous contents of @a str are erased.
2402     + */
2403     + template<typename _CharT, typename _Traits, typename _Alloc>
2404     + basic_istream<_CharT, _Traits>&
2405     + operator>>(basic_istream<_CharT, _Traits>& __is,
2406     + basic_string<_CharT, _Traits, _Alloc>& __str);
2407     +
2408     + /**
2409     + * @brief Write string to a stream.
2410     + * @param os Output stream.
2411     + * @param str String to write out.
2412     + * @return Reference to the output stream.
2413     + *
2414     + * Output characters of @a str into os following the same rules as for
2415     + * writing a C string.
2416     + */
2417     + template<typename _CharT, typename _Traits, typename _Alloc>
2418     + basic_ostream<_CharT, _Traits>&
2419     + operator<<(basic_ostream<_CharT, _Traits>& __os,
2420     + const basic_string<_CharT, _Traits, _Alloc>& __str);
2421     +
2422     + /**
2423     + * @brief Read a line from stream into a string.
2424     + * @param is Input stream.
2425     + * @param str Buffer to store into.
2426     + * @param delim Character marking end of line.
2427     + * @return Reference to the input stream.
2428     + *
2429     + * Stores characters from @a is into @a str until @a delim is found, the
2430     + * end of the stream is encountered, or str.max_size() is reached. If
2431     + * is.width() is non-zero, that is the limit on the number of characters
2432     + * stored into @a str. Any previous contents of @a str are erased. If @a
2433     + * delim was encountered, it is extracted but not stored into @a str.
2434     + */
2435     + template<typename _CharT, typename _Traits, typename _Alloc>
2436     + basic_istream<_CharT,_Traits>&
2437     + getline(basic_istream<_CharT, _Traits>& __is,
2438     + basic_string<_CharT, _Traits, _Alloc>& __str, _CharT __delim);
2439     +
2440     + /**
2441     + * @brief Read a line from stream into a string.
2442     + * @param is Input stream.
2443     + * @param str Buffer to store into.
2444     + * @return Reference to the input stream.
2445     + *
2446     + * Stores characters from is into @a str until '\n' is found, the end of
2447     + * the stream is encountered, or str.max_size() is reached. If is.width()
2448     + * is non-zero, that is the limit on the number of characters stored into
2449     + * @a str. Any previous contents of @a str are erased. If end of line was
2450     + * encountered, it is extracted but not stored into @a str.
2451     + */
2452     + template<typename _CharT, typename _Traits, typename _Alloc>
2453     + inline basic_istream<_CharT,_Traits>&
2454     + getline(basic_istream<_CharT, _Traits>& __is,
2455     + basic_string<_CharT, _Traits, _Alloc>& __str);
2456     +} // namespace std
2457     +
2458     +#endif /* _BASIC_STRING_H */
2459     +#else /* ! __APPLE__ */
2460     +// Components for manipulating sequences of characters -*- C++ -*-
2461     +
2462     +// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
2463     +// Free Software Foundation, Inc.
2464     +//
2465     +// This file is part of the GNU ISO C++ Library. This library is free
2466     +// software; you can redistribute it and/or modify it under the
2467     +// terms of the GNU General Public License as published by the
2468     +// Free Software Foundation; either version 2, or (at your option)
2469     +// any later version.
2470     +
2471     +// This library is distributed in the hope that it will be useful,
2472     +// but WITHOUT ANY WARRANTY; without even the implied warranty of
2473     +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2474     +// GNU General Public License for more details.
2475     +
2476     +// You should have received a copy of the GNU General Public License along
2477     +// with this library; see the file COPYING. If not, write to the Free
2478     +// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
2479     +// USA.
2480     +
2481     +// As a special exception, you may use this file as part of a free software
2482     +// library without restriction. Specifically, if other files instantiate
2483     +// templates or use macros or inline functions from this file, or you compile
2484     +// this file and link it with other files to produce an executable, this
2485     +// file does not by itself cause the resulting executable to be covered by
2486     +// the GNU General Public License. This exception does not however
2487     +// invalidate any other reasons why the executable file might be covered by
2488     +// the GNU General Public License.
2489     +
2490     +//
2491     +// ISO C++ 14882: 21 Strings library
2492     +//
2493     +
2494     +/** @file basic_string.h
2495     + * This is an internal header file, included by other library headers.
2496     + * You should not attempt to use it directly.
2497     + */
2498     +
2499     +#ifndef _BASIC_STRING_H
2500     +#define _BASIC_STRING_H 1
2501     +
2502     +#pragma GCC system_header
2503     +
2504     +#include <bits/atomicity.h>
2505     +#include <debug/debug.h>
2506     +
2507     +namespace std
2508     +{
2509     + /**
2510     + * @class basic_string basic_string.h <string>
2511     + * @brief Managing sequences of characters and character-like objects.
2512     + *
2513     + * @ingroup Containers
2514     + * @ingroup Sequences
2515     + *
2516     + * Meets the requirements of a <a href="tables.html#65">container</a>, a
2517     + * <a href="tables.html#66">reversible container</a>, and a
2518     + * <a href="tables.html#67">sequence</a>. Of the
2519     + * <a href="tables.html#68">optional sequence requirements</a>, only
2520     + * @c push_back, @c at, and array access are supported.
2521     + *
2522     + * @doctodo
2523     + *
2524     + *
2525     + * @if maint
2526     + * Documentation? What's that?
2527     + * Nathan Myers <ncm@cantrip.org>.
2528     + *
2529     + * A string looks like this:
2530     + *
2531     + * @code
2532     + * [_Rep]
2533     + * _M_length
2534     + * [basic_string<char_type>] _M_capacity
2535     + * _M_dataplus _M_refcount
2536     + * _M_p ----------------> unnamed array of char_type
2537     + * @endcode
2538     + *
2539     + * Where the _M_p points to the first character in the string, and
2540     + * you cast it to a pointer-to-_Rep and subtract 1 to get a
2541     + * pointer to the header.
2542     + *
2543     + * This approach has the enormous advantage that a string object
2544     + * requires only one allocation. All the ugliness is confined
2545     + * within a single pair of inline functions, which each compile to
2546     + * a single "add" instruction: _Rep::_M_data(), and
2547     + * string::_M_rep(); and the allocation function which gets a
2548     + * block of raw bytes and with room enough and constructs a _Rep
2549     + * object at the front.
2550     + *
2551     + * The reason you want _M_data pointing to the character array and
2552     + * not the _Rep is so that the debugger can see the string
2553     + * contents. (Probably we should add a non-inline member to get
2554     + * the _Rep for the debugger to use, so users can check the actual
2555     + * string length.)
2556     + *
2557     + * Note that the _Rep object is a POD so that you can have a
2558     + * static "empty string" _Rep object already "constructed" before
2559     + * static constructors have run. The reference-count encoding is
2560     + * chosen so that a 0 indicates one reference, so you never try to
2561     + * destroy the empty-string _Rep object.
2562     + *
2563     + * All but the last paragraph is considered pretty conventional
2564     + * for a C++ string implementation.
2565     + * @endif
2566     + */
2567     + // 21.3 Template class basic_string
2568     + template<typename _CharT, typename _Traits, typename _Alloc>
2569     + class basic_string
2570     + {
2571     + // Types:
2572     + public:
2573     + typedef _Traits traits_type;
2574     + typedef typename _Traits::char_type value_type;
2575     + typedef _Alloc allocator_type;
2576     + typedef typename _Alloc::size_type size_type;
2577     + typedef typename _Alloc::difference_type difference_type;
2578     + typedef typename _Alloc::reference reference;
2579     + typedef typename _Alloc::const_reference const_reference;
2580     + typedef typename _Alloc::pointer pointer;
2581     + typedef typename _Alloc::const_pointer const_pointer;
2582     + typedef __gnu_cxx::__normal_iterator<pointer, basic_string> iterator;
2583     + typedef __gnu_cxx::__normal_iterator<const_pointer, basic_string>
2584     + const_iterator;
2585     + typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
2586     + typedef std::reverse_iterator<iterator> reverse_iterator;
2587     +
2588     + private:
2589     + // _Rep: string representation
2590     + // Invariants:
2591     + // 1. String really contains _M_length + 1 characters: due to 21.3.4
2592     + // must be kept null-terminated.
2593     + // 2. _M_capacity >= _M_length
2594     + // Allocated memory is always (_M_capacity + 1) * sizeof(_CharT).
2595     + // 3. _M_refcount has three states:
2596     + // -1: leaked, one reference, no ref-copies allowed, non-const.
2597     + // 0: one reference, non-const.
2598     + // n>0: n + 1 references, operations require a lock, const.
2599     + // 4. All fields==0 is an empty string, given the extra storage
2600     + // beyond-the-end for a null terminator; thus, the shared
2601     + // empty string representation needs no constructor.
2602     +
2603     + struct _Rep_base
2604     + {
2605     + size_type _M_length;
2606     + size_type _M_capacity;
2607     + _Atomic_word _M_refcount;
2608     + };
2609     +
2610     + struct _Rep : _Rep_base
2611     + {
2612     + // Types:
2613     + typedef typename _Alloc::template rebind<char>::other _Raw_bytes_alloc;
2614     +
2615     + // (Public) Data members:
2616     +
2617     + // The maximum number of individual char_type elements of an
2618     + // individual string is determined by _S_max_size. This is the
2619     + // value that will be returned by max_size(). (Whereas npos
2620     + // is the maximum number of bytes the allocator can allocate.)
2621     + // If one was to divvy up the theoretical largest size string,
2622     + // with a terminating character and m _CharT elements, it'd
2623     + // look like this:
2624     + // npos = sizeof(_Rep) + (m * sizeof(_CharT)) + sizeof(_CharT)
2625     + // Solving for m:
2626     + // m = ((npos - sizeof(_Rep))/sizeof(CharT)) - 1
2627     + // In addition, this implementation quarters this amount.
2628     + static const size_type _S_max_size;
2629     + static const _CharT _S_terminal;
2630     +
2631     + // The following storage is init'd to 0 by the linker, resulting
2632     + // (carefully) in an empty string with one reference.
2633     + static size_type _S_empty_rep_storage[];
2634     +
2635     + static _Rep&
2636     + _S_empty_rep()
2637     + { return *reinterpret_cast<_Rep*>(&_S_empty_rep_storage); }
2638     +
2639     + bool
2640     + _M_is_leaked() const
2641     + { return this->_M_refcount < 0; }
2642     +
2643     + bool
2644     + _M_is_shared() const
2645     + { return this->_M_refcount > 0; }
2646     +
2647     + void
2648     + _M_set_leaked()
2649     + { this->_M_refcount = -1; }
2650     +
2651     + void
2652     + _M_set_sharable()
2653     + { this->_M_refcount = 0; }
2654     +
2655     + void
2656     + _M_set_length_and_sharable(size_type __n)
2657     + {
2658     + this->_M_set_sharable(); // One reference.
2659     + this->_M_length = __n;
2660     + this->_M_refdata()[__n] = _S_terminal; // grrr. (per 21.3.4)
2661     + // You cannot leave those LWG people alone for a second.
2662     + }
2663     +
2664     + _CharT*
2665     + _M_refdata() throw()
2666     + { return reinterpret_cast<_CharT*>(this + 1); }
2667     +
2668     + _CharT*
2669     + _M_grab(const _Alloc& __alloc1, const _Alloc& __alloc2)
2670     + {
2671     + return (!_M_is_leaked() && __alloc1 == __alloc2)
2672     + ? _M_refcopy() : _M_clone(__alloc1);
2673     + }
2674     +
2675     + // Create & Destroy
2676     + static _Rep*
2677     + _S_create(size_type, size_type, const _Alloc&);
2678     +
2679     + void
2680     + _M_dispose(const _Alloc& __a)
2681     + {
2682     +#ifndef _GLIBCXX_FULLY_DYNAMIC_STRING
2683     + if (__builtin_expect(this != &_S_empty_rep(), false))
2684     +#endif
2685     + if (__gnu_cxx::__exchange_and_add(&this->_M_refcount, -1) <= 0)
2686     + _M_destroy(__a);
2687     + } // XXX MT
2688     +
2689     + void
2690     + _M_destroy(const _Alloc&) throw();
2691     +
2692     + _CharT*
2693     + _M_refcopy() throw()
2694     + {
2695     +#ifndef _GLIBCXX_FULLY_DYNAMIC_STRING
2696     + if (__builtin_expect(this != &_S_empty_rep(), false))
2697     +#endif
2698     + __gnu_cxx::__atomic_add(&this->_M_refcount, 1);
2699     + return _M_refdata();
2700     + } // XXX MT
2701     +
2702     + _CharT*
2703     + _M_clone(const _Alloc&, size_type __res = 0);
2704     + };
2705     +
2706     + // Use empty-base optimization: http://www.cantrip.org/emptyopt.html
2707     + struct _Alloc_hider : _Alloc
2708     + {
2709     + _Alloc_hider(_CharT* __dat, const _Alloc& __a)
2710     + : _Alloc(__a), _M_p(__dat) { }
2711     +
2712     + _CharT* _M_p; // The actual data.
2713     + };
2714     +
2715     + public:
2716     + // Data Members (public):
2717     + // NB: This is an unsigned type, and thus represents the maximum
2718     + // size that the allocator can hold.
2719     + /// Value returned by various member functions when they fail.
2720     + static const size_type npos = static_cast<size_type>(-1);
2721     +
2722     + private:
2723     + // Data Members (private):
2724     + mutable _Alloc_hider _M_dataplus;
2725     +
2726     + _CharT*
2727     + _M_data() const
2728     + { return _M_dataplus._M_p; }
2729     +
2730     + _CharT*
2731     + _M_data(_CharT* __p)
2732     + { return (_M_dataplus._M_p = __p); }
2733     +
2734     + _Rep*
2735     + _M_rep() const
2736     + { return &((reinterpret_cast<_Rep*> (_M_data()))[-1]); }
2737     +
2738     + // For the internal use we have functions similar to `begin'/`end'
2739     + // but they do not call _M_leak.
2740     + iterator
2741     + _M_ibegin() const
2742     + { return iterator(_M_data()); }
2743     +
2744     + iterator
2745     + _M_iend() const
2746     + { return iterator(_M_data() + this->size()); }
2747     +
2748     + void
2749     + _M_leak() // for use in begin() & non-const op[]
2750     + {
2751     + if (!_M_rep()->_M_is_leaked())
2752     + _M_leak_hard();
2753     + }
2754     +
2755     + size_type
2756     + _M_check(size_type __pos, const char* __s) const
2757     + {
2758     + if (__pos > this->size())
2759     + __throw_out_of_range(__N(__s));
2760     + return __pos;
2761     + }
2762     +
2763     + void
2764     + _M_check_length(size_type __n1, size_type __n2, const char* __s) const
2765     + {
2766     + if (this->max_size() - (this->size() - __n1) < __n2)
2767     + __throw_length_error(__N(__s));
2768     + }
2769     +
2770     + // NB: _M_limit doesn't check for a bad __pos value.
2771     + size_type
2772     + _M_limit(size_type __pos, size_type __off) const
2773     + {
2774     + const bool __testoff = __off < this->size() - __pos;
2775     + return __testoff ? __off : this->size() - __pos;
2776     + }
2777     +
2778     + // True if _Rep and source do not overlap.
2779     + bool
2780     + _M_disjunct(const _CharT* __s) const
2781     + {
2782     + less<const _CharT*> __less;
2783     + return (__less(__s, _M_data())
2784     + || __less(_M_data() + this->size(), __s));
2785     + }
2786     +
2787     + // When __n = 1 way faster than the general multichar
2788     + // traits_type::copy/move/assign.
2789     + static void
2790     + _M_copy(_CharT* __d, const _CharT* __s, size_type __n)
2791     + {
2792     + if (__n == 1)
2793     + traits_type::assign(*__d, *__s);
2794     + else
2795     + traits_type::copy(__d, __s, __n);
2796     + }
2797     +
2798     + static void
2799     + _M_move(_CharT* __d, const _CharT* __s, size_type __n)
2800     + {
2801     + if (__n == 1)
2802     + traits_type::assign(*__d, *__s);
2803     + else
2804     + traits_type::move(__d, __s, __n);
2805     + }
2806     +
2807     + static void
2808     + _M_assign(_CharT* __d, size_type __n, _CharT __c)
2809     + {
2810     + if (__n == 1)
2811     + traits_type::assign(*__d, __c);
2812     + else
2813     + traits_type::assign(__d, __n, __c);
2814     + }
2815     +
2816     + // _S_copy_chars is a separate template to permit specialization
2817     + // to optimize for the common case of pointers as iterators.
2818     + template<class _Iterator>
2819     + static void
2820     + _S_copy_chars(_CharT* __p, _Iterator __k1, _Iterator __k2)
2821     + {
2822     + for (; __k1 != __k2; ++__k1, ++__p)
2823     + traits_type::assign(*__p, *__k1); // These types are off.
2824     + }
2825     +
2826     + static void
2827     + _S_copy_chars(_CharT* __p, iterator __k1, iterator __k2)
2828     + { _S_copy_chars(__p, __k1.base(), __k2.base()); }
2829     +
2830     + static void
2831     + _S_copy_chars(_CharT* __p, const_iterator __k1, const_iterator __k2)
2832     + { _S_copy_chars(__p, __k1.base(), __k2.base()); }
2833     +
2834     + static void
2835     + _S_copy_chars(_CharT* __p, _CharT* __k1, _CharT* __k2)
2836     + { _M_copy(__p, __k1, __k2 - __k1); }
2837     +
2838     + static void
2839     + _S_copy_chars(_CharT* __p, const _CharT* __k1, const _CharT* __k2)
2840     + { _M_copy(__p, __k1, __k2 - __k1); }
2841     +
2842     + void
2843     + _M_mutate(size_type __pos, size_type __len1, size_type __len2);
2844     +
2845     + void
2846     + _M_leak_hard();
2847     +
2848     + static _Rep&
2849     + _S_empty_rep()
2850     + { return _Rep::_S_empty_rep(); }
2851     +
2852     + public:
2853     + // Construct/copy/destroy:
2854     + // NB: We overload ctors in some cases instead of using default
2855     + // arguments, per 17.4.4.4 para. 2 item 2.
2856     +
2857     + /**
2858     + * @brief Default constructor creates an empty string.
2859     + */
2860     + inline
2861     + basic_string();
2862     +
2863     + /**
2864     + * @brief Construct an empty string using allocator a.
2865     + */
2866     + explicit
2867     + basic_string(const _Alloc& __a);
2868     +
2869     + // NB: per LWG issue 42, semantics different from IS:
2870     + /**
2871     + * @brief Construct string with copy of value of @a str.
2872     + * @param str Source string.
2873     + */
2874     + basic_string(const basic_string& __str);
2875     + /**
2876     + * @brief Construct string as copy of a substring.
2877     + * @param str Source string.
2878     + * @param pos Index of first character to copy from.
2879     + * @param n Number of characters to copy (default remainder).
2880     + */
2881     + basic_string(const basic_string& __str, size_type __pos,
2882     + size_type __n = npos);
2883     + /**
2884     + * @brief Construct string as copy of a substring.
2885     + * @param str Source string.
2886     + * @param pos Index of first character to copy from.
2887     + * @param n Number of characters to copy.
2888     + * @param a Allocator to use.
2889     + */
2890     + basic_string(const basic_string& __str, size_type __pos,
2891     + size_type __n, const _Alloc& __a);
2892     +
2893     + /**
2894     + * @brief Construct string initialized by a character array.
2895     + * @param s Source character array.
2896     + * @param n Number of characters to copy.
2897     + * @param a Allocator to use (default is default allocator).
2898     + *
2899     + * NB: s must have at least n characters, '\0' has no special
2900     + * meaning.
2901     + */
2902     + basic_string(const _CharT* __s, size_type __n,
2903     + const _Alloc& __a = _Alloc());
2904     + /**
2905     + * @brief Construct string as copy of a C string.
2906     + * @param s Source C string.
2907     + * @param a Allocator to use (default is default allocator).
2908     + */
2909     + basic_string(const _CharT* __s, const _Alloc& __a = _Alloc());
2910     + /**
2911     + * @brief Construct string as multiple characters.
2912     + * @param n Number of characters.
2913     + * @param c Character to use.
2914     + * @param a Allocator to use (default is default allocator).
2915     + */
2916     + basic_string(size_type __n, _CharT __c, const _Alloc& __a = _Alloc());
2917     +
2918     + /**
2919     + * @brief Construct string as copy of a range.
2920     + * @param beg Start of range.
2921     + * @param end End of range.
2922     + * @param a Allocator to use (default is default allocator).
2923     + */
2924     + template<class _InputIterator>
2925     + basic_string(_InputIterator __beg, _InputIterator __end,
2926     + const _Alloc& __a = _Alloc());
2927     +
2928     + /**
2929     + * @brief Destroy the string instance.
2930     + */
2931     + ~basic_string()
2932     + { _M_rep()->_M_dispose(this->get_allocator()); }
2933     +
2934     + /**
2935     + * @brief Assign the value of @a str to this string.
2936     + * @param str Source string.
2937     + */
2938     + basic_string&
2939     + operator=(const basic_string& __str)
2940     + { return this->assign(__str); }
2941     +
2942     + /**
2943     + * @brief Copy contents of @a s into this string.
2944     + * @param s Source null-terminated string.
2945     + */
2946     + basic_string&
2947     + operator=(const _CharT* __s)
2948     + { return this->assign(__s); }
2949     +
2950     + /**
2951     + * @brief Set value to string of length 1.
2952     + * @param c Source character.
2953     + *
2954     + * Assigning to a character makes this string length 1 and
2955     + * (*this)[0] == @a c.
2956     + */
2957     + basic_string&
2958     + operator=(_CharT __c)
2959     + {
2960     + this->assign(1, __c);
2961     + return *this;
2962     + }
2963     +
2964     + // Iterators:
2965     + /**
2966     + * Returns a read/write iterator that points to the first character in
2967     + * the %string. Unshares the string.
2968     + */
2969     + iterator
2970     + begin()
2971     + {
2972     + _M_leak();
2973     + return iterator(_M_data());
2974     + }
2975     +
2976     + /**
2977     + * Returns a read-only (constant) iterator that points to the first
2978     + * character in the %string.
2979     + */
2980     + const_iterator
2981     + begin() const
2982     + { return const_iterator(_M_data()); }
2983     +
2984     + /**
2985     + * Returns a read/write iterator that points one past the last
2986     + * character in the %string. Unshares the string.
2987     + */
2988     + iterator
2989     + end()
2990     + {
2991     + _M_leak();
2992     + return iterator(_M_data() + this->size());
2993     + }
2994     +
2995     + /**
2996     + * Returns a read-only (constant) iterator that points one past the
2997     + * last character in the %string.
2998     + */
2999     + const_iterator
3000     + end() const
3001     + { return const_iterator(_M_data() + this->size()); }
3002     +
3003     + /**
3004     + * Returns a read/write reverse iterator that points to the last
3005     + * character in the %string. Iteration is done in reverse element
3006     + * order. Unshares the string.
3007     + */
3008     + reverse_iterator
3009     + rbegin()
3010     + { return reverse_iterator(this->end()); }
3011     +
3012     + /**
3013     + * Returns a read-only (constant) reverse iterator that points
3014     + * to the last character in the %string. Iteration is done in
3015     + * reverse element order.
3016     + */
3017     + const_reverse_iterator
3018     + rbegin() const
3019     + { return const_reverse_iterator(this->end()); }
3020     +
3021     + /**
3022     + * Returns a read/write reverse iterator that points to one before the
3023     + * first character in the %string. Iteration is done in reverse
3024     + * element order. Unshares the string.
3025     + */
3026     + reverse_iterator
3027     + rend()
3028     + { return reverse_iterator(this->begin()); }
3029     +
3030     + /**
3031     + * Returns a read-only (constant) reverse iterator that points
3032     + * to one before the first character in the %string. Iteration
3033     + * is done in reverse element order.
3034     + */
3035     + const_reverse_iterator
3036     + rend() const
3037     + { return const_reverse_iterator(this->begin()); }
3038     +
3039     + public:
3040     + // Capacity:
3041     + /// Returns the number of characters in the string, not including any
3042     + /// null-termination.
3043     + size_type
3044     + size() const
3045     + { return _M_rep()->_M_length; }
3046     +
3047     + /// Returns the number of characters in the string, not including any
3048     + /// null-termination.
3049     + size_type
3050     + length() const
3051     + { return _M_rep()->_M_length; }
3052     +
3053     + /// Returns the size() of the largest possible %string.
3054     + size_type
3055     + max_size() const
3056     + { return _Rep::_S_max_size; }
3057     +
3058     + /**
3059     + * @brief Resizes the %string to the specified number of characters.
3060     + * @param n Number of characters the %string should contain.
3061     + * @param c Character to fill any new elements.
3062     + *
3063     + * This function will %resize the %string to the specified
3064     + * number of characters. If the number is smaller than the
3065     + * %string's current size the %string is truncated, otherwise
3066     + * the %string is extended and new elements are set to @a c.
3067     + */
3068     + void
3069     + resize(size_type __n, _CharT __c);
3070     +
3071     + /**
3072     + * @brief Resizes the %string to the specified number of characters.
3073     + * @param n Number of characters the %string should contain.
3074     + *
3075     + * This function will resize the %string to the specified length. If
3076     + * the new size is smaller than the %string's current size the %string
3077     + * is truncated, otherwise the %string is extended and new characters
3078     + * are default-constructed. For basic types such as char, this means
3079     + * setting them to 0.
3080     + */
3081     + void
3082     + resize(size_type __n)
3083     + { this->resize(__n, _CharT()); }
3084     +
3085     + /**
3086     + * Returns the total number of characters that the %string can hold
3087     + * before needing to allocate more memory.
3088     + */
3089     + size_type
3090     + capacity() const
3091     + { return _M_rep()->_M_capacity; }
3092     +
3093     + /**
3094     + * @brief Attempt to preallocate enough memory for specified number of
3095     + * characters.
3096     + * @param n Number of characters required.
3097     + * @throw std::length_error If @a n exceeds @c max_size().
3098     + *
3099     + * This function attempts to reserve enough memory for the
3100     + * %string to hold the specified number of characters. If the
3101     + * number requested is more than max_size(), length_error is
3102     + * thrown.
3103     + *
3104     + * The advantage of this function is that if optimal code is a
3105     + * necessity and the user can determine the string length that will be
3106     + * required, the user can reserve the memory in %advance, and thus
3107     + * prevent a possible reallocation of memory and copying of %string
3108     + * data.
3109     + */
3110     + void
3111     + reserve(size_type __res_arg = 0);
3112     +
3113     + /**
3114     + * Erases the string, making it empty.
3115     + */
3116     + void
3117     + clear()
3118     + { _M_mutate(0, this->size(), 0); }
3119     +
3120     + /**
3121     + * Returns true if the %string is empty. Equivalent to *this == "".
3122     + */
3123     + bool
3124     + empty() const
3125     + { return this->size() == 0; }
3126     +
3127     + // Element access:
3128     + /**
3129     + * @brief Subscript access to the data contained in the %string.
3130     + * @param n The index of the character to access.
3131     + * @return Read-only (constant) reference to the character.
3132     + *
3133     + * This operator allows for easy, array-style, data access.
3134     + * Note that data access with this operator is unchecked and
3135     + * out_of_range lookups are not defined. (For checked lookups
3136     + * see at().)
3137     + */
3138     + const_reference
3139     + operator[] (size_type __pos) const
3140     + {
3141     + _GLIBCXX_DEBUG_ASSERT(__pos <= size());
3142     + return _M_data()[__pos];
3143     + }
3144     +
3145     + /**
3146     + * @brief Subscript access to the data contained in the %string.
3147     + * @param n The index of the character to access.
3148     + * @return Read/write reference to the character.
3149     + *
3150     + * This operator allows for easy, array-style, data access.
3151     + * Note that data access with this operator is unchecked and
3152     + * out_of_range lookups are not defined. (For checked lookups
3153     + * see at().) Unshares the string.
3154     + */
3155     + reference
3156     + operator[](size_type __pos)
3157     + {
3158     + _GLIBCXX_DEBUG_ASSERT(__pos < size());
3159     + _M_leak();
3160     + return _M_data()[__pos];
3161     + }
3162     +
3163     + /**
3164     + * @brief Provides access to the data contained in the %string.
3165     + * @param n The index of the character to access.
3166     + * @return Read-only (const) reference to the character.
3167     + * @throw std::out_of_range If @a n is an invalid index.
3168     + *
3169     + * This function provides for safer data access. The parameter is
3170     + * first checked that it is in the range of the string. The function
3171     + * throws out_of_range if the check fails.
3172     + */
3173     + const_reference
3174     + at(size_type __n) const
3175     + {
3176     + if (__n >= this->size())
3177     + __throw_out_of_range(__N("basic_string::at"));
3178     + return _M_data()[__n];
3179     + }
3180     +
3181     + /**
3182     + * @brief Provides access to the data contained in the %string.
3183     + * @param n The index of the character to access.
3184     + * @return Read/write reference to the character.
3185     + * @throw std::out_of_range If @a n is an invalid index.
3186     + *
3187     + * This function provides for safer data access. The parameter is
3188     + * first checked that it is in the range of the string. The function
3189     + * throws out_of_range if the check fails. Success results in
3190     + * unsharing the string.
3191     + */
3192     + reference
3193     + at(size_type __n)
3194     + {
3195     + if (__n >= size())
3196     + __throw_out_of_range(__N("basic_string::at"));
3197     + _M_leak();
3198     + return _M_data()[__n];
3199     + }
3200     +
3201     + // Modifiers:
3202     + /**
3203     + * @brief Append a string to this string.
3204     + * @param str The string to append.
3205     + * @return Reference to this string.
3206     + */
3207     + basic_string&
3208     + operator+=(const basic_string& __str)
3209     + { return this->append(__str); }
3210     +
3211     + /**
3212     + * @brief Append a C string.
3213     + * @param s The C string to append.
3214     + * @return Reference to this string.
3215     + */
3216     + basic_string&
3217     + operator+=(const _CharT* __s)
3218     + { return this->append(__s); }
3219     +
3220     + /**
3221     + * @brief Append a character.
3222     + * @param s The character to append.
3223     + * @return Reference to this string.
3224     + */
3225     + basic_string&
3226     + operator+=(_CharT __c)
3227     + {
3228     + this->push_back(__c);
3229     + return *this;
3230     + }
3231     +
3232     + /**
3233     + * @brief Append a string to this string.
3234     + * @param str The string to append.
3235     + * @return Reference to this string.
3236     + */
3237     + basic_string&
3238     + append(const basic_string& __str);
3239     +
3240     + /**
3241     + * @brief Append a substring.
3242     + * @param str The string to append.
3243     + * @param pos Index of the first character of str to append.
3244     + * @param n The number of characters to append.
3245     + * @return Reference to this string.
3246     + * @throw std::out_of_range if @a pos is not a valid index.
3247     + *
3248     + * This function appends @a n characters from @a str starting at @a pos
3249     + * to this string. If @a n is is larger than the number of available
3250     + * characters in @a str, the remainder of @a str is appended.
3251     + */
3252     + basic_string&
3253     + append(const basic_string& __str, size_type __pos, size_type __n);
3254     +
3255     + /**
3256     + * @brief Append a C substring.
3257     + * @param s The C string to append.
3258     + * @param n The number of characters to append.
3259     + * @return Reference to this string.
3260     + */
3261     + basic_string&
3262     + append(const _CharT* __s, size_type __n);
3263     +
3264     + /**
3265     + * @brief Append a C string.
3266     + * @param s The C string to append.
3267     + * @return Reference to this string.
3268     + */
3269     + basic_string&
3270     + append(const _CharT* __s)
3271     + {
3272     + __glibcxx_requires_string(__s);
3273     + return this->append(__s, traits_type::length(__s));
3274     + }
3275     +
3276     + /**
3277     + * @brief Append multiple characters.
3278     + * @param n The number of characters to append.
3279     + * @param c The character to use.
3280     + * @return Reference to this string.
3281     + *
3282     + * Appends n copies of c to this string.
3283     + */
3284     + basic_string&
3285     + append(size_type __n, _CharT __c);
3286     +
3287     + /**
3288     + * @brief Append a range of characters.
3289     + * @param first Iterator referencing the first character to append.
3290     + * @param last Iterator marking the end of the range.
3291     + * @return Reference to this string.
3292     + *
3293     + * Appends characters in the range [first,last) to this string.
3294     + */
3295     + template<class _InputIterator>
3296     + basic_string&
3297     + append(_InputIterator __first, _InputIterator __last)
3298     + { return this->replace(_M_iend(), _M_iend(), __first, __last); }
3299     +
3300     + /**
3301     + * @brief Append a single character.
3302     + * @param c Character to append.
3303     + */
3304     + void
3305     + push_back(_CharT __c)
3306     + {
3307     + const size_type __len = 1 + this->size();
3308     + if (__len > this->capacity() || _M_rep()->_M_is_shared())
3309     + this->reserve(__len);
3310     + traits_type::assign(_M_data()[this->size()], __c);
3311     + _M_rep()->_M_set_length_and_sharable(__len);
3312     + }
3313     +
3314     + /**
3315     + * @brief Set value to contents of another string.
3316     + * @param str Source string to use.
3317     + * @return Reference to this string.
3318     + */
3319     + basic_string&
3320     + assign(const basic_string& __str);
3321     +
3322     + /**
3323     + * @brief Set value to a substring of a string.
3324     + * @param str The string to use.
3325     + * @param pos Index of the first character of str.
3326     + * @param n Number of characters to use.
3327     + * @return Reference to this string.
3328     + * @throw std::out_of_range if @a pos is not a valid index.
3329     + *
3330     + * This function sets this string to the substring of @a str consisting
3331     + * of @a n characters at @a pos. If @a n is is larger than the number
3332     + * of available characters in @a str, the remainder of @a str is used.
3333     + */
3334     + basic_string&
3335     + assign(const basic_string& __str, size_type __pos, size_type __n)
3336     + { return this->assign(__str._M_data()
3337     + + __str._M_check(__pos, "basic_string::assign"),
3338     + __str._M_limit(__pos, __n)); }
3339     +
3340     + /**
3341     + * @brief Set value to a C substring.
3342     + * @param s The C string to use.
3343     + * @param n Number of characters to use.
3344     + * @return Reference to this string.
3345     + *
3346     + * This function sets the value of this string to the first @a n
3347     + * characters of @a s. If @a n is is larger than the number of
3348     + * available characters in @a s, the remainder of @a s is used.
3349     + */
3350     + basic_string&
3351     + assign(const _CharT* __s, size_type __n);
3352     +
3353     + /**
3354     + * @brief Set value to contents of a C string.
3355     + * @param s The C string to use.
3356     + * @return Reference to this string.
3357     + *
3358     + * This function sets the value of this string to the value of @a s.
3359     + * The data is copied, so there is no dependence on @a s once the
3360     + * function returns.
3361     + */
3362     + basic_string&
3363     + assign(const _CharT* __s)
3364     + {
3365     + __glibcxx_requires_string(__s);
3366     + return this->assign(__s, traits_type::length(__s));
3367     + }
3368     +
3369     + /**
3370     + * @brief Set value to multiple characters.
3371     + * @param n Length of the resulting string.
3372     + * @param c The character to use.
3373     + * @return Reference to this string.
3374     + *
3375     + * This function sets the value of this string to @a n copies of
3376     + * character @a c.
3377     + */
3378     + basic_string&
3379     + assign(size_type __n, _CharT __c)
3380     + { return _M_replace_aux(size_type(0), this->size(), __n, __c); }
3381     +
3382     + /**
3383     + * @brief Set value to a range of characters.
3384     + * @param first Iterator referencing the first character to append.
3385     + * @param last Iterator marking the end of the range.
3386     + * @return Reference to this string.
3387     + *
3388     + * Sets value of string to characters in the range [first,last).
3389     + */
3390     + template<class _InputIterator>
3391     + basic_string&
3392     + assign(_InputIterator __first, _InputIterator __last)
3393     + { return this->replace(_M_ibegin(), _M_iend(), __first, __last); }
3394     +
3395     + /**
3396     + * @brief Insert multiple characters.
3397     + * @param p Iterator referencing location in string to insert at.
3398     + * @param n Number of characters to insert
3399     + * @param c The character to insert.
3400     + * @throw std::length_error If new length exceeds @c max_size().
3401     + *
3402     + * Inserts @a n copies of character @a c starting at the position
3403     + * referenced by iterator @a p. If adding characters causes the length
3404     + * to exceed max_size(), length_error is thrown. The value of the
3405     + * string doesn't change if an error is thrown.
3406     + */
3407     + void
3408     + insert(iterator __p, size_type __n, _CharT __c)
3409     + { this->replace(__p, __p, __n, __c); }
3410     +
3411     + /**
3412     + * @brief Insert a range of characters.
3413     + * @param p Iterator referencing location in string to insert at.
3414     + * @param beg Start of range.
3415     + * @param end End of range.
3416     + * @throw std::length_error If new length exceeds @c max_size().
3417     + *
3418     + * Inserts characters in range [beg,end). If adding characters causes
3419     + * the length to exceed max_size(), length_error is thrown. The value
3420     + * of the string doesn't change if an error is thrown.
3421     + */
3422     + template<class _InputIterator>
3423     + void
3424     + insert(iterator __p, _InputIterator __beg, _InputIterator __end)
3425     + { this->replace(__p, __p, __beg, __end); }
3426     +
3427     + /**
3428     + * @brief Insert value of a string.
3429     + * @param pos1 Iterator referencing location in string to insert at.
3430     + * @param str The string to insert.
3431     + * @return Reference to this string.
3432     + * @throw std::length_error If new length exceeds @c max_size().
3433     + *
3434     + * Inserts value of @a str starting at @a pos1. If adding characters
3435     + * causes the length to exceed max_size(), length_error is thrown. The
3436     + * value of the string doesn't change if an error is thrown.
3437     + */
3438     + basic_string&
3439     + insert(size_type __pos1, const basic_string& __str)
3440     + { return this->insert(__pos1, __str, size_type(0), __str.size()); }
3441     +
3442     + /**
3443     + * @brief Insert a substring.
3444     + * @param pos1 Iterator referencing location in string to insert at.
3445     + * @param str The string to insert.
3446     + * @param pos2 Start of characters in str to insert.
3447     + * @param n Number of characters to insert.
3448     + * @return Reference to this string.
3449     + * @throw std::length_error If new length exceeds @c max_size().
3450     + * @throw std::out_of_range If @a pos1 > size() or
3451     + * @a pos2 > @a str.size().
3452     + *
3453     + * Starting at @a pos1, insert @a n character of @a str beginning with
3454     + * @a pos2. If adding characters causes the length to exceed
3455     + * max_size(), length_error is thrown. If @a pos1 is beyond the end of
3456     + * this string or @a pos2 is beyond the end of @a str, out_of_range is
3457     + * thrown. The value of the string doesn't change if an error is
3458     + * thrown.
3459     + */
3460     + basic_string&
3461     + insert(size_type __pos1, const basic_string& __str,
3462     + size_type __pos2, size_type __n)
3463     + { return this->insert(__pos1, __str._M_data()
3464     + + __str._M_check(__pos2, "basic_string::insert"),
3465     + __str._M_limit(__pos2, __n)); }
3466     +
3467     + /**
3468     + * @brief Insert a C substring.
3469     + * @param pos Iterator referencing location in string to insert at.
3470     + * @param s The C string to insert.
3471     + * @param n The number of characters to insert.
3472     + * @return Reference to this string.
3473     + * @throw std::length_error If new length exceeds @c max_size().
3474     + * @throw std::out_of_range If @a pos is beyond the end of this
3475     + * string.
3476     + *
3477     + * Inserts the first @a n characters of @a s starting at @a pos. If
3478     + * adding characters causes the length to exceed max_size(),
3479     + * length_error is thrown. If @a pos is beyond end(), out_of_range is
3480     + * thrown. The value of the string doesn't change if an error is
3481     + * thrown.
3482     + */
3483     + basic_string&
3484     + insert(size_type __pos, const _CharT* __s, size_type __n);
3485     +
3486     + /**
3487     + * @brief Insert a C string.
3488     + * @param pos Iterator referencing location in string to insert at.
3489     + * @param s The C string to insert.
3490     + * @return Reference to this string.
3491     + * @throw std::length_error If new length exceeds @c max_size().
3492     + * @throw std::out_of_range If @a pos is beyond the end of this
3493     + * string.
3494     + *
3495     + * Inserts the first @a n characters of @a s starting at @a pos. If
3496     + * adding characters causes the length to exceed max_size(),
3497     + * length_error is thrown. If @a pos is beyond end(), out_of_range is
3498     + * thrown. The value of the string doesn't change if an error is
3499     + * thrown.
3500     + */
3501     + basic_string&
3502     + insert(size_type __pos, const _CharT* __s)
3503     + {
3504     + __glibcxx_requires_string(__s);
3505     + return this->insert(__pos, __s, traits_type::length(__s));
3506     + }
3507     +
3508     + /**
3509     + * @brief Insert multiple characters.
3510     + * @param pos Index in string to insert at.
3511     + * @param n Number of characters to insert
3512     + * @param c The character to insert.
3513     + * @return Reference to this string.
3514     + * @throw std::length_error If new length exceeds @c max_size().
3515     + * @throw std::out_of_range If @a pos is beyond the end of this
3516     + * string.
3517     + *
3518     + * Inserts @a n copies of character @a c starting at index @a pos. If
3519     + * adding characters causes the length to exceed max_size(),
3520     + * length_error is thrown. If @a pos > length(), out_of_range is
3521     + * thrown. The value of the string doesn't change if an error is
3522     + * thrown.
3523     + */
3524     + basic_string&
3525     + insert(size_type __pos, size_type __n, _CharT __c)
3526     + { return _M_replace_aux(_M_check(__pos, "basic_string::insert"),
3527     + size_type(0), __n, __c); }
3528     +
3529     + /**
3530     + * @brief Insert one character.
3531     + * @param p Iterator referencing position in string to insert at.
3532     + * @param c The character to insert.
3533     + * @return Iterator referencing newly inserted char.
3534     + * @throw std::length_error If new length exceeds @c max_size().
3535     + *
3536     + * Inserts character @a c at position referenced by @a p. If adding
3537     + * character causes the length to exceed max_size(), length_error is
3538     + * thrown. If @a p is beyond end of string, out_of_range is thrown.
3539     + * The value of the string doesn't change if an error is thrown.
3540     + */
3541     + iterator
3542     + insert(iterator __p, _CharT __c)
3543     + {
3544     + _GLIBCXX_DEBUG_PEDASSERT(__p >= _M_ibegin() && __p <= _M_iend());
3545     + const size_type __pos = __p - _M_ibegin();
3546     + _M_replace_aux(__pos, size_type(0), size_type(1), __c);
3547     + _M_rep()->_M_set_leaked();
3548     + return this->_M_ibegin() + __pos;
3549     + }
3550     +
3551     + /**
3552     + * @brief Remove characters.
3553     + * @param pos Index of first character to remove (default 0).
3554     + * @param n Number of characters to remove (default remainder).
3555     + * @return Reference to this string.
3556     + * @throw std::out_of_range If @a pos is beyond the end of this
3557     + * string.
3558     + *
3559     + * Removes @a n characters from this string starting at @a pos. The
3560     + * length of the string is reduced by @a n. If there are < @a n
3561     + * characters to remove, the remainder of the string is truncated. If
3562     + * @a p is beyond end of string, out_of_range is thrown. The value of
3563     + * the string doesn't change if an error is thrown.
3564     + */
3565     + basic_string&
3566     + erase(size_type __pos = 0, size_type __n = npos)
3567     + {
3568     + _M_mutate(_M_check(__pos, "basic_string::erase"),
3569     + _M_limit(__pos, __n), size_type(0));
3570     + return *this;
3571     + }
3572     +
3573     + /**
3574     + * @brief Remove one character.
3575     + * @param position Iterator referencing the character to remove.
3576     + * @return iterator referencing same location after removal.
3577     + *
3578     + * Removes the character at @a position from this string. The value
3579     + * of the string doesn't change if an error is thrown.
3580     + */
3581     + iterator
3582     + erase(iterator __position)
3583     + {
3584     + _GLIBCXX_DEBUG_PEDASSERT(__position >= _M_ibegin()
3585     + && __position < _M_iend());
3586     + const size_type __pos = __position - _M_ibegin();
3587     + _M_mutate(__pos, size_type(1), size_type(0));
3588     + _M_rep()->_M_set_leaked();
3589     + return _M_ibegin() + __pos;
3590     + }
3591     +
3592     + /**
3593     + * @brief Remove a range of characters.
3594     + * @param first Iterator referencing the first character to remove.
3595     + * @param last Iterator referencing the end of the range.
3596     + * @return Iterator referencing location of first after removal.
3597     + *
3598     + * Removes the characters in the range [first,last) from this string.
3599     + * The value of the string doesn't change if an error is thrown.
3600     + */
3601     + iterator
3602     + erase(iterator __first, iterator __last)
3603     + {
3604     + _GLIBCXX_DEBUG_PEDASSERT(__first >= _M_ibegin() && __first <= __last
3605     + && __last <= _M_iend());
3606     + const size_type __pos = __first - _M_ibegin();
3607     + _M_mutate(__pos, __last - __first, size_type(0));
3608     + _M_rep()->_M_set_leaked();
3609     + return _M_ibegin() + __pos;
3610     + }
3611     +
3612     + /**
3613     + * @brief Replace characters with value from another string.
3614     + * @param pos Index of first character to replace.
3615     + * @param n Number of characters to be replaced.
3616     + * @param str String to insert.
3617     + * @return Reference to this string.
3618     + * @throw std::out_of_range If @a pos is beyond the end of this
3619     + * string.
3620     + * @throw std::length_error If new length exceeds @c max_size().
3621     + *
3622     + * Removes the characters in the range [pos,pos+n) from this string.
3623     + * In place, the value of @a str is inserted. If @a pos is beyond end
3624     + * of string, out_of_range is thrown. If the length of the result
3625     + * exceeds max_size(), length_error is thrown. The value of the string
3626     + * doesn't change if an error is thrown.
3627     + */
3628     + basic_string&
3629     + replace(size_type __pos, size_type __n, const basic_string& __str)
3630     + { return this->replace(__pos, __n, __str._M_data(), __str.size()); }
3631     +
3632     + /**
3633     + * @brief Replace characters with value from another string.
3634     + * @param pos1 Index of first character to replace.
3635     + * @param n1 Number of characters to be replaced.
3636     + * @param str String to insert.
3637     + * @param pos2 Index of first character of str to use.
3638     + * @param n2 Number of characters from str to use.
3639     + * @return Reference to this string.
3640     + * @throw std::out_of_range If @a pos1 > size() or @a pos2 >
3641     + * str.size().
3642     + * @throw std::length_error If new length exceeds @c max_size().
3643     + *
3644     + * Removes the characters in the range [pos1,pos1 + n) from this
3645     + * string. In place, the value of @a str is inserted. If @a pos is
3646     + * beyond end of string, out_of_range is thrown. If the length of the
3647     + * result exceeds max_size(), length_error is thrown. The value of the
3648     + * string doesn't change if an error is thrown.
3649     + */
3650     + basic_string&
3651     + replace(size_type __pos1, size_type __n1, const basic_string& __str,
3652     + size_type __pos2, size_type __n2)
3653     + { return this->replace(__pos1, __n1, __str._M_data()
3654     + + __str._M_check(__pos2, "basic_string::replace"),
3655     + __str._M_limit(__pos2, __n2)); }
3656     +
3657     + /**
3658     + * @brief Replace characters with value of a C substring.
3659     + * @param pos Index of first character to replace.
3660     + * @param n1 Number of characters to be replaced.
3661     + * @param str C string to insert.
3662     + * @param n2 Number of characters from str to use.
3663     + * @return Reference to this string.
3664     + * @throw std::out_of_range If @a pos1 > size().
3665     + * @throw std::length_error If new length exceeds @c max_size().
3666     + *
3667     + * Removes the characters in the range [pos,pos + n1) from this string.
3668     + * In place, the first @a n2 characters of @a str are inserted, or all
3669     + * of @a str if @a n2 is too large. If @a pos is beyond end of string,
3670     + * out_of_range is thrown. If the length of result exceeds max_size(),
3671     + * length_error is thrown. The value of the string doesn't change if
3672     + * an error is thrown.
3673     + */
3674     + basic_string&
3675     + replace(size_type __pos, size_type __n1, const _CharT* __s,
3676     + size_type __n2);
3677     +
3678     + /**
3679     + * @brief Replace characters with value of a C string.
3680     + * @param pos Index of first character to replace.
3681     + * @param n1 Number of characters to be replaced.
3682     + * @param str C string to insert.
3683     + * @return Reference to this string.
3684     + * @throw std::out_of_range If @a pos > size().
3685     + * @throw std::length_error If new length exceeds @c max_size().
3686     + *
3687     + * Removes the characters in the range [pos,pos + n1) from this string.
3688     + * In place, the first @a n characters of @a str are inserted. If @a
3689     + * pos is beyond end of string, out_of_range is thrown. If the length
3690     + * of result exceeds max_size(), length_error is thrown. The value of
3691     + * the string doesn't change if an error is thrown.
3692     + */
3693     + basic_string&
3694     + replace(size_type __pos, size_type __n1, const _CharT* __s)
3695     + {
3696     + __glibcxx_requires_string(__s);
3697     + return this->replace(__pos, __n1, __s, traits_type::length(__s));
3698     + }
3699     +
3700     + /**
3701     + * @brief Replace characters with multiple characters.
3702     + * @param pos Index of first character to replace.
3703     + * @param n1 Number of characters to be replaced.
3704     + * @param n2 Number of characters to insert.
3705     + * @param c Character to insert.
3706     + * @return Reference to this string.
3707     + * @throw std::out_of_range If @a pos > size().
3708     + * @throw std::length_error If new length exceeds @c max_size().
3709     + *
3710     + * Removes the characters in the range [pos,pos + n1) from this string.
3711     + * In place, @a n2 copies of @a c are inserted. If @a pos is beyond
3712     + * end of string, out_of_range is thrown. If the length of result
3713     + * exceeds max_size(), length_error is thrown. The value of the string
3714     + * doesn't change if an error is thrown.
3715     + */
3716     + basic_string&
3717     + replace(size_type __pos, size_type __n1, size_type __n2, _CharT __c)
3718     + { return _M_replace_aux(_M_check(__pos, "basic_string::replace"),
3719     + _M_limit(__pos, __n1), __n2, __c); }
3720     +
3721     + /**
3722     + * @brief Replace range of characters with string.
3723     + * @param i1 Iterator referencing start of range to replace.
3724     + * @param i2 Iterator referencing end of range to replace.
3725     + * @param str String value to insert.
3726     + * @return Reference to this string.
3727     + * @throw std::length_error If new length exceeds @c max_size().
3728     + *
3729     + * Removes the characters in the range [i1,i2). In place, the value of
3730     + * @a str is inserted. If the length of result exceeds max_size(),
3731     + * length_error is thrown. The value of the string doesn't change if
3732     + * an error is thrown.
3733     + */
3734     + basic_string&
3735     + replace(iterator __i1, iterator __i2, const basic_string& __str)
3736     + { return this->replace(__i1, __i2, __str._M_data(), __str.size()); }
3737     +
3738     + /**
3739     + * @brief Replace range of characters with C substring.
3740     + * @param i1 Iterator referencing start of range to replace.
3741     + * @param i2 Iterator referencing end of range to replace.
3742     + * @param s C string value to insert.
3743     + * @param n Number of characters from s to insert.
3744     + * @return Reference to this string.
3745     + * @throw std::length_error If new length exceeds @c max_size().
3746     + *
3747     + * Removes the characters in the range [i1,i2). In place, the first @a
3748     + * n characters of @a s are inserted. If the length of result exceeds
3749     + * max_size(), length_error is thrown. The value of the string doesn't
3750     + * change if an error is thrown.
3751     + */
3752     + basic_string&
3753     + replace(iterator __i1, iterator __i2, const _CharT* __s, size_type __n)
3754     + {
3755     + _GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2
3756     + && __i2 <= _M_iend());
3757     + return this->replace(__i1 - _M_ibegin(), __i2 - __i1, __s, __n);
3758     + }
3759     +
3760     + /**
3761     + * @brief Replace range of characters with C string.
3762     + * @param i1 Iterator referencing start of range to replace.
3763     + * @param i2 Iterator referencing end of range to replace.
3764     + * @param s C string value to insert.
3765     + * @return Reference to this string.
3766     + * @throw std::length_error If new length exceeds @c max_size().
3767     + *
3768     + * Removes the characters in the range [i1,i2). In place, the
3769     + * characters of @a s are inserted. If the length of result exceeds
3770     + * max_size(), length_error is thrown. The value of the string doesn't
3771     + * change if an error is thrown.
3772     + */
3773     + basic_string&
3774     + replace(iterator __i1, iterator __i2, const _CharT* __s)
3775     + {
3776     + __glibcxx_requires_string(__s);
3777     + return this->replace(__i1, __i2, __s, traits_type::length(__s));
3778     + }
3779     +
3780     + /**
3781     + * @brief Replace range of characters with multiple characters
3782     + * @param i1 Iterator referencing start of range to replace.
3783     + * @param i2 Iterator referencing end of range to replace.
3784     + * @param n Number of characters to insert.
3785     + * @param c Character to insert.
3786     + * @return Reference to this string.
3787     + * @throw std::length_error If new length exceeds @c max_size().
3788     + *
3789     + * Removes the characters in the range [i1,i2). In place, @a n copies
3790     + * of @a c are inserted. If the length of result exceeds max_size(),
3791     + * length_error is thrown. The value of the string doesn't change if
3792     + * an error is thrown.
3793     + */
3794     + basic_string&
3795     + replace(iterator __i1, iterator __i2, size_type __n, _CharT __c)
3796     + {
3797     + _GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2
3798     + && __i2 <= _M_iend());
3799     + return _M_replace_aux(__i1 - _M_ibegin(), __i2 - __i1, __n, __c);
3800     + }
3801     +
3802     + /**
3803     + * @brief Replace range of characters with range.
3804     + * @param i1 Iterator referencing start of range to replace.
3805     + * @param i2 Iterator referencing end of range to replace.
3806     + * @param k1 Iterator referencing start of range to insert.
3807     + * @param k2 Iterator referencing end of range to insert.
3808     + * @return Reference to this string.
3809     + * @throw std::length_error If new length exceeds @c max_size().
3810     + *
3811     + * Removes the characters in the range [i1,i2). In place, characters
3812     + * in the range [k1,k2) are inserted. If the length of result exceeds
3813     + * max_size(), length_error is thrown. The value of the string doesn't
3814     + * change if an error is thrown.
3815     + */
3816     + template<class _InputIterator>
3817     + basic_string&
3818     + replace(iterator __i1, iterator __i2,
3819     + _InputIterator __k1, _InputIterator __k2)
3820     + {
3821     + _GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2
3822     + && __i2 <= _M_iend());
3823     + __glibcxx_requires_valid_range(__k1, __k2);
3824     + typedef typename std::__is_integer<_InputIterator>::__type _Integral;
3825     + return _M_replace_dispatch(__i1, __i2, __k1, __k2, _Integral());
3826     + }
3827     +
3828     + // Specializations for the common case of pointer and iterator:
3829     + // useful to avoid the overhead of temporary buffering in _M_replace.
3830     + basic_string&
3831     + replace(iterator __i1, iterator __i2, _CharT* __k1, _CharT* __k2)
3832     + {
3833     + _GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2
3834     + && __i2 <= _M_iend());
3835     + __glibcxx_requires_valid_range(__k1, __k2);
3836     + return this->replace(__i1 - _M_ibegin(), __i2 - __i1,
3837     + __k1, __k2 - __k1);
3838     + }
3839     +
3840     + basic_string&
3841     + replace(iterator __i1, iterator __i2,
3842     + const _CharT* __k1, const _CharT* __k2)
3843     + {
3844     + _GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2
3845     + && __i2 <= _M_iend());
3846     + __glibcxx_requires_valid_range(__k1, __k2);
3847     + return this->replace(__i1 - _M_ibegin(), __i2 - __i1,
3848     + __k1, __k2 - __k1);
3849     + }
3850     +
3851     + basic_string&
3852     + replace(iterator __i1, iterator __i2, iterator __k1, iterator __k2)
3853     + {
3854     + _GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2
3855     + && __i2 <= _M_iend());
3856     + __glibcxx_requires_valid_range(__k1, __k2);
3857     + return this->replace(__i1 - _M_ibegin(), __i2 - __i1,
3858     + __k1.base(), __k2 - __k1);
3859     + }
3860     +
3861     + basic_string&
3862     + replace(iterator __i1, iterator __i2,
3863     + const_iterator __k1, const_iterator __k2)
3864     + {
3865     + _GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2
3866     + && __i2 <= _M_iend());
3867     + __glibcxx_requires_valid_range(__k1, __k2);
3868     + return this->replace(__i1 - _M_ibegin(), __i2 - __i1,
3869     + __k1.base(), __k2 - __k1);
3870     + }
3871     +
3872     + private:
3873     + template<class _Integer>
3874     + basic_string&
3875     + _M_replace_dispatch(iterator __i1, iterator __i2, _Integer __n,
3876     + _Integer __val, __true_type)
3877     + { return _M_replace_aux(__i1 - _M_ibegin(), __i2 - __i1, __n, __val); }
3878     +
3879     + template<class _InputIterator>
3880     + basic_string&
3881     + _M_replace_dispatch(iterator __i1, iterator __i2, _InputIterator __k1,
3882     + _InputIterator __k2, __false_type);
3883     +
3884     + basic_string&
3885     + _M_replace_aux(size_type __pos1, size_type __n1, size_type __n2,
3886     + _CharT __c);
3887     +
3888     + basic_string&
3889     + _M_replace_safe(size_type __pos1, size_type __n1, const _CharT* __s,
3890     + size_type __n2);
3891     +
3892     + // _S_construct_aux is used to implement the 21.3.1 para 15 which
3893     + // requires special behaviour if _InIter is an integral type
3894     + template<class _InIterator>
3895     + static _CharT*
3896     + _S_construct_aux(_InIterator __beg, _InIterator __end,
3897     + const _Alloc& __a, __false_type)
3898     + {
3899     + typedef typename iterator_traits<_InIterator>::iterator_category _Tag;
3900     + return _S_construct(__beg, __end, __a, _Tag());
3901     + }
3902     +
3903     + template<class _InIterator>
3904     + static _CharT*
3905     + _S_construct_aux(_InIterator __beg, _InIterator __end,
3906     + const _Alloc& __a, __true_type)
3907     + { return _S_construct(static_cast<size_type>(__beg),
3908     + static_cast<value_type>(__end), __a); }
3909     +
3910     + template<class _InIterator>
3911     + static _CharT*
3912     + _S_construct(_InIterator __beg, _InIterator __end, const _Alloc& __a)
3913     + {
3914     + typedef typename std::__is_integer<_InIterator>::__type _Integral;
3915     + return _S_construct_aux(__beg, __end, __a, _Integral());
3916     + }
3917     +
3918     + // For Input Iterators, used in istreambuf_iterators, etc.
3919     + template<class _InIterator>
3920     + static _CharT*
3921     + _S_construct(_InIterator __beg, _InIterator __end, const _Alloc& __a,
3922     + input_iterator_tag);
3923     +
3924     + // For forward_iterators up to random_access_iterators, used for
3925     + // string::iterator, _CharT*, etc.
3926     + template<class _FwdIterator>
3927     + static _CharT*
3928     + _S_construct(_FwdIterator __beg, _FwdIterator __end, const _Alloc& __a,
3929     + forward_iterator_tag);
3930     +
3931     + static _CharT*
3932     + _S_construct(size_type __req, _CharT __c, const _Alloc& __a);
3933     +
3934     + public:
3935     +
3936     + /**
3937     + * @brief Copy substring into C string.
3938     + * @param s C string to copy value into.
3939     + * @param n Number of characters to copy.
3940     + * @param pos Index of first character to copy.
3941     + * @return Number of characters actually copied
3942     + * @throw std::out_of_range If pos > size().
3943     + *
3944     + * Copies up to @a n characters starting at @a pos into the C string @a
3945     + * s. If @a pos is greater than size(), out_of_range is thrown.
3946     + */
3947     + size_type
3948     + copy(_CharT* __s, size_type __n, size_type __pos = 0) const;
3949     +
3950     + /**
3951     + * @brief Swap contents with another string.
3952     + * @param s String to swap with.
3953     + *
3954     + * Exchanges the contents of this string with that of @a s in constant
3955     + * time.
3956     + */
3957     + void
3958     + swap(basic_string& __s);
3959     +
3960     + // String operations:
3961     + /**
3962     + * @brief Return const pointer to null-terminated contents.
3963     + *
3964     + * This is a handle to internal data. Do not modify or dire things may
3965     + * happen.
3966     + */
3967     + const _CharT*
3968     + c_str() const
3969     + { return _M_data(); }
3970     +
3971     + /**
3972     + * @brief Return const pointer to contents.
3973     + *
3974     + * This is a handle to internal data. Do not modify or dire things may
3975     + * happen.
3976     + */
3977     + const _CharT*
3978     + data() const
3979     + { return _M_data(); }
3980     +
3981     + /**
3982     + * @brief Return copy of allocator used to construct this string.
3983     + */
3984     + allocator_type
3985     + get_allocator() const
3986     + { return _M_dataplus; }
3987     +
3988     + /**
3989     + * @brief Find position of a C substring.
3990     + * @param s C string to locate.
3991     + * @param pos Index of character to search from.
3992     + * @param n Number of characters from @a s to search for.
3993     + * @return Index of start of first occurrence.
3994     + *
3995     + * Starting from @a pos, searches forward for the first @a n characters
3996     + * in @a s within this string. If found, returns the index where it
3997     + * begins. If not found, returns npos.
3998     + */
3999     + size_type
4000     + find(const _CharT* __s, size_type __pos, size_type __n) const;
4001     +
4002     + /**
4003     + * @brief Find position of a string.
4004     + * @param str String to locate.
4005     + * @param pos Index of character to search from (default 0).
4006     + * @return Index of start of first occurrence.
4007     + *
4008     + * Starting from @a pos, searches forward for value of @a str within
4009     + * this string. If found, returns the index where it begins. If not
4010     + * found, returns npos.
4011     + */
4012     + size_type
4013     + find(const basic_string& __str, size_type __pos = 0) const
4014     + { return this->find(__str.data(), __pos, __str.size()); }
4015     +
4016     + /**
4017     + * @brief Find position of a C string.
4018     + * @param s C string to locate.
4019     + * @param pos Index of character to search from (default 0).
4020     + * @return Index of start of first occurrence.
4021     + *
4022     + * Starting from @a pos, searches forward for the value of @a s within
4023     + * this string. If found, returns the index where it begins. If not
4024     + * found, returns npos.
4025     + */
4026     + size_type
4027     + find(const _CharT* __s, size_type __pos = 0) const
4028     + {
4029     + __glibcxx_requires_string(__s);
4030     + return this->find(__s, __pos, traits_type::length(__s));
4031     + }
4032     +
4033     + /**
4034     + * @brief Find position of a character.
4035     + * @param c Character to locate.
4036     + * @param pos Index of character to search from (default 0).
4037     + * @return Index of first occurrence.
4038     + *
4039     + * Starting from @a pos, searches forward for @a c within this string.
4040     + * If found, returns the index where it was found. If not found,
4041     + * returns npos.
4042     + */
4043     + size_type
4044     + find(_CharT __c, size_type __pos = 0) const;
4045     +
4046     + /**
4047     + * @brief Find last position of a string.
4048     + * @param str String to locate.
4049     + * @param pos Index of character to search back from (default end).
4050     + * @return Index of start of last occurrence.
4051     + *
4052     + * Starting from @a pos, searches backward for value of @a str within
4053     + * this string. If found, returns the index where it begins. If not
4054     + * found, returns npos.
4055     + */
4056     + size_type
4057     + rfind(const basic_string& __str, size_type __pos = npos) const
4058     + { return this->rfind(__str.data(), __pos, __str.size()); }
4059     +
4060     + /**
4061     + * @brief Find last position of a C substring.
4062     + * @param s C string to locate.
4063     + * @param pos Index of character to search back from.
4064     + * @param n Number of characters from s to search for.
4065     + * @return Index of start of last occurrence.
4066     + *
4067     + * Starting from @a pos, searches backward for the first @a n
4068     + * characters in @a s within this string. If found, returns the index
4069     + * where it begins. If not found, returns npos.
4070     + */
4071     + size_type
4072     + rfind(const _CharT* __s, size_type __pos, size_type __n) const;
4073     +
4074     + /**
4075     + * @brief Find last position of a C string.
4076     + * @param s C string to locate.
4077     + * @param pos Index of character to start search at (default 0).
4078     + * @return Index of start of last occurrence.
4079     + *
4080     + * Starting from @a pos, searches backward for the value of @a s within
4081     + * this string. If found, returns the index where it begins. If not
4082     + * found, returns npos.
4083     + */
4084     + size_type
4085     + rfind(const _CharT* __s, size_type __pos = npos) const
4086     + {
4087     + __glibcxx_requires_string(__s);
4088     + return this->rfind(__s, __pos, traits_type::length(__s));
4089     + }
4090     +
4091     + /**
4092     + * @brief Find last position of a character.
4093     + * @param c Character to locate.
4094     + * @param pos Index of character to search back from (default 0).
4095     + * @return Index of last occurrence.
4096     + *
4097     + * Starting from @a pos, searches backward for @a c within this string.
4098     + * If found, returns the index where it was found. If not found,
4099     + * returns npos.
4100     + */
4101     + size_type
4102     + rfind(_CharT __c, size_type __pos = npos) const;
4103     +
4104     + /**
4105     + * @brief Find position of a character of string.
4106     + * @param str String containing characters to locate.
4107     + * @param pos Index of character to search from (default 0).
4108     + * @return Index of first occurrence.
4109     + *
4110     + * Starting from @a pos, searches forward for one of the characters of
4111     + * @a str within this string. If found, returns the index where it was
4112     + * found. If not found, returns npos.
4113     + */
4114     + size_type
4115     + find_first_of(const basic_string& __str, size_type __pos = 0) const
4116     + { return this->find_first_of(__str.data(), __pos, __str.size()); }
4117     +
4118     + /**
4119     + * @brief Find position of a character of C substring.
4120     + * @param s String containing characters to locate.
4121     + * @param pos Index of character to search from (default 0).
4122     + * @param n Number of characters from s to search for.
4123     + * @return Index of first occurrence.
4124     + *
4125     + * Starting from @a pos, searches forward for one of the first @a n
4126     + * characters of @a s within this string. If found, returns the index
4127     + * where it was found. If not found, returns npos.
4128     + */
4129     + size_type
4130     + find_first_of(const _CharT* __s, size_type __pos, size_type __n) const;
4131     +
4132     + /**
4133     + * @brief Find position of a character of C string.
4134     + * @param s String containing characters to locate.
4135     + * @param pos Index of character to search from (default 0).
4136     + * @return Index of first occurrence.
4137     + *
4138     + * Starting from @a pos, searches forward for one of the characters of
4139     + * @a s within this string. If found, returns the index where it was
4140     + * found. If not found, returns npos.
4141     + */
4142     + size_type
4143     + find_first_of(const _CharT* __s, size_type __pos = 0) const
4144     + {
4145     + __glibcxx_requires_string(__s);
4146     + return this->find_first_of(__s, __pos, traits_type::length(__s));
4147     + }
4148     +
4149     + /**
4150     + * @brief Find position of a character.
4151     + * @param c Character to locate.
4152     + * @param pos Index of character to search from (default 0).
4153     + * @return Index of first occurrence.
4154     + *
4155     + * Starting from @a pos, searches forward for the character @a c within
4156     + * this string. If found, returns the index where it was found. If
4157     + * not found, returns npos.
4158     + *
4159     + * Note: equivalent to find(c, pos).
4160     + */
4161     + size_type
4162     + find_first_of(_CharT __c, size_type __pos = 0) const
4163     + { return this->find(__c, __pos); }
4164     +
4165     + /**
4166     + * @brief Find last position of a character of string.
4167     + * @param str String containing characters to locate.
4168     + * @param pos Index of character to search back from (default end).
4169     + * @return Index of last occurrence.
4170     + *
4171     + * Starting from @a pos, searches backward for one of the characters of
4172     + * @a str within this string. If found, returns the index where it was
4173     + * found. If not found, returns npos.
4174     + */
4175     + size_type
4176     + find_last_of(const basic_string& __str, size_type __pos = npos) const
4177     + { return this->find_last_of(__str.data(), __pos, __str.size()); }
4178     +
4179     + /**
4180     + * @brief Find last position of a character of C substring.
4181     + * @param s C string containing characters to locate.
4182     + * @param pos Index of character to search back from (default end).
4183     + * @param n Number of characters from s to search for.
4184     + * @return Index of last occurrence.
4185     + *
4186     + * Starting from @a pos, searches backward for one of the first @a n
4187     + * characters of @a s within this string. If found, returns the index
4188     + * where it was found. If not found, returns npos.
4189     + */
4190     + size_type
4191     + find_last_of(const _CharT* __s, size_type __pos, size_type __n) const;
4192     +
4193     + /**
4194     + * @brief Find last position of a character of C string.
4195     + * @param s C string containing characters to locate.
4196     + * @param pos Index of character to search back from (default end).
4197     + * @return Index of last occurrence.
4198     + *
4199     + * Starting from @a pos, searches backward for one of the characters of
4200     + * @a s within this string. If found, returns the index where it was
4201     + * found. If not found, returns npos.
4202     + */
4203     + size_type
4204     + find_last_of(const _CharT* __s, size_type __pos = npos) const
4205     + {
4206     + __glibcxx_requires_string(__s);
4207     + return this->find_last_of(__s, __pos, traits_type::length(__s));
4208     + }
4209     +
4210     + /**
4211     + * @brief Find last position of a character.
4212     + * @param c Character to locate.
4213     + * @param pos Index of character to search back from (default 0).
4214     + * @return Index of last occurrence.
4215     + *
4216     + * Starting from @a pos, searches backward for @a c within this string.
4217     + * If found, returns the index where it was found. If not found,
4218     + * returns npos.
4219     + *
4220     + * Note: equivalent to rfind(c, pos).
4221     + */
4222     + size_type
4223     + find_last_of(_CharT __c, size_type __pos = npos) const
4224     + { return this->rfind(__c, __pos); }
4225     +
4226     + /**
4227     + * @brief Find position of a character not in string.
4228     + * @param str String containing characters to avoid.
4229     + * @param pos Index of character to search from (default 0).
4230     + * @return Index of first occurrence.
4231     + *
4232     + * Starting from @a pos, searches forward for a character not contained
4233     + * in @a str within this string. If found, returns the index where it
4234     + * was found. If not found, returns npos.
4235     + */
4236     + size_type
4237     + find_first_not_of(const basic_string& __str, size_type __pos = 0) const
4238     + { return this->find_first_not_of(__str.data(), __pos, __str.size()); }
4239     +
4240     + /**
4241     + * @brief Find position of a character not in C substring.
4242     + * @param s C string containing characters to avoid.
4243     + * @param pos Index of character to search from (default 0).
4244     + * @param n Number of characters from s to consider.
4245     + * @return Index of first occurrence.
4246     + *
4247     + * Starting from @a pos, searches forward for a character not contained
4248     + * in the first @a n characters of @a s within this string. If found,
4249     + * returns the index where it was found. If not found, returns npos.
4250     + */
4251     + size_type
4252     + find_first_not_of(const _CharT* __s, size_type __pos,
4253     + size_type __n) const;
4254     +
4255     + /**
4256     + * @brief Find position of a character not in C string.
4257     + * @param s C string containing characters to avoid.
4258     + * @param pos Index of character to search from (default 0).
4259     + * @return Index of first occurrence.
4260     + *
4261     + * Starting from @a pos, searches forward for a character not contained
4262     + * in @a s within this string. If found, returns the index where it
4263     + * was found. If not found, returns npos.
4264     + */
4265     + size_type
4266     + find_first_not_of(const _CharT* __s, size_type __pos = 0) const
4267     + {
4268     + __glibcxx_requires_string(__s);
4269     + return this->find_first_not_of(__s, __pos, traits_type::length(__s));
4270     + }
4271     +
4272     + /**
4273     + * @brief Find position of a different character.
4274     + * @param c Character to avoid.
4275     + * @param pos Index of character to search from (default 0).
4276     + * @return Index of first occurrence.
4277     + *
4278     + * Starting from @a pos, searches forward for a character other than @a c
4279     + * within this string. If found, returns the index where it was found.
4280     + * If not found, returns npos.
4281     + */
4282     + size_type
4283     + find_first_not_of(_CharT __c, size_type __pos = 0) const;
4284     +
4285     + /**
4286     + * @brief Find last position of a character not in string.
4287     + * @param str String containing characters to avoid.
4288     + * @param pos Index of character to search from (default 0).
4289     + * @return Index of first occurrence.
4290     + *
4291     + * Starting from @a pos, searches backward for a character not
4292     + * contained in @a str within this string. If found, returns the index
4293     + * where it was found. If not found, returns npos.
4294     + */
4295     + size_type
4296     + find_last_not_of(const basic_string& __str, size_type __pos = npos) const
4297     + { return this->find_last_not_of(__str.data(), __pos, __str.size()); }
4298     +
4299     + /**
4300     + * @brief Find last position of a character not in C substring.
4301     + * @param s C string containing characters to avoid.
4302     + * @param pos Index of character to search from (default 0).
4303     + * @param n Number of characters from s to consider.
4304     + * @return Index of first occurrence.
4305     + *
4306     + * Starting from @a pos, searches backward for a character not
4307     + * contained in the first @a n characters of @a s within this string.
4308     + * If found, returns the index where it was found. If not found,
4309     + * returns npos.
4310     + */
4311     + size_type
4312     + find_last_not_of(const _CharT* __s, size_type __pos,
4313     + size_type __n) const;
4314     + /**
4315     + * @brief Find position of a character not in C string.
4316     + * @param s C string containing characters to avoid.
4317     + * @param pos Index of character to search from (default 0).
4318     + * @return Index of first occurrence.
4319     + *
4320     + * Starting from @a pos, searches backward for a character not
4321     + * contained in @a s within this string. If found, returns the index
4322     + * where it was found. If not found, returns npos.
4323     + */
4324     + size_type
4325     + find_last_not_of(const _CharT* __s, size_type __pos = npos) const
4326     + {
4327     + __glibcxx_requires_string(__s);
4328     + return this->find_last_not_of(__s, __pos, traits_type::length(__s));
4329     + }
4330     +
4331     + /**
4332     + * @brief Find last position of a different character.
4333     + * @param c Character to avoid.
4334     + * @param pos Index of character to search from (default 0).
4335     + * @return Index of first occurrence.
4336     + *
4337     + * Starting from @a pos, searches backward for a character other than
4338     + * @a c within this string. If found, returns the index where it was
4339     + * found. If not found, returns npos.
4340     + */
4341     + size_type
4342     + find_last_not_of(_CharT __c, size_type __pos = npos) const;
4343     +
4344     + /**
4345     + * @brief Get a substring.
4346     + * @param pos Index of first character (default 0).
4347     + * @param n Number of characters in substring (default remainder).
4348     + * @return The new string.
4349     + * @throw std::out_of_range If pos > size().
4350     + *
4351     + * Construct and return a new string using the @a n characters starting
4352     + * at @a pos. If the string is too short, use the remainder of the
4353     + * characters. If @a pos is beyond the end of the string, out_of_range
4354     + * is thrown.
4355     + */
4356     + basic_string
4357     + substr(size_type __pos = 0, size_type __n = npos) const
4358     + { return basic_string(*this,
4359     + _M_check(__pos, "basic_string::substr"), __n); }
4360     +
4361     + /**
4362     + * @brief Compare to a string.
4363     + * @param str String to compare against.
4364     + * @return Integer < 0, 0, or > 0.
4365     + *
4366     + * Returns an integer < 0 if this string is ordered before @a str, 0 if
4367     + * their values are equivalent, or > 0 if this string is ordered after
4368     + * @a str. If the lengths of @a str and this string are different, the
4369     + * shorter one is ordered first. If they are the same, returns the
4370     + * result of traits::compare(data(),str.data(),size());
4371     + */
4372     + int
4373     + compare(const basic_string& __str) const
4374     + {
4375     + const size_type __size = this->size();
4376     + const size_type __osize = __str.size();
4377     + const size_type __len = std::min(__size, __osize);
4378     +
4379     + int __r = traits_type::compare(_M_data(), __str.data(), __len);
4380     + if (!__r)
4381     + __r = __size - __osize;
4382     + return __r;
4383     + }
4384     +
4385     + /**
4386     + * @brief Compare substring to a string.
4387     + * @param pos Index of first character of substring.
4388     + * @param n Number of characters in substring.
4389     + * @param str String to compare against.
4390     + * @return Integer < 0, 0, or > 0.
4391     + *
4392     + * Form the substring of this string from the @a n characters starting
4393     + * at @a pos. Returns an integer < 0 if the substring is ordered
4394     + * before @a str, 0 if their values are equivalent, or > 0 if the
4395     + * substring is ordered after @a str. If the lengths @a of str and the
4396     + * substring are different, the shorter one is ordered first. If they
4397     + * are the same, returns the result of
4398     + * traits::compare(substring.data(),str.data(),size());
4399     + */
4400     + int
4401     + compare(size_type __pos, size_type __n, const basic_string& __str) const;
4402     +
4403     + /**
4404     + * @brief Compare substring to a substring.
4405     + * @param pos1 Index of first character of substring.
4406     + * @param n1 Number of characters in substring.
4407     + * @param str String to compare against.
4408     + * @param pos2 Index of first character of substring of str.
4409     + * @param n2 Number of characters in substring of str.
4410     + * @return Integer < 0, 0, or > 0.
4411     + *
4412     + * Form the substring of this string from the @a n1 characters starting
4413     + * at @a pos1. Form the substring of @a str from the @a n2 characters
4414     + * starting at @a pos2. Returns an integer < 0 if this substring is
4415     + * ordered before the substring of @a str, 0 if their values are
4416     + * equivalent, or > 0 if this substring is ordered after the substring
4417     + * of @a str. If the lengths of the substring of @a str and this
4418     + * substring are different, the shorter one is ordered first. If they
4419     + * are the same, returns the result of
4420     + * traits::compare(substring.data(),str.substr(pos2,n2).data(),size());
4421     + */
4422     + int
4423     + compare(size_type __pos1, size_type __n1, const basic_string& __str,
4424     + size_type __pos2, size_type __n2) const;
4425     +
4426     + /**
4427     + * @brief Compare to a C string.
4428     + * @param s C string to compare against.
4429     + * @return Integer < 0, 0, or > 0.
4430     + *
4431     + * Returns an integer < 0 if this string is ordered before @a s, 0 if
4432     + * their values are equivalent, or > 0 if this string is ordered after
4433     + * @a s. If the lengths of @a s and this string are different, the
4434     + * shorter one is ordered first. If they are the same, returns the
4435     + * result of traits::compare(data(),s,size());
4436     + */
4437     + int
4438     + compare(const _CharT* __s) const;
4439     +
4440     + // _GLIBCXX_RESOLVE_LIB_DEFECTS
4441     + // 5 String::compare specification questionable
4442     + /**
4443     + * @brief Compare substring to a C string.
4444     + * @param pos Index of first character of substring.
4445     + * @param n1 Number of characters in substring.
4446     + * @param s C string to compare against.
4447     + * @return Integer < 0, 0, or > 0.
4448     + *
4449     + * Form the substring of this string from the @a n1 characters starting
4450     + * at @a pos. Returns an integer < 0 if the substring is ordered
4451     + * before @a s, 0 if their values are equivalent, or > 0 if the
4452     + * substring is ordered after @a s. If the lengths of @a s and the
4453     + * substring are different, the shorter one is ordered first. If they
4454     + * are the same, returns the result of
4455     + * traits::compare(substring.data(),s,size());
4456     + */
4457     + int
4458     + compare(size_type __pos, size_type __n1, const _CharT* __s) const;
4459     +
4460     + /**
4461     + * @brief Compare substring against a character array.
4462     + * @param pos1 Index of first character of substring.
4463     + * @param n1 Number of characters in substring.
4464     + * @param s character array to compare against.
4465     + * @param n2 Number of characters of s.
4466     + * @return Integer < 0, 0, or > 0.
4467     + *
4468     + * Form the substring of this string from the @a n1 characters starting
4469     + * at @a pos1. Form a string from the first @a n2 characters of @a s.
4470     + * Returns an integer < 0 if this substring is ordered before the string
4471     + * from @a s, 0 if their values are equivalent, or > 0 if this substring
4472     + * is ordered after the string from @a s. If the lengths of this
4473     + * substring and @a n2 are different, the shorter one is ordered first.
4474     + * If they are the same, returns the result of
4475     + * traits::compare(substring.data(),s,size());
4476     + *
4477     + * NB: s must have at least n2 characters, '\0' has no special
4478     + * meaning.
4479     + */
4480     + int
4481     + compare(size_type __pos, size_type __n1, const _CharT* __s,
4482     + size_type __n2) const;
4483     + };
4484     +
4485     + template<typename _CharT, typename _Traits, typename _Alloc>
4486     + inline basic_string<_CharT, _Traits, _Alloc>::
4487     + basic_string()
4488     +#ifndef _GLIBCXX_FULLY_DYNAMIC_STRING
4489     + : _M_dataplus(_S_empty_rep()._M_refdata(), _Alloc()) { }
4490     +#else
4491     + : _M_dataplus(_S_construct(size_type(), _CharT(), _Alloc()), _Alloc()) { }
4492     +#endif
4493     +
4494     + // operator+
4495     + /**
4496     + * @brief Concatenate two strings.
4497     + * @param lhs First string.
4498     + * @param rhs Last string.
4499     + * @return New string with value of @a lhs followed by @a rhs.
4500     + */
4501     + template<typename _CharT, typename _Traits, typename _Alloc>
4502     + basic_string<_CharT, _Traits, _Alloc>
4503     + operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
4504     + const basic_string<_CharT, _Traits, _Alloc>& __rhs)
4505     + {
4506     + basic_string<_CharT, _Traits, _Alloc> __str(__lhs);
4507     + __str.append(__rhs);
4508     + return __str;
4509     + }
4510     +
4511     + /**
4512     + * @brief Concatenate C string and string.
4513     + * @param lhs First string.
4514     + * @param rhs Last string.
4515     + * @return New string with value of @a lhs followed by @a rhs.
4516     + */
4517     + template<typename _CharT, typename _Traits, typename _Alloc>
4518     + basic_string<_CharT,_Traits,_Alloc>
4519     + operator+(const _CharT* __lhs,
4520     + const basic_string<_CharT,_Traits,_Alloc>& __rhs);
4521     +
4522     + /**
4523     + * @brief Concatenate character and string.
4524     + * @param lhs First string.
4525     + * @param rhs Last string.
4526     + * @return New string with @a lhs followed by @a rhs.
4527     + */
4528     + template<typename _CharT, typename _Traits, typename _Alloc>
4529     + basic_string<_CharT,_Traits,_Alloc>
4530     + operator+(_CharT __lhs, const basic_string<_CharT,_Traits,_Alloc>& __rhs);
4531     +
4532     + /**
4533     + * @brief Concatenate string and C string.
4534     + * @param lhs First string.
4535     + * @param rhs Last string.
4536     + * @return New string with @a lhs followed by @a rhs.
4537     + */
4538     + template<typename _CharT, typename _Traits, typename _Alloc>
4539     + inline basic_string<_CharT, _Traits, _Alloc>
4540     + operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
4541     + const _CharT* __rhs)
4542     + {
4543     + basic_string<_CharT, _Traits, _Alloc> __str(__lhs);
4544     + __str.append(__rhs);
4545     + return __str;
4546     + }
4547     +
4548     + /**
4549     + * @brief Concatenate string and character.
4550     + * @param lhs First string.
4551     + * @param rhs Last string.
4552     + * @return New string with @a lhs followed by @a rhs.
4553     + */
4554     + template<typename _CharT, typename _Traits, typename _Alloc>
4555     + inline basic_string<_CharT, _Traits, _Alloc>
4556     + operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs, _CharT __rhs)
4557     + {
4558     + typedef basic_string<_CharT, _Traits, _Alloc> __string_type;
4559     + typedef typename __string_type::size_type __size_type;
4560     + __string_type __str(__lhs);
4561     + __str.append(__size_type(1), __rhs);
4562     + return __str;
4563     + }
4564     +
4565     + // operator ==
4566     + /**
4567     + * @brief Test equivalence of two strings.
4568     + * @param lhs First string.
4569     + * @param rhs Second string.
4570     + * @return True if @a lhs.compare(@a rhs) == 0. False otherwise.
4571     + */
4572     + template<typename _CharT, typename _Traits, typename _Alloc>
4573     + inline bool
4574     + operator==(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
4575     + const basic_string<_CharT, _Traits, _Alloc>& __rhs)
4576     + { return __lhs.compare(__rhs) == 0; }
4577     +
4578     + /**
4579     + * @brief Test equivalence of C string and string.
4580     + * @param lhs C string.
4581     + * @param rhs String.
4582     + * @return True if @a rhs.compare(@a lhs) == 0. False otherwise.
4583     + */
4584     + template<typename _CharT, typename _Traits, typename _Alloc>
4585     + inline bool
4586     + operator==(const _CharT* __lhs,
4587     + const basic_string<_CharT, _Traits, _Alloc>& __rhs)
4588     + { return __rhs.compare(__lhs) == 0; }
4589     +
4590     + /**
4591     + * @brief Test equivalence of string and C string.
4592     + * @param lhs String.
4593     + * @param rhs C string.
4594     + * @return True if @a lhs.compare(@a rhs) == 0. False otherwise.
4595     + */
4596     + template<typename _CharT, typename _Traits, typename _Alloc>
4597     + inline bool
4598     + operator==(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
4599     + const _CharT* __rhs)
4600     + { return __lhs.compare(__rhs) == 0; }
4601     +
4602     + // operator !=
4603     + /**
4604     + * @brief Test difference of two strings.
4605     + * @param lhs First string.
4606     + * @param rhs Second string.
4607     + * @return True if @a lhs.compare(@a rhs) != 0. False otherwise.
4608     + */
4609     + template<typename _CharT, typename _Traits, typename _Alloc>
4610     + inline bool
4611     + operator!=(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
4612     + const basic_string<_CharT, _Traits, _Alloc>& __rhs)
4613     + { return __rhs.compare(__lhs) != 0; }
4614     +
4615     + /**
4616     + * @brief Test difference of C string and string.
4617     + * @param lhs C string.
4618     + * @param rhs String.
4619     + * @return True if @a rhs.compare(@a lhs) != 0. False otherwise.
4620     + */
4621     + template<typename _CharT, typename _Traits, typename _Alloc>
4622     + inline bool
4623     + operator!=(const _CharT* __lhs,
4624     + const basic_string<_CharT, _Traits, _Alloc>& __rhs)
4625     + { return __rhs.compare(__lhs) != 0; }
4626     +
4627     + /**
4628     + * @brief Test difference of string and C string.
4629     + * @param lhs String.
4630     + * @param rhs C string.
4631     + * @return True if @a lhs.compare(@a rhs) != 0. False otherwise.
4632     + */
4633     + template<typename _CharT, typename _Traits, typename _Alloc>
4634     + inline bool
4635     + operator!=(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
4636     + const _CharT* __rhs)
4637     + { return __lhs.compare(__rhs) != 0; }
4638     +
4639     + // operator <
4640     + /**
4641     + * @brief Test if string precedes string.
4642     + * @param lhs First string.
4643     + * @param rhs Second string.
4644     + * @return True if @a lhs precedes @a rhs. False otherwise.
4645     + */
4646     + template<typename _CharT, typename _Traits, typename _Alloc>
4647     + inline bool
4648     + operator<(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
4649     + const basic_string<_CharT, _Traits, _Alloc>& __rhs)
4650     + { return __lhs.compare(__rhs) < 0; }
4651     +
4652     + /**
4653     + * @brief Test if string precedes C string.
4654     + * @param lhs String.
4655     + * @param rhs C string.
4656     + * @return True if @a lhs precedes @a rhs. False otherwise.
4657     + */
4658     + template<typename _CharT, typename _Traits, typename _Alloc>
4659     + inline bool
4660     + operator<(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
4661     + const _CharT* __rhs)
4662     + { return __lhs.compare(__rhs) < 0; }
4663     +
4664     + /**
4665     + * @brief Test if C string precedes string.
4666     + * @param lhs C string.
4667     + * @param rhs String.
4668     + * @return True if @a lhs precedes @a rhs. False otherwise.
4669     + */
4670     + template<typename _CharT, typename _Traits, typename _Alloc>
4671     + inline bool
4672     + operator<(const _CharT* __lhs,
4673     + const basic_string<_CharT, _Traits, _Alloc>& __rhs)
4674     + { return __rhs.compare(__lhs) > 0; }
4675     +
4676     + // operator >
4677     + /**
4678     + * @brief Test if string follows string.
4679     + * @param lhs First string.
4680     + * @param rhs Second string.
4681     + * @return True if @a lhs follows @a rhs. False otherwise.
4682     + */
4683     + template<typename _CharT, typename _Traits, typename _Alloc>
4684     + inline bool
4685     + operator>(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
4686     + const basic_string<_CharT, _Traits, _Alloc>& __rhs)
4687     + { return __lhs.compare(__rhs) > 0; }
4688     +
4689     + /**
4690     + * @brief Test if string follows C string.
4691     + * @param lhs String.
4692     + * @param rhs C string.
4693     + * @return True if @a lhs follows @a rhs. False otherwise.
4694     + */
4695     + template<typename _CharT, typename _Traits, typename _Alloc>
4696     + inline bool
4697     + operator>(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
4698     + const _CharT* __rhs)
4699     + { return __lhs.compare(__rhs) > 0; }
4700     +
4701     + /**
4702     + * @brief Test if C string follows string.
4703     + * @param lhs C string.
4704     + * @param rhs String.
4705     + * @return True if @a lhs follows @a rhs. False otherwise.
4706     + */
4707     + template<typename _CharT, typename _Traits, typename _Alloc>
4708     + inline bool
4709     + operator>(const _CharT* __lhs,
4710     + const basic_string<_CharT, _Traits, _Alloc>& __rhs)
4711     + { return __rhs.compare(__lhs) < 0; }
4712     +
4713     + // operator <=
4714     + /**
4715     + * @brief Test if string doesn't follow string.
4716     + * @param lhs First string.
4717     + * @param rhs Second string.
4718     + * @return True if @a lhs doesn't follow @a rhs. False otherwise.
4719     + */
4720     + template<typename _CharT, typename _Traits, typename _Alloc>
4721     + inline bool
4722     + operator<=(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
4723     + const basic_string<_CharT, _Traits, _Alloc>& __rhs)
4724     + { return __lhs.compare(__rhs) <= 0; }
4725     +
4726     + /**
4727     + * @brief Test if string doesn't follow C string.
4728     + * @param lhs String.
4729     + * @param rhs C string.
4730     + * @return True if @a lhs doesn't follow @a rhs. False otherwise.
4731     + */
4732     + template<typename _CharT, typename _Traits, typename _Alloc>
4733     + inline bool
4734     + operator<=(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
4735     + const _CharT* __rhs)
4736     + { return __lhs.compare(__rhs) <= 0; }
4737     +
4738     + /**
4739     + * @brief Test if C string doesn't follow string.
4740     + * @param lhs C string.
4741     + * @param rhs String.
4742     + * @return True if @a lhs doesn't follow @a rhs. False otherwise.
4743     + */
4744     + template<typename _CharT, typename _Traits, typename _Alloc>
4745     + inline bool
4746     + operator<=(const _CharT* __lhs,
4747     + const basic_string<_CharT, _Traits, _Alloc>& __rhs)
4748     + { return __rhs.compare(__lhs) >= 0; }
4749     +
4750     + // operator >=
4751     + /**
4752     + * @brief Test if string doesn't precede string.
4753     + * @param lhs First string.
4754     + * @param rhs Second string.
4755     + * @return True if @a lhs doesn't precede @a rhs. False otherwise.
4756     + */
4757     + template<typename _CharT, typename _Traits, typename _Alloc>
4758     + inline bool
4759     + operator>=(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
4760     + const basic_string<_CharT, _Traits, _Alloc>& __rhs)
4761     + { return __lhs.compare(__rhs) >= 0; }
4762     +
4763     + /**
4764     + * @brief Test if string doesn't precede C string.
4765     + * @param lhs String.
4766     + * @param rhs C string.
4767     + * @return True if @a lhs doesn't precede @a rhs. False otherwise.
4768     + */
4769     + template<typename _CharT, typename _Traits, typename _Alloc>
4770     + inline bool
4771     + operator>=(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
4772     + const _CharT* __rhs)
4773     + { return __lhs.compare(__rhs) >= 0; }
4774     +
4775     + /**
4776     + * @brief Test if C string doesn't precede string.
4777     + * @param lhs C string.
4778     + * @param rhs String.
4779     + * @return True if @a lhs doesn't precede @a rhs. False otherwise.
4780     + */
4781     + template<typename _CharT, typename _Traits, typename _Alloc>
4782     + inline bool
4783     + operator>=(const _CharT* __lhs,
4784     + const basic_string<_CharT, _Traits, _Alloc>& __rhs)
4785     + { return __rhs.compare(__lhs) <= 0; }
4786     +
4787     + /**
4788     + * @brief Swap contents of two strings.
4789     + * @param lhs First string.
4790     + * @param rhs Second string.
4791     + *
4792     + * Exchanges the contents of @a lhs and @a rhs in constant time.
4793     + */
4794     + template<typename _CharT, typename _Traits, typename _Alloc>
4795     + inline void
4796     + swap(basic_string<_CharT, _Traits, _Alloc>& __lhs,
4797     + basic_string<_CharT, _Traits, _Alloc>& __rhs)
4798     + { __lhs.swap(__rhs); }
4799     +
4800     + /**
4801     + * @brief Read stream into a string.
4802     + * @param is Input stream.
4803     + * @param str Buffer to store into.
4804     + * @return Reference to the input stream.
4805     + *
4806     + * Stores characters from @a is into @a str until whitespace is found, the
4807     + * end of the stream is encountered, or str.max_size() is reached. If
4808     + * is.width() is non-zero, that is the limit on the number of characters
4809     + * stored into @a str. Any previous contents of @a str are erased.
4810     + */
4811     + template<typename _CharT, typename _Traits, typename _Alloc>
4812     + basic_istream<_CharT, _Traits>&
4813     + operator>>(basic_istream<_CharT, _Traits>& __is,
4814     + basic_string<_CharT, _Traits, _Alloc>& __str);
4815     +
4816     + /**
4817     + * @brief Write string to a stream.
4818     + * @param os Output stream.
4819     + * @param str String to write out.
4820     + * @return Reference to the output stream.
4821     + *
4822     + * Output characters of @a str into os following the same rules as for
4823     + * writing a C string.
4824     + */
4825     + template<typename _CharT, typename _Traits, typename _Alloc>
4826     + basic_ostream<_CharT, _Traits>&
4827     + operator<<(basic_ostream<_CharT, _Traits>& __os,
4828     + const basic_string<_CharT, _Traits, _Alloc>& __str);
4829     +
4830     + /**
4831     + * @brief Read a line from stream into a string.
4832     + * @param is Input stream.
4833     + * @param str Buffer to store into.
4834     + * @param delim Character marking end of line.
4835     + * @return Reference to the input stream.
4836     + *
4837     + * Stores characters from @a is into @a str until @a delim is found, the
4838     + * end of the stream is encountered, or str.max_size() is reached. If
4839     + * is.width() is non-zero, that is the limit on the number of characters
4840     + * stored into @a str. Any previous contents of @a str are erased. If @a
4841     + * delim was encountered, it is extracted but not stored into @a str.
4842     + */
4843     + template<typename _CharT, typename _Traits, typename _Alloc>
4844     + basic_istream<_CharT, _Traits>&
4845     + getline(basic_istream<_CharT, _Traits>& __is,
4846     + basic_string<_CharT, _Traits, _Alloc>& __str, _CharT __delim);
4847     +
4848     + /**
4849     + * @brief Read a line from stream into a string.
4850     + * @param is Input stream.
4851     + * @param str Buffer to store into.
4852     + * @return Reference to the input stream.
4853     + *
4854     + * Stores characters from is into @a str until '\n' is found, the end of
4855     + * the stream is encountered, or str.max_size() is reached. If is.width()
4856     + * is non-zero, that is the limit on the number of characters stored into
4857     + * @a str. Any previous contents of @a str are erased. If end of line was
4858     + * encountered, it is extracted but not stored into @a str.
4859     + */
4860     + template<typename _CharT, typename _Traits, typename _Alloc>
4861     + inline basic_istream<_CharT, _Traits>&
4862     + getline(basic_istream<_CharT, _Traits>& __is,
4863     + basic_string<_CharT, _Traits, _Alloc>& __str);
4864     +
4865     + template<>
4866     + basic_istream<char>&
4867     + getline(basic_istream<char>& __in, basic_string<char>& __str,
4868     + char __delim);
4869     +
4870     +#ifdef _GLIBCXX_USE_WCHAR_T
4871     + template<>
4872     + basic_istream<wchar_t>&
4873     + getline(basic_istream<wchar_t>& __in, basic_string<wchar_t>& __str,
4874     + wchar_t __delim);
4875     +#endif
4876     +} // namespace std
4877     +
4878     +#endif /* _BASIC_STRING_H */
4879     +#endif /* ! __APPLE__ */
4880     diff -Nur gccxml-0.6.0-p3/GCC_XML/Support/GCC/4.1/bits/c++locale.h gccxml-0.6.0-p4/GCC_XML/Support/GCC/4.1/bits/c++locale.h
4881     --- gccxml-0.6.0-p3/GCC_XML/Support/GCC/4.1/bits/c++locale.h 1970-01-01 01:00:00.000000000 +0100
4882     +++ gccxml-0.6.0-p4/GCC_XML/Support/GCC/4.1/bits/c++locale.h 2007-08-22 16:17:35.000000000 +0200
4883     @@ -0,0 +1,19 @@
4884     +#ifndef GCCXML_BITS_CXXLOCALE
4885     +#define GCCXML_BITS_CXXLOCALE
4886     +
4887     +#include <clocale>
4888     +#include <cstring>
4889     +#include <cstdio>
4890     +
4891     +#ifndef __attribute__
4892     +# define __attribute__(x)
4893     +# define GCCXML_BITS_CXXLOCALE_DEFINED_ATTRIBUTE
4894     +#endif
4895     +
4896     +#include_next <bits/c++locale.h>
4897     +
4898     +#ifdef GCCXML_BITS_CXXLOCALE_DEFINED_ATTRIBUTE
4899     +# undef __attribute__
4900     +#endif
4901     +
4902     +#endif
4903     diff -Nur gccxml-0.6.0-p3/GCC_XML/Support/GCC/4.1/gccxml_builtins.h gccxml-0.6.0-p4/GCC_XML/Support/GCC/4.1/gccxml_builtins.h
4904     --- gccxml-0.6.0-p3/GCC_XML/Support/GCC/4.1/gccxml_builtins.h 1970-01-01 01:00:00.000000000 +0100
4905     +++ gccxml-0.6.0-p4/GCC_XML/Support/GCC/4.1/gccxml_builtins.h 2007-08-22 16:17:35.000000000 +0200
4906     @@ -0,0 +1,131 @@
4907     +#define __builtin_apply(x,y,z) ((void*)0)
4908     +#define __builtin_nan(x) ((double)0.0)
4909     +#define __builtin_nanf(x) ((float)0.0)
4910     +#define __builtin_nanl(x) ((long double)0.0)
4911     +#define __builtin_huge_val(x) ((double)0.0)
4912     +#define __builtin_huge_valf(x) ((float)0.0)
4913     +#define __builtin_huge_vall(x) ((long double)0.0)
4914     +#define __builtin_apply_args(x) ((void*)0)
4915     +#define __builtin_types_compatible_p(x,y) 0
4916     +#define __builtin_choose_expr(x,y,z) int
4917     +#define __builtin_constant_p(x) 0
4918     +#define __builtin_offsetof(x,y) 0
4919     +void __builtin_return (void *RESULT);
4920     +void * __builtin_return_address (unsigned int LEVEL);
4921     +void * __builtin_frame_address (unsigned int LEVEL);
4922     +long __builtin_expect (long EXP, long C);
4923     +void __builtin_prefetch (const void *ADDR, ...);
4924     +double __builtin_inf (void);
4925     +float __builtin_inff (void);
4926     +long double __builtin_infl (void);
4927     +double __builtin_nans (const char *str);
4928     +float __builtin_nansf (const char *str);
4929     +long double __builtin_nansl (const char *str);
4930     +double __builtin_acos(double);
4931     +float __builtin_acosf(float);
4932     +long double __builtin_acosl(long double);
4933     +double __builtin_asin(double);
4934     +float __builtin_asinf(float);
4935     +long double __builtin_asinl(long double);
4936     +double __builtin_atan(double);
4937     +double __builtin_atan2(double, double);
4938     +float __builtin_atan2f(float, float);
4939     +long double __builtin_atan2l(long double, long double);
4940     +float __builtin_atanf(float);
4941     +long double __builtin_atanl(long double);
4942     +double __builtin_ceil(double);
4943     +float __builtin_ceilf(float);
4944     +long double __builtin_ceill(long double);
4945     +double __builtin_cos(double);
4946     +float __builtin_cosf(float);
4947     +double __builtin_cosh(double);
4948     +float __builtin_coshf(float);
4949     +long double __builtin_coshl(long double);
4950     +long double __builtin_cosl(long double);
4951     +double __builtin_exp(double);
4952     +float __builtin_expf(float);
4953     +long double __builtin_expl(long double);
4954     +double __builtin_fabs(double);
4955     +float __builtin_fabsf(float);
4956     +long double __builtin_fabsl(long double);
4957     +double __builtin_floor(double);
4958     +float __builtin_floorf(float);
4959     +long double __builtin_floorl(long double);
4960     +float __builtin_fmodf(float, float);
4961     +long double __builtin_fmodl(long double, long double);
4962     +double __builtin_frexp(double, int*);
4963     +float __builtin_frexpf(float, int*);
4964     +long double __builtin_frexpl(long double, int*);
4965     +double __builtin_ldexp(double, int);
4966     +float __builtin_ldexpf(float, int);
4967     +long double __builtin_ldexpl(long double, int);
4968     +double __builtin_log(double);
4969     +double __builtin_log10(double);
4970     +float __builtin_log10f(float);
4971     +long double __builtin_log10l(long double);
4972     +float __builtin_logf(float);
4973     +long double __builtin_logl(long double);
4974     +float __builtin_modff(float, float*);
4975     +long double __builtin_modfl(long double, long double*);
4976     +float __builtin_powf(float, float);
4977     +long double __builtin_powl(long double, long double);
4978     +double __builtin_powi(double, int);
4979     +float __builtin_powif(float, int);
4980     +long double __builtin_powil(long double, int);
4981     +double __builtin_sin(double);
4982     +float __builtin_sinf(float);
4983     +double __builtin_sinh(double);
4984     +float __builtin_sinhf(float);
4985     +long double __builtin_sinhl(long double);
4986     +long double __builtin_sinl(long double);
4987     +double __builtin_sqrt(double);
4988     +float __builtin_sqrtf(float);
4989     +long double __builtin_sqrtl(long double);
4990     +double __builtin_tan(double);
4991     +float __builtin_tanf(float);
4992     +double __builtin_tanh(double);
4993     +float __builtin_tanhf(float);
4994     +long double __builtin_tanhl(long double);
4995     +long double __builtin_tanl(long double);
4996     +float __builtin_cabsf(float __complex__);
4997     +double __builtin_cabs(double __complex__);
4998     +long double __builtin_cabsl(long double __complex__);
4999     +float __builtin_cargf(float __complex__);
5000     +double __builtin_carg(double __complex__);
5001     +long double __builtin_cargl(long double __complex__);
5002     +int __builtin_ctz(int);
5003     +int __builtin_ctzl(long);
5004     +int __builtin_ctzll(long long);
5005     +int __builtin_popcount(int);
5006     +int __builtin_popcountl(long);
5007     +int __builtin_popcountll(long long);
5008     +float __complex__ __builtin_ccosf(float __complex__);
5009     +double __complex__ __builtin_ccos(double __complex__);
5010     +long double __complex__ __builtin_ccosl(long double __complex__);
5011     +float __complex__ __builtin_ccoshf(float __complex__);
5012     +double __complex__ __builtin_ccosh(double __complex__);
5013     +long double __complex__ __builtin_ccoshl(long double __complex__);
5014     +float __complex__ __builtin_cexpf(float __complex__);
5015     +double __complex__ __builtin_cexp(double __complex__);
5016     +long double __complex__ __builtin_cexpl(long double __complex__);
5017     +float __complex__ __builtin_clogf(float __complex__);
5018     +double __complex__ __builtin_clog(double __complex__);
5019     +long double __complex__ __builtin_clogl(long double __complex__);
5020     +float __complex__ __builtin_csinf(float __complex__);
5021     +double __complex__ __builtin_csin(double __complex__);
5022     +long double __complex__ __builtin_csinl(long double __complex__);
5023     +float __complex__ __builtin_csinhf(float __complex__);
5024     +double __complex__ __builtin_csinh(double __complex__);
5025     +long double __complex__ __builtin_csinhl(long double __complex__);
5026     +float __complex__ __builtin_csqrtf(float __complex__);
5027     +double __complex__ __builtin_csqrt(double __complex__);
5028     +long double __complex__ __builtin_csqrtl(long double __complex__);
5029     +float __complex__ __builtin_ctanf(float __complex__);
5030     +double __complex__ __builtin_ctan(double __complex__);
5031     +long double __complex__ __builtin_ctanl(long double __complex__);
5032     +float __complex__ __builtin_ctanhf(float __complex__);
5033     +double __complex__ __builtin_ctanh(double __complex__);
5034     +long double __complex__ __builtin_ctanhl(long double __complex__);
5035     +float __complex__ __builtin_cpowf(float __complex__, float __complex__);
5036     +double __complex__ __builtin_cpow(double __complex__, double __complex__);
5037     +long double __complex__ __builtin_cpowl(long double __complex__, long double __complex__);
5038     diff -Nur gccxml-0.6.0-p3/GCC_XML/Support/GCC/find_flags gccxml-0.6.0-p4/GCC_XML/Support/GCC/find_flags
5039     --- gccxml-0.6.0-p3/GCC_XML/Support/GCC/find_flags 2007-08-22 16:07:12.000000000 +0200
5040     +++ gccxml-0.6.0-p4/GCC_XML/Support/GCC/find_flags 2007-08-22 16:16:46.000000000 +0200
5041     @@ -66,6 +66,11 @@
5042     if [ "$MINOR_VERSION" = 96 ]; then
5043     INCLUDES="-iwrapper$SELFPATH/2.96 $INCLUDES"
5044     fi
5045     +elif [ "$MAJOR_VERSION" = 4 -a "$MINOR_VERSION" -ge 1 ]; then
5046     + INCLUDES="-iwrapper\"$SELFPATH/4.1\" $INCLUDES"
5047     + SPECIAL="-include $SELFPATH/4.1/gccxml_builtins.h"
5048     +elif [ "$MAJOR_VERSION" = 4 -a "$MINOR_VERSION" -ge 0 ]; then
5049     + SPECIAL="-include $SELFPATH/4.0/string"
5050     elif [ "$MAJOR_VERSION" = 3 -a "$MINOR_VERSION" -ge 4 ]; then
5051     INCLUDES="-iwrapper$SELFPATH/3.4 $INCLUDES"
5052     SPECIAL="-include $SELFPATH/3.4/gccxml_builtins.h"
5053     @@ -78,8 +83,6 @@
5054     INCLUDES="-iwrapper$SELFPATH/3.1 $INCLUDES"
5055     elif [ "$MAJOR_VERSION" = 3 -a "$MINOR_VERSION" = 0 ]; then
5056     INCLUDES="-iwrapper$SELFPATH/3.0 $INCLUDES"
5057     -elif [ "$MAJOR_VERSION" = 4 -a "$MINOR_VERSION" -ge 0 ]; then
5058     - SPECIAL="-include $SELFPATH/4.0/string"
5059     fi
5060    
5061     # Format and print out the options.