1
0
mirror of https://github.com/garraflavatra/go-fmp.git synced 2025-06-28 12:35:12 +00:00

Table looping (WIP)

This commit is contained in:
2025-06-12 15:12:34 +02:00
parent be915f9f16
commit f72d9510d4

View File

@ -2,14 +2,43 @@ package fmp
func (ctx *FmpFile) Tables() []*FmpTable { func (ctx *FmpFile) Tables() []*FmpTable {
tables := make([]*FmpTable, 0) tables := make([]*FmpTable, 0)
metaDict := ctx.Dictionary.get([]uint64{4, 1, 7})
if metaDict == nil { for _, chunk := range ctx.Chunks {
return tables if chunk.Key != 3 || chunk.Type != FMP_CHUNK_SIMPLE_KEY_VALUE {
continue
} }
for _, meta := range *metaDict.Children {
name := decodeByteSeq(meta.Children.get([]uint64{16}).Value) for _, chunk = range ctx.Chunks {
table := &FmpTable{Name: name} if chunk.Key != 16 {
tables = append(tables, table) continue
} }
for _, chunk = range ctx.Chunks {
if chunk.Key != 5 {
continue
}
for tablePath, chunk := range ctx.Chunks {
if chunk.Key >= 128 {
continue
}
// Found a table!
println("Found one at", tablePath)
}
}
}
}
// metaDict := ctx.Dictionary.get([]uint64{4, 1, 7})
// if metaDict == nil {
// return tables
// }
// for _, meta := range *metaDict.Children {
// name := decodeByteSeq(meta.Children.get([]uint64{16}).Value)
// table := &FmpTable{Name: name}
// tables = append(tables, table)
// }
return tables return tables
} }