giroffsets: Use size types for size and alignments

Note that for alignments we should actually use size_t, but this would
imply some refactors since this value can be acually set to -1 in our
implementation.

So we use gssize for now, that at least on gcc is defined.
This commit is contained in:
Marco Trevisan (Treviño) 2024-01-16 02:30:53 +01:00
parent 223acf44ba
commit b68857e707
2 changed files with 28 additions and 27 deletions

View File

@ -261,8 +261,8 @@ struct _GIIrNodeInterface
GList *interfaces; GList *interfaces;
GList *prerequisites; GList *prerequisites;
int alignment; gssize alignment;
int size; size_t size;
GList *members; GList *members;
}; };
@ -311,8 +311,8 @@ struct _GIIrNodeBoxed
char *gtype_name; char *gtype_name;
char *gtype_init; char *gtype_init;
int alignment; gssize alignment;
int size; size_t size;
GList *members; GList *members;
}; };
@ -334,8 +334,8 @@ struct _GIIrNodeStruct
char *copy_func; char *copy_func;
char *free_func; char *free_func;
int alignment; gssize alignment;
int size; size_t size;
GList *members; GList *members;
}; };
@ -355,8 +355,8 @@ struct _GIIrNodeUnion
char *copy_func; char *copy_func;
char *free_func; char *free_func;
int alignment; gssize alignment;
int size; size_t size;
int discriminator_offset; int discriminator_offset;
GIIrNodeType *discriminator_type; GIIrNodeType *discriminator_type;

View File

@ -148,9 +148,9 @@ compute_enum_storage_type (GIIrNodeEnum *enum_node)
} }
static gboolean static gboolean
get_enum_size_alignment (GIIrNodeEnum *enum_node, get_enum_size_alignment (GIIrNodeEnum *enum_node,
int *size, size_t *size,
int *alignment) gssize *alignment)
{ {
ffi_type *type_ffi; ffi_type *type_ffi;
@ -188,8 +188,8 @@ get_enum_size_alignment (GIIrNodeEnum *enum_node,
static gboolean static gboolean
get_interface_size_alignment (GIIrTypelibBuild *build, get_interface_size_alignment (GIIrTypelibBuild *build,
GIIrNodeType *type, GIIrNodeType *type,
int *size, size_t *size,
int *alignment, gssize *alignment,
const char *who) const char *who)
{ {
GIIrNode *iface; GIIrNode *iface;
@ -265,8 +265,8 @@ get_interface_size_alignment (GIIrTypelibBuild *build,
static gboolean static gboolean
get_type_size_alignment (GIIrTypelibBuild *build, get_type_size_alignment (GIIrTypelibBuild *build,
GIIrNodeType *type, GIIrNodeType *type,
int *size, size_t *size,
int *alignment, gssize *alignment,
const char *who) const char *who)
{ {
ffi_type *type_ffi; ffi_type *type_ffi;
@ -277,7 +277,8 @@ get_type_size_alignment (GIIrTypelibBuild *build,
} }
else if (type->tag == GI_TYPE_TAG_ARRAY) else if (type->tag == GI_TYPE_TAG_ARRAY)
{ {
int elt_size, elt_alignment; size_t elt_size;
gssize elt_alignment;
if (!type->has_size if (!type->has_size
|| !get_type_size_alignment(build, type->parameter_type1, || !get_type_size_alignment(build, type->parameter_type1,
@ -333,8 +334,8 @@ static gboolean
get_field_size_alignment (GIIrTypelibBuild *build, get_field_size_alignment (GIIrTypelibBuild *build,
GIIrNodeField *field, GIIrNodeField *field,
GIIrNode *parent_node, GIIrNode *parent_node,
int *size, size_t *size,
int *alignment) gssize *alignment)
{ {
GIIrModule *module = build->module; GIIrModule *module = build->module;
char *who; char *who;
@ -361,8 +362,8 @@ static gboolean
compute_struct_field_offsets (GIIrTypelibBuild *build, compute_struct_field_offsets (GIIrTypelibBuild *build,
GIIrNode *node, GIIrNode *node,
GList *members, GList *members,
int *size_out, size_t *size_out,
int *alignment_out) gssize *alignment_out)
{ {
int size = 0; int size = 0;
int alignment = 1; int alignment = 1;
@ -381,8 +382,8 @@ compute_struct_field_offsets (GIIrTypelibBuild *build,
if (!have_error) if (!have_error)
{ {
int member_size; size_t member_size;
int member_alignment; gssize member_alignment;
if (get_field_size_alignment (build, field, node, if (get_field_size_alignment (build, field, node,
&member_size, &member_alignment)) &member_size, &member_alignment))
@ -428,10 +429,10 @@ static gboolean
compute_union_field_offsets (GIIrTypelibBuild *build, compute_union_field_offsets (GIIrTypelibBuild *build,
GIIrNode *node, GIIrNode *node,
GList *members, GList *members,
int *size_out, size_t *size_out,
int *alignment_out) gssize *alignment_out)
{ {
int size = 0; size_t size = 0;
int alignment = 1; int alignment = 1;
GList *l; GList *l;
gboolean have_error = FALSE; gboolean have_error = FALSE;
@ -448,8 +449,8 @@ compute_union_field_offsets (GIIrTypelibBuild *build,
if (!have_error) if (!have_error)
{ {
int member_size; size_t member_size;
int member_alignment; gssize member_alignment;
if (get_field_size_alignment (build,field, node, if (get_field_size_alignment (build,field, node,
&member_size, &member_alignment)) &member_size, &member_alignment))