aboutsummaryrefslogtreecommitdiff
path: root/main
diff options
context:
space:
mode:
authorjohnvg2010-09-27 15:16:53 +0000
committerjohnvg2010-09-27 15:16:53 +0000
commitda15b7bc1f9c095c1f9f73d0ced862a74101c468 (patch)
tree655169c7a37694cc82cb94c5141269945661b5f9 /main
parentfix copy of case expression which is a (diff)
fix for 64 bit linux (does not fix 64 bit windows)
git-svn-id: https://svn.cs.ru.nl/repos/clean-compiler/trunk@1799 1f8540f1-abd5-4d5b-9d24-4c5ce8603e2d
Diffstat (limited to 'main')
-rw-r--r--main/Unix/Clean.h14
1 files changed, 6 insertions, 8 deletions
diff --git a/main/Unix/Clean.h b/main/Unix/Clean.h
index 1508c1b..8bc1118 100644
--- a/main/Unix/Clean.h
+++ b/main/Unix/Clean.h
@@ -5,24 +5,22 @@ typedef struct clean_string *CleanString;
/* a string in Clean is:
struct clean_string {
- int clean_string_length;
+ unsigned long clean_string_length;
char clean_string_characters[clean_string_length];
};
The string does not end with a '\0' !
*/
-/* CleanStringLength(clean_string) returns length of the clean_string in characters */
-#define CleanStringLength(clean_string) (*(unsigned int *)(clean_string))
+/* CleanStringLength(clean_string) returns the length of the clean_string in characters */
+#define CleanStringLength(clean_string) (*(unsigned long *)(clean_string))
/* CleanStringCharacters(clean_string) returns a pointer to the characters of the clean_string */
-#define CleanStringCharacters(clean_string) ((char*)(1+(unsigned int *)(clean_string)))
+#define CleanStringCharacters(clean_string) ((char*)(1+(unsigned long *)(clean_string)))
/* CleanStringSizeInts(string_length) return size of CleanString in integers */
-#define CleanStringSizeInts(string_length) (1+(((unsigned int)(string_length)+3)>>2))
+#define CleanStringSizeInts(string_length) (1+(((unsigned long)(string_length)+(sizeof(unsigned long)-1))>>(1+(sizeof(unsigned long)>>2))))
/* CleanStringVariable(clean_string,string_length) defines variable clean_string with length string_length,
before using the clean_string variable, cast to CleanString, except for the macros above */
-#define CleanStringVariable(clean_string,string_length) unsigned int clean_string[CleanStringSizeInts(string_length)]
+#define CleanStringVariable(clean_string,string_length) unsigned long clean_string[CleanStringSizeInts(string_length)]
-/* CleanStringSizeBytes(string_length) return size of CleanString in bytes */
-#define CleanStringSizeBytes(string_length) (4+(((unsigned int)(string_length)+3) & -4))