mirror of
https://github.com/thunderbrewhq/binana.git
synced 2025-12-12 17:52:29 +00:00
33 lines
603 B
Go
33 lines
603 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)
|
|
}
|
|
|
|
func NewInMemoryTable() *InMemoryTable {
|
|
return new(InMemoryTable)
|
|
}
|