Interface Technology Basics VST 3.7 SDK for developing VST plug-in

Namespaces | Classes | Typedefs | Enumerations | Functions | Variables
Steinberg Namespace Reference

This header provides classes for working with FUnknown. More...

## Namespaces
namespace | FUnknownImpl
namespace | FUnknownPrivate
namespace | GeoConstants
namespace | KeyCodes
| Utility functions to handle key-codes.
namespace | Linux
namespace | U
| Shortcut namespace for implementing FUnknown based objects.

## Classes
class | ConstStringTable
| Constant unicode string table. More...
struct | FReleaser
| Release an interface using automatic object (obsolete). More...
class | FUID
| Handling 16 Byte Globally Unique Identifiers. More...
class | FUnknown
| The basic interface of all interfaces. More...
class | FUnknownPtr
| FUnknownPtr - automatic interface conversion and smart pointer in one. More...
class | FVariant
| A Value of variable type. More...
class | IAttributes
| Object Data Archive Interface. More...
class | IAttributes2
| Extended access to Attributes; supports Attribute retrieval via iteration. More...
class | IBStream
| Base class for streams. More...
class | ICloneable
| Interface allowing an object to be copied. More...
class | IDependent
| A dependent will get notified about changes of a model. More...
class | IErrorContext
| Interface for error handling. More...
class | IPersistent
| Persistent Object Interface. More...
class | IPlugFrame
| Callback interface passed to IPlugView. More...
class | IPluginBase
| Basic interface to a plug-in component: IPluginBase. More...
class | IPluginCompatibility
| optional interface to query the compatibility of the plug-ins classes More...
class | IPluginFactory
| Class factory that any plug-in defines for creating class instances: IPluginFactory. More...
class | IPluginFactory2
| Version 2 of class factory supporting PClassInfo2: IPluginFactory2. More...
class | IPluginFactory3
| Version 3 of class factory supporting PClassInfoW: IPluginFactory3. More...
class | IPlugView
| Plug-in definition of a view. More...
class | IPlugViewContentScaleSupport
| Plug-in view content scale support. More...
class | IPtr
| IPtr - Smart pointer template class. More...
class | ISizeableStream
| Stream with a size. More...
class | IString
| Interface to a string of variable size and encoding. More...
class | IStringResult
| Interface to return an ascii string of variable size. More...
class | IUpdateHandler
| Host implements dependency handling for plugins. More...
struct | KeyCode
| Simple data-struct representing a key-stroke on the keyboard. More...
class | OPtr
| OPtr - "owning" smart pointer used for newly created FObjects. More...
struct | PClassInfo
| Basic Information about a class provided by the plug-in. More...
struct | PClassInfo2
| Version 2 of Basic Information about a class provided by the plug-in. More...
struct | PClassInfoW
| Unicode Version of Basic Information about a class provided by the plug-in. More...
struct | PFactoryInfo
| Basic Information about the class factory of the plug-in. More...
class | UString
| UTF-16 string class without buffer management. More...
class | UStringBuffer
| UTF-16 string with fixed buffer size. More...
struct | ViewRect
| Graphical rectangle structure. More...

## Typedefs
typedef char | int8
typedef uint8_t | uint8
typedef unsigned char | uchar
typedef int16_t | int16
typedef uint16_t | uint16
typedef int32_t | int32
typedef uint32_t | uint32
typedef int64_t | int64
typedef uint64_t | uint64
typedef int64 | TSize
typedef int32 | tresult
typedef uint64 | TPtrInt
typedef uint8 | TBool
typedef char | char8
typedef char16_t | char16
typedef char16 | char
typedef const char8 * | CStringA
typedef const char16 * | CStringW
typedef const char * | CString
typedef const char8 * | FIDString
typedef int32 | UCoord
| Coordinates. More...
typedef int64 | LARGE_INT
typedef char | TUID[16]
| plain UID type More...
typedef FIDString | IAttrID
typedef uint32 | ColorSpec
typedef uint8 | ColorComponent
typedef ColorSpec | UColorSpec
typedef ColorComponent | UColorComponent
typedef UStringBuffer< 128 > | UString128
| 128 character UTF-16 string More...
typedef UStringBuffer< 256 > | UString256
| 256 character UTF-16 string More...

## Enumerations
enum | { kNoInterface = -1 , kResultOk , kResultTrue = kResultOk , kResultFalse , kInvalidArgument , kNotImplemented , kInternalError , kNotInitialized , kOutOfMemory }
enum | Direction { kNorth , kNorthEast , kEast , kSouthEast , kSouth , kSouthWest , kWest , kNorthWest , kNoDirection , kNumberOfDirections }
enum | Orientation { kHorizontal , kVertical , kNumberOfOrientations }
enum | VirtualKeyCodes { KEY_BACK = 1 , KEY_TAB , KEY_CLEAR , KEY_RETURN , KEY_PAUSE , KEY_ESCAPE , KEY_SPACE , KEY_NEXT , KEY_END , KEY_HOME , KEY_LEFT , KEY_UP , KEY_RIGHT , KEY_DOWN , KEY_PAGEUP , KEY_PAGEDOWN , KEY_SELECT , KEY_PRINT , KEY_ENTER , KEY_SNAPSHOT , KEY_INSERT , KEY_DELETE , KEY_HELP , KEY_NUMPAD0 , KEY_NUMPAD1 , KEY_NUMPAD2 , KEY_NUMPAD3 , KEY_NUMPAD4 , KEY_NUMPAD5 , KEY_NUMPAD6 , KEY_NUMPAD7 , KEY_NUMPAD8 , KEY_NUMPAD9 , KEY_MULTIPLY , KEY_ADD , KEY_SEPARATOR , KEY_SUBTRACT , KEY_DECIMAL , KEY_DIVIDE , KEY_F1 , KEY_F2 , KEY_F3 , KEY_F4 , KEY_F5 , KEY_F6 , KEY_F7 , KEY_F8 , KEY_F9 , KEY_F10 , KEY_F11 , KEY_F12 , KEY_NUMLOCK , KEY_SCROLL , KEY_SHIFT , KEY_CONTROL , KEY_ALT , KEY_EQUALS , KEY_CONTEXTMENU , KEY_MEDIA_PLAY , KEY_MEDIA_STOP , KEY_MEDIA_PREV , KEY_MEDIA_NEXT , KEY_VOLUME_UP , KEY_VOLUME_DOWN , KEY_F13 , KEY_F14 , KEY_F15 , KEY_F16 , KEY_F17 , KEY_F18 , KEY_F19 , KEY_F20 , KEY_F21 , KEY_F22 , KEY_F23 , KEY_F24 , KEY_SUPER , VKEY_FIRST_CODE = KEY_BACK , VKEY_LAST_CODE = KEY_SUPER , VKEY_FIRST_ASCII = 128 }
| Virtual Key Codes. More...
enum | KeyModifier { kShiftKey = 1 << 0 , kAlternateKey = 1 << 1 , kCommandKey = 1 << 2 , kControlKey = 1 << 3 }
| OS-independent enumeration of virtual modifier-codes. More...
enum | StandardColor { kBlack = 0 , kWhite , kGray5 , kGray10 , kGray20 , kGray30 , kGray40 , kGray50 , kGray60 , kGray70 , kGray80 , kGray90 , kRed , kLtRed , kDkRed , kGreen , kLtGreen , kDkGreen , kBlue , kLtBlue , kDkBlue , kMagenta , kLtMagenta , kDkMagenta , kYellow , kLtYellow , kDkYellow , kOrange , kLtOrange , kDkOrange , kGold , kBlack50 , kBlack70 , kNumStandardColors , kLtGray = kGray20 , kGray = kGray50 , kDkGray = kGray70 }

## Functions
template<class T >
int32 | _tstrlen (const T *wcs)
int32 | tstrlen (const char *str)
int32 | strlen8 (const char8 *str)
int32 | strlen16 (const char16 *str)
template<class T >
int32 | _tstrcmp (const T *src, const T *dst)
int32 | tstrcmp (const char *src, const char *dst)
int32 | strcmp8 (const char8 *src, const char8 *dst)
int32 | strcmp16 (const char16 *src, const char16 *dst)
template<typename T >
int32 | strcmpT (const T *first, const T *last)
template<>
int32 | strcmpT< char8 > (const char8 *first, const char8 *last)
template<>
int32 | strcmpT< char16 > (const char16 *first, const char16 *last)
template<class T >
int32 | _tstrncmp (const T *first, const T *last, uint32 count)
int32 | tstrncmp (const char *first, const char *last, uint32 count)
int32 | strncmp8 (const char8 *first, const char8 *last, uint32 count)
int32 | strncmp16 (const char16 *first, const char16 *last, uint32 count)
template<typename T >
int32 | strncmpT (const T *first, const T *last, uint32 count)
template<>
int32 | strncmpT< char8 > (const char8 *first, const char8 *last, uint32 count)
template<>
int32 | strncmpT< char16 > (const char16 *first, const char16 *last, uint32 count)
template<class T >
T * | _tstrcpy (T *dst, const T *src)
char * | tstrcpy (char *dst, const char *src)
char8 * | strcpy8 (char8 *dst, const char8 *src)
char16 * | strcpy16 (char16 *dst, const char16 *src)
template<class T >
T * | _tstrncpy (T *dest, const T *source, uint32 count)
char * | tstrncpy (char *dest, const char *source, uint32 count)
char8 * | strncpy8 (char8 *dest, const char8 *source, uint32 count)
char16 * | strncpy16 (char16 *dest, const char16 *source, uint32 count)
template<class T >
T * | _tstrcat (T *dst, const T *src)
char * | tstrcat (char *dst, const char *src)
char8 * | strcat8 (char8 *dst, const char8 *src)
char16 * | strcat16 (char16 *dst, const char16 *src)
void | str8ToStr16 (char16 *dst, const char8 *src, int32 n=-1)
bool | FIDStringsEqual (FIDString id1, FIDString id2)
bool | strEmpty (const char *str)
bool | str8Empty (const char8 *str)
bool | str16Empty (const char16 *str)
template<typename T >
const TUID & | getTUID ()
template<class T >
const T & | Min (const T &a, const T &b)
template<class T >
const T & | Max (const T &a, const T &b)
template<class T >
T | Abs (const T &value)
template<class T >
T | Sign (const T &value)
template<class T >
T | Bound (T minval, T maxval, T x)
template<class T >
void | Swap (T &t1, T &t2)
template<class T >
bool | IsApproximateEqual (T t1, T t2, T epsilon)
template<class T >
T | ToNormalized (const T &value, const int32 numSteps)
template<class T >
int32 | FromNormalized (const T &norm, const int32 numSteps)
bool | operator== (const FVariant &v1, const FVariant &v2)
bool | operator!= (const FVariant &v1, const FVariant &v2)
SMTG_CONSTEXPR14 char | VirtualKeyCodeToChar (uint8 vKey)
SMTG_CONSTEXPR14 uint8 | CharToVirtualKeyCode (char character)
template<class I >
IPtr< I > | owned (I *p)
| Assigning newly created object to an IPtr. More...
template<class I >
IPtr< I > | shared (I *p)
| Assigning shared object to an IPtr. More...
SMTG_CONSTEXPR ColorSpec | MakeColorSpec (ColorComponent r, ColorComponent g, ColorComponent b)
| Create color specifier with RGB values (alpha is opaque) More...
SMTG_CONSTEXPR ColorSpec | MakeColorSpec (ColorComponent r, ColorComponent g, ColorComponent b, ColorComponent a)
| Create color specifier with RGBA values More...
SMTG_CONSTEXPR ColorComponent | GetBlue (ColorSpec cs)
SMTG_CONSTEXPR ColorComponent | GetGreen (ColorSpec cs)
SMTG_CONSTEXPR ColorComponent | GetRed (ColorSpec cs)
SMTG_CONSTEXPR ColorComponent | GetAlpha (ColorSpec cs)
void | SetBlue (ColorSpec &argb, ColorComponent b)
void | SetGreen (ColorSpec &argb, ColorComponent g)
void | SetRed (ColorSpec &argb, ColorComponent r)
void | SetAlpha (ColorSpec &argb, ColorComponent a)
double | NormalizeColorComponent (ColorComponent c)
| Normalized color components. More...
ColorComponent | DenormalizeColorComponent (double c)
void | SetAlphaNorm (ColorSpec &argb, double a)
double | GetAlphaNorm (ColorSpec cs)
double | NormalizeAlpha (uint8 alpha)
ColorComponent | DenormalizeAlpha (double alphaNorm)
ColorSpec | StripAlpha (ColorSpec argb)
| } More...
ColorSpec SMTG_CONSTEXPR | BlendColor (ColorSpec color, double opacity)
template<class TDstChar , class TSrcChar >
void | StringCopy (TDstChar *dst, int32 dstSize, const TSrcChar *src, int32 srcSize=-1)
| Copy strings of different character width. More...
template<class TSrcChar >
int32 | StringLength (const TSrcChar *src, int32 srcSize=-1)
| Find length of null-terminated string, i.e. More...

## Variables
const FIDString | kPlatformStringWin = "WIN"
const FIDString | kPlatformStringMac = "MAC"
const FIDString | kPlatformStringIOS = "IOS"
const FIDString | kPlatformStringLinux = "Linux"
const FIDString | kPlatformString = kPlatformStringLinux
const FIDString | kPlatformTypeHWND = "HWND"
| The parent parameter in IPlugView::attached() is a HWND handle. More...
const FIDString | kPlatformTypeHIView = "HIView"
| The parent parameter in IPlugView::attached() is a WindowRef. More...
const FIDString | kPlatformTypeNSView = "NSView"
| The parent parameter in IPlugView::attached() is a NSView pointer. More...
const FIDString | kPlatformTypeUIView = "UIView"
| The parent parameter in IPlugView::attached() is a UIView pointer. More...
const FIDString | kPlatformTypeX11EmbedWindowID = "X11EmbedWindowID"
| The parent parameter in IPlugView::attached() is a X11 Window supporting XEmbed. More...

## Detailed Description

This header provides classes for working with FUnknown.

An interface which shall support Steinbergs Module Architecture should inherit from U::Unknown and provide a typedef `IID` of type U::UID.

On OS X you can generate an U::UID and copy it to the clipboard with the following shell command:

uuidgen | { read id; echo -n "using IID = U::UID<0x${id:0:8}, 0x${id:9:4}${id:14:4}, 0x${id:19:4}${id:24:4}, 0x${id:28:8}>;" ; } | pbcopy

Example:

struct IFoo : public U::Unknown
{
// Use a generated random uid here.
using IID = U::UID<0x01234567, 0x89012345, 0x67890123, 0x45678901>;
virtual void bar () = 0;
};
Steinberg::FUnknownImpl::HideIIDBase
A base class which hides the FUnknown::iid static var.
Definition: funknownimpl.h:150
Steinberg::FUnknownImpl::UID
This class provides a compile-time uid and enables interfaces to specify a UID as a simple typedef.
Definition: funknownimpl.h:174

A class implementing the interface `IFoo` uses the U::Implements template to specify the interfaces it implements. All interfaces which the class should derive from need to be listed in the U::Directly template.

Example:

struct FooImpl : public U::Implements<U::Directly<IFoo>>
{
void bar () override {}
};
Steinberg::FUnknownImpl::Implements
ImplementsImpl< Detail::QueryInterfaceEnd< Detail::RefCounted >, D, I > Implements
This typedef provides the interface implementation.
Definition: funknownimpl.h:443

To check if a class can provide a specific interface use the U::cast function.

Example:

void test (U::Unknown* obj)
{
if (auto foo = U::cast<IFoo> (obj))
{
// obj provided IFoo
}
}

The U::Implements class supports a second template parameter U::Indirectly for specifying a list of interfaces which should be available via `queryInterface` but not inherited from. This is useful if an interface extends another interface.

Example:

struct IBar : public IFoo
{
using IID = U::UID<0x11223344, 0x55667788, 0x99001122, 0x33445566>;
virtual void baz () = 0;
};
struct BarImpl : public U::Implements<U::Directly<IBar>, U::Indirectly<IFoo>>
{
void bar () override {}
void baz () override {}
};

In some cases a class shall be extended and an additional interface implemented. This is possible with the U::Extends template which is a generalization of the U::Implements template and allows specifying a base class from which should be inherited.

Example:

struct ITest : public U::Unknown
{
using IID = U::UID<0x99887766, 0x55443322, 0x11009988, 0x77665544>;
virtual bool equal (int a, int b) const = 0;
};
struct TestImpl : public U::Extends<FooImpl, U::Directly<ITest>>
{
bool equal (int a, int b) const override { return a == b; }
};
Steinberg::FUnknownImpl::Extends
ImplementsImpl< BaseClass, D, I > Extends
This typedef enables using a custom base class with the interface implementation.
Definition: funknownimpl.h:439

To pass arbitrary arguments to the specified base class one can use the inherited `Base` typedef. All arguments passed to `Base` are automatically perfectly forwarded to the base class.

In the following example the value 42 is passed to the `AlternativeFooImpl` base class:

struct AlternativeFooImpl : public U::Implements<U::Directly<IFoo>>
{
AlternativeFooImpl (int dummy = 0) : dummy {dummy} {}
void bar () override {}
int dummy;
};
struct AlternativeTestImpl : public U::Extends<AlternativeFooImpl, U::Directly<ITest>>
{
AlternativeTestImpl () : Base {42} {}
bool equal (int a, int b) const override { return a == b; }
};

## Typedef Documentation

## ◆ int8

typedef char int8

## ◆ uint8

typedef uint8_t uint8

## ◆ uchar

typedef unsigned char uchar

## ◆ int16

typedef int16_t int16

## ◆ uint16

typedef uint16_t uint16

## ◆ int32

typedef int32_t int32

## ◆ uint32

typedef uint32_t uint32

## ◆ int64

typedef int64_t int64

## ◆ uint64

typedef uint64_t uint64

## ◆ TSize

typedef int64 TSize

## ◆ tresult

typedef int32 tresult

## ◆ TPtrInt

typedef uint64 TPtrInt

## ◆ TBool

typedef uint8 TBool

## ◆ char8

typedef char char8

## ◆ char16

typedef char16_t char16

## ◆ char

typedef char16 char

## ◆ CStringA

typedef const char8* CStringA

## ◆ CStringW

typedef const char16* CStringW

## ◆ CString

typedef const char* CString

## ◆ FIDString

typedef const char8* FIDString

## ◆ UCoord

typedef int32 UCoord

Coordinates.

## ◆ LARGE_INT

typedef int64 LARGE_INT

## ◆ TUID

typedef char TUID[16]

plain UID type

## ◆ IAttrID

typedef FIDString IAttrID

## ◆ ColorSpec

typedef uint32 ColorSpec

## ◆ ColorComponent

typedef uint8 ColorComponent

## ◆ UColorSpec

typedef ColorSpec UColorSpec

## ◆ UColorComponent

typedef ColorComponent UColorComponent

## ◆ UString128

typedef UStringBuffer<128> UString128

128 character UTF-16 string

## ◆ UString256

typedef UStringBuffer<256> UString256

256 character UTF-16 string

## Enumeration Type Documentation

## ◆ anonymous enum

anonymous enum

Enumerator
kNoInterface |
kResultOk |
kResultTrue |
kResultFalse |
kInvalidArgument |
kNotImplemented |
kInternalError |
kNotInitialized |
kOutOfMemory |

## ◆ Direction

enum Direction

Enumerator
kNorth |
kNorthEast |
kEast |
kSouthEast |
kSouth |
kSouthWest |
kWest |
kNorthWest |
kNoDirection |
kNumberOfDirections |

## ◆ Orientation

enum Orientation

Enumerator
kHorizontal |
kVertical |
kNumberOfOrientations |

## ◆ VirtualKeyCodes

enum VirtualKeyCodes

Virtual Key Codes.

OS-independent enumeration of virtual keycodes.

Enumerator
KEY_BACK |
KEY_TAB |
KEY_CLEAR |
KEY_RETURN |
KEY_PAUSE |
KEY_ESCAPE |
KEY_SPACE |
KEY_NEXT |
KEY_END |
KEY_HOME |
KEY_LEFT |
KEY_UP |
KEY_RIGHT |
KEY_DOWN |
KEY_PAGEUP |
KEY_PAGEDOWN |
KEY_SELECT |
KEY_PRINT |
KEY_ENTER |
KEY_SNAPSHOT |
KEY_INSERT |
KEY_DELETE |
KEY_HELP |
KEY_NUMPAD0 |
KEY_NUMPAD1 |
KEY_NUMPAD2 |
KEY_NUMPAD3 |
KEY_NUMPAD4 |
KEY_NUMPAD5 |
KEY_NUMPAD6 |
KEY_NUMPAD7 |
KEY_NUMPAD8 |
KEY_NUMPAD9 |
KEY_MULTIPLY |
KEY_ADD |
KEY_SEPARATOR |
KEY_SUBTRACT |
KEY_DECIMAL |
KEY_DIVIDE |
KEY_F1 |
KEY_F2 |
KEY_F3 |
KEY_F4 |
KEY_F5 |
KEY_F6 |
KEY_F7 |
KEY_F8 |
KEY_F9 |
KEY_F10 |
KEY_F11 |
KEY_F12 |
KEY_NUMLOCK |
KEY_SCROLL |
KEY_SHIFT |
KEY_CONTROL |
KEY_ALT |
KEY_EQUALS |
KEY_CONTEXTMENU |
KEY_MEDIA_PLAY |
KEY_MEDIA_STOP |
KEY_MEDIA_PREV |
KEY_MEDIA_NEXT |
KEY_VOLUME_UP |
KEY_VOLUME_DOWN |
KEY_F13 |
KEY_F14 |
KEY_F15 |
KEY_F16 |
KEY_F17 |
KEY_F18 |
KEY_F19 |
KEY_F20 |
KEY_F21 |
KEY_F22 |
KEY_F23 |
KEY_F24 |
KEY_SUPER |
VKEY_FIRST_CODE |
VKEY_LAST_CODE |
VKEY_FIRST_ASCII |

## ◆ KeyModifier

enum KeyModifier

OS-independent enumeration of virtual modifier-codes.

Enumerator
kShiftKey | same on Windows and macOS
kAlternateKey | same on Windows and macOS
kCommandKey | Windows: ctrl key; macOS: cmd key.
kControlKey | Windows: win key, macOS: ctrl key.

## ◆ StandardColor

enum StandardColor

Enumerator
kBlack |
kWhite |
kGray5 |
kGray10 |
kGray20 |
kGray30 |
kGray40 |
kGray50 |
kGray60 |
kGray70 |
kGray80 |
kGray90 |
kRed |
kLtRed |
kDkRed |
kGreen |
kLtGreen |
kDkGreen |
kBlue |
kLtBlue |
kDkBlue |
kMagenta |
kLtMagenta |
kDkMagenta |
kYellow |
kLtYellow |
kDkYellow |
kOrange |
kLtOrange |
kDkOrange |
kGold |
kBlack50 |
kBlack70 |
kNumStandardColors |
kLtGray |
kGray |
kDkGray |

## Function Documentation

## ◆ _tstrlen()

int32 Steinberg::_tstrlen | ( | const T * | wcs | ) |
| inline

## ◆ tstrlen()

int32 Steinberg::tstrlen | ( | const char * | str | ) |
| inline

## ◆ strlen8()

int32 Steinberg::strlen8 | ( | const char8 * | str | ) |
| inline

## ◆ strlen16()

int32 Steinberg::strlen16 | ( | const char16 * | str | ) |
| inline

## ◆ _tstrcmp()

int32 Steinberg::_tstrcmp | ( | const T * | src,
|  | const T * | dst
| ) |  |
| inline

## ◆ tstrcmp()

int32 Steinberg::tstrcmp | ( | const char * | src,
|  | const char * | dst
| ) |  |
| inline

## ◆ strcmp8()

int32 Steinberg::strcmp8 | ( | const char8 * | src,
|  | const char8 * | dst
| ) |  |
| inline

## ◆ strcmp16()

int32 Steinberg::strcmp16 | ( | const char16 * | src,
|  | const char16 * | dst
| ) |  |
| inline

## ◆ strcmpT()

int32 Steinberg::strcmpT | ( | const T * | first,
|  | const T * | last
| ) |  |
| inline

## ◆ strcmpT< char8 >()

int32 Steinberg::strcmpT< char8 > | ( | const char8 * | first,
|  | const char8 * | last
| ) |  |
| inline

## ◆ strcmpT< char16 >()

int32 Steinberg::strcmpT< char16 > | ( | const char16 * | first,
|  | const char16 * | last
| ) |  |
| inline

## ◆ _tstrncmp()

int32 Steinberg::_tstrncmp | ( | const T * | first,
|  | const T * | last,
|  | uint32 | count
| ) |  |
| inline

## ◆ tstrncmp()

int32 Steinberg::tstrncmp | ( | const char * | first,
|  | const char * | last,
|  | uint32 | count
| ) |  |
| inline

## ◆ strncmp8()

int32 Steinberg::strncmp8 | ( | const char8 * | first,
|  | const char8 * | last,
|  | uint32 | count
| ) |  |
| inline

## ◆ strncmp16()

int32 Steinberg::strncmp16 | ( | const char16 * | first,
|  | const char16 * | last,
|  | uint32 | count
| ) |  |
| inline

## ◆ strncmpT()

int32 Steinberg::strncmpT | ( | const T * | first,
|  | const T * | last,
|  | uint32 | count
| ) |  |
| inline

## ◆ strncmpT< char8 >()

int32 Steinberg::strncmpT< char8 > | ( | const char8 * | first,
|  | const char8 * | last,
|  | uint32 | count
| ) |  |
| inline

## ◆ strncmpT< char16 >()

int32 Steinberg::strncmpT< char16 > | ( | const char16 * | first,
|  | const char16 * | last,
|  | uint32 | count
| ) |  |
| inline

## ◆ _tstrcpy()

T * Steinberg::_tstrcpy | ( | T * | dst,
|  | const T * | src
| ) |  |
| inline

## ◆ tstrcpy()

char * Steinberg::tstrcpy | ( | char * | dst,
|  | const char * | src
| ) |  |
| inline

## ◆ strcpy8()

char8 * Steinberg::strcpy8 | ( | char8 * | dst,
|  | const char8 * | src
| ) |  |
| inline

## ◆ strcpy16()

char16 * Steinberg::strcpy16 | ( | char16 * | dst,
|  | const char16 * | src
| ) |  |
| inline

## ◆ _tstrncpy()

T * Steinberg::_tstrncpy | ( | T * | dest,
|  | const T * | source,
|  | uint32 | count
| ) |  |
| inline

## ◆ tstrncpy()

char * Steinberg::tstrncpy | ( | char * | dest,
|  | const char * | source,
|  | uint32 | count
| ) |  |
| inline

## ◆ strncpy8()

char8 * Steinberg::strncpy8 | ( | char8 * | dest,
|  | const char8 * | source,
|  | uint32 | count
| ) |  |
| inline

## ◆ strncpy16()

char16 * Steinberg::strncpy16 | ( | char16 * | dest,
|  | const char16 * | source,
|  | uint32 | count
| ) |  |
| inline

## ◆ _tstrcat()

T * Steinberg::_tstrcat | ( | T * | dst,
|  | const T * | src
| ) |  |
| inline

## ◆ tstrcat()

char * Steinberg::tstrcat | ( | char * | dst,
|  | const char * | src
| ) |  |
| inline

## ◆ strcat8()

char8 * Steinberg::strcat8 | ( | char8 * | dst,
|  | const char8 * | src
| ) |  |
| inline

## ◆ strcat16()

char16 * Steinberg::strcat16 | ( | char16 * | dst,
|  | const char16 * | src
| ) |  |
| inline

## ◆ str8ToStr16()

void Steinberg::str8ToStr16 | ( | char16 * | dst,
|  | const char8 * | src,
|  | int32 | n = `-1`
| ) |  |
| inline

## ◆ FIDStringsEqual()

bool Steinberg::FIDStringsEqual | ( | FIDString | id1,
|  | FIDString | id2
| ) |  |
| inline

## ◆ strEmpty()

bool Steinberg::strEmpty | ( | const char * | str | ) |
| inline

## ◆ str8Empty()

bool Steinberg::str8Empty | ( | const char8 * | str | ) |
| inline

## ◆ str16Empty()

bool Steinberg::str16Empty | ( | const char16 * | str | ) |
| inline

## ◆ getTUID()

const TUID & Steinberg::getTUID | ( |  | ) |

## ◆ Min()

const T & Steinberg::Min | ( | const T & | a,
|  | const T & | b
| ) |  |
| inline

## ◆ Max()

const T & Steinberg::Max | ( | const T & | a,
|  | const T & | b
| ) |  |
| inline

## ◆ Abs()

T Steinberg::Abs | ( | const T & | value | ) |
| inline

## ◆ Sign()

T Steinberg::Sign | ( | const T & | value | ) |
| inline

## ◆ Bound()

T Steinberg::Bound | ( | T | minval,
|  | T | maxval,
|  | T | x
| ) |  |
| inline

## ◆ Swap()

void Steinberg::Swap | ( | T & | t1,
|  | T & | t2
| ) |  |

## ◆ IsApproximateEqual()

bool Steinberg::IsApproximateEqual | ( | T | t1,
|  | T | t2,
|  | T | epsilon
| ) |  |

## ◆ ToNormalized()

T Steinberg::ToNormalized | ( | const T & | value,
|  | const int32 | numSteps
| ) |  |
| inline

## ◆ FromNormalized()

int32 Steinberg::FromNormalized | ( | const T & | norm,
|  | const int32 | numSteps
| ) |  |
| inline

## ◆ operator==()

bool Steinberg::operator== | ( | const FVariant & | v1,
|  | const FVariant & | v2
| ) |  |
| inline

## ◆ operator!=()

bool Steinberg::operator!= | ( | const FVariant & | v1,
|  | const FVariant & | v2
| ) |  |
| inline

## ◆ VirtualKeyCodeToChar()

SMTG_CONSTEXPR14 char Steinberg::VirtualKeyCodeToChar | ( | uint8 | vKey | ) |
| inline

## ◆ CharToVirtualKeyCode()

SMTG_CONSTEXPR14 uint8 Steinberg::CharToVirtualKeyCode | ( | char | character | ) |
| inline

## ◆ owned()

IPtr< I > Steinberg::owned | ( | I * | p | ) |

Assigning newly created object to an IPtr.

Example:

IPtr<IPath> path = owned (FHostCreate (IPath, hostClasses));
Steinberg::IPtr
IPtr - Smart pointer template class.
Definition: smartpointer.h:44
Steinberg::owned
IPtr< I > owned(I *p)
Assigning newly created object to an IPtr.
Definition: smartpointer.h:241

which is a slightly shorter form of writing:

IPtr<IPath> path = OPtr<IPath> (FHostCreate (IPath, hostClasses));
Steinberg::OPtr
OPtr - "owning" smart pointer used for newly created FObjects.
Definition: smartpointer.h:210

## ◆ shared()

IPtr< I > Steinberg::shared | ( | I * | p | ) |

Assigning shared object to an IPtr.

Example:

IPtr<IPath> path = shared (iface.getXY ());
Steinberg::shared
IPtr< I > shared(I *p)
Assigning shared object to an IPtr.
Definition: smartpointer.h:253

## ◆ MakeColorSpec() [1/2]

SMTG_CONSTEXPR ColorSpec Steinberg::MakeColorSpec | ( | ColorComponent | r,
|  | ColorComponent | g,
|  | ColorComponent | b
| ) |  |
| inline

Create color specifier with RGB values (alpha is opaque)

## ◆ MakeColorSpec() [2/2]

SMTG_CONSTEXPR ColorSpec Steinberg::MakeColorSpec | ( | ColorComponent | r,
|  | ColorComponent | g,
|  | ColorComponent | b,
|  | ColorComponent | a
| ) |  |
| inline

Create color specifier with RGBA values

## ◆ GetBlue()

SMTG_CONSTEXPR ColorComponent Steinberg::GetBlue | ( | ColorSpec | cs | ) |
| inline

## ◆ GetGreen()

SMTG_CONSTEXPR ColorComponent Steinberg::GetGreen | ( | ColorSpec | cs | ) |
| inline

## ◆ GetRed()

SMTG_CONSTEXPR ColorComponent Steinberg::GetRed | ( | ColorSpec | cs | ) |
| inline

## ◆ GetAlpha()

SMTG_CONSTEXPR ColorComponent Steinberg::GetAlpha | ( | ColorSpec | cs | ) |
| inline

## ◆ SetBlue()

void Steinberg::SetBlue | ( | ColorSpec & | argb,
|  | ColorComponent | b
| ) |  |
| inline

## ◆ SetGreen()

void Steinberg::SetGreen | ( | ColorSpec & | argb,
|  | ColorComponent | g
| ) |  |
| inline

## ◆ SetRed()

void Steinberg::SetRed | ( | ColorSpec & | argb,
|  | ColorComponent | r
| ) |  |
| inline

## ◆ SetAlpha()

void Steinberg::SetAlpha | ( | ColorSpec & | argb,
|  | ColorComponent | a
| ) |  |
| inline

## ◆ NormalizeColorComponent()

double Steinberg::NormalizeColorComponent | ( | ColorComponent | c | ) |
| inline

Normalized color components.

{

## ◆ DenormalizeColorComponent()

ColorComponent Steinberg::DenormalizeColorComponent | ( | double | c | ) |
| inline

## ◆ SetAlphaNorm()

void Steinberg::SetAlphaNorm | ( | ColorSpec & | argb,
|  | double | a
| ) |  |
| inline

## ◆ GetAlphaNorm()

double Steinberg::GetAlphaNorm | ( | ColorSpec | cs | ) |
| inline

## ◆ NormalizeAlpha()

double Steinberg::NormalizeAlpha | ( | uint8 | alpha | ) |
| inline

## ◆ DenormalizeAlpha()

ColorComponent Steinberg::DenormalizeAlpha | ( | double | alphaNorm | ) |
| inline

## ◆ StripAlpha()

ColorSpec Steinberg::StripAlpha | ( | ColorSpec | argb | ) |
| inline

}

## ◆ BlendColor()

ColorSpec SMTG_CONSTEXPR Steinberg::BlendColor | ( | ColorSpec | color,
|  | double | opacity
| ) |  |
| inline

## ◆ StringCopy()

void Steinberg::StringCopy | ( | TDstChar * | dst,
|  | int32 | dstSize,
|  | const TSrcChar * | src,
|  | int32 | srcSize = `-1`
| ) |  |

Copy strings of different character width.

## ◆ StringLength()

int32 Steinberg::StringLength | ( | const TSrcChar * | src,
|  | int32 | srcSize = `-1`
| ) |  |

Find length of null-terminated string, i.e.

StringLength (L"ABC\0") => 3

## Variable Documentation

## ◆ kPlatformStringWin

const FIDString kPlatformStringWin = "WIN"

## ◆ kPlatformStringMac

const FIDString kPlatformStringMac = "MAC"

## ◆ kPlatformStringIOS

const FIDString kPlatformStringIOS = "IOS"

## ◆ kPlatformStringLinux

const FIDString kPlatformStringLinux = "Linux"

## ◆ kPlatformString

const FIDString kPlatformString = kPlatformStringLinux

## ◆ kPlatformTypeHWND

const FIDString kPlatformTypeHWND = "HWND"

The parent parameter in IPlugView::attached() is a HWND handle.

You should attach a child window to it. HWND handle. (Microsoft Windows)

## ◆ kPlatformTypeHIView

const FIDString kPlatformTypeHIView = "HIView"

The parent parameter in IPlugView::attached() is a WindowRef.

You should attach a HIViewRef to the content view of the window. HIViewRef. (Mac OS X)

## ◆ kPlatformTypeNSView

const FIDString kPlatformTypeNSView = "NSView"

The parent parameter in IPlugView::attached() is a NSView pointer.

You should attach a NSView to it. NSView pointer. (Mac OS X)

## ◆ kPlatformTypeUIView

const FIDString kPlatformTypeUIView = "UIView"

The parent parameter in IPlugView::attached() is a UIView pointer.

You should attach an UIView to it. UIView pointer. (iOS)

## ◆ kPlatformTypeX11EmbedWindowID

const FIDString kPlatformTypeX11EmbedWindowID = "X11EmbedWindowID"

The parent parameter in IPlugView::attached() is a X11 Window supporting XEmbed.

You should attach a Window to it that supports the XEmbed extension. See https://standards.freedesktop.org/xembed-spec/xembed-spec-latest.html X11 Window ID. (X11)

Empty

Copyright © Steinberg Media Technologies GmbH. All Rights Reserved. This documentation is under this license.