//
// 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
-#ifdef HAVE_CONFIG_H
-# include <simgear_config.h>
-#endif
-
#include <stdio.h>
#include <zlib.h>
-#ifdef HAVE_STDINT_H
-# include <stdint.h>
-#endif
-
-#include <plib/sg.h>
#include <simgear/compiler.h>
+#include <simgear/misc/stdint.hxx>
+
+#include <simgear/math/SGMath.hxx>
// Note that output is written in little endian form (and converted as
// necessary for big endian machines)
void sgReadString ( gzFile fd, char **var ) ;
void sgWriteString ( gzFile fd, const char *var ) ;
-inline void sgReadVec2 ( gzFile fd, sgVec2 var ) {
- sgReadFloat ( fd, 2, var ) ;
+inline void sgReadVec2 ( gzFile fd, SGVec2f& var ) {
+ sgReadFloat ( fd, 2, var.data() ) ;
}
-inline void sgWriteVec2 ( gzFile fd, const sgVec2 var ) {
- sgWriteFloat ( fd, 2, var ) ;
+inline void sgWriteVec2 ( gzFile fd, const SGVec2f& var ) {
+ sgWriteFloat ( fd, 2, var.data() ) ;
}
-inline void sgReadVec3 ( gzFile fd, sgVec3 var ) {
- sgReadFloat ( fd, 3, var ) ;
+inline void sgReadVec3 ( gzFile fd, SGVec3f& var ) {
+ sgReadFloat ( fd, 3, var.data() ) ;
}
-inline void sgWriteVec3 ( gzFile fd, const sgVec3 var ) {
- sgWriteFloat ( fd, 3, var ) ;
+inline void sgWriteVec3 ( gzFile fd, const SGVec3f& var ) {
+ sgWriteFloat ( fd, 3, var.data() ) ;
}
-inline void sgReaddVec3 ( gzFile fd, sgdVec3 var ) {
- sgReadDouble ( fd, 3, var ) ;
+inline void sgReaddVec3 ( gzFile fd, SGVec3d& var ) {
+ sgReadDouble ( fd, 3, var.data() ) ;
}
-inline void sgWritedVec3 ( gzFile fd, const sgdVec3 var ) {
- sgWriteDouble ( fd, 3, var ) ;
+inline void sgWritedVec3 ( gzFile fd, const SGVec3d& var ) {
+ sgWriteDouble ( fd, 3, var.data() ) ;
}
-inline void sgReadVec4 ( gzFile fd, sgVec4 var ) {
- sgReadFloat ( fd, 4, var ) ;
+inline void sgReadVec4 ( gzFile fd, SGVec4f& var ) {
+ sgReadFloat ( fd, 4, var.data() ) ;
}
-inline void sgWriteVec4 ( gzFile fd, const sgVec4 var ) {
- sgWriteFloat ( fd, 4, var ) ;
+inline void sgWriteVec4 ( gzFile fd, const SGVec4f& var ) {
+ sgWriteFloat ( fd, 4, var.data() ) ;
}
-inline void sgReadMat4 ( gzFile fd, sgMat4 var ) {
- sgReadFloat ( fd, 16, (float *)var ) ;
+inline void sgReadMat4 ( gzFile fd, SGMatrixf& var ) {
+ sgReadFloat ( fd, 16, (float *)var.data() ) ;
}
-inline void sgWriteMat4 ( gzFile fd, const sgMat4 var ) {
- sgWriteFloat ( fd, 16, (float *)var ) ;
+inline void sgWriteMat4 ( gzFile fd, const SGMatrixf& var ) {
+ sgWriteFloat ( fd, 16, (float *)var.data() ) ;
}
void sgClearReadError();
int sgReadError();
int sgWriteError();
-inline bool sgIsLittleEndian() {
- static const int sgEndianTest = 1;
- return (*((char *) &sgEndianTest ) != 0);
-}
-
-inline bool sgIsBigEndian() {
- static const int sgEndianTest = 1;
- return (*((char *) &sgEndianTest ) == 0);
-}
-
-inline void sgEndianSwap(unsigned short *x) {
- *x =
- (( *x >> 8 ) & 0x00FF ) |
- (( *x << 8 ) & 0xFF00 ) ;
-}
-
-inline void sgEndianSwap(unsigned int *x) {
- *x =
- (( *x >> 24 ) & 0x000000FF ) |
- (( *x >> 8 ) & 0x0000FF00 ) |
- (( *x << 8 ) & 0x00FF0000 ) |
- (( *x << 24 ) & 0xFF000000 ) ;
-}
-
-inline void sgEndianSwap(uint64_t *x) {
-#ifndef _MSC_VER
- *x =
- (( *x >> 56 ) & 0x00000000000000FFULL ) |
- (( *x >> 40 ) & 0x000000000000FF00ULL ) |
- (( *x >> 24 ) & 0x0000000000FF0000ULL ) |
- (( *x >> 8 ) & 0x00000000FF000000ULL ) |
- (( *x << 8 ) & 0x000000FF00000000ULL ) |
- (( *x << 24 ) & 0x0000FF0000000000ULL ) |
- (( *x << 40 ) & 0x00FF000000000000ULL ) |
- (( *x << 56 ) & 0xFF00000000000000ULL ) ;
-#else
- *x =
- (( *x >> 56 ) & 0x00000000000000FF ) |
- (( *x >> 40 ) & 0x000000000000FF00 ) |
- (( *x >> 24 ) & 0x0000000000FF0000 ) |
- (( *x >> 8 ) & 0x00000000FF000000 ) |
- (( *x << 8 ) & 0x000000FF00000000 ) |
- (( *x << 24 ) & 0x0000FF0000000000 ) |
- (( *x << 40 ) & 0x00FF000000000000 ) |
- (( *x << 56 ) & 0xFF00000000000000 ) ;
-#endif
-}
-
#endif // _SG_LOWLEVEL_HXX