Boost logo

Boost :

From: Yariv Tal (yariv_tal2003_at_[hidden])
Date: 2005-02-23 09:05:14


You may want to take a look at a small DbC library I'm working on called
ensure++.

You can find it on sourceforge, at http://sourceforge.net/projects/ensure/

It allows you to write the post() part conditions at the _beginning_ of your
method, near the pre conditions.
Quick example: (note that I already have a plan on how to remove the need
for the CONDITIONS, BODY & ENDBODY macros. Software is a constant process of
improvement :) )

void push_back(const T& x) {
      CONDITIONS
            ENSURE(!post(&vector_contract::empty, this));
            ENSURE(post(&vector_contract::size, this) == size() + 1);
             // let's ensure (some of) the strong exception guarenttee -
             //no change in size in case of exception
            EXCEPTIONAL(post(&vector_contract::size, this) == size());
      BODY
            inherited::push_back(x);
      ENDBODY
}

void pop_back() {

      CONDITIONS
            REQUIRE(!empty());
            ENSURE(post(&vector_contract::size, this) == size() - 1);
             // let's ensure (some of) the strong exception guarenttee -
             //no change in size in case of exception
            EXCEPTIONAL(post(&vector_contract::size, this) == size());
      BODY
            inherited::pop_back();
      ENDBODY
}

[I'm writing this example on the fly - so don't kill me if it doesn't quite
compile after you download the lib]

It's not documented (yet) but you can see a test/sample file under the vc7.1
directory.

Yariv Tal

"christopher diggins" <cdiggins_at_[hidden]> wrote in message
news:000501c51979$cc1d32d0$d9958242_at_heronnest...
> I am writing a set of contract verification classes for the various STL
> containers. These are wrapper classes which verify DbC style contracts
(i.e.
> preconditions, postconditions and invariants). I have already written one
> for std::vector you can see it at: http://www.ootl.org/pwc/
>
> Is anyone interested in seeing this submitted Boost, if I extend it to
cover
> the basic collections? e.g. list, map, set, multimap, multiset, deque,
> queue, stack?
>
> Thanks,
>
> Christopher Diggins
> Object Oriented Template Library (OOTL)
> http://www.ootl.org
>
> _______________________________________________
> Unsubscribe & other changes:
http://lists.boost.org/mailman/listinfo.cgi/boost
>


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk