Overview
| Comment: | [fibonacci] renamed Writer->Encoder, Reader->Decoder. [mtf] moved package mtf to encoding\mtf |
|---|---|
| Downloads: | Tarball | ZIP archive |
| Timelines: | family | ancestors | descendants | both | trunk |
| Files: | files | file ages | folders |
| SHA1: |
cb736e7ad34d3611e2e73ff5ea54e76c |
| User & Date: | spaskalev on 2015-01-01 15:19:21.050 |
| Other Links: | manifest | tags |
Context
|
2015-01-02
| ||
| 14:35 | Minor optimizations to fibonacci.Encoder check-in: 98661a7373 user: spaskalev tags: trunk | |
|
2015-01-01
| ||
| 15:19 | [fibonacci] renamed Writer->Encoder, Reader->Decoder. [mtf] moved package mtf to encoding\mtf check-in: cb736e7ad3 user: spaskalev tags: trunk | |
| 15:12 | Use a common fibonacci number source for each encoder and decoder. Dropped the two-bytes buffer from the encoder struct. check-in: f1a8d5baa9 user: spaskalev tags: trunk | |
Changes
Modified src/0dev.org/commands/mtf/main.go
from [b672c1daee]
to [8212c2eba2].
1 2 3 4 | package main import ( iou "0dev.org/ioutil" | > < | 1 2 3 4 5 6 7 8 9 10 11 12 |
package main
import (
mtf "0dev.org/encoding/mtf"
iou "0dev.org/ioutil"
"fmt"
"io"
"os"
)
func main() {
var code int
|
| ︙ | ︙ |
Modified src/0dev.org/encoding/fibonacci/fib.go
from [5685c81b13]
to [3231551b1f].
| ︙ | ︙ | |||
11 12 13 14 15 16 17 18 19 20 21 22 23 24 | // 0 - 11, 1 - 110, 2 - 1100, 3 - 1101, 4 - 11000 package fibonacci import ( "io" ) type Numbers []uint64 var ( // Used for encoding and decoding byte values bytesCodec = New(14) ) | > | 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | // 0 - 11, 1 - 110, 2 - 1100, 3 - 1101, 4 - 11000 package fibonacci import ( "io" ) // Alias type with methods for encoding and decoding integers type Numbers []uint64 var ( // Used for encoding and decoding byte values bytesCodec = New(14) ) |
| ︙ | ︙ | |||
75 76 77 78 79 80 81 | value >>= 1 length++ } return result + f[length] - 1, length + 1 } | > | > | 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 |
value >>= 1
length++
}
return result + f[length] - 1, length + 1
}
// Returns a fibonacci encoder over the provided io.Writer
func Encoder(target io.Writer) io.Writer {
var enc encoder
enc.target = target
return &enc
}
type encoder struct {
target io.Writer
remaining byte
length byte
}
// Implements io.Writer
func (e *encoder) Write(input []byte) (int, error) {
var (
total int
err error
)
// Flush on a nil slice
|
| ︙ | ︙ | |||
151 152 153 154 155 156 157 | // Account for the processed input byte total++ } return total, err } | > | > | 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 |
// Account for the processed input byte
total++
}
return total, err
}
// Returns a fibonacci decoder over the provided io.Reader
func Decoder(source io.Reader) io.Reader {
var dec decoder
dec.source = source
return &dec
}
type decoder struct {
source io.Reader
buffer uint64
at byte
}
// Implements io.Reader
func (d *decoder) Read(output []byte) (int, error) {
var (
total int
err error
)
start:
|
| ︙ | ︙ |
Modified src/0dev.org/encoding/fibonacci/fib_test.go
from [33c293fd3b]
to [7b29d51e21].
| ︙ | ︙ | |||
36 37 38 39 40 41 42 |
}
}
}
func TestWriterReader(t *testing.T) {
var (
buf bytes.Buffer
| | | 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
}
}
}
func TestWriterReader(t *testing.T) {
var (
buf bytes.Buffer
w io.Writer = Encoder(&buf)
input []byte = make([]byte, 256)
fib Numbers = New(16)
)
for i := uint64(0); i < 256; i++ {
input[i] = byte(i)
}
|
| ︙ | ︙ | |||
79 80 81 82 83 84 85 |
t.Fatal("Unexpected location for", i, "value", vs)
}
output = output[len(vs):]
}
var (
in *bytes.Reader = bytes.NewReader(buf.Bytes())
| | | 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
t.Fatal("Unexpected location for", i, "value", vs)
}
output = output[len(vs):]
}
var (
in *bytes.Reader = bytes.NewReader(buf.Bytes())
r io.Reader = Decoder(in)
out bytes.Buffer
)
io.Copy(&out, r)
decoded := out.Bytes()
delta := diff.Diff(diff.D{Len1: len(decoded), Len2: len(input), EqualFunc: func(i, j int) bool {
return decoded[i] == input[j]
|
| ︙ | ︙ |
Name change
from src/0dev.org/mtf/mtf.go
to src/0dev.org/encoding/mtf/mtf.go.
Name change
from src/0dev.org/mtf/mtf_test.go
to src/0dev.org/encoding/mtf/mtf_test.go.