Skip to content

Commit 4080d95

Browse files
committed
Move builder
1 parent caf54cc commit 4080d95

File tree

6 files changed

+21
-8
lines changed

6 files changed

+21
-8
lines changed

oj/builder.go renamed to alt/builder.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// Copyright (c) 2020, Peter Ohler, All rights reserved.
22

3-
package oj
3+
package alt
44

55
import (
66
"fmt"

oj/builder_test.go renamed to alt/builder_test.go

+6-6
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
// Copyright (c) 2020, Peter Ohler, All rights reserved.
22

3-
package oj_test
3+
package alt_test
44

55
import (
66
"testing"
77

8-
"github.com/ohler55/ojg/oj"
8+
"github.com/ohler55/ojg/alt"
99
"github.com/ohler55/ojg/tt"
1010
)
1111

1212
func TestBuilderArray(t *testing.T) {
13-
var b oj.Builder
13+
var b alt.Builder
1414

1515
err := b.Array()
1616
tt.Nil(t, err, "b.Array()")
@@ -36,7 +36,7 @@ func TestBuilderArray(t *testing.T) {
3636
}
3737

3838
func TestBuilderObject(t *testing.T) {
39-
var b oj.Builder
39+
var b alt.Builder
4040

4141
err := b.Object()
4242
tt.Nil(t, err, "b.Object()")
@@ -63,7 +63,7 @@ func TestBuilderObject(t *testing.T) {
6363
}
6464

6565
func TestBuilderMixed(t *testing.T) {
66-
var b oj.Builder
66+
var b alt.Builder
6767

6868
b.Reset() // not needed, just making sure there are not issues
6969

@@ -87,7 +87,7 @@ func TestBuilderMixed(t *testing.T) {
8787
}
8888

8989
func TestBuilderErrors(t *testing.T) {
90-
var b oj.Builder
90+
var b alt.Builder
9191

9292
err := b.Object("bad")
9393
tt.Equal(t, "can not use a key when pushing to an array", err.Error())

notes

+4-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11

2-
- move oj.Builder to alt and then alias
2+
- field addressable rules?
3+
- arbitrary? bool sometimes?
4+
- how about make same type and check value and or if offsets are correct
35

6+
- alt unit test
47
- oj unit tests
58
- ojg unit tests
69
- ojg.Field embedded fields

oj/oj.go

+3
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@ import (
1313
// Options is an alias for ojg.Options
1414
type Options = ojg.Options
1515

16+
// Builder is an aliase for alt.Builder.
17+
type Builder = alt.Builder
18+
1619
var (
1720
// DefaultOptions are the default options for the this package.
1821
DefaultOptions = ojg.DefaultOptions

oj/parser.go

+2
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ const (
1919
readBufSize = 4096
2020
)
2121

22+
var emptySlice = []interface{}{}
23+
2224
// Parser is a reusable JSON parser. It can be reused for multiple parsings
2325
// which allows buffer reuse for a performance advantage.
2426
type Parser struct {

struct.go

+5
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,9 @@ func buildStruct(rt reflect.Type, x uintptr, embedded bool) (st *Struct) {
7777
st = &Struct{Type: rt}
7878
structMap[x] = st
7979

80+
// TBD create value of type rt to use for addressable and same offset
81+
//
82+
//rv := reflect.New(rt)
8083
for u := byte(0); u < MaskSet; u++ {
8184
if (MaskByTag&u) != 0 && (MaskExact&u) != 0 { // reuse previously built
8285
st.Fields[u] = st.Fields[u & ^MaskExact]
@@ -139,6 +142,8 @@ func buildTagFields(rt reflect.Type, out, pretty, sen, embedded bool) (fa []*Fie
139142
}
140143
}
141144
}
145+
// TBD check field lookup vs offset (maybe vs can address)
146+
// change arg from embedded to canAddr or direct+
142147
fa = append(fa, newField(f, key, omitEmpty, asString, pretty, sen, embedded))
143148
}
144149
}

0 commit comments

Comments
 (0)