]> git.mxchange.org Git - simgear.git/blobdiff - Math/MAT3mat.c
Tweak for SGI portability.
[simgear.git] / Math / MAT3mat.c
index 0e1ea559b00c89bb9aa11f95a318db8c0af4f340..9a1e7c9911641fa46baa2cf29e4097a5490e369d 100644 (file)
@@ -5,7 +5,21 @@
  * This file contains routines that operate solely on matrices.
  * -------------------------------------------------------------------------*/
 
-#include "mat3defs.h"
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#ifdef WIN32
+#  ifndef HAVE_STL_SGI_PORT
+#    include <memory.h>      /* required for memset() and memcpy() */
+#  endif
+#endif
+
+#include <string.h>
+#include <Math/mat3defs.h>
+
+#define USE_MEM
 
 /* #include "macros.h" */
 
@@ -16,6 +30,8 @@
 /* --------------------------  Public Routines ---------------------------- */
 
 
+#if !defined( USE_XTRA_MAT3_INLINES )
+
 /*
  * Sets a matrix to identity.
  */
@@ -25,7 +41,12 @@ MAT3identity (register MAT3mat mat)
 {
    register int i;
 
+#ifdef USE_MEM /* WIN32 */
+   memset(mat, 0x00, sizeof(MAT3mat));
+#else
    bzero (mat, sizeof(MAT3mat));
+#endif
+
    for (i = 0; i < 4; i++)
       mat[i][i] = 1.0;
 }
@@ -37,7 +58,11 @@ MAT3identity (register MAT3mat mat)
 void
 MAT3zero (MAT3mat mat)
 {
+#ifdef USE_MEM /* WIN32 */
+   memset(mat,0x00, sizeof(MAT3mat));
+#else
    bzero (mat, sizeof(MAT3mat));
+#endif
 }
 
 
@@ -48,7 +73,11 @@ MAT3zero (MAT3mat mat)
 void
 MAT3copy(MAT3mat to, MAT3mat from)
 {
-   bcopy (from, to, sizeof(MAT3mat));
+#ifdef USE_MEM /* WIN32 */
+    memcpy(to, from, sizeof(MAT3mat));
+#else
+    bcopy(from, to, sizeof(MAT3mat));
+#endif
 }
 
 /*
@@ -57,9 +86,7 @@ MAT3copy(MAT3mat to, MAT3mat from)
  */
 
 void
-MAT3mult (result_mat, mat1, mat2)
-MAT3mat result_mat;
-register MAT3mat mat1, mat2;
+MAT3mult (double (*result_mat)[4], register double (*mat1)[4], register double (*mat2)[4])
 {
    register int i, j;
    MAT3mat     tmp_mat;
@@ -72,6 +99,7 @@ register MAT3mat mat1, mat2;
                       mat1[i][3] * mat2[3][j]);
    MAT3copy (result_mat, tmp_mat);
 }
+#endif // !defined( USE_XTRA_MAT3_INLINES )
 
 /*
  * This returns the transpose of a matrix.  The result matrix may be
@@ -79,9 +107,7 @@ register MAT3mat mat1, mat2;
  */
 
 void
-MAT3transpose (result_mat, mat)
-MAT3mat result_mat;
-register MAT3mat mat;
+MAT3transpose (double (*result_mat)[4], register double (*mat)[4])
 {
    register int i, j;
    MAT3mat     tmp_mat;
@@ -99,9 +125,7 @@ register MAT3mat mat;
  */
 
 void
-MAT3print(mat, fp)
-MAT3mat mat;
-FILE   *fp;
+MAT3print(double (*mat)[4], FILE *fp)
 {
    MAT3print_formatted(mat, fp, CNULL, CNULL, CNULL, CNULL);
 }
@@ -113,10 +137,7 @@ FILE       *fp;
  */
 
 void
-MAT3print_formatted(mat, fp, title, head, format, tail)
-MAT3mat mat;
-FILE   *fp;
-char   *title, *head, *format, *tail;
+MAT3print_formatted(double (*mat)[4], FILE *fp, char *title, char *head, char *format, char *tail)
 {
    register int i, j;