#include <sys/stat.h>
#include <sys/types.h>
#include <sstream>
-#include "t_alterl_generator.h"
+#include "t_erl_generator.h"
using namespace std;
*
* @param tprogram The program to generate
*/
-void t_alterl_generator::init_generator() {
+void t_erl_generator::init_generator() {
// Make output directory
mkdir(get_out_dir().c_str(), S_IRWXU | S_IRWXG | S_IRWXO);
/**
* Boilerplate at beginning and end of header files
*/
-void t_alterl_generator::hrl_header(ostream& out, string name) {
+void t_erl_generator::hrl_header(ostream& out, string name) {
out << "-ifndef(_" << name << "_included)." << endl <<
"-define(_" << name << "_included, yeah)." << endl;
}
-void t_alterl_generator::hrl_footer(ostream& out, string name) {
+void t_erl_generator::hrl_footer(ostream& out, string name) {
out << "-endif." << endl;
}
/**
* Renders all the imports necessary for including another Thrift program
*/
-string t_alterl_generator::render_includes() {
+string t_erl_generator::render_includes() {
const vector<t_program*>& includes = program_->get_includes();
string result = "";
for (size_t i = 0; i < includes.size(); ++i) {
/**
* Autogen'd comment
*/
-string t_alterl_generator::erl_autogen_comment() {
+string t_erl_generator::erl_autogen_comment() {
return
std::string("%%\n") +
"%% Autogenerated by Thrift\n" +
/**
* Prints standard thrift imports
*/
-string t_alterl_generator::erl_imports() {
+string t_erl_generator::erl_imports() {
return "";
}
/**
* Closes the type files
*/
-void t_alterl_generator::close_generator() {
+void t_erl_generator::close_generator() {
// Close types file
export_types_string("struct_info", 1);
*
* @param ttypedef The type definition
*/
-void t_alterl_generator::generate_typedef(t_typedef* ttypedef) {
+void t_erl_generator::generate_typedef(t_typedef* ttypedef) {
}
/**
*
* @param tenum The enumeration
*/
-void t_alterl_generator::generate_enum(t_enum* tenum) {
+void t_erl_generator::generate_enum(t_enum* tenum) {
vector<t_enum_value*> constants = tenum->get_constants();
vector<t_enum_value*>::iterator c_iter;
/**
* Generate a constant value
*/
-void t_alterl_generator::generate_const(t_const* tconst) {
+void t_erl_generator::generate_const(t_const* tconst) {
t_type* type = tconst->get_type();
string name = capitalize(tconst->get_name());
t_const_value* value = tconst->get_value();
* is NOT performed in this function as it is always run beforehand using the
* validate_types method in main.cc
*/
-string t_alterl_generator::render_const_value(t_type* type, t_const_value* value) {
+string t_erl_generator::render_const_value(t_type* type, t_const_value* value) {
std::ostringstream out;
if (type->is_base_type()) {
/**
* Generates a struct
*/
-void t_alterl_generator::generate_struct(t_struct* tstruct) {
+void t_erl_generator::generate_struct(t_struct* tstruct) {
generate_erl_struct(tstruct, false);
}
*
* @param txception The struct definition
*/
-void t_alterl_generator::generate_xception(t_struct* txception) {
+void t_erl_generator::generate_xception(t_struct* txception) {
generate_erl_struct(txception, true);
}
/**
* Generates a struct
*/
-void t_alterl_generator::generate_erl_struct(t_struct* tstruct,
+void t_erl_generator::generate_erl_struct(t_struct* tstruct,
bool is_exception) {
generate_erl_struct_definition(f_types_, f_types_hrl_file_, tstruct, is_exception);
}
*
* @param tstruct The struct definition
*/
-void t_alterl_generator::generate_erl_struct_definition(ostream& out,
+void t_erl_generator::generate_erl_struct_definition(ostream& out,
ostream& hrl_out,
t_struct* tstruct,
bool is_exception,
/**
* Generates the read method for a struct
*/
-void t_alterl_generator::generate_erl_struct_info(ostream& out,
+void t_erl_generator::generate_erl_struct_info(ostream& out,
t_struct* tstruct) {
string name = type_name(tstruct);
*
* @param tservice The service definition
*/
-void t_alterl_generator::generate_service(t_service* tservice) {
+void t_erl_generator::generate_service(t_service* tservice) {
// somehow this point is reached before the constructor and it's not downcased yet
// ...awesome
service_name_[0] = tolower(service_name_[0]);
*
* @param tservice The service to generate a header definition for
*/
-void t_alterl_generator::generate_service_helpers(t_service* tservice) {
+void t_erl_generator::generate_service_helpers(t_service* tservice) {
vector<t_function*> functions = tservice->get_functions();
vector<t_function*>::iterator f_iter;
*
* @param tfunction The function
*/
-void t_alterl_generator::generate_erl_function_helpers(t_function* tfunction) {
+void t_erl_generator::generate_erl_function_helpers(t_function* tfunction) {
}
/**
*
* @param tservice The service to generate a header definition for
*/
-void t_alterl_generator::generate_service_interface(t_service* tservice) {
+void t_erl_generator::generate_service_interface(t_service* tservice) {
export_string("function_info", 2);
* Generates a function_info(FunctionName, params_type) and
* function_info(FunctionName, reply_type)
*/
-void t_alterl_generator::generate_function_info(t_service* tservice,
+void t_erl_generator::generate_function_info(t_service* tservice,
t_function* tfunction) {
string name_atom = "'" + tfunction->get_name() + "'";
*
* @param ttype The type
*/
-string t_alterl_generator::declare_field(t_field* tfield) { // TODO
+string t_erl_generator::declare_field(t_field* tfield) { // TODO
string result = "@" + tfield->get_name();
t_type* type = get_true_type(tfield->get_type());
if (tfield->get_value() != NULL) {
* @param tfunction Function definition
* @return String of rendered function definition
*/
-string t_alterl_generator::function_signature(t_function* tfunction,
+string t_erl_generator::function_signature(t_function* tfunction,
string prefix) {
return
prefix + tfunction->get_name() +
/**
* Add a function to the exports list
*/
-void t_alterl_generator::export_string(string name, int num) {
+void t_erl_generator::export_string(string name, int num) {
if (export_lines_first_) {
export_lines_first_ = false;
} else {
export_lines_ << name << "/" << num;
}
-void t_alterl_generator::export_types_function(t_function* tfunction,
+void t_erl_generator::export_types_function(t_function* tfunction,
string prefix) {
export_types_string(prefix + tfunction->get_name(),
);
}
-void t_alterl_generator::export_types_string(string name, int num) {
+void t_erl_generator::export_types_string(string name, int num) {
if (export_types_lines_first_) {
export_types_lines_first_ = false;
} else {
export_types_lines_ << name << "/" << num;
}
-void t_alterl_generator::export_function(t_function* tfunction,
+void t_erl_generator::export_function(t_function* tfunction,
string prefix) {
export_string(prefix + tfunction->get_name(),
/**
* Renders a field list
*/
-string t_alterl_generator::argument_list(t_struct* tstruct) {
+string t_erl_generator::argument_list(t_struct* tstruct) {
string result = "";
const vector<t_field*>& fields = tstruct->get_members();
return result;
}
-string t_alterl_generator::type_name(t_type* ttype) {
+string t_erl_generator::type_name(t_type* ttype) {
string prefix = "";
string name = ttype->get_name();
/**
* Converts the parse type to a Erlang "type" (macro for int constants)
*/
-string t_alterl_generator::type_to_enum(t_type* type) {
+string t_erl_generator::type_to_enum(t_type* type) {
type = get_true_type(type);
if (type->is_base_type()) {
/**
* Generate an Erlang term which represents a thrift type
*/
-std::string t_alterl_generator::generate_type_term(t_type* type,
+std::string t_erl_generator::generate_type_term(t_type* type,
bool expand_structs) {
type = get_true_type(type);
throw "INVALID TYPE IN type_to_enum: " + type->get_name();
}
-std::string t_alterl_generator::type_module(t_type* ttype) {
+std::string t_erl_generator::type_module(t_type* ttype) {
return uncapitalize(ttype->get_program()->get_name()) + "_types";
}
#include "parse/t_scope.h"
#include "generate/t_php_generator.h"
#include "generate/t_xsd_generator.h"
-#include "generate/t_alterl_generator.h"
+#include "generate/t_erl_generator.h"
using namespace std;
bool gen_phpo = false;
bool gen_rest = false;
bool gen_perl = false;
-bool gen_alterl = false;
+bool gen_erl = false;
bool gen_ocaml = false;
bool gen_hs = false;
bool gen_cocoa = false;
fprintf(stderr, " -phpa Generate PHP with autoload (with -php)\n");
fprintf(stderr, " -phpo Generate PHP with object oriented subclasses (with -php)\n");
fprintf(stderr, " -xsd Generate XSD output files\n");
- fprintf(stderr, " -alterl Generate Alternative Erlang output files\n");
+ fprintf(stderr, " -erl Generate Erlang output files\n");
fprintf(stderr, " -o dir Set the output directory for gen-* packages\n");
fprintf(stderr, " (default: current directory)\n");
fprintf(stderr, " -I dir Add a directory to the list of directories\n");
delete xsd;
}
- if (gen_alterl) {
- pverbose("Generating Alternative Erlang\n");
- t_alterl_generator* alterl = new t_alterl_generator(program);
- alterl->generate_program();
- delete alterl;
+ if (gen_erl) {
+ pverbose("Generating Erlang\n");
+ t_erl_generator* erl = new t_erl_generator(program);
+ erl->generate_program();
+ delete erl;
}
if (dump_docs) {
gen_xsd = true;
} else if (strcmp(arg, "-perl") == 0) {
gen_perl = true;
- } else if (strcmp(arg, "-alterl") == 0) {
- gen_alterl = true;
+ } else if (strcmp(arg, "-erl") == 0) {
+ gen_erl = true;
} else if (strcmp(arg, "-ocaml") == 0) {
gen_ocaml = true;
} else if (strcmp(arg, "-hs") == 0) {
}
// You gotta generate something!
- if (!gen_php && !gen_phpi && !gen_xsd && !gen_alterl && generator_strings.empty()) {
+ if (!gen_php && !gen_phpi && !gen_xsd && !gen_erl && generator_strings.empty()) {
fprintf(stderr, "!!! No output language(s) specified\n\n");
usage();
}