aboutsummaryrefslogtreecommitdiff
path: root/src/docs_writer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/docs_writer.cpp')
-rw-r--r--src/docs_writer.cpp24
1 files changed, 23 insertions, 1 deletions
diff --git a/src/docs_writer.cpp b/src/docs_writer.cpp
index 6816ae8eb..88d9df40c 100644
--- a/src/docs_writer.cpp
+++ b/src/docs_writer.cpp
@@ -615,6 +615,19 @@ gb_internal OdinDocTypeIndex odin_doc_type(OdinDocWriter *w, Type *type) {
doc_type.types = odin_write_slice(w, types, gb_count_of(types));
}
break;
+ case Type_BitField:
+ doc_type.kind = OdinDocType_BitField;
+ {
+ auto fields = array_make<OdinDocEntityIndex>(heap_allocator(), type->BitField.fields.count);
+ defer (array_free(&fields));
+
+ for_array(i, type->BitField.fields) {
+ fields[i] = odin_doc_add_entity(w, type->BitField.fields[i]);
+ }
+ doc_type.entities = odin_write_slice(w, fields.data, fields.count);
+ }
+ break;
+
case Type_Struct:
doc_type.kind = OdinDocType_Struct;
if (type->Struct.soa_kind != StructSoa_None) {
@@ -863,6 +876,10 @@ gb_internal OdinDocEntityIndex odin_doc_add_entity(OdinDocWriter *w, Entity *e)
}
break;
case Entity_Variable:
+ if (e->flags & EntityFlag_BitFieldField) {
+ flags |= OdinDocEntityFlag_BitField_Field;
+ }
+
if (e->Variable.is_foreign) { flags |= OdinDocEntityFlag_Foreign; }
if (e->Variable.is_export) { flags |= OdinDocEntityFlag_Export; }
if (e->Variable.thread_local_model != "") {
@@ -873,7 +890,12 @@ gb_internal OdinDocEntityIndex odin_doc_add_entity(OdinDocWriter *w, Entity *e)
if (init_expr == nullptr) {
init_expr = e->Variable.init_expr;
}
- field_group_index = e->Variable.field_group_index;
+
+ if (e->flags & EntityFlag_BitFieldField) {
+ field_group_index = cast(i32)e->Variable.bit_field_bit_size;
+ } else {
+ field_group_index = e->Variable.field_group_index;
+ }
break;
case Entity_Constant:
field_group_index = e->Constant.field_group_index;