summaryrefslogtreecommitdiffstats
path: root/src/util/util.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/util/util.go')
-rw-r--r--src/util/util.go56
1 files changed, 56 insertions, 0 deletions
diff --git a/src/util/util.go b/src/util/util.go
new file mode 100644
index 00000000..14833c04
--- /dev/null
+++ b/src/util/util.go
@@ -0,0 +1,56 @@
+package util
+
+// #include <unistd.h>
+import "C"
+
+import (
+ "os"
+ "time"
+)
+
+// Max returns the largest integer
+func Max(first int, items ...int) int {
+ max := first
+ for _, item := range items {
+ if item > max {
+ max = item
+ }
+ }
+ return max
+}
+
+// Max32 returns the largest 32-bit integer
+func Max32(first int32, second int32) int32 {
+ if first > second {
+ return first
+ }
+ return second
+}
+
+// Constrain limits the given integer with the upper and lower bounds
+func Constrain(val int, min int, max int) int {
+ if val < min {
+ return min
+ }
+ if val > max {
+ return max
+ }
+ return val
+}
+
+// DurWithin limits the given time.Duration with the upper and lower bounds
+func DurWithin(
+ val time.Duration, min time.Duration, max time.Duration) time.Duration {
+ if val < min {
+ return min
+ }
+ if val > max {
+ return max
+ }
+ return val
+}
+
+// IsTty returns true is stdin is a terminal
+func IsTty() bool {
+ return int(C.isatty(C.int(os.Stdin.Fd()))) != 0
+}