1// { dg-do compile } 2 3typedef long unsigned int size_t; 4namespace std { 5} 6namespace std __attribute__ ((__visibility__ ("default"))) { 7 template<class _Sp, class _Tp> struct __traitor { 8 enum { 9 __value = bool(_Sp::__value) || bool(_Tp::__value) }; 10 }; 11 template<typename _Tp> struct __is_integer { 12 enum { 13 __value = 0 }; 14 }; 15 template<typename _Tp> struct __is_floating { 16 enum { 17 __value = 0 }; 18 }; 19 template<typename _Tp> struct __is_pointer { 20 enum { 21 __value = 0 }; 22 }; 23 template<typename _Tp> struct __is_normal_iterator { 24 enum { 25 __value = 0 }; 26 }; 27 template<typename _Tp> struct __is_arithmetic : public __traitor<__is_integer<_Tp>, __is_floating<_Tp> > { 28 }; 29 template<typename _Tp> struct __is_scalar : public __traitor<__is_arithmetic<_Tp>, __is_pointer<_Tp> > { 30 }; 31} 32namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) { 33 template<bool, typename> struct __enable_if { 34 }; 35 template<typename _Tp> struct __enable_if<true, _Tp> { 36 typedef _Tp __type; 37 }; 38} 39namespace std __attribute__ ((__visibility__ ("default"))) { 40 template<typename _Iterator> struct iterator_traits { 41 }; 42 template<typename _Tp> struct iterator_traits<_Tp*> { 43 typedef _Tp value_type; 44 }; 45 template<typename _Iterator, bool _HasBase> struct _Iter_base { 46 typedef _Iterator iterator_type; 47 }; 48} 49namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) { 50} 51namespace std __attribute__ ((__visibility__ ("default"))) { 52 template<typename _Iterator> struct _Niter_base : _Iter_base<_Iterator, __is_normal_iterator<_Iterator>::__value> { 53 }; 54 template<typename _Iterator> inline typename _Niter_base<_Iterator>::iterator_type __niter_base(_Iterator __it) { 55 } 56 template<typename _OutputIterator, typename _Size, typename _Tp> inline typename __gnu_cxx::__enable_if<!__is_scalar<_Tp>::__value, _OutputIterator>::__type __fill_n_a(_OutputIterator __first, _Size __n, const _Tp& __value) { 57 for (__decltype(__n + 0) __niter = __n; 58 __niter > 0; 59 --__niter, ++__first) *__first = __value; 60 } 61 template<typename _OI, typename _Size, typename _Tp> inline _OI fill_n(_OI __first, _Size __n, const _Tp& __value) { 62 return _OI(std::__fill_n_a(std::__niter_base(__first), __n, __value)); 63 } 64} 65namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) { 66 template<typename _Tp> class new_allocator { 67 public: 68 typedef size_t size_type; 69 typedef _Tp* pointer; 70 ~new_allocator() throw() { 71 } 72 pointer allocate(size_type __n, const void* = 0) { 73 return static_cast<_Tp*>(::operator new(__n * sizeof(_Tp))); 74 } 75 }; 76} 77namespace std __attribute__ ((__visibility__ ("default"))) { 78 template<typename _Tp> class allocator: public __gnu_cxx::new_allocator<_Tp> { 79 public: 80 template<typename _Tp1> struct rebind { 81 typedef allocator<_Tp1> other; 82 }; 83 }; 84} 85namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) { 86 template<typename _Alloc> struct __alloc_traits { 87 typedef typename _Alloc::pointer pointer; 88 template<typename _Tp> struct rebind { 89 typedef typename _Alloc::template rebind<_Tp>::other other; 90 }; 91 }; 92} 93class QString { 94public: 95 bool isEmpty() const; 96}; 97class QObject { 98}; 99namespace std __attribute__ ((__visibility__ ("default"))) { 100 template<bool _TrivialValueType> struct __uninitialized_fill_n { 101 template<typename _ForwardIterator, typename _Size, typename _Tp> static void __uninit_fill_n(_ForwardIterator __first, _Size __n, const _Tp& __x) { 102 std::fill_n(__first, __n, __x); 103 } 104 }; 105 template<typename _ForwardIterator, typename _Size, typename _Tp> inline void uninitialized_fill_n(_ForwardIterator __first, _Size __n, const _Tp& __x) { 106 typedef typename iterator_traits<_ForwardIterator>::value_type _ValueType; 107 std::__uninitialized_fill_n<__is_trivial(_ValueType)>:: __uninit_fill_n(__first, __n, __x); 108 } 109 template<typename _ForwardIterator, typename _Size, typename _Tp, typename _Tp2> inline void __uninitialized_fill_n_a(_ForwardIterator __first, _Size __n, const _Tp& __x, allocator<_Tp2>&) { 110 std::uninitialized_fill_n(__first, __n, __x); 111 } 112 template<typename _Tp, typename _Alloc> struct _Vector_base { 113 typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template rebind<_Tp>::other _Tp_alloc_type; 114 typedef typename __gnu_cxx::__alloc_traits<_Tp_alloc_type>::pointer pointer; 115 struct _Vector_impl : public _Tp_alloc_type { 116 pointer _M_start; 117 pointer _M_finish; 118 pointer _M_end_of_storage; 119 _Vector_impl(_Tp_alloc_type const& __a) : _Tp_alloc_type(__a), _M_start(0), _M_finish(0), _M_end_of_storage(0) { 120 } 121 }; 122 typedef _Alloc allocator_type; 123 _Tp_alloc_type& _M_get_Tp_allocator() { 124 } 125 _Vector_base(size_t __n, const allocator_type& __a) : _M_impl(__a) { 126 _M_create_storage(__n); 127 } 128 _Vector_impl _M_impl; 129 pointer _M_allocate(size_t __n) { 130 return __n != 0 ? _M_impl.allocate(__n) : 0; 131 } 132 void _M_create_storage(size_t __n) { 133 this->_M_impl._M_start = this->_M_allocate(__n); 134 this->_M_impl._M_finish = this->_M_impl._M_start; 135 } 136 }; 137 template<typename _Tp, typename _Alloc = std::allocator<_Tp> > class vector : protected _Vector_base<_Tp, _Alloc> { 138 typedef _Vector_base<_Tp, _Alloc> _Base; 139 typedef _Tp value_type; 140 typedef size_t size_type; 141 typedef _Alloc allocator_type; 142 using _Base::_M_get_Tp_allocator; 143 public: 144 explicit vector(size_type __n, const value_type& __value = value_type(), const allocator_type& __a = allocator_type()) : _Base(__n, __a) { 145 _M_fill_initialize(__n, __value); 146 } 147 void _M_fill_initialize(size_type __n, const value_type& __value) { 148 std::__uninitialized_fill_n_a(this->_M_impl._M_start, __n, __value, _M_get_Tp_allocator()); 149 } 150 }; 151}; 152class QPaintDevice { 153public: 154 int width() const { 155 } 156 int height() const { 157 } 158}; 159class QImage : public QPaintDevice { 160}; 161extern "C" { 162 struct __jmp_buf_tag { 163 }; 164 typedef struct __jmp_buf_tag jmp_buf[1]; 165 extern int _setjmp (struct __jmp_buf_tag __env[1]) throw (); 166 extern void longjmp (struct __jmp_buf_tag __env[1], int __val) throw () __attribute__ ((__noreturn__)); 167} 168typedef unsigned int png_uint_32; 169typedef void * png_voidp; 170typedef const char * png_const_charp; 171extern "C" { 172 typedef struct png_struct_def png_struct; 173 typedef png_struct * png_structp; 174 typedef void ( *png_error_ptr) (png_structp, png_const_charp); 175 typedef void ( *png_longjmp_ptr) (jmp_buf, int); 176 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) ; 177 extern jmp_buf* ( png_set_longjmp_fn) (png_structp png_ptr, png_longjmp_ptr longjmp_fn, size_t jmp_buf_size) ; 178} 179class PngWriter : public QObject { 180 const QImage *m_out_qimage; 181 QString m_fname; 182 bool writeQImageToPng(); 183}; 184bool PngWriter::writeQImageToPng() { 185 png_uint_32 width = m_out_qimage->width(); 186 png_uint_32 height = m_out_qimage->height(); 187 if ( !m_fname.isEmpty() ) { 188 std::vector<char> t(width * height * 4 + (width * height * 4) * 0.1); 189 } 190 png_structp png_ptr = png_create_write_struct ("1.5.13", __null, __null, __null); 191 if (_setjmp ((*png_set_longjmp_fn((png_ptr), longjmp, sizeof (jmp_buf))))) { 192 } 193} 194