[llvm-commits] [llvm] r113143 - in /llvm/trunk/utils/TableGen: StringMatcher.cpp StringMatcher.h

Chris Lattner sabre at nondot.org
Sun Sep 5 20:50:59 PDT 2010


Author: lattner
Date: Sun Sep  5 22:50:59 2010
New Revision: 113143

URL: http://llvm.org/viewvc/llvm-project?rev=113143&view=rev
Log:
allow specifying an indentation level for the string matcher.

Modified:
    llvm/trunk/utils/TableGen/StringMatcher.cpp
    llvm/trunk/utils/TableGen/StringMatcher.h

Modified: llvm/trunk/utils/TableGen/StringMatcher.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/StringMatcher.cpp?rev=113143&r1=113142&r2=113143&view=diff
==============================================================================
--- llvm/trunk/utils/TableGen/StringMatcher.cpp (original)
+++ llvm/trunk/utils/TableGen/StringMatcher.cpp Sun Sep  5 22:50:59 2010
@@ -112,7 +112,10 @@
 
 /// Emit - Top level entry point.
 ///
-void StringMatcher::Emit() const {
+void StringMatcher::Emit(unsigned Indent) const {
+  // If nothing to match, just fall through.
+  if (Matches.empty()) return;
+  
   // First level categorization: group strings by length.
   std::map<unsigned, std::vector<const StringPair*> > MatchesByLength;
   
@@ -121,16 +124,17 @@
   
   // Output a switch statement on length and categorize the elements within each
   // bin.
-  OS << "  switch (" << StrVariableName << ".size()) {\n";
-  OS << "  default: break;\n";
+  OS.indent(Indent*2+2) << "switch (" << StrVariableName << ".size()) {\n";
+  OS.indent(Indent*2+2) << "default: break;\n";
   
   for (std::map<unsigned, std::vector<const StringPair*> >::iterator LI =
        MatchesByLength.begin(), E = MatchesByLength.end(); LI != E; ++LI) {
-    OS << "  case " << LI->first << ":\t // " << LI->second.size()
+    OS.indent(Indent*2+2) << "case " << LI->first << ":\t // "
+       << LI->second.size()
        << " string" << (LI->second.size() == 1 ? "" : "s") << " to match.\n";
-    if (EmitStringMatcherForChar(LI->second, 0, 0))
-      OS << "    break;\n";
+    if (EmitStringMatcherForChar(LI->second, 0, Indent))
+      OS.indent(Indent*2+4) << "break;\n";
   }
   
-  OS << "  }\n";
+  OS.indent(Indent*2+2) << "}\n";
 }

Modified: llvm/trunk/utils/TableGen/StringMatcher.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/StringMatcher.h?rev=113143&r1=113142&r2=113143&view=diff
==============================================================================
--- llvm/trunk/utils/TableGen/StringMatcher.h (original)
+++ llvm/trunk/utils/TableGen/StringMatcher.h Sun Sep  5 22:50:59 2010
@@ -41,7 +41,7 @@
                 const std::vector<StringPair> &matches, raw_ostream &os)
     : StrVariableName(strVariableName), Matches(matches), OS(os) {}
   
-  void Emit() const;
+  void Emit(unsigned Indent = 0) const;
   
   
 private:





More information about the llvm-commits mailing list