Merge pull request #2595 from thk123/doc/use-can-cast

Add guidelines for using irepts in the code base
This commit is contained in:
Chris Smowton 2018-07-24 17:44:24 +01:00 committed by GitHub
commit 05bebb7456
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 6 additions and 0 deletions

View File

@ -197,6 +197,12 @@ Formatting is enforced using clang-format. For more information about this, see
which safely manages the pointer. As such, `new` should only be used in
constructors, and `delete` in destructors. Never use `malloc` or `free`.
# CProver conventions
- Avoid if at all possible using irept methods like `get(ID_name)`, instead cast
to a derived type (e.g. `class_typet`) and use the wrapper method `get_name`
- Use `can_cast_type`/`can_cast_expr` instead of directly checking the `id()`
of an `irept`.
# Architecture-specific code
- Avoid if possible.
- Use `__LINUX__`, `__MACH__`, and `_WIN32` to distinguish the architectures.