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