Skip to content

Commit d8f8cf3

Browse files
Add pointer_offset_exprt
1 parent c842c01 commit d8f8cf3

File tree

1 file changed

+26
-0
lines changed

1 file changed

+26
-0
lines changed

src/util/std_expr.h

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ Author: Daniel Kroening, [email protected]
1313
/// \file util/std_expr.h
1414
/// API to expression classes
1515

16+
#include "c_types.h"
1617
#include "expr_cast.h"
1718
#include "invariant.h"
1819
#include "mathematical_types.h"
@@ -4750,4 +4751,29 @@ inline void validate_expr(const popcount_exprt &value)
47504751
validate_operands(value, 1, "popcount must have one operand");
47514752
}
47524753

4754+
class pointer_offset_exprt : public unary_exprt
4755+
{
4756+
explicit pointer_offset_exprt(exprt pointer)
4757+
: unary_exprt(ID_pointer_offset, pointer, signed_size_type())
4758+
{
4759+
PRECONDITION(pointer.id() == ID_pointer);
4760+
}
4761+
};
4762+
4763+
inline pointer_offset_exprt &to_pointer_offset_expr(exprt &expr)
4764+
{
4765+
PRECONDITION(expr.id() == ID_pointer_offset);
4766+
PRECONDITION(expr.operands().size() == 1);
4767+
PRECONDITION(expr.op0().id() == ID_pointer);
4768+
return static_cast<pointer_offset_exprt &>(expr);
4769+
}
4770+
4771+
inline const pointer_offset_exprt &to_pointer_offset_expr(const exprt &expr)
4772+
{
4773+
PRECONDITION(expr.id() == ID_pointer_offset);
4774+
PRECONDITION(expr.operands().size() == 1);
4775+
PRECONDITION(expr.op0().id() == ID_pointer);
4776+
return static_cast<const pointer_offset_exprt &>(expr);
4777+
}
4778+
47534779
#endif // CPROVER_UTIL_STD_EXPR_H

0 commit comments

Comments
 (0)