auser-poolparty 1.3.1 → 1.3.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (424) hide show
  1. data/VERSION.yml +1 -1
  2. data/bin/cloud-compile +6 -1
  3. data/config/jeweler.rb +1 -3
  4. data/lib/cloud_providers/cloud_provider_instance.rb +11 -1
  5. data/lib/dependency_resolvers/chef/resources/chef_recipe.rb +51 -0
  6. data/lib/dependency_resolvers/chef.rb +12 -3
  7. data/lib/mixins/callbacks.rb +6 -2
  8. data/lib/poolparty/plugins/apache2/passenger_site.rb +2 -2
  9. data/test/fixtures/chef/recipes/sudo/attributes/sudoers.rb +30 -0
  10. data/test/fixtures/chef/recipes/sudo/recipes/default.rb +33 -0
  11. data/test/fixtures/chef/recipes/sudo/templates/default/sudoers.erb +22 -0
  12. data/test/lib/dependency_resolvers/chef/resources/chef_recipe_test.rb +21 -0
  13. data/test/lib/dependency_resolvers/chef_test.rb +8 -1
  14. data/vendor/gems/thrift/CHANGELOG +1 -0
  15. data/vendor/gems/thrift/Makefile.am +25 -6
  16. data/vendor/gems/thrift/Manifest +81 -0
  17. data/vendor/gems/thrift/README +17 -111
  18. data/vendor/gems/thrift/Rakefile +104 -0
  19. data/vendor/gems/thrift/{lib/hs/Setup.lhs → benchmark/Benchmark.thrift} +5 -4
  20. data/vendor/gems/thrift/benchmark/benchmark.rb +271 -0
  21. data/vendor/gems/thrift/benchmark/client.rb +74 -0
  22. data/vendor/gems/thrift/benchmark/server.rb +82 -0
  23. data/vendor/gems/thrift/benchmark/thin_server.rb +44 -0
  24. data/vendor/gems/thrift/ext/binary_protocol_accelerated.c +474 -0
  25. data/vendor/gems/thrift/{lib/cocoa/src/protocol/TProtocolException.m → ext/binary_protocol_accelerated.h} +1 -4
  26. data/vendor/gems/thrift/ext/compact_protocol.c +665 -0
  27. data/vendor/gems/thrift/{lib/cocoa/src/protocol/TProtocolException.h → ext/compact_protocol.h} +1 -6
  28. data/vendor/gems/thrift/ext/constants.h +95 -0
  29. data/vendor/gems/thrift/{contrib/fb303/Makefile.am → ext/extconf.rb} +8 -13
  30. data/vendor/gems/thrift/{compiler/cpp/src/platform.h → ext/macros.h} +18 -13
  31. data/vendor/gems/thrift/ext/memory_buffer.c +76 -0
  32. data/vendor/gems/thrift/{lib/csharp/src/Protocol/TMessageType.cs → ext/memory_buffer.h} +2 -13
  33. data/vendor/gems/thrift/ext/protocol.c +185 -0
  34. data/vendor/gems/thrift/{lib/csharp/src/TProcessor.cs → ext/protocol.h} +2 -11
  35. data/vendor/gems/thrift/ext/struct.c +606 -0
  36. data/vendor/gems/thrift/ext/struct.h +67 -0
  37. data/vendor/gems/thrift/ext/thrift_native.c +194 -0
  38. data/vendor/gems/thrift/lib/thrift/client.rb +62 -0
  39. data/vendor/gems/thrift/{contrib/fb303/py/fb303_scripts/__init__.py → lib/thrift/core_ext/fixnum.rb} +13 -4
  40. data/vendor/gems/thrift/{contrib/fb303/global_footer.mk → lib/thrift/core_ext.rb} +4 -2
  41. data/vendor/gems/thrift/lib/thrift/exceptions.rb +82 -0
  42. data/vendor/gems/thrift/lib/thrift/processor.rb +57 -0
  43. data/vendor/gems/thrift/lib/thrift/protocol/base_protocol.rb +290 -0
  44. data/vendor/gems/thrift/lib/thrift/protocol/binary_protocol.rb +225 -0
  45. data/vendor/gems/thrift/{cleanup.sh → lib/thrift/protocol/binary_protocol_accelerated.rb} +19 -42
  46. data/vendor/gems/thrift/lib/thrift/protocol/compact_protocol.rb +422 -0
  47. data/vendor/gems/thrift/lib/thrift/serializer/deserializer.rb +33 -0
  48. data/vendor/gems/thrift/{bootstrap.sh → lib/thrift/serializer/serializer.rb} +17 -18
  49. data/vendor/gems/thrift/lib/thrift/server/base_server.rb +31 -0
  50. data/vendor/gems/thrift/lib/thrift/server/mongrel_http_server.rb +58 -0
  51. data/vendor/gems/thrift/lib/thrift/server/nonblocking_server.rb +296 -0
  52. data/vendor/gems/thrift/lib/thrift/server/simple_server.rb +43 -0
  53. data/vendor/gems/thrift/lib/thrift/server/thread_pool_server.rb +75 -0
  54. data/vendor/gems/thrift/lib/thrift/server/threaded_server.rb +47 -0
  55. data/vendor/gems/thrift/lib/thrift/struct.rb +298 -0
  56. data/vendor/gems/thrift/{contrib/fb303/bootstrap.sh → lib/thrift/thrift_native.rb} +5 -7
  57. data/vendor/gems/thrift/lib/{erl/Makefile → thrift/transport/base_server_transport.rb} +20 -20
  58. data/vendor/gems/thrift/lib/thrift/transport/base_transport.rb +70 -0
  59. data/vendor/gems/thrift/lib/thrift/transport/buffered_transport.rb +77 -0
  60. data/vendor/gems/thrift/lib/thrift/transport/framed_transport.rb +90 -0
  61. data/vendor/gems/thrift/lib/thrift/transport/http_client_transport.rb +45 -0
  62. data/vendor/gems/thrift/lib/thrift/transport/io_stream_transport.rb +39 -0
  63. data/vendor/gems/thrift/lib/thrift/transport/memory_buffer_transport.rb +96 -0
  64. data/vendor/gems/thrift/lib/thrift/transport/server_socket.rb +63 -0
  65. data/vendor/gems/thrift/lib/thrift/transport/socket.rb +136 -0
  66. data/vendor/gems/thrift/lib/{java/Makefile.am → thrift/transport/unix_server_socket.rb} +39 -17
  67. data/vendor/gems/thrift/{contrib/fb303/global_header.mk → lib/thrift/transport/unix_socket.rb} +23 -21
  68. data/vendor/gems/thrift/lib/thrift/types.rb +101 -0
  69. data/vendor/gems/thrift/lib/thrift.rb +59 -0
  70. data/vendor/gems/thrift/script/proto_benchmark.rb +121 -0
  71. data/vendor/gems/thrift/{lib/Makefile.am → script/read_struct.rb} +24 -36
  72. data/vendor/gems/thrift/{contrib/fb303/py/setup.py → script/write_struct.rb} +8 -5
  73. data/vendor/gems/thrift/setup.rb +1585 -0
  74. data/vendor/gems/thrift/spec/ThriftSpec.thrift +84 -0
  75. data/vendor/gems/thrift/spec/base_protocol_spec.rb +160 -0
  76. data/vendor/gems/thrift/spec/base_transport_spec.rb +351 -0
  77. data/vendor/gems/thrift/{contrib/fb303/py/Makefile.am → spec/binary_protocol_accelerated_spec.rb} +22 -25
  78. data/vendor/gems/thrift/spec/binary_protocol_spec.rb +63 -0
  79. data/vendor/gems/thrift/spec/binary_protocol_spec_shared.rb +375 -0
  80. data/vendor/gems/thrift/spec/client_spec.rb +100 -0
  81. data/vendor/gems/thrift/spec/compact_protocol_spec.rb +117 -0
  82. data/vendor/gems/thrift/spec/exception_spec.rb +142 -0
  83. data/vendor/gems/thrift/spec/http_client_spec.rb +49 -0
  84. data/vendor/gems/thrift/spec/mongrel_http_server_spec.rb +117 -0
  85. data/vendor/gems/thrift/spec/nonblocking_server_spec.rb +265 -0
  86. data/vendor/gems/thrift/spec/processor_spec.rb +83 -0
  87. data/vendor/gems/thrift/spec/serializer_spec.rb +69 -0
  88. data/vendor/gems/thrift/spec/server_socket_spec.rb +80 -0
  89. data/vendor/gems/thrift/spec/server_spec.rb +160 -0
  90. data/vendor/gems/thrift/spec/socket_spec.rb +61 -0
  91. data/vendor/gems/thrift/spec/socket_spec_shared.rb +104 -0
  92. data/vendor/gems/thrift/spec/spec_helper.rb +60 -0
  93. data/vendor/gems/thrift/spec/struct_spec.rb +252 -0
  94. data/vendor/gems/thrift/spec/types_spec.rb +116 -0
  95. data/vendor/gems/thrift/spec/unix_socket_spec.rb +108 -0
  96. data/vendor/gems/trollop/FAQ.txt +84 -0
  97. data/vendor/gems/trollop/History.txt +101 -0
  98. data/vendor/gems/trollop/Manifest.txt +7 -0
  99. data/vendor/gems/trollop/README.txt +40 -0
  100. data/vendor/gems/trollop/Rakefile +36 -0
  101. data/vendor/gems/trollop/lib/trollop.rb +739 -0
  102. data/vendor/gems/trollop/release-script.txt +13 -0
  103. data/vendor/gems/trollop/test/test_trollop.rb +1048 -0
  104. data/vendor/gems/trollop/www/index.html +172 -0
  105. metadata +123 -347
  106. data/vendor/gems/thrift/CHANGES +0 -35
  107. data/vendor/gems/thrift/CONTRIBUTORS +0 -77
  108. data/vendor/gems/thrift/DISCLAIMER +0 -6
  109. data/vendor/gems/thrift/LICENSE +0 -202
  110. data/vendor/gems/thrift/NEWS +0 -79
  111. data/vendor/gems/thrift/NOTICE +0 -26
  112. data/vendor/gems/thrift/aclocal/ax_boost_base.m4 +0 -198
  113. data/vendor/gems/thrift/aclocal/ax_javac_and_java.m4 +0 -107
  114. data/vendor/gems/thrift/aclocal/ax_lib_event.m4 +0 -194
  115. data/vendor/gems/thrift/aclocal/ax_lib_zlib.m4 +0 -173
  116. data/vendor/gems/thrift/aclocal/ax_signed_right_shift.m4 +0 -127
  117. data/vendor/gems/thrift/aclocal/ax_thrift_internal.m4 +0 -39
  118. data/vendor/gems/thrift/compiler/cpp/Makefile.am +0 -136
  119. data/vendor/gems/thrift/compiler/cpp/README +0 -39
  120. data/vendor/gems/thrift/compiler/cpp/src/generate/t_cocoa_generator.cc +0 -2331
  121. data/vendor/gems/thrift/compiler/cpp/src/generate/t_cpp_generator.cc +0 -3003
  122. data/vendor/gems/thrift/compiler/cpp/src/generate/t_csharp_generator.cc +0 -1700
  123. data/vendor/gems/thrift/compiler/cpp/src/generate/t_erl_generator.cc +0 -932
  124. data/vendor/gems/thrift/compiler/cpp/src/generate/t_generator.cc +0 -173
  125. data/vendor/gems/thrift/compiler/cpp/src/generate/t_generator.h +0 -321
  126. data/vendor/gems/thrift/compiler/cpp/src/generate/t_hs_generator.cc +0 -1445
  127. data/vendor/gems/thrift/compiler/cpp/src/generate/t_html_generator.cc +0 -637
  128. data/vendor/gems/thrift/compiler/cpp/src/generate/t_java_generator.cc +0 -3069
  129. data/vendor/gems/thrift/compiler/cpp/src/generate/t_ocaml_generator.cc +0 -1673
  130. data/vendor/gems/thrift/compiler/cpp/src/generate/t_oop_generator.h +0 -77
  131. data/vendor/gems/thrift/compiler/cpp/src/generate/t_perl_generator.cc +0 -1812
  132. data/vendor/gems/thrift/compiler/cpp/src/generate/t_php_generator.cc +0 -2281
  133. data/vendor/gems/thrift/compiler/cpp/src/generate/t_py_generator.cc +0 -2310
  134. data/vendor/gems/thrift/compiler/cpp/src/generate/t_rb_generator.cc +0 -1114
  135. data/vendor/gems/thrift/compiler/cpp/src/generate/t_st_generator.cc +0 -1071
  136. data/vendor/gems/thrift/compiler/cpp/src/generate/t_xsd_generator.cc +0 -354
  137. data/vendor/gems/thrift/compiler/cpp/src/globals.h +0 -117
  138. data/vendor/gems/thrift/compiler/cpp/src/main.cc +0 -1207
  139. data/vendor/gems/thrift/compiler/cpp/src/main.h +0 -103
  140. data/vendor/gems/thrift/compiler/cpp/src/md5.c +0 -381
  141. data/vendor/gems/thrift/compiler/cpp/src/md5.h +0 -91
  142. data/vendor/gems/thrift/compiler/cpp/src/parse/t_base_type.h +0 -137
  143. data/vendor/gems/thrift/compiler/cpp/src/parse/t_const.h +0 -59
  144. data/vendor/gems/thrift/compiler/cpp/src/parse/t_const_value.h +0 -121
  145. data/vendor/gems/thrift/compiler/cpp/src/parse/t_container.h +0 -56
  146. data/vendor/gems/thrift/compiler/cpp/src/parse/t_doc.h +0 -51
  147. data/vendor/gems/thrift/compiler/cpp/src/parse/t_enum.h +0 -59
  148. data/vendor/gems/thrift/compiler/cpp/src/parse/t_enum_value.h +0 -64
  149. data/vendor/gems/thrift/compiler/cpp/src/parse/t_field.h +0 -150
  150. data/vendor/gems/thrift/compiler/cpp/src/parse/t_function.h +0 -93
  151. data/vendor/gems/thrift/compiler/cpp/src/parse/t_list.h +0 -56
  152. data/vendor/gems/thrift/compiler/cpp/src/parse/t_map.h +0 -64
  153. data/vendor/gems/thrift/compiler/cpp/src/parse/t_program.h +0 -223
  154. data/vendor/gems/thrift/compiler/cpp/src/parse/t_scope.h +0 -86
  155. data/vendor/gems/thrift/compiler/cpp/src/parse/t_service.h +0 -68
  156. data/vendor/gems/thrift/compiler/cpp/src/parse/t_set.h +0 -55
  157. data/vendor/gems/thrift/compiler/cpp/src/parse/t_struct.h +0 -127
  158. data/vendor/gems/thrift/compiler/cpp/src/parse/t_type.h +0 -176
  159. data/vendor/gems/thrift/compiler/cpp/src/parse/t_typedef.h +0 -70
  160. data/vendor/gems/thrift/compiler/cpp/src/thriftl.ll +0 -303
  161. data/vendor/gems/thrift/compiler/cpp/src/thrifty.yy +0 -1140
  162. data/vendor/gems/thrift/configure.ac +0 -255
  163. data/vendor/gems/thrift/contrib/fb303/LICENSE +0 -16
  164. data/vendor/gems/thrift/contrib/fb303/README +0 -37
  165. data/vendor/gems/thrift/contrib/fb303/acinclude.m4 +0 -258
  166. data/vendor/gems/thrift/contrib/fb303/aclocal/ax_boost_base.m4 +0 -198
  167. data/vendor/gems/thrift/contrib/fb303/configure.ac +0 -115
  168. data/vendor/gems/thrift/contrib/fb303/cpp/FacebookBase.cpp +0 -124
  169. data/vendor/gems/thrift/contrib/fb303/cpp/FacebookBase.h +0 -103
  170. data/vendor/gems/thrift/contrib/fb303/cpp/Makefile.am +0 -84
  171. data/vendor/gems/thrift/contrib/fb303/cpp/ServiceTracker.cpp +0 -481
  172. data/vendor/gems/thrift/contrib/fb303/cpp/ServiceTracker.h +0 -215
  173. data/vendor/gems/thrift/contrib/fb303/if/fb303.thrift +0 -112
  174. data/vendor/gems/thrift/contrib/fb303/java/FacebookBase.java +0 -103
  175. data/vendor/gems/thrift/contrib/fb303/java/build.xml +0 -84
  176. data/vendor/gems/thrift/contrib/fb303/php/FacebookBase.php +0 -89
  177. data/vendor/gems/thrift/contrib/fb303/py/fb303/FacebookBase.py +0 -82
  178. data/vendor/gems/thrift/contrib/fb303/py/fb303_scripts/fb303_simple_mgmt.py +0 -195
  179. data/vendor/gems/thrift/contrib/thrift.el +0 -126
  180. data/vendor/gems/thrift/contrib/thrift.spec +0 -206
  181. data/vendor/gems/thrift/contrib/thrift.vim +0 -91
  182. data/vendor/gems/thrift/contrib/thrift_dump.cpp +0 -91
  183. data/vendor/gems/thrift/doc/lgpl-2.1.txt +0 -504
  184. data/vendor/gems/thrift/doc/otp-base-license.txt +0 -20
  185. data/vendor/gems/thrift/doc/thrift.bnf +0 -96
  186. data/vendor/gems/thrift/doc/thrift.tex +0 -1057
  187. data/vendor/gems/thrift/lib/cocoa/README +0 -21
  188. data/vendor/gems/thrift/lib/cocoa/src/TApplicationException.h +0 -44
  189. data/vendor/gems/thrift/lib/cocoa/src/TApplicationException.m +0 -130
  190. data/vendor/gems/thrift/lib/cocoa/src/TException.h +0 -34
  191. data/vendor/gems/thrift/lib/cocoa/src/TException.m +0 -64
  192. data/vendor/gems/thrift/lib/cocoa/src/TProcessor.h +0 -29
  193. data/vendor/gems/thrift/lib/cocoa/src/TProcessorFactory.h +0 -27
  194. data/vendor/gems/thrift/lib/cocoa/src/TSharedProcessorFactory.h +0 -27
  195. data/vendor/gems/thrift/lib/cocoa/src/TSharedProcessorFactory.m +0 -51
  196. data/vendor/gems/thrift/lib/cocoa/src/protocol/TBinaryProtocol.h +0 -51
  197. data/vendor/gems/thrift/lib/cocoa/src/protocol/TBinaryProtocol.m +0 -477
  198. data/vendor/gems/thrift/lib/cocoa/src/protocol/TProtocol.h +0 -148
  199. data/vendor/gems/thrift/lib/cocoa/src/protocol/TProtocolFactory.h +0 -29
  200. data/vendor/gems/thrift/lib/cocoa/src/protocol/TProtocolUtil.h +0 -29
  201. data/vendor/gems/thrift/lib/cocoa/src/protocol/TProtocolUtil.m +0 -104
  202. data/vendor/gems/thrift/lib/cocoa/src/server/TSocketServer.h +0 -50
  203. data/vendor/gems/thrift/lib/cocoa/src/server/TSocketServer.m +0 -153
  204. data/vendor/gems/thrift/lib/cocoa/src/transport/THTTPClient.h +0 -42
  205. data/vendor/gems/thrift/lib/cocoa/src/transport/THTTPClient.m +0 -159
  206. data/vendor/gems/thrift/lib/cocoa/src/transport/TNSFileHandleTransport.h +0 -35
  207. data/vendor/gems/thrift/lib/cocoa/src/transport/TNSFileHandleTransport.m +0 -91
  208. data/vendor/gems/thrift/lib/cocoa/src/transport/TNSStreamTransport.h +0 -38
  209. data/vendor/gems/thrift/lib/cocoa/src/transport/TNSStreamTransport.m +0 -89
  210. data/vendor/gems/thrift/lib/cocoa/src/transport/TSocketClient.h +0 -32
  211. data/vendor/gems/thrift/lib/cocoa/src/transport/TSocketClient.m +0 -58
  212. data/vendor/gems/thrift/lib/cocoa/src/transport/TTransport.h +0 -36
  213. data/vendor/gems/thrift/lib/cocoa/src/transport/TTransportException.h +0 -30
  214. data/vendor/gems/thrift/lib/cocoa/src/transport/TTransportException.m +0 -43
  215. data/vendor/gems/thrift/lib/cpp/Makefile.am +0 -158
  216. data/vendor/gems/thrift/lib/cpp/README +0 -67
  217. data/vendor/gems/thrift/lib/cpp/src/TLogging.h +0 -163
  218. data/vendor/gems/thrift/lib/cpp/src/TProcessor.h +0 -53
  219. data/vendor/gems/thrift/lib/cpp/src/TReflectionLocal.h +0 -96
  220. data/vendor/gems/thrift/lib/cpp/src/Thrift.cpp +0 -148
  221. data/vendor/gems/thrift/lib/cpp/src/Thrift.h +0 -191
  222. data/vendor/gems/thrift/lib/cpp/src/concurrency/Exception.h +0 -60
  223. data/vendor/gems/thrift/lib/cpp/src/concurrency/FunctionRunner.h +0 -77
  224. data/vendor/gems/thrift/lib/cpp/src/concurrency/Monitor.cpp +0 -137
  225. data/vendor/gems/thrift/lib/cpp/src/concurrency/Monitor.h +0 -84
  226. data/vendor/gems/thrift/lib/cpp/src/concurrency/Mutex.cpp +0 -160
  227. data/vendor/gems/thrift/lib/cpp/src/concurrency/Mutex.h +0 -114
  228. data/vendor/gems/thrift/lib/cpp/src/concurrency/PosixThreadFactory.cpp +0 -314
  229. data/vendor/gems/thrift/lib/cpp/src/concurrency/PosixThreadFactory.h +0 -130
  230. data/vendor/gems/thrift/lib/cpp/src/concurrency/Thread.h +0 -125
  231. data/vendor/gems/thrift/lib/cpp/src/concurrency/ThreadManager.cpp +0 -493
  232. data/vendor/gems/thrift/lib/cpp/src/concurrency/ThreadManager.h +0 -169
  233. data/vendor/gems/thrift/lib/cpp/src/concurrency/TimerManager.cpp +0 -284
  234. data/vendor/gems/thrift/lib/cpp/src/concurrency/TimerManager.h +0 -122
  235. data/vendor/gems/thrift/lib/cpp/src/concurrency/Util.cpp +0 -55
  236. data/vendor/gems/thrift/lib/cpp/src/concurrency/Util.h +0 -100
  237. data/vendor/gems/thrift/lib/cpp/src/concurrency/test/Tests.cpp +0 -155
  238. data/vendor/gems/thrift/lib/cpp/src/concurrency/test/ThreadFactoryTests.h +0 -354
  239. data/vendor/gems/thrift/lib/cpp/src/concurrency/test/ThreadManagerTests.h +0 -379
  240. data/vendor/gems/thrift/lib/cpp/src/concurrency/test/TimerManagerTests.h +0 -155
  241. data/vendor/gems/thrift/lib/cpp/src/processor/PeekProcessor.cpp +0 -122
  242. data/vendor/gems/thrift/lib/cpp/src/processor/PeekProcessor.h +0 -77
  243. data/vendor/gems/thrift/lib/cpp/src/processor/StatsProcessor.h +0 -264
  244. data/vendor/gems/thrift/lib/cpp/src/protocol/TBase64Utils.cpp +0 -79
  245. data/vendor/gems/thrift/lib/cpp/src/protocol/TBase64Utils.h +0 -42
  246. data/vendor/gems/thrift/lib/cpp/src/protocol/TBinaryProtocol.cpp +0 -394
  247. data/vendor/gems/thrift/lib/cpp/src/protocol/TBinaryProtocol.h +0 -254
  248. data/vendor/gems/thrift/lib/cpp/src/protocol/TCompactProtocol.cpp +0 -736
  249. data/vendor/gems/thrift/lib/cpp/src/protocol/TCompactProtocol.h +0 -279
  250. data/vendor/gems/thrift/lib/cpp/src/protocol/TDebugProtocol.cpp +0 -346
  251. data/vendor/gems/thrift/lib/cpp/src/protocol/TDebugProtocol.h +0 -225
  252. data/vendor/gems/thrift/lib/cpp/src/protocol/TDenseProtocol.cpp +0 -762
  253. data/vendor/gems/thrift/lib/cpp/src/protocol/TDenseProtocol.h +0 -253
  254. data/vendor/gems/thrift/lib/cpp/src/protocol/TJSONProtocol.cpp +0 -998
  255. data/vendor/gems/thrift/lib/cpp/src/protocol/TJSONProtocol.h +0 -340
  256. data/vendor/gems/thrift/lib/cpp/src/protocol/TOneWayProtocol.h +0 -304
  257. data/vendor/gems/thrift/lib/cpp/src/protocol/TProtocol.h +0 -438
  258. data/vendor/gems/thrift/lib/cpp/src/protocol/TProtocolException.h +0 -104
  259. data/vendor/gems/thrift/lib/cpp/src/protocol/TProtocolTap.h +0 -187
  260. data/vendor/gems/thrift/lib/cpp/src/server/TNonblockingServer.cpp +0 -750
  261. data/vendor/gems/thrift/lib/cpp/src/server/TNonblockingServer.h +0 -435
  262. data/vendor/gems/thrift/lib/cpp/src/server/TServer.cpp +0 -38
  263. data/vendor/gems/thrift/lib/cpp/src/server/TServer.h +0 -213
  264. data/vendor/gems/thrift/lib/cpp/src/server/TSimpleServer.cpp +0 -118
  265. data/vendor/gems/thrift/lib/cpp/src/server/TSimpleServer.h +0 -70
  266. data/vendor/gems/thrift/lib/cpp/src/server/TThreadPoolServer.cpp +0 -217
  267. data/vendor/gems/thrift/lib/cpp/src/server/TThreadPoolServer.h +0 -79
  268. data/vendor/gems/thrift/lib/cpp/src/server/TThreadedServer.cpp +0 -243
  269. data/vendor/gems/thrift/lib/cpp/src/server/TThreadedServer.h +0 -74
  270. data/vendor/gems/thrift/lib/cpp/src/transport/TBufferTransports.cpp +0 -370
  271. data/vendor/gems/thrift/lib/cpp/src/transport/TBufferTransports.h +0 -667
  272. data/vendor/gems/thrift/lib/cpp/src/transport/TFDTransport.cpp +0 -77
  273. data/vendor/gems/thrift/lib/cpp/src/transport/TFDTransport.h +0 -73
  274. data/vendor/gems/thrift/lib/cpp/src/transport/TFileTransport.cpp +0 -953
  275. data/vendor/gems/thrift/lib/cpp/src/transport/TFileTransport.h +0 -442
  276. data/vendor/gems/thrift/lib/cpp/src/transport/THttpClient.cpp +0 -348
  277. data/vendor/gems/thrift/lib/cpp/src/transport/THttpClient.h +0 -111
  278. data/vendor/gems/thrift/lib/cpp/src/transport/TServerSocket.cpp +0 -368
  279. data/vendor/gems/thrift/lib/cpp/src/transport/TServerSocket.h +0 -76
  280. data/vendor/gems/thrift/lib/cpp/src/transport/TServerTransport.h +0 -92
  281. data/vendor/gems/thrift/lib/cpp/src/transport/TShortReadTransport.h +0 -96
  282. data/vendor/gems/thrift/lib/cpp/src/transport/TSimpleFileTransport.cpp +0 -54
  283. data/vendor/gems/thrift/lib/cpp/src/transport/TSimpleFileTransport.h +0 -41
  284. data/vendor/gems/thrift/lib/cpp/src/transport/TSocket.cpp +0 -591
  285. data/vendor/gems/thrift/lib/cpp/src/transport/TSocket.h +0 -242
  286. data/vendor/gems/thrift/lib/cpp/src/transport/TSocketPool.cpp +0 -235
  287. data/vendor/gems/thrift/lib/cpp/src/transport/TSocketPool.h +0 -191
  288. data/vendor/gems/thrift/lib/cpp/src/transport/TTransport.h +0 -224
  289. data/vendor/gems/thrift/lib/cpp/src/transport/TTransportException.cpp +0 -31
  290. data/vendor/gems/thrift/lib/cpp/src/transport/TTransportException.h +0 -117
  291. data/vendor/gems/thrift/lib/cpp/src/transport/TTransportUtils.cpp +0 -178
  292. data/vendor/gems/thrift/lib/cpp/src/transport/TTransportUtils.h +0 -287
  293. data/vendor/gems/thrift/lib/cpp/src/transport/TZlibTransport.cpp +0 -299
  294. data/vendor/gems/thrift/lib/cpp/src/transport/TZlibTransport.h +0 -219
  295. data/vendor/gems/thrift/lib/cpp/thrift-nb.pc.in +0 -30
  296. data/vendor/gems/thrift/lib/cpp/thrift-z.pc.in +0 -30
  297. data/vendor/gems/thrift/lib/cpp/thrift.pc.in +0 -29
  298. data/vendor/gems/thrift/lib/csharp/Makefile.am +0 -70
  299. data/vendor/gems/thrift/lib/csharp/README +0 -26
  300. data/vendor/gems/thrift/lib/csharp/ThriftMSBuildTask/Properties/AssemblyInfo.cs +0 -55
  301. data/vendor/gems/thrift/lib/csharp/ThriftMSBuildTask/ThriftBuild.cs +0 -242
  302. data/vendor/gems/thrift/lib/csharp/ThriftMSBuildTask/ThriftMSBuildTask.csproj +0 -62
  303. data/vendor/gems/thrift/lib/csharp/src/Collections/THashSet.cs +0 -142
  304. data/vendor/gems/thrift/lib/csharp/src/Protocol/TBase.cs +0 -34
  305. data/vendor/gems/thrift/lib/csharp/src/Protocol/TBinaryProtocol.cs +0 -392
  306. data/vendor/gems/thrift/lib/csharp/src/Protocol/TField.cs +0 -58
  307. data/vendor/gems/thrift/lib/csharp/src/Protocol/TList.cs +0 -50
  308. data/vendor/gems/thrift/lib/csharp/src/Protocol/TMap.cs +0 -58
  309. data/vendor/gems/thrift/lib/csharp/src/Protocol/TMessage.cs +0 -58
  310. data/vendor/gems/thrift/lib/csharp/src/Protocol/TProtocol.cs +0 -87
  311. data/vendor/gems/thrift/lib/csharp/src/Protocol/TProtocolException.cs +0 -61
  312. data/vendor/gems/thrift/lib/csharp/src/Protocol/TProtocolFactory.cs +0 -29
  313. data/vendor/gems/thrift/lib/csharp/src/Protocol/TProtocolUtil.cs +0 -94
  314. data/vendor/gems/thrift/lib/csharp/src/Protocol/TSet.cs +0 -50
  315. data/vendor/gems/thrift/lib/csharp/src/Protocol/TStruct.cs +0 -42
  316. data/vendor/gems/thrift/lib/csharp/src/Protocol/TType.cs +0 -40
  317. data/vendor/gems/thrift/lib/csharp/src/Server/TServer.cs +0 -135
  318. data/vendor/gems/thrift/lib/csharp/src/Server/TSimpleServer.cs +0 -148
  319. data/vendor/gems/thrift/lib/csharp/src/Server/TThreadPoolServer.cs +0 -186
  320. data/vendor/gems/thrift/lib/csharp/src/Server/TThreadedServer.cs +0 -234
  321. data/vendor/gems/thrift/lib/csharp/src/TApplicationException.cs +0 -131
  322. data/vendor/gems/thrift/lib/csharp/src/Thrift.csproj +0 -73
  323. data/vendor/gems/thrift/lib/csharp/src/Thrift.sln +0 -35
  324. data/vendor/gems/thrift/lib/csharp/src/Transport/TBufferedTransport.cs +0 -100
  325. data/vendor/gems/thrift/lib/csharp/src/Transport/TServerSocket.cs +0 -157
  326. data/vendor/gems/thrift/lib/csharp/src/Transport/TServerTransport.cs +0 -39
  327. data/vendor/gems/thrift/lib/csharp/src/Transport/TSocket.cs +0 -144
  328. data/vendor/gems/thrift/lib/csharp/src/Transport/TStreamTransport.cs +0 -103
  329. data/vendor/gems/thrift/lib/csharp/src/Transport/TTransport.cs +0 -66
  330. data/vendor/gems/thrift/lib/csharp/src/Transport/TTransportException.cs +0 -64
  331. data/vendor/gems/thrift/lib/csharp/src/Transport/TTransportFactory.cs +0 -38
  332. data/vendor/gems/thrift/lib/erl/README +0 -56
  333. data/vendor/gems/thrift/lib/erl/build/beamver +0 -59
  334. data/vendor/gems/thrift/lib/erl/build/buildtargets.mk +0 -15
  335. data/vendor/gems/thrift/lib/erl/build/colors.mk +0 -24
  336. data/vendor/gems/thrift/lib/erl/build/docs.mk +0 -12
  337. data/vendor/gems/thrift/lib/erl/build/mime.types +0 -98
  338. data/vendor/gems/thrift/lib/erl/build/otp.mk +0 -146
  339. data/vendor/gems/thrift/lib/erl/build/otp_subdir.mk +0 -85
  340. data/vendor/gems/thrift/lib/erl/build/raw_test.mk +0 -29
  341. data/vendor/gems/thrift/lib/erl/include/thrift_constants.hrl +0 -54
  342. data/vendor/gems/thrift/lib/erl/include/thrift_protocol.hrl +0 -31
  343. data/vendor/gems/thrift/lib/erl/src/Makefile +0 -116
  344. data/vendor/gems/thrift/lib/erl/src/test_handler.erl +0 -26
  345. data/vendor/gems/thrift/lib/erl/src/test_service.erl +0 -29
  346. data/vendor/gems/thrift/lib/erl/src/thrift.app.src +0 -44
  347. data/vendor/gems/thrift/lib/erl/src/thrift.appup.src +0 -1
  348. data/vendor/gems/thrift/lib/erl/src/thrift_base64_transport.erl +0 -64
  349. data/vendor/gems/thrift/lib/erl/src/thrift_binary_protocol.erl +0 -325
  350. data/vendor/gems/thrift/lib/erl/src/thrift_buffered_transport.erl +0 -180
  351. data/vendor/gems/thrift/lib/erl/src/thrift_client.erl +0 -384
  352. data/vendor/gems/thrift/lib/erl/src/thrift_disk_log_transport.erl +0 -118
  353. data/vendor/gems/thrift/lib/erl/src/thrift_file_transport.erl +0 -87
  354. data/vendor/gems/thrift/lib/erl/src/thrift_framed_transport.erl +0 -208
  355. data/vendor/gems/thrift/lib/erl/src/thrift_http_transport.erl +0 -199
  356. data/vendor/gems/thrift/lib/erl/src/thrift_memory_buffer.erl +0 -164
  357. data/vendor/gems/thrift/lib/erl/src/thrift_processor.erl +0 -188
  358. data/vendor/gems/thrift/lib/erl/src/thrift_protocol.erl +0 -356
  359. data/vendor/gems/thrift/lib/erl/src/thrift_server.erl +0 -183
  360. data/vendor/gems/thrift/lib/erl/src/thrift_service.erl +0 -25
  361. data/vendor/gems/thrift/lib/erl/src/thrift_socket_server.erl +0 -249
  362. data/vendor/gems/thrift/lib/erl/src/thrift_socket_transport.erl +0 -119
  363. data/vendor/gems/thrift/lib/erl/src/thrift_transport.erl +0 -57
  364. data/vendor/gems/thrift/lib/erl/vsn.mk +0 -1
  365. data/vendor/gems/thrift/lib/hs/README +0 -82
  366. data/vendor/gems/thrift/lib/hs/TODO +0 -2
  367. data/vendor/gems/thrift/lib/hs/Thrift.cabal +0 -20
  368. data/vendor/gems/thrift/lib/hs/src/Thrift/Protocol/Binary.hs +0 -147
  369. data/vendor/gems/thrift/lib/hs/src/Thrift/Protocol.hs +0 -191
  370. data/vendor/gems/thrift/lib/hs/src/Thrift/Server.hs +0 -65
  371. data/vendor/gems/thrift/lib/hs/src/Thrift/Transport/Handle.hs +0 -58
  372. data/vendor/gems/thrift/lib/hs/src/Thrift/Transport.hs +0 -60
  373. data/vendor/gems/thrift/lib/hs/src/Thrift.hs +0 -111
  374. data/vendor/gems/thrift/lib/java/README +0 -43
  375. data/vendor/gems/thrift/lib/java/build.xml +0 -195
  376. data/vendor/gems/thrift/lib/java/ivy.xml +0 -8
  377. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/IntRangeSet.java +0 -171
  378. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/TApplicationException.java +0 -123
  379. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/TBase.java +0 -66
  380. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/TBaseHelper.java +0 -102
  381. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/TByteArrayOutputStream.java +0 -46
  382. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/TDeserializer.java +0 -94
  383. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/TException.java +0 -45
  384. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/TFieldRequirementType.java +0 -30
  385. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/TProcessor.java +0 -32
  386. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/TProcessorFactory.java +0 -39
  387. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/TSerializer.java +0 -110
  388. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/meta_data/FieldMetaData.java +0 -69
  389. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/meta_data/FieldValueMetaData.java +0 -42
  390. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/meta_data/ListMetaData.java +0 -29
  391. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/meta_data/MapMetaData.java +0 -31
  392. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/meta_data/SetMetaData.java +0 -29
  393. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/meta_data/StructMetaData.java +0 -31
  394. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TBase64Utils.java +0 -128
  395. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TBinaryProtocol.java +0 -331
  396. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TCompactProtocol.java +0 -741
  397. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TField.java +0 -48
  398. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TJSONProtocol.java +0 -927
  399. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TList.java +0 -38
  400. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TMap.java +0 -40
  401. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TMessage.java +0 -48
  402. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TMessageType.java +0 -31
  403. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TProtocol.java +0 -146
  404. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TProtocolException.java +0 -81
  405. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TProtocolFactory.java +0 -30
  406. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TProtocolUtil.java +0 -158
  407. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TSet.java +0 -42
  408. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TSimpleJSONProtocol.java +0 -384
  409. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TStruct.java +0 -36
  410. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TType.java +0 -40
  411. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/server/THsHaServer.java +0 -304
  412. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/server/TNonblockingServer.java +0 -772
  413. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/server/TServer.java +0 -126
  414. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/server/TSimpleServer.java +0 -145
  415. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/server/TThreadPoolServer.java +0 -271
  416. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/transport/TFramedTransport.java +0 -126
  417. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/transport/THttpClient.java +0 -157
  418. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/transport/TIOStreamTransport.java +0 -159
  419. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/transport/TMemoryBuffer.java +0 -98
  420. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/transport/TNonblockingServerSocket.java +0 -160
  421. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/transport/TNonblockingServerTransport.java +0 -31
  422. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/transport/TNonblockingSocket.java +0 -213
  423. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/transport/TNonblockingTransport.java +0 -31
  424. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/transport/TServerSocket.java +0 -145
@@ -1,1071 +0,0 @@
1
- /*
2
- * Licensed to the Apache Software Foundation (ASF) under one
3
- * or more contributor license agreements. See the NOTICE file
4
- * distributed with this work for additional information
5
- * regarding copyright ownership. The ASF licenses this file
6
- * to you under the Apache License, Version 2.0 (the
7
- * "License"); you may not use this file except in compliance
8
- * with the License. You may obtain a copy of the License at
9
- *
10
- * http://www.apache.org/licenses/LICENSE-2.0
11
- *
12
- * Unless required by applicable law or agreed to in writing,
13
- * software distributed under the License is distributed on an
14
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15
- * KIND, either express or implied. See the License for the
16
- * specific language governing permissions and limitations
17
- * under the License.
18
- */
19
-
20
- #include <string>
21
- #include <fstream>
22
- #include <iostream>
23
- #include <vector>
24
-
25
- #include <stdlib.h>
26
- #include <boost/tokenizer.hpp>
27
- #include <sys/stat.h>
28
- #include <sys/types.h>
29
- #include <sstream>
30
-
31
- #include "platform.h"
32
- #include "t_oop_generator.h"
33
- using namespace std;
34
-
35
-
36
- /**
37
- * Smalltalk code generator.
38
- *
39
- */
40
- class t_st_generator : public t_oop_generator {
41
- public:
42
- t_st_generator(
43
- t_program* program,
44
- const std::map<std::string, std::string>& parsed_options,
45
- const std::string& option_string)
46
- : t_oop_generator(program)
47
- {
48
- out_dir_base_ = "gen-st";
49
- }
50
-
51
- /**
52
- * Init and close methods
53
- */
54
-
55
- void init_generator();
56
- void close_generator();
57
-
58
- /**
59
- * Program-level generation functions
60
- */
61
-
62
- void generate_typedef (t_typedef* ttypedef);
63
- void generate_enum (t_enum* tenum);
64
- void generate_const (t_const* tconst);
65
- void generate_struct (t_struct* tstruct);
66
- void generate_xception (t_struct* txception);
67
- void generate_service (t_service* tservice);
68
- void generate_class_side_definition ();
69
- void generate_force_consts ();
70
-
71
-
72
- std::string render_const_value(t_type* type, t_const_value* value);
73
-
74
- /**
75
- * Struct generation code
76
- */
77
-
78
- void generate_st_struct (std::ofstream& out, t_struct* tstruct, bool is_exception);
79
- void generate_accessors (std::ofstream& out, t_struct* tstruct);
80
-
81
- /**
82
- * Service-level generation functions
83
- */
84
-
85
- void generate_service_client (t_service* tservice);
86
-
87
- void generate_send_method (t_function* tfunction);
88
- void generate_recv_method (t_function* tfunction);
89
-
90
- std::string map_reader (t_map *tmap);
91
- std::string list_reader (t_list *tlist);
92
- std::string set_reader (t_set *tset);
93
- std::string struct_reader (t_struct *tstruct, std::string clsName);
94
-
95
- std::string map_writer (t_map *tmap, std::string name);
96
- std::string list_writer (t_list *tlist, std::string name);
97
- std::string set_writer (t_set *tset, std::string name);
98
- std::string struct_writer (t_struct *tstruct, std::string fname);
99
-
100
- std::string write_val (t_type *t, std::string fname);
101
- std::string read_val (t_type *t);
102
-
103
- /**
104
- * Helper rendering functions
105
- */
106
-
107
- std::string st_autogen_comment();
108
-
109
- void st_class_def(std::ofstream &out, std::string name);
110
- void st_method(std::ofstream &out, std::string cls, std::string name);
111
- void st_method(std::ofstream &out, std::string cls, std::string name, std::string category);
112
- void st_close_method(std::ofstream &out);
113
- void st_class_method(std::ofstream &out, std::string cls, std::string name);
114
- void st_class_method(std::ofstream &out, std::string cls, std::string name, std::string category);
115
- void st_setter(std::ofstream &out, std::string cls, std::string name, std::string type);
116
- void st_getter(std::ofstream &out, std::string cls, std::string name);
117
- void st_accessors(std::ofstream &out, std::string cls, std::string name, std::string type);
118
-
119
- std::string class_name();
120
- std::string client_class_name();
121
- std::string prefix(std::string name);
122
- std::string declare_field(t_field* tfield);
123
- std::string sanitize(std::string s);
124
- std::string type_name(t_type* ttype);
125
-
126
- std::string function_signature(t_function* tfunction);
127
- std::string argument_list(t_struct* tstruct);
128
- std::string function_types_comment(t_function* fn);
129
-
130
- std::string type_to_enum(t_type* ttype);
131
- std::string a_type(t_type* type);
132
- bool is_vowel(char c);
133
- std::string temp_name();
134
- std::string generated_category();
135
-
136
- private:
137
-
138
- /**
139
- * File streams
140
- */
141
- int temporary_var;
142
- std::ofstream f_;
143
-
144
- };
145
-
146
-
147
- /**
148
- * Prepares for file generation by opening up the necessary file output
149
- * streams.
150
- *
151
- * @param tprogram The program to generate
152
- */
153
- void t_st_generator::init_generator() {
154
- // Make output directory
155
- MKDIR(get_out_dir().c_str());
156
-
157
- temporary_var = 0;
158
-
159
- // Make output file
160
- string f_name = get_out_dir()+"/"+program_name_+".st";
161
- f_.open(f_name.c_str());
162
-
163
- // Print header
164
- f_ << st_autogen_comment() << endl;
165
-
166
- st_class_def(f_, program_name_);
167
- generate_class_side_definition();
168
-
169
- //Generate enums
170
- vector<t_enum*> enums = program_->get_enums();
171
- vector<t_enum*>::iterator en_iter;
172
- for (en_iter = enums.begin(); en_iter != enums.end(); ++en_iter) {
173
- generate_enum(*en_iter);
174
- }
175
- }
176
-
177
- string t_st_generator::class_name() {
178
- return capitalize(program_name_);
179
- }
180
-
181
- string t_st_generator::prefix(string class_name) {
182
- string prefix = program_->get_namespace("smalltalk.prefix");
183
- string name = capitalize(class_name);
184
- name = prefix.empty() ? name : (prefix + name);
185
- return name;
186
- }
187
-
188
- string t_st_generator::client_class_name() {
189
- return capitalize(service_name_) + "Client";
190
- }
191
-
192
- /**
193
- * Autogen'd comment
194
- */
195
- string t_st_generator::st_autogen_comment() {
196
- return
197
- std::string("'") +
198
- "Autogenerated by Thrift\n" +
199
- "\n" +
200
- "DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING\n" +
201
- "'!\n";
202
- }
203
-
204
- void t_st_generator::generate_force_consts() {
205
- f_ << prefix(class_name()) << " enums keysAndValuesDo: [:k :v | " <<
206
- prefix(class_name()) << " enums at: k put: v value].!" << endl;
207
-
208
- f_ << prefix(class_name()) << " constants keysAndValuesDo: [:k :v | " <<
209
- prefix(class_name()) << " constants at: k put: v value].!" << endl;
210
-
211
- }
212
-
213
- void t_st_generator::close_generator() {
214
- generate_force_consts();
215
- f_.close();
216
- }
217
-
218
- string t_st_generator::generated_category() {
219
- string cat = program_->get_namespace("smalltalk.category");
220
- // For compatibility with the Thrift grammar, the category must
221
- // be punctuated by dots. Replaces them with dashes here.
222
- for (string::iterator iter = cat.begin(); iter != cat.end(); ++iter) {
223
- if (*iter == '.') {
224
- *iter = '-';
225
- }
226
- }
227
- return cat.size() ? cat : "Generated-" + class_name();
228
- }
229
-
230
- /**
231
- * Generates a typedef. This is not done in Smalltalk, types are all implicit.
232
- *
233
- * @param ttypedef The type definition
234
- */
235
- void t_st_generator::generate_typedef(t_typedef* ttypedef) {}
236
-
237
- void t_st_generator::st_class_def(std::ofstream &out, string name) {
238
- out << "Object subclass: #" << prefix(name) << endl;
239
- indent_up();
240
- out << indent() << "instanceVariableNames: ''" << endl <<
241
- indent() << "classVariableNames: ''" << endl <<
242
- indent() << "poolDictionaries: ''" << endl <<
243
- indent() << "category: '" << generated_category() << "'!" << endl << endl;
244
- }
245
-
246
- void t_st_generator::st_method(std::ofstream &out, string cls, string name) {
247
- st_method(out, cls, name, "as yet uncategorized");
248
- }
249
-
250
- void t_st_generator::st_class_method(std::ofstream &out, string cls, string name) {
251
- st_method(out, cls + " class", name);
252
- }
253
-
254
- void t_st_generator::st_class_method(std::ofstream &out, string cls, string name, string category) {
255
- st_method(out, cls, name, category);
256
- }
257
-
258
- void t_st_generator::st_method(std::ofstream &out, string cls, string name, string category) {
259
- char timestr[50];
260
- time_t rawtime;
261
- struct tm *tinfo;
262
-
263
- time(&rawtime);
264
- tinfo = localtime(&rawtime);
265
- strftime(timestr, 50, "%m/%d/%Y %H:%M", tinfo);
266
-
267
- out << "!" << prefix(cls) <<
268
- " methodsFor: '"+category+"' stamp: 'thrift " << timestr << "'!\n" <<
269
- name << endl;
270
-
271
- indent_up();
272
- out << indent();
273
- }
274
-
275
- void t_st_generator::st_close_method(std::ofstream &out) {
276
- out << "! !" << endl << endl;
277
- indent_down();
278
- }
279
-
280
- void t_st_generator::st_setter(std::ofstream &out, string cls, string name, string type = "anObject") {
281
- st_method(out, cls, name + ": " + type);
282
- out << name << " := " + type;
283
- st_close_method(out);
284
- }
285
-
286
- void t_st_generator::st_getter(std::ofstream &out, string cls, string name) {
287
- st_method(out, cls, name + "");
288
- out << "^ " << name;
289
- st_close_method(out);
290
- }
291
-
292
- void t_st_generator::st_accessors(std::ofstream &out, string cls, string name, string type = "anObject") {
293
- st_setter(out, cls, name, type);
294
- st_getter(out, cls, name);
295
- }
296
-
297
- void t_st_generator::generate_class_side_definition() {
298
- f_ << prefix(class_name()) << " class" << endl <<
299
- "\tinstanceVariableNames: 'constants enums'!" << endl << endl;
300
-
301
- st_accessors(f_, class_name() + " class", "enums");
302
- st_accessors(f_, class_name() + " class", "constants");
303
-
304
- f_ << prefix(class_name()) << " enums: Dictionary new!" << endl;
305
- f_ << prefix(class_name()) << " constants: Dictionary new!" << endl;
306
-
307
- f_ << endl;
308
- }
309
-
310
- /**
311
- * Generates code for an enumerated type. Done using a class to scope
312
- * the values.
313
- *
314
- * @param tenum The enumeration
315
- */
316
- void t_st_generator::generate_enum(t_enum* tenum) {
317
- string cls_name = program_name_ + capitalize(tenum->get_name());
318
-
319
- f_ << prefix(class_name()) << " enums at: '" << tenum->get_name() << "' put: [" <<
320
- "(Dictionary new " << endl;
321
-
322
- vector<t_enum_value*> constants = tenum->get_constants();
323
- vector<t_enum_value*>::iterator c_iter;
324
- int value = -1;
325
- for (c_iter = constants.begin(); c_iter != constants.end(); ++c_iter) {
326
- if ((*c_iter)->has_value()) {
327
- value = (*c_iter)->get_value();
328
- } else {
329
- ++value;
330
- }
331
-
332
- f_ << "\tat: '" << (*c_iter)->get_name() << "' put: " << value << ";" << endl;
333
- }
334
-
335
- f_ << "\tyourself)]!" << endl << endl;
336
- }
337
-
338
- /**
339
- * Generate a constant value
340
- */
341
- void t_st_generator::generate_const(t_const* tconst) {
342
- t_type* type = tconst->get_type();
343
- string name = tconst->get_name();
344
- t_const_value* value = tconst->get_value();
345
-
346
- f_ << prefix(class_name()) << " constants at: '" << name << "' put: [" <<
347
- render_const_value(type, value) << "]!" << endl << endl;
348
- }
349
-
350
- /**
351
- * Prints the value of a constant with the given type. Note that type checking
352
- * is NOT performed in this function as it is always run beforehand using the
353
- * validate_types method in main.cc
354
- */
355
- string t_st_generator::render_const_value(t_type* type, t_const_value* value) {
356
- type = get_true_type(type);
357
- std::ostringstream out;
358
- if (type->is_base_type()) {
359
- t_base_type::t_base tbase = ((t_base_type*)type)->get_base();
360
- switch (tbase) {
361
- case t_base_type::TYPE_STRING:
362
- out << '"' << get_escaped_string(value) << '"';
363
- break;
364
- case t_base_type::TYPE_BOOL:
365
- out << (value->get_integer() > 0 ? "true" : "false");
366
- break;
367
- case t_base_type::TYPE_BYTE:
368
- case t_base_type::TYPE_I16:
369
- case t_base_type::TYPE_I32:
370
- case t_base_type::TYPE_I64:
371
- out << value->get_integer();
372
- break;
373
- case t_base_type::TYPE_DOUBLE:
374
- if (value->get_type() == t_const_value::CV_INTEGER) {
375
- out << value->get_integer();
376
- } else {
377
- out << value->get_double();
378
- }
379
- break;
380
- default:
381
- throw "compiler error: no const of base type " + t_base_type::t_base_name(tbase);
382
- }
383
- } else if (type->is_enum()) {
384
- indent(out) << value->get_integer();
385
- } else if (type->is_struct() || type->is_xception()) {
386
- out << "(" << capitalize(type->get_name()) << " new " << endl;
387
- indent_up();
388
-
389
- const vector<t_field*>& fields = ((t_struct*)type)->get_members();
390
- vector<t_field*>::const_iterator f_iter;
391
- const map<t_const_value*, t_const_value*>& val = value->get_map();
392
- map<t_const_value*, t_const_value*>::const_iterator v_iter;
393
-
394
- for (v_iter = val.begin(); v_iter != val.end(); ++v_iter) {
395
- t_type* field_type = NULL;
396
- for (f_iter = fields.begin(); f_iter != fields.end(); ++f_iter) {
397
- if ((*f_iter)->get_name() == v_iter->first->get_string()) {
398
- field_type = (*f_iter)->get_type();
399
- }
400
- }
401
- if (field_type == NULL) {
402
- throw "type error: " + type->get_name() + " has no field " + v_iter->first->get_string();
403
- }
404
-
405
- out << indent() << v_iter->first->get_string() << ": " <<
406
- render_const_value(field_type, v_iter->second) << ";" << endl;
407
- }
408
- out << indent() << "yourself)";
409
-
410
- indent_down();
411
- } else if (type->is_map()) {
412
- t_type* ktype = ((t_map*)type)->get_key_type();
413
- t_type* vtype = ((t_map*)type)->get_val_type();
414
- out << "(Dictionary new" << endl;
415
- indent_up();
416
- indent_up();
417
- const map<t_const_value*, t_const_value*>& val = value->get_map();
418
- map<t_const_value*, t_const_value*>::const_iterator v_iter;
419
- for (v_iter = val.begin(); v_iter != val.end(); ++v_iter) {
420
- out << indent() << indent();
421
- out << "at: " << render_const_value(ktype, v_iter->first);
422
- out << " put: ";
423
- out << render_const_value(vtype, v_iter->second);
424
- out << ";" << endl;
425
- }
426
- out << indent() << indent() << "yourself)";
427
- indent_down();
428
- indent_down();
429
- } else if (type->is_list() || type->is_set()) {
430
- t_type* etype;
431
- if (type->is_list()) {
432
- etype = ((t_list*)type)->get_elem_type();
433
- } else {
434
- etype = ((t_set*)type)->get_elem_type();
435
- }
436
- if (type->is_set()) {
437
- out << "(Set new" << endl;
438
- } else {
439
- out << "(OrderedCollection new" << endl;
440
- }
441
- indent_up();
442
- indent_up();
443
- const vector<t_const_value*>& val = value->get_list();
444
- vector<t_const_value*>::const_iterator v_iter;
445
- for (v_iter = val.begin(); v_iter != val.end(); ++v_iter) {
446
- out << indent() << indent();
447
- out << "add: " << render_const_value(etype, *v_iter);
448
- out << ";" << endl;
449
- }
450
- out << indent() << indent() << "yourself)";
451
- indent_down();
452
- indent_down();
453
- } else {
454
- throw "CANNOT GENERATE CONSTANT FOR TYPE: " + type->get_name();
455
- }
456
- return out.str();
457
- }
458
-
459
- /**
460
- * Generates a Smalltalk struct
461
- */
462
- void t_st_generator::generate_struct(t_struct* tstruct) {
463
- generate_st_struct(f_, tstruct, false);
464
- }
465
-
466
- /**
467
- * Generates a struct definition for a thrift exception. Basically the same
468
- * as a struct but extends the Exception class.
469
- *
470
- * @param txception The struct definition
471
- */
472
- void t_st_generator::generate_xception(t_struct* txception) {
473
- generate_st_struct(f_, txception, true);
474
- }
475
-
476
- /**
477
- * Generates a smalltalk class to represent a struct
478
- */
479
- void t_st_generator::generate_st_struct(std::ofstream& out, t_struct* tstruct, bool is_exception = false) {
480
- const vector<t_field*>& members = tstruct->get_members();
481
- vector<t_field*>::const_iterator m_iter;
482
-
483
- if (is_exception)
484
- out << "Error";
485
- else
486
- out << "Object";
487
-
488
- out << " subclass: #" << prefix(type_name(tstruct)) << endl <<
489
- "\tinstanceVariableNames: '";
490
-
491
- if (members.size() > 0) {
492
- for (m_iter = members.begin(); m_iter != members.end(); ++m_iter) {
493
- if (m_iter != members.begin()) out << " ";
494
- out << sanitize((*m_iter)->get_name());
495
- }
496
- }
497
-
498
- out << "'\n" <<
499
- "\tclassVariableNames: ''\n" <<
500
- "\tpoolDictionaries: ''\n" <<
501
- "\tcategory: '" << generated_category() << "'!\n\n";
502
-
503
- generate_accessors(out, tstruct);
504
- }
505
-
506
- bool t_st_generator::is_vowel(char c) {
507
- switch(tolower(c)) {
508
- case 'a': case 'e': case 'i': case 'o': case 'u':
509
- return true;
510
- }
511
- return false;
512
- }
513
-
514
- string t_st_generator::a_type(t_type* type) {
515
- string prefix;
516
-
517
- if (is_vowel(type_name(type)[0]))
518
- prefix = "an";
519
- else
520
- prefix = "a";
521
-
522
- return prefix + capitalize(type_name(type));
523
- }
524
-
525
- void t_st_generator::generate_accessors(std::ofstream& out, t_struct* tstruct) {
526
- const vector<t_field*>& members = tstruct->get_members();
527
- vector<t_field*>::const_iterator m_iter;
528
- string type;
529
- string prefix;
530
-
531
- if (members.size() > 0) {
532
- for (m_iter = members.begin(); m_iter != members.end(); ++m_iter) {
533
- st_accessors(out,
534
- capitalize(type_name(tstruct)),
535
- sanitize((*m_iter)->get_name()),
536
- a_type((*m_iter)->get_type()));
537
- }
538
- out << endl;
539
- }
540
- }
541
-
542
- /**
543
- * Generates a thrift service.
544
- *
545
- * @param tservice The service definition
546
- */
547
- void t_st_generator::generate_service(t_service* tservice) {
548
- generate_service_client(tservice);
549
- // generate_service_server(tservice);
550
- }
551
-
552
- string t_st_generator::temp_name() {
553
- std::ostringstream out;
554
- out << "temp" << temporary_var++;
555
- return out.str();
556
- }
557
-
558
- string t_st_generator::map_writer(t_map *tmap, string fname) {
559
- std::ostringstream out;
560
- string key = temp_name();
561
- string val = temp_name();
562
-
563
- out << "[oprot writeMapBegin: (TMap new keyType: " << type_to_enum(tmap->get_key_type()) <<
564
- "; valueType: " << type_to_enum(tmap->get_val_type()) << "; size: " << fname << " size)." << endl;
565
- indent_up();
566
-
567
- out << indent() << fname << " keysAndValuesDo: [:" << key << " :" << val << " |" << endl;
568
- indent_up();
569
-
570
- out << indent() << write_val(tmap->get_key_type(), key) << "." << endl <<
571
- indent() << write_val(tmap->get_val_type(), val);
572
- indent_down();
573
-
574
- out << "]." << endl <<
575
- indent() << "oprot writeMapEnd] value";
576
- indent_down();
577
-
578
- return out.str();
579
- }
580
-
581
- string t_st_generator::map_reader(t_map *tmap) {
582
- std::ostringstream out;
583
- string desc = temp_name();
584
- string val = temp_name();
585
-
586
- out << "[|" << desc << " " << val << "| " << endl;
587
- indent_up();
588
-
589
- out << indent() << desc << " := iprot readMapBegin." << endl <<
590
- indent() << val << " := Dictionary new." << endl <<
591
- indent() << desc << " size timesRepeat: [" << endl;
592
-
593
- indent_up();
594
- out << indent() << val << " at: " << read_val(tmap->get_key_type()) <<
595
- " put: " << read_val(tmap->get_val_type());
596
- indent_down();
597
-
598
- out << "]." << endl <<
599
- indent() << "iprot readMapEnd." << endl <<
600
- indent() << val << "] value";
601
- indent_down();
602
-
603
- return out.str();
604
- }
605
-
606
- string t_st_generator::list_writer(t_list *tlist, string fname) {
607
- std::ostringstream out;
608
- string val = temp_name();
609
-
610
- out << "[oprot writeListBegin: (TList new elemType: " <<
611
- type_to_enum(tlist->get_elem_type()) << "; size: " << fname << " size)." << endl;
612
- indent_up();
613
-
614
- out << indent() << fname << " do: [:" << val << "|" << endl;
615
- indent_up();
616
-
617
- out << indent() << write_val(tlist->get_elem_type(), val) << endl;
618
- indent_down();
619
-
620
- out << "]." << endl <<
621
- indent() << "oprot writeListEnd] value";
622
- indent_down();
623
-
624
- return out.str();
625
- }
626
-
627
- string t_st_generator::list_reader(t_list *tlist) {
628
- std::ostringstream out;
629
- string desc = temp_name();
630
- string val = temp_name();
631
-
632
- out << "[|" << desc << " " << val << "| " << desc << " := iprot readListBegin." << endl;
633
- indent_up();
634
-
635
- out << indent() << val << " := OrderedCollection new." << endl <<
636
- indent() << desc << " size timesRepeat: [" << endl;
637
-
638
- indent_up();
639
- out << indent() << val << " add: " << read_val(tlist->get_elem_type());
640
- indent_down();
641
-
642
- out << "]." << endl <<
643
- indent() << "iprot readListEnd." << endl <<
644
- indent() << val << "] value";
645
- indent_down();
646
-
647
- return out.str();
648
- }
649
-
650
- string t_st_generator::set_writer(t_set *tset, string fname) {
651
- std::ostringstream out;
652
- string val = temp_name();
653
-
654
- out << "[oprot writeSetBegin: (TSet new elemType: " << type_to_enum(tset->get_elem_type()) <<
655
- "; size: " << fname << " size)." << endl;
656
- indent_up();
657
-
658
- out << indent() << fname << " do: [:" << val << "|" << endl;
659
- indent_up();
660
-
661
- out << indent() << write_val(tset->get_elem_type(), val) << endl;
662
- indent_down();
663
-
664
- out << "]." << endl <<
665
- indent() << "oprot writeSetEnd] value";
666
- indent_down();
667
-
668
- return out.str();
669
- }
670
-
671
- string t_st_generator::set_reader(t_set *tset) {
672
- std::ostringstream out;
673
- string desc = temp_name();
674
- string val = temp_name();
675
-
676
- out << "[|" << desc << " " << val << "| " << desc << " := iprot readSetBegin." << endl;
677
- indent_up();
678
-
679
- out << indent() << val << " := Set new." << endl <<
680
- indent() << desc << " size timesRepeat: [" << endl;
681
-
682
- indent_up();
683
- out << indent() << val << " add: " << read_val(tset->get_elem_type());
684
- indent_down();
685
-
686
- out << "]." << endl <<
687
- indent() << "iprot readSetEnd." << endl <<
688
- indent() << val << "] value";
689
- indent_down();
690
-
691
- return out.str();
692
- }
693
-
694
- string t_st_generator::struct_writer(t_struct *tstruct, string sname) {
695
- std::ostringstream out;
696
- const vector<t_field*>& fields = tstruct->get_sorted_members();
697
- vector<t_field*>::const_iterator fld_iter;
698
-
699
- out << "[oprot writeStructBegin: " <<
700
- "(TStruct new name: '" + tstruct->get_name() +"')." << endl;
701
- indent_up();
702
-
703
- for (fld_iter = fields.begin(); fld_iter != fields.end(); ++fld_iter) {
704
- bool optional = (*fld_iter)->get_req() == t_field::T_OPTIONAL;
705
- string fname = (*fld_iter)->get_name();
706
- string accessor = sname + " " + sanitize(fname);
707
-
708
- if (optional) {
709
- out << indent() << accessor << " ifNotNil: [" << endl;
710
- indent_up();
711
- }
712
-
713
- out << indent() << "oprot writeFieldBegin: (TField new name: '" << fname <<
714
- "'; type: " << type_to_enum((*fld_iter)->get_type()) <<
715
- "; id: " << (*fld_iter)->get_key() << ")." << endl;
716
-
717
- out << indent() << write_val((*fld_iter)->get_type(), accessor) << "." << endl <<
718
- indent() << "oprot writeFieldEnd";
719
-
720
- if (optional) {
721
- out << "]";
722
- indent_down();
723
- }
724
-
725
- out << "." << endl;
726
- }
727
-
728
- out << indent() << "oprot writeFieldStop; writeStructEnd] value";
729
- indent_down();
730
-
731
- return out.str();
732
- }
733
-
734
- string t_st_generator::struct_reader(t_struct *tstruct, string clsName = "") {
735
- std::ostringstream out;
736
- const vector<t_field*>& fields = tstruct->get_members();
737
- vector<t_field*>::const_iterator fld_iter;
738
- string val = temp_name();
739
- string desc = temp_name();
740
- string found = temp_name();
741
-
742
- if (clsName.size() == 0) {
743
- clsName = tstruct->get_name();
744
- }
745
-
746
- out << "[|" << desc << " " << val << "|" << endl;
747
- indent_up();
748
-
749
- //This is nasty, but without it we'll break things by prefixing TResult.
750
- string name = ((capitalize(clsName) == "TResult") ? capitalize(clsName) : prefix(clsName));
751
- out << indent() << val << " := " << name << " new." << endl;
752
-
753
- out << indent() << "iprot readStructBegin." << endl <<
754
- indent() << "[" << desc << " := iprot readFieldBegin." << endl <<
755
- indent() << desc << " type = TType stop] whileFalse: [|" << found << "|" << endl;
756
- indent_up();
757
-
758
- for (fld_iter = fields.begin(); fld_iter != fields.end(); ++fld_iter) {
759
- out << indent() << desc << " id = " << (*fld_iter)->get_key() <<
760
- " ifTrue: [" << endl;
761
- indent_up();
762
-
763
- out << indent() << found << " := true." << endl <<
764
- indent() << val << " " << sanitize((*fld_iter)->get_name()) << ": " <<
765
- read_val((*fld_iter)->get_type());
766
- indent_down();
767
-
768
- out << "]." << endl;
769
- }
770
-
771
- out << indent() << found << " ifNil: [iprot skip: " << desc << " type]]." << endl;
772
- indent_down();
773
-
774
- out << indent() << "oprot readStructEnd." << endl <<
775
- indent() << val << "] value";
776
- indent_down();
777
-
778
- return out.str();
779
- }
780
-
781
- string t_st_generator::write_val(t_type *t, string fname) {
782
- t = get_true_type(t);
783
-
784
- if (t->is_base_type()) {
785
- t_base_type::t_base tbase = ((t_base_type*) t)->get_base();
786
- switch(tbase) {
787
- case t_base_type::TYPE_DOUBLE:
788
- return "iprot writeDouble: " + fname + " asFloat";
789
- break;
790
- case t_base_type::TYPE_BYTE:
791
- case t_base_type::TYPE_I16:
792
- case t_base_type::TYPE_I32:
793
- case t_base_type::TYPE_I64:
794
- return "iprot write" + capitalize(type_name(t)) + ": " + fname + " asInteger";
795
- default:
796
- return "iprot write" + capitalize(type_name(t)) + ": " + fname;
797
- }
798
- } else if (t->is_map()) {
799
- return map_writer((t_map*) t, fname);
800
- } else if (t->is_struct() || t->is_xception()) {
801
- return struct_writer((t_struct*) t, fname);
802
- } else if (t->is_list()) {
803
- return list_writer((t_list*) t, fname);
804
- } else if (t->is_set()) {
805
- return set_writer((t_set*) t, fname);
806
- } else if (t->is_enum()) {
807
- return "iprot writeI32: " + fname;
808
- } else {
809
- throw "Sorry, I don't know how to write this: " + type_name(t);
810
- }
811
- }
812
-
813
- string t_st_generator::read_val(t_type *t) {
814
- t = get_true_type(t);
815
-
816
- if (t->is_base_type()) {
817
- return "iprot read" + capitalize(type_name(t));
818
- } else if (t->is_map()) {
819
- return map_reader((t_map*) t);
820
- } else if (t->is_struct() || t->is_xception()) {
821
- return struct_reader((t_struct*) t);
822
- } else if (t->is_list()) {
823
- return list_reader((t_list*) t);
824
- } else if (t->is_set()) {
825
- return set_reader((t_set*) t);
826
- } else if (t->is_enum()) {
827
- return "iprot readI32";
828
- } else {
829
- throw "Sorry, I don't know how to read this: " + type_name(t);
830
- }
831
- }
832
-
833
- void t_st_generator::generate_send_method(t_function* function) {
834
- string funname = function->get_name();
835
- string signature = function_signature(function);
836
- t_struct* arg_struct = function->get_arglist();
837
- const vector<t_field*>& fields = arg_struct->get_members();
838
- vector<t_field*>::const_iterator fld_iter;
839
-
840
- st_method(f_, client_class_name(), "send" + capitalize(signature));
841
- f_ << "oprot writeMessageBegin:" << endl;
842
- indent_up();
843
-
844
- f_ << indent() << "(TCallMessage new" << endl;
845
- indent_up();
846
-
847
- f_ << indent() << "name: '" << funname << "'; " << endl <<
848
- indent() << "seqid: self nextSeqid)." << endl;
849
- indent_down();
850
- indent_down();
851
-
852
- f_ << indent() << "oprot writeStructBegin: " <<
853
- "(TStruct new name: '" + capitalize(function->get_name()) + "_args')." << endl;
854
-
855
- for (fld_iter = fields.begin(); fld_iter != fields.end(); ++fld_iter) {
856
- string fname = (*fld_iter)->get_name();
857
-
858
- f_ << indent() << "oprot writeFieldBegin: (TField new name: '" << fname <<
859
- "'; type: " << type_to_enum((*fld_iter)->get_type()) <<
860
- "; id: " << (*fld_iter)->get_key() << ")." << endl;
861
-
862
- f_ << indent() << write_val((*fld_iter)->get_type(), fname) << "." << endl <<
863
- indent() << "oprot writeFieldEnd." << endl;
864
- }
865
-
866
- f_ << indent() << "oprot writeFieldStop; writeStructEnd; writeMessageEnd." << endl;
867
- f_ << indent() << "oprot transport flush";
868
-
869
- st_close_method(f_);
870
- }
871
-
872
- // We only support receiving TResult structures (so this won't work on the server side)
873
- void t_st_generator::generate_recv_method(t_function* function) {
874
- string funname = function->get_name();
875
- string signature = function_signature(function);
876
-
877
- t_struct result(program_, "TResult");
878
- t_field success(function->get_returntype(), "success", 0);
879
- result.append(&success);
880
-
881
- t_struct* xs = function->get_xceptions();
882
- const vector<t_field*>& fields = xs->get_members();
883
- vector<t_field*>::const_iterator f_iter;
884
- for (f_iter = fields.begin(); f_iter != fields.end(); ++f_iter) {
885
- // duplicate the field, but call it "exception"... we don't need a dynamic name
886
- t_field *exception = new t_field((*f_iter)->get_type(), "exception", (*f_iter)->get_key());
887
- result.append(exception);
888
- }
889
-
890
- st_method(f_, client_class_name(), "recv" + capitalize(funname));
891
- f_ << "| f msg res | " << endl <<
892
- indent() << "msg := oprot readMessageBegin." << endl <<
893
- indent() << "self validateRemoteMessage: msg." << endl <<
894
- indent() << "res := " << struct_reader(&result) << "." << endl <<
895
- indent() << "oprot readMessageEnd." << endl <<
896
- indent() << "oprot transport flush." << endl <<
897
- indent() << "res exception ifNotNil: [res exception signal]." << endl <<
898
- indent() << "^ res";
899
- st_close_method(f_);
900
- }
901
-
902
- string t_st_generator::function_types_comment(t_function* fn) {
903
- std::ostringstream out;
904
- const vector<t_field*>& fields = fn->get_arglist()->get_members();
905
- vector<t_field*>::const_iterator f_iter;
906
-
907
- out << "\"";
908
-
909
- for (f_iter = fields.begin(); f_iter != fields.end(); ++f_iter) {
910
- out << (*f_iter)->get_name() << ": " << type_name((*f_iter)->get_type());
911
- if ((f_iter + 1) != fields.end()) {
912
- out << ", ";
913
- }
914
- }
915
-
916
- out << "\"";
917
-
918
- return out.str();
919
- }
920
-
921
- /**
922
- * Generates a service client definition.
923
- *
924
- * @param tservice The service to generate a server for.
925
- */
926
- void t_st_generator::generate_service_client(t_service* tservice) {
927
- string extends = "";
928
- string extends_client = "TClient";
929
- vector<t_function*> functions = tservice->get_functions();
930
- vector<t_function*>::iterator f_iter;
931
-
932
- if (tservice->get_extends() != NULL) {
933
- extends = type_name(tservice->get_extends());
934
- extends_client = extends + "Client";
935
- }
936
-
937
- f_ << extends_client << " subclass: #" << prefix(client_class_name()) << endl <<
938
- "\tinstanceVariableNames: ''\n" <<
939
- "\tclassVariableNames: ''\n" <<
940
- "\tpoolDictionaries: ''\n" <<
941
- "\tcategory: '" << generated_category() << "'!\n\n";
942
-
943
- for (f_iter = functions.begin(); f_iter != functions.end(); ++f_iter) {
944
- string funname = (*f_iter)->get_name();
945
- string signature = function_signature(*f_iter);
946
-
947
- st_method(f_, client_class_name(), signature);
948
- f_ << function_types_comment(*f_iter) << endl <<
949
- indent() << "self send" << capitalize(signature) << "." << endl;
950
-
951
- if (!(*f_iter)->is_oneway()) {
952
- f_ << indent() << "^ self recv" << capitalize(funname) << " success " << endl;
953
- }
954
-
955
- st_close_method(f_);
956
-
957
- generate_send_method(*f_iter);
958
- if (!(*f_iter)->is_oneway()) {
959
- generate_recv_method(*f_iter);
960
- }
961
- }
962
- }
963
-
964
- string t_st_generator::sanitize(string s) {
965
- std::ostringstream out;
966
- bool underscore = false;
967
-
968
- for (unsigned int i = 0; i < s.size(); i++) {
969
- if (s[i] == '_') {
970
- underscore = true;
971
- continue;
972
- }
973
- if (underscore) {
974
- out << (char) toupper(s[i]);
975
- underscore = false;
976
- continue;
977
- }
978
- out << s[i];
979
- }
980
-
981
- return out.str();
982
- }
983
-
984
- /**
985
- * Renders a function signature of the form 'type name(args)'
986
- *
987
- * @param tfunction Function definition
988
- * @return String of rendered function definition
989
- */
990
- string t_st_generator::function_signature(t_function* tfunction) {
991
- return tfunction->get_name() + capitalize(argument_list(tfunction->get_arglist()));
992
- }
993
-
994
- /**
995
- * Renders a field list
996
- */
997
- string t_st_generator::argument_list(t_struct* tstruct) {
998
- string result = "";
999
-
1000
- const vector<t_field*>& fields = tstruct->get_members();
1001
- vector<t_field*>::const_iterator f_iter;
1002
- bool first = true;
1003
- for (f_iter = fields.begin(); f_iter != fields.end(); ++f_iter) {
1004
- if (first) {
1005
- first = false;
1006
- } else {
1007
- result += " ";
1008
- }
1009
- result += (*f_iter)->get_name() + ": " + (*f_iter)->get_name();
1010
- }
1011
- return result;
1012
- }
1013
-
1014
- string t_st_generator::type_name(t_type* ttype) {
1015
- string prefix = "";
1016
- t_program* program = ttype->get_program();
1017
- if (program != NULL && program != program_) {
1018
- if (!ttype->is_service()) {
1019
- prefix = program->get_name() + "_types.";
1020
- }
1021
- }
1022
-
1023
- string name = ttype->get_name();
1024
- if (ttype->is_struct() || ttype->is_xception()) {
1025
- name = capitalize(ttype->get_name());
1026
- }
1027
-
1028
- return prefix + name;
1029
- }
1030
-
1031
- /* Convert t_type to Smalltalk type code */
1032
- string t_st_generator::type_to_enum(t_type* type) {
1033
- type = get_true_type(type);
1034
-
1035
- if (type->is_base_type()) {
1036
- t_base_type::t_base tbase = ((t_base_type*)type)->get_base();
1037
- switch (tbase) {
1038
- case t_base_type::TYPE_VOID:
1039
- throw "NO T_VOID CONSTRUCT";
1040
- case t_base_type::TYPE_STRING:
1041
- return "TType string";
1042
- case t_base_type::TYPE_BOOL:
1043
- return "TType bool";
1044
- case t_base_type::TYPE_BYTE:
1045
- return "TType byte";
1046
- case t_base_type::TYPE_I16:
1047
- return "TType i16";
1048
- case t_base_type::TYPE_I32:
1049
- return "TType i32";
1050
- case t_base_type::TYPE_I64:
1051
- return "TType i64";
1052
- case t_base_type::TYPE_DOUBLE:
1053
- return "TType double";
1054
- }
1055
- } else if (type->is_enum()) {
1056
- return "TType i32";
1057
- } else if (type->is_struct() || type->is_xception()) {
1058
- return "TType struct";
1059
- } else if (type->is_map()) {
1060
- return "TType map";
1061
- } else if (type->is_set()) {
1062
- return "TType set";
1063
- } else if (type->is_list()) {
1064
- return "TType list";
1065
- }
1066
-
1067
- throw "INVALID TYPE IN type_to_enum: " + type->get_name();
1068
- }
1069
-
1070
-
1071
- THRIFT_REGISTER_GENERATOR(st, "Smalltalk", "");