X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2FsfmP.h;h=978a3e129d510387d1139e617c9f63e59e020790;hb=1f053e35b27208cad9bec322c67ba4ef022c1dc1;hp=6734087e197ff935a73f4b7275fe07b886b7d9c4;hpb=b321086267ad1014dc5d09886396cde30f094437;p=pspp-builds.git diff --git a/src/sfmP.h b/src/sfmP.h index 6734087e..978a3e12 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,13 +27,48 @@ #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. */ +#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; /* 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. */ + 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. */ @@ -54,7 +89,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. */ };