@@ -53,6 +53,86 @@ public:
53
53
54
54
};
55
55
56
+ bool compare_type_identifiers(
57
+ const TypeIdentifier& a_identifier,
58
+ const TypeIdentifier& another_identifier)
59
+ {
60
+
61
+ if (a_identifier._d() != another_identifier._d())
62
+ {
63
+ return false;
64
+ }
65
+
66
+ switch (a_identifier._d())
67
+ {
68
+ case TI_STRING8_SMALL:
69
+ case TI_STRING16_SMALL:
70
+ return (a_identifier.string_sdefn() == another_identifier.string_sdefn());
71
+ break;
72
+
73
+ case TI_STRING8_LARGE:
74
+ case TI_STRING16_LARGE:
75
+ return (a_identifier.string_ldefn() == another_identifier.string_ldefn());
76
+ break;
77
+
78
+ case TI_PLAIN_SEQUENCE_SMALL:
79
+ return (a_identifier.seq_sdefn().header() == another_identifier.seq_sdefn().header() &&
80
+ a_identifier.seq_sdefn().bound() == another_identifier.seq_sdefn().bound() &&
81
+ *a_identifier.seq_sdefn().element_identifier() == *another_identifier.seq_sdefn().element_identifier());
82
+ break;
83
+
84
+ case TI_PLAIN_SEQUENCE_LARGE:
85
+ return (a_identifier.seq_ldefn().header() == another_identifier.seq_ldefn().header() &&
86
+ a_identifier.seq_ldefn().bound() == another_identifier.seq_ldefn().bound() &&
87
+ *a_identifier.seq_ldefn().element_identifier() == *another_identifier.seq_ldefn().element_identifier());
88
+
89
+ return (a_identifier.seq_ldefn() == another_identifier.seq_ldefn());
90
+ break;
91
+
92
+ case TI_PLAIN_ARRAY_SMALL:
93
+ return (a_identifier.array_sdefn().header() == another_identifier.array_sdefn().header() &&
94
+ a_identifier.array_sdefn().array_bound_seq() == another_identifier.array_sdefn().array_bound_seq() &&
95
+ *a_identifier.array_sdefn().element_identifier() == *another_identifier.array_sdefn().element_identifier());
96
+ break;
97
+
98
+ case TI_PLAIN_ARRAY_LARGE:
99
+ return (a_identifier.array_ldefn().header() == another_identifier.array_ldefn().header() &&
100
+ a_identifier.array_ldefn().array_bound_seq() == another_identifier.array_ldefn().array_bound_seq() &&
101
+ *a_identifier.array_ldefn().element_identifier() == *another_identifier.array_ldefn().element_identifier());
102
+ break;
103
+
104
+ case TI_PLAIN_MAP_SMALL:
105
+ return (a_identifier.map_sdefn().header() == another_identifier.map_sdefn().header() &&
106
+ a_identifier.map_sdefn().bound() == another_identifier.map_sdefn().bound() &&
107
+ *a_identifier.map_sdefn().element_identifier() == *another_identifier.map_sdefn().element_identifier() &&
108
+ a_identifier.map_sdefn().key_flags() == another_identifier.map_sdefn().key_flags() &&
109
+ *a_identifier.map_sdefn().key_identifier() == *another_identifier.map_sdefn().key_identifier());
110
+ break;
111
+
112
+ case TI_PLAIN_MAP_LARGE:
113
+ return (a_identifier.map_ldefn().header() == another_identifier.map_ldefn().header() &&
114
+ a_identifier.map_ldefn().bound() == another_identifier.map_ldefn().bound() &&
115
+ *a_identifier.map_ldefn().element_identifier() == *another_identifier.map_ldefn().element_identifier() &&
116
+ a_identifier.map_ldefn().key_flags() == another_identifier.map_ldefn().key_flags() &&
117
+ *a_identifier.map_ldefn().key_identifier() == *another_identifier.map_ldefn().key_identifier());
118
+ break;
119
+
120
+ case TI_STRONGLY_CONNECTED_COMPONENT:
121
+ return (a_identifier.sc_component_id() == another_identifier.sc_component_id());
122
+ break;
123
+
124
+ case EK_COMPLETE:
125
+ case EK_MINIMAL:
126
+ return (a_identifier.equivalence_hash() == another_identifier.equivalence_hash());
127
+ break;
128
+
129
+ default:
130
+ return a_identifier.extended_defn() == another_identifier.extended_defn();
131
+
132
+ break;
133
+ }
134
+ }
135
+
56
136
$definitions;separator="\n"$
57
137
58
138
int main(
@@ -627,15 +707,15 @@ check_struct_member(member, parent) ::= <<
627
707
$get_type_identifier(type=member.typecode, var="member_type_ids")$
628
708
if (TK_NONE != member_type_ids.type_identifier2()._d())
629
709
{
630
- EXPECT_TRUE(member_type_ids.type_identifier1() == type_objects.minimal_type_object.struct_type().member_seq()[pos].common().member_type_id() ||
631
- member_type_ids.type_identifier1() == type_objects.complete_type_object.struct_type().member_seq()[pos].common().member_type_id());
632
- EXPECT_TRUE(member_type_ids.type_identifier2() == type_objects.minimal_type_object.struct_type().member_seq()[pos].common().member_type_id() ||
633
- member_type_ids.type_identifier2() == type_objects.complete_type_object.struct_type().member_seq()[pos].common().member_type_id());
710
+ EXPECT_TRUE(compare_type_identifiers( member_type_ids.type_identifier1(), type_objects.minimal_type_object.minimal(). struct_type().member_seq()[pos].common().member_type_id() ) ||
711
+ compare_type_identifiers( member_type_ids.type_identifier1(), type_objects.complete_type_object.complete(). struct_type().member_seq()[pos].common().member_type_id() ));
712
+ EXPECT_TRUE(compare_type_identifiers( member_type_ids.type_identifier2(), type_objects.minimal_type_object.minimal(). struct_type().member_seq()[pos].common().member_type_id() ) ||
713
+ compare_type_identifiers( member_type_ids.type_identifier2(), type_objects.complete_type_object.complete(). struct_type().member_seq()[pos].common().member_type_id() ));
634
714
}
635
715
else
636
716
{
637
- EXPECT_EQ( member_type_ids.type_identifier1(), type_objects.minimal_type_object.struct_type().member_seq()[pos].common().member_type_id());
638
- EXPECT_EQ( member_type_ids.type_identifier1(), type_objects.complete_type_object.struct_type().member_seq()[pos].common().member_type_id());
717
+ EXPECT_TRUE(compare_type_identifiers( member_type_ids.type_identifier1(), type_objects.minimal_type_object.minimal(). struct_type().member_seq()[pos].common().member_type_id() ));
718
+ EXPECT_TRUE(compare_type_identifiers( member_type_ids.type_identifier1(), type_objects.complete_type_object.complete(). struct_type().member_seq()[pos].common().member_type_id() ));
639
719
}
640
720
EXPECT_EQ("$member.name$", type_objects.complete_type_object.struct_type().member_seq()[pos].detail().name().to_string());
641
721
EXPECT_EQ(member_name_hashed, type_objects.minimal_type_object.struct_type().member_seq()[pos].detail().name_hash());
0 commit comments