@@ -2462,13 +2462,13 @@ inline verilog_udpt &to_verilog_udp(irept &irep)
24622462}
24632463
24642464// / size'(expression)
2465- class verilog_size_cast_exprt : public binary_exprt
2465+ class verilog_explicit_size_cast_exprt : public binary_exprt
24662466{
24672467public:
2468- verilog_size_cast_exprt (exprt __size, exprt __op, typet __type)
2468+ verilog_explicit_size_cast_exprt (exprt __size, exprt __op, typet __type)
24692469 : binary_exprt(
24702470 std::move (__size),
2471- ID_verilog_size_cast ,
2471+ ID_verilog_explicit_size_cast ,
24722472 std::move(__op),
24732473 std::move(__type))
24742474 {
@@ -2501,24 +2501,97 @@ class verilog_size_cast_exprt : public binary_exprt
25012501 }
25022502};
25032503
2504- inline const verilog_size_cast_exprt &
2505- to_verilog_size_cast_expr (const exprt &expr)
2504+ inline const verilog_explicit_size_cast_exprt &
2505+ to_verilog_explicit_size_cast_expr (const exprt &expr)
25062506{
2507- verilog_size_cast_exprt ::check (expr);
2508- return static_cast <const verilog_size_cast_exprt &>(expr);
2507+ verilog_explicit_size_cast_exprt ::check (expr);
2508+ return static_cast <const verilog_explicit_size_cast_exprt &>(expr);
25092509}
25102510
2511- inline verilog_size_cast_exprt &to_verilog_size_cast_expr (exprt &expr)
2511+ inline verilog_explicit_size_cast_exprt &
2512+ to_verilog_explicit_size_cast_expr (exprt &expr)
25122513{
2513- verilog_size_cast_exprt ::check (expr);
2514- return static_cast <verilog_size_cast_exprt &>(expr);
2514+ verilog_explicit_size_cast_exprt ::check (expr);
2515+ return static_cast <verilog_explicit_size_cast_exprt &>(expr);
25152516}
25162517
2517- class verilog_explicit_cast_exprt : public unary_exprt
2518+ class verilog_explicit_const_cast_exprt : public unary_exprt
25182519{
25192520public:
2520- verilog_explicit_cast_exprt (exprt __op, typet __type)
2521- : unary_exprt(ID_verilog_explicit_cast, std::move(__op), std::move(__type))
2521+ verilog_explicit_const_cast_exprt (exprt __op, typet __type)
2522+ : unary_exprt(
2523+ ID_verilog_explicit_const_cast,
2524+ std::move (__op),
2525+ std::move(__type))
2526+ {
2527+ }
2528+
2529+ exprt lower () const
2530+ {
2531+ return typecast_exprt{op (), type ()};
2532+ }
2533+ };
2534+
2535+ inline const verilog_explicit_const_cast_exprt &
2536+ to_verilog_explicit_const_cast_expr (const exprt &expr)
2537+ {
2538+ verilog_explicit_const_cast_exprt::check (expr);
2539+ return static_cast <const verilog_explicit_const_cast_exprt &>(expr);
2540+ }
2541+
2542+ inline verilog_explicit_const_cast_exprt &
2543+ to_verilog_explicit_const_cast_expr (exprt &expr)
2544+ {
2545+ verilog_explicit_const_cast_exprt::check (expr);
2546+ return static_cast <verilog_explicit_const_cast_exprt &>(expr);
2547+ }
2548+
2549+ class verilog_explicit_signing_cast_exprt : public unary_exprt
2550+ {
2551+ public:
2552+ verilog_explicit_signing_cast_exprt (exprt __op, typet __type)
2553+ : unary_exprt(
2554+ ID_verilog_explicit_signing_cast,
2555+ std::move (__op),
2556+ std::move(__type))
2557+ {
2558+ }
2559+
2560+ bool is_signed () const
2561+ {
2562+ auto &dest_type = type ();
2563+ return dest_type.id () == ID_signedbv ||
2564+ dest_type.id () == ID_verilog_signedbv;
2565+ }
2566+
2567+ exprt lower () const
2568+ {
2569+ return typecast_exprt{op (), type ()};
2570+ }
2571+ };
2572+
2573+ inline const verilog_explicit_signing_cast_exprt &
2574+ to_verilog_explicit_signing_cast_expr (const exprt &expr)
2575+ {
2576+ verilog_explicit_signing_cast_exprt::check (expr);
2577+ return static_cast <const verilog_explicit_signing_cast_exprt &>(expr);
2578+ }
2579+
2580+ inline verilog_explicit_signing_cast_exprt &
2581+ to_verilog_explicit_signing_cast_expr (exprt &expr)
2582+ {
2583+ verilog_explicit_signing_cast_exprt::check (expr);
2584+ return static_cast <verilog_explicit_signing_cast_exprt &>(expr);
2585+ }
2586+
2587+ class verilog_explicit_type_cast_exprt : public unary_exprt
2588+ {
2589+ public:
2590+ verilog_explicit_type_cast_exprt (exprt __op, typet __type)
2591+ : unary_exprt(
2592+ ID_verilog_explicit_type_cast,
2593+ std::move (__op),
2594+ std::move(__type))
25222595 {
25232596 }
25242597
@@ -2528,17 +2601,18 @@ class verilog_explicit_cast_exprt : public unary_exprt
25282601 }
25292602};
25302603
2531- inline const verilog_explicit_cast_exprt &
2532- to_verilog_explicit_cast_expr (const exprt &expr)
2604+ inline const verilog_explicit_type_cast_exprt &
2605+ to_verilog_explicit_type_cast_expr (const exprt &expr)
25332606{
2534- verilog_explicit_cast_exprt ::check (expr);
2535- return static_cast <const verilog_explicit_cast_exprt &>(expr);
2607+ verilog_explicit_type_cast_exprt ::check (expr);
2608+ return static_cast <const verilog_explicit_type_cast_exprt &>(expr);
25362609}
25372610
2538- inline verilog_explicit_cast_exprt &to_verilog_explicit_cast_expr (exprt &expr)
2611+ inline verilog_explicit_type_cast_exprt &
2612+ to_verilog_explicit_type_cast_expr (exprt &expr)
25392613{
2540- verilog_explicit_cast_exprt ::check (expr);
2541- return static_cast <verilog_explicit_cast_exprt &>(expr);
2614+ verilog_explicit_type_cast_exprt ::check (expr);
2615+ return static_cast <verilog_explicit_type_cast_exprt &>(expr);
25422616}
25432617
25442618class verilog_implicit_typecast_exprt : public unary_exprt
0 commit comments