Thrift now generates XSD files

Summary: Are you fucking kidding me? This shit is robust.

Reviewed By: fetter-tbr-d00d


git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@664928 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/compiler/cpp/src/main.cc b/compiler/cpp/src/main.cc
index 7280a37..065c95f 100644
--- a/compiler/cpp/src/main.cc
+++ b/compiler/cpp/src/main.cc
@@ -26,6 +26,7 @@
 #include "generate/t_java_generator.h"
 #include "generate/t_php_generator.h"
 #include "generate/t_py_generator.h"
+#include "generate/t_xsd_generator.h"
 
 using namespace std;
 
@@ -108,6 +109,7 @@
 bool gen_cpp = false;
 bool gen_java = false;
 bool gen_py = false;
+bool gen_xsd = false;
 bool gen_php = false;
 bool gen_phpi = false;
 bool gen_recurse = false;
@@ -515,6 +517,14 @@
       py->generate_program();
       delete py;
     }
+
+    if (gen_xsd) {
+      pverbose("Generating XSD\n");
+      t_xsd_generator* xsd = new t_xsd_generator(program);
+      xsd->generate_program();
+      delete xsd;
+    }
+
   } catch (string s) {
     printf("Error: %s\n", s.c_str());
   } catch (const char* exc) {
@@ -571,6 +581,8 @@
         gen_phpi = true;
       } else if (strcmp(arg, "-py") == 0) {
         gen_py = true;
+      } else if (strcmp(arg, "-xsd") == 0) {
+        gen_xsd = true;
       } else if (strcmp(arg, "-I") == 0) {
         // An argument of "-I\ asdf" is invalid and has unknown results
         arg = argv[++i];
@@ -591,7 +603,7 @@
   }
   
   // You gotta generate something!
-  if (!gen_cpp && !gen_java && !gen_php && !gen_phpi && !gen_py) {
+  if (!gen_cpp && !gen_java && !gen_php && !gen_phpi && !gen_py && !gen_xsd) {
     fprintf(stderr, "!!! No output language(s) specified\n\n");
     usage();
   }