Changeset 1898

Show
Ignore:
Timestamp:
02.02.2001 14:12:29 (19 years ago)
Author:
kjm18
Message:

added more command line options, and better help message

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/gsdl/src/mgpp/text/mg_invf_dump.cpp

    r856 r1898  
    3737/* 
    3838   $Log$ 
     39   Revision 1.2  2001/02/02 01:12:29  kjm18 
     40   added more command line options, and better help message 
     41 
    3942   Revision 1.1  2000/01/14 02:26:17  sjboddie 
    4043   Rodgers new C++ mg 
     
    7275               invf_file_header &ifh, 
    7376               word_dict_el &wordEl, 
    74                unsigned long wordStart) { 
     77               unsigned long wordStart, 
     78               bool printFrags) { 
    7579  cout << wordEl.frag_occur << " \"" << wordEl.el << "\"\n"; 
    7680   
    77   // seek to the appropriate place in the inverted file 
    78   fseek (invfFile, wordStart, SEEK_SET); 
    79  
    80   stdio_bitio_buffer buffer(invfFile); 
    81    
    82   unsigned long B = BIO_Bblock_Init (idh.num_frags, wordEl.frag_occur); 
    83   unsigned long fragNum = 0; 
    84   unsigned long i; 
    85   for (i=0; i<wordEl.frag_occur; i++) { 
    86     unsigned long delta = buffer.bblock_decode (B, NULL); 
    87     fragNum += delta; 
    88     cout << " " << fragNum; 
    89      
    90     if (!ifh.word_level_index ) { 
    91       unsigned long count = buffer.gamma_decode (NULL); 
    92       cout << "(" << count << ")"; 
    93     } else { 
    94       cout << "(1)"; 
    95     } 
    96   } 
    97  
    98   cout << "\n"; 
    99    
    100   buffer.done(); 
     81  if (printFrags) { 
     82    // seek to the appropriate place in the inverted file 
     83    fseek (invfFile, wordStart, SEEK_SET); 
     84     
     85    stdio_bitio_buffer buffer(invfFile); 
     86     
     87    unsigned long B = BIO_Bblock_Init (idh.num_frags, wordEl.frag_occur); 
     88    unsigned long fragNum = 0; 
     89    unsigned long i; 
     90    for (i=0; i<wordEl.frag_occur; i++) { 
     91      unsigned long delta = buffer.bblock_decode (B, NULL); 
     92      fragNum += delta; 
     93      cout << " " << fragNum; 
     94       
     95      if (!ifh.word_level_index ) { 
     96    unsigned long count = buffer.gamma_decode (NULL); 
     97    cout << "(" << count << ")"; 
     98      } else { 
     99    cout << "(1)"; 
     100      } 
     101    } 
     102     
     103    cout << "\n"; 
     104   
     105    buffer.done(); 
     106  } 
    101107} 
    102108 
     
    105111              invf_file_header &/*ifh*/, 
    106112              dict_el &tagEl, 
    107               unsigned long tagStart) { 
     113              unsigned long tagStart, 
     114              bool printFrags) { 
    108115  cout << tagEl.frag_occur << " \"<" << tagEl.el << ">\"\n"; 
    109116   
    110   // seek to the appropriate place in the inverted file 
    111   fseek (invfFile, tagStart, SEEK_SET); 
    112  
    113   stdio_bitio_buffer buffer(invfFile); 
    114    
    115   unsigned long pTag = tagEl.frag_occur*2; 
    116   unsigned long B = BIO_Bblock_Init (idh.num_frags+pTag, pTag); 
    117   unsigned long fragNum = 0; 
    118   unsigned long i; 
    119   for (i=0; i<tagEl.frag_occur; i++) { 
    120     unsigned long delta = buffer.bblock_decode (B, NULL)-1; 
    121     fragNum += delta; 
    122     cout << " " << fragNum; 
    123     cout << "-"; 
    124     delta = buffer.bblock_decode (B, NULL)-1; 
    125     fragNum += delta; 
    126     cout << fragNum; 
    127   } 
    128  
    129   cout << "\n"; 
    130    
    131   buffer.done(); 
     117  if (printFrags) { 
     118    // seek to the appropriate place in the inverted file 
     119    fseek (invfFile, tagStart, SEEK_SET); 
     120     
     121    stdio_bitio_buffer buffer(invfFile); 
     122     
     123    unsigned long pTag = tagEl.frag_occur*2; 
     124    unsigned long B = BIO_Bblock_Init (idh.num_frags+pTag, pTag); 
     125    unsigned long fragNum = 0; 
     126    unsigned long i; 
     127    for (i=0; i<tagEl.frag_occur; i++) { 
     128      unsigned long delta = buffer.bblock_decode (B, NULL)-1; 
     129      fragNum += delta; 
     130      cout << " " << fragNum; 
     131      cout << "-"; 
     132      delta = buffer.bblock_decode (B, NULL)-1; 
     133      fragNum += delta; 
     134      cout << fragNum; 
     135    } 
     136     
     137    cout << "\n"; 
     138     
     139    buffer.done(); 
     140  } 
    132141} 
    133142 
     
    148157 
    149158 
    150 static void process_files (char *filename) { 
     159static void process_files (char *filename, 
     160               bool printHeader, 
     161               bool printWords, 
     162               bool printTags, 
     163               bool printFrags) { 
    151164  // open the dictionary 
    152165  FILE *dictFile = open_file (filename, INVF_DICT_SUFFIX, "rb", 
     
    166179 
    167180  // print out header information 
    168   PrintHeaderInfo (idh, ifh); 
    169    
     181  if (printHeader) { 
     182    PrintHeaderInfo (idh, ifh); 
     183  } 
     184 
    170185  // open the inverted index 
    171186  FILE *invfIdxFile = open_file (filename, INVF_IDX_SUFFIX, "rb", 
     
    176191 
    177192  // process all the words 
    178   unsigned long wordNum; 
    179   unsigned long wordStart; 
    180   word_dict_el wordEl; 
    181   wordEl.SetNumLevels (idh.num_levels); 
    182   for (wordNum=0; wordNum<idh.word_dict_size; wordNum++) { 
    183     wordEl.Read (dictFile, idh.num_levels); 
    184     ReadUL (invfIdxFile, wordStart); 
    185     PrintInvfWord (invfFile, idh, ifh, wordEl, wordStart); 
     193  if (printWords) { 
     194    unsigned long wordNum; 
     195    unsigned long wordStart; 
     196    word_dict_el wordEl; 
     197    wordEl.SetNumLevels (idh.num_levels); 
     198    for (wordNum=0; wordNum<idh.word_dict_size; wordNum++) { 
     199      wordEl.Read (dictFile, idh.num_levels); 
     200      ReadUL (invfIdxFile, wordStart); 
     201      PrintInvfWord (invfFile, idh, ifh, wordEl, wordStart, printFrags); 
     202    } 
    186203  } 
    187204 
    188205  // process all the tags 
    189   unsigned long tagNum; 
    190   unsigned long tagStart; 
    191   dict_el tagEl; 
    192   for (tagNum=0; tagNum<idh.tag_dict_size; tagNum++) { 
    193     tagEl.Read (dictFile); 
    194     ReadUL (invfIdxFile, tagStart); 
    195     PrintInvfTag (invfFile, idh, ifh, tagEl, tagStart); 
    196   } 
    197    
     206  if (printTags) { 
     207    unsigned long tagNum; 
     208    unsigned long tagStart; 
     209    dict_el tagEl; 
     210    for (tagNum=0; tagNum<idh.tag_dict_size; tagNum++) { 
     211      tagEl.Read (dictFile); 
     212      ReadUL (invfIdxFile, tagStart); 
     213      PrintInvfTag (invfFile, idh, ifh, tagEl, tagStart, printFrags); 
     214    } 
     215  } 
    198216  // close the open files 
    199217  fclose (invfIdxFile); 
     
    209227  dir_name = getenv ("MGDATA"); 
    210228  opterr = 0; 
     229 
     230  bool printHeader = false; 
     231  bool printWords = false; 
     232  bool printTags = false; 
     233  bool printFrags = false; 
    211234   
    212235  msg_prefix = argv[0]; 
    213   while ((ch = getopt (argc, argv, "hbwtf:d:")) != -1) { 
     236  while ((ch = getopt (argc, argv, "hrwtnf:d:")) != -1) { 
    214237    switch (ch) { 
    215238    case 'f':       // input file 
     
    219242      set_basepath(optarg); 
    220243      break; 
     244    case 'r': 
     245      printHeader = true; 
     246      break; 
     247    case 'w': 
     248      printWords = true; 
     249      break; 
     250    case 'n': 
     251      printFrags = true; 
     252      break; 
     253    case 't': 
     254      printTags = true; 
     255      break; 
    221256    case 'h': 
    222257    case '?': 
    223       fprintf (stderr, "usage: %s [-h] [-b] [-w] [-t] [-f input_file]" 
    224            "[-d data directory]\n", argv[0]); 
     258      fprintf (stderr, "usage: %s [-h] [-r] [-w] [-t] [-n] [-f input_file]" 
     259           "[-d data directory]\n(-rwnt:print header, words, tags, fragnums)\n",  
     260           argv[0]); 
    225261      exit (1); 
    226262    } 
    227263  } 
    228264   
    229   process_files (filename); 
     265  process_files (filename, printHeader, printWords, printTags, printFrags); 
    230266 
    231267  return 0;