PWvStream is a smart pointer to an IWvStream object.
It is designed for maximum ABI-stability. Even though individual WvStream-derived classes might change their size and object layout, if you create, destroy, and access them using PWvStream and IWvStream, you should be safe.
Note that this class is entirely inlined. PWvStream's object layout may change at any time, so you shouldn't pass it around between modules; pass around IWvStream objects instead (perhaps from PWvStream::addRef()). That way people using two different versions of PWvStream will still be able to interoperate.
FIXME: PWvStream is incomplete, so it does not yet give the required level of ABI stability. Things to do:
- Remove all references to classes, using only interfaces. That means no WvStream or WvStreamClone, only IWvStream. IWvStream might have to change (or introduce a new IWvBufStream) to make this work.
- Definitely don't rely on C++ RTTI here.
Definition at line 36 of file debian/libwvstreams-dev/usr/include/wvstreams/pwvstream.h.