//
// DocumentRef.h
//
// DocumentRef: Reference to an indexed document. Keeps track of all
// information stored on the document, either by the dig
// or temporary search information.
//
// Part of the ht://Dig package
// 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
//
//
// $Id: DocumentRef.h,v 1.29 2004/05/28 13:15:12 lha Exp $
//
#ifndef _DocumentRef_h_
#define _DocumentRef_h_
#include "htString.h"
#include "List.h"
#include "HtWordList.h"
#include
enum ReferenceState
{
Reference_normal,
Reference_not_found,
Reference_noindex,
Reference_obsolete
};
class DocumentRef : public Object
{
public:
//
// Construction/Destruction
//
DocumentRef();
~DocumentRef();
//
// A DocumentRef can read itself from a character string and
// convert itself into a character string
//
void Serialize(String &s);
void Deserialize(String &s);
//
// Access to the members
//
int DocID() {return docID;}
char *DocURL() {return docURL;}
time_t DocTime() {return docTime;}
char *DocTitle() {return docTitle;}
char *DocAuthor() {return docAuthor;}
char *DocHead() {return docHead;}
int DocHeadIsSet() {return docHeadIsSet;}
char *DocMetaDsc() {return docMetaDsc;}
time_t DocAccessed() {return docAccessed;}
int DocLinks() {return docLinks;}
int DocBackLinks() {return docBackLinks;}
List *Descriptions() {return &descriptions;}
ReferenceState DocState() {return docState;}
int DocSize() {return docSize;}
List *DocAnchors() {return &docAnchors;}
double DocScore() {return docScore;}
int DocSig() {return docSig;}
int DocAnchor() {return docAnchor;}
int DocHopCount() {return docHopCount;}
char *DocEmail() {return docEmail;}
char *DocNotification() {return docNotification;}
char *DocSubject() {return docSubject;}
void DocID(int d) {docID = d;}
void DocURL(const char *u) {docURL = u;}
void DocTime(time_t t) {docTime = t;}
void DocTitle(const char *t) {docTitle = t;}
void DocAuthor(const char *a) {docAuthor = a;}
void DocHead(const char *h) {docHeadIsSet = 1; docHead = h;}
void DocMetaDsc(const char *md) {docMetaDsc = md;}
void DocAccessed(time_t t) {docAccessed = t;}
void DocLinks(int l) {docLinks = l;}
void DocBackLinks(int l) {docBackLinks = l;}
void Descriptions(List &l) {descriptions = l;}
void AddDescription(const char *d, HtWordList &words);
void DocState(ReferenceState s) {docState = s;}
void DocState(int s);
void DocSize(int s) {docSize = s;}
void DocSig(int s) {docSig = s;}
void DocAnchors(List &l) {docAnchors = l;}
void AddAnchor(const char *a);
void DocScore(double s) {docScore = s;}
void DocAnchor(int a) {docAnchor = a;}
void DocHopCount(int h) {docHopCount = h;}
void DocEmail(const char *e) {docEmail = e;}
void DocNotification(const char *n) {docNotification = n;}
void DocSubject(const char *s) {docSubject = s;}
void Clear(); // Reset everything
protected:
//
// These values will be stored when serializing
//
// This is the index number of the document in the database.
int docID;
// This is the URL of the document.
String docURL;
// This is the time specified in the document's header
// Usually that's the last modified time, for servers that return it.
time_t docTime;
// This is the time that the last retrieval occurred.
time_t docAccessed;
// This is the stored excerpt of the document, just text.
String docHead;
// This indicates if the stored excerpt of the document has been set.
int docHeadIsSet;
// This is the document-specified description.
// For HTML, that's the META description tag.
String docMetaDsc;
// This is the title of the document.
String docTitle;
// This is the author of the document, as specified in meta information
String docAuthor;
// This is a list of Strings, the text of links pointing to this document.
// (e.g. description
List descriptions;
// This is the state of the document--modified, normal, etc.
ReferenceState docState;
// This is the size of the original document.
int docSize;
// This is a count of the links in the document (outgoing links).
int docLinks;
// This is a count of the links to the document (incoming links).
int docBackLinks;
// This is a list of the anchors in the document (i.e.