X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flibpspp%2Ffloat-format.c;h=03d8c99062d7af3be1e20bc1af7e4d509d9c2eef;hb=362a2976b89fe477cacf235d5f34a61ecfcdcc01;hp=50a4eae6005b071e1d61320621aa424614fd2654;hpb=c3bd77adba5746aae895e6a354aada4e694c0e3f;p=pspp diff --git a/src/libpspp/float-format.c b/src/libpspp/float-format.c index 50a4eae600..03d8c99062 100644 --- a/src/libpspp/float-format.c +++ b/src/libpspp/float-format.c @@ -1,5 +1,5 @@ /* PSPP - a program for statistical analysis. - Copyright (C) 2006 Free Software Foundation, Inc. + Copyright (C) 2006, 2011 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -16,18 +16,17 @@ #include -#include +#include "libpspp/float-format.h" +#include #include #include #include +#include -#include -#include -#include +#include "libpspp/assertion.h" +#include "libpspp/integer-format.h" -#include "error.h" -#include /* Neutral intermediate representation for binary floating-point numbers. */ struct fp @@ -69,11 +68,9 @@ struct fp static void extract_number (enum float_format, const void *, struct fp *); static void assemble_number (enum float_format, struct fp *, void *); -static inline uint16_t get_uint16 (const void *); static inline uint32_t get_uint32 (const void *); static inline uint64_t get_uint64 (const void *); -static inline void put_uint16 (uint16_t, void *); static inline void put_uint32 (uint32_t, void *); static inline void put_uint64 (uint64_t, void *); @@ -216,16 +213,6 @@ get_bits (uint64_t x, int ofs, int cnt) return (x >> ofs) & ((UINT64_C(1) << cnt) - 1); } -/* Returns the 16-bit unsigned integer at P, - which need not be aligned. */ -static inline uint16_t -get_uint16 (const void *p) -{ - uint16_t x; - memcpy (&x, p, sizeof x); - return x; -} - /* Returns the 32-bit unsigned integer at P, which need not be aligned. */ static inline uint32_t @@ -246,14 +233,6 @@ get_uint64 (const void *p) return x; } -/* Stores 16-bit unsigned integer X at P, - which need not be aligned. */ -static inline void -put_uint16 (uint16_t x, void *p) -{ - memcpy (p, &x, sizeof x); -} - /* Stores 32-bit unsigned integer X at P, which need not be aligned. */ static inline void @@ -270,30 +249,6 @@ put_uint64 (uint64_t x, void *p) memcpy (p, &x, sizeof x); } -/* Returns NATIVE converted to a form that, when stored in - memory, will be in little-endian byte order. */ -static inline uint16_t -native_to_le16 (uint16_t native) -{ - return INTEGER_NATIVE == INTEGER_LSB_FIRST ? native : bswap_16 (native); -} - -/* Returns NATIVE converted to a form that, when stored in - memory, will be in big-endian byte order. */ -static inline uint16_t -native_to_be16 (uint16_t native) -{ - return INTEGER_NATIVE == INTEGER_MSB_FIRST ? native : bswap_16 (native); -} - -/* Returns NATIVE converted to a form that, when stored in - memory, will be in VAX-endian byte order. */ -static inline uint16_t -native_to_vax16 (uint16_t native) -{ - return native_to_le16 (native); -} - /* Returns NATIVE converted to a form that, when stored in memory, will be in little-endian byte order. */ static inline uint32_t @@ -346,30 +301,6 @@ native_to_vax64 (uint64_t native) ((native & UINT64_C(0x0000000000ff00ff)) << 40)); } -/* Given LE, obtained from memory in little-endian format, - returns its value. */ -static inline uint16_t -le_to_native16 (uint16_t le) -{ - return INTEGER_NATIVE == INTEGER_LSB_FIRST ? le : bswap_16 (le); -} - -/* Given BE, obtained from memory in big-endian format, returns - its value. */ -static inline uint16_t -be_to_native16 (uint16_t be) -{ - return INTEGER_NATIVE == INTEGER_MSB_FIRST ? be : bswap_16 (be); -} - -/* Given VAX, obtained from memory in VAX-endian format, returns - its value. */ -static inline uint16_t -vax_to_native16 (uint16_t vax) -{ - return le_to_native16 (vax); -} - /* Given LE, obtained from memory in little-endian format, returns its value. */ static inline uint32_t @@ -695,7 +626,7 @@ assemble_number (enum float_format type, struct fp *fp, void *number) break; case FLOAT_Z_SHORT: - put_uint64 (native_to_be32 (assemble_z (fp, 7, 24)), number); + put_uint32 (native_to_be32 (assemble_z (fp, 7, 24)), number); break; case FLOAT_Z_LONG: put_uint64 (native_to_be64 (assemble_z (fp, 7, 56)), number);