summaryrefslogtreecommitdiffstats
path: root/debian/htdig/htdig-3.2.0b6/htlib/StringList.cc
diff options
context:
space:
mode:
Diffstat (limited to 'debian/htdig/htdig-3.2.0b6/htlib/StringList.cc')
-rw-r--r--debian/htdig/htdig-3.2.0b6/htlib/StringList.cc192
1 files changed, 192 insertions, 0 deletions
diff --git a/debian/htdig/htdig-3.2.0b6/htlib/StringList.cc b/debian/htdig/htdig-3.2.0b6/htlib/StringList.cc
new file mode 100644
index 00000000..28e03a4c
--- /dev/null
+++ b/debian/htdig/htdig-3.2.0b6/htlib/StringList.cc
@@ -0,0 +1,192 @@
+//
+// StringList.cc
+//
+// StringList: Specialized List containing String objects.
+//
+// Part of the ht://Dig package <http://www.htdig.org/>
+// Copyright (c) 1999-2004 The ht://Dig Group
+// For copyright details, see the file COPYING in your distribution
+// or the GNU Library General Public License (LGPL) version 2 or later
+// <http://www.gnu.org/copyleft/lgpl.html>
+//
+// $Id: StringList.cc,v 1.14 2004/05/28 13:15:21 lha Exp $
+//
+
+#ifdef HAVE_CONFIG_H
+#include "htconfig.h"
+#endif /* HAVE_CONFIG_H */
+
+#include "StringList.h"
+#include "htString.h"
+#include "List.h"
+
+#include <stdlib.h>
+
+
+//*****************************************************************************
+// StringList::StringList()
+//
+StringList::StringList()
+{
+}
+
+//*****************************************************************************
+// int StringList::Create(const char *str, char *sep)
+//
+int StringList::Create(const char *str, const char *sep)
+{
+ String word;
+
+ while (str && *str)
+ {
+ if (strchr(sep, *str))
+ {
+ if (word.length())
+ {
+ List::Add(new String(word));
+ word = 0;
+ }
+ }
+ else
+ word << *str;
+ str++;
+ }
+
+ //
+ // Add the last word to the list
+ //
+ if (word.length())
+ List::Add(new String(word));
+ return Count();
+}
+
+
+//*****************************************************************************
+// int StringList::Create(const char *str, char sep)
+//
+int StringList::Create(const char *str, char sep)
+{
+ String word;
+
+ while (str && *str)
+ {
+ if (*str == sep)
+ {
+ if (word.length())
+ {
+ List::Add(new String(word));
+ word = 0;
+ }
+ }
+ else
+ word << *str;
+ str++;
+ }
+
+ //
+ // Add the last word to the list
+ //
+ if (word.length())
+ List::Add(new String(word));
+ return Count();
+}
+
+
+//*****************************************************************************
+// char *StringList::operator [] (int n)
+//
+char *StringList::operator [] (int n)
+{
+ String *str = (String *) Nth(n);
+ if (str)
+ return str->get();
+ else
+ return 0;
+}
+
+
+//*****************************************************************************
+// void StringList::Add(const char *str)
+//
+void StringList::Add(const char *str)
+{
+ List::Add(new String(str));
+}
+
+
+//*****************************************************************************
+// void StringList::Assign(const char *str, int pos)
+//
+void StringList::Assign(const char *str, int pos)
+{
+ List::Assign(new String(str), pos);
+}
+
+//*****************************************************************************
+// void StringList::Insert(const char *str, int pos)
+//
+void StringList::Insert(const char *str, int pos)
+{
+ List::Insert(new String(str), pos);
+}
+
+//*****************************************************************************
+// static int StringCompare(const void *a, const void *b)
+//
+static int StringCompare(const void *a, const void *b)
+{
+ String *sa, *sb;
+
+ sa = *((String **) a);
+ sb = *((String **) b);
+
+ return strcmp(sa->get(), sb->get());
+}
+
+
+//*****************************************************************************
+// void StringList::Sort(int direction)
+//
+void StringList::Sort(int)
+{
+ String **array = new String*[Count()];
+ int i;
+ int n = Count();
+
+ ListCursor cursor;
+
+ Start_Get(cursor);
+ Object *obj;
+ for(i = 0; i < n && (obj = Get_Next(cursor)); i++) {
+ array[i] = (String*)obj;
+ }
+
+ qsort((char *) array, (size_t) n, (size_t) sizeof(String *),
+ StringCompare);
+
+ Release();
+
+ for (i = 0; i < n; i++)
+ {
+ List::Add(array[i]);
+ }
+
+ delete array;
+}
+
+//*****************************************************************************
+// String StringList::Join(char sep) const
+//
+String StringList::Join(char sep) const
+{
+ String str;
+ int i;
+
+ for (i=0; i < number; i++)
+ {
+ if (str.length())
+ str.append(sep);
+ str.append(*((const String *) Nth(i)));
+ }
+ return str;
+}