diff options
author | IOhannes m zmölnig <zmoelnig@users.sourceforge.net> | 2005-07-01 12:07:50 +0000 |
---|---|---|
committer | IOhannes m zmölnig <zmoelnig@users.sourceforge.net> | 2005-07-01 12:07:50 +0000 |
commit | eb13b6f58fffc9e84968b64618dd5e4bcd972724 (patch) | |
tree | 5dcc117590dd1c08897762e6dea36b97c5027929 /src/iem16_table.h | |
parent | 9340768f6c7dea7cb7fe348f6fdf52db75ce9d82 (diff) |
added "read16" message for the table16
added some prelaminary tabfudge that should make casting faster (LATER)
svn path=/trunk/externals/iem16/; revision=3277
Diffstat (limited to 'src/iem16_table.h')
-rw-r--r-- | src/iem16_table.h | 68 |
1 files changed, 67 insertions, 1 deletions
diff --git a/src/iem16_table.h b/src/iem16_table.h index 4810312..98c98cd 100644 --- a/src/iem16_table.h +++ b/src/iem16_table.h @@ -17,11 +17,77 @@ typedef struct _table16 { t_symbol *x_tablename; long x_size; - t_iem16_16bit *x_table; // hold the data + t_iem16_16bit *x_table; /* hold the data */ int x_usedindsp; + t_canvas *x_canvas; /* for file i/o */ } t_table16; EXTERN int table16_getarray16(t_table16*x, int*size,t_iem16_16bit**vec); EXTERN void table16_usedindsp(t_table16*x); + + +#define UNITBIT32 1572864. /* 3*2^19; bit 32 has place value 1 */ + + /* machine-dependent definitions. These ifdefs really + should have been by CPU type and not by operating system! */ +#ifdef __irix__ + /* big-endian. Most significant byte is at low address in memory */ +#define HIOFFSET 0 /* word offset to find MSB */ +#define LOWOFFSET 1 /* word offset to find LSB */ +#define int32 long /* a data type that has 32 bits */ +#else +#ifdef __win32__ + /* little-endian; most significant byte is at highest address */ +#define HIOFFSET 1 +#define LOWOFFSET 0 +#define int32 long +#else +#ifdef __FreeBSD__ +#include <machine/endian.h> +#if BYTE_ORDER == LITTLE_ENDIAN +#define HIOFFSET 1 +#define LOWOFFSET 0 +#else +#define HIOFFSET 0 /* word offset to find MSB */ +#define LOWOFFSET 1 /* word offset to find LSB */ +#endif /* BYTE_ORDER */ +#include <sys/types.h> +#define int32 int32_t +#endif +#ifdef __linux__ + +#include <endian.h> + +#if !defined(__BYTE_ORDER) || !defined(__LITTLE_ENDIAN) +#error No byte order defined +#endif + +#if __BYTE_ORDER == __LITTLE_ENDIAN +#define HIOFFSET 1 +#define LOWOFFSET 0 +#else +#define HIOFFSET 0 /* word offset to find MSB */ +#define LOWOFFSET 1 /* word offset to find LSB */ +#endif /* __BYTE_ORDER */ + +#include <sys/types.h> +#define int32 int32_t + +#else +#ifdef __apple__ +#define HIOFFSET 0 /* word offset to find MSB */ +#define LOWOFFSET 1 /* word offset to find LSB */ +#define int32 int /* a data type that has 32 bits */ + +#endif /* MACOSX */ +#endif /* __linux__ */ +#endif /* MSW */ +#endif /* SGI */ + +union tabfudge +{ + double tf_d; + int32 tf_i[2]; +}; |