diff --git a/plist/main.go b/plist/main.go index f118cfe6c7c2abc9a2b4f36a0caa5180bf2e86cd..3c4aacdd3a449e09624638d27913c9a02ebeeac2 100644 --- a/plist/main.go +++ b/plist/main.go @@ -58,12 +58,15 @@ func main() { batch := new(leveldb.Batch) b := flatbuffers.NewBuilder(0) - oi := b.CreateString("mrjn is a smart kid") - on := b.CreateString("His name is jain") - types.UidStart(b) - types.UidAddId(b, oi) - types.UidAddName(b, on) - oe := types.UidEnd(b) + + types.PostingListStartIdsVector(b, 2) + b.PlaceUint64(5) + b.PlaceUint64(2) + vec := b.EndVector(2) + + types.PostingListStart(b) + types.PostingListAddIds(b, vec) + oe := types.PostingListEnd(b) b.Finish(oe) fmt.Println("Value byte size:", len(b.Bytes)) @@ -92,9 +95,11 @@ func main() { } fmt.Println("Value byte size from Leveldb:", len(val)) - uid := types.GetRootAsUid(val, 0) - fmt.Println("buffer.uid id =", string(uid.Id())) - fmt.Println("buffer.uid name =", string(uid.Name())) + plist := types.GetRootAsPostingList(val, 0) + fmt.Println("buffer.uid id length =", plist.IdsLength()) + for i := 0; i < plist.IdsLength(); i++ { + fmt.Printf("[%d] [%d]\n", i, plist.Ids(i)) + } // http.HandleFunc("/add", addTriple) // http.ListenAndServe(":8080", nil) diff --git a/types.fbs b/types.fbs index d25c25bbc4f23cefb030733296b199f9f27f5c11..53cdaa1bf9f4b4eb5ec6baa5dedd10bf43df4af2 100644 --- a/types.fbs +++ b/types.fbs @@ -1,8 +1,7 @@ namespace types; -table Uid { - id:string; - name:string; +table PostingList { + ids:[ulong]; } -root_type Uid; +root_type PostingList; diff --git a/types/PostingList.go b/types/PostingList.go new file mode 100644 index 0000000000000000000000000000000000000000..ffe2063b44f8d6a9d3d6c7ec5f6c1e7ce6ee6e3a --- /dev/null +++ b/types/PostingList.go @@ -0,0 +1,45 @@ +// automatically generated, do not modify + +package types + +import ( + flatbuffers "github.com/google/flatbuffers/go" +) +type PostingList struct { + _tab flatbuffers.Table +} + +func GetRootAsPostingList(buf []byte, offset flatbuffers.UOffsetT) *PostingList { + n := flatbuffers.GetUOffsetT(buf[offset:]) + x := &PostingList{} + x.Init(buf, n + offset) + return x +} + +func (rcv *PostingList) Init(buf []byte, i flatbuffers.UOffsetT) { + rcv._tab.Bytes = buf + rcv._tab.Pos = i +} + +func (rcv *PostingList) Ids(j int) uint64 { + o := flatbuffers.UOffsetT(rcv._tab.Offset(4)) + if o != 0 { + a := rcv._tab.Vector(o) + return rcv._tab.GetUint64(a + flatbuffers.UOffsetT(j * 8)) + } + return 0 +} + +func (rcv *PostingList) IdsLength() int { + o := flatbuffers.UOffsetT(rcv._tab.Offset(4)) + if o != 0 { + return rcv._tab.VectorLen(o) + } + return 0 +} + +func PostingListStart(builder *flatbuffers.Builder) { builder.StartObject(1) } +func PostingListAddIds(builder *flatbuffers.Builder, ids flatbuffers.UOffsetT) { builder.PrependUOffsetTSlot(0, flatbuffers.UOffsetT(ids), 0) } +func PostingListStartIdsVector(builder *flatbuffers.Builder, numElems int) flatbuffers.UOffsetT { return builder.StartVector(8, numElems, 8) +} +func PostingListEnd(builder *flatbuffers.Builder) flatbuffers.UOffsetT { return builder.EndObject() } diff --git a/types/Uid.go b/types/Uid.go deleted file mode 100644 index 4695ecc3b26f813f9b798fa2be572161bafb4f6b..0000000000000000000000000000000000000000 --- a/types/Uid.go +++ /dev/null @@ -1,43 +0,0 @@ -// automatically generated, do not modify - -package types - -import ( - flatbuffers "github.com/google/flatbuffers/go" -) -type Uid struct { - _tab flatbuffers.Table -} - -func GetRootAsUid(buf []byte, offset flatbuffers.UOffsetT) *Uid { - n := flatbuffers.GetUOffsetT(buf[offset:]) - x := &Uid{} - x.Init(buf, n + offset) - return x -} - -func (rcv *Uid) Init(buf []byte, i flatbuffers.UOffsetT) { - rcv._tab.Bytes = buf - rcv._tab.Pos = i -} - -func (rcv *Uid) Id() []byte { - o := flatbuffers.UOffsetT(rcv._tab.Offset(4)) - if o != 0 { - return rcv._tab.ByteVector(o + rcv._tab.Pos) - } - return nil -} - -func (rcv *Uid) Name() []byte { - o := flatbuffers.UOffsetT(rcv._tab.Offset(6)) - if o != 0 { - return rcv._tab.ByteVector(o + rcv._tab.Pos) - } - return nil -} - -func UidStart(builder *flatbuffers.Builder) { builder.StartObject(2) } -func UidAddId(builder *flatbuffers.Builder, id flatbuffers.UOffsetT) { builder.PrependUOffsetTSlot(0, flatbuffers.UOffsetT(id), 0) } -func UidAddName(builder *flatbuffers.Builder, name flatbuffers.UOffsetT) { builder.PrependUOffsetTSlot(1, flatbuffers.UOffsetT(name), 0) } -func UidEnd(builder *flatbuffers.Builder) flatbuffers.UOffsetT { return builder.EndObject() }