Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions compiler/cpp/src/thrift/generate/t_c_glib_generator.cc
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,8 @@ class t_c_glib_generator : public t_oop_generator {
void init_generator() override;
void close_generator() override;
std::string display_name() const override;
const std::string& get_gen_name() const override;
std::string get_namespace(t_type* type) override;

/* generation functions */
void generate_typedef(t_typedef* ttypedef) override;
Expand All @@ -125,6 +127,8 @@ class t_c_glib_generator : public t_oop_generator {
string nspace_uc;
string nspace_lc;

const string gen_name_ = "c_glib";

/* helper functions */
bool is_complex_type(t_type* ttype);
bool is_numeric(t_type* ttype);
Expand Down Expand Up @@ -215,6 +219,14 @@ class t_c_glib_generator : public t_oop_generator {
string generate_cmp_func_from_type(t_type* ttype);
};

const string& t_c_glib_generator::get_gen_name() const {
return gen_name_;
}

std::string t_c_glib_generator::get_namespace(t_type*) {
return nspace;
}

/**
* Prepare for file generation by opening up the necessary file
* output streams.
Expand Down
6 changes: 6 additions & 0 deletions compiler/cpp/src/thrift/generate/t_cl_generator.cc
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@ class t_cl_generator : public t_oop_generator {
void init_generator() override;
void close_generator() override;
std::string display_name() const override;
const std::string& get_gen_name() const override;

void generate_typedef (t_typedef* ttypedef) override;
void generate_enum (t_enum* tenum) override;
Expand Down Expand Up @@ -116,8 +117,13 @@ class t_cl_generator : public t_oop_generator {

bool no_asd;
std::string system_prefix;

const std::string gen_name_ = "cl";
};

const std::string& t_cl_generator::get_gen_name() const {
return gen_name_;
}

void t_cl_generator::init_generator() {
MKDIR(get_out_dir().c_str());
Expand Down
13 changes: 13 additions & 0 deletions compiler/cpp/src/thrift/generate/t_cpp_generator.cc
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,8 @@ class t_cpp_generator : public t_oop_generator {
void init_generator() override;
void close_generator() override;
std::string display_name() const override;
const std::string& get_gen_name() const override;
std::string get_namespace(t_type* type) override;

void generate_consts(std::vector<t_const*> consts) override;

Expand Down Expand Up @@ -434,6 +436,8 @@ class t_cpp_generator : public t_oop_generator {
std::string ns_open_;
std::string ns_close_;

const std::string gen_name_ = "cpp";

/**
* File streams, stored here to avoid passing them as parameters to every
* function.
Expand All @@ -455,6 +459,15 @@ class t_cpp_generator : public t_oop_generator {
friend class ProcessorGenerator;
};

const std::string& t_cpp_generator::get_gen_name() const {
return gen_name_;
}

std::string t_cpp_generator::get_namespace(t_type *type) {
std::string namespace_str = type->get_program()->get_namespace(get_gen_name());
return replace_all(namespace_str, ".", "::") + "::";
}

/**
* Prepares for file generation by opening up the necessary file output
* streams.
Expand Down
8 changes: 8 additions & 0 deletions compiler/cpp/src/thrift/generate/t_d_generator.cc
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ class t_d_generator : public t_oop_generator {
out_dir_base_ = "gen-d";
}
std::string display_name() const override;
const std::string& get_gen_name() const override;

protected:

Expand Down Expand Up @@ -367,6 +368,9 @@ class t_d_generator : public t_oop_generator {
}

private:

const std::string gen_name_ = "d";

/**
* Writes a server skeleton for the passed service to out.
*/
Expand Down Expand Up @@ -779,4 +783,8 @@ std::string t_d_generator::display_name() const {
}


const std::string& t_d_generator::get_gen_name() const {
return gen_name_;
}

THRIFT_REGISTER_GENERATOR(d, "D", "")
26 changes: 7 additions & 19 deletions compiler/cpp/src/thrift/generate/t_dart_generator.cc
Original file line number Diff line number Diff line change
Expand Up @@ -95,32 +95,14 @@ class t_dart_generator : public t_oop_generator {
indent(out) << "}" << postfix;
}

string replace_all(string contents, string search, string repl) {
string str(contents);

size_t slen = search.length();
size_t rlen = repl.length();
size_t incr = (rlen > 0) ? rlen : 1;

if (slen > 0) {
size_t found = str.find(search);
while ((found != string::npos) && (found < str.length())) {
str.replace(found, slen, repl);
found = str.find(search, found + incr);
}
}

return str;
}


/**
* Init and close methods
*/

void init_generator() override;
void close_generator() override;
std::string display_name() const override;
const std::string& get_gen_name() const override;

void export_class_to_library(string file_name, string class_name);

Expand Down Expand Up @@ -279,8 +261,14 @@ class t_dart_generator : public t_oop_generator {
std::string base_dir_;
std::string src_dir_;
std::string library_exports_;

const std::string gen_name_ = "dart";
};

const std::string& t_dart_generator::get_gen_name() const {
return gen_name_;
}

/**
* Prepares for file generation by opening up the necessary file output
* streams.
Expand Down
22 changes: 5 additions & 17 deletions compiler/cpp/src/thrift/generate/t_delphi_generator.cc
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,7 @@ class t_delphi_generator : public t_oop_generator {
void init_generator() override;
void close_generator() override;
std::string display_name() const override;
const std::string& get_gen_name() const override;

void generate_consts(std::vector<t_const*> consts) override;

Expand Down Expand Up @@ -359,7 +360,6 @@ class t_delphi_generator : public t_oop_generator {
" *)\n";
}

string replace_all(string contents, string search, string replace);
string xml_encode(string contents);
string xmldoc_encode(string contents);
string xmlattrib_encode(string contents);
Expand Down Expand Up @@ -468,24 +468,12 @@ class t_delphi_generator : public t_oop_generator {
return ind;
};
std::ostream& indent_impl(std::ostream& os) { return os << indent_impl(); };
};

string t_delphi_generator::replace_all(string contents, string search, string repl) {
string str(contents);

size_t slen = search.length();
size_t rlen = repl.length();
size_t incr = (rlen > 0) ? rlen : 1;

if (slen > 0) {
size_t found = str.find(search);
while ((found != string::npos) && (found < str.length())) {
str.replace(found, slen, repl);
found = str.find(search, found + incr);
}
}
const std::string gen_name_ = "delphi";
};

return str;
const std::string& t_delphi_generator::get_gen_name() const {
return gen_name_;
}

// XML encoding
Expand Down
18 changes: 18 additions & 0 deletions compiler/cpp/src/thrift/generate/t_haxe_generator.cc
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ class t_haxe_generator : public t_oop_generator {
void init_generator() override;
void close_generator() override;
std::string display_name() const override;
const std::string& get_gen_name() const override;

void generate_consts(std::vector<t_const*> consts) override;

Expand Down Expand Up @@ -253,8 +254,14 @@ class t_haxe_generator : public t_oop_generator {
std::string package_name_;
ofstream_with_content_based_conditional_update f_service_;
std::string package_dir_;

const std::string gen_name_ = "haxe";
};

const std::string& t_haxe_generator::get_gen_name() const {
return gen_name_;
}

/**
* Prepares for file generation by opening up the necessary file output
* streams.
Expand Down Expand Up @@ -3148,6 +3155,17 @@ void t_haxe_generator::generate_haxe_doc(ostream& out, t_function* tfunction) {
ss << " " << p->get_doc();
}
}

const vector<t_field*>& exceptions = tfunction->get_xceptions()->get_members();
vector<t_field*>::const_iterator e_iter;
for (e_iter = exceptions.begin(); e_iter != exceptions.end(); ++e_iter) {
t_field* e = *e_iter;
ss << "\n@throws " << type_name(e->get_type()) << " " << e->get_name();
if (e->has_doc()) {
ss << " " << e->get_doc();
}
}

generate_docstring_comment(out, "/**\n", " * ", ss.str(), " */\n");
}
}
Expand Down
8 changes: 8 additions & 0 deletions compiler/cpp/src/thrift/generate/t_java_generator.cc
Original file line number Diff line number Diff line change
Expand Up @@ -148,6 +148,7 @@ class t_java_generator : public t_oop_generator {
void init_generator() override;
void close_generator() override;
std::string display_name() const override;
const std::string& get_gen_name() const override;

void generate_consts(std::vector<t_const*> consts) override;

Expand Down Expand Up @@ -467,8 +468,15 @@ class t_java_generator : public t_oop_generator {
bool unsafe_binaries_;
bool annotations_as_metadata_;
bool jakarta_annotations_;

const std::string gen_name_ = "java";
};


const std::string& t_java_generator::get_gen_name() const {
return gen_name_;
}

/**
* Prepares for file generation by opening up the necessary file output
* streams.
Expand Down
35 changes: 13 additions & 22 deletions compiler/cpp/src/thrift/generate/t_javame_generator.cc
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,8 @@ class t_javame_generator : public t_oop_generator {
void init_generator() override;
void close_generator() override;
std::string display_name() const override;
const std::string& get_gen_name() const override;
std::string get_namespace(t_type* type) override;

void generate_consts(std::vector<t_const*> consts) override;

Expand Down Expand Up @@ -188,8 +190,6 @@ class t_javame_generator : public t_oop_generator {

void generate_java_doc(std::ostream& out, t_doc* tdoc) override;

void generate_java_doc(std::ostream& out, t_function* tdoc) override;

void generate_java_docstring_comment(std::ostream& out, string contents) override;

void generate_deep_copy_container(std::ostream& out,
Expand Down Expand Up @@ -242,8 +242,19 @@ class t_javame_generator : public t_oop_generator {
std::string package_name_;
ofstream_with_content_based_conditional_update f_service_;
std::string package_dir_;

const std::string gen_name_ = "javame";
};


const std::string& t_javame_generator::get_gen_name() const {
return gen_name_;
}

std::string t_javame_generator::get_namespace(t_type *type) {
return type->get_program()->get_namespace("java");
}

/**
* Prepares for file generation by opening up the necessary file output
* streams.
Expand Down Expand Up @@ -3054,26 +3065,6 @@ void t_javame_generator::generate_java_doc(ostream& out, t_doc* tdoc) {
}
}

/**
* Emits a JavaDoc comment if the provided function object has a doc in Thrift
*/
void t_javame_generator::generate_java_doc(ostream& out, t_function* tfunction) {
if (tfunction->has_doc()) {
stringstream ss;
ss << tfunction->get_doc();
const vector<t_field*>& fields = tfunction->get_arglist()->get_members();
vector<t_field*>::const_iterator p_iter;
for (p_iter = fields.begin(); p_iter != fields.end(); ++p_iter) {
t_field* p = *p_iter;
ss << "\n@param " << p->get_name();
if (p->has_doc()) {
ss << " " << p->get_doc();
}
}
generate_docstring_comment(out, "/**\n", " * ", ss.str(), " */\n");
}
}

void t_javame_generator::generate_deep_copy_container(ostream& out,
std::string source_name_p1,
std::string source_name_p2,
Expand Down
7 changes: 7 additions & 0 deletions compiler/cpp/src/thrift/generate/t_js_generator.cc
Original file line number Diff line number Diff line change
Expand Up @@ -160,6 +160,7 @@ class t_js_generator : public t_oop_generator {
void init_generator() override;
void close_generator() override;
std::string display_name() const override;
const std::string& get_gen_name() const override;

/**
* Program-level generation functions
Expand Down Expand Up @@ -478,8 +479,14 @@ class t_js_generator : public t_oop_generator {
ofstream_with_content_based_conditional_update f_service_;
ofstream_with_content_based_conditional_update f_types_ts_;
ofstream_with_content_based_conditional_update f_service_ts_;

const std::string gen_name_ = "js";
};

const std::string& t_js_generator::get_gen_name() const {
return gen_name_;
}

/**
* Prepares for file generation by opening up the necessary file output
* streams.
Expand Down
17 changes: 17 additions & 0 deletions compiler/cpp/src/thrift/generate/t_kotlin_generator.cc
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,8 @@ class t_kotlin_generator : public t_oop_generator {
void init_generator() override;
void close_generator() override;
std::string display_name() const override;
const std::string& get_gen_name() const override;
std::string get_namespace(t_type* type) override;

void generate_consts(std::vector<t_const*> consts) override;

Expand Down Expand Up @@ -171,8 +173,23 @@ class t_kotlin_generator : public t_oop_generator {
void generate_deserialize_container(ostream& out, t_type* ttype);

void generate_kotlin_union(t_struct* tstruct);

const std::string gen_name_ = "kotlin";
};

const std::string& t_kotlin_generator::get_gen_name() const {
return gen_name_;
}

std::string t_kotlin_generator::get_namespace(t_type *type) {
std::string namespace_str = type->get_program()->get_namespace(get_gen_name());
if (namespace_str.empty()) {
namespace_str = type->get_program()->get_namespace("java");
}

return namespace_str;
}

/**
* Prepares for file generation by opening up the necessary file output
* streams.
Expand Down
Loading