home *** CD-ROM | disk | FTP | other *** search
/ Internet Publisher's Toolbox 2.0 / Internet Publisher's Toolbox.iso / internet / ntserver / wtsource / wprot.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-02-15  |  10.8 KB  |  315 lines

  1. /* WIDE AREA INFORMATION SERVER SOFTWARE:
  2.    No guarantees or restrictions.  See the readme file for the full standard
  3.    disclaimer.    
  4.   
  5.    3.26.90    Harry Morris, morris@think.com
  6.    3.30.90  Harry Morris 
  7.                -    removed chunk code from WAISSearchAPDU,
  8.                -    added makeWAISQueryType1Query() and readWAISType1Query() which
  9.                    replace makeWAISQueryTerms() and makeWAISQueryDocs().
  10.    4.11.90  HWM - added definitions of wais element set names
  11.    4.14.90  HWM - changed symbol for relevance feedback query from QT_3 to 
  12.                      QT_RelevanceFeedbackQuery added QT_TextRetrievalQuery as a
  13.                      synonym for QT_BooleanQuery
  14.                 - renamed makeWAISType1Query() to makeWAISTextQuery()
  15.                   renamed readWAISType1Query() to readWAISTextQuery()
  16.    5.29.90  TS - added CSTFreeWAISFoo functions
  17. */
  18.  
  19. /* Copyright (c) CNIDR (see ../COPYRIGHT) */
  20.  
  21.  
  22. #ifndef _H_WAIS_protocol_
  23.  
  24. #define _H_WAIS_protocol_
  25.  
  26. #include "cdialect.h"
  27.  
  28. #include "zprot.h"
  29. #include "ztype1.h"
  30.  
  31. /*----------------------------------------------------------------------*/
  32. /* Data types / constants */
  33.  
  34. /* date factor constants */
  35. #ifndef DF_INDEPENDENT
  36. #define    DF_INDEPENDENT        1
  37. #define DF_LATER        2
  38. #define DF_EARLIER        3
  39. #define DF_SPECIFIED_RANGE    4
  40. #endif
  41.  
  42. /* chunk types */
  43. #define CT_document        0
  44. #define CT_byte            1
  45. #define CT_line            2
  46. #define CT_paragraph    3
  47.  
  48. /* relevance feedback query */
  49. #define QT_RelevanceFeedbackQuery    "3"
  50. #define QT_TextRetrievalQuery        QT_BooleanQuery
  51.  
  52. /* new data tags */
  53. #define DT_UserInformationLength    (data_tag)99
  54. #define    DT_ChunkCode            (data_tag)100
  55. #define    DT_ChunkIDLength        (data_tag)101
  56. #define    DT_ChunkMarker            (data_tag)102
  57. #define    DT_HighlightMarker        (data_tag)103
  58. #define    DT_DeHighlightMarker        (data_tag)104
  59. #define    DT_NewlineCharacters        (data_tag)105
  60. #define    DT_SeedWords            (data_tag)106
  61. #define    DT_DocumentIDChunk        (data_tag)107
  62. #define    DT_ChunkStartID            (data_tag)108
  63. #define    DT_ChunkEndID            (data_tag)109
  64. #define    DT_TextList            (data_tag)110
  65. #define    DT_DateFactor            (data_tag)111
  66. #define    DT_BeginDateRange        (data_tag)112
  67. #define    DT_EndDateRange            (data_tag)113
  68. #define    DT_MaxDocumentsRetrieved    (data_tag)114
  69. #define    DT_SeedWordsUsed        (data_tag)115
  70. #define    DT_DocumentID            (data_tag)116
  71. #define    DT_VersionNumber        (data_tag)117
  72. #define    DT_Score            (data_tag)118
  73. #define    DT_BestMatch            (data_tag)119
  74. #define    DT_DocumentLength        (data_tag)120
  75. #define    DT_Source            (data_tag)121
  76. #define    DT_Date                (data_tag)122
  77. #define    DT_Headline            (data_tag)123
  78. #define    DT_OriginCity            (data_tag)124
  79. #define    DT_PresentStartByte        (data_tag)125
  80. #define    DT_TextLength            (data_tag)126
  81. #define    DT_DocumentText            (data_tag)127
  82. #define    DT_StockCodes            (data_tag)128
  83. #define    DT_CompanyCodes            (data_tag)129
  84. #define    DT_IndustryCodes        (data_tag)130
  85.  
  86. /* added by harry */
  87. #define DT_DocumentHeaderGroup        (data_tag)150
  88. #define DT_DocumentShortHeaderGroup    (data_tag)151
  89. #define DT_DocumentLongHeaderGroup    (data_tag)152
  90. #define DT_DocumentTextGroup        (data_tag)153
  91. #define DT_DocumentHeadlineGroup     (data_tag)154
  92. #define DT_DocumentCodeGroup        (data_tag)155
  93. #define DT_Lines                    (data_tag)131 
  94. #define    DT_TYPE_BLOCK                (data_tag)132
  95. #define DT_TYPE                        (data_tag)133
  96.  
  97. /* wais element sets */
  98. #define ES_DocumentHeader        "Document Header"
  99. #define ES_DocumentShortHeader    "Document Short Header"
  100. #define ES_DocumentLongHeader    "Document Long Header"
  101. #define ES_DocumentText            "Document Text"
  102. #define ES_DocumentHeadline        "Document Headline"
  103. #define ES_DocumentCodes        "Document Codes"
  104.  
  105. typedef struct DocObj { /* specifies a section of a document */
  106.     any*    DocumentID;
  107.     char*   Type;
  108.     long    ChunkCode;
  109.     union {
  110.         long    Pos;
  111.         any*    ID;
  112.     } ChunkStart;
  113.     union {
  114.         long    Pos;
  115.         any*    ID;
  116.     } ChunkEnd;
  117.     } DocObj;
  118.     
  119. /*----------------------------------------------------------------------*/
  120. /* WAIS APDU extensions */
  121.  
  122. typedef struct WAISInitResponse {
  123.     long                ChunkCode;
  124.     long                ChunkIDLength;
  125.     char*                ChunkMarker;
  126.     char*                HighlightMarker;
  127.     char*                 DeHighlightMarker;
  128.     char*                NewlineCharacters;
  129.     /* XXX  need to add UpdateFrequency and Update Time */
  130.     } WAISInitResponse;
  131.  
  132. typedef struct WAISSearch {
  133.     char*                SeedWords;
  134.     DocObj**            Docs;
  135.     char**                TextList;
  136.     long                DateFactor;
  137.     char*                BeginDateRange;
  138.     char*                EndDateRange;
  139.     long                MaxDocumentsRetrieved;
  140.     } WAISSearch;
  141.  
  142. typedef struct WAISDocumentHeader {
  143.     any*                DocumentID;
  144.     long                VersionNumber;
  145.     long                Score;     
  146.     long                BestMatch; 
  147.     long                DocumentLength;
  148.     long                 Lines;
  149.     char**                Types;
  150.     char*                Source;
  151.     char*                Date;
  152.     char*                Headline;
  153.     char*                OriginCity;
  154.     } WAISDocumentHeader;
  155.  
  156. typedef struct WAISDocumentShortHeader {
  157.     any*                DocumentID;
  158.     long                VersionNumber;
  159.     long                Score;     
  160.     long                BestMatch; 
  161.     long                DocumentLength;
  162.     long                 Lines;
  163.      } WAISDocumentShortHeader;
  164.  
  165. typedef struct WAISDocumentLongHeader {
  166.     any*                DocumentID;
  167.     long                VersionNumber;
  168.     long                Score;     
  169.     long                BestMatch; 
  170.     long                DocumentLength;
  171.     long                 Lines;
  172.     char**                Types;
  173.     char*                Source;
  174.     char*                Date;
  175.     char*                Headline;
  176.     char*                OriginCity;
  177.     char*                StockCodes;
  178.     char*                 CompanyCodes;
  179.     char*                IndustryCodes;
  180.      } WAISDocumentLongHeader;
  181.  
  182. typedef struct WAISDocumentText {
  183.     any*                DocumentID;
  184.     long                VersionNumber;
  185.     any*                DocumentText;
  186.     } WAISDocumentText;
  187.     
  188. typedef struct WAISDocumentHeadlines {
  189.     any*                DocumentID;
  190.     long                VersionNumber;
  191.     char*                Source;
  192.     char*                Date;
  193.     char*                Headline;
  194.     char*                OriginCity;
  195.     } WAISDocumentHeadlines;
  196.     
  197. typedef struct WAISDocumentCodes {
  198.     any*                DocumentID;
  199.     long                VersionNumber;
  200.     char*                StockCodes;
  201.     char*                CompanyCodes;
  202.     char*                IndustryCodes;
  203.     } WAISDocumentCodes;
  204.     
  205. typedef struct WAISSearchResponse {
  206.     char*                           SeedWordsUsed;
  207.     WAISDocumentHeader**         DocHeaders;
  208.     WAISDocumentShortHeader**     ShortHeaders;
  209.     WAISDocumentLongHeader**     LongHeaders;
  210.     WAISDocumentText**            Text;
  211.     WAISDocumentHeadlines**        Headlines;
  212.     WAISDocumentCodes**            Codes;
  213.     diagnosticRecord**            Diagnostics;
  214.     } WAISSearchResponse;
  215.  
  216. /*----------------------------------------------------------------------*/
  217. /* Functions */
  218.  
  219. #ifdef __cplusplus
  220. /* declare these as C style functions */
  221. extern "C"
  222.     {
  223. #endif /* def __cplusplus */
  224.  
  225. DocObj* makeDocObjUsingWholeDocument _AP((any* aDocID,char* type));
  226. DocObj* makeDocObjUsingBytes _AP((any* aDocID,char* type,long start,long end));
  227. DocObj* makeDocObjUsingLines _AP((any* aDocID,char* type,long start,long end));
  228. DocObj* makeDocObjUsingParagraphs _AP((any* aDocID,char* type,any* start,any* end));
  229. void freeDocObj _AP((DocObj* doc));
  230.  
  231. WAISInitResponse* makeWAISInitResponse _AP((long chunkCode,long chunkIDLen,
  232.                         char* chunkMarker,char* highlightMarker,
  233.                         char* deHighlightMarker,char* newLineChars));
  234. void freeWAISInitResponse _AP((WAISInitResponse* init));
  235.  
  236. WAISSearch* makeWAISSearch _AP((
  237.     char* seedWords,DocObj** docs,char** textList,
  238.     long dateFactor,char* beginDateRange,char* endDateRange,
  239.     long maxDocsRetrieved));
  240. void freeWAISSearch _AP((WAISSearch* query));
  241.  
  242. WAISDocumentHeader* makeWAISDocumentHeader _AP((
  243.     any* aDocID,long versionNumber,long score,long bestMatch,long docLen,
  244.     long lines,char** types,char* source,char* date,char* headline,char* originCity));
  245. void freeWAISDocumentHeader _AP((WAISDocumentHeader* header));
  246. char* writeWAISDocumentHeader _AP((WAISDocumentHeader* header,char* buffer,long* len));
  247. char* readWAISDocumentHeader _AP((WAISDocumentHeader** header,char* buffer));
  248.  
  249. WAISDocumentShortHeader* makeWAISDocumentShortHeader _AP((
  250.     any* aDocID,long versionNumber,long score,long bestMatch,long docLen,long lines));
  251. void freeWAISDocumentShortHeader _AP((WAISDocumentShortHeader* header));
  252. char* writeWAISDocumentShortHeader _AP((WAISDocumentShortHeader* header,
  253.                                    char* buffer,long* len));
  254. char* readWAISDocumentShortHeader _AP((WAISDocumentShortHeader** header,char* buffer));
  255.  
  256. WAISDocumentLongHeader* makeWAISDocumentLongHeader _AP((
  257.     any* aDocID,long versionNumber,long score,long bestMatch,long docLen,
  258.     long lines,char** types,char* source,char* date, char* headline,char* originCity,
  259.     char* stockCodes,char* companyCodes,char* industryCodes));
  260. void freeWAISDocumentLongHeader _AP((WAISDocumentLongHeader* header));
  261. char* writeWAISDocumentLongHeader _AP((WAISDocumentLongHeader* header,char* buffer,long* len));
  262. char* readWAISDocumentLongHeader _AP((WAISDocumentLongHeader** header,char* buffer));
  263.  
  264. WAISSearchResponse* makeWAISSearchResponse _AP((
  265.     char* seedWordsUsed,WAISDocumentHeader** docHeaders,
  266.     WAISDocumentShortHeader** shortHeaders,
  267.     WAISDocumentLongHeader** longHeaders,
  268.     WAISDocumentText** text,WAISDocumentHeadlines** headlines,
  269.     WAISDocumentCodes** codes,
  270.     diagnosticRecord** diagnostics));
  271. void freeWAISSearchResponse _AP((WAISSearchResponse* response));
  272.  
  273. WAISDocumentText* makeWAISDocumentText _AP((any* aDocID,long versionNumber,
  274.                        any* documentText));
  275. void freeWAISDocumentText _AP((WAISDocumentText* docText));
  276. char* writeWAISDocumentText _AP((WAISDocumentText* docText,char* buffer,long* len));
  277. char* readWAISDocumentText _AP((WAISDocumentText** docText,char* buffer));
  278.  
  279. WAISDocumentHeadlines* makeWAISDocumentHeadlines _AP((
  280.     any* aDocID,long versionNumber,char* source,char* date,char* headline,
  281.     char* originCity));
  282. void freeWAISDocumentHeadlines _AP((WAISDocumentHeadlines* docHeadline));
  283. char* writeWAISDocumentHeadlines _AP((WAISDocumentHeadlines* docHeadline,char* buffer,long* len));
  284. char* readWAISDocumentHeadlines _AP((WAISDocumentHeadlines** docHeadline,char* buffer));
  285.  
  286. WAISDocumentCodes* makeWAISDocumentCodes _AP((
  287.     any* aDocID,long versionNumber,char* stockCodes,char* companyCodes,
  288.     char* industryCodes));
  289. void freeWAISDocumentCodes _AP((WAISDocumentCodes* docCodes));
  290. char* writeWAISDocumentCodes _AP((WAISDocumentCodes* docCodes,char* buffer,long* len));
  291. char* readWAISDocumentCodes _AP((WAISDocumentCodes** docCodes,char* buffer));
  292.  
  293. any* makeWAISTextQuery _AP((DocObj** docs));
  294. DocObj** readWAISTextQuery _AP((any* terms));
  295.  
  296. void CSTFreeWAISInitResponse _AP((WAISInitResponse* init));
  297. void CSTFreeWAISSearch _AP((WAISSearch* query));
  298. void CSTFreeDocObj _AP((DocObj* doc));
  299. void CSTFreeWAISDocumentHeader _AP((WAISDocumentHeader* header));
  300. void CSTFreeWAISDocumentShortHeader _AP((WAISDocumentShortHeader* header));
  301. void CSTFreeWAISDocumentLongHeader _AP((WAISDocumentLongHeader* header));
  302. void CSTFreeWAISSearchResponse _AP((WAISSearchResponse* response));
  303. void CSTFreeWAISDocumentText _AP((WAISDocumentText* docText));
  304. void CSTFreeWAISDocumentHeadlines _AP((WAISDocumentHeadlines* docHeadline));
  305. void CSTFreeWAISDocumentCodes _AP((WAISDocumentCodes* docCodes));
  306. void CSTFreeWAISTextQuery _AP(( any* query));
  307.  
  308. #ifdef __cplusplus
  309.     }
  310. #endif /* def __cplusplus */
  311.  
  312. /*----------------------------------------------------------------------*/
  313.  
  314. #endif /* ndef _H_WAIS_protocol_ */
  315.