100 lines
3.7 KiB
C++
100 lines
3.7 KiB
C++
//------------------------------------------------------------------------
|
|
// 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
|