aboutsummaryrefslogtreecommitdiff
path: root/main/Unix
diff options
context:
space:
mode:
authorronny2002-07-02 17:54:49 +0000
committerronny2002-07-02 17:54:49 +0000
commit110279dd7b798bb76561e77addd70c95937cd4dd (patch)
treec217cacaa9e400aa1d071274e01bd81861ada774 /main/Unix
parentMake all object files in the Unix directory. (diff)
Added Clean.h.
git-svn-id: https://svn.cs.ru.nl/repos/clean-compiler/trunk@1135 1f8540f1-abd5-4d5b-9d24-4c5ce8603e2d
Diffstat (limited to 'main/Unix')
-rw-r--r--main/Unix/Clean.h28
1 files changed, 28 insertions, 0 deletions
diff --git a/main/Unix/Clean.h b/main/Unix/Clean.h
new file mode 100644
index 0000000..1508c1b
--- /dev/null
+++ b/main/Unix/Clean.h
@@ -0,0 +1,28 @@
+
+#define Clean(a)
+
+typedef struct clean_string *CleanString;
+
+/* a string in Clean is:
+ struct clean_string {
+ int 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))
+
+/* CleanStringCharacters(clean_string) returns a pointer to the characters of the clean_string */
+#define CleanStringCharacters(clean_string) ((char*)(1+(unsigned int *)(clean_string)))
+
+/* CleanStringSizeInts(string_length) return size of CleanString in integers */
+#define CleanStringSizeInts(string_length) (1+(((unsigned int)(string_length)+3)>>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)]
+
+/* CleanStringSizeBytes(string_length) return size of CleanString in bytes */
+#define CleanStringSizeBytes(string_length) (4+(((unsigned int)(string_length)+3) & -4))