123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426 |
- /* HTVMS_WAISProt.h
- *
- * Adaptation for Lynx by F.Macrides (macrides@sci.wfeb.edu)
- *
- * 31-May-1994 FM Initial version.
- *
- *----------------------------------------------------------------------*/
- /*
- * Routines originally from WProt.h -- FM
- *
- *----------------------------------------------------------------------*/
- /* WIDE AREA INFORMATION SERVER SOFTWARE:
- * No guarantees or restrictions. See the readme file for the full standard
- * disclaimer.
- *
- * 3.26.90 Harry Morris, morris@think.com
- * 3.30.90 Harry Morris
- * - removed chunk code from WAISSearchAPDU,
- * - added makeWAISQueryType1Query() and readWAISType1Query() which
- * replace makeWAISQueryTerms() and makeWAISQueryDocs().
- * 4.11.90 HWM - added definitions of wais element set names
- * 4.14.90 HWM - changed symbol for relevance feedback query from QT_3 to
- * QT_RelevanceFeedbackQuery added QT_TextRetrievalQuery as a
- * synonym for QT_BooleanQuery
- * - renamed makeWAISType1Query() to makeWAISTextQuery()
- * renamed readWAISType1Query() to readWAISTextQuery()
- * 5.29.90 TS - added CSTFreeWAISFoo functions
- */
- #ifndef _H_WAIS_protocol_
- #define _H_WAIS_protocol_
- #ifndef HTUTILS_H
- #include <HTUtils.h>
- #endif
- #include <HTVMS_WaisUI.h>
- /*----------------------------------------------------------------------*/
- /* Data types / constants */
- /* date factor constants */
- #define DF_INDEPENDENT 1
- #define DF_LATER 2
- #define DF_EARLIER 3
- #define DF_SPECIFIED_RANGE 4
- /* chunk types */
- #define CT_document 0
- #define CT_byte 1
- #define CT_line 2
- #define CT_paragraph 3
- /* relevance feedback query */
- #define QT_RelevanceFeedbackQuery "3"
- #define QT_TextRetrievalQuery QT_BooleanQuery
- /* new data tags */
- #define DT_UserInformationLength (data_tag)99
- #define DT_ChunkCode (data_tag)100
- #define DT_ChunkIDLength (data_tag)101
- #define DT_ChunkMarker (data_tag)102
- #define DT_HighlightMarker (data_tag)103
- #define DT_DeHighlightMarker (data_tag)104
- #define DT_NewlineCharacters (data_tag)105
- #define DT_SeedWords (data_tag)106
- #define DT_DocumentIDChunk (data_tag)107
- #define DT_ChunkStartID (data_tag)108
- #define DT_ChunkEndID (data_tag)109
- #define DT_TextList (data_tag)110
- #define DT_DateFactor (data_tag)111
- #define DT_BeginDateRange (data_tag)112
- #define DT_EndDateRange (data_tag)113
- #define DT_MaxDocumentsRetrieved (data_tag)114
- #define DT_SeedWordsUsed (data_tag)115
- #define DT_DocumentID (data_tag)116
- #define DT_VersionNumber (data_tag)117
- #define DT_Score (data_tag)118
- #define DT_BestMatch (data_tag)119
- #define DT_DocumentLength (data_tag)120
- #define DT_Source (data_tag)121
- #define DT_Date (data_tag)122
- #define DT_Headline (data_tag)123
- #define DT_OriginCity (data_tag)124
- #define DT_PresentStartByte (data_tag)125
- #define DT_TextLength (data_tag)126
- #define DT_DocumentText (data_tag)127
- #define DT_StockCodes (data_tag)128
- #define DT_CompanyCodes (data_tag)129
- #define DT_IndustryCodes (data_tag)130
- /* added by harry */
- #define DT_DocumentHeaderGroup (data_tag)150
- #define DT_DocumentShortHeaderGroup (data_tag)151
- #define DT_DocumentLongHeaderGroup (data_tag)152
- #define DT_DocumentTextGroup (data_tag)153
- #define DT_DocumentHeadlineGroup (data_tag)154
- #define DT_DocumentCodeGroup (data_tag)155
- #define DT_Lines (data_tag)131
- #define DT_TYPE_BLOCK (data_tag)132
- #define DT_TYPE (data_tag)133
- /* wais element sets */
- #define ES_DocumentHeader "Document Header"
- #define ES_DocumentShortHeader "Document Short Header"
- #define ES_DocumentLongHeader "Document Long Header"
- #define ES_DocumentText "Document Text"
- #define ES_DocumentHeadline "Document Headline"
- #define ES_DocumentCodes "Document Codes"
- typedef struct DocObj { /* specifies a section of a document */
- any *DocumentID;
- char *Type;
- long ChunkCode;
- union {
- long Pos;
- any *ID;
- } ChunkStart;
- union {
- long Pos;
- any *ID;
- } ChunkEnd;
- } DocObj;
- /*----------------------------------------------------------------------*/
- /* WAIS APDU extensions */
- typedef struct WAISInitResponse {
- long ChunkCode;
- long ChunkIDLength;
- char *ChunkMarker;
- char *HighlightMarker;
- char *DeHighlightMarker;
- char *NewlineCharacters;
- /* XXX need to add UpdateFrequency and Update Time */
- } WAISInitResponse;
- typedef struct WAISSearch {
- char *SeedWords;
- DocObj **Docs;
- char **TextList;
- long DateFactor;
- char *BeginDateRange;
- char *EndDateRange;
- long MaxDocumentsRetrieved;
- } WAISSearch;
- typedef struct WAISDocumentHeader {
- any *DocumentID;
- long VersionNumber;
- long Score;
- long BestMatch;
- long DocumentLength;
- long Lines;
- char **Types;
- char *Source;
- char *Date;
- char *Headline;
- char *OriginCity;
- } WAISDocumentHeader;
- typedef struct WAISDocumentShortHeader {
- any *DocumentID;
- long VersionNumber;
- long Score;
- long BestMatch;
- long DocumentLength;
- long Lines;
- } WAISDocumentShortHeader;
- typedef struct WAISDocumentLongHeader {
- any *DocumentID;
- long VersionNumber;
- long Score;
- long BestMatch;
- long DocumentLength;
- long Lines;
- char **Types;
- char *Source;
- char *Date;
- char *Headline;
- char *OriginCity;
- char *StockCodes;
- char *CompanyCodes;
- char *IndustryCodes;
- } WAISDocumentLongHeader;
- typedef struct WAISDocumentText {
- any *DocumentID;
- long VersionNumber;
- any *DocumentText;
- } WAISDocumentText;
- typedef struct WAISDocumentHeadlines {
- any *DocumentID;
- long VersionNumber;
- char *Source;
- char *Date;
- char *Headline;
- char *OriginCity;
- } WAISDocumentHeadlines;
- typedef struct WAISDocumentCodes {
- any *DocumentID;
- long VersionNumber;
- char *StockCodes;
- char *CompanyCodes;
- char *IndustryCodes;
- } WAISDocumentCodes;
- typedef struct WAISSearchResponse {
- char *SeedWordsUsed;
- WAISDocumentHeader **DocHeaders;
- WAISDocumentShortHeader **ShortHeaders;
- WAISDocumentLongHeader **LongHeaders;
- WAISDocumentText **Text;
- WAISDocumentHeadlines **Headlines;
- WAISDocumentCodes **Codes;
- diagnosticRecord **Diagnostics;
- } WAISSearchResponse;
- /*----------------------------------------------------------------------*/
- /* Functions */
- char *generate_search_apdu(char *buff, /* buffer to hold the apdu */
- long *buff_len, /* number of bytes written to the buffer */
- char *seed_words, /* string of the seed words */
- char *database_name,
- DocObj **docobjs,
- long maxDocsRetrieved);
- DocObj *makeDocObjUsingWholeDocument(any *aDocID, char *type);
- DocObj *makeDocObjUsingBytes(any *aDocID, char *type, long start, long end);
- DocObj *makeDocObjUsingLines(any *aDocID, char *type, long start, long end);
- DocObj *makeDocObjUsingParagraphs(any *aDocID, char *type, any *start, any *end);
- void freeDocObj(DocObj *doc);
- WAISInitResponse *makeWAISInitResponse(long chunkCode, long chunkIDLen,
- char *chunkMarker, char *highlightMarker,
- char *deHighlightMarker, char *newLineChars);
- void freeWAISInitResponse(WAISInitResponse *init);
- WAISSearch *makeWAISSearch(char *seedWords,
- DocObj **docs,
- char **textList,
- long dateFactor,
- char *beginDateRange,
- char *endDateRange,
- long maxDocsRetrieved);
- void freeWAISSearch(WAISSearch *query);
- WAISDocumentHeader *makeWAISDocumentHeader(any *aDocID,
- long versionNumber,
- long score,
- long bestMatch,
- long docLen,
- long lines,
- char **types,
- char *source,
- char *date,
- char *headline,
- char *originCity);
- void freeWAISDocumentHeader(WAISDocumentHeader *header);
- char *writeWAISDocumentHeader(WAISDocumentHeader *header, char *buffer, long *len);
- char *readWAISDocumentHeader(WAISDocumentHeader **header, char *buffer);
- WAISDocumentShortHeader *makeWAISDocumentShortHeader(any *aDocID,
- long versionNumber,
- long score,
- long bestMatch,
- long docLen,
- long lines);
- void freeWAISDocumentShortHeader(WAISDocumentShortHeader *header);
- char *writeWAISDocumentShortHeader(WAISDocumentShortHeader *header,
- char *buffer, long *len);
- char *readWAISDocumentShortHeader(WAISDocumentShortHeader **header, char *buffer);
- WAISDocumentLongHeader *makeWAISDocumentLongHeader(any *aDocID,
- long versionNumber,
- long score,
- long bestMatch,
- long docLen,
- long lines,
- char **types,
- char *source,
- char *date, char *headline,
- char *originCity,
- char *stockCodes,
- char *companyCodes,
- char *industryCodes);
- void freeWAISDocumentLongHeader(WAISDocumentLongHeader *header);
- char *writeWAISDocumentLongHeader(WAISDocumentLongHeader *header,
- char *buffer,
- long *len);
- char *readWAISDocumentLongHeader(WAISDocumentLongHeader **header, char *buffer);
- WAISSearchResponse *makeWAISSearchResponse(char *seedWordsUsed,
- WAISDocumentHeader **docHeaders,
- WAISDocumentShortHeader **shortHeaders,
- WAISDocumentLongHeader **longHeaders,
- WAISDocumentText **text, WAISDocumentHeadlines **headlines,
- WAISDocumentCodes **codes,
- diagnosticRecord ** diagnostics);
- void freeWAISSearchResponse(WAISSearchResponse * response);
- WAISDocumentText *makeWAISDocumentText(any *aDocID, long versionNumber,
- any *documentText);
- void freeWAISDocumentText(WAISDocumentText *docText);
- char *writeWAISDocumentText(WAISDocumentText *docText, char *buffer, long *len);
- char *readWAISDocumentText(WAISDocumentText **docText, char *buffer);
- WAISDocumentHeadlines *makeWAISDocumentHeadlines(any *aDocID,
- long versionNumber,
- char *source,
- char *date,
- char *headline,
- char *originCity);
- void freeWAISDocumentHeadlines(WAISDocumentHeadlines *docHeadline);
- char *writeWAISDocumentHeadlines(WAISDocumentHeadlines *docHeadline,
- char *buffer,
- long *len);
- char *readWAISDocumentHeadlines(WAISDocumentHeadlines **docHeadline, char *buffer);
- WAISDocumentCodes *makeWAISDocumentCodes(any *aDocID,
- long versionNumber,
- char *stockCodes,
- char *companyCodes,
- char *industryCodes);
- void freeWAISDocumentCodes(WAISDocumentCodes *docCodes);
- char *writeWAISDocumentCodes(WAISDocumentCodes *docCodes, char *buffer, long *len);
- char *readWAISDocumentCodes(WAISDocumentCodes **docCodes, char *buffer);
- any *makeWAISTextQuery(DocObj **docs);
- DocObj **readWAISTextQuery(any *terms);
- void CSTFreeWAISInitResponse(WAISInitResponse *init);
- void CSTFreeWAISSearch(WAISSearch *query);
- void CSTFreeDocObj(DocObj *doc);
- void CSTFreeWAISDocumentHeader(WAISDocumentHeader *header);
- void CSTFreeWAISDocumentShortHeader(WAISDocumentShortHeader *header);
- void CSTFreeWAISDocumentLongHeader(WAISDocumentLongHeader *header);
- void CSTFreeWAISSearchResponse(WAISSearchResponse * response);
- void CSTFreeWAISDocumentText(WAISDocumentText *docText);
- void CSTFreeWAISDocHeadlines(WAISDocumentHeadlines *docHeadline);
- void CSTFreeWAISDocumentCodes(WAISDocumentCodes *docCodes);
- void CSTFreeWAISTextQuery(any *query);
- /*----------------------------------------------------------------------*/
- #endif /* ndef _H_WAIS_protocol_ */
- /*
- * Routines originally from WMessage.h -- FM
- *
- *----------------------------------------------------------------------*/
- /* WIDE AREA INFORMATION SERVER SOFTWARE
- * No guarantees or restrictions. See the readme file for the full standard
- * disclaimer.
- * 3.26.90
- */
- /* wais-message.h
- *
- * This is the header outside of WAIS Z39.50 messages. The header will be
- * printable ascii, so as to be transportable. This header will precede each
- * Z39.50 APDU, or zero-length message if it is an ACK or NACK. Be sure to
- * change hdr_vers current value if you change the structure of the header.
- *
- * The characters in the header are case insensitive so that the systems from
- * the past that only handle one case can at least read the header.
- *
- * 7.5.90 HWM - added constants
- * 7/5/90 brewster added funtion prototypes and comments
- * 11/30/90 HWM - went to version 2 (inits and typed retrieval)
- */
- #ifndef WMESSAGE_H
- #define WMESSAGE_H
- #ifndef HTUTILS_H
- #include <HTUtils.h>
- #endif
- #include <HTVMS_WaisUI.h>
- typedef struct wais_header {
- char msg_len[10]; /* length in bytes of following message */
- char msg_type; /* type of message: 'z'=Z39.50 APDU,
- 'a'=ACK, 'n'=NACK */
- char hdr_vers; /* version of this header, currently = '2' */
- char server[10]; /* name or address of server */
- char compression; /* <sp>=no compression, 'u'=unix compress */
- char encoding; /* <sp>=no encoding, 'h'=hexize,
- 'u'=uuencode */
- char msg_checksum; /* XOR of every byte of message */
- } WAISMessage;
- #define HEADER_LENGTH 25 /* number of bytes needed to write a
- wais-header (not sizeof(wais_header)) */
- #define HEADER_VERSION (long)'2'
- /* message type */
- #define Z3950 'z'
- #define ACK 'a'
- #define NAK 'n'
- /* compression */
- #define NO_COMPRESSION ' '
- #define UNIX_COMPRESSION 'u'
- /* encoding */
- #define NO_ENCODING ' '
- #define HEX_ENCODING 'h' /* Swartz 4/3 encoding */
- #define IBM_HEXCODING 'i' /* same as h but uses characters acceptable for IBM mainframes */
- #define UUENCODE 'u'
- void readWAISPacketHeader(char *msgBuffer, WAISMessage * header_struct);
- long getWAISPacketLength(WAISMessage * header);
- void writeWAISPacketHeader(char *header, long dataLen, long type,
- char *server, long compression,
- long encoding, long version);
- #endif /* ndef WMESSAGE_H */
|