|
@@ -0,0 +1,36 @@
|
|
|
+include "io.alh"
|
|
|
+include "primitives.alh"
|
|
|
+
|
|
|
+// Placeholder for internal functions
|
|
|
+Element function __input()
|
|
|
+Void function __output(value : Element)
|
|
|
+
|
|
|
+Element function input():
|
|
|
+ while (bool_not(has_input())):
|
|
|
+ interruptable_sleep(0.5)
|
|
|
+
|
|
|
+ Element inp
|
|
|
+ inp = __input()
|
|
|
+ return inp!
|
|
|
+
|
|
|
+Void function output(value : Element):
|
|
|
+ __output(value)
|
|
|
+ return!
|
|
|
+
|
|
|
+Element function input_timeout(timeout : Float):
|
|
|
+ Float start
|
|
|
+ start = time()
|
|
|
+
|
|
|
+ // Do this first, such that we will always get at least the chance to push input in
|
|
|
+ if (has_input()):
|
|
|
+ return input()!
|
|
|
+
|
|
|
+ // Now just try this again from time to time
|
|
|
+ while (time() - start < timeout):
|
|
|
+ if (has_input()):
|
|
|
+ return input()!
|
|
|
+ else:
|
|
|
+ // Nothing to do, we should yield...
|
|
|
+ interruptable_sleep(0.1)
|
|
|
+
|
|
|
+ return read_root()!
|