[thrift] preliminary Erlang support (initial import)
Summary:
* missing {list,map,set}s, inheritance is spotty
* loose source code, plus everything is one process (application / gen_server behavior is forthcoming)
* codegen is a mess, need t_fp_generator
Test Plan:
* codegen invoked without -erl generates identical code for test/
* calculatorHandler plus 'thrift -erl -r tutorial.thrift' more or less works
Revert Plan: ok
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@665146 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/compiler/cpp/src/main.cc b/compiler/cpp/src/main.cc
index c62c925..41305d5 100644
--- a/compiler/cpp/src/main.cc
+++ b/compiler/cpp/src/main.cc
@@ -35,6 +35,7 @@
#include "generate/t_rb_generator.h"
#include "generate/t_xsd_generator.h"
#include "generate/t_perl_generator.h"
+#include "generate/t_erl_generator.h"
using namespace std;
@@ -124,6 +125,7 @@
bool gen_php = false;
bool gen_phpi = false;
bool gen_perl = false;
+bool gen_erl = false;
bool gen_recurse = false;
/**
@@ -301,6 +303,7 @@
fprintf(stderr, " -rb Generate Ruby output files\n");
fprintf(stderr, " -xsd Generate XSD output files\n");
fprintf(stderr, " -perl Generate Perl output files\n");
+ fprintf(stderr, " -erl Generate Erlang output files\n");
fprintf(stderr, " -I dir Add a directory to the list of directories \n");
fprintf(stderr, " searched for include directives\n");
fprintf(stderr, " -nowarn Suppress all compiler warnings (BAD!)\n");
@@ -563,6 +566,13 @@
delete perl;
}
+ if (gen_erl) {
+ pverbose("Generating Erlang\n");
+ t_erl_generator* erl = new t_erl_generator(program);
+ erl->generate_program();
+ delete erl;
+ }
+
} catch (string s) {
printf("Error: %s\n", s.c_str());
} catch (const char* exc) {
@@ -625,6 +635,8 @@
gen_xsd = true;
} else if (strcmp(arg, "-perl") == 0) {
gen_perl = true;
+ } else if (strcmp(arg, "-erl") == 0) {
+ gen_erl = true;
} else if (strcmp(arg, "-I") == 0) {
// An argument of "-I\ asdf" is invalid and has unknown results
arg = argv[++i];
@@ -645,7 +657,7 @@
}
// You gotta generate something!
- if (!gen_cpp && !gen_java && !gen_php && !gen_phpi && !gen_py && !gen_rb && !gen_xsd && !gen_perl) {
+ if (!gen_cpp && !gen_java && !gen_php && !gen_phpi && !gen_py && !gen_rb && !gen_xsd && !gen_perl && !gen_erl) {
fprintf(stderr, "!!! No output language(s) specified\n\n");
usage();
}