google-protobuf 3.17.3-x86-linux → 3.18.0.rc.1-x86-linux
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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/convert.c +4 -5
- data/ext/google/protobuf_c/defs.c +26 -1326
- data/ext/google/protobuf_c/extconf.rb +0 -1
- data/ext/google/protobuf_c/message.c +1 -2
- data/ext/google/protobuf_c/repeated_field.c +0 -1
- data/ext/google/protobuf_c/ruby-upb.c +603 -290
- data/ext/google/protobuf_c/ruby-upb.h +420 -127
- data/lib/google/2.3/protobuf_c.so +0 -0
- data/lib/google/2.4/protobuf_c.so +0 -0
- data/lib/google/2.5/protobuf_c.so +0 -0
- data/lib/google/2.6/protobuf_c.so +0 -0
- data/lib/google/2.7/protobuf_c.so +0 -0
- data/lib/google/3.0/protobuf_c.so +0 -0
- data/lib/google/protobuf.rb +1 -69
- data/lib/google/protobuf/api_pb.rb +2 -2
- data/lib/google/protobuf/descriptor_dsl.rb +458 -0
- data/lib/google/protobuf/descriptor_pb.rb +266 -0
- data/lib/google/protobuf/type_pb.rb +2 -2
- metadata +7 -6
- data/ext/google/protobuf_c/third_party/wyhash/wyhash.h +0 -145
@@ -0,0 +1,266 @@
|
|
1
|
+
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
2
|
+
# source: google/protobuf/descriptor.proto
|
3
|
+
|
4
|
+
descriptor_data = File.binread(__FILE__).split("\n__END__\n", 2)[1]
|
5
|
+
Google::Protobuf::DescriptorPool.generated_pool.add_serialized_file(descriptor_data)
|
6
|
+
|
7
|
+
module Google
|
8
|
+
module Protobuf
|
9
|
+
FileDescriptorSet = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.protobuf.FileDescriptorSet").msgclass
|
10
|
+
FileDescriptorProto = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.protobuf.FileDescriptorProto").msgclass
|
11
|
+
DescriptorProto = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.protobuf.DescriptorProto").msgclass
|
12
|
+
DescriptorProto::ExtensionRange = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.protobuf.DescriptorProto.ExtensionRange").msgclass
|
13
|
+
DescriptorProto::ReservedRange = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.protobuf.DescriptorProto.ReservedRange").msgclass
|
14
|
+
ExtensionRangeOptions = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.protobuf.ExtensionRangeOptions").msgclass
|
15
|
+
FieldDescriptorProto = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.protobuf.FieldDescriptorProto").msgclass
|
16
|
+
FieldDescriptorProto::Type = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.protobuf.FieldDescriptorProto.Type").enummodule
|
17
|
+
FieldDescriptorProto::Label = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.protobuf.FieldDescriptorProto.Label").enummodule
|
18
|
+
OneofDescriptorProto = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.protobuf.OneofDescriptorProto").msgclass
|
19
|
+
EnumDescriptorProto = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.protobuf.EnumDescriptorProto").msgclass
|
20
|
+
EnumDescriptorProto::EnumReservedRange = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.protobuf.EnumDescriptorProto.EnumReservedRange").msgclass
|
21
|
+
EnumValueDescriptorProto = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.protobuf.EnumValueDescriptorProto").msgclass
|
22
|
+
ServiceDescriptorProto = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.protobuf.ServiceDescriptorProto").msgclass
|
23
|
+
MethodDescriptorProto = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.protobuf.MethodDescriptorProto").msgclass
|
24
|
+
FileOptions = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.protobuf.FileOptions").msgclass
|
25
|
+
FileOptions::OptimizeMode = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.protobuf.FileOptions.OptimizeMode").enummodule
|
26
|
+
MessageOptions = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.protobuf.MessageOptions").msgclass
|
27
|
+
FieldOptions = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.protobuf.FieldOptions").msgclass
|
28
|
+
FieldOptions::CType = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.protobuf.FieldOptions.CType").enummodule
|
29
|
+
FieldOptions::JSType = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.protobuf.FieldOptions.JSType").enummodule
|
30
|
+
OneofOptions = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.protobuf.OneofOptions").msgclass
|
31
|
+
EnumOptions = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.protobuf.EnumOptions").msgclass
|
32
|
+
EnumValueOptions = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.protobuf.EnumValueOptions").msgclass
|
33
|
+
ServiceOptions = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.protobuf.ServiceOptions").msgclass
|
34
|
+
MethodOptions = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.protobuf.MethodOptions").msgclass
|
35
|
+
MethodOptions::IdempotencyLevel = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.protobuf.MethodOptions.IdempotencyLevel").enummodule
|
36
|
+
UninterpretedOption = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.protobuf.UninterpretedOption").msgclass
|
37
|
+
UninterpretedOption::NamePart = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.protobuf.UninterpretedOption.NamePart").msgclass
|
38
|
+
SourceCodeInfo = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.protobuf.SourceCodeInfo").msgclass
|
39
|
+
SourceCodeInfo::Location = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.protobuf.SourceCodeInfo.Location").msgclass
|
40
|
+
GeneratedCodeInfo = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.protobuf.GeneratedCodeInfo").msgclass
|
41
|
+
GeneratedCodeInfo::Annotation = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.protobuf.GeneratedCodeInfo.Annotation").msgclass
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
__END__
|
46
|
+
|
47
|
+
google/protobuf/descriptor.protogoogle.protobuf"G
|
48
|
+
FileDescriptorSet2
|
49
|
+
file (2$.google.protobuf.FileDescriptorProto"�
|
50
|
+
FileDescriptorProto
|
51
|
+
name (
|
52
|
+
package (
|
53
|
+
|
54
|
+
dependency (
|
55
|
+
public_dependency
|
56
|
+
(
|
57
|
+
weak_dependency (6
|
58
|
+
message_type (2 .google.protobuf.DescriptorProto7
|
59
|
+
enum_type (2$.google.protobuf.EnumDescriptorProto8
|
60
|
+
service (2'.google.protobuf.ServiceDescriptorProto8
|
61
|
+
extension (2%.google.protobuf.FieldDescriptorProto-
|
62
|
+
options (2.google.protobuf.FileOptions9
|
63
|
+
source_code_info (2.google.protobuf.SourceCodeInfo
|
64
|
+
syntax ( "�
|
65
|
+
DescriptorProto
|
66
|
+
name ( 4
|
67
|
+
field (2%.google.protobuf.FieldDescriptorProto8
|
68
|
+
extension (2%.google.protobuf.FieldDescriptorProto5
|
69
|
+
nested_type (2 .google.protobuf.DescriptorProto7
|
70
|
+
enum_type (2$.google.protobuf.EnumDescriptorProtoH
|
71
|
+
extension_range (2/.google.protobuf.DescriptorProto.ExtensionRange9
|
72
|
+
|
73
|
+
oneof_decl (2%.google.protobuf.OneofDescriptorProto0
|
74
|
+
options (2.google.protobuf.MessageOptionsF
|
75
|
+
reserved_range (2..google.protobuf.DescriptorProto.ReservedRange
|
76
|
+
|
77
|
+
( e
|
78
|
+
ExtensionRange
|
79
|
+
start (
|
80
|
+
end (7
|
81
|
+
options (2&.google.protobuf.ExtensionRangeOptions+
|
82
|
+
|
83
|
+
start (
|
84
|
+
end ("g
|
85
|
+
ExtensionRangeOptionsC
|
86
|
+
uninterpreted_option� (2$.google.protobuf.UninterpretedOption* �����"�
|
87
|
+
FieldDescriptorProto
|
88
|
+
name (
|
89
|
+
number (:
|
90
|
+
label (2+.google.protobuf.FieldDescriptorProto.Label8
|
91
|
+
type (2*.google.protobuf.FieldDescriptorProto.Type
|
92
|
+
type_name (
|
93
|
+
extendee (
|
94
|
+
|
95
|
+
oneof_index (
|
96
|
+
json_name
|
97
|
+
( .
|
98
|
+
options (2.google.protobuf.FieldOptions
|
99
|
+
proto3_optional ("�
|
100
|
+
Type
|
101
|
+
TYPE_DOUBLE
|
102
|
+
|
103
|
+
TYPE_FLOAT
|
104
|
+
|
105
|
+
TYPE_INT64
|
106
|
+
TYPE_UINT64
|
107
|
+
|
108
|
+
TYPE_INT32
|
109
|
+
TYPE_FIXED64
|
110
|
+
TYPE_FIXED32
|
111
|
+
TYPE_BOOL
|
112
|
+
TYPE_STRING
|
113
|
+
|
114
|
+
TYPE_GROUP
|
115
|
+
|
116
|
+
TYPE_MESSAGE
|
117
|
+
|
118
|
+
TYPE_BYTES
|
119
|
+
TYPE_UINT32
|
120
|
+
TYPE_ENUM
|
121
|
+
|
122
|
+
|
123
|
+
TYPE_SINT32
|
124
|
+
TYPE_SINT64"C
|
125
|
+
Label
|
126
|
+
LABEL_OPTIONAL
|
127
|
+
LABEL_REQUIRED
|
128
|
+
LABEL_REPEATED"T
|
129
|
+
OneofDescriptorProto
|
130
|
+
name ( .
|
131
|
+
options (2.google.protobuf.OneofOptions"�
|
132
|
+
EnumDescriptorProto
|
133
|
+
name ( 8
|
134
|
+
value (2).google.protobuf.EnumValueDescriptorProto-
|
135
|
+
options (2.google.protobuf.EnumOptionsN
|
136
|
+
reserved_range (26.google.protobuf.EnumDescriptorProto.EnumReservedRange
|
137
|
+
|
138
|
+
EnumReservedRange
|
139
|
+
start (
|
140
|
+
end ("l
|
141
|
+
EnumValueDescriptorProto
|
142
|
+
name (
|
143
|
+
number (2
|
144
|
+
options (2!.google.protobuf.EnumValueOptions"�
|
145
|
+
ServiceDescriptorProto
|
146
|
+
name ( 6
|
147
|
+
method (2&.google.protobuf.MethodDescriptorProto0
|
148
|
+
options (2.google.protobuf.ServiceOptions"�
|
149
|
+
MethodDescriptorProto
|
150
|
+
name (
|
151
|
+
|
152
|
+
input_type (
|
153
|
+
output_type ( /
|
154
|
+
options (2.google.protobuf.MethodOptions
|
155
|
+
client_streaming (:false
|
156
|
+
server_streaming (:false"�
|
157
|
+
FileOptions
|
158
|
+
java_package (
|
159
|
+
java_outer_classname ( "
|
160
|
+
java_multiple_files
|
161
|
+
(:false)
|
162
|
+
java_generate_equals_and_hash (B%
|
163
|
+
java_string_check_utf8 (:falseF
|
164
|
+
optimize_for (2).google.protobuf.FileOptions.OptimizeMode:SPEED
|
165
|
+
|
166
|
+
go_package ( "
|
167
|
+
cc_generic_services (:false$
|
168
|
+
java_generic_services (:false"
|
169
|
+
py_generic_services (:false#
|
170
|
+
php_generic_services* (:false
|
171
|
+
|
172
|
+
deprecated (:false
|
173
|
+
cc_enable_arenas (:true
|
174
|
+
objc_class_prefix$ (
|
175
|
+
csharp_namespace% (
|
176
|
+
swift_prefix' (
|
177
|
+
php_class_prefix( (
|
178
|
+
|
179
|
+
php_metadata_namespace, (
|
180
|
+
ruby_package- ( C
|
181
|
+
uninterpreted_option� (2$.google.protobuf.UninterpretedOption":
|
182
|
+
OptimizeMode
|
183
|
+
SPEED
|
184
|
+
CODE_SIZE
|
185
|
+
LITE_RUNTIME* �����J&'"�
|
186
|
+
MessageOptions&
|
187
|
+
message_set_wire_format (:false.
|
188
|
+
no_standard_descriptor_accessor (:false
|
189
|
+
|
190
|
+
deprecated (:false
|
191
|
+
map_entry (C
|
192
|
+
uninterpreted_option� (2$.google.protobuf.UninterpretedOption* �����JJJJ J
|
193
|
+
"�
|
194
|
+
FieldOptions:
|
195
|
+
ctype (2#.google.protobuf.FieldOptions.CType:STRING
|
196
|
+
packed (?
|
197
|
+
jstype (2$.google.protobuf.FieldOptions.JSType: JS_NORMAL
|
198
|
+
lazy (:false
|
199
|
+
|
200
|
+
deprecated (:false
|
201
|
+
weak
|
202
|
+
(:falseC
|
203
|
+
uninterpreted_option� (2$.google.protobuf.UninterpretedOption"/
|
204
|
+
CType
|
205
|
+
|
206
|
+
STRING
|
207
|
+
CORD
|
208
|
+
STRING_PIECE"5
|
209
|
+
JSType
|
210
|
+
JS_NORMAL
|
211
|
+
JS_STRING
|
212
|
+
JS_NUMBER* �����J"^
|
213
|
+
OneofOptionsC
|
214
|
+
uninterpreted_option� (2$.google.protobuf.UninterpretedOption* �����"�
|
215
|
+
EnumOptions
|
216
|
+
allow_alias (
|
217
|
+
|
218
|
+
deprecated (:falseC
|
219
|
+
uninterpreted_option� (2$.google.protobuf.UninterpretedOption* �����J"}
|
220
|
+
EnumValueOptions
|
221
|
+
|
222
|
+
deprecated (:falseC
|
223
|
+
uninterpreted_option� (2$.google.protobuf.UninterpretedOption* �����"{
|
224
|
+
ServiceOptions
|
225
|
+
|
226
|
+
deprecated! (:falseC
|
227
|
+
uninterpreted_option� (2$.google.protobuf.UninterpretedOption* �����"�
|
228
|
+
|
229
|
+
|
230
|
+
deprecated! (:false_
|
231
|
+
idempotency_level" (2/.google.protobuf.MethodOptions.IdempotencyLevel:IDEMPOTENCY_UNKNOWNC
|
232
|
+
uninterpreted_option� (2$.google.protobuf.UninterpretedOption"P
|
233
|
+
IdempotencyLevel
|
234
|
+
IDEMPOTENCY_UNKNOWN
|
235
|
+
NO_SIDE_EFFECTS
|
236
|
+
|
237
|
+
IDEMPOTENT* �����"�
|
238
|
+
UninterpretedOption;
|
239
|
+
name (2-.google.protobuf.UninterpretedOption.NamePart
|
240
|
+
identifier_value (
|
241
|
+
positive_int_value (
|
242
|
+
negative_int_value (
|
243
|
+
double_value (
|
244
|
+
string_value (
|
245
|
+
aggregate_value ( 3
|
246
|
+
NamePart
|
247
|
+
name_part (
|
248
|
+
is_extension ("�
|
249
|
+
SourceCodeInfo:
|
250
|
+
location (2(.google.protobuf.SourceCodeInfo.Location�
|
251
|
+
Location
|
252
|
+
path (B
|
253
|
+
span (B
|
254
|
+
leading_comments (
|
255
|
+
trailing_comments ( !
|
256
|
+
leading_detached_comments ( "�
|
257
|
+
GeneratedCodeInfoA
|
258
|
+
|
259
|
+
annotation (2-.google.protobuf.GeneratedCodeInfo.AnnotationO
|
260
|
+
|
261
|
+
Annotation
|
262
|
+
path (B
|
263
|
+
source_file (
|
264
|
+
begin (
|
265
|
+
end (B~
|
266
|
+
com.google.protobufBDescriptorProtosHZ-google.golang.org/protobuf/types/descriptorpb��GPB�Google.Protobuf.Reflection
|
@@ -1,10 +1,10 @@
|
|
1
1
|
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
2
2
|
# source: google/protobuf/type.proto
|
3
3
|
|
4
|
-
require 'google/protobuf'
|
5
|
-
|
6
4
|
require 'google/protobuf/any_pb'
|
7
5
|
require 'google/protobuf/source_context_pb'
|
6
|
+
require 'google/protobuf'
|
7
|
+
|
8
8
|
Google::Protobuf::DescriptorPool.generated_pool.build do
|
9
9
|
add_file("google/protobuf/type.proto", :syntax => :proto3) do
|
10
10
|
add_message "google.protobuf.Type" do
|
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.18.0.rc.1
|
5
5
|
platform: x86-linux
|
6
6
|
authors:
|
7
7
|
- Protobuf Authors
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-08-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake-compiler-dock
|
@@ -99,7 +99,6 @@ files:
|
|
99
99
|
- ext/google/protobuf_c/repeated_field.h
|
100
100
|
- ext/google/protobuf_c/ruby-upb.c
|
101
101
|
- ext/google/protobuf_c/ruby-upb.h
|
102
|
-
- ext/google/protobuf_c/third_party/wyhash/wyhash.h
|
103
102
|
- ext/google/protobuf_c/wrap_memcpy.c
|
104
103
|
- lib/google/2.3/protobuf_c.so
|
105
104
|
- lib/google/2.4/protobuf_c.so
|
@@ -110,6 +109,8 @@ files:
|
|
110
109
|
- lib/google/protobuf.rb
|
111
110
|
- lib/google/protobuf/any_pb.rb
|
112
111
|
- lib/google/protobuf/api_pb.rb
|
112
|
+
- lib/google/protobuf/descriptor_dsl.rb
|
113
|
+
- lib/google/protobuf/descriptor_pb.rb
|
113
114
|
- lib/google/protobuf/duration_pb.rb
|
114
115
|
- lib/google/protobuf/empty_pb.rb
|
115
116
|
- lib/google/protobuf/field_mask_pb.rb
|
@@ -128,7 +129,7 @@ homepage: https://developers.google.com/protocol-buffers
|
|
128
129
|
licenses:
|
129
130
|
- BSD-3-Clause
|
130
131
|
metadata:
|
131
|
-
source_code_uri: https://github.com/protocolbuffers/protobuf/tree/v3.
|
132
|
+
source_code_uri: https://github.com/protocolbuffers/protobuf/tree/v3.18.0-rc1/ruby
|
132
133
|
post_install_message:
|
133
134
|
rdoc_options: []
|
134
135
|
require_paths:
|
@@ -143,9 +144,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
143
144
|
version: 3.1.dev
|
144
145
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
145
146
|
requirements:
|
146
|
-
- - "
|
147
|
+
- - ">"
|
147
148
|
- !ruby/object:Gem::Version
|
148
|
-
version:
|
149
|
+
version: 1.3.1
|
149
150
|
requirements: []
|
150
151
|
rubygems_version: 3.2.3
|
151
152
|
signing_key:
|
@@ -1,145 +0,0 @@
|
|
1
|
-
/* Copyright 2020 王一 Wang Yi <godspeed_china@yeah.net>
|
2
|
-
This is free and unencumbered software released into the public domain. http://unlicense.org/
|
3
|
-
See github.com/wangyi-fudan/wyhash/ LICENSE
|
4
|
-
*/
|
5
|
-
#ifndef wyhash_final_version
|
6
|
-
#define wyhash_final_version
|
7
|
-
//defines that change behavior
|
8
|
-
#ifndef WYHASH_CONDOM
|
9
|
-
#define WYHASH_CONDOM 1 //0: read 8 bytes before and after boundaries, dangerous but fastest. 1: normal valid behavior 2: extra protection against entropy loss (probability=2^-63), aka. "blind multiplication"
|
10
|
-
#endif
|
11
|
-
#define WYHASH_32BIT_MUM 0 //faster on 32 bit system
|
12
|
-
//includes
|
13
|
-
#include <stdint.h>
|
14
|
-
#include <string.h>
|
15
|
-
#if defined(_MSC_VER) && defined(_M_X64)
|
16
|
-
#include <intrin.h>
|
17
|
-
#pragma intrinsic(_umul128)
|
18
|
-
#endif
|
19
|
-
#if defined(__GNUC__) || defined(__INTEL_COMPILER) || defined(__clang__)
|
20
|
-
#define _likely_(x) __builtin_expect(x,1)
|
21
|
-
#define _unlikely_(x) __builtin_expect(x,0)
|
22
|
-
#else
|
23
|
-
#define _likely_(x) (x)
|
24
|
-
#define _unlikely_(x) (x)
|
25
|
-
#endif
|
26
|
-
//mum function
|
27
|
-
static inline uint64_t _wyrot(uint64_t x) { return (x>>32)|(x<<32); }
|
28
|
-
static inline void _wymum(uint64_t *A, uint64_t *B){
|
29
|
-
#if(WYHASH_32BIT_MUM)
|
30
|
-
uint64_t hh=(*A>>32)*(*B>>32), hl=(*A>>32)*(unsigned)*B, lh=(unsigned)*A*(*B>>32), ll=(uint64_t)(unsigned)*A*(unsigned)*B;
|
31
|
-
#if(WYHASH_CONDOM>1)
|
32
|
-
*A^=_wyrot(hl)^hh; *B^=_wyrot(lh)^ll;
|
33
|
-
#else
|
34
|
-
*A=_wyrot(hl)^hh; *B=_wyrot(lh)^ll;
|
35
|
-
#endif
|
36
|
-
#elif defined(__SIZEOF_INT128__)
|
37
|
-
__uint128_t r=*A; r*=*B;
|
38
|
-
#if(WYHASH_CONDOM>1)
|
39
|
-
*A^=(uint64_t)r; *B^=(uint64_t)(r>>64);
|
40
|
-
#else
|
41
|
-
*A=(uint64_t)r; *B=(uint64_t)(r>>64);
|
42
|
-
#endif
|
43
|
-
#elif defined(_MSC_VER) && defined(_M_X64)
|
44
|
-
#if(WYHASH_CONDOM>1)
|
45
|
-
uint64_t a, b;
|
46
|
-
a=_umul128(*A,*B,&b);
|
47
|
-
*A^=a; *B^=b;
|
48
|
-
#else
|
49
|
-
*A=_umul128(*A,*B,B);
|
50
|
-
#endif
|
51
|
-
#else
|
52
|
-
uint64_t ha=*A>>32, hb=*B>>32, la=(uint32_t)*A, lb=(uint32_t)*B, hi, lo;
|
53
|
-
uint64_t rh=ha*hb, rm0=ha*lb, rm1=hb*la, rl=la*lb, t=rl+(rm0<<32), c=t<rl;
|
54
|
-
lo=t+(rm1<<32); c+=lo<t; hi=rh+(rm0>>32)+(rm1>>32)+c;
|
55
|
-
#if(WYHASH_CONDOM>1)
|
56
|
-
*A^=lo; *B^=hi;
|
57
|
-
#else
|
58
|
-
*A=lo; *B=hi;
|
59
|
-
#endif
|
60
|
-
#endif
|
61
|
-
}
|
62
|
-
static inline uint64_t _wymix(uint64_t A, uint64_t B){ _wymum(&A,&B); return A^B; }
|
63
|
-
//read functions
|
64
|
-
#ifndef WYHASH_LITTLE_ENDIAN
|
65
|
-
#if defined(_WIN32) || defined(__LITTLE_ENDIAN__) || (defined(__BYTE_ORDER__) && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)
|
66
|
-
#define WYHASH_LITTLE_ENDIAN 1
|
67
|
-
#elif defined(__BIG_ENDIAN__) || (defined(__BYTE_ORDER__) && __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__)
|
68
|
-
#define WYHASH_LITTLE_ENDIAN 0
|
69
|
-
#endif
|
70
|
-
#endif
|
71
|
-
#if (WYHASH_LITTLE_ENDIAN)
|
72
|
-
static inline uint64_t _wyr8(const uint8_t *p) { uint64_t v; memcpy(&v, p, 8); return v;}
|
73
|
-
static inline uint64_t _wyr4(const uint8_t *p) { unsigned v; memcpy(&v, p, 4); return v;}
|
74
|
-
#elif defined(__GNUC__) || defined(__INTEL_COMPILER) || defined(__clang__)
|
75
|
-
static inline uint64_t _wyr8(const uint8_t *p) { uint64_t v; memcpy(&v, p, 8); return __builtin_bswap64(v);}
|
76
|
-
static inline uint64_t _wyr4(const uint8_t *p) { unsigned v; memcpy(&v, p, 4); return __builtin_bswap32(v);}
|
77
|
-
#elif defined(_MSC_VER)
|
78
|
-
static inline uint64_t _wyr8(const uint8_t *p) { uint64_t v; memcpy(&v, p, 8); return _byteswap_uint64(v);}
|
79
|
-
static inline uint64_t _wyr4(const uint8_t *p) { unsigned v; memcpy(&v, p, 4); return _byteswap_ulong(v);}
|
80
|
-
#endif
|
81
|
-
static inline uint64_t _wyr3(const uint8_t *p, unsigned k) { return (((uint64_t)p[0])<<16)|(((uint64_t)p[k>>1])<<8)|p[k-1];}
|
82
|
-
//wyhash function
|
83
|
-
static inline uint64_t _wyfinish16(const uint8_t *p, uint64_t len, uint64_t seed, const uint64_t *secret, uint64_t i){
|
84
|
-
#if(WYHASH_CONDOM>0)
|
85
|
-
uint64_t a, b;
|
86
|
-
if(_likely_(i<=8)){
|
87
|
-
if(_likely_(i>=4)){ a=_wyr4(p); b=_wyr4(p+i-4); }
|
88
|
-
else if (_likely_(i)){ a=_wyr3(p,i); b=0; }
|
89
|
-
else a=b=0;
|
90
|
-
}
|
91
|
-
else{ a=_wyr8(p); b=_wyr8(p+i-8); }
|
92
|
-
return _wymix(secret[1]^len,_wymix(a^secret[1], b^seed));
|
93
|
-
#else
|
94
|
-
#define oneshot_shift ((i<8)*((8-i)<<3))
|
95
|
-
return _wymix(secret[1]^len,_wymix((_wyr8(p)<<oneshot_shift)^secret[1],(_wyr8(p+i-8)>>oneshot_shift)^seed));
|
96
|
-
#endif
|
97
|
-
}
|
98
|
-
|
99
|
-
static inline uint64_t _wyfinish(const uint8_t *p, uint64_t len, uint64_t seed, const uint64_t *secret, uint64_t i){
|
100
|
-
if(_likely_(i<=16)) return _wyfinish16(p,len,seed,secret,i);
|
101
|
-
return _wyfinish(p+16,len,_wymix(_wyr8(p)^secret[1],_wyr8(p+8)^seed),secret,i-16);
|
102
|
-
}
|
103
|
-
|
104
|
-
static inline uint64_t wyhash(const void *key, uint64_t len, uint64_t seed, const uint64_t *secret){
|
105
|
-
const uint8_t *p=(const uint8_t *)key;
|
106
|
-
uint64_t i=len; seed^=*secret;
|
107
|
-
if(_unlikely_(i>64)){
|
108
|
-
uint64_t see1=seed;
|
109
|
-
do{
|
110
|
-
seed=_wymix(_wyr8(p)^secret[1],_wyr8(p+8)^seed)^_wymix(_wyr8(p+16)^secret[2],_wyr8(p+24)^seed);
|
111
|
-
see1=_wymix(_wyr8(p+32)^secret[3],_wyr8(p+40)^see1)^_wymix(_wyr8(p+48)^secret[4],_wyr8(p+56)^see1);
|
112
|
-
p+=64; i-=64;
|
113
|
-
}while(i>64);
|
114
|
-
seed^=see1;
|
115
|
-
}
|
116
|
-
return _wyfinish(p,len,seed,secret,i);
|
117
|
-
}
|
118
|
-
//utility functions
|
119
|
-
static const uint64_t _wyp[5] = {0xa0761d6478bd642full, 0xe7037ed1a0b428dbull, 0x8ebc6af09c88c6e3ull, 0x589965cc75374cc3ull, 0x1d8e4e27c47d124full};
|
120
|
-
static inline uint64_t wyhash64(uint64_t A, uint64_t B){ A^=_wyp[0]; B^=_wyp[1]; _wymum(&A,&B); return _wymix(A^_wyp[0],B^_wyp[1]);}
|
121
|
-
static inline uint64_t wyrand(uint64_t *seed){ *seed+=_wyp[0]; return _wymix(*seed,*seed^_wyp[1]);}
|
122
|
-
static inline double wy2u01(uint64_t r){ const double _wynorm=1.0/(1ull<<52); return (r>>12)*_wynorm;}
|
123
|
-
static inline double wy2gau(uint64_t r){ const double _wynorm=1.0/(1ull<<20); return ((r&0x1fffff)+((r>>21)&0x1fffff)+((r>>42)&0x1fffff))*_wynorm-3.0;}
|
124
|
-
static inline uint64_t wy2u0k(uint64_t r, uint64_t k){ _wymum(&r,&k); return k; }
|
125
|
-
|
126
|
-
static inline void make_secret(uint64_t seed, uint64_t *secret){
|
127
|
-
uint8_t c[] = {15, 23, 27, 29, 30, 39, 43, 45, 46, 51, 53, 54, 57, 58, 60, 71, 75, 77, 78, 83, 85, 86, 89, 90, 92, 99, 101, 102, 105, 106, 108, 113, 114, 116, 120, 135, 139, 141, 142, 147, 149, 150, 153, 154, 156, 163, 165, 166, 169, 170, 172, 177, 178, 180, 184, 195, 197, 198, 201, 202, 204, 209, 210, 212, 216, 225, 226, 228, 232, 240 };
|
128
|
-
for(size_t i=0;i<5;i++){
|
129
|
-
uint8_t ok;
|
130
|
-
do{
|
131
|
-
ok=1; secret[i]=0;
|
132
|
-
for(size_t j=0;j<64;j+=8) secret[i]|=((uint64_t)c[wyrand(&seed)%sizeof(c)])<<j;
|
133
|
-
if(secret[i]%2==0){ ok=0; continue; }
|
134
|
-
for(size_t j=0;j<i;j++)
|
135
|
-
#if defined(__GNUC__) || defined(__INTEL_COMPILER) || defined(__clang__)
|
136
|
-
if(__builtin_popcountll(secret[j]^secret[i])!=32){ ok=0; break; }
|
137
|
-
#elif defined(_MSC_VER) && defined(_M_X64)
|
138
|
-
if(_mm_popcnt_u64(secret[j]^secret[i])!=32){ ok=0; break; }
|
139
|
-
#endif
|
140
|
-
if(!ok)continue;
|
141
|
-
for(uint64_t j=3;j<0x100000000ull;j+=2) if(secret[i]%j==0){ ok=0; break; }
|
142
|
-
}while(!ok);
|
143
|
-
}
|
144
|
-
}
|
145
|
-
#endif
|