planetscale 0.3.1 → 0.3.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (368) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +9 -1
  3. data/.github/workflows/gem-push.yml +9 -2
  4. data/.licenses/go/github.com/matoous/go-nanoid/v2.dep.yml +34 -0
  5. data/.licenses/go/github.com/planetscale/planetscale-go/planetscale.dep.yml +1 -1
  6. data/.licenses/go/github.com/planetscale/sql-proxy/proxy.dep.yml +1 -1
  7. data/.licenses/go/go.uber.org/zap/buffer.dep.yml +1 -1
  8. data/.licenses/go/go.uber.org/zap/internal/bufferpool.dep.yml +1 -1
  9. data/.licenses/go/go.uber.org/zap/internal/color.dep.yml +1 -1
  10. data/.licenses/go/go.uber.org/zap/internal/exit.dep.yml +1 -1
  11. data/.licenses/go/go.uber.org/zap/zapcore.dep.yml +1 -1
  12. data/.licenses/go/go.uber.org/zap.dep.yml +1 -1
  13. data/README.md +2 -0
  14. data/controller.go +21 -36
  15. data/go.mod +4 -3
  16. data/go.sum +32 -18
  17. data/lib/planetscale/version.rb +1 -1
  18. data/lib/planetscale.rb +2 -3
  19. data/planetscale.gemspec +1 -1
  20. data/proxy/planetscale-darwin.h +1 -1
  21. data/proxy/planetscale-darwin.so +0 -0
  22. data/proxy/planetscale-linux.h +1 -1
  23. data/proxy/planetscale-linux.so +0 -0
  24. data/proxy.go +1 -5
  25. metadata +3 -345
  26. data/vendor/github.com/armon/circbuf/.gitignore +0 -22
  27. data/vendor/github.com/armon/circbuf/LICENSE +0 -20
  28. data/vendor/github.com/armon/circbuf/README.md +0 -28
  29. data/vendor/github.com/armon/circbuf/circbuf.go +0 -92
  30. data/vendor/github.com/armon/circbuf/go.mod +0 -1
  31. data/vendor/github.com/golang/protobuf/AUTHORS +0 -3
  32. data/vendor/github.com/golang/protobuf/CONTRIBUTORS +0 -3
  33. data/vendor/github.com/golang/protobuf/LICENSE +0 -28
  34. data/vendor/github.com/golang/protobuf/proto/buffer.go +0 -324
  35. data/vendor/github.com/golang/protobuf/proto/defaults.go +0 -63
  36. data/vendor/github.com/golang/protobuf/proto/deprecated.go +0 -113
  37. data/vendor/github.com/golang/protobuf/proto/discard.go +0 -58
  38. data/vendor/github.com/golang/protobuf/proto/extensions.go +0 -356
  39. data/vendor/github.com/golang/protobuf/proto/properties.go +0 -306
  40. data/vendor/github.com/golang/protobuf/proto/proto.go +0 -167
  41. data/vendor/github.com/golang/protobuf/proto/registry.go +0 -317
  42. data/vendor/github.com/golang/protobuf/proto/text_decode.go +0 -801
  43. data/vendor/github.com/golang/protobuf/proto/text_encode.go +0 -560
  44. data/vendor/github.com/golang/protobuf/proto/wire.go +0 -78
  45. data/vendor/github.com/golang/protobuf/proto/wrappers.go +0 -34
  46. data/vendor/github.com/gorilla/mux/AUTHORS +0 -8
  47. data/vendor/github.com/gorilla/mux/LICENSE +0 -27
  48. data/vendor/github.com/gorilla/mux/README.md +0 -805
  49. data/vendor/github.com/gorilla/mux/doc.go +0 -306
  50. data/vendor/github.com/gorilla/mux/go.mod +0 -3
  51. data/vendor/github.com/gorilla/mux/middleware.go +0 -74
  52. data/vendor/github.com/gorilla/mux/mux.go +0 -606
  53. data/vendor/github.com/gorilla/mux/regexp.go +0 -388
  54. data/vendor/github.com/gorilla/mux/route.go +0 -736
  55. data/vendor/github.com/gorilla/mux/test_helpers.go +0 -19
  56. data/vendor/github.com/hashicorp/go-cleanhttp/LICENSE +0 -363
  57. data/vendor/github.com/hashicorp/go-cleanhttp/README.md +0 -30
  58. data/vendor/github.com/hashicorp/go-cleanhttp/cleanhttp.go +0 -58
  59. data/vendor/github.com/hashicorp/go-cleanhttp/doc.go +0 -20
  60. data/vendor/github.com/hashicorp/go-cleanhttp/go.mod +0 -3
  61. data/vendor/github.com/hashicorp/go-cleanhttp/handlers.go +0 -48
  62. data/vendor/github.com/mitchellh/go-homedir/LICENSE +0 -21
  63. data/vendor/github.com/mitchellh/go-homedir/README.md +0 -14
  64. data/vendor/github.com/mitchellh/go-homedir/go.mod +0 -1
  65. data/vendor/github.com/mitchellh/go-homedir/homedir.go +0 -167
  66. data/vendor/github.com/pkg/errors/.gitignore +0 -24
  67. data/vendor/github.com/pkg/errors/.travis.yml +0 -10
  68. data/vendor/github.com/pkg/errors/LICENSE +0 -23
  69. data/vendor/github.com/pkg/errors/Makefile +0 -44
  70. data/vendor/github.com/pkg/errors/README.md +0 -59
  71. data/vendor/github.com/pkg/errors/appveyor.yml +0 -32
  72. data/vendor/github.com/pkg/errors/errors.go +0 -288
  73. data/vendor/github.com/pkg/errors/go113.go +0 -38
  74. data/vendor/github.com/pkg/errors/stack.go +0 -177
  75. data/vendor/github.com/planetscale/planetscale-go/LICENSE +0 -202
  76. data/vendor/github.com/planetscale/planetscale-go/planetscale/audit_logs.go +0 -136
  77. data/vendor/github.com/planetscale/planetscale-go/planetscale/backups.go +0 -139
  78. data/vendor/github.com/planetscale/planetscale-go/planetscale/branches.go +0 -252
  79. data/vendor/github.com/planetscale/planetscale-go/planetscale/certs.go +0 -166
  80. data/vendor/github.com/planetscale/planetscale-go/planetscale/client.go +0 -312
  81. data/vendor/github.com/planetscale/planetscale-go/planetscale/databases.go +0 -133
  82. data/vendor/github.com/planetscale/planetscale-go/planetscale/deploy_requests.go +0 -368
  83. data/vendor/github.com/planetscale/planetscale-go/planetscale/organizations.go +0 -103
  84. data/vendor/github.com/planetscale/planetscale-go/planetscale/regions.go +0 -52
  85. data/vendor/github.com/planetscale/planetscale-go/planetscale/service_tokens.go +0 -163
  86. data/vendor/github.com/planetscale/sql-proxy/LICENSE +0 -202
  87. data/vendor/github.com/planetscale/sql-proxy/proxy/client.go +0 -476
  88. data/vendor/github.com/planetscale/sql-proxy/proxy/tls_cache.go +0 -73
  89. data/vendor/go.uber.org/atomic/.codecov.yml +0 -19
  90. data/vendor/go.uber.org/atomic/.gitignore +0 -12
  91. data/vendor/go.uber.org/atomic/.travis.yml +0 -27
  92. data/vendor/go.uber.org/atomic/CHANGELOG.md +0 -76
  93. data/vendor/go.uber.org/atomic/LICENSE.txt +0 -19
  94. data/vendor/go.uber.org/atomic/Makefile +0 -78
  95. data/vendor/go.uber.org/atomic/README.md +0 -63
  96. data/vendor/go.uber.org/atomic/bool.go +0 -81
  97. data/vendor/go.uber.org/atomic/bool_ext.go +0 -53
  98. data/vendor/go.uber.org/atomic/doc.go +0 -23
  99. data/vendor/go.uber.org/atomic/duration.go +0 -82
  100. data/vendor/go.uber.org/atomic/duration_ext.go +0 -40
  101. data/vendor/go.uber.org/atomic/error.go +0 -51
  102. data/vendor/go.uber.org/atomic/error_ext.go +0 -39
  103. data/vendor/go.uber.org/atomic/float64.go +0 -76
  104. data/vendor/go.uber.org/atomic/float64_ext.go +0 -47
  105. data/vendor/go.uber.org/atomic/gen.go +0 -26
  106. data/vendor/go.uber.org/atomic/go.mod +0 -8
  107. data/vendor/go.uber.org/atomic/go.sum +0 -9
  108. data/vendor/go.uber.org/atomic/int32.go +0 -102
  109. data/vendor/go.uber.org/atomic/int64.go +0 -102
  110. data/vendor/go.uber.org/atomic/nocmp.go +0 -35
  111. data/vendor/go.uber.org/atomic/string.go +0 -54
  112. data/vendor/go.uber.org/atomic/string_ext.go +0 -43
  113. data/vendor/go.uber.org/atomic/uint32.go +0 -102
  114. data/vendor/go.uber.org/atomic/uint64.go +0 -102
  115. data/vendor/go.uber.org/atomic/value.go +0 -31
  116. data/vendor/go.uber.org/multierr/.codecov.yml +0 -15
  117. data/vendor/go.uber.org/multierr/.gitignore +0 -4
  118. data/vendor/go.uber.org/multierr/.travis.yml +0 -23
  119. data/vendor/go.uber.org/multierr/CHANGELOG.md +0 -60
  120. data/vendor/go.uber.org/multierr/LICENSE.txt +0 -19
  121. data/vendor/go.uber.org/multierr/Makefile +0 -42
  122. data/vendor/go.uber.org/multierr/README.md +0 -23
  123. data/vendor/go.uber.org/multierr/error.go +0 -449
  124. data/vendor/go.uber.org/multierr/glide.yaml +0 -8
  125. data/vendor/go.uber.org/multierr/go.mod +0 -8
  126. data/vendor/go.uber.org/multierr/go.sum +0 -11
  127. data/vendor/go.uber.org/multierr/go113.go +0 -52
  128. data/vendor/go.uber.org/zap/.codecov.yml +0 -17
  129. data/vendor/go.uber.org/zap/.gitignore +0 -32
  130. data/vendor/go.uber.org/zap/.readme.tmpl +0 -109
  131. data/vendor/go.uber.org/zap/CHANGELOG.md +0 -492
  132. data/vendor/go.uber.org/zap/CODE_OF_CONDUCT.md +0 -75
  133. data/vendor/go.uber.org/zap/CONTRIBUTING.md +0 -75
  134. data/vendor/go.uber.org/zap/FAQ.md +0 -164
  135. data/vendor/go.uber.org/zap/LICENSE.txt +0 -19
  136. data/vendor/go.uber.org/zap/Makefile +0 -73
  137. data/vendor/go.uber.org/zap/README.md +0 -134
  138. data/vendor/go.uber.org/zap/array.go +0 -320
  139. data/vendor/go.uber.org/zap/buffer/buffer.go +0 -141
  140. data/vendor/go.uber.org/zap/buffer/pool.go +0 -49
  141. data/vendor/go.uber.org/zap/checklicense.sh +0 -17
  142. data/vendor/go.uber.org/zap/config.go +0 -264
  143. data/vendor/go.uber.org/zap/doc.go +0 -113
  144. data/vendor/go.uber.org/zap/encoder.go +0 -79
  145. data/vendor/go.uber.org/zap/error.go +0 -80
  146. data/vendor/go.uber.org/zap/field.go +0 -549
  147. data/vendor/go.uber.org/zap/flag.go +0 -39
  148. data/vendor/go.uber.org/zap/glide.yaml +0 -34
  149. data/vendor/go.uber.org/zap/global.go +0 -168
  150. data/vendor/go.uber.org/zap/global_go112.go +0 -26
  151. data/vendor/go.uber.org/zap/global_prego112.go +0 -26
  152. data/vendor/go.uber.org/zap/go.mod +0 -14
  153. data/vendor/go.uber.org/zap/go.sum +0 -54
  154. data/vendor/go.uber.org/zap/http_handler.go +0 -132
  155. data/vendor/go.uber.org/zap/internal/bufferpool/bufferpool.go +0 -31
  156. data/vendor/go.uber.org/zap/internal/color/color.go +0 -44
  157. data/vendor/go.uber.org/zap/internal/exit/exit.go +0 -64
  158. data/vendor/go.uber.org/zap/level.go +0 -132
  159. data/vendor/go.uber.org/zap/logger.go +0 -348
  160. data/vendor/go.uber.org/zap/options.go +0 -148
  161. data/vendor/go.uber.org/zap/sink.go +0 -161
  162. data/vendor/go.uber.org/zap/stacktrace.go +0 -85
  163. data/vendor/go.uber.org/zap/sugar.go +0 -315
  164. data/vendor/go.uber.org/zap/time.go +0 -27
  165. data/vendor/go.uber.org/zap/writer.go +0 -99
  166. data/vendor/go.uber.org/zap/zapcore/buffered_write_syncer.go +0 -188
  167. data/vendor/go.uber.org/zap/zapcore/clock.go +0 -50
  168. data/vendor/go.uber.org/zap/zapcore/console_encoder.go +0 -161
  169. data/vendor/go.uber.org/zap/zapcore/core.go +0 -113
  170. data/vendor/go.uber.org/zap/zapcore/doc.go +0 -24
  171. data/vendor/go.uber.org/zap/zapcore/encoder.go +0 -443
  172. data/vendor/go.uber.org/zap/zapcore/entry.go +0 -264
  173. data/vendor/go.uber.org/zap/zapcore/error.go +0 -132
  174. data/vendor/go.uber.org/zap/zapcore/field.go +0 -233
  175. data/vendor/go.uber.org/zap/zapcore/hook.go +0 -68
  176. data/vendor/go.uber.org/zap/zapcore/increase_level.go +0 -66
  177. data/vendor/go.uber.org/zap/zapcore/json_encoder.go +0 -534
  178. data/vendor/go.uber.org/zap/zapcore/level.go +0 -175
  179. data/vendor/go.uber.org/zap/zapcore/level_strings.go +0 -46
  180. data/vendor/go.uber.org/zap/zapcore/marshaler.go +0 -61
  181. data/vendor/go.uber.org/zap/zapcore/memory_encoder.go +0 -179
  182. data/vendor/go.uber.org/zap/zapcore/sampler.go +0 -208
  183. data/vendor/go.uber.org/zap/zapcore/tee.go +0 -81
  184. data/vendor/go.uber.org/zap/zapcore/write_syncer.go +0 -122
  185. data/vendor/golang.org/x/net/AUTHORS +0 -3
  186. data/vendor/golang.org/x/net/CONTRIBUTORS +0 -3
  187. data/vendor/golang.org/x/net/LICENSE +0 -27
  188. data/vendor/golang.org/x/net/PATENTS +0 -22
  189. data/vendor/golang.org/x/net/context/context.go +0 -56
  190. data/vendor/golang.org/x/net/context/ctxhttp/ctxhttp.go +0 -71
  191. data/vendor/golang.org/x/net/context/go17.go +0 -73
  192. data/vendor/golang.org/x/net/context/go19.go +0 -21
  193. data/vendor/golang.org/x/net/context/pre_go17.go +0 -301
  194. data/vendor/golang.org/x/net/context/pre_go19.go +0 -110
  195. data/vendor/golang.org/x/oauth2/.travis.yml +0 -13
  196. data/vendor/golang.org/x/oauth2/AUTHORS +0 -3
  197. data/vendor/golang.org/x/oauth2/CONTRIBUTING.md +0 -26
  198. data/vendor/golang.org/x/oauth2/CONTRIBUTORS +0 -3
  199. data/vendor/golang.org/x/oauth2/LICENSE +0 -27
  200. data/vendor/golang.org/x/oauth2/README.md +0 -36
  201. data/vendor/golang.org/x/oauth2/go.mod +0 -9
  202. data/vendor/golang.org/x/oauth2/go.sum +0 -361
  203. data/vendor/golang.org/x/oauth2/internal/client_appengine.go +0 -14
  204. data/vendor/golang.org/x/oauth2/internal/doc.go +0 -6
  205. data/vendor/golang.org/x/oauth2/internal/oauth2.go +0 -37
  206. data/vendor/golang.org/x/oauth2/internal/token.go +0 -294
  207. data/vendor/golang.org/x/oauth2/internal/transport.go +0 -33
  208. data/vendor/golang.org/x/oauth2/oauth2.go +0 -381
  209. data/vendor/golang.org/x/oauth2/token.go +0 -178
  210. data/vendor/golang.org/x/oauth2/transport.go +0 -89
  211. data/vendor/google.golang.org/appengine/LICENSE +0 -202
  212. data/vendor/google.golang.org/appengine/internal/api.go +0 -678
  213. data/vendor/google.golang.org/appengine/internal/api_classic.go +0 -169
  214. data/vendor/google.golang.org/appengine/internal/api_common.go +0 -123
  215. data/vendor/google.golang.org/appengine/internal/app_id.go +0 -28
  216. data/vendor/google.golang.org/appengine/internal/base/api_base.pb.go +0 -308
  217. data/vendor/google.golang.org/appengine/internal/base/api_base.proto +0 -33
  218. data/vendor/google.golang.org/appengine/internal/datastore/datastore_v3.pb.go +0 -4367
  219. data/vendor/google.golang.org/appengine/internal/datastore/datastore_v3.proto +0 -551
  220. data/vendor/google.golang.org/appengine/internal/identity.go +0 -55
  221. data/vendor/google.golang.org/appengine/internal/identity_classic.go +0 -61
  222. data/vendor/google.golang.org/appengine/internal/identity_flex.go +0 -11
  223. data/vendor/google.golang.org/appengine/internal/identity_vm.go +0 -134
  224. data/vendor/google.golang.org/appengine/internal/internal.go +0 -110
  225. data/vendor/google.golang.org/appengine/internal/log/log_service.pb.go +0 -1313
  226. data/vendor/google.golang.org/appengine/internal/log/log_service.proto +0 -150
  227. data/vendor/google.golang.org/appengine/internal/main.go +0 -16
  228. data/vendor/google.golang.org/appengine/internal/main_common.go +0 -7
  229. data/vendor/google.golang.org/appengine/internal/main_vm.go +0 -69
  230. data/vendor/google.golang.org/appengine/internal/metadata.go +0 -60
  231. data/vendor/google.golang.org/appengine/internal/net.go +0 -56
  232. data/vendor/google.golang.org/appengine/internal/regen.sh +0 -40
  233. data/vendor/google.golang.org/appengine/internal/remote_api/remote_api.pb.go +0 -361
  234. data/vendor/google.golang.org/appengine/internal/remote_api/remote_api.proto +0 -44
  235. data/vendor/google.golang.org/appengine/internal/transaction.go +0 -115
  236. data/vendor/google.golang.org/appengine/internal/urlfetch/urlfetch_service.pb.go +0 -527
  237. data/vendor/google.golang.org/appengine/internal/urlfetch/urlfetch_service.proto +0 -64
  238. data/vendor/google.golang.org/appengine/urlfetch/urlfetch.go +0 -210
  239. data/vendor/google.golang.org/protobuf/AUTHORS +0 -3
  240. data/vendor/google.golang.org/protobuf/CONTRIBUTORS +0 -3
  241. data/vendor/google.golang.org/protobuf/LICENSE +0 -27
  242. data/vendor/google.golang.org/protobuf/PATENTS +0 -22
  243. data/vendor/google.golang.org/protobuf/encoding/prototext/decode.go +0 -773
  244. data/vendor/google.golang.org/protobuf/encoding/prototext/doc.go +0 -7
  245. data/vendor/google.golang.org/protobuf/encoding/prototext/encode.go +0 -371
  246. data/vendor/google.golang.org/protobuf/encoding/protowire/wire.go +0 -538
  247. data/vendor/google.golang.org/protobuf/internal/descfmt/stringer.go +0 -318
  248. data/vendor/google.golang.org/protobuf/internal/descopts/options.go +0 -29
  249. data/vendor/google.golang.org/protobuf/internal/detrand/rand.go +0 -69
  250. data/vendor/google.golang.org/protobuf/internal/encoding/defval/default.go +0 -213
  251. data/vendor/google.golang.org/protobuf/internal/encoding/messageset/messageset.go +0 -241
  252. data/vendor/google.golang.org/protobuf/internal/encoding/tag/tag.go +0 -207
  253. data/vendor/google.golang.org/protobuf/internal/encoding/text/decode.go +0 -665
  254. data/vendor/google.golang.org/protobuf/internal/encoding/text/decode_number.go +0 -190
  255. data/vendor/google.golang.org/protobuf/internal/encoding/text/decode_string.go +0 -161
  256. data/vendor/google.golang.org/protobuf/internal/encoding/text/decode_token.go +0 -373
  257. data/vendor/google.golang.org/protobuf/internal/encoding/text/doc.go +0 -29
  258. data/vendor/google.golang.org/protobuf/internal/encoding/text/encode.go +0 -265
  259. data/vendor/google.golang.org/protobuf/internal/errors/errors.go +0 -89
  260. data/vendor/google.golang.org/protobuf/internal/errors/is_go112.go +0 -39
  261. data/vendor/google.golang.org/protobuf/internal/errors/is_go113.go +0 -12
  262. data/vendor/google.golang.org/protobuf/internal/filedesc/build.go +0 -158
  263. data/vendor/google.golang.org/protobuf/internal/filedesc/desc.go +0 -631
  264. data/vendor/google.golang.org/protobuf/internal/filedesc/desc_init.go +0 -471
  265. data/vendor/google.golang.org/protobuf/internal/filedesc/desc_lazy.go +0 -704
  266. data/vendor/google.golang.org/protobuf/internal/filedesc/desc_list.go +0 -450
  267. data/vendor/google.golang.org/protobuf/internal/filedesc/desc_list_gen.go +0 -356
  268. data/vendor/google.golang.org/protobuf/internal/filedesc/placeholder.go +0 -107
  269. data/vendor/google.golang.org/protobuf/internal/filetype/build.go +0 -297
  270. data/vendor/google.golang.org/protobuf/internal/flags/flags.go +0 -24
  271. data/vendor/google.golang.org/protobuf/internal/flags/proto_legacy_disable.go +0 -9
  272. data/vendor/google.golang.org/protobuf/internal/flags/proto_legacy_enable.go +0 -9
  273. data/vendor/google.golang.org/protobuf/internal/genid/any_gen.go +0 -34
  274. data/vendor/google.golang.org/protobuf/internal/genid/api_gen.go +0 -106
  275. data/vendor/google.golang.org/protobuf/internal/genid/descriptor_gen.go +0 -829
  276. data/vendor/google.golang.org/protobuf/internal/genid/doc.go +0 -11
  277. data/vendor/google.golang.org/protobuf/internal/genid/duration_gen.go +0 -34
  278. data/vendor/google.golang.org/protobuf/internal/genid/empty_gen.go +0 -19
  279. data/vendor/google.golang.org/protobuf/internal/genid/field_mask_gen.go +0 -31
  280. data/vendor/google.golang.org/protobuf/internal/genid/goname.go +0 -25
  281. data/vendor/google.golang.org/protobuf/internal/genid/map_entry.go +0 -16
  282. data/vendor/google.golang.org/protobuf/internal/genid/source_context_gen.go +0 -31
  283. data/vendor/google.golang.org/protobuf/internal/genid/struct_gen.go +0 -116
  284. data/vendor/google.golang.org/protobuf/internal/genid/timestamp_gen.go +0 -34
  285. data/vendor/google.golang.org/protobuf/internal/genid/type_gen.go +0 -184
  286. data/vendor/google.golang.org/protobuf/internal/genid/wrappers.go +0 -13
  287. data/vendor/google.golang.org/protobuf/internal/genid/wrappers_gen.go +0 -175
  288. data/vendor/google.golang.org/protobuf/internal/impl/api_export.go +0 -177
  289. data/vendor/google.golang.org/protobuf/internal/impl/checkinit.go +0 -141
  290. data/vendor/google.golang.org/protobuf/internal/impl/codec_extension.go +0 -223
  291. data/vendor/google.golang.org/protobuf/internal/impl/codec_field.go +0 -830
  292. data/vendor/google.golang.org/protobuf/internal/impl/codec_gen.go +0 -5637
  293. data/vendor/google.golang.org/protobuf/internal/impl/codec_map.go +0 -388
  294. data/vendor/google.golang.org/protobuf/internal/impl/codec_map_go111.go +0 -37
  295. data/vendor/google.golang.org/protobuf/internal/impl/codec_map_go112.go +0 -11
  296. data/vendor/google.golang.org/protobuf/internal/impl/codec_message.go +0 -217
  297. data/vendor/google.golang.org/protobuf/internal/impl/codec_messageset.go +0 -123
  298. data/vendor/google.golang.org/protobuf/internal/impl/codec_reflect.go +0 -209
  299. data/vendor/google.golang.org/protobuf/internal/impl/codec_tables.go +0 -557
  300. data/vendor/google.golang.org/protobuf/internal/impl/codec_unsafe.go +0 -17
  301. data/vendor/google.golang.org/protobuf/internal/impl/convert.go +0 -496
  302. data/vendor/google.golang.org/protobuf/internal/impl/convert_list.go +0 -141
  303. data/vendor/google.golang.org/protobuf/internal/impl/convert_map.go +0 -121
  304. data/vendor/google.golang.org/protobuf/internal/impl/decode.go +0 -276
  305. data/vendor/google.golang.org/protobuf/internal/impl/encode.go +0 -201
  306. data/vendor/google.golang.org/protobuf/internal/impl/enum.go +0 -21
  307. data/vendor/google.golang.org/protobuf/internal/impl/extension.go +0 -156
  308. data/vendor/google.golang.org/protobuf/internal/impl/legacy_enum.go +0 -219
  309. data/vendor/google.golang.org/protobuf/internal/impl/legacy_export.go +0 -92
  310. data/vendor/google.golang.org/protobuf/internal/impl/legacy_extension.go +0 -176
  311. data/vendor/google.golang.org/protobuf/internal/impl/legacy_file.go +0 -81
  312. data/vendor/google.golang.org/protobuf/internal/impl/legacy_message.go +0 -558
  313. data/vendor/google.golang.org/protobuf/internal/impl/merge.go +0 -176
  314. data/vendor/google.golang.org/protobuf/internal/impl/merge_gen.go +0 -209
  315. data/vendor/google.golang.org/protobuf/internal/impl/message.go +0 -276
  316. data/vendor/google.golang.org/protobuf/internal/impl/message_reflect.go +0 -465
  317. data/vendor/google.golang.org/protobuf/internal/impl/message_reflect_field.go +0 -543
  318. data/vendor/google.golang.org/protobuf/internal/impl/message_reflect_gen.go +0 -249
  319. data/vendor/google.golang.org/protobuf/internal/impl/pointer_reflect.go +0 -178
  320. data/vendor/google.golang.org/protobuf/internal/impl/pointer_unsafe.go +0 -174
  321. data/vendor/google.golang.org/protobuf/internal/impl/validate.go +0 -576
  322. data/vendor/google.golang.org/protobuf/internal/impl/weak.go +0 -74
  323. data/vendor/google.golang.org/protobuf/internal/order/order.go +0 -89
  324. data/vendor/google.golang.org/protobuf/internal/order/range.go +0 -115
  325. data/vendor/google.golang.org/protobuf/internal/pragma/pragma.go +0 -29
  326. data/vendor/google.golang.org/protobuf/internal/set/ints.go +0 -58
  327. data/vendor/google.golang.org/protobuf/internal/strs/strings.go +0 -196
  328. data/vendor/google.golang.org/protobuf/internal/strs/strings_pure.go +0 -27
  329. data/vendor/google.golang.org/protobuf/internal/strs/strings_unsafe.go +0 -94
  330. data/vendor/google.golang.org/protobuf/internal/version/version.go +0 -79
  331. data/vendor/google.golang.org/protobuf/proto/checkinit.go +0 -71
  332. data/vendor/google.golang.org/protobuf/proto/decode.go +0 -278
  333. data/vendor/google.golang.org/protobuf/proto/decode_gen.go +0 -603
  334. data/vendor/google.golang.org/protobuf/proto/doc.go +0 -94
  335. data/vendor/google.golang.org/protobuf/proto/encode.go +0 -319
  336. data/vendor/google.golang.org/protobuf/proto/encode_gen.go +0 -97
  337. data/vendor/google.golang.org/protobuf/proto/equal.go +0 -167
  338. data/vendor/google.golang.org/protobuf/proto/extension.go +0 -92
  339. data/vendor/google.golang.org/protobuf/proto/merge.go +0 -139
  340. data/vendor/google.golang.org/protobuf/proto/messageset.go +0 -93
  341. data/vendor/google.golang.org/protobuf/proto/proto.go +0 -43
  342. data/vendor/google.golang.org/protobuf/proto/proto_methods.go +0 -19
  343. data/vendor/google.golang.org/protobuf/proto/proto_reflect.go +0 -19
  344. data/vendor/google.golang.org/protobuf/proto/reset.go +0 -43
  345. data/vendor/google.golang.org/protobuf/proto/size.go +0 -97
  346. data/vendor/google.golang.org/protobuf/proto/size_gen.go +0 -55
  347. data/vendor/google.golang.org/protobuf/proto/wrappers.go +0 -29
  348. data/vendor/google.golang.org/protobuf/reflect/protodesc/desc.go +0 -276
  349. data/vendor/google.golang.org/protobuf/reflect/protodesc/desc_init.go +0 -248
  350. data/vendor/google.golang.org/protobuf/reflect/protodesc/desc_resolve.go +0 -286
  351. data/vendor/google.golang.org/protobuf/reflect/protodesc/desc_validate.go +0 -374
  352. data/vendor/google.golang.org/protobuf/reflect/protodesc/proto.go +0 -252
  353. data/vendor/google.golang.org/protobuf/reflect/protoreflect/methods.go +0 -77
  354. data/vendor/google.golang.org/protobuf/reflect/protoreflect/proto.go +0 -504
  355. data/vendor/google.golang.org/protobuf/reflect/protoreflect/source.go +0 -128
  356. data/vendor/google.golang.org/protobuf/reflect/protoreflect/source_gen.go +0 -461
  357. data/vendor/google.golang.org/protobuf/reflect/protoreflect/type.go +0 -665
  358. data/vendor/google.golang.org/protobuf/reflect/protoreflect/value.go +0 -285
  359. data/vendor/google.golang.org/protobuf/reflect/protoreflect/value_pure.go +0 -59
  360. data/vendor/google.golang.org/protobuf/reflect/protoreflect/value_union.go +0 -411
  361. data/vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe.go +0 -98
  362. data/vendor/google.golang.org/protobuf/reflect/protoregistry/registry.go +0 -869
  363. data/vendor/google.golang.org/protobuf/runtime/protoiface/legacy.go +0 -15
  364. data/vendor/google.golang.org/protobuf/runtime/protoiface/methods.go +0 -167
  365. data/vendor/google.golang.org/protobuf/runtime/protoimpl/impl.go +0 -44
  366. data/vendor/google.golang.org/protobuf/runtime/protoimpl/version.go +0 -56
  367. data/vendor/google.golang.org/protobuf/types/descriptorpb/descriptor.pb.go +0 -4039
  368. data/vendor/modules.txt +0 -79
@@ -1,543 +0,0 @@
1
- // Copyright 2018 The Go Authors. All rights reserved.
2
- // Use of this source code is governed by a BSD-style
3
- // license that can be found in the LICENSE file.
4
-
5
- package impl
6
-
7
- import (
8
- "fmt"
9
- "math"
10
- "reflect"
11
- "sync"
12
-
13
- "google.golang.org/protobuf/internal/flags"
14
- pref "google.golang.org/protobuf/reflect/protoreflect"
15
- preg "google.golang.org/protobuf/reflect/protoregistry"
16
- )
17
-
18
- type fieldInfo struct {
19
- fieldDesc pref.FieldDescriptor
20
-
21
- // These fields are used for protobuf reflection support.
22
- has func(pointer) bool
23
- clear func(pointer)
24
- get func(pointer) pref.Value
25
- set func(pointer, pref.Value)
26
- mutable func(pointer) pref.Value
27
- newMessage func() pref.Message
28
- newField func() pref.Value
29
- }
30
-
31
- func fieldInfoForMissing(fd pref.FieldDescriptor) fieldInfo {
32
- // This never occurs for generated message types.
33
- // It implies that a hand-crafted type has missing Go fields
34
- // for specific protobuf message fields.
35
- return fieldInfo{
36
- fieldDesc: fd,
37
- has: func(p pointer) bool {
38
- return false
39
- },
40
- clear: func(p pointer) {
41
- panic("missing Go struct field for " + string(fd.FullName()))
42
- },
43
- get: func(p pointer) pref.Value {
44
- return fd.Default()
45
- },
46
- set: func(p pointer, v pref.Value) {
47
- panic("missing Go struct field for " + string(fd.FullName()))
48
- },
49
- mutable: func(p pointer) pref.Value {
50
- panic("missing Go struct field for " + string(fd.FullName()))
51
- },
52
- newMessage: func() pref.Message {
53
- panic("missing Go struct field for " + string(fd.FullName()))
54
- },
55
- newField: func() pref.Value {
56
- if v := fd.Default(); v.IsValid() {
57
- return v
58
- }
59
- panic("missing Go struct field for " + string(fd.FullName()))
60
- },
61
- }
62
- }
63
-
64
- func fieldInfoForOneof(fd pref.FieldDescriptor, fs reflect.StructField, x exporter, ot reflect.Type) fieldInfo {
65
- ft := fs.Type
66
- if ft.Kind() != reflect.Interface {
67
- panic(fmt.Sprintf("field %v has invalid type: got %v, want interface kind", fd.FullName(), ft))
68
- }
69
- if ot.Kind() != reflect.Struct {
70
- panic(fmt.Sprintf("field %v has invalid type: got %v, want struct kind", fd.FullName(), ot))
71
- }
72
- if !reflect.PtrTo(ot).Implements(ft) {
73
- panic(fmt.Sprintf("field %v has invalid type: %v does not implement %v", fd.FullName(), ot, ft))
74
- }
75
- conv := NewConverter(ot.Field(0).Type, fd)
76
- isMessage := fd.Message() != nil
77
-
78
- // TODO: Implement unsafe fast path?
79
- fieldOffset := offsetOf(fs, x)
80
- return fieldInfo{
81
- // NOTE: The logic below intentionally assumes that oneof fields are
82
- // well-formatted. That is, the oneof interface never contains a
83
- // typed nil pointer to one of the wrapper structs.
84
-
85
- fieldDesc: fd,
86
- has: func(p pointer) bool {
87
- if p.IsNil() {
88
- return false
89
- }
90
- rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
91
- if rv.IsNil() || rv.Elem().Type().Elem() != ot || rv.Elem().IsNil() {
92
- return false
93
- }
94
- return true
95
- },
96
- clear: func(p pointer) {
97
- rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
98
- if rv.IsNil() || rv.Elem().Type().Elem() != ot {
99
- // NOTE: We intentionally don't check for rv.Elem().IsNil()
100
- // so that (*OneofWrapperType)(nil) gets cleared to nil.
101
- return
102
- }
103
- rv.Set(reflect.Zero(rv.Type()))
104
- },
105
- get: func(p pointer) pref.Value {
106
- if p.IsNil() {
107
- return conv.Zero()
108
- }
109
- rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
110
- if rv.IsNil() || rv.Elem().Type().Elem() != ot || rv.Elem().IsNil() {
111
- return conv.Zero()
112
- }
113
- rv = rv.Elem().Elem().Field(0)
114
- return conv.PBValueOf(rv)
115
- },
116
- set: func(p pointer, v pref.Value) {
117
- rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
118
- if rv.IsNil() || rv.Elem().Type().Elem() != ot || rv.Elem().IsNil() {
119
- rv.Set(reflect.New(ot))
120
- }
121
- rv = rv.Elem().Elem().Field(0)
122
- rv.Set(conv.GoValueOf(v))
123
- },
124
- mutable: func(p pointer) pref.Value {
125
- if !isMessage {
126
- panic(fmt.Sprintf("field %v with invalid Mutable call on field with non-composite type", fd.FullName()))
127
- }
128
- rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
129
- if rv.IsNil() || rv.Elem().Type().Elem() != ot || rv.Elem().IsNil() {
130
- rv.Set(reflect.New(ot))
131
- }
132
- rv = rv.Elem().Elem().Field(0)
133
- if rv.Kind() == reflect.Ptr && rv.IsNil() {
134
- rv.Set(conv.GoValueOf(pref.ValueOfMessage(conv.New().Message())))
135
- }
136
- return conv.PBValueOf(rv)
137
- },
138
- newMessage: func() pref.Message {
139
- return conv.New().Message()
140
- },
141
- newField: func() pref.Value {
142
- return conv.New()
143
- },
144
- }
145
- }
146
-
147
- func fieldInfoForMap(fd pref.FieldDescriptor, fs reflect.StructField, x exporter) fieldInfo {
148
- ft := fs.Type
149
- if ft.Kind() != reflect.Map {
150
- panic(fmt.Sprintf("field %v has invalid type: got %v, want map kind", fd.FullName(), ft))
151
- }
152
- conv := NewConverter(ft, fd)
153
-
154
- // TODO: Implement unsafe fast path?
155
- fieldOffset := offsetOf(fs, x)
156
- return fieldInfo{
157
- fieldDesc: fd,
158
- has: func(p pointer) bool {
159
- if p.IsNil() {
160
- return false
161
- }
162
- rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
163
- return rv.Len() > 0
164
- },
165
- clear: func(p pointer) {
166
- rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
167
- rv.Set(reflect.Zero(rv.Type()))
168
- },
169
- get: func(p pointer) pref.Value {
170
- if p.IsNil() {
171
- return conv.Zero()
172
- }
173
- rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
174
- if rv.Len() == 0 {
175
- return conv.Zero()
176
- }
177
- return conv.PBValueOf(rv)
178
- },
179
- set: func(p pointer, v pref.Value) {
180
- rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
181
- pv := conv.GoValueOf(v)
182
- if pv.IsNil() {
183
- panic(fmt.Sprintf("map field %v cannot be set with read-only value", fd.FullName()))
184
- }
185
- rv.Set(pv)
186
- },
187
- mutable: func(p pointer) pref.Value {
188
- v := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
189
- if v.IsNil() {
190
- v.Set(reflect.MakeMap(fs.Type))
191
- }
192
- return conv.PBValueOf(v)
193
- },
194
- newField: func() pref.Value {
195
- return conv.New()
196
- },
197
- }
198
- }
199
-
200
- func fieldInfoForList(fd pref.FieldDescriptor, fs reflect.StructField, x exporter) fieldInfo {
201
- ft := fs.Type
202
- if ft.Kind() != reflect.Slice {
203
- panic(fmt.Sprintf("field %v has invalid type: got %v, want slice kind", fd.FullName(), ft))
204
- }
205
- conv := NewConverter(reflect.PtrTo(ft), fd)
206
-
207
- // TODO: Implement unsafe fast path?
208
- fieldOffset := offsetOf(fs, x)
209
- return fieldInfo{
210
- fieldDesc: fd,
211
- has: func(p pointer) bool {
212
- if p.IsNil() {
213
- return false
214
- }
215
- rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
216
- return rv.Len() > 0
217
- },
218
- clear: func(p pointer) {
219
- rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
220
- rv.Set(reflect.Zero(rv.Type()))
221
- },
222
- get: func(p pointer) pref.Value {
223
- if p.IsNil() {
224
- return conv.Zero()
225
- }
226
- rv := p.Apply(fieldOffset).AsValueOf(fs.Type)
227
- if rv.Elem().Len() == 0 {
228
- return conv.Zero()
229
- }
230
- return conv.PBValueOf(rv)
231
- },
232
- set: func(p pointer, v pref.Value) {
233
- rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
234
- pv := conv.GoValueOf(v)
235
- if pv.IsNil() {
236
- panic(fmt.Sprintf("list field %v cannot be set with read-only value", fd.FullName()))
237
- }
238
- rv.Set(pv.Elem())
239
- },
240
- mutable: func(p pointer) pref.Value {
241
- v := p.Apply(fieldOffset).AsValueOf(fs.Type)
242
- return conv.PBValueOf(v)
243
- },
244
- newField: func() pref.Value {
245
- return conv.New()
246
- },
247
- }
248
- }
249
-
250
- var (
251
- nilBytes = reflect.ValueOf([]byte(nil))
252
- emptyBytes = reflect.ValueOf([]byte{})
253
- )
254
-
255
- func fieldInfoForScalar(fd pref.FieldDescriptor, fs reflect.StructField, x exporter) fieldInfo {
256
- ft := fs.Type
257
- nullable := fd.HasPresence()
258
- isBytes := ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8
259
- if nullable {
260
- if ft.Kind() != reflect.Ptr && ft.Kind() != reflect.Slice {
261
- // This never occurs for generated message types.
262
- // Despite the protobuf type system specifying presence,
263
- // the Go field type cannot represent it.
264
- nullable = false
265
- }
266
- if ft.Kind() == reflect.Ptr {
267
- ft = ft.Elem()
268
- }
269
- }
270
- conv := NewConverter(ft, fd)
271
-
272
- // TODO: Implement unsafe fast path?
273
- fieldOffset := offsetOf(fs, x)
274
- return fieldInfo{
275
- fieldDesc: fd,
276
- has: func(p pointer) bool {
277
- if p.IsNil() {
278
- return false
279
- }
280
- rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
281
- if nullable {
282
- return !rv.IsNil()
283
- }
284
- switch rv.Kind() {
285
- case reflect.Bool:
286
- return rv.Bool()
287
- case reflect.Int32, reflect.Int64:
288
- return rv.Int() != 0
289
- case reflect.Uint32, reflect.Uint64:
290
- return rv.Uint() != 0
291
- case reflect.Float32, reflect.Float64:
292
- return rv.Float() != 0 || math.Signbit(rv.Float())
293
- case reflect.String, reflect.Slice:
294
- return rv.Len() > 0
295
- default:
296
- panic(fmt.Sprintf("field %v has invalid type: %v", fd.FullName(), rv.Type())) // should never happen
297
- }
298
- },
299
- clear: func(p pointer) {
300
- rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
301
- rv.Set(reflect.Zero(rv.Type()))
302
- },
303
- get: func(p pointer) pref.Value {
304
- if p.IsNil() {
305
- return conv.Zero()
306
- }
307
- rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
308
- if nullable {
309
- if rv.IsNil() {
310
- return conv.Zero()
311
- }
312
- if rv.Kind() == reflect.Ptr {
313
- rv = rv.Elem()
314
- }
315
- }
316
- return conv.PBValueOf(rv)
317
- },
318
- set: func(p pointer, v pref.Value) {
319
- rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
320
- if nullable && rv.Kind() == reflect.Ptr {
321
- if rv.IsNil() {
322
- rv.Set(reflect.New(ft))
323
- }
324
- rv = rv.Elem()
325
- }
326
- rv.Set(conv.GoValueOf(v))
327
- if isBytes && rv.Len() == 0 {
328
- if nullable {
329
- rv.Set(emptyBytes) // preserve presence
330
- } else {
331
- rv.Set(nilBytes) // do not preserve presence
332
- }
333
- }
334
- },
335
- newField: func() pref.Value {
336
- return conv.New()
337
- },
338
- }
339
- }
340
-
341
- func fieldInfoForWeakMessage(fd pref.FieldDescriptor, weakOffset offset) fieldInfo {
342
- if !flags.ProtoLegacy {
343
- panic("no support for proto1 weak fields")
344
- }
345
-
346
- var once sync.Once
347
- var messageType pref.MessageType
348
- lazyInit := func() {
349
- once.Do(func() {
350
- messageName := fd.Message().FullName()
351
- messageType, _ = preg.GlobalTypes.FindMessageByName(messageName)
352
- if messageType == nil {
353
- panic(fmt.Sprintf("weak message %v for field %v is not linked in", messageName, fd.FullName()))
354
- }
355
- })
356
- }
357
-
358
- num := fd.Number()
359
- return fieldInfo{
360
- fieldDesc: fd,
361
- has: func(p pointer) bool {
362
- if p.IsNil() {
363
- return false
364
- }
365
- _, ok := p.Apply(weakOffset).WeakFields().get(num)
366
- return ok
367
- },
368
- clear: func(p pointer) {
369
- p.Apply(weakOffset).WeakFields().clear(num)
370
- },
371
- get: func(p pointer) pref.Value {
372
- lazyInit()
373
- if p.IsNil() {
374
- return pref.ValueOfMessage(messageType.Zero())
375
- }
376
- m, ok := p.Apply(weakOffset).WeakFields().get(num)
377
- if !ok {
378
- return pref.ValueOfMessage(messageType.Zero())
379
- }
380
- return pref.ValueOfMessage(m.ProtoReflect())
381
- },
382
- set: func(p pointer, v pref.Value) {
383
- lazyInit()
384
- m := v.Message()
385
- if m.Descriptor() != messageType.Descriptor() {
386
- if got, want := m.Descriptor().FullName(), messageType.Descriptor().FullName(); got != want {
387
- panic(fmt.Sprintf("field %v has mismatching message descriptor: got %v, want %v", fd.FullName(), got, want))
388
- }
389
- panic(fmt.Sprintf("field %v has mismatching message descriptor: %v", fd.FullName(), m.Descriptor().FullName()))
390
- }
391
- p.Apply(weakOffset).WeakFields().set(num, m.Interface())
392
- },
393
- mutable: func(p pointer) pref.Value {
394
- lazyInit()
395
- fs := p.Apply(weakOffset).WeakFields()
396
- m, ok := fs.get(num)
397
- if !ok {
398
- m = messageType.New().Interface()
399
- fs.set(num, m)
400
- }
401
- return pref.ValueOfMessage(m.ProtoReflect())
402
- },
403
- newMessage: func() pref.Message {
404
- lazyInit()
405
- return messageType.New()
406
- },
407
- newField: func() pref.Value {
408
- lazyInit()
409
- return pref.ValueOfMessage(messageType.New())
410
- },
411
- }
412
- }
413
-
414
- func fieldInfoForMessage(fd pref.FieldDescriptor, fs reflect.StructField, x exporter) fieldInfo {
415
- ft := fs.Type
416
- conv := NewConverter(ft, fd)
417
-
418
- // TODO: Implement unsafe fast path?
419
- fieldOffset := offsetOf(fs, x)
420
- return fieldInfo{
421
- fieldDesc: fd,
422
- has: func(p pointer) bool {
423
- if p.IsNil() {
424
- return false
425
- }
426
- rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
427
- if fs.Type.Kind() != reflect.Ptr {
428
- return !isZero(rv)
429
- }
430
- return !rv.IsNil()
431
- },
432
- clear: func(p pointer) {
433
- rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
434
- rv.Set(reflect.Zero(rv.Type()))
435
- },
436
- get: func(p pointer) pref.Value {
437
- if p.IsNil() {
438
- return conv.Zero()
439
- }
440
- rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
441
- return conv.PBValueOf(rv)
442
- },
443
- set: func(p pointer, v pref.Value) {
444
- rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
445
- rv.Set(conv.GoValueOf(v))
446
- if fs.Type.Kind() == reflect.Ptr && rv.IsNil() {
447
- panic(fmt.Sprintf("field %v has invalid nil pointer", fd.FullName()))
448
- }
449
- },
450
- mutable: func(p pointer) pref.Value {
451
- rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
452
- if fs.Type.Kind() == reflect.Ptr && rv.IsNil() {
453
- rv.Set(conv.GoValueOf(conv.New()))
454
- }
455
- return conv.PBValueOf(rv)
456
- },
457
- newMessage: func() pref.Message {
458
- return conv.New().Message()
459
- },
460
- newField: func() pref.Value {
461
- return conv.New()
462
- },
463
- }
464
- }
465
-
466
- type oneofInfo struct {
467
- oneofDesc pref.OneofDescriptor
468
- which func(pointer) pref.FieldNumber
469
- }
470
-
471
- func makeOneofInfo(od pref.OneofDescriptor, si structInfo, x exporter) *oneofInfo {
472
- oi := &oneofInfo{oneofDesc: od}
473
- if od.IsSynthetic() {
474
- fs := si.fieldsByNumber[od.Fields().Get(0).Number()]
475
- fieldOffset := offsetOf(fs, x)
476
- oi.which = func(p pointer) pref.FieldNumber {
477
- if p.IsNil() {
478
- return 0
479
- }
480
- rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
481
- if rv.IsNil() { // valid on either *T or []byte
482
- return 0
483
- }
484
- return od.Fields().Get(0).Number()
485
- }
486
- } else {
487
- fs := si.oneofsByName[od.Name()]
488
- fieldOffset := offsetOf(fs, x)
489
- oi.which = func(p pointer) pref.FieldNumber {
490
- if p.IsNil() {
491
- return 0
492
- }
493
- rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
494
- if rv.IsNil() {
495
- return 0
496
- }
497
- rv = rv.Elem()
498
- if rv.IsNil() {
499
- return 0
500
- }
501
- return si.oneofWrappersByType[rv.Type().Elem()]
502
- }
503
- }
504
- return oi
505
- }
506
-
507
- // isZero is identical to reflect.Value.IsZero.
508
- // TODO: Remove this when Go1.13 is the minimally supported Go version.
509
- func isZero(v reflect.Value) bool {
510
- switch v.Kind() {
511
- case reflect.Bool:
512
- return !v.Bool()
513
- case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
514
- return v.Int() == 0
515
- case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:
516
- return v.Uint() == 0
517
- case reflect.Float32, reflect.Float64:
518
- return math.Float64bits(v.Float()) == 0
519
- case reflect.Complex64, reflect.Complex128:
520
- c := v.Complex()
521
- return math.Float64bits(real(c)) == 0 && math.Float64bits(imag(c)) == 0
522
- case reflect.Array:
523
- for i := 0; i < v.Len(); i++ {
524
- if !isZero(v.Index(i)) {
525
- return false
526
- }
527
- }
528
- return true
529
- case reflect.Chan, reflect.Func, reflect.Interface, reflect.Map, reflect.Ptr, reflect.Slice, reflect.UnsafePointer:
530
- return v.IsNil()
531
- case reflect.String:
532
- return v.Len() == 0
533
- case reflect.Struct:
534
- for i := 0; i < v.NumField(); i++ {
535
- if !isZero(v.Field(i)) {
536
- return false
537
- }
538
- }
539
- return true
540
- default:
541
- panic(&reflect.ValueError{"reflect.Value.IsZero", v.Kind()})
542
- }
543
- }