|
- //------------------------------------------------------------------------
- // Project : Steinberg Module Architecture SDK
- //
- // Category : Basic Host Service Interfaces
- // Filename : pluginterfaces/base/iupdatehandler.h
- // Created by : Steinberg, 01/2004
- // Description : Update handling
- //
- //-----------------------------------------------------------------------------
- // This file is part of a Steinberg SDK. It is subject to the license terms
- // in the LICENSE file found in the top-level directory of this distribution
- // and at www.steinberg.net/sdklicenses.
- // No part of the SDK, including this file, may be copied, modified, propagated,
- // or distributed except according to the terms contained in the LICENSE file.
- //-----------------------------------------------------------------------------
-
- #pragma once
-
- #include "pluginterfaces/base/funknown.h"
-
- namespace Steinberg {
-
- class IDependent;
-
- //------------------------------------------------------------------------
- /** Host implements dependency handling for plugins.
- [host imp] \n
- [get this interface from IHostClasses] \n
- [released N3.1] \n
-
- - Install/Remove change notifications
- - Trigger updates when an object has changed
-
- Can be used between host-objects and the Plug-In or
- inside the Plug-In to handle internal updates!
-
- \see IDependent
- \ingroup frameworkHostClasses
- */
- //------------------------------------------------------------------------
- class IUpdateHandler: public FUnknown
- {
- public:
- //------------------------------------------------------------------------
- /** Install update notification for given object. It is essential to
- remove all dependencies again using 'removeDependent'! Dependencies
- are not removed automatically when the 'object' is released!
- \param object : interface to object that sends change notifications
- \param dependent : interface through which the update is passed */
- virtual tresult PLUGIN_API addDependent (FUnknown* object, IDependent* dependent) = 0;
-
- /** Remove a previously installed dependency.*/
- virtual tresult PLUGIN_API removeDependent (FUnknown* object, IDependent* dependent) = 0;
-
- /** Inform all dependents, that object has changed.
- \param object is the object that has changed
- \param message is a value of enum IDependent::ChangeMessage, usually IDependent::kChanged - can be
- a private message as well (only known to sender and dependent)*/
- virtual tresult PLUGIN_API triggerUpdates (FUnknown* object, int32 message) = 0;
-
- /** Same as triggerUpdates, but delivered in idle (usefull to collect updates).*/
- virtual tresult PLUGIN_API deferUpdates (FUnknown* object, int32 message) = 0;
- static const FUID iid;
- };
-
- DECLARE_CLASS_IID (IUpdateHandler, 0xF5246D56, 0x86544d60, 0xB026AFB5, 0x7B697B37)
-
- //------------------------------------------------------------------------
- /** A dependent will get notified about changes of a model.
- [plug imp]
- - notify changes of a model
-
- \see IUpdateHandler
- \ingroup frameworkHostClasses
- */
- //------------------------------------------------------------------------
- class IDependent: public FUnknown
- {
- public:
- //------------------------------------------------------------------------
- /** Inform the dependent, that the passed FUnknown has changed. */
- virtual void PLUGIN_API update (FUnknown* changedUnknown, int32 message) = 0;
-
- enum ChangeMessage
- {
- kWillChange,
- kChanged,
- kDestroyed,
- kWillDestroy,
-
- kStdChangeMessageLast = kWillDestroy
- };
- //------------------------------------------------------------------------
- static const FUID iid;
- };
-
- DECLARE_CLASS_IID (IDependent, 0xF52B7AAE, 0xDE72416d, 0x8AF18ACE, 0x9DD7BD5E)
-
- //------------------------------------------------------------------------
- } // namespace Steinberg
|