// { dg-do compile } typedef long unsigned int size_t; namespace std { } namespace std __attribute__ ((__visibility__ ("default"))) { template struct __traitor { enum { __value = bool(_Sp::__value) || bool(_Tp::__value) }; }; template struct __is_integer { enum { __value = 0 }; }; template struct __is_floating { enum { __value = 0 }; }; template struct __is_pointer { enum { __value = 0 }; }; template struct __is_normal_iterator { enum { __value = 0 }; }; template struct __is_arithmetic : public __traitor<__is_integer<_Tp>, __is_floating<_Tp> > { }; template struct __is_scalar : public __traitor<__is_arithmetic<_Tp>, __is_pointer<_Tp> > { }; } namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) { template struct __enable_if { }; template struct __enable_if { typedef _Tp __type; }; } namespace std __attribute__ ((__visibility__ ("default"))) { template struct iterator_traits { }; template struct iterator_traits<_Tp*> { typedef _Tp value_type; }; template struct _Iter_base { typedef _Iterator iterator_type; }; } namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) { } namespace std __attribute__ ((__visibility__ ("default"))) { template struct _Niter_base : _Iter_base<_Iterator, __is_normal_iterator<_Iterator>::__value> { }; template inline typename _Niter_base<_Iterator>::iterator_type __niter_base(_Iterator __it) { } template inline typename __gnu_cxx::__enable_if::__value, _OutputIterator>::__type __fill_n_a(_OutputIterator __first, _Size __n, const _Tp& __value) { for (__decltype(__n + 0) __niter = __n; __niter > 0; --__niter, ++__first) *__first = __value; } template inline _OI fill_n(_OI __first, _Size __n, const _Tp& __value) { return _OI(std::__fill_n_a(std::__niter_base(__first), __n, __value)); } } namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) { template class new_allocator { public: typedef size_t size_type; typedef _Tp* pointer; ~new_allocator() throw() { } pointer allocate(size_type __n, const void* = 0) { return static_cast<_Tp*>(::operator new(__n * sizeof(_Tp))); } }; } namespace std __attribute__ ((__visibility__ ("default"))) { template class allocator: public __gnu_cxx::new_allocator<_Tp> { public: template struct rebind { typedef allocator<_Tp1> other; }; }; } namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) { template struct __alloc_traits { typedef typename _Alloc::pointer pointer; template struct rebind { typedef typename _Alloc::template rebind<_Tp>::other other; }; }; } class QString { public: bool isEmpty() const; }; class QObject { }; namespace std __attribute__ ((__visibility__ ("default"))) { template struct __uninitialized_fill_n { template static void __uninit_fill_n(_ForwardIterator __first, _Size __n, const _Tp& __x) { std::fill_n(__first, __n, __x); } }; template inline void uninitialized_fill_n(_ForwardIterator __first, _Size __n, const _Tp& __x) { typedef typename iterator_traits<_ForwardIterator>::value_type _ValueType; std::__uninitialized_fill_n<__is_trivial(_ValueType)>:: __uninit_fill_n(__first, __n, __x); } template inline void __uninitialized_fill_n_a(_ForwardIterator __first, _Size __n, const _Tp& __x, allocator<_Tp2>&) { std::uninitialized_fill_n(__first, __n, __x); } template struct _Vector_base { typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template rebind<_Tp>::other _Tp_alloc_type; typedef typename __gnu_cxx::__alloc_traits<_Tp_alloc_type>::pointer pointer; struct _Vector_impl : public _Tp_alloc_type { pointer _M_start; pointer _M_finish; pointer _M_end_of_storage; _Vector_impl(_Tp_alloc_type const& __a) : _Tp_alloc_type(__a), _M_start(0), _M_finish(0), _M_end_of_storage(0) { } }; typedef _Alloc allocator_type; _Tp_alloc_type& _M_get_Tp_allocator() { } _Vector_base(size_t __n, const allocator_type& __a) : _M_impl(__a) { _M_create_storage(__n); } _Vector_impl _M_impl; pointer _M_allocate(size_t __n) { return __n != 0 ? _M_impl.allocate(__n) : 0; } void _M_create_storage(size_t __n) { this->_M_impl._M_start = this->_M_allocate(__n); this->_M_impl._M_finish = this->_M_impl._M_start; } }; template > class vector : protected _Vector_base<_Tp, _Alloc> { typedef _Vector_base<_Tp, _Alloc> _Base; typedef _Tp value_type; typedef size_t size_type; typedef _Alloc allocator_type; using _Base::_M_get_Tp_allocator; public: explicit vector(size_type __n, const value_type& __value = value_type(), const allocator_type& __a = allocator_type()) : _Base(__n, __a) { _M_fill_initialize(__n, __value); } void _M_fill_initialize(size_type __n, const value_type& __value) { std::__uninitialized_fill_n_a(this->_M_impl._M_start, __n, __value, _M_get_Tp_allocator()); } }; }; class QPaintDevice { public: int width() const { } int height() const { } }; class QImage : public QPaintDevice { }; extern "C" { struct __jmp_buf_tag { }; typedef struct __jmp_buf_tag jmp_buf[1]; extern int _setjmp (struct __jmp_buf_tag __env[1]) throw (); extern void longjmp (struct __jmp_buf_tag __env[1], int __val) throw () __attribute__ ((__noreturn__)); } typedef unsigned int png_uint_32; typedef void * png_voidp; typedef const char * png_const_charp; extern "C" { typedef struct png_struct_def png_struct; typedef png_struct * png_structp; typedef void ( *png_error_ptr) (png_structp, png_const_charp); typedef void ( *png_longjmp_ptr) (jmp_buf, int); extern __attribute__((__malloc__)) png_structp ( png_create_write_struct) (png_const_charp user_png_ver, png_voidp error_ptr, png_error_ptr error_fn, png_error_ptr warn_fn) ; extern jmp_buf* ( png_set_longjmp_fn) (png_structp png_ptr, png_longjmp_ptr longjmp_fn, size_t jmp_buf_size) ; } class PngWriter : public QObject { const QImage *m_out_qimage; QString m_fname; bool writeQImageToPng(); }; bool PngWriter::writeQImageToPng() { png_uint_32 width = m_out_qimage->width(); png_uint_32 height = m_out_qimage->height(); if ( !m_fname.isEmpty() ) { std::vector t(width * height * 4 + (width * height * 4) * 0.1); } png_structp png_ptr = png_create_write_struct ("1.5.13", __null, __null, __null); if (_setjmp ((*png_set_longjmp_fn((png_ptr), longjmp, sizeof (jmp_buf))))) { } }