X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2FsfmP.h;h=c127b85e71c5b366123e564df1fdb9c3cc74043b;hb=1f8dd363d6c20d07fcca14cb948018465fa5ed8b;hp=fd47a070e76882e9d13b22633ff0e339285ba01c;hpb=7b98b3a4f58f6dc5a8e9cbc188b627966d5e652d;p=pspp-builds.git diff --git a/src/sfmP.h b/src/sfmP.h index fd47a070..c127b85e 100644 --- a/src/sfmP.h +++ b/src/sfmP.h @@ -14,8 +14,8 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301, USA. */ /* PORTME: There might easily be alignment problems with some of these structures. */ @@ -27,21 +27,57 @@ #pragma option -a- /* Turn off alignment. */ #endif +/* Find 32-bit signed integer type. */ +#if SIZEOF_SHORT == 4 + #define int32 short +#elif SIZEOF_INT == 4 + #define int32 int +#elif SIZEOF_LONG == 4 + #define int32 long +#else + #error Which one of your basic types is 32-bit signed integer? +#endif + +/* Find 64-bit floating-point type. */ +#if SIZEOF_FLOAT == 8 + #define flt64 float + #define FLT64_MAX FLT_MAX +#elif SIZEOF_DOUBLE == 8 + #define flt64 double + #define FLT64_MAX DBL_MAX +#elif SIZEOF_LONG_DOUBLE == 8 + #define flt64 long double + #define FLT64_MAX LDBL_MAX +#else + #error Which one of your basic types is 64-bit floating point? + #define flt64 double + #define FLT64_MAX DBL_MAX +#endif + +/* Figure out SYSMIS value for flt64. */ +#include "magic.h" +#if SIZEOF_DOUBLE == 8 +#define second_lowest_flt64 second_lowest_value +#else +#error Must define second_lowest_flt64 for your architecture. +#endif + /* Record Type 1: General Information. */ struct sysfile_header { - char rec_type[4] P; /* Record-type code, "$FL2". */ - char prod_name[60] P; /* Product identification. */ - int32 layout_code P; /* 2. */ - int32 case_size P; /* Number of `value's per case. */ - int32 compressed P; /* 1=compressed, 0=not compressed. */ - int32 weight_index P; /* 1-based index of weighting var, or zero. */ - int32 ncases P; /* Number of cases, -1 if unknown. */ - flt64 bias P; /* Compression bias (100.0). */ - char creation_date[9] P; /* `dd mmm yy' creation date of file. */ - char creation_time[8] P; /* `hh:mm:ss' 24-hour creation time. */ - char file_label[64] P; /* File label. */ - char padding[3] P; /* Ignored padding. */ + char rec_type[4] P; /* 00: Record-type code, "$FL2". */ + char prod_name[60] P; /* 04: Product identification. */ + int32 layout_code P; /* 40: 2. */ + int32 case_size P; /* 44: Number of `value's per case. + Note: some systems set this to -1 */ + int32 compress P; /* 48: 1=compressed, 0=not compressed. */ + int32 weight_idx P; /* 4c: 1-based index of weighting var, or 0. */ + int32 case_cnt P; /* 50: Number of cases, -1 if unknown. */ + flt64 bias P; /* 54: Compression bias (100.0). */ + char creation_date[9] P; /* 5c: `dd mmm yy' creation date of file. */ + char creation_time[8] P; /* 65: `hh:mm:ss' 24-hour creation time. */ + char file_label[64] P; /* 6d: File label. */ + char padding[3] P; /* ad: Ignored padding. */ }; /* Record Type 2: Variable. */ @@ -54,7 +90,7 @@ struct sysfile_variable int32 n_missing_values P; /* Missing value code of -3,-2,0,1,2, or 3. */ int32 print P; /* Print format. */ int32 write P; /* Write format. */ - char name[8] P; /* Variable name. */ + char name[SHORT_NAME_LEN] P; /* Variable name. */ /* The rest of the structure varies. */ };