40 #define MOT_CLEF_INV 2
41 #define GRANDEUR_INV 4
234 #define N_MAX_ITEMS 30
235 #define L_MAX_ITEM 49
251 "",
"byte",
"char",
"short",
"long",
"float",
"double",
"complex",
252 "double_complex",
"rgba",
"structure",
"pointer",
"list",
"int",
"uint",
254 "vec3f",
"vec3d",
"vec4f",
"vec4d",
"hfloat",
"vec9f",
"vec9d"
260 "fac_x",
"fac_y",
"fac_z",
"fac_t"
266 0,
sizeof(
Byte),
sizeof(
char),
sizeof(short),
sizeof(
long),
sizeof(float),
267 sizeof(
double), 0, 0, 0, 0,
sizeof(
void *), 0,
sizeof(
int),
sizeof(
UInt),
268 sizeof(
unsigned short),
269 3*
sizeof(float), 3*
sizeof(
double), 4*
sizeof(float), 4*
sizeof(
double),
270 sizeof(
short_float), 9*
sizeof(
float), 9*
sizeof(double)
277 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 3, 3, 4, 4, 1, 9, 9
297 is_deprecated(
char *s ) {
305 #define MAKE_CONSISTENT( D ) \
306 if( bool_dim_##D && bool_inc_##D && bool_##D ) \
307 if( v_dim_##D != v_inc_##D * (v_##D-1) ) { \
308 fprintf( stderr, "Adjusting dim_%s to make dimensions consistent\n", #D ); \
309 v_dim_##D = v_inc_##D * (v_##D-1);\
341 cerr<<
"\nERREUR: descripteur de fichier nul\n";
348 cerr<<
"\nHeader_Write: type inconnu: "<< v_type;
357 cerr <<
"\nHeader_Write: taille invalide:" << v_taille << endl;
363 if (v_trame<MIN_TRAME || v_trame>
MAX_TRAME) {
365 fprintf(stderr,
"\nHeader_Write: trame inconnue: %d\n", v_trame);
379 snprintf(ligne,
sizeof ligne,
"x:%d y:%d z:%d t:%d type:%s systeme:%s ",
380 v_x, v_y, v_z, v_t, type, systemestr());
382 snprintf(ligne,
sizeof ligne,
"x:%d y:%d t:%d type:%s systeme:%s ",
383 v_x, v_y, v_t, type, systemestr());
387 snprintf(ligne,
sizeof ligne,
"x:%d y:%d z:%d type:%s systeme:%s ",
388 v_x, v_y, v_z, type, systemestr());
390 snprintf(ligne,
sizeof ligne,
"x:%d y:%d type:%s systeme:%s ",
391 v_x, v_y, type, systemestr());
394 int n_car = strlen(ligne);
405 snprintf(&items[n_items][0],
L_MAX_ITEM,
"taille:%d ", v_taille);
406 l_item[n_items] = strlen(&items[n_items][0]);
410 snprintf(&items[n_items][0],
L_MAX_ITEM,
"org_x:%g ", v_org_x);
411 l_item[n_items] = strlen(&items[n_items][0]);
415 snprintf(&items[n_items][0],
L_MAX_ITEM,
"org_y:%g ", v_org_y);
416 l_item[n_items] = strlen(&items[n_items][0]);
420 snprintf(&items[n_items][0],
L_MAX_ITEM,
"org_z:%g ", v_org_z);
421 l_item[n_items] = strlen(&items[n_items][0]);
425 snprintf(&items[n_items][0],
L_MAX_ITEM,
"org_t:%g ", v_org_t);
426 l_item[n_items] = strlen(&items[n_items][0]);
430 snprintf(&items[n_items][0],
L_MAX_ITEM,
"dim_x:%g ", v_dim_x);
431 l_item[n_items] = strlen(&items[n_items][0]);
435 snprintf(&items[n_items][0],
L_MAX_ITEM,
"dim_x:%g ", v_inc_x);
436 l_item[n_items] = strlen(&items[n_items][0]);
440 snprintf(&items[n_items][0],
L_MAX_ITEM,
"dim_y:%g ", v_dim_y);
441 l_item[n_items] = strlen(&items[n_items][0]);
445 snprintf(&items[n_items][0],
L_MAX_ITEM,
"dim_y:%g ", v_inc_y);
446 l_item[n_items] = strlen(&items[n_items][0]);
450 snprintf(&items[n_items][0],
L_MAX_ITEM,
"dim_z:%g ", v_dim_z);
451 l_item[n_items] = strlen(&items[n_items][0]);
455 snprintf(&items[n_items][0],
L_MAX_ITEM,
"dim_z:%g ", v_inc_z);
456 l_item[n_items] = strlen(&items[n_items][0]);
460 snprintf(&items[n_items][0],
L_MAX_ITEM,
"dim_t:%g ", v_dim_t);
461 l_item[n_items] = strlen(&items[n_items][0]);
465 snprintf(&items[n_items][0],
L_MAX_ITEM,
"inc_t:%g ", v_inc_t);
466 l_item[n_items] = strlen(&items[n_items][0]);
470 snprintf(&items[n_items][0],
L_MAX_ITEM,
"vect_z:1 ");
471 l_item[n_items] = strlen(&items[n_items][0]);
475 snprintf(&items[n_items][0],
L_MAX_ITEM,
"unites_x:%.40s ", v_unites_x);
476 l_item[n_items] = strlen(&items[n_items][0]);
480 snprintf(&items[n_items][0],
L_MAX_ITEM,
"unites_y:%.40s ", v_unites_y);
481 l_item[n_items] = strlen(&items[n_items][0]);
485 snprintf(&items[n_items][0],
L_MAX_ITEM,
"unites_z:%.40s ", v_unites_z);
486 l_item[n_items] = strlen(&items[n_items][0]);
490 snprintf(&items[n_items][0],
L_MAX_ITEM,
"unites_t:%.40s ", v_unites_t);
491 l_item[n_items] = strlen(&items[n_items][0]);
495 snprintf(&items[n_items][0],
L_MAX_ITEM,
"num:%d ", v_num);
496 l_item[n_items] = strlen(&items[n_items][0]);
500 snprintf(&items[n_items][0],
L_MAX_ITEM,
"bin:%d ", v_bin);
501 l_item[n_items] = strlen(&items[n_items][0]);
507 snprintf(&items[n_items][0],
L_MAX_ITEM,
"trame:c8 ");
510 snprintf(&items[n_items][0],
L_MAX_ITEM,
"trame:c4 ");
513 snprintf(&items[n_items][0],
L_MAX_ITEM,
"trame:hex ");
516 snprintf(&items[n_items][0],
L_MAX_ITEM,
"trame:hexedges ");
519 snprintf(&items[n_items][0],
L_MAX_ITEM,
"trame:hexbridges ");
522 snprintf(&items[n_items][0],
L_MAX_ITEM,
"trame:hexlines ");
525 snprintf(&items[n_items][0],
L_MAX_ITEM,
"trame:hex2 ");
528 l_item[n_items] = strlen(&items[n_items][0]);
532 snprintf(&items[n_items][0],
L_MAX_ITEM,
"lut:%d ", v_lut);
533 l_item[n_items] = strlen(&items[n_items][0]);
537 snprintf(&items[n_items][0],
L_MAX_ITEM,
"comp:%d ", v_comp);
538 l_item[n_items] = strlen(&items[n_items][0]);
542 snprintf(&items[n_items][0],
L_MAX_ITEM,
"epais:%g ", v_epais);
543 l_item[n_items] = strlen(&items[n_items][0]);
547 snprintf(&items[n_items][0],
L_MAX_ITEM,
"unites:%.40s ", v_unites);
548 l_item[n_items] = strlen(&items[n_items][0]);
552 snprintf(&items[n_items][0],
L_MAX_ITEM,
"facteur:%g ", v_facteur);
553 l_item[n_items] = strlen(&items[n_items][0]);
557 snprintf(&items[n_items][0],
L_MAX_ITEM,
"zero:%g ", v_zero);
558 l_item[n_items] = strlen(&items[n_items][0]);
561 if ( v_transparent != NULL ) {
562 char *p=(
char *)v_transparent, value[
MAXL];
565 snprintf( value+a*2,
L_MAX_ITEM,
"%0.2x", *(p++) );
567 snprintf(&items[n_items][0],
L_MAX_ITEM,
"transparent:%s ", value );
568 l_item[n_items] = strlen(&items[n_items][0]);
571 if (bool_struct_desc) {
572 snprintf(&items[n_items][0],
L_MAX_ITEM,
"struct:%.40s ", v_struct_desc);
573 l_item[n_items] = strlen(&items[n_items][0]);
577 snprintf(&items[n_items][0],
L_MAX_ITEM,
"aut:%.40s ", v_aut_name);
578 l_item[n_items] = strlen(&items[n_items][0]);
586 while (*comment != NULL) {
588 n_car_total += strlen(*comment++) + 3;
595 for (
int i=0;i<n_items;i++) {
596 if (n_car+l_item[i]<71) {
597 strcat(ligne, &items[i][0]);
600 ligne[n_car++] =
'\r';
601 ligne[n_car++] =
'\n';
602 ligne[n_car] =
'\000';
603 n_car_total += n_car;
604 if (puts_fcn(file, ligne)==-1) {
606 fprintf(stderr,
"\nHeader_Write: Erreur a l'ecriture \n");
608 fprintf(stderr,
"\n");
613 strcpy(ligne, &items[i][0]);
622 ligne[n_car++] =
'\r';
623 ligne[n_car++] =
'\n';
624 ligne[n_car] =
'\000';
625 n_car_total += n_car;
626 if (puts_fcn(file, ligne )==-1) {
628 fprintf(stderr,
"\nHeader_Write: Erreur a l'ecriture \n");
630 fprintf(stderr,
"\n");
641 int n_blocs = 1 + (n_car_total-1)/1024;
642 int n_car_sup = n_blocs*1024 - n_car_total;
645 n_lig_sup = 1 + (n_car_sup-1)/72;
649 int n_car_dl = 1 + (n_car_sup-1)%72;
656 while (*comment != NULL) {
657 n_car = fprintf(file,
"#%.80s\r\n", *comment++);
660 fprintf(stderr,
"\nHeader_Write: Erreur a l'ecriture \n");
662 fprintf(stderr,
"\n");
673 for (
int i=0;i<70;i++) ligne[i] =
' ';
677 for (
int i=0;i<n_lig_sup-1;i++) {
678 if (puts_fcn(file, ligne)==-1) {
680 fprintf(stderr,
"\nHeader_Write: Erreur a l'ecriture \n");
682 fprintf(stderr,
"\n");
692 for (
int i=0;i<n_car_dl-2;i++) ligne[i] =
' ';
693 if (n_car_dl>2) ligne[n_car_dl-3] =
'\r';
694 if (n_car_dl>1) ligne[n_car_dl-2] =
'\n';
695 ligne[n_car_dl-1] =
FF;
696 ligne[n_car_dl] =
'\000';
697 if (puts_fcn(file, ligne )==-1) {
699 fprintf(stderr,
"\nHeader_Write: Erreur a l'ecriture \n");
701 fprintf(stderr,
"\n");
707 if (n_car_total>1024) {
710 "\nHeader_Write ATTENTION: etiquette de grandeur non-standard \n");
712 "\nHeader_Write ATTENTION: etiquette de grandeur non-standard \n");
716 "\nHeader_Write: Entete transcrite sans problemes\n");
739 bool bool_fac_t =
false;
744 for (
int s=8; (s>0 || nosup) && go; s-- ) {
748 int bytes_read = tell(file);
758 "\nERREUR ligne trop longue (>80) dans l'entete !\n" ) ;
760 "\nERREUR ligne trop longue (>80) dans l'entete !\n" ) ;
771 "\nERREUR Fin de fichier dans l'entete !\n" ) ;
773 "\nERREUR Fin de fichier dans l'entete !\n" ) ;
778 else if ( in ==
FF ) {
785 else if ( in ==
CR ) {
787 }
else if ( in ==
LF ) {
793 else if ( in && ! isprint(in) ) {
796 "\nERREUR caract. non imprim. 0x%.2X dans "
797 "l'entete at byte number %ld\n", in, tell(file) );
799 "\nERREUR caract. non imprim. 0x%.2X dans l'entete !\n", in );
802 str[i++] = (char) in ;
808 for (
char* pt_1=str; *pt_1; pt_1++ ) {
811 if ( *pt_1 ==
'*' || *pt_1 ==
'#') {
813 v_comment[com] = (
char *)malloc( strlen(pt_1+1) + 1 ) ;
814 strcpy( v_comment[com++], pt_1+1 ) ;
816 v_comment = (
char **)
817 realloc(v_comment, (com+
NALLOC)*
sizeof(
char *));
818 v_comment[com] = NULL ;
826 if (isupper(*pt_1)) *pt_1 = tolower( *pt_1 ) ;
832 for (
char *pt_1=strtok(str,
" ,;\t"); pt_1; pt_1=strtok(NULL,
" ,;\t") ) {
838 for ( pt_2 = pt_1; *pt_2 !=
':'; pt_2 ++ )
842 "\nERREUR de syntaxe dans l'entete (%s)\n", pt_1);
844 "\nERREUR de syntaxe dans l'entete (%s)\n", pt_1);
851 if ( ! strcmp( pt_1,
"x" ) ) {
855 }
else if ( ! strcmp( pt_1,
"y" ) ) {
859 }
else if ( ! strcmp( pt_1,
"z" ) ) {
863 }
else if ( ! strcmp( pt_1,
"t" ) ) {
868 }
else if ( ! strcmp( pt_1,
"sup" ) ) {
872 }
else if ( ! strcmp( pt_1,
"type" ) ) {
880 }
else if ( ! strcmp( pt_1,
"taille" ) ) {
881 v_taille = atoi( pt_2 ) ;
884 }
else if ( ! strcmp( pt_1,
"systeme" ) ) {
893 }
else if ( ! strcmp( pt_1,
"bin" ) ) {
894 v_bin = atoi( pt_2 ) ;
897 }
else if ( ! strcmp( pt_1,
"trame" ) ) {
899 if ( ! strcmp( pt_2,
"c8" ) ) {
901 }
else if ( ! strcmp( pt_2,
"c4" ) ) {
903 }
else if ( ! strcmp( pt_2,
"hex" ) ) {
905 }
else if ( ! strcmp( pt_2,
"hexedges" ) ) {
907 }
else if ( ! strcmp( pt_2,
"hexbridges" ) ) {
909 }
else if ( ! strcmp( pt_2,
"hexlines" ) ) {
911 }
else if ( ! strcmp( pt_2,
"hex2" ) ) {
916 }
else if ( ! strcmp( pt_1,
"num" ) ) {
917 v_num = atoi( pt_2 ) ;
920 }
else if ( ! strcmp( pt_1,
"comp" ) ) {
921 v_comp = atoi( pt_2 ) ;
924 }
else if ( ! strcmp( pt_1,
"lut" ) ) {
925 v_lut = atoi( pt_2 ) ;
928 }
else if ( ! strcmp( pt_1,
"dim_x" ) ) {
929 v_dim_x = atof( pt_2 ) ;
932 }
else if ( ! strcmp( pt_1,
"dim_y" ) ) {
933 v_dim_y = atof( pt_2 ) ;
936 }
else if ( ! strcmp( pt_1,
"dim_z" ) ) {
937 v_dim_z = atof( pt_2 ) ;
940 }
else if ( ! strcmp( pt_1,
"dim_t" ) ) {
941 v_dim_t = atof( pt_2 ) ;
944 }
else if ( ! strcmp( pt_1,
"inc_x" ) ) {
945 v_inc_x = atof( pt_2 ) ;
948 }
else if ( ! strcmp( pt_1,
"inc_y" ) ) {
949 v_inc_y = atof( pt_2 ) ;
952 }
else if ( ! strcmp( pt_1,
"inc_z" ) ) {
953 v_inc_z = atof( pt_2 ) ;
956 }
else if ( ! strcmp( pt_1,
"inc_t" ) ) {
957 v_inc_t = atof( pt_2 ) ;
960 }
else if ( ! strcmp( pt_1,
"org_x" ) ) {
961 v_org_x = atof( pt_2 ) ;
964 }
else if ( ! strcmp( pt_1,
"org_y" ) ) {
965 v_org_y = atof( pt_2 ) ;
968 }
else if ( ! strcmp( pt_1,
"org_z" ) ) {
969 v_org_z = atof( pt_2 ) ;
972 }
else if ( ! strcmp( pt_1,
"org_t" ) ) {
973 v_org_t = atof( pt_2 ) ;
976 }
else if ( ! strcmp( pt_1,
"vect_z" ) ) {
979 }
else if ( ! strcmp( pt_1,
"unites_x" ) ) {
980 strncpy( v_unites_x, pt_2, 40 ) ;
981 bool_unites_x =
VRAI;
983 }
else if ( ! strcmp( pt_1,
"unites_y" ) ) {
984 strncpy( v_unites_y, pt_2, 40 ) ;
985 bool_unites_y =
VRAI;
987 }
else if ( ! strcmp( pt_1,
"unites_z" ) ) {
988 strncpy( v_unites_z, pt_2, 40 ) ;
989 bool_unites_z =
VRAI;
991 }
else if ( ! strcmp( pt_1,
"unites_t" ) ) {
992 strncpy( v_unites_t, pt_2, 40 ) ;
993 bool_unites_t =
VRAI;
995 }
else if ( ! strcmp( pt_1,
"epais" ) ) {
996 v_epais = atof( pt_2 ) ;
999 }
else if ( ! strcmp( pt_1,
"unites" ) ) {
1000 strncpy( v_unites, pt_2, 40 ) ;
1003 }
else if ( ! strcmp( pt_1,
"facteur" ) ) {
1004 v_facteur = atof( pt_2 ) ;
1005 bool_facteur =
VRAI;
1007 }
else if ( ! strcmp( pt_1,
"zero" ) ) {
1008 v_zero = atof( pt_2 ) ;
1011 }
else if ( ! strcmp( pt_1,
"struct" ) ) {
1012 strncpy( v_struct_desc, pt_2, 40 ) ;
1013 bool_struct_desc =
VRAI;
1015 }
else if ( ! strcmp( pt_1,
"aut" ) ) {
1016 strncpy( v_aut_name, pt_2, 40 ) ;
1017 bool_aut_name =
VRAI;
1019 }
else if ( !strcmp( pt_1,
"transparent" ) ) {
1020 strcpy( transstr, pt_2 );
1021 bool_transparent =
VRAI;
1024 if( is_deprecated( pt_1 ) ){
1026 fprintf(stderr,
"\nATTENTION: mot-clef %s obsolete !\n", pt_1 ) ;
1027 if( !strcmp( pt_1,
"fac_t" ) ){
1028 v_fac_t = atof( pt_2 );
1033 fprintf(stderr,
"\nATTENTION: mot-clef %s non reconnu !\n", pt_1 );
1035 "\nATTENTION: mot-clef %s non reconnu !\n", pt_1 ) ;
1042 if ( bool_transparent ) {
1043 if ( strlen(transstr) != 2*
Data_Size[v_type] ) {
1044 fprintf(stderr,
"ATTENTION: ignoring invalid transparent value !\n");
1048 v = (
char *)(v_transparent = calloc(
Data_Size[v_type], 1 ));
1049 for (
int i=0; i<
Data_Size[v_type]; i++ ) {
1050 s[0] = transstr[i*2];
1051 s[1] = transstr[i*2+1];
1052 v[i] = strtol( s, &p, 16 );
1058 if ( !bool_x || !bool_y || !bool_type ) {
1060 fprintf(stderr,
"\nERREUR x, y ou type non definis\n") ;
1068 float dim_x = v_inc_x * v_x ;
1069 if ( dim_x != v_dim_x ) {
1071 fprintf(stderr,
"\nATTENTION:\n") ;
1073 "conflit entre x (%d) * inc_x (%.12g) = %.12g et dim_x (%.12g)\n",
1074 v_x, v_inc_x, dim_x, v_dim_x) ;
1077 "conflit entre x (%d) * inc_x (%.12g) = %.12g et dim_x (%.12g)\n",
1078 v_x, v_inc_x, dim_x, v_dim_x) ;
1082 v_inc_x = v_dim_x / v_x ;
1086 v_dim_x = v_x * v_inc_x ;
1087 if ( bool_inc_x ) bool_dim_x =
VRAI;
1092 float dim_y = v_inc_y * v_y ;
1093 if ( dim_y != v_dim_y ) {
1095 fprintf(stderr,
"\nATTENTION:\n") ;
1097 "conflit entre y (%d) * inc_y (%.12g) = %.12g et dim_y (%.12g)\n",
1098 v_y, v_inc_y, dim_y, v_dim_y) ;
1101 "conflit entre y (%d) * inc_y (%.12g) = %.12g et dim_y (%.12g)\n",
1102 v_y, v_inc_y, dim_y, v_dim_y) ;
1106 v_inc_y = v_dim_y / v_y ;
1110 v_dim_y = v_y * v_inc_y ;
1111 if ( bool_inc_y ) bool_dim_y =
VRAI;
1116 float dim_z = v_inc_z * v_z ;
1117 if ( dim_z != v_dim_z ) {
1119 fprintf(stderr,
"\nATTENTION:\n") ;
1121 "conflit entre z (%d) * inc_z (%.12g) = %.12g et dim_z (%.12g)\n",
1122 v_z, v_inc_z, dim_z, v_dim_z) ;
1125 "conflit entre z (%d) * inc_z (%.12g) = %.12g et dim_z (%.12g)\n",
1126 v_z, v_inc_z, dim_z, v_dim_z) ;
1130 v_inc_z = v_dim_z / v_z ;
1134 v_dim_z = v_z * v_inc_z ;
1135 if ( bool_inc_z ) bool_dim_z =
VRAI;
1138 if( !bool_inc_t && bool_fac_t ) {
1144 float dim_t = v_inc_t * (v_t-1) ;
1145 if ( fabs(dim_t - v_dim_t) > v_inc_t ) {
1147 fprintf(stderr,
"\nATTENTION:\n") ;
1149 "conflit entre t (%d) * inc_t (%.12g) = %.12g et dim_t (%.12g)\n",
1150 v_t, v_inc_t, dim_t, v_dim_t) ;
1153 "conflit entre t (%d) * inc_t (%.12g) = %.12g et dim_t (%.12g)\n",
1154 v_t, v_inc_t, dim_t, v_dim_t) ;
1158 v_inc_t = v_dim_t / (v_t - 1) ;
1162 v_dim_t = (v_t-1) * v_inc_t ;
1167 if ( bool_taille ) {
1171 "\nERREUR taille redefinie pour type autre que structure\n") ;
1173 "\nERREUR taille redefinie pour type autre que structure\n") ;
1180 "\nERREUR taille non definie pour type structure\n") ;
1182 "\nERREUR taille non definie pour type structure\n") ;
1189 if (tell(file)!=1024) {
1190 fseek(file, 1024, SEEK_SET);
1193 "\nATTENTION: etiquette de grandeur non-standard: %ld \n", tell(file));
1196 "\nATTENTION: etiquette de grandeur non-standard \n");
1200 "\nHeader_Read: Etiquette lue sans problemes\n");
1204 v_vect_z = (
float *)malloc(v_z*
sizeof(
float));
1205 fread(v_vect_z,
sizeof(
float), v_z, file);
1217 int i = 0, n_lignes = 0;
1219 if ( ligne == NULL ) {
1220 while ( v_comment[n_lignes] != NULL )
1221 free( v_comment[n_lignes++] );
1225 while (v_comment[i++]!=NULL) n_lignes++;
1226 v_comment = (
char **)realloc(v_comment, (n_lignes+2)*
sizeof(
char *));
1228 v_comment[n_lignes] = (
char *)malloc(strlen(ligne)+1) ;
1229 strcpy(v_comment[n_lignes++], ligne) ;
1230 v_comment[n_lignes] = NULL;
1231 bool_comment =
true;
1269 cerr <<
"illegal data type specified for IGB header" << endl;
1276 long IGBheader::tell( FILE *f )
1282 int IGBheader::puts_fcn( FILE* f,
char* s )
1295 if ( data_size()==1 || v_type==
IGB_RGBA )
1298 unsigned char *bp = (
unsigned char *)data;
1299 int ds = data_size()/num_components();
1301 if ( nd<0 ) nd = v_x*v_y*v_z*v_t;
1303 nd *= num_components();
1307 for (
int i=0; i<nd; i++ ) {
1308 unsigned char tmpb = bp[0];
1315 for (
int i=0; i<nd; i++ ) {
1316 unsigned char tmpb = bp[0];
1326 for (
int i=0; i<nd; i++ ) {
1327 unsigned char tmpb = bp[0];
1351 *pval = (
unsigned char *)(&val);
1353 assert(
sizeof(
float) == 4 );
1355 if ( *pval == le_val[0] )
const char * Header_Type[]
unsigned short Data_Size[]
const char * deprecated[]
int my_fputs(FILE *, char *)
long unsigned Header_Systeme_No[]
const char * Header_Systeme[]