147 lines
4.1 KiB
C++
147 lines
4.1 KiB
C++
//-----------------------------------------------------------------------------
|
|
// Project : VST SDK
|
|
//
|
|
// Category : Helpers
|
|
// Filename : public.sdk/source/vst/utility/processcontextrequirements.h
|
|
// Created by : Steinberg, 12/2019
|
|
// Description : Helper class to work with IProcessContextRequirements
|
|
//
|
|
//-----------------------------------------------------------------------------
|
|
// 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/vst/ivstaudioprocessor.h"
|
|
|
|
//------------------------------------------------------------------------
|
|
namespace Steinberg {
|
|
namespace Vst {
|
|
|
|
//------------------------------------------------------------------------
|
|
class ProcessContextRequirements
|
|
{
|
|
private:
|
|
using Self = ProcessContextRequirements;
|
|
|
|
public:
|
|
ProcessContextRequirements (uint32 inFlags = 0) : flags (inFlags) {}
|
|
|
|
bool wantsNone () const { return flags == 0; }
|
|
bool wantsSystemTime () const
|
|
{
|
|
return (flags & IProcessContextRequirements::kNeedSystemTime) != 0;
|
|
}
|
|
bool wantsContinousTimeSamples () const
|
|
{
|
|
return (flags & IProcessContextRequirements::kNeedContinousTimeSamples) != 0;
|
|
}
|
|
bool wantsProjectTimeMusic () const
|
|
{
|
|
return (flags & IProcessContextRequirements::kNeedProjectTimeMusic) != 0;
|
|
}
|
|
bool wantsBarPositionMusic () const
|
|
{
|
|
return (flags & IProcessContextRequirements::kNeedBarPositionMusic) != 0;
|
|
}
|
|
bool wantsCycleMusic () const
|
|
{
|
|
return (flags & IProcessContextRequirements::kNeedCycleMusic) != 0;
|
|
}
|
|
bool wantsSamplesToNextClock () const
|
|
{
|
|
return (flags & IProcessContextRequirements::kNeedSamplesToNextClock) != 0;
|
|
}
|
|
bool wantsTempo () const { return (flags & IProcessContextRequirements::kNeedTempo) != 0; }
|
|
bool wantsTimeSignature () const
|
|
{
|
|
return (flags & IProcessContextRequirements::kNeedTimeSignature) != 0;
|
|
}
|
|
bool wantsChord () const { return (flags & IProcessContextRequirements::kNeedChord) != 0; }
|
|
bool wantsFrameRate () const
|
|
{
|
|
return (flags & IProcessContextRequirements::kNeedFrameRate) != 0;
|
|
}
|
|
bool wantsTransportState () const
|
|
{
|
|
return (flags & IProcessContextRequirements::kNeedTransportState) != 0;
|
|
}
|
|
|
|
/** set SystemTime as requested */
|
|
Self& needSystemTime ()
|
|
{
|
|
flags |= IProcessContextRequirements::kNeedSystemTime;
|
|
return *this;
|
|
}
|
|
/** set ContinousTimeSamples as requested */
|
|
Self& needContinousTimeSamples ()
|
|
{
|
|
flags |= IProcessContextRequirements::kNeedContinousTimeSamples;
|
|
return *this;
|
|
}
|
|
/** set ProjectTimeMusic as requested */
|
|
Self& needProjectTimeMusic ()
|
|
{
|
|
flags |= IProcessContextRequirements::kNeedProjectTimeMusic;
|
|
return *this;
|
|
}
|
|
/** set BarPositionMusic as needed */
|
|
Self& needBarPositionMusic ()
|
|
{
|
|
flags |= IProcessContextRequirements::kNeedBarPositionMusic;
|
|
return *this;
|
|
}
|
|
/** set CycleMusic as needed */
|
|
Self& needCycleMusic ()
|
|
{
|
|
flags |= IProcessContextRequirements::kNeedCycleMusic;
|
|
return *this;
|
|
}
|
|
/** set SamplesToNextClock as needed */
|
|
Self& needSamplesToNextClock ()
|
|
{
|
|
flags |= IProcessContextRequirements::kNeedSamplesToNextClock;
|
|
return *this;
|
|
}
|
|
/** set Tempo as needed */
|
|
Self& needTempo ()
|
|
{
|
|
flags |= IProcessContextRequirements::kNeedTempo;
|
|
return *this;
|
|
}
|
|
/** set TimeSignature as needed */
|
|
Self& needTimeSignature ()
|
|
{
|
|
flags |= IProcessContextRequirements::kNeedTimeSignature;
|
|
return *this;
|
|
}
|
|
/** set Chord as needed */
|
|
Self& needChord ()
|
|
{
|
|
flags |= IProcessContextRequirements::kNeedChord;
|
|
return *this;
|
|
}
|
|
/** set FrameRate as needed */
|
|
Self& needFrameRate ()
|
|
{
|
|
flags |= IProcessContextRequirements::kNeedFrameRate;
|
|
return *this;
|
|
}
|
|
/** set TransportState as needed */
|
|
Self& needTransportState ()
|
|
{
|
|
flags |= IProcessContextRequirements::kNeedTransportState;
|
|
return *this;
|
|
}
|
|
|
|
uint32 flags {0};
|
|
};
|
|
|
|
//------------------------------------------------------------------------
|
|
} // Vst
|
|
} // Steinberg
|