Author: kclark
Date: Thu Oct 16 12:15:20 2008
New Revision: 705330
URL: http://svn.apache.org/viewvc?rev=705330&view=rev
Log:
rb: Create constants for field ids in generated structs [THRIFT-165]
Author: Bryan Duxbury
Modified:
incubator/thrift/trunk/compiler/cpp/src/generate/t_java_generator.cc
incubator/thrift/trunk/compiler/cpp/src/generate/t_oop_generator.h
incubator/thrift/trunk/compiler/cpp/src/generate/t_rb_generator.cc
incubator/thrift/trunk/lib/rb/benchmark/gen-rb/BenchmarkService.rb
incubator/thrift/trunk/lib/rb/spec/gen-rb/NonblockingService.rb
incubator/thrift/trunk/lib/rb/spec/gen-rb/ThriftSpec_types.rb
Modified: incubator/thrift/trunk/compiler/cpp/src/generate/t_java_generator.cc
URL:
http://svn.apache.org/viewvc/incubator/thrift/trunk/compiler/cpp/src/generate/t_java_generator.cc?rev=705330&r1=705329&r2=705330&view=diff
==============================================================================
--- incubator/thrift/trunk/compiler/cpp/src/generate/t_java_generator.cc
(original)
+++ incubator/thrift/trunk/compiler/cpp/src/generate/t_java_generator.cc Thu
Oct 16 12:15:20 2008
@@ -44,12 +44,6 @@
out_dir_base_ = (bean_style_ ? "gen-javabean" : "gen-java");
}
- string upcase_string(string original) {
- std::transform(original.begin(), original.end(), original.begin(),
(int(*)(int)) toupper);
- return original;
- }
-
-
/**
* Init and close methods
*/
Modified: incubator/thrift/trunk/compiler/cpp/src/generate/t_oop_generator.h
URL:
http://svn.apache.org/viewvc/incubator/thrift/trunk/compiler/cpp/src/generate/t_oop_generator.h?rev=705330&r1=705329&r2=705330&view=diff
==============================================================================
--- incubator/thrift/trunk/compiler/cpp/src/generate/t_oop_generator.h
(original)
+++ incubator/thrift/trunk/compiler/cpp/src/generate/t_oop_generator.h Thu Oct
16 12:15:20 2008
@@ -35,6 +35,11 @@
indent(out) << "}" << std::endl;
}
+ std::string upcase_string(std::string original) {
+ std::transform(original.begin(), original.end(), original.begin(),
(int(*)(int)) toupper);
+ return original;
+ }
+
/**
* Generates a comment about this code being autogenerated, using C++ style
* comments, which are also fair game in Java / PHP, yay!
Modified: incubator/thrift/trunk/compiler/cpp/src/generate/t_rb_generator.cc
URL:
http://svn.apache.org/viewvc/incubator/thrift/trunk/compiler/cpp/src/generate/t_rb_generator.cc?rev=705330&r1=705329&r2=705330&view=diff
==============================================================================
--- incubator/thrift/trunk/compiler/cpp/src/generate/t_rb_generator.cc
(original)
+++ incubator/thrift/trunk/compiler/cpp/src/generate/t_rb_generator.cc Thu Oct
16 12:15:20 2008
@@ -67,6 +67,7 @@
void generate_rb_function_helpers(t_function* tfunction);
void generate_rb_simple_constructor(std::ofstream& out, t_struct* tstruct);
void generate_rb_simple_exception_constructor(std::ofstream& out, t_struct*
tstruct);
+ void generate_field_constants (std::ofstream& out, t_struct* tstruct);
void generate_accessors (std::ofstream& out, t_struct* tstruct);
void generate_field_defns (std::ofstream& out, t_struct* tstruct);
void generate_field_data (std::ofstream& out, t_type* field_type, const
std::string& field_name, t_const_value* field_value, bool optional);
@@ -455,6 +456,7 @@
generate_rb_simple_exception_constructor(out, tstruct);
}
+ generate_field_constants(out, tstruct);
generate_accessors(out, tstruct);
generate_field_defns(out, tstruct);
@@ -485,6 +487,19 @@
}
}
+void t_rb_generator::generate_field_constants(std::ofstream& out, t_struct*
tstruct) {
+ const vector<t_field*>& fields = tstruct->get_members();
+ vector<t_field*>::const_iterator f_iter;
+
+ for (f_iter = fields.begin(); f_iter != fields.end(); ++f_iter) {
+ std::string field_name = (*f_iter)->get_name();
+ std::string cap_field_name = upcase_string(field_name);
+
+ indent(out) << cap_field_name << " = " << (*f_iter)->get_key() << endl;
+ }
+ out << endl;
+}
+
void t_rb_generator::generate_accessors(std::ofstream& out, t_struct* tstruct)
{
const vector<t_field*>& members = tstruct->get_members();
vector<t_field*>::const_iterator m_iter;
@@ -510,7 +525,7 @@
}
indent(out) <<
- (*f_iter)->get_key() << " => ";
+ upcase_string((*f_iter)->get_name()) << " => ";
generate_field_data(out, (*f_iter)->get_type(), (*f_iter)->get_name(),
(*f_iter)->get_value(),
(*f_iter)->get_req() == t_field::T_OPTIONAL);
Modified: incubator/thrift/trunk/lib/rb/benchmark/gen-rb/BenchmarkService.rb
URL:
http://svn.apache.org/viewvc/incubator/thrift/trunk/lib/rb/benchmark/gen-rb/BenchmarkService.rb?rev=705330&r1=705329&r2=705330&view=diff
==============================================================================
--- incubator/thrift/trunk/lib/rb/benchmark/gen-rb/BenchmarkService.rb
(original)
+++ incubator/thrift/trunk/lib/rb/benchmark/gen-rb/BenchmarkService.rb Thu Oct
16 12:15:20 2008
@@ -46,17 +46,21 @@
class Fibonacci_args
include Thrift::Struct
+ N = 1
+
Thrift::Struct.field_accessor self, :n
FIELDS = {
- 1 => {:type => Thrift::Types::BYTE, :name => 'n'}
+ N => {:type => Thrift::Types::BYTE, :name => 'n'}
}
end
class Fibonacci_result
include Thrift::Struct
+ SUCCESS = 0
+
Thrift::Struct.field_accessor self, :success
FIELDS = {
- 0 => {:type => Thrift::Types::I32, :name => 'success'}
+ SUCCESS => {:type => Thrift::Types::I32, :name => 'success'}
}
end
Modified: incubator/thrift/trunk/lib/rb/spec/gen-rb/NonblockingService.rb
URL:
http://svn.apache.org/viewvc/incubator/thrift/trunk/lib/rb/spec/gen-rb/NonblockingService.rb?rev=705330&r1=705329&r2=705330&view=diff
==============================================================================
--- incubator/thrift/trunk/lib/rb/spec/gen-rb/NonblockingService.rb (original)
+++ incubator/thrift/trunk/lib/rb/spec/gen-rb/NonblockingService.rb Thu Oct 16
12:15:20 2008
@@ -115,22 +115,27 @@
class Greeting_args
include Thrift::Struct
+ ENGLISH = 1
+
Thrift::Struct.field_accessor self, :english
FIELDS = {
- 1 => {:type => Thrift::Types::BOOL, :name => 'english'}
+ ENGLISH => {:type => Thrift::Types::BOOL, :name => 'english'}
}
end
class Greeting_result
include Thrift::Struct
+ SUCCESS = 0
+
Thrift::Struct.field_accessor self, :success
FIELDS = {
- 0 => {:type => Thrift::Types::STRUCT, :name => 'success', :class
=> Hello}
+ SUCCESS => {:type => Thrift::Types::STRUCT, :name => 'success',
:class => Hello}
}
end
class Block_args
include Thrift::Struct
+
FIELDS = {
}
@@ -138,22 +143,27 @@
class Block_result
include Thrift::Struct
+ SUCCESS = 0
+
Thrift::Struct.field_accessor self, :success
FIELDS = {
- 0 => {:type => Thrift::Types::BOOL, :name => 'success'}
+ SUCCESS => {:type => Thrift::Types::BOOL, :name => 'success'}
}
end
class Unblock_args
include Thrift::Struct
+ N = 1
+
Thrift::Struct.field_accessor self, :n
FIELDS = {
- 1 => {:type => Thrift::Types::I32, :name => 'n'}
+ N => {:type => Thrift::Types::I32, :name => 'n'}
}
end
class Unblock_result
include Thrift::Struct
+
FIELDS = {
}
@@ -161,6 +171,7 @@
class Shutdown_args
include Thrift::Struct
+
FIELDS = {
}
@@ -168,6 +179,7 @@
class Shutdown_result
include Thrift::Struct
+
FIELDS = {
}
@@ -175,14 +187,17 @@
class Sleep_args
include Thrift::Struct
+ SECONDS = 1
+
Thrift::Struct.field_accessor self, :seconds
FIELDS = {
- 1 => {:type => Thrift::Types::DOUBLE, :name => 'seconds'}
+ SECONDS => {:type => Thrift::Types::DOUBLE, :name => 'seconds'}
}
end
class Sleep_result
include Thrift::Struct
+
FIELDS = {
}
Modified: incubator/thrift/trunk/lib/rb/spec/gen-rb/ThriftSpec_types.rb
URL:
http://svn.apache.org/viewvc/incubator/thrift/trunk/lib/rb/spec/gen-rb/ThriftSpec_types.rb?rev=705330&r1=705329&r2=705330&view=diff
==============================================================================
--- incubator/thrift/trunk/lib/rb/spec/gen-rb/ThriftSpec_types.rb (original)
+++ incubator/thrift/trunk/lib/rb/spec/gen-rb/ThriftSpec_types.rb Thu Oct 16
12:15:20 2008
@@ -9,59 +9,83 @@
module SpecNamespace
class Hello
include Thrift::Struct
+ GREETING = 1
+
Thrift::Struct.field_accessor self, :greeting
FIELDS = {
- 1 => {:type => Thrift::Types::STRING, :name => 'greeting', :default =>
'hello world'}
+ GREETING => {:type => Thrift::Types::STRING, :name => 'greeting',
:default => 'hello world'}
}
end
class Foo
include Thrift::Struct
+ SIMPLE = 1
+ WORDS = 2
+ HELLO = 3
+ INTS = 4
+ COMPLEX = 5
+ SHORTS = 6
+ OPT_STRING = 7
+
Thrift::Struct.field_accessor self, :simple, :words, :hello, :ints,
:complex, :shorts, :opt_string
FIELDS = {
- 1 => {:type => Thrift::Types::I32, :name => 'simple', :default => 53},
- 2 => {:type => Thrift::Types::STRING, :name => 'words', :default =>
'words'},
- 3 => {:type => Thrift::Types::STRUCT, :name => 'hello', :default =>
Hello.new({
+ SIMPLE => {:type => Thrift::Types::I32, :name => 'simple', :default =>
53},
+ WORDS => {:type => Thrift::Types::STRING, :name => 'words', :default
=> 'words'},
+ HELLO => {:type => Thrift::Types::STRUCT, :name => 'hello', :default
=> Hello.new({
'greeting' => 'hello, world!',
}), :class => Hello},
- 4 => {:type => Thrift::Types::LIST, :name => 'ints', :default => [
+ INTS => {:type => Thrift::Types::LIST, :name => 'ints', :default => [
1,
2,
2,
3,
], :element => {:type => Thrift::Types::I32}},
- 5 => {:type => Thrift::Types::MAP, :name => 'complex', :key => {:type
=> Thrift::Types::I32}, :value => {:type => Thrift::Types::MAP, :key => {:type
=> Thrift::Types::STRING}, :value => {:type => Thrift::Types::DOUBLE}}},
- 6 => {:type => Thrift::Types::SET, :name => 'shorts', :default =>
Set.new([ 5,
+ COMPLEX => {:type => Thrift::Types::MAP, :name => 'complex', :key =>
{:type => Thrift::Types::I32}, :value => {:type => Thrift::Types::MAP, :key =>
{:type => Thrift::Types::STRING}, :value => {:type => Thrift::Types::DOUBLE}}},
+ SHORTS => {:type => Thrift::Types::SET, :name => 'shorts', :default =>
Set.new([ 5,
17,
239,
]), :element => {:type => Thrift::Types::I16}},
- 7 => {:type => Thrift::Types::STRING, :name => 'opt_string', :optional
=> true}
+ OPT_STRING => {:type => Thrift::Types::STRING, :name => 'opt_string',
:optional => true}
}
end
class BoolStruct
include Thrift::Struct
+ YESNO = 1
+
Thrift::Struct.field_accessor self, :yesno
FIELDS = {
- 1 => {:type => Thrift::Types::BOOL, :name => 'yesno', :default => true}
+ YESNO => {:type => Thrift::Types::BOOL, :name => 'yesno', :default =>
true}
}
end
class SimpleList
include Thrift::Struct
+ BOOLS = 1
+ BYTES = 2
+ I16S = 3
+ I32S = 4
+ I64S = 5
+ DOUBLES = 6
+ STRINGS = 7
+ MAPS = 8
+ LISTS = 9
+ SETS = 10
+ HELLOS = 11
+
Thrift::Struct.field_accessor self, :bools, :bytes, :i16s, :i32s, :i64s,
:doubles, :strings, :maps, :lists, :sets, :hellos
FIELDS = {
- 1 => {:type => Thrift::Types::LIST, :name => 'bools', :element =>
{:type => Thrift::Types::BOOL}},
- 2 => {:type => Thrift::Types::LIST, :name => 'bytes', :element =>
{:type => Thrift::Types::BYTE}},
- 3 => {:type => Thrift::Types::LIST, :name => 'i16s', :element =>
{:type => Thrift::Types::I16}},
- 4 => {:type => Thrift::Types::LIST, :name => 'i32s', :element =>
{:type => Thrift::Types::I32}},
- 5 => {:type => Thrift::Types::LIST, :name => 'i64s', :element =>
{:type => Thrift::Types::I64}},
- 6 => {:type => Thrift::Types::LIST, :name => 'doubles', :element =>
{:type => Thrift::Types::DOUBLE}},
- 7 => {:type => Thrift::Types::LIST, :name => 'strings', :element =>
{:type => Thrift::Types::STRING}},
- 8 => {:type => Thrift::Types::LIST, :name => 'maps', :element =>
{:type => Thrift::Types::MAP, :key => {:type => Thrift::Types::I16}, :value =>
{:type => Thrift::Types::I16}}},
- 9 => {:type => Thrift::Types::LIST, :name => 'lists', :element =>
{:type => Thrift::Types::LIST, :element => {:type => Thrift::Types::I16}}},
- 10 => {:type => Thrift::Types::LIST, :name => 'sets', :element =>
{:type => Thrift::Types::SET, :element => {:type => Thrift::Types::I16}}},
- 11 => {:type => Thrift::Types::LIST, :name => 'hellos', :element =>
{:type => Thrift::Types::STRUCT, :class => Hello}}
+ BOOLS => {:type => Thrift::Types::LIST, :name => 'bools', :element =>
{:type => Thrift::Types::BOOL}},
+ BYTES => {:type => Thrift::Types::LIST, :name => 'bytes', :element =>
{:type => Thrift::Types::BYTE}},
+ I16S => {:type => Thrift::Types::LIST, :name => 'i16s', :element =>
{:type => Thrift::Types::I16}},
+ I32S => {:type => Thrift::Types::LIST, :name => 'i32s', :element =>
{:type => Thrift::Types::I32}},
+ I64S => {:type => Thrift::Types::LIST, :name => 'i64s', :element =>
{:type => Thrift::Types::I64}},
+ DOUBLES => {:type => Thrift::Types::LIST, :name => 'doubles', :element
=> {:type => Thrift::Types::DOUBLE}},
+ STRINGS => {:type => Thrift::Types::LIST, :name => 'strings', :element
=> {:type => Thrift::Types::STRING}},
+ MAPS => {:type => Thrift::Types::LIST, :name => 'maps', :element =>
{:type => Thrift::Types::MAP, :key => {:type => Thrift::Types::I16}, :value =>
{:type => Thrift::Types::I16}}},
+ LISTS => {:type => Thrift::Types::LIST, :name => 'lists', :element =>
{:type => Thrift::Types::LIST, :element => {:type => Thrift::Types::I16}}},
+ SETS => {:type => Thrift::Types::LIST, :name => 'sets', :element =>
{:type => Thrift::Types::SET, :element => {:type => Thrift::Types::I16}}},
+ HELLOS => {:type => Thrift::Types::LIST, :name => 'hellos', :element
=> {:type => Thrift::Types::STRUCT, :class => Hello}}
}
end