]> git.mxchange.org Git - simgear.git/blobdiff - Math/MAT3mat.c
Tweak for SGI portability.
[simgear.git] / Math / MAT3mat.c
index 02518afb5d71ef2231f5d359ff308d1847bb8ffc..9a1e7c9911641fa46baa2cf29e4097a5490e369d 100644 (file)
@@ -5,13 +5,22 @@
  * This file contains routines that operate solely on matrices.
  * -------------------------------------------------------------------------*/
 
-#include <string.h>
-#include "mat3defs.h"
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
 
 #ifdef WIN32
-#include <memory.h>      /* required for memset() and memcpy() */
+#  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" */
 
 /* --------------------------  Static Routines ---------------------------- */
@@ -21,6 +30,8 @@
 /* --------------------------  Public Routines ---------------------------- */
 
 
+#if !defined( USE_XTRA_MAT3_INLINES )
+
 /*
  * Sets a matrix to identity.
  */
@@ -30,8 +41,8 @@ MAT3identity (register MAT3mat mat)
 {
    register int i;
 
-#ifdef WIN32
-   memset(mat,0x00, sizeof(MAT3mat));
+#ifdef USE_MEM /* WIN32 */
+   memset(mat, 0x00, sizeof(MAT3mat));
 #else
    bzero (mat, sizeof(MAT3mat));
 #endif
@@ -47,7 +58,7 @@ MAT3identity (register MAT3mat mat)
 void
 MAT3zero (MAT3mat mat)
 {
-#ifdef WIN32
+#ifdef USE_MEM /* WIN32 */
    memset(mat,0x00, sizeof(MAT3mat));
 #else
    bzero (mat, sizeof(MAT3mat));
@@ -62,7 +73,7 @@ MAT3zero (MAT3mat mat)
 void
 MAT3copy(MAT3mat to, MAT3mat from)
 {
-#ifdef WIN32
+#ifdef USE_MEM /* WIN32 */
     memcpy(to, from, sizeof(MAT3mat));
 #else
     bcopy(from, to, sizeof(MAT3mat));
@@ -75,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;
@@ -90,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
@@ -97,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;
@@ -117,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);
 }
@@ -131,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;