summaryrefslogtreecommitdiffstats
path: root/debian/htdig/htdig-3.2.0b6/htsearch/WeightWord.cc
diff options
context:
space:
mode:
Diffstat (limited to 'debian/htdig/htdig-3.2.0b6/htsearch/WeightWord.cc')
-rw-r--r--debian/htdig/htdig-3.2.0b6/htsearch/WeightWord.cc146
1 files changed, 146 insertions, 0 deletions
diff --git a/debian/htdig/htdig-3.2.0b6/htsearch/WeightWord.cc b/debian/htdig/htdig-3.2.0b6/htsearch/WeightWord.cc
new file mode 100644
index 00000000..49eb2e03
--- /dev/null
+++ b/debian/htdig/htdig-3.2.0b6/htsearch/WeightWord.cc
@@ -0,0 +1,146 @@
+//
+// WeightWord.cc
+//
+// WeightWord: Contains the information necessary for a particular search word
+// including the resulting weight (scaling factor) and
+// whether the word should be hidden (ignored).
+//
+// Part of the ht://Dig package <http://www.htdig.org/>
+// Copyright (c) 1995-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: WeightWord.cc,v 1.10 2004/05/28 13:15:24 lha Exp $
+//
+
+#ifdef HAVE_CONFIG_H
+#include "htconfig.h"
+#endif /* HAVE_CONFIG_H */
+
+#include "WeightWord.h"
+
+#ifdef HAVE_STD
+#include <fstream>
+#ifdef HAVE_NAMESPACES
+using namespace std;
+#endif
+#else
+#include <fstream.h>
+#endif /* HAVE_STD */
+
+//***************************************************************************
+// WeightWord::WeightWord()
+//
+WeightWord::WeightWord()
+{
+ weight = 1;
+ records = 0;
+ isExact = 0;
+ isHidden = 0;
+ isIgnore = 0;
+
+ flags = FLAGS_MATCH_ONE;
+}
+
+
+//***************************************************************************
+// WeightWord::WeightWord(WeightWord *ww)
+//
+WeightWord::WeightWord(WeightWord *ww)
+{
+ weight = ww->weight;
+ records = ww->records;
+ isExact = ww->isExact;
+ isHidden = ww->isHidden;
+ flags = ww->flags;
+ word = ww->word;
+ isIgnore = 0;
+}
+
+
+//***************************************************************************
+// WeightWord::WeightWord(char *word, double weight)
+//
+WeightWord::WeightWord(char *word, double weight)
+{
+ records = 0;
+ isExact = 0;
+ isHidden = 0;
+ isIgnore = 0;
+
+ // allow a match with any field
+ flags = FLAGS_MATCH_ONE;
+
+ set(word);
+ this->weight = weight;
+}
+
+//***************************************************************************
+// WeightWord::WeightWord(char *word, double weight, unsigned int f)
+//
+WeightWord::WeightWord(char *word, double weight, unsigned int f)
+{
+ records = 0;
+
+ flags = f;
+ // if no fields specified, allow a match with any field
+ if (!(flags & FLAGS_MATCH_ONE))
+ flags ^= FLAGS_MATCH_ONE;
+
+ // ideally, these flags should all just be stored in a uint...
+ isExact = ((flags & FLAG_EXACT) != 0);
+ isHidden = ((flags & FLAG_HIDDEN) != 0);
+ isIgnore = ((flags & FLAG_IGNORE) != 0);
+
+ set(word);
+ this->weight = weight;
+}
+
+
+//***************************************************************************
+// WeightWord::~WeightWord()
+//
+WeightWord::~WeightWord()
+{
+}
+
+
+//***************************************************************************
+// void WeightWord::set(char *word)
+//
+void WeightWord::set(char *word)
+{
+#if 0
+ isExact = 0;
+ isHidden = 0;
+ while (strchr(word, ':'))
+ {
+ //
+ // This word contains modifiers.
+ //
+ if (mystrncasecmp(word, "exact:", 6) == 0)
+ {
+ word += 6;
+ isExact = 1;
+ }
+ else if (mystrncasecmp(word, "hidden:", 7) == 0)
+ {
+ word += 7;
+ isHidden = 1;
+ }
+ else
+ {
+ //
+ // There is a ':' but not a valid attribute. It must be part
+ // of the word we are searching for.
+ //
+ break;
+ }
+
+ }
+#endif
+ this->word = word;
+ this->word.lowercase();
+}
+