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) |
# | Content |
---|---|
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. |