mirror of
https://github.com/thunderbrewhq/binana.git
synced 2025-12-12 09:52:28 +00:00
30 lines
561 B
Go
30 lines
561 B
Go
|
|
package symfile
|
||
|
|
|
||
|
|
import (
|
||
|
|
"slices"
|
||
|
|
"sort"
|
||
|
|
)
|
||
|
|
|
||
|
|
// Most tables are reasonably-sized and can be kept in memory
|
||
|
|
type InMemoryTable struct {
|
||
|
|
Entries []Entry
|
||
|
|
}
|
||
|
|
|
||
|
|
func (t *InMemoryTable) Insert(entry *Entry) (err error) {
|
||
|
|
i := sort.Search(len(t.Entries), func(i int) bool {
|
||
|
|
return t.Entries[i].StartAddress >= entry.StartAddress
|
||
|
|
})
|
||
|
|
|
||
|
|
if i < len(t.Entries) {
|
||
|
|
t.Entries = slices.Insert(t.Entries, i, *entry)
|
||
|
|
} else {
|
||
|
|
t.Entries = append(t.Entries, *entry)
|
||
|
|
}
|
||
|
|
|
||
|
|
return
|
||
|
|
}
|
||
|
|
|
||
|
|
func (t *InMemoryTable) Len() int {
|
||
|
|
return len(t.Entries)
|
||
|
|
}
|