Skip to content

Commit

Permalink
Fix for C compliant header generation (#182)
Browse files Browse the repository at this point in the history
* Fix for C compliant header generation

* New attempt where sized enums are respected
  • Loading branch information
Tisten committed Feb 25, 2024
1 parent 6c28fdc commit 83ef7e2
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 2 deletions.
11 changes: 9 additions & 2 deletions src/dl_typelib_write_c_header.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -613,14 +613,21 @@ static dl_error_t dl_context_write_c_header_member( dl_binary_writer* writer, dl
case DL_TYPE_STORAGE_ENUM_INT32:
case DL_TYPE_STORAGE_ENUM_UINT8:
case DL_TYPE_STORAGE_ENUM_UINT16:
case DL_TYPE_STORAGE_ENUM_UINT32:
{
dl_enum_info_t sub_type;
dl_error_t err = dl_reflect_get_enum_info( ctx, member->type_id, &sub_type );
if (DL_ERROR_OK != err) return err;
dl_binary_writer_write_string_fmt( writer, " %s %s;\n", sub_type.name, member->name );
}
break;
case DL_TYPE_STORAGE_ENUM_UINT32:
{
dl_enum_info_t sub_type;
dl_error_t err = dl_reflect_get_enum_info( ctx, member->type_id, &sub_type );
if (DL_ERROR_OK != err) return err;
dl_binary_writer_write_string_fmt( writer, " DL_C_ENUM %s %s;\n", sub_type.name, member->name );
}
break;
case DL_TYPE_STORAGE_ENUM_INT64:
case DL_TYPE_STORAGE_ENUM_UINT64:
{
Expand Down Expand Up @@ -655,7 +662,7 @@ static dl_error_t dl_context_write_c_header_member( dl_binary_writer* writer, dl
dl_binary_writer_write_string_fmt(writer, " DL_DECLARE_ARRAY(");
dl_error_t err = dl_context_write_operator_array_access_type(ctx, member->storage, member->type_id, writer);
if (DL_ERROR_OK != err) return err;
dl_binary_writer_write_string_fmt(writer, ") %s;\n ", member->name);
dl_binary_writer_write_string_fmt(writer, ") %s;\n", member->name);
}
break;
case DL_TYPE_ATOM_INLINE_ARRAY:
Expand Down
6 changes: 6 additions & 0 deletions tests/unittest2.tld
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,12 @@
"members" : [
{ "name" : "members", "type" : "complex_member[]" }
]
},
"struct_with_enum" : {
// The header generation failed to produce correct C code for this
"members" : [
{ "name" : "member", "type" : "extern_enum" }
]
}
}
}

0 comments on commit 83ef7e2

Please sign in to comment.