aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormusil <tmusil@users.sourceforge.net>2012-09-06 16:01:18 +0000
committermusil <tmusil@users.sourceforge.net>2012-09-06 16:01:18 +0000
commit1bea477208d0966a035c0fc0a7187559d499b92f (patch)
tree8ea4996edb68c72365aae4a54eaf314e2eabbbaa
parent33dd6d603830640766aa1a5fe70137c856e2c145 (diff)
64 bit array access compatible
svn path=/trunk/externals/iemlib/; revision=16194
-rw-r--r--iemlib2/src/iemlib.h18
1 files changed, 17 insertions, 1 deletions
diff --git a/iemlib2/src/iemlib.h b/iemlib2/src/iemlib.h
index 973bfeb..8703127 100644
--- a/iemlib2/src/iemlib.h
+++ b/iemlib2/src/iemlib.h
@@ -1,12 +1,13 @@
/* For information on usage and redistribution, and for a DISCLAIMER OF ALL
* WARRANTIES, see the file, "LICENSE.txt," in this distribution.
-iemlib written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2007 */
+iemlib written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2012 */
#ifndef __IEMLIB_H__
#define __IEMLIB_H__
+#define IS_A_NULL(atom,index) ((atom+index)->a_type == A_NULL)
#define IS_A_POINTER(atom,index) ((atom+index)->a_type == A_POINTER)
#define IS_A_FLOAT(atom,index) ((atom+index)->a_type == A_FLOAT)
#define IS_A_SYMBOL(atom,index) ((atom+index)->a_type == A_SYMBOL)
@@ -15,6 +16,8 @@ iemlib written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2007 *
#define IS_A_SEMI(atom,index) ((atom+index)->a_type == A_SEMI)
#define IS_A_COMMA(atom,index) ((atom+index)->a_type == A_COMMA)
+#define SETNULL(atom) ((atom)->a_type = A_NULL)
+
/* now miller's code starts :
for 4 point interpolation
for lookup tables
@@ -99,4 +102,17 @@ union tabfudge_f
#endif
+/* on 64bit systems we cannot use garray_getfloatarray... */
+#if (defined __x86_64__) && (defined PD_MAJOR_VERSION && defined PD_MINOR_VERSION) && (PD_MAJOR_VERSION > 0 || PD_MINOR_VERSION >= 41)
+# define iemarray_t t_word
+# define iemarray_getarray garray_getfloatwords
+# define iemarray_getfloat(pointer, index) (pointer[index].w_float)
+# define iemarray_setfloat(pointer, index, fvalue) (pointer[index].w_float = fvalue)
+#else
+# define iemarray_t t_float
+# define iemarray_getarray garray_getfloatarray
+# define iemarray_getfloat(pointer, index) (pointer[index])
+# define iemarray_setfloat(pointer, index, fvalue) (pointer[index] = fvalue)
+#endif
+
#endif