summaryrefslogtreecommitdiff
path: root/plugins/kaitai/rost
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2023-10-09 22:49:59 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2023-10-09 22:49:59 (GMT)
commit7c6fe94c90d320813d0d78a9dbef707696f31505 (patch)
tree912b5c51469c02e6ef680c0c60739787ccff4891 /plugins/kaitai/rost
parentcb05b99a8c451ff80d88f988e2654c794b0f3750 (diff)
Support some last missing features from Kaitai: bit fields, instance search order and stream EOF.
Diffstat (limited to 'plugins/kaitai/rost')
-rw-r--r--plugins/kaitai/rost/browser.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/plugins/kaitai/rost/browser.c b/plugins/kaitai/rost/browser.c
index 075c5ff..159915b 100644
--- a/plugins/kaitai/rost/browser.c
+++ b/plugins/kaitai/rost/browser.c
@@ -32,9 +32,10 @@
#include "browser-int.h"
+#include "../records/bits.h"
+#include "../records/delayed.h"
#include "../records/item.h"
#include "../records/list.h"
-#include "../records/value.h"
@@ -354,11 +355,14 @@ static bool g_kaitai_browser_reduce(GKaitaiBrowser *item, GScanContext *ctx, GSc
else
{
- if (G_IS_RECORD_ITEM(item->record))
- result = g_record_item_get_value(G_RECORD_ITEM(item->record), &value);
+ if (G_IS_RECORD_BIT_FIELD(item->record))
+ result = g_record_bit_field_get_value(G_RECORD_BIT_FIELD(item->record), &value);
+
+ else if (G_IS_RECORD_DELAYED(item->record))
+ result = g_record_delayed_compute_and_aggregate_value(G_RECORD_DELAYED(item->record), &value);
- else if (G_IS_RECORD_VALUE(item->record))
- result = g_record_value_compute_and_aggregate_value(G_RECORD_VALUE(item->record), &value);
+ else if (G_IS_RECORD_ITEM(item->record))
+ result = g_record_item_get_value(G_RECORD_ITEM(item->record), &value);
else
result = false;