diff options
Diffstat (limited to 'debian/htdig/htdig-3.2.0b6/htword/WordReference.h')
-rw-r--r-- | debian/htdig/htdig-3.2.0b6/htword/WordReference.h | 263 |
1 files changed, 263 insertions, 0 deletions
diff --git a/debian/htdig/htdig-3.2.0b6/htword/WordReference.h b/debian/htdig/htdig-3.2.0b6/htword/WordReference.h new file mode 100644 index 00000000..b6e1215d --- /dev/null +++ b/debian/htdig/htdig-3.2.0b6/htword/WordReference.h @@ -0,0 +1,263 @@ +// +// WordReference.h +// +// NAME +// inverted index occurrence. +// +// SYNOPSIS +// +// #include <WordReference.h> +// +// WordReference wordRef("word"); +// WordReference wordRef(); +// WordReference wordRef(WordKey("key <DEF> 1 2"), WordRecord()); +// +// WordKey& key = wordRef.Key(); +// WordKey& record = wordRef.Record(); +// +// wordRef.Clear(); +// +// DESCRIPTION +// +// A <i>WordReference</i> object is an agregate of a <i>WordKey</i> object +// and a <i>WordRecord</i> object. +// +// ASCII FORMAT +// +// The ASCII description is a string with fields separated by tabs or +// white space. It is made of the ASCII description of a +// <i>WordKey</i> object immediately followed by the ASCII +// description of a <i>WordRecord</i> object. See the corresponding +// manual pages for more information. +// +// END +// +// 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: WordReference.h,v 1.7 2004/05/28 13:15:28 lha Exp $ +// +#ifndef _WordReference_h_ +#define _WordReference_h_ + +#ifndef SWIG +#include "htString.h" +#include "WordRecord.h" +#include "WordKey.h" +#endif /* SWIG */ + +// +// Describe the WordKey/WordRecord pair +// +class WordReference : public Object +{ + public: + // + // Construction/Destruction + //- + // Constructor. Build an object with empty key and empty record. + // + WordReference() {} +#ifndef SWIG + //- + // Constructor. Build an object from disk representation of <b>key</b> + // and <b>record</b>. + // + WordReference(const String& key0, const String& record0) { + Unpack(key0, record0); + } + //- + // Constructor. Build an object with key word set to <b>word</b> + // and otherwise empty and empty record. + // + WordReference(const String& word) { + Clear(); + key.SetWord(word); + } +#endif /* SWIG */ + ~WordReference() {} + + //- + // Reset to empty key and record + // + void Clear() { key.Clear(); record.Clear(); } + + // + // Accessors + //- + // Return the key object. + // + WordKey& Key() { return key; } +#ifndef SWIG + //- + // Return the key object as const. + // + const WordKey& Key() const { return key; } +#endif /* SWIG */ + //- + // Return the record object. + // + WordRecord& Record() { return record; } +#ifndef SWIG + //- + // Return the record object as const. + // + const WordRecord& Record() const { return record; } +#endif /* SWIG */ + + // + // Conversion + // +#ifdef SWIG +%name(SetKey) +#endif /* SWIG */ + //- + // Copy <b>arg</b> in the key part of the object. + // + void Key(const WordKey& arg) { key = arg; } +#ifndef SWIG + //- + // Set key structure from disk storage format as found in + // <b>packed</b> string. + // Return OK if successfull, NOTOK otherwise. + // + int KeyUnpack(const String& packed) { return key.Unpack(packed); } + // + //- + // Convert key object into disk storage format as found in + // return the resulting string. + // + String KeyPack() const { String tmp; key.Pack(tmp); return tmp; } + //- + // Convert key object into disk storage format as found in + // and place the result in <b>packed</b> string. + // Return OK if successfull, NOTOK otherwise. + // + int KeyPack(String& packed) const { return key.Pack(packed); } +#endif /* SWIG */ + +#ifdef SWIG +%name(SetRecord) +#endif /* SWIG */ + //- + // Copy <b>arg</b> in the record part of the object. + // + void Record(const WordRecord& arg) { record = arg; } +#ifndef SWIG + //- + // Set record structure from disk storage format as found in + // <b>packed</b> string. + // Return OK if successfull, NOTOK otherwise. + // + int RecordUnpack(const String& packed) { return record.Unpack(packed); } + //- + // Convert record object into disk storage format as found in + // return the resulting string. + // + String RecordPack() const { String tmp; record.Pack(tmp); return tmp; } + //- + // Convert record object into disk storage format as found in + // and place the result in <b>packed</b> string. + // Return OK if successfull, NOTOK otherwise. + // + int RecordPack(String& packed) const { return record.Pack(packed); } + + //- + // Short hand for KeyPack(<b>ckey</b>) RecordPack(<b>crecord</b>). + // + inline int Pack(String& ckey, String& crecord) const { + if(key.Pack(ckey) == NOTOK) return NOTOK; + if(record.Pack(crecord) == NOTOK) return NOTOK; + return OK; + } + //- + // Short hand for KeyUnpack(<b>ckey</b>) RecordUnpack(<b>crecord</b>). + // + int Unpack(const String& ckey, const String& crecord) { + if(key.Unpack(ckey) == NOTOK) return NOTOK; + if(record.Unpack(crecord) == NOTOK) return NOTOK; + return OK; + } +#endif /* SWIG */ + + // + // Transformations + // + //- + // Merge key with other.Key() using the <i>WordKey::Merge</i> method: + // key.Merge(other.Key()). + // See the corresponding manual page for details. Copy other.record + // into the record part of the object. + // + int Merge(const WordReference& other); +#ifndef SWIG + //- + // Copy <b>master</b> before merging with <b>master.</b>Merge(<b>slave</b>) + // and return the copy. Prevents alteration of <b>master</b>. + // + static WordReference Merge(const WordReference& master, const WordReference& slave) { + WordReference tmp(master); + tmp.Merge(slave); + return tmp; + } +#endif /* SWIG */ + +#ifndef SWIG + int compare(Object *to) { String word(((WordReference *) to)->key.GetWord()); return key.GetWord().nocase_compare(word); } +#endif /* SWIG */ + +#ifndef SWIG + // + // Set the whole structure from ASCII string description + // + //- + // Set the whole structure from ASCII string in <b>bufferin</b>. + // See <i>ASCII FORMAT</i> section. + // Return OK if successfull, NOTOK otherwise. + // + int Set(const String& bufferin); + int SetList(StringList& fields); + //- + // Convert the whole structure to an ASCII string description + // in <b>bufferout.</b> + // See <i>ASCII FORMAT</i> section. + // Return OK if successfull, NOTOK otherwise. + // + int Get(String& bufferout) const; + //- + // Convert the whole structure to an ASCII string description + // and return it. + // See <i>ASCII FORMAT</i> section. + // + String Get() const; +#endif /* SWIG */ + + // + // Debuging + // +#ifndef SWIG + //- + // Print object in ASCII form on <b>f</b> (uses <i>Get</i> method). + // See <i>ASCII FORMAT</i> section. + // + int Write(FILE* f) const; +#endif /* SWIG */ + //- + // Print object in ASCII form on <b>stdout</b> (uses <i>Get</i> method). + // See <i>ASCII FORMAT</i> section. + // + void Print() const; + + protected: + +#ifndef SWIG + WordKey key; + WordRecord record; +#endif /* SWIG */ +}; + +#endif /* _WordReference_h */ + |