about summary refs log tree commit diff
path: root/std/stdlib.pry
diff options
context:
space:
mode:
Diffstat (limited to 'std/stdlib.pry')
-rw-r--r--std/stdlib.pry83
1 files changed, 83 insertions, 0 deletions
diff --git a/std/stdlib.pry b/std/stdlib.pry
new file mode 100644
index 0000000..aecd4df
--- /dev/null
+++ b/std/stdlib.pry
@@ -0,0 +1,83 @@
+extern printf = (*i8, varargs) => void;
+extern exit = (i64) => void;
+
+let strcmp = (stra: *i8, strb: *i8) => bool {
+	let i = 0;
+	while true {
+		let ca = (*(stra + cast(*i8, i)));
+		let cb = (*(strb + cast(*i8, i)));
+
+		if ca == '\0' {
+			return cb == '\0';
+		};
+		
+		if cb == '\0' {
+			return ca == '\0';
+		};
+
+		if !(ca == cb) {
+			return false;
+		};
+
+		i = i + 1;
+	};
+
+	return true;
+};
+
+let isdigit = (c: i8) => bool {
+	if c >= '0' {
+		if c <= '9' {
+			return true;
+		};
+	};
+	return false;
+};
+
+let isalpha = (c: i8) => bool {
+	if c >= 'a' {
+		if c <= 'z' {
+			return true;
+		};
+	};
+	if c >= 'A' {
+		if c <= 'Z' {
+			return true;
+		};
+	};
+	return false;
+};
+
+let isalphanum = (c: i8) => bool {
+	if isalpha(c) {
+		return true;
+	};
+	if isdigit(c) {
+		return true;
+	};
+
+	return false;
+};
+
+let iswhitespace = (c: i8) => bool {
+	if c == ' ' {
+		return true;
+	};
+
+	if c >= '\t' {
+		if c <= '\r' {
+			return true;
+		};
+	};
+
+	return false;
+};
+
+let assert = (cond: bool) => void {
+	if !cond {
+		printf("ASSERTION FAILED\n");
+		exit(1);
+	};
+
+	return;
+};