make Control.Monad.Instances compilable by nhc98
[haskell-directory.git] / cbits / fpstring.c
index 3d32083..d42ebe5 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2003 David Roundy
- * Copyright (c) 2005-2006 Don Stewart
+ * Copyright (c) 2005-6 Don Stewart
  *
  * All rights reserved.
  *
  * SUCH DAMAGE.
  */
 
-#include <stdlib.h>
+#include "fpstring.h"
 
 /* copy a string in reverse */
-void reverse(unsigned char *dest, unsigned char *from, int len)
-{
+void fps_reverse(unsigned char *dest, unsigned char *from, int len) {
     unsigned char *p, *q;
     p = from + len - 1;
     q = dest;
@@ -42,21 +41,9 @@ void reverse(unsigned char *dest, unsigned char *from, int len)
         *q++ = *p--;
 }
 
-/* compare bytes ascii-wise */
-static int cmp(const void *p, const void *q) {
-    return (*(unsigned char *)p - *(unsigned char *)q);
-}
-
-/* quicksort wrapper */
-void my_qsort(unsigned char *base, size_t size)
-{
-    qsort(base, size, sizeof(char), cmp);
-}
-
 /* duplicate a string, interspersing the character through the elements
    of the duplicated string */
-void intersperse(unsigned char *dest, unsigned char *from, int len, char c)
-{
+void fps_intersperse(unsigned char *dest, unsigned char *from, int len, char c) {
     unsigned char *p, *q;
     p = from;
     q = dest;
@@ -68,8 +55,7 @@ void intersperse(unsigned char *dest, unsigned char *from, int len, char c)
 }
 
 /* find maximum char in a packed string */
-unsigned char maximum(unsigned char *p, int len)
-{
+unsigned char fps_maximum(unsigned char *p, int len) {
     unsigned char *q, c = *p;
     for (q = p; q < p + len; q++)
         if (*q > c)
@@ -78,11 +64,19 @@ unsigned char maximum(unsigned char *p, int len)
 }
 
 /* find minimum char in a packed string */
-unsigned char minimum(unsigned char *p, int len)
-{
+unsigned char fps_minimum(unsigned char *p, int len) {
     unsigned char *q, c = *p;
     for (q = p; q < p + len; q++)
         if (*q < c)
             c = *q;
     return c;
 }
+
+/* count the number of occurences of a char in a string */
+int fps_count(unsigned char *p, int len, unsigned char w) {
+    int c;
+    for (c = 0; len--; ++p)
+        if (*p == w)
+            ++c;
+    return c;
+}