google-protobuf 3.3.0 → 3.4.0.1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of google-protobuf might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/ext/google/protobuf_c/encode_decode.c +30 -29
- data/ext/google/protobuf_c/upb.c +453 -492
- data/ext/google/protobuf_c/upb.h +33 -14
- data/lib/google/protobuf/well_known_types.rb +1 -1
- data/tests/basic.rb +121 -4
- metadata +3 -3
data/ext/google/protobuf_c/upb.h
CHANGED
@@ -2966,6 +2966,17 @@ class upb::FileDef {
|
|
2966
2966
|
const char* package() const;
|
2967
2967
|
bool set_package(const char* package, Status* s);
|
2968
2968
|
|
2969
|
+
/* Sets the php class prefix which is prepended to all php generated classes
|
2970
|
+
* from this .proto. Default is empty. */
|
2971
|
+
const char* phpprefix() const;
|
2972
|
+
bool set_phpprefix(const char* phpprefix, Status* s);
|
2973
|
+
|
2974
|
+
/* Use this option to change the namespace of php generated classes. Default
|
2975
|
+
* is empty. When this option is empty, the package name will be used for
|
2976
|
+
* determining the namespace. */
|
2977
|
+
const char* phpnamespace() const;
|
2978
|
+
bool set_phpnamespace(const char* phpnamespace, Status* s);
|
2979
|
+
|
2969
2980
|
/* Syntax for the file. Defaults to proto2. */
|
2970
2981
|
upb_syntax_t syntax() const;
|
2971
2982
|
void set_syntax(upb_syntax_t syntax);
|
@@ -3019,6 +3030,8 @@ UPB_REFCOUNTED_CMETHODS(upb_filedef, upb_filedef_upcast)
|
|
3019
3030
|
|
3020
3031
|
const char *upb_filedef_name(const upb_filedef *f);
|
3021
3032
|
const char *upb_filedef_package(const upb_filedef *f);
|
3033
|
+
const char *upb_filedef_phpprefix(const upb_filedef *f);
|
3034
|
+
const char *upb_filedef_phpnamespace(const upb_filedef *f);
|
3022
3035
|
upb_syntax_t upb_filedef_syntax(const upb_filedef *f);
|
3023
3036
|
size_t upb_filedef_defcount(const upb_filedef *f);
|
3024
3037
|
size_t upb_filedef_depcount(const upb_filedef *f);
|
@@ -3028,6 +3041,10 @@ const upb_filedef *upb_filedef_dep(const upb_filedef *f, size_t i);
|
|
3028
3041
|
bool upb_filedef_freeze(upb_filedef *f, upb_status *s);
|
3029
3042
|
bool upb_filedef_setname(upb_filedef *f, const char *name, upb_status *s);
|
3030
3043
|
bool upb_filedef_setpackage(upb_filedef *f, const char *package, upb_status *s);
|
3044
|
+
bool upb_filedef_setphpprefix(upb_filedef *f, const char *phpprefix,
|
3045
|
+
upb_status *s);
|
3046
|
+
bool upb_filedef_setphpnamespace(upb_filedef *f, const char *phpnamespace,
|
3047
|
+
upb_status *s);
|
3031
3048
|
bool upb_filedef_setsyntax(upb_filedef *f, upb_syntax_t syntax, upb_status *s);
|
3032
3049
|
|
3033
3050
|
bool upb_filedef_adddef(upb_filedef *f, upb_def *def, const void *ref_donor,
|
@@ -3786,6 +3803,18 @@ inline const char* FileDef::package() const {
|
|
3786
3803
|
inline bool FileDef::set_package(const char* package, Status* s) {
|
3787
3804
|
return upb_filedef_setpackage(this, package, s);
|
3788
3805
|
}
|
3806
|
+
inline const char* FileDef::phpprefix() const {
|
3807
|
+
return upb_filedef_phpprefix(this);
|
3808
|
+
}
|
3809
|
+
inline bool FileDef::set_phpprefix(const char* phpprefix, Status* s) {
|
3810
|
+
return upb_filedef_setphpprefix(this, phpprefix, s);
|
3811
|
+
}
|
3812
|
+
inline const char* FileDef::phpnamespace() const {
|
3813
|
+
return upb_filedef_phpnamespace(this);
|
3814
|
+
}
|
3815
|
+
inline bool FileDef::set_phpnamespace(const char* phpnamespace, Status* s) {
|
3816
|
+
return upb_filedef_setphpnamespace(this, phpnamespace, s);
|
3817
|
+
}
|
3789
3818
|
inline int FileDef::def_count() const {
|
3790
3819
|
return upb_filedef_defcount(this);
|
3791
3820
|
}
|
@@ -4000,6 +4029,8 @@ struct upb_filedef {
|
|
4000
4029
|
|
4001
4030
|
const char *name;
|
4002
4031
|
const char *package;
|
4032
|
+
const char *phpprefix;
|
4033
|
+
const char *phpnamespace;
|
4003
4034
|
upb_syntax_t syntax;
|
4004
4035
|
|
4005
4036
|
upb_inttable defs;
|
@@ -7206,6 +7237,8 @@ UPB_INLINE const upb_fielddef *upbdefs_google_protobuf_FileOptions_f_java_string
|
|
7206
7237
|
UPB_INLINE const upb_fielddef *upbdefs_google_protobuf_FileOptions_f_javanano_use_deprecated_package(const upb_msgdef *m) { UPB_ASSERT(upbdefs_google_protobuf_FileOptions_is(m)); return upb_msgdef_itof(m, 38); }
|
7207
7238
|
UPB_INLINE const upb_fielddef *upbdefs_google_protobuf_FileOptions_f_objc_class_prefix(const upb_msgdef *m) { UPB_ASSERT(upbdefs_google_protobuf_FileOptions_is(m)); return upb_msgdef_itof(m, 36); }
|
7208
7239
|
UPB_INLINE const upb_fielddef *upbdefs_google_protobuf_FileOptions_f_optimize_for(const upb_msgdef *m) { UPB_ASSERT(upbdefs_google_protobuf_FileOptions_is(m)); return upb_msgdef_itof(m, 9); }
|
7240
|
+
UPB_INLINE const upb_fielddef *upbdefs_google_protobuf_FileOptions_f_php_class_prefix(const upb_msgdef *m) { UPB_ASSERT(upbdefs_google_protobuf_FileOptions_is(m)); return upb_msgdef_itof(m, 40); }
|
7241
|
+
UPB_INLINE const upb_fielddef *upbdefs_google_protobuf_FileOptions_f_php_namespace(const upb_msgdef *m) { UPB_ASSERT(upbdefs_google_protobuf_FileOptions_is(m)); return upb_msgdef_itof(m, 41); }
|
7209
7242
|
UPB_INLINE const upb_fielddef *upbdefs_google_protobuf_FileOptions_f_py_generic_services(const upb_msgdef *m) { UPB_ASSERT(upbdefs_google_protobuf_FileOptions_is(m)); return upb_msgdef_itof(m, 18); }
|
7210
7243
|
UPB_INLINE const upb_fielddef *upbdefs_google_protobuf_FileOptions_f_uninterpreted_option(const upb_msgdef *m) { UPB_ASSERT(upbdefs_google_protobuf_FileOptions_is(m)); return upb_msgdef_itof(m, 999); }
|
7211
7244
|
UPB_INLINE const upb_fielddef *upbdefs_google_protobuf_MessageOptions_f_deprecated(const upb_msgdef *m) { UPB_ASSERT(upbdefs_google_protobuf_MessageOptions_is(m)); return upb_msgdef_itof(m, 3); }
|
@@ -8304,16 +8337,8 @@ UPB_INLINE upb_decoderet upb_decoderet_make(const char *p, uint64_t val) {
|
|
8304
8337
|
return ret;
|
8305
8338
|
}
|
8306
8339
|
|
8307
|
-
/* Four functions for decoding a varint of at most eight bytes. They are all
|
8308
|
-
* functionally identical, but are implemented in different ways and likely have
|
8309
|
-
* different performance profiles. We keep them around for performance testing.
|
8310
|
-
*
|
8311
|
-
* Note that these functions may not read byte-by-byte, so they must not be used
|
8312
|
-
* unless there are at least eight bytes left in the buffer! */
|
8313
8340
|
upb_decoderet upb_vdecode_max8_branch32(upb_decoderet r);
|
8314
8341
|
upb_decoderet upb_vdecode_max8_branch64(upb_decoderet r);
|
8315
|
-
upb_decoderet upb_vdecode_max8_wright(upb_decoderet r);
|
8316
|
-
upb_decoderet upb_vdecode_max8_massimino(upb_decoderet r);
|
8317
8342
|
|
8318
8343
|
/* Template for a function that checks the first two bytes with branching
|
8319
8344
|
* and dispatches 2-10 bytes with a separate function. Note that this may read
|
@@ -8338,8 +8363,6 @@ UPB_INLINE upb_decoderet upb_vdecode_check2_ ## name(const char *_p) { \
|
|
8338
8363
|
|
8339
8364
|
UPB_VARINT_DECODER_CHECK2(branch32, upb_vdecode_max8_branch32)
|
8340
8365
|
UPB_VARINT_DECODER_CHECK2(branch64, upb_vdecode_max8_branch64)
|
8341
|
-
UPB_VARINT_DECODER_CHECK2(wright, upb_vdecode_max8_wright)
|
8342
|
-
UPB_VARINT_DECODER_CHECK2(massimino, upb_vdecode_max8_massimino)
|
8343
8366
|
#undef UPB_VARINT_DECODER_CHECK2
|
8344
8367
|
|
8345
8368
|
/* Our canonical functions for decoding varints, based on the currently
|
@@ -8351,10 +8374,6 @@ UPB_INLINE upb_decoderet upb_vdecode_fast(const char *p) {
|
|
8351
8374
|
return upb_vdecode_check2_branch32(p);
|
8352
8375
|
}
|
8353
8376
|
|
8354
|
-
UPB_INLINE upb_decoderet upb_vdecode_max8_fast(upb_decoderet r) {
|
8355
|
-
return upb_vdecode_max8_massimino(r);
|
8356
|
-
}
|
8357
|
-
|
8358
8377
|
|
8359
8378
|
/* Encoding *******************************************************************/
|
8360
8379
|
|
data/tests/basic.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
#!/usr/bin/ruby
|
2
2
|
|
3
3
|
require 'google/protobuf'
|
4
|
+
require 'json'
|
4
5
|
require 'test/unit'
|
5
6
|
|
6
7
|
# ------------- generated code --------------
|
@@ -1173,6 +1174,8 @@ module BasicTest
|
|
1173
1174
|
|
1174
1175
|
json_text = TestMessage.encode_json(m)
|
1175
1176
|
m2 = TestMessage.decode_json(json_text)
|
1177
|
+
puts m.inspect
|
1178
|
+
puts m2.inspect
|
1176
1179
|
assert m == m2
|
1177
1180
|
|
1178
1181
|
# Crash case from GitHub issue 283.
|
@@ -1184,21 +1187,135 @@ module BasicTest
|
|
1184
1187
|
Foo.encode_json(Foo.new(bar: bar, baz: [baz1, baz2]))
|
1185
1188
|
end
|
1186
1189
|
|
1190
|
+
def test_json_emit_defaults
|
1191
|
+
# TODO: Fix JSON in JRuby version.
|
1192
|
+
return if RUBY_PLATFORM == "java"
|
1193
|
+
m = TestMessage.new
|
1194
|
+
|
1195
|
+
expected = {
|
1196
|
+
optionalInt32: 0,
|
1197
|
+
optionalInt64: 0,
|
1198
|
+
optionalUint32: 0,
|
1199
|
+
optionalUint64: 0,
|
1200
|
+
optionalBool: false,
|
1201
|
+
optionalFloat: 0,
|
1202
|
+
optionalDouble: 0,
|
1203
|
+
optionalString: "",
|
1204
|
+
optionalBytes: "",
|
1205
|
+
optionalEnum: "Default",
|
1206
|
+
repeatedInt32: [],
|
1207
|
+
repeatedInt64: [],
|
1208
|
+
repeatedUint32: [],
|
1209
|
+
repeatedUint64: [],
|
1210
|
+
repeatedBool: [],
|
1211
|
+
repeatedFloat: [],
|
1212
|
+
repeatedDouble: [],
|
1213
|
+
repeatedString: [],
|
1214
|
+
repeatedBytes: [],
|
1215
|
+
repeatedMsg: [],
|
1216
|
+
repeatedEnum: []
|
1217
|
+
}
|
1218
|
+
|
1219
|
+
actual = TestMessage.encode_json(m, :emit_defaults => true)
|
1220
|
+
|
1221
|
+
assert JSON.parse(actual, :symbolize_names => true) == expected
|
1222
|
+
end
|
1223
|
+
|
1224
|
+
def test_json_emit_defaults_submsg
|
1225
|
+
# TODO: Fix JSON in JRuby version.
|
1226
|
+
return if RUBY_PLATFORM == "java"
|
1227
|
+
m = TestMessage.new(optional_msg: TestMessage2.new)
|
1228
|
+
|
1229
|
+
expected = {
|
1230
|
+
optionalInt32: 0,
|
1231
|
+
optionalInt64: 0,
|
1232
|
+
optionalUint32: 0,
|
1233
|
+
optionalUint64: 0,
|
1234
|
+
optionalBool: false,
|
1235
|
+
optionalFloat: 0,
|
1236
|
+
optionalDouble: 0,
|
1237
|
+
optionalString: "",
|
1238
|
+
optionalBytes: "",
|
1239
|
+
optionalMsg: {foo: 0},
|
1240
|
+
optionalEnum: "Default",
|
1241
|
+
repeatedInt32: [],
|
1242
|
+
repeatedInt64: [],
|
1243
|
+
repeatedUint32: [],
|
1244
|
+
repeatedUint64: [],
|
1245
|
+
repeatedBool: [],
|
1246
|
+
repeatedFloat: [],
|
1247
|
+
repeatedDouble: [],
|
1248
|
+
repeatedString: [],
|
1249
|
+
repeatedBytes: [],
|
1250
|
+
repeatedMsg: [],
|
1251
|
+
repeatedEnum: []
|
1252
|
+
}
|
1253
|
+
|
1254
|
+
actual = TestMessage.encode_json(m, :emit_defaults => true)
|
1255
|
+
|
1256
|
+
assert JSON.parse(actual, :symbolize_names => true) == expected
|
1257
|
+
end
|
1258
|
+
|
1259
|
+
def test_json_emit_defaults_repeated_submsg
|
1260
|
+
# TODO: Fix JSON in JRuby version.
|
1261
|
+
return if RUBY_PLATFORM == "java"
|
1262
|
+
m = TestMessage.new(repeated_msg: [TestMessage2.new])
|
1263
|
+
|
1264
|
+
expected = {
|
1265
|
+
optionalInt32: 0,
|
1266
|
+
optionalInt64: 0,
|
1267
|
+
optionalUint32: 0,
|
1268
|
+
optionalUint64: 0,
|
1269
|
+
optionalBool: false,
|
1270
|
+
optionalFloat: 0,
|
1271
|
+
optionalDouble: 0,
|
1272
|
+
optionalString: "",
|
1273
|
+
optionalBytes: "",
|
1274
|
+
optionalEnum: "Default",
|
1275
|
+
repeatedInt32: [],
|
1276
|
+
repeatedInt64: [],
|
1277
|
+
repeatedUint32: [],
|
1278
|
+
repeatedUint64: [],
|
1279
|
+
repeatedBool: [],
|
1280
|
+
repeatedFloat: [],
|
1281
|
+
repeatedDouble: [],
|
1282
|
+
repeatedString: [],
|
1283
|
+
repeatedBytes: [],
|
1284
|
+
repeatedMsg: [{foo: 0}],
|
1285
|
+
repeatedEnum: []
|
1286
|
+
}
|
1287
|
+
|
1288
|
+
actual = TestMessage.encode_json(m, :emit_defaults => true)
|
1289
|
+
|
1290
|
+
assert JSON.parse(actual, :symbolize_names => true) == expected
|
1291
|
+
end
|
1292
|
+
|
1187
1293
|
def test_json_maps
|
1188
1294
|
# TODO: Fix JSON in JRuby version.
|
1189
1295
|
return if RUBY_PLATFORM == "java"
|
1190
1296
|
m = MapMessage.new(:map_string_int32 => {"a" => 1})
|
1191
|
-
expected =
|
1192
|
-
expected_preserve =
|
1193
|
-
assert MapMessage.encode_json(m) == expected
|
1297
|
+
expected = {mapStringInt32: {a: 1}, mapStringMsg: {}}
|
1298
|
+
expected_preserve = {map_string_int32: {a: 1}, map_string_msg: {}}
|
1299
|
+
assert JSON.parse(MapMessage.encode_json(m), :symbolize_names => true) == expected
|
1194
1300
|
|
1195
1301
|
json = MapMessage.encode_json(m, :preserve_proto_fieldnames => true)
|
1196
|
-
assert json == expected_preserve
|
1302
|
+
assert JSON.parse(json, :symbolize_names => true) == expected_preserve
|
1197
1303
|
|
1198
1304
|
m2 = MapMessage.decode_json(MapMessage.encode_json(m))
|
1199
1305
|
assert m == m2
|
1200
1306
|
end
|
1201
1307
|
|
1308
|
+
def test_json_maps_emit_defaults_submsg
|
1309
|
+
# TODO: Fix JSON in JRuby version.
|
1310
|
+
return if RUBY_PLATFORM == "java"
|
1311
|
+
m = MapMessage.new(:map_string_msg => {"a" => TestMessage2.new})
|
1312
|
+
expected = {mapStringInt32: {}, mapStringMsg: {a: {foo: 0}}}
|
1313
|
+
|
1314
|
+
actual = MapMessage.encode_json(m, :emit_defaults => true)
|
1315
|
+
|
1316
|
+
assert JSON.parse(actual, :symbolize_names => true) == expected
|
1317
|
+
end
|
1318
|
+
|
1202
1319
|
def test_comparison_with_arbitrary_object
|
1203
1320
|
assert MapMessage.new != nil
|
1204
1321
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: google-protobuf
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.4.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Protobuf Authors
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-08-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake-compiler-dock
|
@@ -128,7 +128,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
128
128
|
version: '0'
|
129
129
|
requirements: []
|
130
130
|
rubyforge_project:
|
131
|
-
rubygems_version: 2.6.
|
131
|
+
rubygems_version: 2.6.12
|
132
132
|
signing_key:
|
133
133
|
specification_version: 4
|
134
134
|
summary: Protocol Buffers
|