Skip to content
Snippets Groups Projects
Commit 17faf6cd authored by Christophe Geuzaine's avatar Christophe Geuzaine
Browse files

swap

parent d5b7ed96
No related branches found
No related tags found
No related merge requests found
/* $Id: Views.cpp,v 1.9 2000-11-27 14:27:34 geuzaine Exp $ */ /* $Id: Views.cpp,v 1.10 2000-11-27 17:13:39 geuzaine Exp $ */
#include "Gmsh.h" #include "Gmsh.h"
#include "Views.h" #include "Views.h"
...@@ -362,7 +362,7 @@ extern int Force_ViewNumber; ...@@ -362,7 +362,7 @@ extern int Force_ViewNumber;
void Read_View(FILE *file, char *filename){ void Read_View(FILE *file, char *filename){
char str[NAME_STR_L], name[NAME_STR_L]; char str[NAME_STR_L], name[NAME_STR_L];
int nb, format; int nb, format, testone, swap=0;
double version; double version;
while (1) { while (1) {
...@@ -407,48 +407,70 @@ void Read_View(FILE *file, char *filename){ ...@@ -407,48 +407,70 @@ void Read_View(FILE *file, char *filename){
ActualView->NbST, ActualView->NbVT, ActualView->NbTT, ActualView->NbST, ActualView->NbVT, ActualView->NbTT,
ActualView->NbSS, ActualView->NbVS, ActualView->NbTS); ActualView->NbSS, ActualView->NbVS, ActualView->NbTS);
if(format == LIST_FORMAT_BINARY){
fread(&testone, sizeof(int), 1, file);
if(testone != 1){
Msg(INFOS, "Swapping Bytes from Binary File");
swap = 1;
}
}
// Time values
ActualView->Time = List_CreateFromFile(ActualView->NbTimeStep, ActualView->Time = List_CreateFromFile(ActualView->NbTimeStep,
sizeof(double), file, format); sizeof(double), file, format, swap);
// Points
nb = ActualView->NbSP ? nb = ActualView->NbSP ?
ActualView->NbSP * ActualView->NbTimeStep + ActualView->NbSP * 3 : 0 ; ActualView->NbSP * ActualView->NbTimeStep + ActualView->NbSP * 3 : 0 ;
ActualView->SP = List_CreateFromFile(nb, sizeof(double), file, format); ActualView->SP = List_CreateFromFile(nb, sizeof(double), file, format, swap);
nb = ActualView->NbVP ? nb = ActualView->NbVP ?
ActualView->NbVP * ActualView->NbTimeStep * 3 + ActualView->NbVP * 3 : 0 ; ActualView->NbVP * ActualView->NbTimeStep * 3 + ActualView->NbVP * 3 : 0 ;
ActualView->VP = List_CreateFromFile(nb, sizeof(double), file, format); ActualView->VP = List_CreateFromFile(nb, sizeof(double), file, format, swap);
nb = ActualView->NbTP ? nb = ActualView->NbTP ?
ActualView->NbTP * ActualView->NbTimeStep * 9 + ActualView->NbTP * 3 : 0 ; ActualView->NbTP * ActualView->NbTimeStep * 9 + ActualView->NbTP * 3 : 0 ;
ActualView->TP = List_CreateFromFile(nb, sizeof(double), file, format); ActualView->TP = List_CreateFromFile(nb, sizeof(double), file, format, swap);
// Lines
nb = ActualView->NbSL ? nb = ActualView->NbSL ?
ActualView->NbSL * ActualView->NbTimeStep * 2 + ActualView->NbSL * 6 : 0 ; ActualView->NbSL * ActualView->NbTimeStep * 2 + ActualView->NbSL * 6 : 0 ;
ActualView->SL = List_CreateFromFile(nb, sizeof(double), file, format); ActualView->SL = List_CreateFromFile(nb, sizeof(double), file, format, swap);
nb = ActualView->NbVL ? nb = ActualView->NbVL ?
ActualView->NbVL * ActualView->NbTimeStep * 2 * 3 + ActualView->NbVL * 6 : 0 ; ActualView->NbVL * ActualView->NbTimeStep * 2 * 3 + ActualView->NbVL * 6 : 0 ;
ActualView->VL = List_CreateFromFile(nb, sizeof(double), file, format); ActualView->VL = List_CreateFromFile(nb, sizeof(double), file, format, swap);
nb = ActualView->NbTL ? nb = ActualView->NbTL ?
ActualView->NbTL * ActualView->NbTimeStep * 2 * 9 + ActualView->NbTL * 6 : 0 ; ActualView->NbTL * ActualView->NbTimeStep * 2 * 9 + ActualView->NbTL * 6 : 0 ;
ActualView->TL = List_CreateFromFile(nb, sizeof(double), file, format); ActualView->TL = List_CreateFromFile(nb, sizeof(double), file, format, swap);
// Triangles
nb = ActualView->NbST ? nb = ActualView->NbST ?
ActualView->NbST * ActualView->NbTimeStep * 3 + ActualView->NbST * 9 : 0 ; ActualView->NbST * ActualView->NbTimeStep * 3 + ActualView->NbST * 9 : 0 ;
ActualView->ST = List_CreateFromFile(nb, sizeof(double), file, format); ActualView->ST = List_CreateFromFile(nb, sizeof(double), file, format, swap);
nb = ActualView->NbVT ? nb = ActualView->NbVT ?
ActualView->NbVT * ActualView->NbTimeStep * 3 * 3 + ActualView->NbVT * 9 : 0 ; ActualView->NbVT * ActualView->NbTimeStep * 3 * 3 + ActualView->NbVT * 9 : 0 ;
ActualView->VT = List_CreateFromFile(nb, sizeof(double), file, format); ActualView->VT = List_CreateFromFile(nb, sizeof(double), file, format, swap);
nb = ActualView->NbTT ? nb = ActualView->NbTT ?
ActualView->NbTT * ActualView->NbTimeStep * 3 * 9 + ActualView->NbTT * 9 : 0 ; ActualView->NbTT * ActualView->NbTimeStep * 3 * 9 + ActualView->NbTT * 9 : 0 ;
ActualView->TT = List_CreateFromFile(nb, sizeof(double), file, format); ActualView->TT = List_CreateFromFile(nb, sizeof(double), file, format, swap);
// Tetrahedra
nb = ActualView->NbSS ? nb = ActualView->NbSS ?
ActualView->NbSS * ActualView->NbTimeStep * 4 + ActualView->NbSS * 12 : 0 ; ActualView->NbSS * ActualView->NbTimeStep * 4 + ActualView->NbSS * 12 : 0 ;
ActualView->SS = List_CreateFromFile(nb, sizeof(double), file, format); ActualView->SS = List_CreateFromFile(nb, sizeof(double), file, format, swap);
nb = ActualView->NbVS ? nb = ActualView->NbVS ?
ActualView->NbVS * ActualView->NbTimeStep * 4 * 3 + ActualView->NbVS * 12 : 0 ; ActualView->NbVS * ActualView->NbTimeStep * 4 * 3 + ActualView->NbVS * 12 : 0 ;
ActualView->VS = List_CreateFromFile(nb, sizeof(double), file, format); ActualView->VS = List_CreateFromFile(nb, sizeof(double), file, format, swap);
nb = ActualView->NbTS ? nb = ActualView->NbTS ?
ActualView->NbTS * ActualView->NbTimeStep * 4 * 9 + ActualView->NbTS * 12 : 0 ; ActualView->NbTS * ActualView->NbTimeStep * 4 * 9 + ActualView->NbTS * 12 : 0 ;
ActualView->TS = List_CreateFromFile(nb, sizeof(double), file, format); ActualView->TS = List_CreateFromFile(nb, sizeof(double), file, format, swap);
Msg(DEBUG, "Read View '%s' (%d TimeSteps): %d %d %d %d %d %d %d %d %d %d %d %d", Msg(DEBUG, "Read View '%s' (%d TimeSteps): %d %d %d %d %d %d %d %d %d %d %d %d",
name, ActualView->NbTimeStep, name, ActualView->NbTimeStep,
......
/* $Id: List.cpp,v 1.7 2000-11-27 10:58:45 geuzaine Exp $ */ /* $Id: List.cpp,v 1.8 2000-11-27 17:13:42 geuzaine Exp $ */
#include <stdlib.h> #include <stdlib.h>
#include <stdio.h> #include <stdio.h>
...@@ -341,7 +341,21 @@ void List_Copy(List_T *a , List_T *b){ ...@@ -341,7 +341,21 @@ void List_Copy(List_T *a , List_T *b){
} }
} }
List_T *List_CreateFromFile(int n, int size, FILE *file, int format){ void swap_doubles(double *array, unsigned int n){
unsigned int i, c;
double x;
char *px, *pp;
for (i = 0; i < n; i++) {
x = array[i];
px = (char *) &x;
pp = (char *) (array+i);
for (c = 0; c < sizeof(double); ++c)
pp[sizeof(double)-1-c] = px[c];
}
}
List_T *List_CreateFromFile(int n, int size, FILE *file, int format, int swap){
int i; int i;
List_T *liste; List_T *liste;
...@@ -351,10 +365,17 @@ List_T *List_CreateFromFile(int n, int size, FILE *file, int format){ ...@@ -351,10 +365,17 @@ List_T *List_CreateFromFile(int n, int size, FILE *file, int format){
liste->n = n; liste->n = n;
switch(format){ switch(format){
case LIST_FORMAT_ASCII : case LIST_FORMAT_ASCII :
for(i=0;i<n;i++) fscanf(file, "%lf ", (double*)&liste->array[i*size]) ; for(i=0;i<n;i++) fscanf(file, "%lf", (double*)&liste->array[i*size]) ;
return liste; return liste;
case LIST_FORMAT_BINARY : case LIST_FORMAT_BINARY :
fread(liste->array, size, n, file); fread(liste->array, size, n, file);
if(swap){
if(size != sizeof(double)){
Msg(ERROR, "Swapping Bytes only done for doubles");
return NULL;
}
swap_doubles((double*)liste->array, n);
}
return liste; return liste;
default : default :
Msg(ERROR, "Unknown List Format"); Msg(ERROR, "Unknown List Format");
......
/* $Id: List.h,v 1.5 2000-11-27 10:58:45 geuzaine Exp $ */ /* $Id: List.h,v 1.6 2000-11-27 17:13:42 geuzaine Exp $ */
#ifndef _LIST_H_ #ifndef _LIST_H_
#define _LIST_H_ #define _LIST_H_
...@@ -46,7 +46,7 @@ void List_Reset(List_T *liste); ...@@ -46,7 +46,7 @@ void List_Reset(List_T *liste);
void List_Action(List_T *liste, void (*action)(void *data, void *dummy)); void List_Action(List_T *liste, void (*action)(void *data, void *dummy));
void List_Action_Inverse(List_T *liste, void (*action)(void *data, void *dummy)); void List_Action_Inverse(List_T *liste, void (*action)(void *data, void *dummy));
void List_Copy(List_T *a , List_T *b); void List_Copy(List_T *a , List_T *b);
List_T *List_CreateFromFile(int n, int size, FILE *file, int format); List_T *List_CreateFromFile(int n, int size, FILE *file, int format, int swap);
void List_WriteToFile(List_T *liste, FILE *file, int format); void List_WriteToFile(List_T *liste, FILE *file, int format);
#endif #endif
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment