1//===----------------------------------------------------------------------===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is dual licensed under the MIT and the University of Illinois Open 6// Source Licenses. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9 10// <strstream> 11 12// class strstreambuf 13 14// strstreambuf(void* (*palloc_arg)(size_t), void (*pfree_arg)(void*)); 15 16#include <strstream> 17#include <cassert> 18 19int called = 0; 20 21void* my_alloc(std::size_t n) 22{ 23 static char buf[10000]; 24 ++called; 25 return buf; 26} 27 28void my_free(void*) 29{ 30 ++called; 31} 32 33struct test 34 : std::strstreambuf 35{ 36 test(void* (*palloc_arg)(size_t), void (*pfree_arg)(void*)) 37 : std::strstreambuf(palloc_arg, pfree_arg) {} 38 virtual int_type overflow(int_type c) 39 {return std::strstreambuf::overflow(c);} 40}; 41 42int main() 43{ 44 { 45 test s(my_alloc, my_free); 46 assert(called == 0); 47 s.overflow('a'); 48 assert(called == 1); 49 } 50 assert(called == 2); 51} 52