18e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels//===----------------------------------------------------------------------===// 28e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels// 38e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels// The LLVM Compiler Infrastructure 48e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels// 58e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels// This file is dual licensed under the MIT and the University of Illinois Open 68e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels// Source Licenses. See LICENSE.TXT for details. 78e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels// 88e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels//===----------------------------------------------------------------------===// 98e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels// <streambuf> 118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels// template <class charT, class traits = char_traits<charT> > 138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels// class basic_streambuf; 148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels// void pbump(int n); 168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#include <streambuf> 188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#include <cassert> 198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelstemplate <class CharT> 218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsstruct test 228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels : public std::basic_streambuf<CharT> 238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{ 248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels typedef std::basic_streambuf<CharT> base; 258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test() {} 278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels void setp(CharT* pbeg, CharT* pend) 298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels { 308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels base::setp(pbeg, pend); 318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels void pbump(int n) 348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels { 358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels CharT* pbeg = base::pbase(); 368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels CharT* pnext = base::pptr(); 378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels CharT* pend = base::epptr(); 388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels base::pbump(n); 398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels assert(base::pbase() == pbeg); 408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels assert(base::pptr() == pnext+n); 418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels assert(base::epptr() == pend); 428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}; 448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsint main() 468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{ 478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels { 488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test<char> t; 498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels char in[] = "ABCDE"; 508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels t.setp(in, in+sizeof(in)/sizeof(in[0])); 518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels t.pbump(2); 528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels t.pbump(1); 538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels { 558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test<wchar_t> t; 568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels wchar_t in[] = L"ABCDE"; 578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels t.setp(in, in+sizeof(in)/sizeof(in[0])); 588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels t.pbump(3); 598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels t.pbump(1); 608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels