File: visited.go

package info (click to toggle)
golang-github-getkin-kin-openapi 0.124.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 4,288 kB
  • sloc: sh: 344; makefile: 4
file content (41 lines) | stat: -rw-r--r-- 947 bytes parent folder | download | duplicates (4)
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
package openapi3

func newVisited() visitedComponent {
	return visitedComponent{
		header: make(map[*Header]struct{}),
		schema: make(map[*Schema]struct{}),
	}
}

type visitedComponent struct {
	header map[*Header]struct{}
	schema map[*Schema]struct{}
}

// resetVisited clears visitedComponent map
// should be called before recursion over doc *T
func (doc *T) resetVisited() {
	doc.visited = newVisited()
}

// isVisitedHeader returns `true` if the *Header pointer was already visited
// otherwise it returns `false`
func (doc *T) isVisitedHeader(h *Header) bool {
	if _, ok := doc.visited.header[h]; ok {
		return true
	}

	doc.visited.header[h] = struct{}{}
	return false
}

// isVisitedHeader returns `true` if the *Schema pointer was already visited
// otherwise it returns `false`
func (doc *T) isVisitedSchema(s *Schema) bool {
	if _, ok := doc.visited.schema[s]; ok {
		return true
	}

	doc.visited.schema[s] = struct{}{}
	return false
}