Lines Matching refs:qs

148 	qs := newQuadStore()
150 qs.AddQuad(q)
152 return qs
164 func (qs *QuadStore) cloneAll() []*primitive {
165 qs.reading = true
166 return qs.all
169 func (qs *QuadStore) addPrimitive(p *primitive) int64 {
170 qs.last++
171 id := qs.last
174 qs.appendPrimitive(p)
178 func (qs *QuadStore) appendPrimitive(p *primitive) {
179 qs.prim[p.ID] = p
180 if !qs.reading {
181 qs.all = append(qs.all, p)
183 n := len(qs.all)
184 qs.all = append(qs.all[:n:n], p) // reallocate slice
185 qs.reading = false // this is a new slice
191 func (qs *QuadStore) resolveVal(v quad.Value, add bool) (int64, bool) {
199 if p, ok := qs.prim[id]; ok || !add {
205 qs.appendPrimitive(&primitive{ID: id, refs: 1})
210 if id, exists := qs.vals[vs]; exists || !add {
212 qs.prim[id].refs++
216 id := qs.addPrimitive(&primitive{Value: v})
217 qs.vals[vs] = id
221 func (qs *QuadStore) resolveQuad(q quad.Quad, add bool) (internalQuad, bool) {
228 if vid, _ := qs.resolveVal(v, add); vid != 0 {
237 func (qs *QuadStore) lookupVal(id int64) quad.Value {
238 pv := qs.prim[id]
245 func (qs *QuadStore) lookupQuadDirs(p internalQuad) quad.Quad {
252 v := qs.lookupVal(vid)
259 func (qs *QuadStore) AddBNode() int64 {
260 return qs.addPrimitive(&primitive{})
265 func (qs *QuadStore) AddValue(v quad.Value) (int64, bool) {
266 id, exists := qs.resolveVal(v, true)
270 func (qs *QuadStore) indexesForQuad(q internalQuad) []*Tree {
277 trees = append(trees, qs.index.Tree(dir, v))
284 func (qs *QuadStore) AddQuad(q quad.Quad) (int64, bool) {
285 p, _ := qs.resolveQuad(q, true)
286 if id := qs.quads[p]; id != 0 {
290 id := qs.addPrimitive(pr)
291 qs.quads[p] = id
292 for _, t := range qs.indexesForQuad(p) {
302 func (qs *QuadStore) WriteQuad(q quad.Quad) error {
303 qs.AddQuad(q)
307 func (qs *QuadStore) deleteQuadNodes(q internalQuad) {
313 if p := qs.prim[id]; p != nil {
318 qs.Delete(id)
323 func (qs *QuadStore) Delete(id int64) bool {
324 p := qs.prim[id]
330 delete(qs.vals, p.Value.String())
333 for _, t := range qs.indexesForQuad(p.Quad) {
336 delete(qs.quads, p.Quad)
338 delete(qs.prim, id)
340 for i, p2 := range qs.all {
347 if !qs.reading {
348 qs.all = append(qs.all[:di], qs.all[di+1:]...)
350 all := make([]*primitive, 0, len(qs.all)-1)
351 all = append(all, qs.all[:di]...)
352 all = append(all, qs.all[di+1:]...)
353 qs.all = all
354 qs.reading = false // this is a new slice
357 qs.deleteQuadNodes(p.Quad)
361 func (qs *QuadStore) findQuad(q quad.Quad) (int64, internalQuad, bool) {
362 p, ok := qs.resolveQuad(q, false)
366 id := qs.quads[p]
370 func (qs *QuadStore) ApplyDeltas(deltas []graph.Delta, ignoreOpts graph.IgnoreOpts) error {
377 if _, _, ok := qs.findQuad(d.Quad); ok {
383 if _, _, ok := qs.findQuad(d.Quad); !ok {
396 qs.AddQuad(d.Quad)
398 if id, _, ok := qs.findQuad(d.Quad); ok {
399 qs.Delete(id)
406 qs.horizon++
421 func (qs *QuadStore) quad(v graph.Value) (q internalQuad, ok bool) {
424 p := qs.prim[int64(v)]
437 func (qs *QuadStore) Quad(index graph.Value) quad.Quad {
438 q, ok := qs.quad(index)
442 return qs.lookupQuadDirs(q)
445 func (qs *QuadStore) QuadIterator(d quad.Direction, value graph.Value) graph.Iterator {
450 index, ok := qs.index.Get(d, id)
452 return NewIterator(index, qs, d, id)
457 func (qs *QuadStore) Size() int64 {
458 return int64(len(qs.prim))
461 func (qs *QuadStore) ValueOf(name quad.Value) graph.Value {
465 id := qs.vals[name.String()]
472 func (qs *QuadStore) NameOf(v graph.Value) quad.Value {
482 if _, ok = qs.prim[n]; !ok {
485 return qs.lookupVal(n)
488 func (qs *QuadStore) QuadsAllIterator() graph.Iterator {
489 return newAllIterator(qs, false, qs.last)
492 func (qs *QuadStore) QuadDirection(val graph.Value, d quad.Direction) graph.Value {
493 q, ok := qs.quad(val)
504 func (qs *QuadStore) NodesAllIterator() graph.Iterator {
505 return newAllIterator(qs, true, qs.last)
508 func (qs *QuadStore) Close() error { return nil }