1package proto
2
3import "github.com/cayleygraph/cayley/quad"
4
5//go:generate protoc --proto_path=$GOPATH/src:. --gogo_out=. primitive.proto
6
7func (p Primitive) GetDirection(d quad.Direction) uint64 {
8	switch d {
9	case quad.Subject:
10		return p.Subject
11	case quad.Predicate:
12		return p.Predicate
13	case quad.Object:
14		return p.Object
15	case quad.Label:
16		return p.Label
17	}
18	panic("unknown direction")
19}
20
21func (p *Primitive) SetDirection(d quad.Direction, v uint64) {
22	switch d {
23	case quad.Subject:
24		p.Subject = v
25	case quad.Predicate:
26		p.Predicate = v
27	case quad.Object:
28		p.Object = v
29	case quad.Label:
30		p.Label = v
31	}
32}
33
34func (p Primitive) IsNode() bool {
35	return len(p.Value) != 0
36}
37
38func (p Primitive) Key() interface{} {
39	return p.ID
40}
41
42func (p *Primitive) IsSameLink(q *Primitive) bool {
43	return p.Subject == q.Subject && p.Predicate == q.Predicate && p.Object == q.Object && p.Label == q.Label
44}
45