예제 #1
0
int tellstdfunc::stdREPORTLAY::execute() {
   bool recursive = getBoolValue();
   std::string cellname = getStringValue();
   WordList ull;
   DATC->lockDB();
      bool success = DATC->TEDLIB()->collect_usedlays(cellname, recursive, ull);
   DATC->unlockDB();
   telldata::ttlist* tllull = DEBUG_NEW telldata::ttlist(telldata::tn_int);
   if (success) {
      ull.sort();ull.unique();
      std::ostringstream ost;
      ost << "used layers: {";
      for(WordList::const_iterator CL = ull.begin() ; CL != ull.end();CL++ )
         ost << " " << *CL << " ";
      ost << "}";
      tell_log(console::MT_INFO, ost.str());

      for(WordList::const_iterator CL = ull.begin() ; CL != ull.end();CL++ )
         tllull->add(DEBUG_NEW telldata::ttint(*CL));
      ull.clear();
   }
   else {
      std::string news = "cell \"";
      news += cellname; news += "\" doesn't exists";
      tell_log(console::MT_ERROR,news);
   }
   OPstack.push(tllull);
   return EXEC_NEXT;
}
예제 #2
0
void laydata::tdtlibrary::collect_usedlays(WordList& laylist) const
{
   for (cellList::const_iterator CC = _cells.begin(); CC != _cells.end(); CC++)
   {
      CC->second->collect_usedlays(NULL, false,laylist);
   }
   laylist.sort();
   laylist.unique();
   if ( (0 < laylist.size()) && (0 == laylist.front()) )
      laylist.pop_front();
}
예제 #3
0
int main(int argc, char *argv[])
{
    const char* INPUT_PATH = argv[1];
    const char* OUTPUT_PATH = argv[2];
    const char* QUIET = argv[3];
    
    /* Check arugments are present */
    if (!INPUT_PATH || !OUTPUT_PATH) {
        printf(ANSI_RED "WordCounter: Arguments Missing.\n" ANSI_RESET);
        printf("Usage: WordCounter input-path output-path [-q]\n");
        exit(EXIT_FAILURE);
    }
    
    /* Try and open file */
    FILE *fp = fopen(argv[1], "r");
    if (fp == NULL) {
        printf(ANSI_RED "Failed to open file: %s\n" ANSI_RESET, argv[1]);
        exit(EXIT_FAILURE);
    }
    
    /* Iterate text file adding words */
    WordList *wl = WordList_new();
    while(!feof(fp)){
        char *word = malloc(sizeof(char));
        fscanf(fp, "%s", word);
        remove_punc(word);
        if(!wl->increment(wl, word)){
            wl->add(wl, word);
        }
    }
    fclose(fp);
    
    wl->sort(wl, true);
    
    /* If not quiet then print the results */
    if (!QUIET) {
        wl->print(wl);
    }
    wl->save(wl, argv[2]);
    
    /* Free memory */
    for (int i=0; i<wl->used; i++) {
        free(wl->words[i].chars);
    }
    free(wl->words);
    free(wl);
    
    printf(ANSI_GREEN "Completed, %d words saved to '%s'\n" ANSI_RESET, wl->used, argv[2]);
    
}