From 2dfdb2d7f761417856ba984cf0d7c29a0bd15f04 Mon Sep 17 00:00:00 2001 From: David Reiss Date: Thu, 27 Mar 2008 21:41:27 +0000 Subject: [PATCH] Remove t_csharp_generator.h. t_csharp_generator.h is no longer included anywhere, because the C# generator uses the new dynamic generator framework. Therefore, we can collapse the class definition into the .cc file. Also cleaned up its includes a little bit. git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@665609 13f79535-47bb-0310-9956-ffa450edef68 --- compiler/cpp/Makefile.am | 3 +- .../cpp/src/generate/t_csharp_generator.cc | 94 +++++++++++++++++- .../cpp/src/generate/t_csharp_generator.h | 99 ------------------- 3 files changed, 93 insertions(+), 103 deletions(-) delete mode 100644 compiler/cpp/src/generate/t_csharp_generator.h diff --git a/compiler/cpp/Makefile.am b/compiler/cpp/Makefile.am index ae53d4be..ab703b3c 100644 --- a/compiler/cpp/Makefile.am +++ b/compiler/cpp/Makefile.am @@ -45,8 +45,7 @@ thrift_SOURCES = src/thrifty.yy \ src/generate/t_rb_generator.h \ src/generate/t_xsd_generator.h \ src/generate/t_perl_generator.h \ - src/generate/t_erl_generator.h \ - src/generate/t_csharp_generator.h + src/generate/t_erl_generator.h if THRIFT_GEN_cpp thrift_SOURCES += src/generate/t_cpp_generator.cc diff --git a/compiler/cpp/src/generate/t_csharp_generator.cc b/compiler/cpp/src/generate/t_csharp_generator.cc index 3084a693..1e09bff4 100644 --- a/compiler/cpp/src/generate/t_csharp_generator.cc +++ b/compiler/cpp/src/generate/t_csharp_generator.cc @@ -3,14 +3,104 @@ // See accompanying file LICENSE or visit the Thrift site at: // http://developers.facebook.com/thrift/ +#include +#include +#include +#include + #include #include #include -#include "t_csharp_generator.h" -#include "../platform.h" +#include "platform.h" +#include "t_oop_generator.h" using namespace std; + +class t_csharp_generator : public t_oop_generator +{ + public: + t_csharp_generator( + t_program* program, + const std::map& parsed_options, + const std::string& option_string) + : t_oop_generator(program) + { + out_dir_base_ = "gen-csharp"; + } + void init_generator(); + void close_generator(); + + void generate_consts(std::vector consts); + + void generate_typedef (t_typedef* ttypedef); + void generate_enum (t_enum* tenum); + void generate_struct (t_struct* tstruct); + void generate_xception (t_struct* txception); + void generate_service (t_service* tservice); + bool print_const_value (std::ofstream& out, std::string name, t_type* type, t_const_value* value, bool in_static, bool defval=false, bool needtype=false); + std::string render_const_value(std::ofstream& out, std::string name, t_type* type, t_const_value* value); + void print_const_constructor(std::ofstream& out, std::vector consts); + void print_const_def_value(std::ofstream& out, std::string name, t_type* type, t_const_value* value); + + void generate_csharp_struct(t_struct* tstruct, bool is_exception); + void generate_csharp_struct_definition(std::ofstream& out, t_struct* tstruct, bool is_xception=false, bool in_class=false, bool is_result=false); + void generate_csharp_struct_reader(std::ofstream& out, t_struct* tstruct); + void generate_csharp_struct_result_writer(std::ofstream& out, t_struct* tstruct); + void generate_csharp_struct_writer(std::ofstream& out, t_struct* tstruct); + void generate_csharp_struct_tostring(std::ofstream& out, t_struct* tstruct); + + void generate_function_helpers(t_function* tfunction); + void generate_service_interface (t_service* tservice); + void generate_service_helpers (t_service* tservice); + void generate_service_client (t_service* tservice); + void generate_service_server (t_service* tservice); + void generate_process_function (t_service* tservice, t_function* function); + + void generate_deserialize_field (std::ofstream& out, t_field* tfield, std::string prefix=""); + void generate_deserialize_struct (std::ofstream& out, t_struct* tstruct, std::string prefix=""); + void generate_deserialize_container (std::ofstream& out, t_type* ttype, std::string prefix=""); + void generate_deserialize_set_element (std::ofstream& out, t_set* tset, std::string prefix=""); + void generate_deserialize_map_element (std::ofstream& out, t_map* tmap, std::string prefix=""); + void generate_deserialize_list_element (std::ofstream& out, t_list* list, std::string prefix=""); + void generate_serialize_field (std::ofstream& out, t_field* tfield, std::string prefix=""); + void generate_serialize_struct (std::ofstream& out, t_struct* tstruct, std::string prefix=""); + void generate_serialize_container (std::ofstream& out, t_type* ttype, std::string prefix=""); + void generate_serialize_map_element (std::ofstream& out, t_map* tmap, std::string iter, std::string map); + void generate_serialize_set_element (std::ofstream& out, t_set* tmap, std::string iter); + void generate_serialize_list_element (std::ofstream& out, t_list* tlist, std::string iter); + + void start_csharp_namespace (std::ofstream& out); + void end_csharp_namespace (std::ofstream& out); + + std::string csharp_type_usings(); + std::string csharp_thrift_usings(); + + std::string type_name(t_type* ttype, bool in_countainer=false, bool in_init=false); + std::string base_type_name(t_base_type* tbase, bool in_container=false); + std::string declare_field(t_field* tfield, bool init=false); + std::string function_signature(t_function* tfunction, std::string prefix=""); + std::string argument_list(t_struct* tstruct); + std::string type_to_enum(t_type* ttype); + + bool type_can_be_null(t_type* ttype) { + while (ttype->is_typedef()) { + ttype = ((t_typedef*)ttype)->get_type(); + } + + return ttype->is_container() || + ttype->is_struct() || + ttype->is_xception() || + ttype->is_string(); + } + + private: + std::string namespace_name_; + std::ofstream f_service_; + std::string namespace_dir_; +}; + + void t_csharp_generator::init_generator() { MKDIR(get_out_dir().c_str()); namespace_name_ = program_->get_csharp_namespace(); diff --git a/compiler/cpp/src/generate/t_csharp_generator.h b/compiler/cpp/src/generate/t_csharp_generator.h deleted file mode 100644 index 21c4b824..00000000 --- a/compiler/cpp/src/generate/t_csharp_generator.h +++ /dev/null @@ -1,99 +0,0 @@ -// Distributed under the Thrift Software License -// -// See accompanying file LICENSE or visit the Thrift site at: -// http://developers.facebook.com/thrift/ - -#ifndef T_CSHARP_GENERATOR_H -#define T_CSHARP_GENERATOR_H - -#include -#include -#include -#include - -#include "t_oop_generator.h" - -class t_csharp_generator : public t_oop_generator -{ - public: - t_csharp_generator( - t_program* program, - const std::map& parsed_options, - const std::string& option_string) - : t_oop_generator(program) - { - out_dir_base_ = "gen-csharp"; - } - void init_generator(); - void close_generator(); - - void generate_consts(std::vector consts); - - void generate_typedef (t_typedef* ttypedef); - void generate_enum (t_enum* tenum); - void generate_struct (t_struct* tstruct); - void generate_xception (t_struct* txception); - void generate_service (t_service* tservice); - bool print_const_value (std::ofstream& out, std::string name, t_type* type, t_const_value* value, bool in_static, bool defval=false, bool needtype=false); - std::string render_const_value(std::ofstream& out, std::string name, t_type* type, t_const_value* value); - void print_const_constructor(std::ofstream& out, std::vector consts); - void print_const_def_value(std::ofstream& out, std::string name, t_type* type, t_const_value* value); - - void generate_csharp_struct(t_struct* tstruct, bool is_exception); - void generate_csharp_struct_definition(std::ofstream& out, t_struct* tstruct, bool is_xception=false, bool in_class=false, bool is_result=false); - void generate_csharp_struct_reader(std::ofstream& out, t_struct* tstruct); - void generate_csharp_struct_result_writer(std::ofstream& out, t_struct* tstruct); - void generate_csharp_struct_writer(std::ofstream& out, t_struct* tstruct); - void generate_csharp_struct_tostring(std::ofstream& out, t_struct* tstruct); - - void generate_function_helpers(t_function* tfunction); - void generate_service_interface (t_service* tservice); - void generate_service_helpers (t_service* tservice); - void generate_service_client (t_service* tservice); - void generate_service_server (t_service* tservice); - void generate_process_function (t_service* tservice, t_function* function); - - void generate_deserialize_field (std::ofstream& out, t_field* tfield, std::string prefix=""); - void generate_deserialize_struct (std::ofstream& out, t_struct* tstruct, std::string prefix=""); - void generate_deserialize_container (std::ofstream& out, t_type* ttype, std::string prefix=""); - void generate_deserialize_set_element (std::ofstream& out, t_set* tset, std::string prefix=""); - void generate_deserialize_map_element (std::ofstream& out, t_map* tmap, std::string prefix=""); - void generate_deserialize_list_element (std::ofstream& out, t_list* list, std::string prefix=""); - void generate_serialize_field (std::ofstream& out, t_field* tfield, std::string prefix=""); - void generate_serialize_struct (std::ofstream& out, t_struct* tstruct, std::string prefix=""); - void generate_serialize_container (std::ofstream& out, t_type* ttype, std::string prefix=""); - void generate_serialize_map_element (std::ofstream& out, t_map* tmap, std::string iter, std::string map); - void generate_serialize_set_element (std::ofstream& out, t_set* tmap, std::string iter); - void generate_serialize_list_element (std::ofstream& out, t_list* tlist, std::string iter); - - void start_csharp_namespace (std::ofstream& out); - void end_csharp_namespace (std::ofstream& out); - - std::string csharp_type_usings(); - std::string csharp_thrift_usings(); - - std::string type_name(t_type* ttype, bool in_countainer=false, bool in_init=false); - std::string base_type_name(t_base_type* tbase, bool in_container=false); - std::string declare_field(t_field* tfield, bool init=false); - std::string function_signature(t_function* tfunction, std::string prefix=""); - std::string argument_list(t_struct* tstruct); - std::string type_to_enum(t_type* ttype); - - bool type_can_be_null(t_type* ttype) { - while (ttype->is_typedef()) { - ttype = ((t_typedef*)ttype)->get_type(); - } - - return ttype->is_container() || - ttype->is_struct() || - ttype->is_xception() || - ttype->is_string(); - } - - private: - std::string namespace_name_; - std::ofstream f_service_; - std::string namespace_dir_; -}; - -#endif -- 2.17.1