@@ -162,13 +162,8 @@ void cpp_typecheckt::default_ctor(
162
162
const irep_idt &base_name,
163
163
cpp_declarationt &ctor) const
164
164
{
165
- exprt name (ID_name);
166
- name.set (ID_identifier, base_name);
167
- name.add_source_location ()=source_location;
168
-
169
165
cpp_declaratort decl;
170
- decl.name ().id (ID_cpp_name);
171
- decl.name ().move_to_sub (name);
166
+ decl.name () = cpp_namet (base_name, source_location);
172
167
decl.type ()=typet (ID_function_type);
173
168
decl.type ().subtype ().make_nil ();
174
169
decl.add_source_location ()=source_location;
@@ -204,20 +199,10 @@ void cpp_typecheckt::default_cpctor(
204
199
std::string param_identifier (" ref" );
205
200
206
201
// Compound name
207
- irept comp_name (ID_name);
208
- comp_name.set (ID_identifier, symbol.base_name );
209
- comp_name.set (ID_C_source_location, source_location);
210
-
211
- cpp_namet cppcomp;
212
- cppcomp.move_to_sub (comp_name);
202
+ const cpp_namet cppcomp (symbol.base_name , source_location);
213
203
214
204
// Parameter name
215
- exprt param_name (ID_name);
216
- param_name.add_source_location ()=source_location;
217
- param_name.set (ID_identifier, param_identifier);
218
-
219
- cpp_namet cpp_parameter;
220
- cpp_parameter.move_to_sub (param_name);
205
+ const cpp_namet cpp_parameter (param_identifier, source_location);
221
206
222
207
// Parameter declarator
223
208
cpp_declaratort parameter_tor;
@@ -230,8 +215,7 @@ void cpp_typecheckt::default_cpctor(
230
215
cpp_declarationt parameter_decl;
231
216
parameter_decl.set (ID_type, ID_merged_type);
232
217
auto &sub = to_type_with_subtypes (parameter_decl.type ()).subtypes ();
233
- sub.push_back (
234
- static_cast <const typet &>(static_cast <const irept &>(cppcomp)));
218
+ sub.push_back (cppcomp.as_type ());
235
219
irept constnd (ID_const);
236
220
sub.push_back (static_cast <const typet &>(constnd));
237
221
parameter_decl.move_to_operands (parameter_tor);
@@ -264,18 +248,12 @@ void cpp_typecheckt::default_cpctor(
264
248
irep_idt ctor_name=parsymb.base_name ;
265
249
266
250
// Call the parent default copy constructor
267
- exprt name (ID_name);
268
- name.set (ID_identifier, ctor_name);
269
- name.add_source_location ()=source_location;
270
-
271
- cpp_namet cppname;
272
- cppname.move_to_sub (name);
251
+ const cpp_namet cppname (ctor_name, source_location);
273
252
274
253
codet mem_init (ID_member_initializer);
275
254
mem_init.add_source_location ()=source_location;
276
255
mem_init.set (ID_member, cppname);
277
- mem_init.copy_to_operands (
278
- static_cast <const exprt &>(static_cast <const irept &>(cpp_parameter)));
256
+ mem_init.copy_to_operands (cpp_parameter.as_expr ());
279
257
initializers.move_to_sub (mem_init);
280
258
}
281
259
}
@@ -289,12 +267,7 @@ void cpp_typecheckt::default_cpctor(
289
267
// Take care of virtual tables
290
268
if (mem_c.get_bool (ID_is_vtptr))
291
269
{
292
- exprt name (ID_name);
293
- name.set (ID_identifier, mem_c.get_base_name ());
294
- name.add_source_location ()=source_location;
295
-
296
- cpp_namet cppname;
297
- cppname.move_to_sub (name);
270
+ const cpp_namet cppname (mem_c.get_base_name (), source_location);
298
271
299
272
const symbolt &virtual_table_symbol_type =
300
273
lookup (mem_c.type ().subtype ().get (ID_identifier));
@@ -327,21 +300,15 @@ void cpp_typecheckt::default_cpctor(
327
300
328
301
const irep_idt &mem_name = mem_c.get_base_name ();
329
302
330
- exprt name (ID_name);
331
- name.set (ID_identifier, mem_name);
332
- name.add_source_location ()=source_location;
333
-
334
- cpp_namet cppname;
335
- cppname.move_to_sub (name);
303
+ const cpp_namet cppname (mem_name, source_location);
336
304
337
305
codet mem_init (ID_member_initializer);
338
306
mem_init.set (ID_member, cppname);
339
307
mem_init.add_source_location ()=source_location;
340
308
341
309
exprt memberexpr (ID_member);
342
310
memberexpr.set (ID_component_cpp_name, cppname);
343
- memberexpr.copy_to_operands (
344
- static_cast <const exprt &>(static_cast <const irept &>(cpp_parameter)));
311
+ memberexpr.copy_to_operands (cpp_parameter.as_expr ());
345
312
memberexpr.add_source_location ()=source_location;
346
313
347
314
if (mem_c.type ().id () == ID_array)
@@ -400,12 +367,8 @@ void cpp_typecheckt::default_assignop(
400
367
auto &args_decl_type_sub = to_type_with_subtypes (args_decl.type ()).subtypes ();
401
368
402
369
args_decl.type ().id (ID_merged_type);
403
- args_decl_type_sub.push_back (typet (ID_cpp_name));
404
- args_decl_type_sub.back ().get_sub ().push_back (irept (ID_name));
405
- args_decl_type_sub.back ().get_sub ().back ().set (
406
- ID_identifier, symbol.base_name );
407
- args_decl_type_sub.back ().get_sub ().back ().set (
408
- ID_C_source_location, source_location);
370
+ args_decl_type_sub.push_back (
371
+ cpp_namet (symbol.base_name , source_location).as_type ());
409
372
410
373
args_decl_type_sub.push_back (typet (ID_const));
411
374
args_decl.operands ().push_back (exprt (ID_cpp_declarator));
@@ -414,9 +377,7 @@ void cpp_typecheckt::default_assignop(
414
377
cpp_declaratort &args_decl_declor=
415
378
static_cast <cpp_declaratort&>(args_decl.operands ().back ());
416
379
417
- args_decl_declor.name ().id (ID_cpp_name);
418
- args_decl_declor.name ().get_sub ().push_back (irept (ID_name));
419
- args_decl_declor.name ().get_sub ().back ().add (ID_identifier).id (arg_name);
380
+ args_decl_declor.name () = cpp_namet (arg_name, source_location);
420
381
args_decl_declor.add_source_location ()=source_location;
421
382
422
383
args_decl_declor.type ()=pointer_type (typet (ID_nil));
@@ -522,8 +483,6 @@ void cpp_typecheckt::check_member_initializers(
522
483
const irept &initializer=*init_it;
523
484
assert (initializer.is_not_nil ());
524
485
525
- assert (initializer.get (ID_member)==ID_cpp_name);
526
-
527
486
const cpp_namet &member_name=
528
487
to_cpp_name (initializer.find (ID_member));
529
488
@@ -665,15 +624,7 @@ void cpp_typecheckt::full_member_initialization(
665
624
// ifthenelse only gets to have two operands (instead of three)
666
625
codet cond (ID_ifthenelse);
667
626
668
- {
669
- cpp_namet most_derived;
670
- most_derived.get_sub ().push_back (irept (ID_name));
671
- most_derived.get_sub ().back ().set (ID_identifier, " @most_derived" );
672
-
673
- exprt tmp;
674
- tmp.swap (most_derived);
675
- cond.move_to_operands (tmp);
676
- }
627
+ cond.copy_to_operands (cpp_namet (" @most_derived" ).as_expr ());
677
628
678
629
code_blockt block;
679
630
@@ -683,11 +634,7 @@ void cpp_typecheckt::full_member_initialization(
683
634
if (!cpp_is_pod (symb.type ))
684
635
{
685
636
// default initializer
686
- irept name (ID_name);
687
- name.set (ID_identifier, symb.base_name );
688
-
689
- cpp_namet cppname;
690
- cppname.move_to_sub (name);
637
+ const cpp_namet cppname (symb.base_name );
691
638
692
639
codet mem_init (ID_member_initializer);
693
640
mem_init.set (ID_member, cppname);
@@ -723,8 +670,6 @@ void cpp_typecheckt::full_member_initialization(
723
670
{
724
671
irept initializer=*m_it;
725
672
726
- assert (initializer.get (ID_member)==ID_cpp_name);
727
-
728
673
const cpp_namet &member_name=
729
674
to_cpp_name (initializer.find (ID_member));
730
675
@@ -772,11 +717,7 @@ void cpp_typecheckt::full_member_initialization(
772
717
// Call the parent default constructor
773
718
if (!found)
774
719
{
775
- irept name (ID_name);
776
- name.set (ID_identifier, ctor_name);
777
-
778
- cpp_namet cppname;
779
- cppname.move_to_sub (name);
720
+ const cpp_namet cppname (ctor_name);
780
721
781
722
codet mem_init (ID_member_initializer);
782
723
mem_init.set (ID_member, cppname);
@@ -789,15 +730,7 @@ void cpp_typecheckt::full_member_initialization(
789
730
// ifthenelse only gets to have two operands (instead of three)
790
731
codet cond (ID_ifthenelse);
791
732
792
- {
793
- cpp_namet most_derived;
794
- most_derived.get_sub ().push_back (irept (ID_name));
795
- most_derived.get_sub ().back ().set (ID_identifier, " @most_derived" );
796
-
797
- exprt tmp;
798
- tmp.swap (most_derived);
799
- cond.move_to_operands (tmp);
800
- }
733
+ cond.copy_to_operands (cpp_namet (" @most_derived" ).as_expr ());
801
734
802
735
{
803
736
codet tmp (ID_member_initializer);
@@ -815,12 +748,7 @@ void cpp_typecheckt::full_member_initialization(
815
748
// Take care of virtual tables
816
749
if (c.get_bool (ID_is_vtptr))
817
750
{
818
- exprt name (ID_name);
819
- name.set (ID_identifier, c.get_base_name ());
820
- name.add_source_location () = c.source_location ();
821
-
822
- cpp_namet cppname;
823
- cppname.move_to_sub (name);
751
+ const cpp_namet cppname (c.get_base_name (), c.source_location ());
824
752
825
753
const symbolt &virtual_table_symbol_type =
826
754
lookup (c.type ().subtype ().get (ID_identifier));
@@ -892,11 +820,7 @@ void cpp_typecheckt::full_member_initialization(
892
820
// then its default constructor is called.
893
821
if (!found && !cpp_is_pod (c.type ()))
894
822
{
895
- irept name (ID_name);
896
- name.set (ID_identifier, mem_name);
897
-
898
- cpp_namet cppname;
899
- cppname.move_to_sub (name);
823
+ cpp_namet cppname (mem_name);
900
824
901
825
codet mem_init (ID_member_initializer);
902
826
mem_init.set (ID_member, cppname);
0 commit comments