File: interface_node.go

package info (click to toggle)
golang-code.forgejo-f3-gof3 3.11.0-1
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 1,952 kB
  • sloc: sh: 100; makefile: 65
file content (101 lines) | stat: -rw-r--r-- 2,312 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
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
// Copyright Earl Warren <contact@earl-warren.org>
// Copyright Loïc Dachary <loic@dachary.org>
// SPDX-License-Identifier: MIT

package generic

import (
	"context"

	"code.forgejo.org/f3/gof3/v3/f3"
	"code.forgejo.org/f3/gof3/v3/id"
	"code.forgejo.org/f3/gof3/v3/kind"
	"code.forgejo.org/f3/gof3/v3/logger"
	"code.forgejo.org/f3/gof3/v3/path"
)

type NodeAccessorsInterface interface {
	SetIsNil(bool)
	GetIsNil() bool

	SetIsSync(bool)
	GetIsSync() bool

	GetParent() NodeInterface
	SetParent(NodeInterface)

	GetKind() kind.Kind
	SetKind(kind.Kind)

	GetID() id.NodeID
	SetID(id.NodeID)

	GetTree() TreeInterface
	SetTree(TreeInterface)

	GetNodeChildren() NodeChildren
	GetChildren() ChildrenSlice
	SetChildren(NodeChildren)

	GetDriver() NodeDriverInterface
	SetDriver(NodeDriverInterface)
}

type NodeTreeInterface interface {
	GetChild(id.NodeID) NodeInterface
	GetIDFromName(context.Context, string) id.NodeID
	SetChild(NodeInterface) NodeInterface
	DeleteChild(id.NodeID) NodeInterface
	CreateChild(context.Context) NodeInterface

	MustFind(path.Path) NodeInterface
	Find(path.Path) NodeInterface
	FindAndGet(context.Context, path.Path) NodeInterface

	GetCurrentPath() path.Path

	Walk(ctx context.Context, parent path.Path, options *WalkOptions)
	WalkAndGet(ctx context.Context, parent path.Path, options *WalkOptions)
	Apply(ctx context.Context, parent, path path.Path, options *ApplyOptions) bool
	ApplyAndGet(ctx context.Context, path path.Path, options *ApplyOptions) bool

	List(context.Context) ChildrenSlice
}

type NodeDriverProxyInterface interface {
	MapIDInterface
	ListPage(context.Context, int) ChildrenSlice
	GetIDFromName(context.Context, string) id.NodeID

	Equals(context.Context, NodeInterface) bool

	Get(context.Context) NodeInterface
	Upsert(context.Context) NodeInterface
	Delete(context.Context) NodeInterface

	NewFormat() f3.Interface
	FromFormat(f3.Interface) NodeInterface
	ToFormat() f3.Interface

	LookupMappedID(id.NodeID) id.NodeID
}

type MapIDInterface interface {
	GetMappedID() id.NodeID
	SetMappedID(id.NodeID)
}

type NodeInterface interface {
	logger.MessageInterface
	NodeAccessorsInterface
	NodeTreeInterface
	NodeDriverProxyInterface
	path.PathElement

	Init(NodeInterface) NodeInterface

	GetSelf() NodeInterface
	SetSelf(NodeInterface)

	String() string
}