// -*- C++ -*- namespace Hurricane { /*! \class PrivateProperty * \brief PrivateProperty description (\b API) * * \section secPrivatePropertyIntro Introduction * * Private properties are owned by only one data base object. * * When a new property is created, it is not yet assigned to any * particular object. It becomes effectively the property of an * object after the call dbo-\>Put(property). The * property then receives a message OnCapturedBy whose * argument is the additional owner. From that time onwards, * this object becomes partially responsible of the future of * the property. * * What can happen then ? * * If the property is destroyed : The property, being private, * informs its owner (if any) of its deletion which detaches it * from its property list (if the object is a quark and if this * was the last property owned, it has no more reason to exist * and automatically deletes itself). * * If a property of same name already exist : Two properties * with the same name can't cohabit, the older one is released * by the object which receives the message OnReleasedBy * from that old property and proceeds as required according to * the type of property. * * If the property changes of owner : This one is first captured * by the new owner and the released by the older owner (the * reason why messages are called upon in this order will be * explained later). * * If the property owner is destroyed : All properties owned by * the object are then released. The future of each of those * properties is fully driven by their respective messages * OnReleasedBy. */ /*! \typedef typedef PrivateProperty::Inherit Property; * Useful for calling upon methods of the base class without * knowing it. */ /*! \section secPrivatePropertyDestruction Destruction * * The property has an owner, this one is informed of the * property deletion and detaches it from its property list. If * the object is a quark and if this was the last property owned * it automatically deletes itself. * * \remark Once the property is attached to an object this one becomes * responsible of its automatic destruction. When a property * changes its owner, the old owner delegates this task to the * new one. On the other hand, a property which has never been * attached to an owner will never be deleted automatically. */ /*! \name Accessors */ // \{ /*! \function DBo* PrivateProperty::getOwner() const; * \Return the current owner of the property (or NULL if at not been * assigned yet). */ // \} } // End of Hurricane namespace.