// Shamelessly adapted from plib January 2001
//
// Original version Copyright (C) 2000 the plib team
-// Local changes Copyright (C) 2000 Curtis L. Olson - curt@flightgear.org
+// Local changes Copyright (C) 2000 Curtis L. Olson - http://www.flightgear.org/~curt
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
-// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
//
// $Id$
//
#ifndef _SG_LOWLEVEL_HXX
#define _SG_LOWLEVEL_HXX
-
#include <stdio.h>
-
-#ifdef HAVE_ZLIB
-# include <zlib.h>
-#else
-# include <simgear/zlib/zlib.h>
-#endif
+#include <zlib.h>
#include <plib/sg.h>
+#include <simgear/compiler.h>
+#include <simgear/misc/stdint.hxx>
+
+// Note that output is written in little endian form (and converted as
+// necessary for big endian machines)
void sgReadChar ( gzFile fd, char *var ) ;
void sgWriteChar ( gzFile fd, const char var ) ;
void sgWriteUInt ( gzFile fd, const unsigned int var ) ;
void sgReadInt ( gzFile fd, int *var ) ;
void sgWriteInt ( gzFile fd, const int var ) ;
-void sgReadLong ( gzFile fd, long int *var ) ;
-void sgWriteLong ( gzFile fd, const long int var ) ;
+void sgReadLong ( gzFile fd, int32_t *var ) ;
+void sgWriteLong ( gzFile fd, const int32_t var ) ;
+void sgReadLongLong ( gzFile fd, int64_t *var ) ;
+void sgWriteLongLong ( gzFile fd, const int64_t var ) ;
void sgReadUShort ( gzFile fd, unsigned short *var ) ;
void sgWriteUShort ( gzFile fd, const unsigned short var ) ;
void sgReadShort ( gzFile fd, short *var ) ;
void sgReadString ( gzFile fd, char **var ) ;
void sgWriteString ( gzFile fd, const char *var ) ;
-void sgReadVec2 ( gzFile fd, sgVec2 var ) ;
-void sgWriteVec2 ( gzFile fd, const sgVec2 var ) ;
-void sgReadVec3 ( gzFile fd, sgVec3 var ) ;
-void sgWriteVec3 ( gzFile fd, const sgVec3 var ) ;
-void sgReaddVec3 ( gzFile fd, sgdVec3 var ) ;
-void sgWritedVec3 ( gzFile fd, const sgdVec3 var ) ;
-void sgReadVec4 ( gzFile fd, sgVec4 var ) ;
-void sgWriteVec4 ( gzFile fd, const sgVec4 var ) ;
+inline void sgReadVec2 ( gzFile fd, sgVec2 var ) {
+ sgReadFloat ( fd, 2, var ) ;
+}
+inline void sgWriteVec2 ( gzFile fd, const sgVec2 var ) {
+ sgWriteFloat ( fd, 2, var ) ;
+}
+
+inline void sgReadVec3 ( gzFile fd, sgVec3 var ) {
+ sgReadFloat ( fd, 3, var ) ;
+}
+inline void sgWriteVec3 ( gzFile fd, const sgVec3 var ) {
+ sgWriteFloat ( fd, 3, var ) ;
+}
-void sgReadMat4 ( gzFile fd, sgMat4 var ) ;
-void sgWriteMat4 ( gzFile fd, const sgMat4 var ) ;
+inline void sgReaddVec3 ( gzFile fd, sgdVec3 var ) {
+ sgReadDouble ( fd, 3, var ) ;
+}
+inline void sgWritedVec3 ( gzFile fd, const sgdVec3 var ) {
+ sgWriteDouble ( fd, 3, var ) ;
+}
+
+inline void sgReadVec4 ( gzFile fd, sgVec4 var ) {
+ sgReadFloat ( fd, 4, var ) ;
+}
+inline void sgWriteVec4 ( gzFile fd, const sgVec4 var ) {
+ sgWriteFloat ( fd, 4, var ) ;
+}
+
+inline void sgReadMat4 ( gzFile fd, sgMat4 var ) {
+ sgReadFloat ( fd, 16, (float *)var ) ;
+}
+inline void sgWriteMat4 ( gzFile fd, const sgMat4 var ) {
+ sgWriteFloat ( fd, 16, (float *)var ) ;
+}
void sgClearReadError();
void sgClearWriteError();
int sgReadError();
int sgWriteError();
-
#endif // _SG_LOWLEVEL_HXX