Removing typeof from didyoumean.cpp.
authorTim King <taking@google.com>
Wed, 31 Aug 2016 22:35:06 +0000 (15:35 -0700)
committerTim King <taking@google.com>
Wed, 31 Aug 2016 22:35:06 +0000 (15:35 -0700)
src/options/didyoumean.cpp
src/options/didyoumean.h

index d874c7bc7ae0fcdf03de1641bba8fb5adacf58cb..693764b377374707b669ae6cd44e739a77dc6693 100644 (file)
@@ -32,45 +32,42 @@ std::vector<std::string> DidYouMean::getMatch(std::string input) {
   const int similarityThreshold = 7;
   const unsigned numMatchesThreshold = 10;
 
-  std::set< std::pair<int, std::string> > scores;
+  typedef std::set<std::pair<int, std::string> > ScoreSet;
+  ScoreSet scores;
   std::vector<std::string> ret;
-  for(typeof(d_words.begin()) it = d_words.begin(); it != d_words.end(); ++it) {
+  for (Words::const_iterator it = d_words.begin(); it != d_words.end(); ++it) {
     std::string s = (*it);
-    if( s == input ) {
+    if (s == input) {
       // if input matches AS-IS just return that
       ret.push_back(s);
       return ret;
     }
     int score;
-    if(s.compare(0, input.size(), input) == 0) {
+    if (s.compare(0, input.size(), input) == 0) {
       score = 0;
     } else {
       score = editDistance(input, s) + 1;
     }
-    scores.insert( make_pair(score, s) );
+    scores.insert(make_pair(score, s));
   }
   int min_score = scores.begin()->first;
-  for(typeof(scores.begin()) i = scores.begin();
-      i != scores.end(); ++i) {
-
+  for (ScoreSet::const_iterator i = scores.begin(); i != scores.end(); ++i) {
     // add if score is overall not too big, and also not much close to
     // the score of the best suggestion
-    if(i->first < similarityThreshold && i->first <= min_score + 1) {
+    if (i->first < similarityThreshold && i->first <= min_score + 1) {
       ret.push_back(i->second);
 #ifdef DIDYOUMEAN_DEBUG
       cout << i->second << ": " << i->first << std::endl;
 #endif
     }
   }
-  if(ret.size() > numMatchesThreshold ){
+  if (ret.size() > numMatchesThreshold) {
     ret.resize(numMatchesThreshold);
   }
   return ret;
 }
 
-
-int DidYouMean::editDistance(const std::string& a, const std::string& b)
-{
+int DidYouMean::editDistance(const std::string& a, const std::string& b) {
   // input string: a
   // desired string: b
 
@@ -86,44 +83,42 @@ int DidYouMean::editDistance(const std::string& a, const std::string& b)
   int* C[3];
   int ii;
   for (ii = 0; ii < 3; ++ii) {
-    C[ii] = new int[len2+1];
+    C[ii] = new int[len2 + 1];
   }
   //  int C[3][len2+1];             // cost
 
-  for(int j = 0; j <= len2; ++j) {
+  for (int j = 0; j <= len2; ++j) {
     C[0][j] = j * addCost;
   }
 
-  for(int i = 1; i <= len1; ++i) {
-
-    int cur = i%3;
-    int prv = (i+2)%3;
-    int pr2 = (i+1)%3;
+  for (int i = 1; i <= len1; ++i) {
+    int cur = i % 3;
+    int prv = (i + 2) % 3;
+    int pr2 = (i + 1) % 3;
 
     C[cur][0] = i * deleteCost;
 
-    for(int j = 1; j <= len2; ++j) {
-
-      C[cur][j] = 100000000;      // INF
+    for (int j = 1; j <= len2; ++j) {
+      C[cur][j] = 100000000;  // INF
 
-      if(a[i-1] == b[j-1]) {
+      if (a[i - 1] == b[j - 1]) {
         // match
-        C[cur][j] = std::min(C[cur][j], C[prv][j-1]);
-      } else if(tolower(a[i-1]) == tolower(b[j-1])){
+        C[cur][j] = std::min(C[cur][j], C[prv][j - 1]);
+      } else if (tolower(a[i - 1]) == tolower(b[j - 1])) {
         // switch case
-        C[cur][j] = std::min(C[cur][j], C[prv][j-1] + switchCaseCost);
+        C[cur][j] = std::min(C[cur][j], C[prv][j - 1] + switchCaseCost);
       } else {
         // substitute
-        C[cur][j] = std::min(C[cur][j], C[prv][j-1] + substituteCost);
+        C[cur][j] = std::min(C[cur][j], C[prv][j - 1] + substituteCost);
       }
 
       // swap
-      if(i >= 2 && j >= 2 && a[i-1] == b[j-2] && a[i-2] == b[j-1]) {
-        C[cur][j] = std::min(C[cur][j], C[pr2][j-2] + swapCost);
+      if (i >= 2 && j >= 2 && a[i - 1] == b[j - 2] && a[i - 2] == b[j - 1]) {
+        C[cur][j] = std::min(C[cur][j], C[pr2][j - 2] + swapCost);
       }
 
       // add
-      C[cur][j] = std::min(C[cur][j], C[cur][j-1] + addCost);
+      C[cur][j] = std::min(C[cur][j], C[cur][j - 1] + addCost);
 
       // delete
       C[cur][j] = std::min(C[cur][j], C[prv][j] + deleteCost);
@@ -132,31 +127,35 @@ int DidYouMean::editDistance(const std::string& a, const std::string& b)
       std::cout << "C[" << cur << "][" << 0 << "] = " << C[cur][0] << std::endl;
 #endif
     }
-
   }
-  int result = C[len1%3][len2];
+  int result = C[len1 % 3][len2];
   for (ii = 0; ii < 3; ++ii) {
-    delete [] C[ii];
+    delete[] C[ii];
   }
   return result;
 }
 
-std::string DidYouMean::getMatchAsString(std::string input, int prefixNewLines, int suffixNewLines) {
+std::string DidYouMean::getMatchAsString(std::string input, int prefixNewLines,
+                                         int suffixNewLines) {
   std::vector<std::string> matches = getMatch(input);
   std::ostringstream oss;
-  if(matches.size() > 0) {
-    while(prefixNewLines --> 0) { oss << std::endl; }
-    if(matches.size() == 1) {
+  if (matches.size() > 0) {
+    while (prefixNewLines-- > 0) {
+      oss << std::endl;
+    }
+    if (matches.size() == 1) {
       oss << "Did you mean this?";
     } else {
       oss << "Did you mean any of these?";
     }
-    for(unsigned i = 0; i < matches.size(); ++i) {
+    for (unsigned i = 0; i < matches.size(); ++i) {
       oss << "\n        " << matches[i];
     }
-    while(suffixNewLines --> 0) { oss << std::endl; }
+    while (suffixNewLines-- > 0) {
+      oss << std::endl;
+    }
   }
   return oss.str();
 }
 
-}/* CVC4 namespace */
+} /* CVC4 namespace */
index 71a12e6fc6e338c5ccf50a4aff5861d216320097..31b58aadb07dcdd3a3930934f764e91467b7fa1a 100644 (file)
 
 #pragma once
 
-#include <vector>
 #include <set>
 #include <string>
+#include <vector>
 
 namespace CVC4 {
 
 class DidYouMean {
+ public:
   typedef std::set<std::string> Words;
-  Words d_words;
 
-public:
   DidYouMean() {}
   ~DidYouMean() {}
 
   DidYouMean(Words words) : d_words(words) {}
 
-  void addWord(std::string word) {
-    d_words.insert(word);
-  }
+  void addWord(std::string word) { d_words.insert(word); }
 
   std::vector<std::string> getMatch(std::string input);
 
@@ -45,9 +42,12 @@ public:
    * This is provided to make it easier to ensure consistency of
    * output. Returned string is empty if there are no matches.
    */
-  std::string getMatchAsString(std::string input, int prefixNewLines = 2, int suffixNewLines = 0);
-private:
+  std::string getMatchAsString(std::string input, int prefixNewLines = 2,
+                               int suffixNewLines = 0);
+
+ private:
   int editDistance(const std::string& a, const std::string& b);
+  Words d_words;
 };
 
-}/*CVC4 namespace*/
+} /*CVC4 namespace*/