Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 5 additions & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,15 @@ SET (IS_RELEASE FALSE CACHE BOOL "Indicate if we are building w
SET (SAC2C_EXTRA_INC
-DHAVE_CONFIG_H
-I${PROJECT_BINARY_DIR}/include
-I${PROJECT_SOURCE_DIR}/include)
-I${PROJECT_SOURCE_DIR}/include
-I${PROJECT_SOURCE_DIR}
)

SET (SAC2C_CPP_INC
-DHAVE_CONFIG_H
-cppI${PROJECT_BINARY_DIR}/include
-cppI${PROJECT_SOURCE_DIR}/include)
-cppI${PROJECT_SOURCE_DIR}/include
-cppI${PROJECT_SOURCE_DIR})

# Check whether sac2c is operational
LIST (APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake-common")
Expand Down
20 changes: 10 additions & 10 deletions src/stdio/FibreIO.sac
Original file line number Diff line number Diff line change
Expand Up @@ -30,23 +30,23 @@ external double FibreScanDouble(File &stream);
#pragma linkobj "src/FibreIO/ScanDbl.o"

external int[*] FibreScanIntArray(File &stream);
#pragma refcounting [0]
#pragma linksign [1,2]
#pragma linksign [0, 1]
#pragma sacarg [0]
#pragma linkobj "src/FibreIO/ScanIntArr.o"

external float[*] FibreScanFloatArray(File &stream);
#pragma refcounting [0]
#pragma linksign [1,2]
#pragma linksign [0, 1]
#pragma sacarg [0]
#pragma linkobj "src/FibreIO/ScanFltArr.o"

external double[*] FibreScanDoubleArray(File &stream);
#pragma refcounting [0]
#pragma linksign [1,2]
#pragma linksign [0, 1]
#pragma sacarg [0]
#pragma linkobj "src/FibreIO/ScanDblArr.o"

external stringArray FibreScanStringArray(File &stream);
#pragma refcounting [0]
#pragma linksign [1,2]
#pragma linksign [0, 1]
#pragma sacarg [0]
#pragma linkobj "src/FibreIO/ScanStringArr.o"

/******************************************************************************
Expand Down Expand Up @@ -106,8 +106,8 @@ external float[*] FibreScanFloatArrayStr(string stream);
#pragma linkobj "src/FibreIO/ScanFltArr.o"

external double[*] FibreScanDoubleArrayStr(string stream);
#pragma refcounting [0]
#pragma linksign [1,2]
#pragma linksign [0, 1]
#pragma sacarg [0, 1]
#pragma linkobj "src/FibreIO/ScanDblArr.o"

external stringArray FibreScanStringArrayStr(string stream);
Expand Down
28 changes: 15 additions & 13 deletions src/stdio/src/FibreIO/FibreScan.y
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ extern int linenum;
extern char yytext[];

#include <stdio.h>
#include <stdbool.h>
#include <sacinterface.h>
#include "FibreScan.h"

enum READMODE {
Expand All @@ -22,10 +24,10 @@ enum READMODE {
string_mode,
};

int boolval;
bool boolval;
char byteval;
short shortval;
int intval;
sac_int intval;
long longval;
long long longlongval;
unsigned char ubyteval;
Expand All @@ -40,7 +42,7 @@ double *doublearray;
float *floatarray;
char *bytearray;
short *shortarray;
int *intarray;
sac_int *intarray;
long *longarray;
long long *longlongarray;
unsigned char *ubytearray;
Expand All @@ -50,17 +52,17 @@ unsigned long *ulongarray;
unsigned long long *ulonglongarray;
char **stringarray;

static int i;
int shape[ MAXDIM];
static int dim_pos;
static sac_int i;
sac_int shape[ MAXDIM];
static sac_int dim_pos;
static enum READMODE mode;

static int got_scalar;
static int size_fixed;
int dims;
int size;
static int array_pos;
static int elems_left[MAXDIM];
sac_int dims;
sac_int size;
static sac_int array_pos;
static sac_int elems_left[MAXDIM];

extern int yychar;
extern int yynerrs;
Expand All @@ -70,7 +72,7 @@ extern int yynerrs;

%union { char cbyte;
short cshort;
int cint;
sac_int cint;
long clong;
long long clonglong;
unsigned char cubyte;
Expand Down Expand Up @@ -252,7 +254,7 @@ parse_scalar: NUM
*floatarray = $1;
}
else if( mode == int_mode) {
intarray = (int *) SAC_MALLOC( sizeof( int));
intarray = (int *) SAC_MALLOC( sizeof( sac_int));
*intarray = $1;
}
else {
Expand Down Expand Up @@ -491,7 +493,7 @@ array: SQBR_L desc COLON
shortarray = (short *) SAC_MALLOC( size * sizeof( short));
break;
case int_mode:
intarray = (int *) SAC_MALLOC( size * sizeof( int));
intarray = (sac_int *) SAC_MALLOC( size * sizeof( sac_int));
break;
case long_mode:
longarray = (long *) SAC_MALLOC( size * sizeof( long));
Expand Down
66 changes: 21 additions & 45 deletions src/stdio/src/FibreIO/ScanDblArr.c
Original file line number Diff line number Diff line change
Expand Up @@ -6,53 +6,29 @@
#include "FibreScan.h"
#include "FibreScan.tab.h"



#define array_nt (array, T_OLD((AUD, (NHD, (NUQ, )))))
#define ret_nt (ret, T_OLD((AUD, (NHD, (NUQ, )))))

void FibreScanDoubleArray( SAC_ND_PARAM_out( array_nt, double), FILE *stream)
SACarg *FibreScanDoubleArray(FILE *stream)
{
SAC_ND_DECL__DATA( ret_nt, double, )
SAC_ND_DECL__DESC( ret_nt, )
int i;
start_token = PARSE_DOUBLE_ARRAY;
doScan( stream);
int SAC_ND_A_MIRROR_DIM( ret_nt) = dims;
SAC_ND_ALLOC__DESC( ret_nt, dims)
SAC_ND_SET__RC( ret_nt, 1)
for( i = 0; i < dims; i++) {
SAC_ND_A_DESC_SHAPE( ret_nt, i) = shape[i];
}
SAC_ND_A_DESC_SIZE( ret_nt) = size;
SAC_ND_A_FIELD( ret_nt) = doublearray;
SAC_ND_RET_out( array_nt, ret_nt)
/**
* Global variables created by the .y file:
* double *doublearray
* sac_int *shp
* sac_int dims
* sac_int size
**/
sac_int i;
start_token = PARSE_DOUBLE_ARRAY;
doScan(stream);

return SACARGcreateFromPointer(SACTYPE__MAIN__double, doublearray, dims, shp);
}

#undef array_nt
#undef ret_nt

#define array_nt (array, T_OLD((AUD, (NHD, (NUQ, )))))
#define ret_nt (ret, T_OLD((AUD, (NHD, (NUQ, )))))

void FibreScanDoubleArrayStr( SAC_ND_PARAM_out( array_nt, double), char *stream)
SACarg *FibreScanDoubleArrayStr(SACarg *stream_in)
{
SAC_ND_DECL__DATA( ret_nt, double, )
SAC_ND_DECL__DESC( ret_nt, )
int i;
start_token = PARSE_DOUBLE_ARRAY;
yy_scan_string( stream);
FibreScanparse();
int SAC_ND_A_MIRROR_DIM( ret_nt) = dims;
SAC_ND_ALLOC__DESC( ret_nt, dims)
SAC_ND_SET__RC( ret_nt, 1)
for( i = 0; i < dims; i++) {
SAC_ND_A_DESC_SHAPE( ret_nt, i) = shape[i];
}
SAC_ND_A_DESC_SIZE( ret_nt) = size;
SAC_ND_A_FIELD( ret_nt) = doublearray;
SAC_ND_RET_out( array_nt, ret_nt)
}
char *stream = SACARGgetSharedData(SACARGgetType(stream_in), stream_in);
sac_int i;
start_token = PARSE_DOUBLE_ARRAY;
yy_scan_string(stream);
FibreScanparse();

#undef array_nt
#undef ret_nt
return SACARGcreateFromPointer(SACTYPE__MAIN__double, doublearray, dims, shp);
}
65 changes: 21 additions & 44 deletions src/stdio/src/FibreIO/ScanFltArr.c
Original file line number Diff line number Diff line change
Expand Up @@ -6,52 +6,29 @@
#include "FibreScan.h"
#include "FibreScan.tab.h"


#define array_nt (array, T_OLD((AUD, (NHD, (NUQ, )))))
#define ret_nt (ret, T_OLD((AUD, (NHD, (NUQ, )))))

void FibreScanFloatArray( SAC_ND_PARAM_out( array_nt, float), FILE *stream)
SACarg *FibreScanFloatArray(FILE *stream)
{
SAC_ND_DECL__DATA( ret_nt, float, )
SAC_ND_DECL__DESC( ret_nt, )
int i;
start_token = PARSE_FLOAT_ARRAY;
doScan( stream);
int SAC_ND_A_MIRROR_DIM( ret_nt) = dims;
SAC_ND_ALLOC__DESC( ret_nt, dims)
SAC_ND_SET__RC( ret_nt, 1)
for( i = 0; i < dims; i++) {
SAC_ND_A_DESC_SHAPE( ret_nt, i) = shape[i];
}
SAC_ND_A_DESC_SIZE( ret_nt) = size;
SAC_ND_A_FIELD( ret_nt) = floatarray;
SAC_ND_RET_out( array_nt, ret_nt)
/**
* Global variables created by the .y file:
* float *floatarray
* sac_int *shp
* sac_int dims
* sac_int size
**/
sac_int i;
start_token = PARSE_FLOAT_ARRAY;
doScan(stream);

return SACARGcreateFromPointer(SACTYPE__MAIN__float, floatarray, dims, shp);
}

#undef array_nt
#undef ret_nt

#define array_nt (array, T_OLD((AUD, (NHD, (NUQ, )))))
#define ret_nt (ret, T_OLD((AUD, (NHD, (NUQ, )))))

void FibreScanFloatArrayStr( SAC_ND_PARAM_out( array_nt, float), char *stream)
SACarg *FibreScanFloatArrayStr(SACarg *stream_in)
{
SAC_ND_DECL__DATA( ret_nt, float, )
SAC_ND_DECL__DESC( ret_nt, )
int i;
start_token = PARSE_FLOAT_ARRAY;
yy_scan_string( stream);
FibreScanparse();
int SAC_ND_A_MIRROR_DIM( ret_nt) = dims;
SAC_ND_ALLOC__DESC( ret_nt, dims)
SAC_ND_SET__RC( ret_nt, 1)
for( i = 0; i < dims; i++) {
SAC_ND_A_DESC_SHAPE( ret_nt, i) = shape[i];
}
SAC_ND_A_DESC_SIZE( ret_nt) = size;
SAC_ND_A_FIELD( ret_nt) = floatarray;
SAC_ND_RET_out( array_nt, ret_nt)
}
char *stream = SACARGgetSharedData(SACARGgetType(stream_in), stream_in);
sac_int i;
start_token = PARSE_FLOAT_ARRAY;
yy_scan_string(stream);
FibreScanparse();

#undef array_nt
#undef ret_nt
return SACARGcreateFromPointer(SACTYPE__MAIN__float, floatarray, dims, shp);
}
66 changes: 21 additions & 45 deletions src/stdio/src/FibreIO/ScanIntArr.c
Original file line number Diff line number Diff line change
Expand Up @@ -6,53 +6,29 @@
#include "FibreScan.h"
#include "FibreScan.tab.h"


#define array_nt (array, T_OLD((AUD, (NHD, (NUQ, )))))
#define ret_nt (ret, T_OLD((AUD, (NHD, (NUQ, )))))

void FibreScanIntArray( SAC_ND_PARAM_out( array_nt, int), FILE *stream)
SACarg *FibreScanIntArray(FILE *stream)
{
SAC_ND_DECL__DATA( ret_nt, int, )
SAC_ND_DECL__DESC( ret_nt, )
int i;
start_token = PARSE_INT_ARRAY;
doScan( stream);
int SAC_ND_A_MIRROR_DIM( ret_nt) = dims;
SAC_ND_ALLOC__DESC( ret_nt, dims)
SAC_ND_SET__RC( ret_nt, 1)
for( i = 0; i < dims; i++) {
SAC_ND_A_DESC_SHAPE( ret_nt, i) = shape[i];
}
SAC_ND_A_DESC_SIZE( ret_nt) = size;
SAC_ND_A_FIELD( ret_nt) = intarray;
SAC_ND_RET_out( array_nt, ret_nt)
/**
* Global variables created by the .y file:
* sac_int *intarray
* sac_int *shp
* sac_int dims
* sac_int size
**/
sac_int i;
start_token = PARSE_INT_ARRAY;
doScan(stream);

return SACARGcreateFromPointer(SACTYPE__MAIN__int, intarray, dims, shp);
}

#undef array_nt
#undef ret_nt

#define array_nt (array, T_OLD((AUD, (NHD, (NUQ, )))))
#define ret_nt (ret, T_OLD((AUD, (NHD, (NUQ, )))))

void FibreScanIntArrayStr( SAC_ND_PARAM_out( array_nt, int), char *stream)
SACarg *FibreScanIntArrayStr(SACarg *stream_in)
{
SAC_ND_DECL__DATA( ret_nt, int, )
SAC_ND_DECL__DESC( ret_nt, )
int i;
start_token = PARSE_INT_ARRAY;
yy_scan_string( stream);
FibreScanparse();
int SAC_ND_A_MIRROR_DIM( ret_nt) = dims;
SAC_ND_ALLOC__DESC( ret_nt, dims)
SAC_ND_SET__RC( ret_nt, 1)
for( i = 0; i < dims; i++) {
SAC_ND_A_DESC_SHAPE( ret_nt, i) = shape[i];
}
SAC_ND_A_DESC_SIZE( ret_nt) = size;
SAC_ND_A_FIELD( ret_nt) = intarray;
SAC_ND_RET_out( array_nt, ret_nt)
}

#undef array_nt
#undef ret_nt
char *stream = SACARGgetSharedData(SACARGgetType(stream_in), stream_in);
sac_int i;
start_token = PARSE_INT_ARRAY;
yy_scan_string(stream);
FibreScanparse();

return SACARGcreateFromPointer(SACTYPE__MAIN__int, intarray, dims, shp);
}
4 changes: 0 additions & 4 deletions src/stdio/src/FibreIO/ScanString.c
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,9 @@
#include "FibreScan.h"
#include "FibreScan.tab.h"


char *FibreScanString( FILE *stream)
{
start_token = PARSE_STRING;
doScan( stream);
return( stringval);
}



Loading
Loading