*
* @param tstruct The struct definition
*/
-void t_cpp_generator::generate_struct(t_struct* tstruct) {
- generate_struct_definition(f_types_, tstruct);
+void t_cpp_generator::generate_cpp_struct(t_struct* tstruct, bool is_exception) {
+ generate_struct_definition(f_types_, tstruct, is_exception);
generate_struct_reader(f_types_impl_, tstruct);
generate_struct_writer(f_types_impl_, tstruct);
}
* @param tstruct The struct
*/
void t_cpp_generator::generate_struct_definition(ofstream& out,
- t_struct* tstruct) {
+ t_struct* tstruct,
+ bool is_exception) {
+ string extends = "";
+ if (is_exception) {
+ extends = " : public facebook::thrift::TException";
+ }
+
// Open struct def
out <<
- indent() << "class " << tstruct->get_name() << " {" << endl <<
+ indent() << "class " << tstruct->get_name() << extends << " {" << endl <<
indent() << " public:" << endl <<
endl;
indent_up();
* Program-level generation functions
*/
- void generate_typedef (t_typedef* ttypedef);
- void generate_enum (t_enum* tenum);
- void generate_struct (t_struct* tstruct);
- void generate_service (t_service* tservice);
+ void generate_typedef(t_typedef* ttypedef);
+ void generate_enum(t_enum* tenum);
+ void generate_struct(t_struct* tstruct) {
+ generate_cpp_struct(tstruct, false);
+ }
+ void generate_xception(t_struct* txception) {
+ generate_cpp_struct(txception, true);
+ }
+ void generate_cpp_struct(t_struct* tstruct, bool is_exception);
+
+ void generate_service(t_service* tservice);
void print_const_value(std::ofstream& out, std::string name, t_type* type, t_const_value* value);
std::string render_const_value(std::ofstream& out, std::string name, t_type* type, t_const_value* value);
- void generate_struct_definition (std::ofstream& out, t_struct* tstruct);
+ void generate_struct_definition (std::ofstream& out, t_struct* tstruct, bool is_exception=false);
void generate_struct_reader (std::ofstream& out, t_struct* tstruct);
void generate_struct_writer (std::ofstream& out, t_struct* tstruct);
void generate_struct_result_writer (std::ofstream& out, t_struct* tstruct);