Skip to content

A basic pre-condition/post-condition checks implementation while waiting for C++17 contracts.

License

Notifications You must be signed in to change notification settings

risuwwv/Contracts

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 

Repository files navigation

Contracts

A basic pre-condition/post-condition checks implementation while waiting for C++17 contracts...

I had the idea to try to implement this while reading "Imperfect C++: Practical Solutions for Real-Life Programming". The implementation uses RAII and macros. The checks are off by default, see command below for enabling them.

PRE_CONDITION(test) checks that its parameter is true at the point of call, aborts on failure
POST_CONDITION(test) checks that its parameter is true at the end of the scope containing the call, aborts on failure
VALIDITY_CHECK(obj) checks obj.is_valid() at the point of call, aborts on failure
INVARIANT_CHECK(obj) checks obj.is_valid() at the point of call and at the end of the scope containing the call, aborts on failure

See src/test.cpp for an example or src/contracts.h for the implementation.

Built on windows 10, with clang 3.7.0 and gcc 5.1.0.

Default compiler is clang and default compilation mode is release.

Example of command: 'make mode=release compiler=gcc checks=true' Run 'make help' for details.

About

A basic pre-condition/post-condition checks implementation while waiting for C++17 contracts.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published