Skip to content

Commit 87f3397

Browse files
Add UniqueSourceFileQueue
This is a queue of SourceFile objects, similar to UniqueStringQueue. It is not used yet, only added. Signed-off-by: Matthijs Kooijman <matthijs@stdin.nl>
1 parent c062430 commit 87f3397

File tree

2 files changed

+32
-0
lines changed

2 files changed

+32
-0
lines changed

src/arduino.cc/builder/types/accessories.go

+23
Original file line numberDiff line numberDiff line change
@@ -51,3 +51,26 @@ func (queue *UniqueStringQueue) Pop() interface{} {
5151
func (queue *UniqueStringQueue) Empty() bool {
5252
return queue.Len() == 0
5353
}
54+
55+
type UniqueSourceFileQueue []SourceFile
56+
57+
func (queue UniqueSourceFileQueue) Len() int { return len(queue) }
58+
func (queue UniqueSourceFileQueue) Less(i, j int) bool { return false }
59+
func (queue UniqueSourceFileQueue) Swap(i, j int) { panic("Who called me?!?") }
60+
61+
func (queue *UniqueSourceFileQueue) Push(value SourceFile) {
62+
if !sliceContainsSourceFile(*queue, value) {
63+
*queue = append(*queue, value)
64+
}
65+
}
66+
67+
func (queue *UniqueSourceFileQueue) Pop() SourceFile {
68+
old := *queue
69+
x := old[0]
70+
*queue = old[1:]
71+
return x
72+
}
73+
74+
func (queue *UniqueSourceFileQueue) Empty() bool {
75+
return queue.Len() == 0
76+
}

src/arduino.cc/builder/types/utils.go

+9
Original file line numberDiff line numberDiff line change
@@ -38,3 +38,12 @@ func sliceContains(slice []string, target string) bool {
3838
}
3939
return false
4040
}
41+
42+
func sliceContainsSourceFile(slice []SourceFile, target SourceFile) bool {
43+
for _, elem := range slice {
44+
if elem.Origin == target.Origin && elem.RelativePath == target.RelativePath {
45+
return true
46+
}
47+
}
48+
return false
49+
}

0 commit comments

Comments
 (0)