mirror of
				https://github.com/coredns/coredns.git
				synced 2025-10-30 09:43:17 -04:00 
			
		
		
		
	* Rename middleware to plugin first pass; mostly used 'sed', few spots where I manually changed text. This still builds a coredns binary. * fmt error * Rename AddMiddleware to AddPlugin * Readd AddMiddleware to remain backwards compat
		
			
				
	
	
		
			63 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package tree
 | |
| 
 | |
| import "fmt"
 | |
| 
 | |
| // Print prints a Tree. Main use is to aid in debugging.
 | |
| func (t *Tree) Print() {
 | |
| 	if t.Root == nil {
 | |
| 		fmt.Println("<nil>")
 | |
| 	}
 | |
| 	t.Root.print()
 | |
| }
 | |
| 
 | |
| func (n *Node) print() {
 | |
| 	q := newQueue()
 | |
| 	q.push(n)
 | |
| 
 | |
| 	nodesInCurrentLevel := 1
 | |
| 	nodesInNextLevel := 0
 | |
| 
 | |
| 	for !q.empty() {
 | |
| 		do := q.pop()
 | |
| 		nodesInCurrentLevel--
 | |
| 
 | |
| 		if do != nil {
 | |
| 			fmt.Print(do.Elem.Name(), " ")
 | |
| 			q.push(do.Left)
 | |
| 			q.push(do.Right)
 | |
| 			nodesInNextLevel += 2
 | |
| 		}
 | |
| 		if nodesInCurrentLevel == 0 {
 | |
| 			fmt.Println()
 | |
| 		}
 | |
| 		nodesInCurrentLevel = nodesInNextLevel
 | |
| 		nodesInNextLevel = 0
 | |
| 	}
 | |
| 	fmt.Println()
 | |
| }
 | |
| 
 | |
| type queue []*Node
 | |
| 
 | |
| // newQueue returns a new queue.
 | |
| func newQueue() queue {
 | |
| 	q := queue([]*Node{})
 | |
| 	return q
 | |
| }
 | |
| 
 | |
| // push pushes n to the end of the queue.
 | |
| func (q *queue) push(n *Node) {
 | |
| 	*q = append(*q, n)
 | |
| }
 | |
| 
 | |
| // pop pops the first element off the queue.
 | |
| func (q *queue) pop() *Node {
 | |
| 	n := (*q)[0]
 | |
| 	*q = (*q)[1:]
 | |
| 	return n
 | |
| }
 | |
| 
 | |
| // empty returns true when the queue contains zero nodes.
 | |
| func (q *queue) empty() bool {
 | |
| 	return len(*q) == 0
 | |
| }
 |