put_bool.pass.cpp revision bc8d3f97eb5c958007f2713238472e0c1c8fe02c
1ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com//===----------------------------------------------------------------------===// 2ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com// 3ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com// ��������������������The LLVM Compiler Infrastructure 4ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com// 5ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com// This file is distributed under the University of Illinois Open Source 6ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com// License. See LICENSE.TXT for details. 7971d0c8049c6bfc7a58f0b41f8f59f9ec9ca077bbsalomon@google.com// 857f7abc8659f17e58fc2d1410117033ad524f9d3epoger@google.com//===----------------------------------------------------------------------===// 957f7abc8659f17e58fc2d1410117033ad524f9d3epoger@google.com 1057f7abc8659f17e58fc2d1410117033ad524f9d3epoger@google.com// <locale> 1157f7abc8659f17e58fc2d1410117033ad524f9d3epoger@google.com 1257f7abc8659f17e58fc2d1410117033ad524f9d3epoger@google.com// class num_put<charT, OutputIterator> 1357f7abc8659f17e58fc2d1410117033ad524f9d3epoger@google.com 1457f7abc8659f17e58fc2d1410117033ad524f9d3epoger@google.com// iter_type put(iter_type s, ios_base& iob, char_type fill, bool v) const; 1557f7abc8659f17e58fc2d1410117033ad524f9d3epoger@google.com 16b29c883fb46ac6099440d82ac57b86d25386daedbungeman@google.com#include <locale> 177bc13a62609149f0b535c2f3ff7210eb834d8b36epoger@google.com#include <ios> 18ee8a8e3931c1d3f39755ee8beaf0c7cb1ba91888epoger@google.com#include <cassert> 19b9b9a18ab459c2616ac4a52c9f8cc0637d284229reed@android.com#include <streambuf> 208a85d0c4938173476d037d7af0ee3b9436a1234ereed@google.com#include "iterators.h" 214370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com 22971d0c8049c6bfc7a58f0b41f8f59f9ec9ca077bbsalomon@google.comtypedef std::num_put<char, output_iterator<char*> > F; 23de96163a80167636d95837f9ee6a2e98baf9d350epoger@google.com 245af9b2032b552516c9223d9fb22185b022b13c62scroggo@google.comclass my_facet 258015dd83ae37147bb630d4751030868051ad0caereed@android.com : public F 268015dd83ae37147bb630d4751030868051ad0caereed@android.com{ 278015dd83ae37147bb630d4751030868051ad0caereed@android.compublic: 28e8ebeb1f8fde6525bbab988c6090a5d3ab19855bepoger@google.com explicit my_facet(std::size_t refs = 0) 299875dd14af6d768da8d1a4be58b98fc91ceca0ddtomhudson@google.com : F(refs) {} 30977b9c8af3ef1b9a2fa2a0037cf3734cf2ba13d9robertphillips@google.com}; 3172c9672ce274a3b6cb40800d66374edf25b157a3scroggo@google.com 322a48c3adb7cf4fc754f99a41352210b4a99edf04bsalomon@google.comclass my_numpunct 333cb834bd27a16cc60ff30adae96659558c2dc91fjunov@chromium.org : public std::numpunct<char> 3472c9672ce274a3b6cb40800d66374edf25b157a3scroggo@google.com{ 350770044da6d61dcbc8d9673fed8dd92460faa314reed@google.compublic: 36ee8a8e3931c1d3f39755ee8beaf0c7cb1ba91888epoger@google.com my_numpunct() : std::numpunct<char>() {} 37ee8a8e3931c1d3f39755ee8beaf0c7cb1ba91888epoger@google.com 38cf8fb1f6f03fc77f9927564f9ef9abeeeec508d2bsalomon@google.comprotected: 39cf8fb1f6f03fc77f9927564f9ef9abeeeec508d2bsalomon@google.com virtual string_type do_truename() const {return "yes";} 40cf8fb1f6f03fc77f9927564f9ef9abeeeec508d2bsalomon@google.com virtual string_type do_falsename() const {return "no";} 41cf8fb1f6f03fc77f9927564f9ef9abeeeec508d2bsalomon@google.com}; 42cf8fb1f6f03fc77f9927564f9ef9abeeeec508d2bsalomon@google.com 43cf8fb1f6f03fc77f9927564f9ef9abeeeec508d2bsalomon@google.comint main() 44cf8fb1f6f03fc77f9927564f9ef9abeeeec508d2bsalomon@google.com{ 45cf8fb1f6f03fc77f9927564f9ef9abeeeec508d2bsalomon@google.com const my_facet f(1); 46cf8fb1f6f03fc77f9927564f9ef9abeeeec508d2bsalomon@google.com { 47cf8fb1f6f03fc77f9927564f9ef9abeeeec508d2bsalomon@google.com std::ios ios(0); 48cf8fb1f6f03fc77f9927564f9ef9abeeeec508d2bsalomon@google.com { 4910afbefa5b60b0f7e8d2b02f4c996de88aa26830mike@reedtribe.org bool v = false; 5010afbefa5b60b0f7e8d2b02f4c996de88aa26830mike@reedtribe.org char str[50]; 518923c6cfd580ac9accb11b909fa2a033d69553aareed@google.com output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v); 528923c6cfd580ac9accb11b909fa2a033d69553aareed@google.com std::string ex(str, iter.base()); 530770044da6d61dcbc8d9673fed8dd92460faa314reed@google.com assert(ex == "0"); 549875dd14af6d768da8d1a4be58b98fc91ceca0ddtomhudson@google.com } 559875dd14af6d768da8d1a4be58b98fc91ceca0ddtomhudson@google.com { 560770044da6d61dcbc8d9673fed8dd92460faa314reed@google.com bool v = true; 5700dae86f5872b60927b28a32b375bc01cd7c61c9reed@android.com char str[50]; 58e3cc2eb88fef9b2123c6ea2ed813ce53b6385926epoger@google.com output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v); 59e3cc2eb88fef9b2123c6ea2ed813ce53b6385926epoger@google.com std::string ex(str, iter.base()); 60e3cc2eb88fef9b2123c6ea2ed813ce53b6385926epoger@google.com assert(ex == "1"); 61b29c883fb46ac6099440d82ac57b86d25386daedbungeman@google.com } 62b29c883fb46ac6099440d82ac57b86d25386daedbungeman@google.com } 63b29c883fb46ac6099440d82ac57b86d25386daedbungeman@google.com { 64b29c883fb46ac6099440d82ac57b86d25386daedbungeman@google.com std::ios ios(0); 6546cce91f4859b9c229938d4d649870c0a43b1806reed@google.com boolalpha(ios); 6646cce91f4859b9c229938d4d649870c0a43b1806reed@google.com { 670a09eef79053f93a9b2311c6a29275abf39f189ebsalomon@google.com bool v = false; 6846cce91f4859b9c229938d4d649870c0a43b1806reed@google.com char str[50]; 690a09eef79053f93a9b2311c6a29275abf39f189ebsalomon@google.com output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v); 7046cce91f4859b9c229938d4d649870c0a43b1806reed@google.com std::string ex(str, iter.base()); 7146cce91f4859b9c229938d4d649870c0a43b1806reed@google.com assert(ex == "false"); 72c7cf2b351f85712a8ed0e1c495d1045dbaa7b785epoger@google.com } 73c7cf2b351f85712a8ed0e1c495d1045dbaa7b785epoger@google.com { 74c7cf2b351f85712a8ed0e1c495d1045dbaa7b785epoger@google.com bool v = true; 75c7cf2b351f85712a8ed0e1c495d1045dbaa7b785epoger@google.com char str[50]; 76c7cf2b351f85712a8ed0e1c495d1045dbaa7b785epoger@google.com output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v); 77c7cf2b351f85712a8ed0e1c495d1045dbaa7b785epoger@google.com std::string ex(str, iter.base()); 78c7cf2b351f85712a8ed0e1c495d1045dbaa7b785epoger@google.com assert(ex == "true"); 79c7cf2b351f85712a8ed0e1c495d1045dbaa7b785epoger@google.com } 80ee8a8e3931c1d3f39755ee8beaf0c7cb1ba91888epoger@google.com } 81ee8a8e3931c1d3f39755ee8beaf0c7cb1ba91888epoger@google.com { 82ee8a8e3931c1d3f39755ee8beaf0c7cb1ba91888epoger@google.com std::ios ios(0); 83ee8a8e3931c1d3f39755ee8beaf0c7cb1ba91888epoger@google.com boolalpha(ios); 84ee8a8e3931c1d3f39755ee8beaf0c7cb1ba91888epoger@google.com ios.imbue(std::locale(std::locale::classic(), new my_numpunct)); 85ee8a8e3931c1d3f39755ee8beaf0c7cb1ba91888epoger@google.com { 86ee8a8e3931c1d3f39755ee8beaf0c7cb1ba91888epoger@google.com bool v = false; 87ee8a8e3931c1d3f39755ee8beaf0c7cb1ba91888epoger@google.com char str[50]; 88ee8a8e3931c1d3f39755ee8beaf0c7cb1ba91888epoger@google.com output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v); 89ee8a8e3931c1d3f39755ee8beaf0c7cb1ba91888epoger@google.com std::string ex(str, iter.base()); 9000dae86f5872b60927b28a32b375bc01cd7c61c9reed@android.com assert(ex == "no"); 9100dae86f5872b60927b28a32b375bc01cd7c61c9reed@android.com } 92ce7ffaccc4a0cd0e0285cdba25bddb627f8e92c4reed@google.com { 93ce7ffaccc4a0cd0e0285cdba25bddb627f8e92c4reed@google.com bool v = true; 94ce7ffaccc4a0cd0e0285cdba25bddb627f8e92c4reed@google.com char str[50]; 95ce7ffaccc4a0cd0e0285cdba25bddb627f8e92c4reed@google.com output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v); 96ce7ffaccc4a0cd0e0285cdba25bddb627f8e92c4reed@google.com std::string ex(str, iter.base()); 97ce7ffaccc4a0cd0e0285cdba25bddb627f8e92c4reed@google.com assert(ex == "yes"); 98ce7ffaccc4a0cd0e0285cdba25bddb627f8e92c4reed@google.com } 99ce7ffaccc4a0cd0e0285cdba25bddb627f8e92c4reed@google.com } 100ce7ffaccc4a0cd0e0285cdba25bddb627f8e92c4reed@google.com} 101ce7ffaccc4a0cd0e0285cdba25bddb627f8e92c4reed@google.com