Skip to content

Commit 9e3924f

Browse files
authored
Merge pull request #857 from ab9rf/gen-const-identities
codegen: generate type_identities as `const`
2 parents 27c83f8 + ba637da commit 9e3924f

File tree

3 files changed

+15
-15
lines changed

3 files changed

+15
-15
lines changed

Bitfield.pm

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -91,8 +91,8 @@ sub render_bitfield_core {
9191
emit "static const bitfield_item_info bits[bit_count];";
9292
} "template<> struct ${export_prefix}bitfield_$traits_name ", ";";
9393
emit_block {
94-
emit "static bitfield_identity identity;";
95-
emit "static bitfield_identity *get() { return &identity; }";
94+
emit "static const bitfield_identity identity;";
95+
emit "static const bitfield_identity *get() { return &identity; }";
9696
} "template<> struct ${export_prefix}identity_$traits_name ", ";";
9797
header_ref("Export.h");
9898
header_ref("DataDefs.h");
@@ -112,7 +112,7 @@ sub render_bitfield_core {
112112
$lines[-1] =~ s/,$//;
113113
} "const bitfield_item_info bitfield_${traits_name}::bits[bit_count] = ", ";";
114114

115-
emit "bitfield_identity identity_${traits_name}::identity(",
115+
emit "const bitfield_identity identity_${traits_name}::identity(",
116116
"sizeof($full_name), ",
117117
type_identity_reference($tag,-parent => 1), ', ',
118118
"\"$name\", bitfield_${traits_name}::bit_count, bitfield_${traits_name}::bits);";

Enum.pm

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -90,8 +90,8 @@ sub render_enum_tables($$$$$$) {
9090

9191
with_emit_traits {
9292
emit_block {
93-
emit "static enum_identity identity;";
94-
emit "static enum_identity *get() { return &identity; }";
93+
emit "const static enum_identity identity;";
94+
emit "const static enum_identity *get() { return &identity; }";
9595
} "template<> struct ${export_prefix}identity_$traits_name ", ";";
9696
header_ref("Export.h");
9797
header_ref("DataDefs.h");
@@ -175,7 +175,7 @@ sub render_enum_tables($$$$$$) {
175175
for (my $i = 0; $i < @anames; $i++) {
176176
emit "$atypes[$i] $anames[$i];";
177177
}
178-
emit "static struct_identity _identity;";
178+
emit "const static struct_identity _identity;";
179179
} "struct attr_entry_type ", ";";
180180
emit "static const attr_entry_type attr_table[", $count, "+1];";
181181
emit "static const attr_entry_type &attrs(enum_type value);";
@@ -296,7 +296,7 @@ sub render_enum_tables($$$$$$) {
296296
@field_defs = @field_meta;
297297
} $entry_type;
298298

299-
emit "struct_identity ${entry_type}::_identity(",
299+
emit "const struct_identity ${entry_type}::_identity(",
300300
"sizeof($entry_type), NULL, ",
301301
type_identity_reference($tag), ', ',
302302
"\"_attr_entry_type\", NULL, $ftable);";
@@ -306,7 +306,7 @@ sub render_enum_tables($$$$$$) {
306306
$atable_meta = "&${entry_type}::_identity";
307307
}
308308

309-
emit "enum_identity identity_${traits_name}::identity(",
309+
emit "const enum_identity identity_${traits_name}::identity(",
310310
"sizeof($full_name), ",
311311
type_identity_reference($tag,-parent => 1), ', ',
312312
"\"$name\", TID($base_type), $base, ",

StructFields.pm

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -671,14 +671,14 @@ sub emit_struct_fields($$;%) {
671671

672672
with_emit_traits {
673673
emit_block {
674-
emit "static $identity_type identity;";
675-
emit "static $identity_type *get() { return &identity; }";
674+
emit "static const $identity_type identity;";
675+
emit "static const $identity_type *get() { return &identity; }";
676676
} "template<> struct ${export_prefix}$traits_name ", ";";
677677
};
678678

679679
with_emit_static {
680680
my $ftable = render_field_metadata $tag, $full_name, @fields, %info;
681-
emit "$identity_type ${traits_name}::identity(",
681+
emit "const $identity_type ${traits_name}::identity(",
682682
"sizeof($full_name), &allocator_fn<${full_name}>, ",
683683
type_identity_reference($tag,-parent => 1), ', ',
684684
"\"$name\", NULL, $ftable);";
@@ -707,13 +707,13 @@ sub emit_struct_fields($$;%) {
707707
my $inherits = $flags{-inherits};
708708
my $original_name = $tag->getAttribute('original-name');
709709

710-
emit "static $identity_type _identity;";
710+
emit "static const $identity_type _identity;";
711711

712712
with_emit_static {
713713
local @simple_inits;
714714
my @ctor_lines = with_emit {
715715
if ($flags{-class}) {
716-
$ctor_args = "virtual_identity *_id";
716+
$ctor_args = "const virtual_identity *_id";
717717
$ctor_arg_init = " = &".$name."::_identity";
718718
push @simple_inits, "$flags{-inherits}(_id)" if $flags{-inherits};
719719
emit "_identity.adjust_vtable(this, _id);";
@@ -747,14 +747,14 @@ sub emit_struct_fields($$;%) {
747747
my $ftable = render_field_metadata $tag, $full_name, @fields, %info;
748748

749749
if ($flags{-class}) {
750-
emit "virtual_identity ${full_name}::_identity(",
750+
emit "const virtual_identity ${full_name}::_identity(",
751751
"sizeof($full_name), &${alloc_fn}<${full_name}>, ",
752752
"\"$name\", ",
753753
($original_name ? "\"$original_name\"" : 'NULL'), ', ',
754754
($inherits ? "&${inherits}::_identity" : 'NULL'), ', ',
755755
"$ftable);";
756756
} else {
757-
emit "$identity_type ${full_name}::_identity(",
757+
emit "const $identity_type ${full_name}::_identity(",
758758
"sizeof($full_name), &allocator_fn<${full_name}>, ",
759759
type_identity_reference($tag,-parent => 1), ', ',
760760
"\"$name\", ",

0 commit comments

Comments
 (0)