aboutsummaryrefslogtreecommitdiff
path: root/sys/base/sort
diff options
context:
space:
mode:
Diffstat (limited to 'sys/base/sort')
-rw-r--r--sys/base/sort/double.c12
-rw-r--r--sys/base/sort/float.c12
-rw-r--r--sys/base/sort/int.c12
-rw-r--r--sys/base/sort/int16.c12
-rw-r--r--sys/base/sort/int32.c12
-rw-r--r--sys/base/sort/int64.c12
-rw-r--r--sys/base/sort/int8.c12
-rw-r--r--sys/base/sort/internal.h5
-rw-r--r--sys/base/sort/rules.mk14
-rw-r--r--sys/base/sort/string.c12
-rw-r--r--sys/base/sort/uint.c12
-rw-r--r--sys/base/sort/uint16.c12
-rw-r--r--sys/base/sort/uint32.c12
-rw-r--r--sys/base/sort/uint64.c12
-rw-r--r--sys/base/sort/uint8.c12
15 files changed, 175 insertions, 0 deletions
diff --git a/sys/base/sort/double.c b/sys/base/sort/double.c
new file mode 100644
index 0000000..c3feac2
--- /dev/null
+++ b/sys/base/sort/double.c
@@ -0,0 +1,12 @@
+#include "internal.h"
+
+void
+sort·double(uintptr sz, double arr[])
+{
+ double tmp;
+#define LESS(i, j) (arr[i] < arr[j])
+#define SWAP(i, j) (tmp = arr[i], arr[i] = arr[j], arr[j] = tmp)
+ QSORT(sz, LESS, SWAP);
+#undef SWAP
+#undef LESS
+}
diff --git a/sys/base/sort/float.c b/sys/base/sort/float.c
new file mode 100644
index 0000000..57bd482
--- /dev/null
+++ b/sys/base/sort/float.c
@@ -0,0 +1,12 @@
+#include "internal.h"
+
+void
+sort·float(uintptr sz, float arr[])
+{
+ float tmp;
+#define LESS(i, j) (arr[i] < arr[j])
+#define SWAP(i, j) (tmp = arr[i], arr[i] = arr[j], arr[j] = tmp)
+ QSORT(sz, LESS, SWAP);
+#undef SWAP
+#undef LESS
+}
diff --git a/sys/base/sort/int.c b/sys/base/sort/int.c
new file mode 100644
index 0000000..33e1def
--- /dev/null
+++ b/sys/base/sort/int.c
@@ -0,0 +1,12 @@
+#include "internal.h"
+
+void
+sort·int(uintptr sz, int arr[])
+{
+ int tmp;
+#define LESS(i, j) (arr[i] < arr[j])
+#define SWAP(i, j) (tmp = arr[i], arr[i] = arr[j], arr[j] = tmp)
+ QSORT(sz, LESS, SWAP);
+#undef SWAP
+#undef LESS
+}
diff --git a/sys/base/sort/int16.c b/sys/base/sort/int16.c
new file mode 100644
index 0000000..072a3eb
--- /dev/null
+++ b/sys/base/sort/int16.c
@@ -0,0 +1,12 @@
+#include "internal.h"
+
+void
+sort·int16(uintptr sz, int16 arr[])
+{
+ int16 tmp;
+#define LESS(i, j) (arr[i] < arr[j])
+#define SWAP(i, j) (tmp = arr[i], arr[i] = arr[j], arr[j] = tmp)
+ QSORT(sz, LESS, SWAP);
+#undef SWAP
+#undef LESS
+}
diff --git a/sys/base/sort/int32.c b/sys/base/sort/int32.c
new file mode 100644
index 0000000..27b3b7b
--- /dev/null
+++ b/sys/base/sort/int32.c
@@ -0,0 +1,12 @@
+#include "internal.h"
+
+void
+sort·int32(uintptr sz, int32 arr[])
+{
+ int32 tmp;
+#define LESS(i, j) (arr[i] < arr[j])
+#define SWAP(i, j) (tmp = arr[i], arr[i] = arr[j], arr[j] = tmp)
+ QSORT(sz, LESS, SWAP);
+#undef SWAP
+#undef LESS
+}
diff --git a/sys/base/sort/int64.c b/sys/base/sort/int64.c
new file mode 100644
index 0000000..b3fa5d4
--- /dev/null
+++ b/sys/base/sort/int64.c
@@ -0,0 +1,12 @@
+#include "internal.h"
+
+void
+sort·int64(uintptr sz, int64 arr[])
+{
+ int64 tmp;
+#define LESS(i, j) (arr[i] < arr[j])
+#define SWAP(i, j) (tmp = arr[i], arr[i] = arr[j], arr[j] = tmp)
+ QSORT(sz, LESS, SWAP);
+#undef SWAP
+#undef LESS
+}
diff --git a/sys/base/sort/int8.c b/sys/base/sort/int8.c
new file mode 100644
index 0000000..5848e6e
--- /dev/null
+++ b/sys/base/sort/int8.c
@@ -0,0 +1,12 @@
+#include "internal.h"
+
+void
+sort·int8(uintptr sz, int8 arr[])
+{
+ int8 tmp;
+#define LESS(i, j) (arr[i] < arr[j])
+#define SWAP(i, j) (tmp = arr[i], arr[i] = arr[j], arr[j] = tmp)
+ QSORT(sz, LESS, SWAP);
+#undef SWAP
+#undef LESS
+}
diff --git a/sys/base/sort/internal.h b/sys/base/sort/internal.h
new file mode 100644
index 0000000..ac569de
--- /dev/null
+++ b/sys/base/sort/internal.h
@@ -0,0 +1,5 @@
+#pragma once
+
+#include <u.h>
+#include <base.h>
+#include <base/macro/qsort.h>
diff --git a/sys/base/sort/rules.mk b/sys/base/sort/rules.mk
new file mode 100644
index 0000000..780d6ea
--- /dev/null
+++ b/sys/base/sort/rules.mk
@@ -0,0 +1,14 @@
+SRCS_$(d)+=\
+ $(d)/sort/double.c\
+ $(d)/sort/float.c\
+ $(d)/sort/int.c\
+ $(d)/sort/int16.c\
+ $(d)/sort/int32.c\
+ $(d)/sort/int64.c\
+ $(d)/sort/int8.c\
+ $(d)/sort/string.c\
+ $(d)/sort/uint.c\
+ $(d)/sort/uint16.c\
+ $(d)/sort/uint32.c\
+ $(d)/sort/uint64.c\
+ $(d)/sort/uint8.c\
diff --git a/sys/base/sort/string.c b/sys/base/sort/string.c
new file mode 100644
index 0000000..b511efa
--- /dev/null
+++ b/sys/base/sort/string.c
@@ -0,0 +1,12 @@
+#include "internal.h"
+
+void
+sort·string(uintptr sz, byte* arr[])
+{
+ byte *tmp;
+#define LESS(i, j) (strcmp(arr[i], arr[j]) < 0)
+#define SWAP(i, j) (tmp = arr[i], arr[i] = arr[j], arr[j] = tmp)
+ QSORT(sz, LESS, SWAP);
+#undef SWAP
+#undef LESS
+}
diff --git a/sys/base/sort/uint.c b/sys/base/sort/uint.c
new file mode 100644
index 0000000..5b27330
--- /dev/null
+++ b/sys/base/sort/uint.c
@@ -0,0 +1,12 @@
+#include "internal.h"
+
+void
+sort·uint(uintptr sz, uint arr[])
+{
+ uint tmp;
+#define LESS(i, j) (arr[i] < arr[j])
+#define SWAP(i, j) (tmp = arr[i], arr[i] = arr[j], arr[j] = tmp)
+ QSORT(sz, LESS, SWAP);
+#undef SWAP
+#undef LESS
+}
diff --git a/sys/base/sort/uint16.c b/sys/base/sort/uint16.c
new file mode 100644
index 0000000..2b635b4
--- /dev/null
+++ b/sys/base/sort/uint16.c
@@ -0,0 +1,12 @@
+#include "internal.h"
+
+void
+sort·uint16(uintptr sz, uint16 arr[])
+{
+ uint16 tmp;
+#define LESS(i, j) (arr[i] < arr[j])
+#define SWAP(i, j) (tmp = arr[i], arr[i] = arr[j], arr[j] = tmp)
+ QSORT(sz, LESS, SWAP);
+#undef SWAP
+#undef LESS
+}
diff --git a/sys/base/sort/uint32.c b/sys/base/sort/uint32.c
new file mode 100644
index 0000000..99a58cf
--- /dev/null
+++ b/sys/base/sort/uint32.c
@@ -0,0 +1,12 @@
+#include "internal.h"
+
+void
+sort·uint32(uintptr sz, uint32 arr[])
+{
+ uint32 tmp;
+#define LESS(i, j) (arr[i] < arr[j])
+#define SWAP(i, j) (tmp = arr[i], arr[i] = arr[j], arr[j] = tmp)
+ QSORT(sz, LESS, SWAP);
+#undef SWAP
+#undef LESS
+}
diff --git a/sys/base/sort/uint64.c b/sys/base/sort/uint64.c
new file mode 100644
index 0000000..2769825
--- /dev/null
+++ b/sys/base/sort/uint64.c
@@ -0,0 +1,12 @@
+#include "internal.h"
+
+void
+sort·uint64(uintptr sz, uint64 arr[])
+{
+ uint64 tmp;
+#define LESS(i, j) (arr[i] < arr[j])
+#define SWAP(i, j) (tmp = arr[i], arr[i] = arr[j], arr[j] = tmp)
+ QSORT(sz, LESS, SWAP);
+#undef SWAP
+#undef LESS
+}
diff --git a/sys/base/sort/uint8.c b/sys/base/sort/uint8.c
new file mode 100644
index 0000000..ff02b3c
--- /dev/null
+++ b/sys/base/sort/uint8.c
@@ -0,0 +1,12 @@
+#include "internal.h"
+
+void
+sort·uint8(uintptr sz, uint8 arr[])
+{
+ uint8 tmp;
+#define LESS(i, j) (arr[i] < arr[j])
+#define SWAP(i, j) (tmp = arr[i], arr[i] = arr[j], arr[j] = tmp)
+ QSORT(sz, LESS, SWAP);
+#undef SWAP
+#undef LESS
+}