+inline void sgReadVec4 ( gzFile fd, SGVec4f& var ) {
+ sgReadFloat ( fd, 4, var.data() ) ;
+}
+inline void sgWriteVec4 ( gzFile fd, const SGVec4f& var ) {
+ sgWriteFloat ( fd, 4, var.data() ) ;
+}
+
+inline void sgReadMat4 ( gzFile fd, SGMatrixf& var ) {
+ sgReadFloat ( fd, 16, (float *)var.data() ) ;
+}
+inline void sgWriteMat4 ( gzFile fd, const SGMatrixf& var ) {
+ sgWriteFloat ( fd, 16, (float *)var.data() ) ;
+}
+
+inline void sgReadGeod ( gzFile fd, SGGeod& var ) {
+ double data[3];
+ sgReadDouble ( fd, 3, data );
+ var = SGGeod::fromDegM( data[0], data[1], data[2] );
+}
+inline void sgWriteGeod ( gzFile fd, const SGGeod& var ) {
+ sgWriteDouble( fd, var.getLongitudeDeg() );
+ sgWriteDouble( fd, var.getLatitudeDeg() );
+ sgWriteDouble( fd, var.getElevationM() );
+}