@@ -16,12 +16,22 @@ func done(data interface{}) pubsub.Paths {
16
16
}
17
17
18
18
func hashBool (data bool ) uint64 {
19
+ // 0 is reserved
19
20
if data {
20
21
return 2
21
22
}
22
23
return 1
23
24
}
24
25
26
+ func hashUint64 (data uint64 ) uint64 {
27
+ // 0 is reserved
28
+ if data == 0 {
29
+ return 1
30
+ }
31
+
32
+ return data
33
+ }
34
+
25
35
var tableECMA = crc64 .MakeTable (crc64 .ECMA )
26
36
27
37
func _a (data interface {}) pubsub.Paths {
@@ -32,7 +42,7 @@ func _a(data interface{}) pubsub.Paths {
32
42
return 0 , pubsub .TreeTraverser (_b ), true
33
43
case 1 :
34
44
35
- return crc64 .Checksum ([]byte (data .(* someType ).a ), tableECMA ) + 1 , pubsub .TreeTraverser (_b ), true
45
+ return hashUint64 ( crc64 .Checksum ([]byte (data .(* someType ).a ), tableECMA )) , pubsub .TreeTraverser (_b ), true
36
46
default :
37
47
return 0 , nil , false
38
48
}
@@ -50,7 +60,7 @@ func _b(data interface{}) pubsub.Paths {
50
60
}), true
51
61
case 1 :
52
62
53
- return crc64 .Checksum ([]byte (data .(* someType ).b ), tableECMA ) + 1 ,
63
+ return hashUint64 ( crc64 .Checksum ([]byte (data .(* someType ).b ), tableECMA )) ,
54
64
pubsub .TreeTraverser (func (data interface {}) pubsub.Paths {
55
65
return ___w_x
56
66
}), true
@@ -115,7 +125,7 @@ func _w_i(data interface{}) pubsub.Paths {
115
125
return 0 , pubsub .TreeTraverser (_w_j ), true
116
126
case 1 :
117
127
118
- return crc64 .Checksum ([]byte (data .(* someType ).w .i ), tableECMA ) + 1 , pubsub .TreeTraverser (_w_j ), true
128
+ return hashUint64 ( crc64 .Checksum ([]byte (data .(* someType ).w .i ), tableECMA )) , pubsub .TreeTraverser (_w_j ), true
119
129
default :
120
130
return 0 , nil , false
121
131
}
@@ -130,7 +140,7 @@ func _w_j(data interface{}) pubsub.Paths {
130
140
return 0 , pubsub .TreeTraverser (done ), true
131
141
case 1 :
132
142
133
- return crc64 .Checksum ([]byte (data .(* someType ).w .j ), tableECMA ) + 1 , pubsub .TreeTraverser (done ), true
143
+ return hashUint64 ( crc64 .Checksum ([]byte (data .(* someType ).w .j ), tableECMA )) , pubsub .TreeTraverser (done ), true
134
144
default :
135
145
return 0 , nil , false
136
146
}
@@ -168,7 +178,7 @@ func _x_i(data interface{}) pubsub.Paths {
168
178
return 0 , pubsub .TreeTraverser (_x_j ), true
169
179
case 1 :
170
180
171
- return crc64 .Checksum ([]byte (data .(* someType ).x .i ), tableECMA ) + 1 , pubsub .TreeTraverser (_x_j ), true
181
+ return hashUint64 ( crc64 .Checksum ([]byte (data .(* someType ).x .i ), tableECMA )) , pubsub .TreeTraverser (_x_j ), true
172
182
default :
173
183
return 0 , nil , false
174
184
}
@@ -183,7 +193,7 @@ func _x_j(data interface{}) pubsub.Paths {
183
193
return 0 , pubsub .TreeTraverser (done ), true
184
194
case 1 :
185
195
186
- return crc64 .Checksum ([]byte (data .(* someType ).x .j ), tableECMA ) + 1 , pubsub .TreeTraverser (done ), true
196
+ return hashUint64 ( crc64 .Checksum ([]byte (data .(* someType ).x .j ), tableECMA )) , pubsub .TreeTraverser (done ), true
187
197
default :
188
198
return 0 , nil , false
189
199
}
@@ -228,14 +238,14 @@ func StructTravCreatePath(f *someTypeFilter) []uint64 {
228
238
229
239
if f .a != nil {
230
240
231
- path = append (path , crc64 .Checksum ([]byte (* f .a ), tableECMA )+ 1 )
241
+ path = append (path , hashUint64 ( crc64 .Checksum ([]byte (* f .a ), tableECMA )) )
232
242
} else {
233
243
path = append (path , 0 )
234
244
}
235
245
236
246
if f .b != nil {
237
247
238
- path = append (path , crc64 .Checksum ([]byte (* f .b ), tableECMA )+ 1 )
248
+ path = append (path , hashUint64 ( crc64 .Checksum ([]byte (* f .b ), tableECMA )) )
239
249
} else {
240
250
path = append (path , 0 )
241
251
}
@@ -269,14 +279,14 @@ func createPath__w(f *wFilter) []uint64 {
269
279
270
280
if f .i != nil {
271
281
272
- path = append (path , crc64 .Checksum ([]byte (* f .i ), tableECMA )+ 1 )
282
+ path = append (path , hashUint64 ( crc64 .Checksum ([]byte (* f .i ), tableECMA )) )
273
283
} else {
274
284
path = append (path , 0 )
275
285
}
276
286
277
287
if f .j != nil {
278
288
279
- path = append (path , crc64 .Checksum ([]byte (* f .j ), tableECMA )+ 1 )
289
+ path = append (path , hashUint64 ( crc64 .Checksum ([]byte (* f .j ), tableECMA )) )
280
290
} else {
281
291
path = append (path , 0 )
282
292
}
@@ -299,14 +309,14 @@ func createPath__x(f *xFilter) []uint64 {
299
309
300
310
if f .i != nil {
301
311
302
- path = append (path , crc64 .Checksum ([]byte (* f .i ), tableECMA )+ 1 )
312
+ path = append (path , hashUint64 ( crc64 .Checksum ([]byte (* f .i ), tableECMA )) )
303
313
} else {
304
314
path = append (path , 0 )
305
315
}
306
316
307
317
if f .j != nil {
308
318
309
- path = append (path , crc64 .Checksum ([]byte (* f .j ), tableECMA )+ 1 )
319
+ path = append (path , hashUint64 ( crc64 .Checksum ([]byte (* f .j ), tableECMA )) )
310
320
} else {
311
321
path = append (path , 0 )
312
322
}
0 commit comments