in cassandra-bigtable-migration-tools/cassandra-bigtable-proxy/translator/orderedcode.go [335:366]
func Parse(encoded string, items ...interface{}) (remaining string, err error) {
for _, item := range items {
dir := increasing
if d, dOK := item.(decr); dOK {
dir, item = decreasing, d.val
}
switch x := item.(type) {
case *string:
encoded, err = parseString(x, encoded, dir)
case *TrailingString:
if dir == increasing {
*x, encoded = TrailingString(encoded), ""
} else {
b := []byte(encoded)
invert(b)
*x, encoded = TrailingString(b), ""
}
case *float64:
encoded, err = parseFloat64(x, encoded, dir)
case *int64:
encoded, err = parseInt64(x, encoded, dir)
case *uint64:
encoded, err = parseUint64(x, encoded, dir)
default:
return "", fmt.Errorf("orderedcode: cannot parse an item of type %T", item)
}
if err != nil {
return "", err
}
}
return encoded, nil
}