1/* { dg-do compile } */ 2 3namespace std __attribute__ ((__visibility__ ("default"))) { 4 template<class _CharT> struct char_traits; 5 } 6__extension__ typedef __PTRDIFF_TYPE__ ptrdiff_t; 7namespace std __attribute__ ((__visibility__ ("default"))) { 8 typedef ptrdiff_t streamsize; 9 template<typename _CharT, typename _Traits = char_traits<_CharT> > class basic_ifstream; 10 typedef basic_ifstream<char> ifstream; 11 class ios_base { 12 }; 13 } 14template<class T> class Vector4 { 15 public: 16 inline Vector4(); 17 inline Vector4(T, T, T, T); 18 T x, y, z, w; 19 }; 20template<class T> class Matrix4 { 21 public: 22 Matrix4(const Vector4<T>&, const Vector4<T>&, const Vector4<T>&, const Vector4<T>&); 23 Matrix4(const Matrix4<T>& m); 24 Vector4<T> r[4]; 25 }; 26typedef Vector4<float> Vec4f; 27typedef Matrix4<float> Mat4f; 28template<class T> Vector4<T>::Vector4() : x(0), y(0), z(0), w(0) { 29 } 30template<class T> Vector4<T>::Vector4(T _x, T _y, T _z, T _w) : x(_x), y(_y), z(_z), w(_w) { 31 } 32template<class T> Matrix4<T>::Matrix4(const Vector4<T>& v0, const Vector4<T>& v1, const Vector4<T>& v2, const Vector4<T>& v3) { 33 } 34namespace std __attribute__ ((__visibility__ ("default"))) { 35 template<typename _CharT, typename _Traits> class basic_ios : public ios_base { 36 }; 37 template<typename _CharT, typename _Traits> class basic_istream : virtual public basic_ios<_CharT, _Traits> { 38 public: 39 typedef _CharT char_type; 40 typedef basic_istream<_CharT, _Traits> __istream_type; 41 __istream_type& read(char_type* __s, streamsize __n); 42 }; 43 template<typename _CharT, typename _Traits> class basic_ifstream : public basic_istream<_CharT, _Traits> { 44 }; 45 } 46using namespace std; 47static float readFloat(ifstream& in) { 48 float f; 49 in.read((char*) &f, sizeof(float)); 50 } 51Mat4f readMeshMatrix(ifstream& in, int nBytes) { 52 float m00 = readFloat(in); 53 float m01 = readFloat(in); 54 float m02 = readFloat(in); 55 float m10 = readFloat(in); 56 float m11 = readFloat(in); 57 float m12 = readFloat(in); 58 float m20 = readFloat(in); 59 float m21 = readFloat(in); 60 float m22 = readFloat(in); 61 float m30 = readFloat(in); 62 float m31 = readFloat(in); 63 float m32 = readFloat(in); 64 return Mat4f(Vec4f(m00, m01, m02, 0), Vec4f(m10, m11, m12, 0), Vec4f(m20, m21, m22, 0), Vec4f(m30, m31, m32, 1)); 65 } 66