[fdo-internals] Using FDO collections without inheritance

Mateusz Loskot mateusz at loskot.net
Mon Mar 5 22:03:03 EST 2007


Is there any collection in FDO that can be used without
creating a new type of specialized collection, by inheriting
from base class like FdoCollection?

I'd like to achieve something similar like std::list<T>
but parametrized with FDO type (based on FdoIDisposable).

Here is small snipped presenting the idea I'm asking about.
It tries to:
- create new collection using read-write proxy based on FdoCollection
- wrap it with FdoReadOnlyCollection
- return read-only collection of items back to user

Certainly, the snipped below does not even compile,
because MyCollection is still an abstract type due to the fact that
FdoIDisposable::Dispose() interface is not implemented.

I'm just trying to present what I'd like to achieve from a client
point of view.

class MyItem : public FdoIDisposable;

typedef FdoReadOnlyCollection
    FdoCollection<MyItem, FdoException>,

MyCollection* GetMyItems() const
    typedef FdoCollection<MyItem, FdoException> MyCollectionBase;

    FdoPtr<MyCollectionBase> items = new MyCollectionBase();

    FdoPtr<MyItem> c1(new Myitem(L"item1"));

    FdoPtr<MyItem> c2(new Myitem(L"item2"));

    FdoPtr<MyCollection> roItems(new MyCollection());

    return roItems.p;

I would not like to create new collections by inheritance from
FdoCollection and next from FdoReadOnlyCollection, in order to fulfill
requirements of Dispose() implementation, etc.

Is this possible?

Mateusz Loskot

More information about the fdo-internals mailing list