From: Mark Slee Date: Wed, 21 Nov 2007 08:43:35 +0000 (+0000) Subject: Merging in some Smalltalk changes from Patrick Collison X-Git-Tag: 0.2.0~1111 X-Git-Url: https://source.supwisdom.com/gerrit/gitweb?a=commitdiff_plain;h=bd5882259de8bbe7e3f8283c8959d99acee9a501;p=common%2Fthrift.git Merging in some Smalltalk changes from Patrick Collison Reviewed By: mcslee Test Plan: Rebuild Thrift compiler git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@665361 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/compiler/cpp/src/generate/t_st_generator.cc b/compiler/cpp/src/generate/t_st_generator.cc index 0ac02d49..62a3e5b0 100644 --- a/compiler/cpp/src/generate/t_st_generator.cc +++ b/compiler/cpp/src/generate/t_st_generator.cc @@ -74,10 +74,14 @@ void t_st_generator::generate_force_consts() { void t_st_generator::close_generator() { generate_force_consts(); - f_.close(); } +string t_st_generator::generated_category() { + string cat = program_->get_smalltalk_category(); + return cat.size() ? cat : "Generated-" + class_name(); +} + /** * Generates a typedef. This is not done in Smalltalk, types are all implicit. * @@ -91,7 +95,7 @@ void t_st_generator::st_class_def(std::ofstream &out, string name) { out << indent() << "instanceVariableNames: ''" << endl << indent() << "classVariableNames: ''" << endl << indent() << "poolDictionaries: ''" << endl << - indent() << "category: 'Thrift-Generated-" << class_name() << "'!" << endl << endl; + indent() << "category: '" << generated_category() << "'!" << endl << endl; } void t_st_generator::st_method(std::ofstream &out, string cls, string name) { @@ -346,7 +350,7 @@ void t_st_generator::generate_st_struct(std::ofstream& out, t_struct* tstruct, b out << "'\n" << "\tclassVariableNames: ''\n" << "\tpoolDictionaries: ''\n" << - "\tcategory: 'Thrift-Generated-" << class_name() << "'!\n\n"; + "\tcategory: '" << generated_category() << "'!\n\n"; generate_accessors(out, tstruct); } @@ -378,8 +382,10 @@ void t_st_generator::generate_accessors(std::ofstream& out, t_struct* tstruct) { if (members.size() > 0) { for (m_iter = members.begin(); m_iter != members.end(); ++m_iter) { - st_accessors(out, capitalize(type_name(tstruct)), sanitize((*m_iter)->get_name()), - a_type((*m_iter)->get_type())); + st_accessors(out, + capitalize(type_name(tstruct)), + sanitize((*m_iter)->get_name()), + a_type((*m_iter)->get_type())); } out << endl; } @@ -547,14 +553,14 @@ string t_st_generator::struct_writer(t_struct *tstruct, string sname) { indent_up(); for (fld_iter = fields.begin(); fld_iter != fields.end(); ++fld_iter) { - bool optional = (*fld_iter)->get_req() == t_field::OPTIONAL; + bool optional = (*fld_iter)->get_req() == t_field::OPTIONAL; string fname = (*fld_iter)->get_name(); - string accessor = sname + " " + sanitize(fname); + string accessor = sname + " " + sanitize(fname); - if (optional) { - out << indent() << accessor << " ifNotNil: [" << endl; - indent_up(); - } + if (optional) { + out << indent() << accessor << " ifNotNil: [" << endl; + indent_up(); + } out << indent() << "oprot writeFieldBegin: (TField new name: '" << fname << "'; type: " << type_to_enum((*fld_iter)->get_type()) << @@ -563,15 +569,15 @@ string t_st_generator::struct_writer(t_struct *tstruct, string sname) { out << indent() << write_val((*fld_iter)->get_type(), accessor) << "." << endl << indent() << "oprot writeFieldEnd"; - if(optional) { - out << "]"; - indent_down(); - } + if (optional) { + out << "]"; + indent_down(); + } - out << "." << endl; + out << "." << endl; } - out << indent() << "oprot writeFieldStop; writeStructEnd] value"; + out << indent() << "oprot writeFieldStop; writeStructEnd] value"; indent_down(); return out.str(); @@ -585,8 +591,9 @@ string t_st_generator::struct_reader(t_struct *tstruct, string clsName = "") { string desc = temp_name(); string found = temp_name(); - if(clsName.size() == 0) + if (clsName.size() == 0) { clsName = tstruct->get_name(); + } out << "[|" << desc << " " << val << "|" << endl; indent_up(); @@ -606,48 +613,48 @@ string t_st_generator::struct_reader(t_struct *tstruct, string clsName = "") { out << indent() << found << " := true." << endl << indent() << val << " " << sanitize((*fld_iter)->get_name()) << ": " << - read_val((*fld_iter)->get_type()); + read_val((*fld_iter)->get_type()); indent_down(); - out << "]." << endl; + out << "]." << endl; } out << indent() << found << " ifNil: [iprot skip: " << desc << " type]]." << endl; indent_down(); out << indent() << "oprot readStructEnd." << endl << - indent() << val << "] value"; + indent() << val << "] value"; indent_down(); return out.str(); } string t_st_generator::write_val(t_type *t, string fname) { - t = get_true_type(t); - - if(t->is_base_type()) { - t_base_type::t_base tbase = ((t_base_type*) t)->get_base(); - switch(tbase) { - case t_base_type::TYPE_DOUBLE: - return "iprot writeDouble: " + fname + " asFloat"; - break; - case t_base_type::TYPE_BYTE: - case t_base_type::TYPE_I16: - case t_base_type::TYPE_I32: - case t_base_type::TYPE_I64: - return "iprot write" + capitalize(type_name(t)) + ": " + fname + " asInteger"; - default: - return "iprot write" + capitalize(type_name(t)) + ": " + fname; - } - } else if(t->is_map()) { + t = get_true_type(t); + + if (t->is_base_type()) { + t_base_type::t_base tbase = ((t_base_type*) t)->get_base(); + switch(tbase) { + case t_base_type::TYPE_DOUBLE: + return "iprot writeDouble: " + fname + " asFloat"; + break; + case t_base_type::TYPE_BYTE: + case t_base_type::TYPE_I16: + case t_base_type::TYPE_I32: + case t_base_type::TYPE_I64: + return "iprot write" + capitalize(type_name(t)) + ": " + fname + " asInteger"; + default: + return "iprot write" + capitalize(type_name(t)) + ": " + fname; + } + } else if (t->is_map()) { return map_writer((t_map*) t, fname); - } else if(t->is_struct() || t->is_xception()) { + } else if (t->is_struct() || t->is_xception()) { return struct_writer((t_struct*) t, fname); - } else if(t->is_list()) { + } else if (t->is_list()) { return list_writer((t_list*) t, fname); - } else if(t->is_set()) { + } else if (t->is_set()) { return set_writer((t_set*) t, fname); - } else if(t->is_enum()) { + } else if (t->is_enum()) { return "iprot writeI32: " + fname; } else { throw "Sorry, I don't know how to write this: " + type_name(t); @@ -655,19 +662,19 @@ string t_st_generator::write_val(t_type *t, string fname) { } string t_st_generator::read_val(t_type *t) { - t = get_true_type(t); + t = get_true_type(t); - if(t->is_base_type()) { + if (t->is_base_type()) { return "iprot read" + capitalize(type_name(t)); - } else if(t->is_map()) { + } else if (t->is_map()) { return map_reader((t_map*) t); - } else if(t->is_struct() || t->is_xception()) { + } else if (t->is_struct() || t->is_xception()) { return struct_reader((t_struct*) t); - } else if(t->is_list()) { + } else if (t->is_list()) { return list_reader((t_list*) t); - } else if(t->is_set()) { + } else if (t->is_set()) { return set_reader((t_set*) t); - } else if(t->is_enum()) { + } else if (t->is_enum()) { return "iprot readI32"; } else { throw "Sorry, I don't know how to read this: " + type_name(t); @@ -744,21 +751,22 @@ void t_st_generator::generate_recv_method(t_function* function) { } string t_st_generator::function_types_comment(t_function* fn) { - std::ostringstream out; + std::ostringstream out; const vector& fields = fn->get_arglist()->get_members(); vector::const_iterator f_iter; - out << "\""; + out << "\""; for (f_iter = fields.begin(); f_iter != fields.end(); ++f_iter) { - out << (*f_iter)->get_name() << ": " << type_name((*f_iter)->get_type()); - if((f_iter + 1) != fields.end()) - out << ", "; - } + out << (*f_iter)->get_name() << ": " << type_name((*f_iter)->get_type()); + if ((f_iter + 1) != fields.end()) { + out << ", "; + } + } - out << "\""; + out << "\""; - return out.str(); + return out.str(); } /** @@ -781,44 +789,47 @@ void t_st_generator::generate_service_client(t_service* tservice) { "\tinstanceVariableNames: ''\n" << "\tclassVariableNames: ''\n" << "\tpoolDictionaries: ''\n" << - "\tcategory: 'ThriftGenerated-" << class_name() << "'!\n\n"; + "\tcategory: '" << generated_category() << "'!\n\n"; for (f_iter = functions.begin(); f_iter != functions.end(); ++f_iter) { string funname = (*f_iter)->get_name(); string signature = function_signature(*f_iter); st_method(f_, client_class_name(), signature); - f_ << function_types_comment(*f_iter) << endl << - indent() << "self send" << capitalize(signature) << "." << endl; + f_ << function_types_comment(*f_iter) << endl << + indent() << "self send" << capitalize(signature) << "." << endl; - if(!(*f_iter)->is_async()) + if (!(*f_iter)->is_async()) { f_ << indent() << "^ self recv" << capitalize(funname) << " success " << endl; + } st_close_method(f_); generate_send_method(*f_iter); - if(!(*f_iter)->is_async()) generate_recv_method(*f_iter); + if (!(*f_iter)->is_async()) { + generate_recv_method(*f_iter); + } } } string t_st_generator::sanitize(string s) { - std::ostringstream out; - bool underscore = false; + std::ostringstream out; + bool underscore = false; - for(unsigned int i = 0; i < s.size(); i++) { - if(s[i] == '_') { - underscore = true; - continue; - } - if(underscore) { - out << (char) toupper(s[i]); - underscore = false; - continue; - } - out << s[i]; - } + for (unsigned int i = 0; i < s.size(); i++) { + if (s[i] == '_') { + underscore = true; + continue; + } + if (underscore) { + out << (char) toupper(s[i]); + underscore = false; + continue; + } + out << s[i]; + } - return out.str(); + return out.str(); } /** @@ -878,7 +889,7 @@ string t_st_generator::type_to_enum(t_type* type) { case t_base_type::TYPE_VOID: throw "NO T_VOID CONSTRUCT"; case t_base_type::TYPE_STRING: - return "TType string"; + return "TType string"; case t_base_type::TYPE_BOOL: return "TType bool"; case t_base_type::TYPE_BYTE: diff --git a/compiler/cpp/src/generate/t_st_generator.h b/compiler/cpp/src/generate/t_st_generator.h index 141555f0..6491cbdf 100644 --- a/compiler/cpp/src/generate/t_st_generator.h +++ b/compiler/cpp/src/generate/t_st_generator.h @@ -111,6 +111,7 @@ class t_st_generator : public t_oop_generator { std::string a_type(t_type* type); bool is_vowel(char c); std::string temp_name(); + std::string generated_category(); private: diff --git a/compiler/cpp/src/parse/t_program.h b/compiler/cpp/src/parse/t_program.h index 224c9d5c..ddc121c4 100644 --- a/compiler/cpp/src/parse/t_program.h +++ b/compiler/cpp/src/parse/t_program.h @@ -192,6 +192,14 @@ class t_program : public t_doc { return cocoa_prefix_; } + void set_smalltalk_category(std::string smalltalk_category) { + smalltalk_category_ = smalltalk_category; + } + + const std::string& get_smalltalk_category() const { + return smalltalk_category_; + } + private: // File path @@ -247,6 +255,8 @@ class t_program : public t_doc { // Cocoa/Objective-C naming prefix std::string cocoa_prefix_; + // Smalltalk category + std::string smalltalk_category_; }; diff --git a/compiler/cpp/src/thriftl.ll b/compiler/cpp/src/thriftl.ll index baaef5ca..d371658a 100644 --- a/compiler/cpp/src/thriftl.ll +++ b/compiler/cpp/src/thriftl.ll @@ -41,139 +41,141 @@ void thrift_reserved_keyword(char* keyword) { * Helper definitions, comments, constants, and whatnot */ -intconstant ([+-]?[0-9]+) -hexconstant ("0x"[0-9A-Fa-f]+) -dubconstant ([+-]?[0-9]*(\.[0-9]+)?([eE][+-]?[0-9]+)?) -identifier ([a-zA-Z_][\.a-zA-Z_0-9]*) -whitespace ([ \t\r\n]*) -sillycomm ("/*""*"*"*/") -multicomm ("/*"[^*]"/"*([^*/]|[^*]"/"|"*"[^/])*"*"*"*/") -doctext ("/**"([^*/]|[^*]"/"|"*"[^/])*"*"*"*/") -comment ("//"[^\n]*) -unixcomment ("#"[^\n]*) -symbol ([:;\,\{\}\(\)\=<>\[\]]) -dliteral ("\""[^"]*"\"") -sliteral ("'"[^']*"'") +intconstant ([+-]?[0-9]+) +hexconstant ("0x"[0-9A-Fa-f]+) +dubconstant ([+-]?[0-9]*(\.[0-9]+)?([eE][+-]?[0-9]+)?) +identifier ([a-zA-Z_][\.a-zA-Z_0-9]*) +whitespace ([ \t\r\n]*) +sillycomm ("/*""*"*"*/") +multicomm ("/*"[^*]"/"*([^*/]|[^*]"/"|"*"[^/])*"*"*"*/") +doctext ("/**"([^*/]|[^*]"/"|"*"[^/])*"*"*"*/") +comment ("//"[^\n]*) +unixcomment ("#"[^\n]*) +symbol ([:;\,\{\}\(\)\=<>\[\]]) +dliteral ("\""[^"]*"\"") +sliteral ("'"[^']*"'") +st_identifier ([a-zA-Z-][\.a-zA-Z_0-9-]*) %% -{whitespace} { /* do nothing */ } -{sillycomm} { /* do nothing */ } -{multicomm} { /* do nothing */ } -{comment} { /* do nothing */ } -{unixcomment} { /* do nothing */ } - -{symbol} { return yytext[0]; } - -"namespace" { return tok_namespace; } -"cpp_namespace" { return tok_cpp_namespace; } -"cpp_include" { return tok_cpp_include; } -"cpp_type" { return tok_cpp_type; } -"java_package" { return tok_java_package; } -"cocoa_prefix" { return tok_cocoa_prefix; } -"php_namespace" { return tok_php_namespace; } -"py_module" { return tok_py_module; } -"perl_package" { return tok_perl_package; } -"ruby_namespace" { return tok_ruby_namespace; } -"xsd_all" { return tok_xsd_all; } -"xsd_optional" { return tok_xsd_optional; } -"xsd_nillable" { return tok_xsd_nillable; } -"xsd_namespace" { return tok_xsd_namespace; } -"xsd_attrs" { return tok_xsd_attrs; } -"include" { return tok_include; } - -"void" { return tok_void; } -"bool" { return tok_bool; } -"byte" { return tok_byte; } -"i16" { return tok_i16; } -"i32" { return tok_i32; } -"i64" { return tok_i64; } -"double" { return tok_double; } -"string" { return tok_string; } -"binary" { return tok_binary; } -"slist" { return tok_slist; } -"senum" { return tok_senum; } -"map" { return tok_map; } -"list" { return tok_list; } -"set" { return tok_set; } -"async" { return tok_async; } -"typedef" { return tok_typedef; } -"struct" { return tok_struct; } -"exception" { return tok_xception; } -"extends" { return tok_extends; } -"throws" { return tok_throws; } -"service" { return tok_service; } -"enum" { return tok_enum; } -"const" { return tok_const; } -"required" { return tok_required; } -"optional" { return tok_optional; } - -"abstract" { thrift_reserved_keyword(yytext); } -"and" { thrift_reserved_keyword(yytext); } -"as" { thrift_reserved_keyword(yytext); } -"assert" { thrift_reserved_keyword(yytext); } -"break" { thrift_reserved_keyword(yytext); } -"case" { thrift_reserved_keyword(yytext); } -"class" { thrift_reserved_keyword(yytext); } -"continue" { thrift_reserved_keyword(yytext); } -"declare" { thrift_reserved_keyword(yytext); } -"def" { thrift_reserved_keyword(yytext); } -"default" { thrift_reserved_keyword(yytext); } -"del" { thrift_reserved_keyword(yytext); } -"delete" { thrift_reserved_keyword(yytext); } -"do" { thrift_reserved_keyword(yytext); } -"elif" { thrift_reserved_keyword(yytext); } -"else" { thrift_reserved_keyword(yytext); } -"elseif" { thrift_reserved_keyword(yytext); } -"except" { thrift_reserved_keyword(yytext); } -"exec" { thrift_reserved_keyword(yytext); } -"false" { thrift_reserved_keyword(yytext); } -"final" { thrift_reserved_keyword(yytext); } -"finally" { thrift_reserved_keyword(yytext); } -"float" { thrift_reserved_keyword(yytext); } -"for" { thrift_reserved_keyword(yytext); } -"foreach" { thrift_reserved_keyword(yytext); } -"function" { thrift_reserved_keyword(yytext); } -"global" { thrift_reserved_keyword(yytext); } -"goto" { thrift_reserved_keyword(yytext); } -"if" { thrift_reserved_keyword(yytext); } -"implements" { thrift_reserved_keyword(yytext); } -"import" { thrift_reserved_keyword(yytext); } -"in" { thrift_reserved_keyword(yytext); } -"inline" { thrift_reserved_keyword(yytext); } -"instanceof" { thrift_reserved_keyword(yytext); } -"interface" { thrift_reserved_keyword(yytext); } -"is" { thrift_reserved_keyword(yytext); } -"lambda" { thrift_reserved_keyword(yytext); } -"native" { thrift_reserved_keyword(yytext); } -"new" { thrift_reserved_keyword(yytext); } -"not" { thrift_reserved_keyword(yytext); } -"or" { thrift_reserved_keyword(yytext); } -"pass" { thrift_reserved_keyword(yytext); } -"public" { thrift_reserved_keyword(yytext); } -"print" { thrift_reserved_keyword(yytext); } -"private" { thrift_reserved_keyword(yytext); } -"protected" { thrift_reserved_keyword(yytext); } -"raise" { thrift_reserved_keyword(yytext); } -"return" { thrift_reserved_keyword(yytext); } -"sizeof" { thrift_reserved_keyword(yytext); } -"static" { thrift_reserved_keyword(yytext); } -"switch" { thrift_reserved_keyword(yytext); } -"synchronized" { thrift_reserved_keyword(yytext); } -"this" { thrift_reserved_keyword(yytext); } -"throw" { thrift_reserved_keyword(yytext); } -"transient" { thrift_reserved_keyword(yytext); } -"true" { thrift_reserved_keyword(yytext); } -"try" { thrift_reserved_keyword(yytext); } -"unsigned" { thrift_reserved_keyword(yytext); } -"var" { thrift_reserved_keyword(yytext); } -"virtual" { thrift_reserved_keyword(yytext); } -"volatile" { thrift_reserved_keyword(yytext); } -"while" { thrift_reserved_keyword(yytext); } -"with" { thrift_reserved_keyword(yytext); } -"union" { thrift_reserved_keyword(yytext); } -"yield" { thrift_reserved_keyword(yytext); } +{whitespace} { /* do nothing */ } +{sillycomm} { /* do nothing */ } +{multicomm} { /* do nothing */ } +{comment} { /* do nothing */ } +{unixcomment} { /* do nothing */ } + +{symbol} { return yytext[0]; } + +"namespace" { return tok_namespace; } +"cpp_namespace" { return tok_cpp_namespace; } +"cpp_include" { return tok_cpp_include; } +"cpp_type" { return tok_cpp_type; } +"java_package" { return tok_java_package; } +"cocoa_prefix" { return tok_cocoa_prefix; } +"php_namespace" { return tok_php_namespace; } +"py_module" { return tok_py_module; } +"perl_package" { return tok_perl_package; } +"ruby_namespace" { return tok_ruby_namespace; } +"smalltalk_category" { return tok_smalltalk_category; } +"xsd_all" { return tok_xsd_all; } +"xsd_optional" { return tok_xsd_optional; } +"xsd_nillable" { return tok_xsd_nillable; } +"xsd_namespace" { return tok_xsd_namespace; } +"xsd_attrs" { return tok_xsd_attrs; } +"include" { return tok_include; } +"void" { return tok_void; } +"bool" { return tok_bool; } +"byte" { return tok_byte; } +"i16" { return tok_i16; } +"i32" { return tok_i32; } +"i64" { return tok_i64; } +"double" { return tok_double; } +"string" { return tok_string; } +"binary" { return tok_binary; } +"slist" { return tok_slist; } +"senum" { return tok_senum; } +"map" { return tok_map; } +"list" { return tok_list; } +"set" { return tok_set; } +"async" { return tok_async; } +"typedef" { return tok_typedef; } +"struct" { return tok_struct; } +"exception" { return tok_xception; } +"extends" { return tok_extends; } +"throws" { return tok_throws; } +"service" { return tok_service; } +"enum" { return tok_enum; } +"const" { return tok_const; } +"required" { return tok_required; } +"optional" { return tok_optional; } + + +"abstract" { thrift_reserved_keyword(yytext); } +"and" { thrift_reserved_keyword(yytext); } +"as" { thrift_reserved_keyword(yytext); } +"assert" { thrift_reserved_keyword(yytext); } +"break" { thrift_reserved_keyword(yytext); } +"case" { thrift_reserved_keyword(yytext); } +"class" { thrift_reserved_keyword(yytext); } +"continue" { thrift_reserved_keyword(yytext); } +"declare" { thrift_reserved_keyword(yytext); } +"def" { thrift_reserved_keyword(yytext); } +"default" { thrift_reserved_keyword(yytext); } +"del" { thrift_reserved_keyword(yytext); } +"delete" { thrift_reserved_keyword(yytext); } +"do" { thrift_reserved_keyword(yytext); } +"elif" { thrift_reserved_keyword(yytext); } +"else" { thrift_reserved_keyword(yytext); } +"elseif" { thrift_reserved_keyword(yytext); } +"except" { thrift_reserved_keyword(yytext); } +"exec" { thrift_reserved_keyword(yytext); } +"false" { thrift_reserved_keyword(yytext); } +"final" { thrift_reserved_keyword(yytext); } +"finally" { thrift_reserved_keyword(yytext); } +"float" { thrift_reserved_keyword(yytext); } +"for" { thrift_reserved_keyword(yytext); } +"foreach" { thrift_reserved_keyword(yytext); } +"function" { thrift_reserved_keyword(yytext); } +"global" { thrift_reserved_keyword(yytext); } +"goto" { thrift_reserved_keyword(yytext); } +"if" { thrift_reserved_keyword(yytext); } +"implements" { thrift_reserved_keyword(yytext); } +"import" { thrift_reserved_keyword(yytext); } +"in" { thrift_reserved_keyword(yytext); } +"inline" { thrift_reserved_keyword(yytext); } +"instanceof" { thrift_reserved_keyword(yytext); } +"interface" { thrift_reserved_keyword(yytext); } +"is" { thrift_reserved_keyword(yytext); } +"lambda" { thrift_reserved_keyword(yytext); } +"native" { thrift_reserved_keyword(yytext); } +"new" { thrift_reserved_keyword(yytext); } +"not" { thrift_reserved_keyword(yytext); } +"or" { thrift_reserved_keyword(yytext); } +"pass" { thrift_reserved_keyword(yytext); } +"public" { thrift_reserved_keyword(yytext); } +"print" { thrift_reserved_keyword(yytext); } +"private" { thrift_reserved_keyword(yytext); } +"protected" { thrift_reserved_keyword(yytext); } +"raise" { thrift_reserved_keyword(yytext); } +"return" { thrift_reserved_keyword(yytext); } +"sizeof" { thrift_reserved_keyword(yytext); } +"static" { thrift_reserved_keyword(yytext); } +"switch" { thrift_reserved_keyword(yytext); } +"synchronized" { thrift_reserved_keyword(yytext); } +"this" { thrift_reserved_keyword(yytext); } +"throw" { thrift_reserved_keyword(yytext); } +"transient" { thrift_reserved_keyword(yytext); } +"true" { thrift_reserved_keyword(yytext); } +"try" { thrift_reserved_keyword(yytext); } +"unsigned" { thrift_reserved_keyword(yytext); } +"var" { thrift_reserved_keyword(yytext); } +"virtual" { thrift_reserved_keyword(yytext); } +"volatile" { thrift_reserved_keyword(yytext); } +"while" { thrift_reserved_keyword(yytext); } +"with" { thrift_reserved_keyword(yytext); } +"union" { thrift_reserved_keyword(yytext); } +"yield" { thrift_reserved_keyword(yytext); } {intconstant} { yylval.iconst = atoi(yytext); @@ -195,6 +197,11 @@ sliteral ("'"[^']*"'") return tok_identifier; } +{st_identifier} { + yylval.id = strdup(yytext); + return tok_st_identifier; +} + {dliteral} { yylval.id = strdup(yytext+1); yylval.id[strlen(yylval.id)-1] = '\0'; diff --git a/compiler/cpp/src/thrifty.yy b/compiler/cpp/src/thrifty.yy index cd727c10..5d7cfcc6 100644 --- a/compiler/cpp/src/thrifty.yy +++ b/compiler/cpp/src/thrifty.yy @@ -60,6 +60,7 @@ int g_arglist = 0; %token tok_identifier %token tok_literal %token tok_doctext +%token tok_st_identifier /** * Constant values @@ -85,6 +86,7 @@ int g_arglist = 0; %token tok_xsd_namespace %token tok_xsd_attrs %token tok_ruby_namespace +%token tok_smalltalk_category %token tok_cocoa_prefix /** @@ -211,7 +213,7 @@ Program: CaptureDocText: { if (g_parse_mode == PROGRAM) { - $$ = g_doctext; + $$ = g_doctext; g_doctext = NULL; } else { $$ = NULL; @@ -293,6 +295,13 @@ Header: g_program->set_ruby_namespace($2); } } +| tok_smalltalk_category tok_st_identifier + { + pdebug("Header -> tok_smalltalk_category tok_st_identifier"); + if (g_parse_mode == PROGRAM) { + g_program->set_smalltalk_category($2); + } + } | tok_java_package tok_identifier { pdebug("Header -> tok_java_package tok_identifier"); @@ -346,7 +355,7 @@ Definition: pdebug("Definition -> Const"); if (g_parse_mode == PROGRAM) { g_program->add_const($1); - } + } $$ = $1; } | TypeDefinition @@ -411,7 +420,7 @@ TypeDefinition: } Typedef: - tok_typedef DefinitionType tok_identifier + tok_typedef DefinitionType tok_identifier { pdebug("TypeDef -> tok_typedef DefinitionType tok_identifier"); t_typedef *td = new t_typedef(g_program, $2, $3); diff --git a/lib/st/README b/lib/st/README index 14c72db8..7ceb7ff0 100644 --- a/lib/st/README +++ b/lib/st/README @@ -1,11 +1,11 @@ Author: Patrick Collison Last updated Nov 2007 -To get started, just file in thrift.st with Squeak, and run something like: +To get started, just file in thrift.st with Squeak, run thrift -st +on the tutorial .thrift files (and file in the resulting code), and +then: -sock := TSocket new host: 'localhost'; port: 9090; open. -prot := TBinaryProtocol new transport: sock. -calc := CalculatorClient new inProtocol: prot. +calc := CalculatorClient binaryOnHost: 'localhost' port: '9090' calc addNum1: 10 num2: 15 -Tested in Squeak 3.7, but should work fine with anything later. \ No newline at end of file +Tested in Squeak 3.7, but should work fine with anything later. diff --git a/lib/st/thrift.st b/lib/st/thrift.st index c24f6161..445534cb 100644 --- a/lib/st/thrift.st +++ b/lib/st/thrift.st @@ -1,6 +1,5 @@ SystemOrganization addCategory: #Thrift! SystemOrganization addCategory: #'Thrift-Protocol'! -SystemOrganization addCategory: #'Thrift-Test'! SystemOrganization addCategory: #'Thrift-Transport'! Error subclass: #TError @@ -59,149 +58,19 @@ TTransportError subclass: #TTransportClosedError poolDictionaries: '' category: 'Thrift-Transport'! -Error subclass: #Xception - instanceVariableNames: 'errorCode message' - classVariableNames: '' - poolDictionaries: '' - category: 'Thrift-Test'! - -!Xception methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -errorCode - ^ errorCode! ! - -!Xception methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -errorCode: anI32 - errorCode := anI32! ! - -!Xception methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -message - ^ message! ! - -!Xception methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -message: aString - message := aString! ! - -Error subclass: #Xception2 - instanceVariableNames: 'errorCode structThing' - classVariableNames: '' - poolDictionaries: '' - category: 'Thrift-Test'! - -!Xception2 methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -errorCode - ^ errorCode! ! - -!Xception2 methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -errorCode: anI32 - errorCode := anI32! ! - -!Xception2 methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -structThing - ^ structThing! ! - -!Xception2 methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -structThing: aXtruct - structThing := aXtruct! ! - -Object subclass: #Bonk - instanceVariableNames: 'message type' - classVariableNames: '' - poolDictionaries: '' - category: 'Thrift-Test'! - -!Bonk methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -message - ^ message! ! - -!Bonk methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -message: aString - message := aString! ! - -!Bonk methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -type - ^ type! ! - -!Bonk methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -type: anI32 - type := anI32! ! - -Object subclass: #EmptyStruct - instanceVariableNames: '' - classVariableNames: '' - poolDictionaries: '' - category: 'Thrift-Test'! - -Object subclass: #Insanity - instanceVariableNames: 'userMap xtructs' - classVariableNames: '' - poolDictionaries: '' - category: 'Thrift-Test'! - -!Insanity methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -userMap - ^ userMap! ! - -!Insanity methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -userMap: a - userMap := a! ! - -!Insanity methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -xtructs - ^ xtructs! ! - -!Insanity methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -xtructs: a - xtructs := a! ! - Object subclass: #TClient instanceVariableNames: 'iprot oprot seqid remoteSeqid' classVariableNames: '' poolDictionaries: '' category: 'Thrift'! -TClient subclass: #SecondServiceClient - instanceVariableNames: '' - classVariableNames: '' - poolDictionaries: '' - category: 'Thrift-Test'! - -!SecondServiceClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -blahBlah - "" - self sendBlahBlah. - ^ self recvBlahBlah success -! ! - -!SecondServiceClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -recvBlahBlah - | f msg res | - msg := oprot readMessageBegin. - self validateRemoteMessage: msg. - res := [|temp118 temp117| - temp117 := TResult new. - iprot readStructBegin. - [temp118 := iprot readFieldBegin. - temp118 type = TType stop] whileFalse: [|temp119| - temp118 id = 0 ifTrue: [ - temp119 := true. - temp117 success: iprot readVoid]. - temp119 ifNil: [iprot skip: temp118 type]]. - oprot readStructEnd. - temp117] value. - oprot readMessageEnd. - oprot transport flush. - res exception ifNotNil: [res exception signal]. - ^ res! ! - -!SecondServiceClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -sendBlahBlah - oprot writeMessageBegin: - (TCallMessage new - name: 'blahBlah'; - seqid: self nextSeqid). - oprot writeStructBegin: (TStruct new name: 'BlahBlah_args'). - oprot writeFieldStop; writeStructEnd; writeMessageEnd. - oprot transport flush! ! +!TClient class methodsFor: 'as yet unclassified' stamp: 'pc 11/7/2007 06:00'! +binaryOnHost: aString port: anInteger + | sock | + sock := TSocket new host: aString; port: anInteger; open; yourself. + ^ self new + inProtocol: (TBinaryProtocol new transport: sock); + yourself! ! !TClient methodsFor: 'as yet unclassified' stamp: 'pc 10/24/2007 23:03'! inProtocol: aProtocol @@ -222,1134 +91,12 @@ outProtocol: aProtocol validateRemoteMessage: aMsg remoteSeqid ifNil: [remoteSeqid := aMsg seqid] - ifNotNil: + ifNotNil: [(remoteSeqid + 1) = aMsg seqid ifFalse: [TProtocolError signal: 'Bad seqid: ', aMsg seqid asString, '; wanted: ', remoteSeqid asString]. remoteSeqid := aMsg seqid]! ! -TClient subclass: #ThriftTestClient - instanceVariableNames: '' - classVariableNames: '' - poolDictionaries: '' - category: 'Thrift-Test'! - -!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -recvTestByte - | f msg res | - msg := oprot readMessageBegin. - self validateRemoteMessage: msg. - res := [|temp7 temp6| - temp6 := TResult new. - iprot readStructBegin. - [temp7 := iprot readFieldBegin. - temp7 type = TType stop] whileFalse: [|temp8| - temp7 id = 0 ifTrue: [ - temp8 := true. - temp6 success: iprot readByte]. - temp8 ifNil: [iprot skip: temp7 type]]. - oprot readStructEnd. - temp6] value. - oprot readMessageEnd. - oprot transport flush. - res exception ifNotNil: [res exception signal]. - ^ res! ! - -!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -recvTestDouble - | f msg res | - msg := oprot readMessageBegin. - self validateRemoteMessage: msg. - res := [|temp19 temp18| - temp18 := TResult new. - iprot readStructBegin. - [temp19 := iprot readFieldBegin. - temp19 type = TType stop] whileFalse: [|temp20| - temp19 id = 0 ifTrue: [ - temp20 := true. - temp18 success: iprot readDouble]. - temp20 ifNil: [iprot skip: temp19 type]]. - oprot readStructEnd. - temp18] value. - oprot readMessageEnd. - oprot transport flush. - res exception ifNotNil: [res exception signal]. - ^ res! ! - -!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -recvTestEnum - | f msg res | - msg := oprot readMessageBegin. - self validateRemoteMessage: msg. - res := [|temp56 temp55| - temp55 := TResult new. - iprot readStructBegin. - [temp56 := iprot readFieldBegin. - temp56 type = TType stop] whileFalse: [|temp57| - temp56 id = 0 ifTrue: [ - temp57 := true. - temp55 success: iprot readI32]. - temp57 ifNil: [iprot skip: temp56 type]]. - oprot readStructEnd. - temp55] value. - oprot readMessageEnd. - oprot transport flush. - res exception ifNotNil: [res exception signal]. - ^ res! ! - -!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -recvTestException - | f msg res | - msg := oprot readMessageBegin. - self validateRemoteMessage: msg. - res := [|temp97 temp96| - temp96 := TResult new. - iprot readStructBegin. - [temp97 := iprot readFieldBegin. - temp97 type = TType stop] whileFalse: [|temp98| - temp97 id = 0 ifTrue: [ - temp98 := true. - temp96 success: iprot readVoid]. - temp97 id = -2 ifTrue: [ - temp98 := true. - temp96 exception: [|temp100 temp99| - temp99 := Xception new. - iprot readStructBegin. - [temp100 := iprot readFieldBegin. - temp100 type = TType stop] whileFalse: [|temp101| - temp100 id = 1 ifTrue: [ - temp101 := true. - temp99 errorCode: iprot readI32]. - temp100 id = 2 ifTrue: [ - temp101 := true. - temp99 message: iprot readString]. - temp101 ifNil: [iprot skip: temp100 type]]. - oprot readStructEnd. - temp99] value]. - temp98 ifNil: [iprot skip: temp97 type]]. - oprot readStructEnd. - temp96] value. - oprot readMessageEnd. - oprot transport flush. - res exception ifNotNil: [res exception signal]. - ^ res! ! - -!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -recvTestI16 - | f msg res | - msg := oprot readMessageBegin. - self validateRemoteMessage: msg. - res := [|temp10 temp9| - temp9 := TResult new. - iprot readStructBegin. - [temp10 := iprot readFieldBegin. - temp10 type = TType stop] whileFalse: [|temp11| - temp10 id = 0 ifTrue: [ - temp11 := true. - temp9 success: iprot readI16]. - temp11 ifNil: [iprot skip: temp10 type]]. - oprot readStructEnd. - temp9] value. - oprot readMessageEnd. - oprot transport flush. - res exception ifNotNil: [res exception signal]. - ^ res! ! - -!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -recvTestI32 - | f msg res | - msg := oprot readMessageBegin. - self validateRemoteMessage: msg. - res := [|temp13 temp12| - temp12 := TResult new. - iprot readStructBegin. - [temp13 := iprot readFieldBegin. - temp13 type = TType stop] whileFalse: [|temp14| - temp13 id = 0 ifTrue: [ - temp14 := true. - temp12 success: iprot readI32]. - temp14 ifNil: [iprot skip: temp13 type]]. - oprot readStructEnd. - temp12] value. - oprot readMessageEnd. - oprot transport flush. - res exception ifNotNil: [res exception signal]. - ^ res! ! - -!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -recvTestI64 - | f msg res | - msg := oprot readMessageBegin. - self validateRemoteMessage: msg. - res := [|temp16 temp15| - temp15 := TResult new. - iprot readStructBegin. - [temp16 := iprot readFieldBegin. - temp16 type = TType stop] whileFalse: [|temp17| - temp16 id = 0 ifTrue: [ - temp17 := true. - temp15 success: iprot readI64]. - temp17 ifNil: [iprot skip: temp16 type]]. - oprot readStructEnd. - temp15] value. - oprot readMessageEnd. - oprot transport flush. - res exception ifNotNil: [res exception signal]. - ^ res! ! - -!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -recvTestInsanity - | f msg res | - msg := oprot readMessageBegin. - self validateRemoteMessage: msg. - res := [|temp72 temp71| - temp71 := TResult new. - iprot readStructBegin. - [temp72 := iprot readFieldBegin. - temp72 type = TType stop] whileFalse: [|temp73| - temp72 id = 0 ifTrue: [ - temp73 := true. - temp71 success: [|temp74 temp75| - temp74 := iprot readMapBegin. - temp75 := Dictionary new. - temp74 size timesRepeat: [ - temp75 at: iprot readI64 put: [|temp76 temp77| - temp76 := iprot readMapBegin. - temp77 := Dictionary new. - temp76 size timesRepeat: [ - temp77 at: iprot readI32 put: [|temp79 temp78| - temp78 := Insanity new. - iprot readStructBegin. - [temp79 := iprot readFieldBegin. - temp79 type = TType stop] whileFalse: [|temp80| - temp79 id = 1 ifTrue: [ - temp80 := true. - temp78 userMap: [|temp81 temp82| - temp81 := iprot readMapBegin. - temp82 := Dictionary new. - temp81 size timesRepeat: [ - temp82 at: iprot readI32 put: iprot readI64]. - iprot readMapEnd. - temp82] value]. - temp79 id = 2 ifTrue: [ - temp80 := true. - temp78 xtructs: [|temp83 temp84| temp83 := iprot readListBegin. - temp84 := OrderedCollection new. - temp83 size timesRepeat: [ - temp84 add: [|temp86 temp85| - temp85 := Xtruct new. - iprot readStructBegin. - [temp86 := iprot readFieldBegin. - temp86 type = TType stop] whileFalse: [|temp87| - temp86 id = 1 ifTrue: [ - temp87 := true. - temp85 stringThing: iprot readString]. - temp86 id = 4 ifTrue: [ - temp87 := true. - temp85 byteThing: iprot readByte]. - temp86 id = 9 ifTrue: [ - temp87 := true. - temp85 i32Thing: iprot readI32]. - temp86 id = 11 ifTrue: [ - temp87 := true. - temp85 i64Thing: iprot readI64]. - temp87 ifNil: [iprot skip: temp86 type]]. - oprot readStructEnd. - temp85] value]. - iprot readListEnd. - temp84] value]. - temp80 ifNil: [iprot skip: temp79 type]]. - oprot readStructEnd. - temp78] value]. - iprot readMapEnd. - temp77] value]. - iprot readMapEnd. - temp75] value]. - temp73 ifNil: [iprot skip: temp72 type]]. - oprot readStructEnd. - temp71] value. - oprot readMessageEnd. - oprot transport flush. - res exception ifNotNil: [res exception signal]. - ^ res! ! - -!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -recvTestList - | f msg res | - msg := oprot readMessageBegin. - self validateRemoteMessage: msg. - res := [|temp51 temp50| - temp50 := TResult new. - iprot readStructBegin. - [temp51 := iprot readFieldBegin. - temp51 type = TType stop] whileFalse: [|temp52| - temp51 id = 0 ifTrue: [ - temp52 := true. - temp50 success: [|temp53 temp54| temp53 := iprot readListBegin. - temp54 := OrderedCollection new. - temp53 size timesRepeat: [ - temp54 add: iprot readI32]. - iprot readListEnd. - temp54] value]. - temp52 ifNil: [iprot skip: temp51 type]]. - oprot readStructEnd. - temp50] value. - oprot readMessageEnd. - oprot transport flush. - res exception ifNotNil: [res exception signal]. - ^ res! ! - -!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -recvTestMap - | f msg res | - msg := oprot readMessageBegin. - self validateRemoteMessage: msg. - res := [|temp39 temp38| - temp38 := TResult new. - iprot readStructBegin. - [temp39 := iprot readFieldBegin. - temp39 type = TType stop] whileFalse: [|temp40| - temp39 id = 0 ifTrue: [ - temp40 := true. - temp38 success: [|temp41 temp42| - temp41 := iprot readMapBegin. - temp42 := Dictionary new. - temp41 size timesRepeat: [ - temp42 at: iprot readI32 put: iprot readI32]. - iprot readMapEnd. - temp42] value]. - temp40 ifNil: [iprot skip: temp39 type]]. - oprot readStructEnd. - temp38] value. - oprot readMessageEnd. - oprot transport flush. - res exception ifNotNil: [res exception signal]. - ^ res! ! - -!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -recvTestMapMap - | f msg res | - msg := oprot readMessageBegin. - self validateRemoteMessage: msg. - res := [|temp62 temp61| - temp61 := TResult new. - iprot readStructBegin. - [temp62 := iprot readFieldBegin. - temp62 type = TType stop] whileFalse: [|temp63| - temp62 id = 0 ifTrue: [ - temp63 := true. - temp61 success: [|temp64 temp65| - temp64 := iprot readMapBegin. - temp65 := Dictionary new. - temp64 size timesRepeat: [ - temp65 at: iprot readI32 put: [|temp66 temp67| - temp66 := iprot readMapBegin. - temp67 := Dictionary new. - temp66 size timesRepeat: [ - temp67 at: iprot readI32 put: iprot readI32]. - iprot readMapEnd. - temp67] value]. - iprot readMapEnd. - temp65] value]. - temp63 ifNil: [iprot skip: temp62 type]]. - oprot readStructEnd. - temp61] value. - oprot readMessageEnd. - oprot transport flush. - res exception ifNotNil: [res exception signal]. - ^ res! ! - -!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -recvTestMulti - | f msg res | - msg := oprot readMessageBegin. - self validateRemoteMessage: msg. - res := [|temp91 temp90| - temp90 := TResult new. - iprot readStructBegin. - [temp91 := iprot readFieldBegin. - temp91 type = TType stop] whileFalse: [|temp92| - temp91 id = 0 ifTrue: [ - temp92 := true. - temp90 success: [|temp94 temp93| - temp93 := Xtruct new. - iprot readStructBegin. - [temp94 := iprot readFieldBegin. - temp94 type = TType stop] whileFalse: [|temp95| - temp94 id = 1 ifTrue: [ - temp95 := true. - temp93 stringThing: iprot readString]. - temp94 id = 4 ifTrue: [ - temp95 := true. - temp93 byteThing: iprot readByte]. - temp94 id = 9 ifTrue: [ - temp95 := true. - temp93 i32Thing: iprot readI32]. - temp94 id = 11 ifTrue: [ - temp95 := true. - temp93 i64Thing: iprot readI64]. - temp95 ifNil: [iprot skip: temp94 type]]. - oprot readStructEnd. - temp93] value]. - temp92 ifNil: [iprot skip: temp91 type]]. - oprot readStructEnd. - temp90] value. - oprot readMessageEnd. - oprot transport flush. - res exception ifNotNil: [res exception signal]. - ^ res! ! - -!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -recvTestMultiException - | f msg res | - msg := oprot readMessageBegin. - self validateRemoteMessage: msg. - res := [|temp103 temp102| - temp102 := TResult new. - iprot readStructBegin. - [temp103 := iprot readFieldBegin. - temp103 type = TType stop] whileFalse: [|temp104| - temp103 id = 0 ifTrue: [ - temp104 := true. - temp102 success: [|temp106 temp105| - temp105 := Xtruct new. - iprot readStructBegin. - [temp106 := iprot readFieldBegin. - temp106 type = TType stop] whileFalse: [|temp107| - temp106 id = 1 ifTrue: [ - temp107 := true. - temp105 stringThing: iprot readString]. - temp106 id = 4 ifTrue: [ - temp107 := true. - temp105 byteThing: iprot readByte]. - temp106 id = 9 ifTrue: [ - temp107 := true. - temp105 i32Thing: iprot readI32]. - temp106 id = 11 ifTrue: [ - temp107 := true. - temp105 i64Thing: iprot readI64]. - temp107 ifNil: [iprot skip: temp106 type]]. - oprot readStructEnd. - temp105] value]. - temp103 id = -3 ifTrue: [ - temp104 := true. - temp102 exception: [|temp109 temp108| - temp108 := Xception new. - iprot readStructBegin. - [temp109 := iprot readFieldBegin. - temp109 type = TType stop] whileFalse: [|temp110| - temp109 id = 1 ifTrue: [ - temp110 := true. - temp108 errorCode: iprot readI32]. - temp109 id = 2 ifTrue: [ - temp110 := true. - temp108 message: iprot readString]. - temp110 ifNil: [iprot skip: temp109 type]]. - oprot readStructEnd. - temp108] value]. - temp103 id = -4 ifTrue: [ - temp104 := true. - temp102 exception: [|temp112 temp111| - temp111 := Xception2 new. - iprot readStructBegin. - [temp112 := iprot readFieldBegin. - temp112 type = TType stop] whileFalse: [|temp113| - temp112 id = 1 ifTrue: [ - temp113 := true. - temp111 errorCode: iprot readI32]. - temp112 id = 2 ifTrue: [ - temp113 := true. - temp111 structThing: [|temp115 temp114| - temp114 := Xtruct new. - iprot readStructBegin. - [temp115 := iprot readFieldBegin. - temp115 type = TType stop] whileFalse: [|temp116| - temp115 id = 1 ifTrue: [ - temp116 := true. - temp114 stringThing: iprot readString]. - temp115 id = 4 ifTrue: [ - temp116 := true. - temp114 byteThing: iprot readByte]. - temp115 id = 9 ifTrue: [ - temp116 := true. - temp114 i32Thing: iprot readI32]. - temp115 id = 11 ifTrue: [ - temp116 := true. - temp114 i64Thing: iprot readI64]. - temp116 ifNil: [iprot skip: temp115 type]]. - oprot readStructEnd. - temp114] value]. - temp113 ifNil: [iprot skip: temp112 type]]. - oprot readStructEnd. - temp111] value]. - temp104 ifNil: [iprot skip: temp103 type]]. - oprot readStructEnd. - temp102] value. - oprot readMessageEnd. - oprot transport flush. - res exception ifNotNil: [res exception signal]. - ^ res! ! - -!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -recvTestNest - | f msg res | - msg := oprot readMessageBegin. - self validateRemoteMessage: msg. - res := [|temp28 temp27| - temp27 := TResult new. - iprot readStructBegin. - [temp28 := iprot readFieldBegin. - temp28 type = TType stop] whileFalse: [|temp29| - temp28 id = 0 ifTrue: [ - temp29 := true. - temp27 success: [|temp31 temp30| - temp30 := Xtruct2 new. - iprot readStructBegin. - [temp31 := iprot readFieldBegin. - temp31 type = TType stop] whileFalse: [|temp32| - temp31 id = 1 ifTrue: [ - temp32 := true. - temp30 byteThing: iprot readByte]. - temp31 id = 2 ifTrue: [ - temp32 := true. - temp30 structThing: [|temp34 temp33| - temp33 := Xtruct new. - iprot readStructBegin. - [temp34 := iprot readFieldBegin. - temp34 type = TType stop] whileFalse: [|temp35| - temp34 id = 1 ifTrue: [ - temp35 := true. - temp33 stringThing: iprot readString]. - temp34 id = 4 ifTrue: [ - temp35 := true. - temp33 byteThing: iprot readByte]. - temp34 id = 9 ifTrue: [ - temp35 := true. - temp33 i32Thing: iprot readI32]. - temp34 id = 11 ifTrue: [ - temp35 := true. - temp33 i64Thing: iprot readI64]. - temp35 ifNil: [iprot skip: temp34 type]]. - oprot readStructEnd. - temp33] value]. - temp31 id = 3 ifTrue: [ - temp32 := true. - temp30 i32Thing: iprot readI32]. - temp32 ifNil: [iprot skip: temp31 type]]. - oprot readStructEnd. - temp30] value]. - temp29 ifNil: [iprot skip: temp28 type]]. - oprot readStructEnd. - temp27] value. - oprot readMessageEnd. - oprot transport flush. - res exception ifNotNil: [res exception signal]. - ^ res! ! - -!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -recvTestSet - | f msg res | - msg := oprot readMessageBegin. - self validateRemoteMessage: msg. - res := [|temp45 temp44| - temp44 := TResult new. - iprot readStructBegin. - [temp45 := iprot readFieldBegin. - temp45 type = TType stop] whileFalse: [|temp46| - temp45 id = 0 ifTrue: [ - temp46 := true. - temp44 success: [|temp47 temp48| temp47 := iprot readSetBegin. - temp48 := Set new. - temp47 size timesRepeat: [ - temp48 add: iprot readI32]. - iprot readSetEnd. - temp48] value]. - temp46 ifNil: [iprot skip: temp45 type]]. - oprot readStructEnd. - temp44] value. - oprot readMessageEnd. - oprot transport flush. - res exception ifNotNil: [res exception signal]. - ^ res! ! - -!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -recvTestString - | f msg res | - msg := oprot readMessageBegin. - self validateRemoteMessage: msg. - res := [|temp4 temp3| - temp3 := TResult new. - iprot readStructBegin. - [temp4 := iprot readFieldBegin. - temp4 type = TType stop] whileFalse: [|temp5| - temp4 id = 0 ifTrue: [ - temp5 := true. - temp3 success: iprot readString]. - temp5 ifNil: [iprot skip: temp4 type]]. - oprot readStructEnd. - temp3] value. - oprot readMessageEnd. - oprot transport flush. - res exception ifNotNil: [res exception signal]. - ^ res! ! - -!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -recvTestStruct - | f msg res | - msg := oprot readMessageBegin. - self validateRemoteMessage: msg. - res := [|temp22 temp21| - temp21 := TResult new. - iprot readStructBegin. - [temp22 := iprot readFieldBegin. - temp22 type = TType stop] whileFalse: [|temp23| - temp22 id = 0 ifTrue: [ - temp23 := true. - temp21 success: [|temp25 temp24| - temp24 := Xtruct new. - iprot readStructBegin. - [temp25 := iprot readFieldBegin. - temp25 type = TType stop] whileFalse: [|temp26| - temp25 id = 1 ifTrue: [ - temp26 := true. - temp24 stringThing: iprot readString]. - temp25 id = 4 ifTrue: [ - temp26 := true. - temp24 byteThing: iprot readByte]. - temp25 id = 9 ifTrue: [ - temp26 := true. - temp24 i32Thing: iprot readI32]. - temp25 id = 11 ifTrue: [ - temp26 := true. - temp24 i64Thing: iprot readI64]. - temp26 ifNil: [iprot skip: temp25 type]]. - oprot readStructEnd. - temp24] value]. - temp23 ifNil: [iprot skip: temp22 type]]. - oprot readStructEnd. - temp21] value. - oprot readMessageEnd. - oprot transport flush. - res exception ifNotNil: [res exception signal]. - ^ res! ! - -!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -recvTestTypedef - | f msg res | - msg := oprot readMessageBegin. - self validateRemoteMessage: msg. - res := [|temp59 temp58| - temp58 := TResult new. - iprot readStructBegin. - [temp59 := iprot readFieldBegin. - temp59 type = TType stop] whileFalse: [|temp60| - temp59 id = 0 ifTrue: [ - temp60 := true. - temp58 success: iprot readI64]. - temp60 ifNil: [iprot skip: temp59 type]]. - oprot readStructEnd. - temp58] value. - oprot readMessageEnd. - oprot transport flush. - res exception ifNotNil: [res exception signal]. - ^ res! ! - -!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -recvTestVoid - | f msg res | - msg := oprot readMessageBegin. - self validateRemoteMessage: msg. - res := [|temp1 temp0| - temp0 := TResult new. - iprot readStructBegin. - [temp1 := iprot readFieldBegin. - temp1 type = TType stop] whileFalse: [|temp2| - temp1 id = 0 ifTrue: [ - temp2 := true. - temp0 success: iprot readVoid]. - temp2 ifNil: [iprot skip: temp1 type]]. - oprot readStructEnd. - temp0] value. - oprot readMessageEnd. - oprot transport flush. - res exception ifNotNil: [res exception signal]. - ^ res! ! - -!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -sendTestByteThing: thing - oprot writeMessageBegin: - (TCallMessage new - name: 'testByte'; - seqid: self nextSeqid). - oprot writeStructBegin: (TStruct new name: 'TestByte_args'). - oprot writeFieldBegin: (TField new name: 'thing'; type: TType byte; id: 1). - iprot writeByte: thing asInteger. - oprot writeFieldEnd. - oprot writeFieldStop; writeStructEnd; writeMessageEnd. - oprot transport flush! ! - -!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -sendTestDoubleThing: thing - oprot writeMessageBegin: - (TCallMessage new - name: 'testDouble'; - seqid: self nextSeqid). - oprot writeStructBegin: (TStruct new name: 'TestDouble_args'). - oprot writeFieldBegin: (TField new name: 'thing'; type: TType double; id: 1). - iprot writeDouble: thing asFloat. - oprot writeFieldEnd. - oprot writeFieldStop; writeStructEnd; writeMessageEnd. - oprot transport flush! ! - -!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -sendTestEnumThing: thing - oprot writeMessageBegin: - (TCallMessage new - name: 'testEnum'; - seqid: self nextSeqid). - oprot writeStructBegin: (TStruct new name: 'TestEnum_args'). - oprot writeFieldBegin: (TField new name: 'thing'; type: TType i32; id: 1). - iprot writeI32: thing. - oprot writeFieldEnd. - oprot writeFieldStop; writeStructEnd; writeMessageEnd. - oprot transport flush! ! - -!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -sendTestExceptionArg: arg - oprot writeMessageBegin: - (TCallMessage new - name: 'testException'; - seqid: self nextSeqid). - oprot writeStructBegin: (TStruct new name: 'TestException_args'). - oprot writeFieldBegin: (TField new name: 'arg'; type: TType string; id: -1). - iprot writeString: arg. - oprot writeFieldEnd. - oprot writeFieldStop; writeStructEnd; writeMessageEnd. - oprot transport flush! ! - -!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -sendTestI16Thing: thing - oprot writeMessageBegin: - (TCallMessage new - name: 'testI16'; - seqid: self nextSeqid). - oprot writeStructBegin: (TStruct new name: 'TestI16_args'). - oprot writeFieldBegin: (TField new name: 'thing'; type: TType i16; id: 1). - iprot writeI16: thing asInteger. - oprot writeFieldEnd. - oprot writeFieldStop; writeStructEnd; writeMessageEnd. - oprot transport flush! ! - -!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -sendTestI32Thing: thing - oprot writeMessageBegin: - (TCallMessage new - name: 'testI32'; - seqid: self nextSeqid). - oprot writeStructBegin: (TStruct new name: 'TestI32_args'). - oprot writeFieldBegin: (TField new name: 'thing'; type: TType i32; id: 1). - iprot writeI32: thing asInteger. - oprot writeFieldEnd. - oprot writeFieldStop; writeStructEnd; writeMessageEnd. - oprot transport flush! ! - -!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -sendTestI64Thing: thing - oprot writeMessageBegin: - (TCallMessage new - name: 'testI64'; - seqid: self nextSeqid). - oprot writeStructBegin: (TStruct new name: 'TestI64_args'). - oprot writeFieldBegin: (TField new name: 'thing'; type: TType i64; id: 1). - iprot writeI64: thing asInteger. - oprot writeFieldEnd. - oprot writeFieldStop; writeStructEnd; writeMessageEnd. - oprot transport flush! ! - -!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -sendTestInsanityArgument: argument - oprot writeMessageBegin: - (TCallMessage new - name: 'testInsanity'; - seqid: self nextSeqid). - oprot writeStructBegin: (TStruct new name: 'TestInsanity_args'). - oprot writeFieldBegin: (TField new name: 'argument'; type: TType struct; id: 1). - [oprot writeStructBegin: (TStruct new name: 'Insanity'). - oprot writeFieldBegin: (TField new name: 'userMap'; type: TType map; id: 1). - [oprot writeMapBegin: (TMap new keyType: TType i32; valueType: TType i64; size: argument userMap size). - argument userMap keysAndValuesDo: [:temp68 :temp69 | - iprot writeI32: temp68. - iprot writeI64: temp69 asInteger]. - oprot writeMapEnd] value. - oprot writeFieldEnd. - oprot writeFieldBegin: (TField new name: 'xtructs'; type: TType list; id: 2). - [oprot writeListBegin: (TList new elemType: TType struct; size: argument xtructs size). - argument xtructs do: [:temp70| - [oprot writeStructBegin: (TStruct new name: 'Xtruct'). - oprot writeFieldBegin: (TField new name: 'string_thing'; type: TType string; id: 1). - iprot writeString: temp70 stringThing. - oprot writeFieldEnd. - oprot writeFieldBegin: (TField new name: 'byte_thing'; type: TType byte; id: 4). - iprot writeByte: temp70 byteThing asInteger. - oprot writeFieldEnd. - oprot writeFieldBegin: (TField new name: 'i32_thing'; type: TType i32; id: 9). - iprot writeI32: temp70 i32Thing asInteger. - oprot writeFieldEnd. - oprot writeFieldBegin: (TField new name: 'i64_thing'; type: TType i64; id: 11). - iprot writeI64: temp70 i64Thing asInteger. - oprot writeFieldEnd. - oprot writeFieldStop; writeStructEnd] value -]. - oprot writeListEnd] value. - oprot writeFieldEnd. - oprot writeFieldStop; writeStructEnd] value. - oprot writeFieldEnd. - oprot writeFieldStop; writeStructEnd; writeMessageEnd. - oprot transport flush! ! - -!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -sendTestListThing: thing - oprot writeMessageBegin: - (TCallMessage new - name: 'testList'; - seqid: self nextSeqid). - oprot writeStructBegin: (TStruct new name: 'TestList_args'). - oprot writeFieldBegin: (TField new name: 'thing'; type: TType list; id: 1). - [oprot writeListBegin: (TList new elemType: TType i32; size: thing size). - thing do: [:temp49| - iprot writeI32: temp49 asInteger -]. - oprot writeListEnd] value. - oprot writeFieldEnd. - oprot writeFieldStop; writeStructEnd; writeMessageEnd. - oprot transport flush! ! - -!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -sendTestMapMapHello: hello - oprot writeMessageBegin: - (TCallMessage new - name: 'testMapMap'; - seqid: self nextSeqid). - oprot writeStructBegin: (TStruct new name: 'TestMapMap_args'). - oprot writeFieldBegin: (TField new name: 'hello'; type: TType i32; id: 1). - iprot writeI32: hello asInteger. - oprot writeFieldEnd. - oprot writeFieldStop; writeStructEnd; writeMessageEnd. - oprot transport flush! ! - -!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -sendTestMapThing: thing - oprot writeMessageBegin: - (TCallMessage new - name: 'testMap'; - seqid: self nextSeqid). - oprot writeStructBegin: (TStruct new name: 'TestMap_args'). - oprot writeFieldBegin: (TField new name: 'thing'; type: TType map; id: 1). - [oprot writeMapBegin: (TMap new keyType: TType i32; valueType: TType i32; size: thing size). - thing keysAndValuesDo: [:temp36 :temp37 | - iprot writeI32: temp36 asInteger. - iprot writeI32: temp37 asInteger]. - oprot writeMapEnd] value. - oprot writeFieldEnd. - oprot writeFieldStop; writeStructEnd; writeMessageEnd. - oprot transport flush! ! - -!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -sendTestMultiArg0: arg0 arg1: arg1 arg2: arg2 arg3: arg3 arg4: arg4 arg5: arg5 - oprot writeMessageBegin: - (TCallMessage new - name: 'testMulti'; - seqid: self nextSeqid). - oprot writeStructBegin: (TStruct new name: 'TestMulti_args'). - oprot writeFieldBegin: (TField new name: 'arg0'; type: TType byte; id: -1). - iprot writeByte: arg0 asInteger. - oprot writeFieldEnd. - oprot writeFieldBegin: (TField new name: 'arg1'; type: TType i32; id: -2). - iprot writeI32: arg1 asInteger. - oprot writeFieldEnd. - oprot writeFieldBegin: (TField new name: 'arg2'; type: TType i64; id: -3). - iprot writeI64: arg2 asInteger. - oprot writeFieldEnd. - oprot writeFieldBegin: (TField new name: 'arg3'; type: TType map; id: -4). - [oprot writeMapBegin: (TMap new keyType: TType i16; valueType: TType string; size: arg3 size). - arg3 keysAndValuesDo: [:temp88 :temp89 | - iprot writeI16: temp88 asInteger. - iprot writeString: temp89]. - oprot writeMapEnd] value. - oprot writeFieldEnd. - oprot writeFieldBegin: (TField new name: 'arg4'; type: TType i32; id: -5). - iprot writeI32: arg4. - oprot writeFieldEnd. - oprot writeFieldBegin: (TField new name: 'arg5'; type: TType i64; id: -6). - iprot writeI64: arg5 asInteger. - oprot writeFieldEnd. - oprot writeFieldStop; writeStructEnd; writeMessageEnd. - oprot transport flush! ! - -!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -sendTestMultiExceptionArg0: arg0 arg1: arg1 - oprot writeMessageBegin: - (TCallMessage new - name: 'testMultiException'; - seqid: self nextSeqid). - oprot writeStructBegin: (TStruct new name: 'TestMultiException_args'). - oprot writeFieldBegin: (TField new name: 'arg0'; type: TType string; id: -1). - iprot writeString: arg0. - oprot writeFieldEnd. - oprot writeFieldBegin: (TField new name: 'arg1'; type: TType string; id: -2). - iprot writeString: arg1. - oprot writeFieldEnd. - oprot writeFieldStop; writeStructEnd; writeMessageEnd. - oprot transport flush! ! - -!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -sendTestNestThing: thing - oprot writeMessageBegin: - (TCallMessage new - name: 'testNest'; - seqid: self nextSeqid). - oprot writeStructBegin: (TStruct new name: 'TestNest_args'). - oprot writeFieldBegin: (TField new name: 'thing'; type: TType struct; id: 1). - [oprot writeStructBegin: (TStruct new name: 'Xtruct2'). - oprot writeFieldBegin: (TField new name: 'byte_thing'; type: TType byte; id: 1). - iprot writeByte: thing byteThing asInteger. - oprot writeFieldEnd. - oprot writeFieldBegin: (TField new name: 'struct_thing'; type: TType struct; id: 2). - [oprot writeStructBegin: (TStruct new name: 'Xtruct'). - oprot writeFieldBegin: (TField new name: 'string_thing'; type: TType string; id: 1). - iprot writeString: thing structThing stringThing. - oprot writeFieldEnd. - oprot writeFieldBegin: (TField new name: 'byte_thing'; type: TType byte; id: 4). - iprot writeByte: thing structThing byteThing asInteger. - oprot writeFieldEnd. - oprot writeFieldBegin: (TField new name: 'i32_thing'; type: TType i32; id: 9). - iprot writeI32: thing structThing i32Thing asInteger. - oprot writeFieldEnd. - oprot writeFieldBegin: (TField new name: 'i64_thing'; type: TType i64; id: 11). - iprot writeI64: thing structThing i64Thing asInteger. - oprot writeFieldEnd. - oprot writeFieldStop; writeStructEnd] value. - oprot writeFieldEnd. - oprot writeFieldBegin: (TField new name: 'i32_thing'; type: TType i32; id: 3). - iprot writeI32: thing i32Thing asInteger. - oprot writeFieldEnd. - oprot writeFieldStop; writeStructEnd] value. - oprot writeFieldEnd. - oprot writeFieldStop; writeStructEnd; writeMessageEnd. - oprot transport flush! ! - -!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -sendTestSetThing: thing - oprot writeMessageBegin: - (TCallMessage new - name: 'testSet'; - seqid: self nextSeqid). - oprot writeStructBegin: (TStruct new name: 'TestSet_args'). - oprot writeFieldBegin: (TField new name: 'thing'; type: TType set; id: 1). - [oprot writeSetBegin: (TSet new elemType: TType i32; size: thing size). - thing do: [:temp43| - iprot writeI32: temp43 asInteger -]. - oprot writeSetEnd] value. - oprot writeFieldEnd. - oprot writeFieldStop; writeStructEnd; writeMessageEnd. - oprot transport flush! ! - -!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -sendTestStringThing: thing - oprot writeMessageBegin: - (TCallMessage new - name: 'testString'; - seqid: self nextSeqid). - oprot writeStructBegin: (TStruct new name: 'TestString_args'). - oprot writeFieldBegin: (TField new name: 'thing'; type: TType string; id: 1). - iprot writeString: thing. - oprot writeFieldEnd. - oprot writeFieldStop; writeStructEnd; writeMessageEnd. - oprot transport flush! ! - -!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -sendTestStructThing: thing - oprot writeMessageBegin: - (TCallMessage new - name: 'testStruct'; - seqid: self nextSeqid). - oprot writeStructBegin: (TStruct new name: 'TestStruct_args'). - oprot writeFieldBegin: (TField new name: 'thing'; type: TType struct; id: 1). - [oprot writeStructBegin: (TStruct new name: 'Xtruct'). - oprot writeFieldBegin: (TField new name: 'string_thing'; type: TType string; id: 1). - iprot writeString: thing stringThing. - oprot writeFieldEnd. - oprot writeFieldBegin: (TField new name: 'byte_thing'; type: TType byte; id: 4). - iprot writeByte: thing byteThing asInteger. - oprot writeFieldEnd. - oprot writeFieldBegin: (TField new name: 'i32_thing'; type: TType i32; id: 9). - iprot writeI32: thing i32Thing asInteger. - oprot writeFieldEnd. - oprot writeFieldBegin: (TField new name: 'i64_thing'; type: TType i64; id: 11). - iprot writeI64: thing i64Thing asInteger. - oprot writeFieldEnd. - oprot writeFieldStop; writeStructEnd] value. - oprot writeFieldEnd. - oprot writeFieldStop; writeStructEnd; writeMessageEnd. - oprot transport flush! ! - -!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -sendTestTypedefThing: thing - oprot writeMessageBegin: - (TCallMessage new - name: 'testTypedef'; - seqid: self nextSeqid). - oprot writeStructBegin: (TStruct new name: 'TestTypedef_args'). - oprot writeFieldBegin: (TField new name: 'thing'; type: TType i64; id: 1). - iprot writeI64: thing asInteger. - oprot writeFieldEnd. - oprot writeFieldStop; writeStructEnd; writeMessageEnd. - oprot transport flush! ! - -!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -sendTestVoid - oprot writeMessageBegin: - (TCallMessage new - name: 'testVoid'; - seqid: self nextSeqid). - oprot writeStructBegin: (TStruct new name: 'TestVoid_args'). - oprot writeFieldStop; writeStructEnd; writeMessageEnd. - oprot transport flush! ! - -!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -testByteThing: thing - "thing: byte" - self sendTestByteThing: thing. - ^ self recvTestByte success -! ! - -!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -testDoubleThing: thing - "thing: double" - self sendTestDoubleThing: thing. - ^ self recvTestDouble success -! ! - -!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -testEnumThing: thing - "thing: Numberz" - self sendTestEnumThing: thing. - ^ self recvTestEnum success -! ! - -!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -testExceptionArg: arg - "arg: string" - self sendTestExceptionArg: arg. - ^ self recvTestException success -! ! - -!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -testI16Thing: thing - "thing: i16" - self sendTestI16Thing: thing. - ^ self recvTestI16 success -! ! - -!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -testI32Thing: thing - "thing: i32" - self sendTestI32Thing: thing. - ^ self recvTestI32 success -! ! - -!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -testI64Thing: thing - "thing: i64" - self sendTestI64Thing: thing. - ^ self recvTestI64 success -! ! - -!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -testInsanityArgument: argument - "argument: Insanity" - self sendTestInsanityArgument: argument. - ^ self recvTestInsanity success -! ! - -!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -testListThing: thing - "thing: " - self sendTestListThing: thing. - ^ self recvTestList success -! ! - -!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -testMapMapHello: hello - "hello: i32" - self sendTestMapMapHello: hello. - ^ self recvTestMapMap success -! ! - -!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -testMapThing: thing - "thing: " - self sendTestMapThing: thing. - ^ self recvTestMap success -! ! - -!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -testMultiArg0: arg0 arg1: arg1 arg2: arg2 arg3: arg3 arg4: arg4 arg5: arg5 - "arg0: byte, arg1: i32, arg2: i64, arg3: , arg4: Numberz, arg5: UserId" - self sendTestMultiArg0: arg0 arg1: arg1 arg2: arg2 arg3: arg3 arg4: arg4 arg5: arg5. - ^ self recvTestMulti success -! ! - -!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -testMultiExceptionArg0: arg0 arg1: arg1 - "arg0: string, arg1: string" - self sendTestMultiExceptionArg0: arg0 arg1: arg1. - ^ self recvTestMultiException success -! ! - -!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -testNestThing: thing - "thing: Xtruct2" - self sendTestNestThing: thing. - ^ self recvTestNest success -! ! - -!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -testSetThing: thing - "thing: " - self sendTestSetThing: thing. - ^ self recvTestSet success -! ! - -!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -testStringThing: thing - "thing: string" - self sendTestStringThing: thing. - ^ self recvTestString success -! ! - -!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -testStructThing: thing - "thing: Xtruct" - self sendTestStructThing: thing. - ^ self recvTestStruct success -! ! - -!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -testTypedefThing: thing - "thing: UserId" - self sendTestTypedefThing: thing. - ^ self recvTestTypedef success -! ! - -!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -testVoid - "" - self sendTestVoid. - ^ self recvTestVoid success -! ! - Object subclass: #TField instanceVariableNames: 'name type id' classVariableNames: '' @@ -1459,7 +206,7 @@ readDouble readFieldBegin | field | field := TField new type: self readByte. - + ^ field type = TType stop ifTrue: [field] ifFalse: [field id: self readI16; yourself]! ! @@ -1502,10 +249,10 @@ readMapBegin readMessageBegin | version | version := self readI32. - + (version bitAnd: self versionMask) = self version1 ifFalse: [TProtocolError signalWithCode: TProtocolError badVersion]. - + ^ TMessage new type: (version bitAnd: 16r000000FF); name: self readString; @@ -1711,7 +458,7 @@ skip: aType set := self readSetBegin. set size timesRepeat: [self skip: set elemType]. ^ self readSetEnd]. - + self error: 'Unknown type'! ! !TProtocol methodsFor: 'as yet unclassified' stamp: 'pc 10/24/2007 23:02'! @@ -1933,42 +680,6 @@ name name: aString name := aString! ! -Object subclass: #TTest - instanceVariableNames: 'prot' - classVariableNames: '' - poolDictionaries: '' - category: 'Thrift-Test'! - -!TTest methodsFor: 'as yet unclassified' stamp: 'pc 11/1/2007 04:47'! -protocol: aProtocol - prot := aProtocol! ! - -!TTest methodsFor: 'as yet unclassified' stamp: 'pc 11/1/2007 04:49'! -runAll - | c | - c := ThriftTestClient new inProtocol: prot. - c testByteThing: 32. - c testDoubleThing: -1.0. - c testEnumThing: 1. - c testExceptionArg: 'foo'. - c testI16Thing: 16. - c testI16Thing: -16. - c testI32Thing: 32. - c testI32Thing: -32. - c testI64Thing: 123. - c testDoubleThing: 1.2. - c testStructThing: (Xtruct new byteThing: 1; i32Thing: 2; i64Thing: 3; stringThing: 'foo'). - c testSetThing: (Set new). - c testListThing: (OrderedCollection new). - c testEnumThing: 1. - c testInsanityArgument: - (Insanity new - userMap: (Dictionary new at: 1 put: 2; yourself); - xtructs: (OrderedCollection new)). - c testMultiArg0: 1 arg1: 2 arg2: 3 arg3: (Dictionary new) arg4: ((ThriftTest enums at: 'Numberz') at: 'FIVE') arg5: 6. - c testExceptionArg: 'Xception'. - c testMultiExceptionArg0: 'Xception' arg1: 'Xception2'! ! - Object subclass: #TTransport instanceVariableNames: '' classVariableNames: '' @@ -2077,71 +788,3 @@ typeMap !TType class methodsFor: 'as yet unclassified' stamp: 'pc 10/24/2007 17:03'! void ^ 1! ! - -Object subclass: #Xtruct - instanceVariableNames: 'stringThing byteThing i32Thing i64Thing' - classVariableNames: '' - poolDictionaries: '' - category: 'Thrift-Test'! - -!Xtruct methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -byteThing - ^ byteThing! ! - -!Xtruct methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -byteThing: aByte - byteThing := aByte! ! - -!Xtruct methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -i32Thing - ^ i32Thing! ! - -!Xtruct methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -i32Thing: anI32 - i32Thing := anI32! ! - -!Xtruct methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -i64Thing - ^ i64Thing! ! - -!Xtruct methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -i64Thing: anI64 - i64Thing := anI64! ! - -!Xtruct methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -stringThing - ^ stringThing! ! - -!Xtruct methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -stringThing: aString - stringThing := aString! ! - -Object subclass: #Xtruct2 - instanceVariableNames: 'byteThing structThing i32Thing' - classVariableNames: '' - poolDictionaries: '' - category: 'Thrift-Test'! - -!Xtruct2 methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -byteThing - ^ byteThing! ! - -!Xtruct2 methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -byteThing: aByte - byteThing := aByte! ! - -!Xtruct2 methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -i32Thing - ^ i32Thing! ! - -!Xtruct2 methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -i32Thing: anI32 - i32Thing := anI32! ! - -!Xtruct2 methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -structThing - ^ structThing! ! - -!Xtruct2 methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'! -structThing: aXtruct - structThing := aXtruct! ! diff --git a/tutorial/tutorial.thrift b/tutorial/tutorial.thrift index 7b377d66..f5e58364 100755 --- a/tutorial/tutorial.thrift +++ b/tutorial/tutorial.thrift @@ -48,6 +48,7 @@ cpp_namespace tutorial java_package tutorial php_namespace tutorial perl_package tutorial +smalltalk_category Thrift-Tutorial /** * Thrift lets you do typedefs to get pretty names for your types. Standard