Interface Technology Basics: Steinberg Namespace Reference
Author: Steinberg

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

- Main Page
- Modules
- Namespaces
- Classes
- Files

- Namespace List
- Namespace Members

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups
Namespaces | Classes | Typedefs | Enumerations | Functions | Variables
Steinberg Namespace Reference

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

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

## Classes
class | ConstStringTable
| Constant unicode string table. 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...
struct | FReleaser
| Release an interface using automatic object (obsolete). More...
class | FVariant
| A Value of variable type. More...
class | IBStream
| Base class for streams. More...
class | ISizeableStream
| Stream with a size. More...
class | ICloneable
| Interface allowing an object to be copied. More...
class | IErrorContext
| Interface for error handling. More...
class | IPersistent
| Persistent Object Interface. More...
class | IAttributes
| Object Data Archive Interface. More...
class | IAttributes2
| Extended access to Attributes; supports Attribute retrieval via iteration. More...
class | IPluginBase
| Basic interface to a plug-in component: IPluginBase. More...
struct | PFactoryInfo
| Basic Information about the class factory of the plug-in. More...
struct | PClassInfo
| Basic Information about a class provided by the plug-in. More...
class | IPluginFactory
| Class factory that any plug-in defines for creating class instances: IPluginFactory. More...
struct | PClassInfo2
| Version 2 of Basic Information about a class provided by the plug-in. More...
class | IPluginFactory2
| Version 2 of class factory supporting PClassInfo2: IPluginFactory2. More...
struct | PClassInfoW
| Unicode Version of Basic Information about a class provided by the plug-in. More...
class | IPluginFactory3
| Version 3 of class factory supporting PClassInfoW: IPluginFactory3. More...
class | IPluginCompatibility
| optional interface to query the compatibility of the plug-ins classes More...
class | IStringResult
| Interface to return an ascii string of variable size. More...
class | IString
| Interface to a string of variable size and encoding. More...
class | IUpdateHandler
| Host implements dependency handling for plugins. More...
class | IDependent
| A dependent will get notified about changes of a model. More...
struct | KeyCode
| Simple data-struct representing a key-stroke on the keyboard. More...
class | IPtr
| IPtr - Smart pointer template class. More...
class | OPtr
| OPtr - "owning" smart pointer used for newly created FObjects. 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...
class | IPlugView
| Plug-in definition of a view. More...
class | IPlugFrame
| Callback interface passed to IPlugView. More...
class | IPlugViewContentScaleSupport
| Plug-in view content scale support. 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.
typedef int64 | LARGE_INT
typedef char | TUID [16]
| plain UID type
typedef FIDString | IAttrID
typedef uint32 | ColorSpec
typedef uint8 | ColorComponent
typedef ColorSpec | UColorSpec
typedef ColorComponent | UColorComponent
typedef UStringBuffer< 128 > | UString128
| 128 character UTF-16 string
typedef UStringBuffer< 256 > | UString256
| 256 character UTF-16 string

## 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, VKEY_FIRST_CODE = KEY_BACK, VKEY_LAST_CODE = KEY_F19, 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)
char | VirtualKeyCodeToChar (uint8 vKey)
uint8 | CharToVirtualKeyCode (char character)
template<class I >
IPtr< I > | owned (I *p)
| Assigning newly created object to an IPtr.
template<class I >
IPtr< I > | shared (I *p)
| Assigning shared object to an IPtr.
SMTG_CONSTEXPR ColorSpec | MakeColorSpec (ColorComponent r, ColorComponent g, ColorComponent b)
| Create color specifier with RGB values (alpha is opaque)
SMTG_CONSTEXPR ColorSpec | MakeColorSpec (ColorComponent r, ColorComponent g, ColorComponent b, ColorComponent a)
| Create color specifier with RGBA values.
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.
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)
| }
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.
template<class TSrcChar >
int32 | StringLength (const TSrcChar *src, int32 srcSize=-1)
| Find length of null-terminated string, i.e.

## 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.
const FIDString | kPlatformTypeHIView = "HIView"
| The parent parameter in IPlugView::attached() is a WindowRef.
const FIDString | kPlatformTypeNSView = "NSView"
| The parent parameter in IPlugView::attached() is a NSView pointer.
const FIDString | kPlatformTypeUIView = "UIView"
| The parent parameter in IPlugView::attached() is a UIView pointer.
const FIDString | kPlatformTypeX11EmbedWindowID = "X11EmbedWindowID"
| The parent parameter in IPlugView::attached() is a X11 Window supporting XEmbed.

## 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;
};

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 {}
};

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; }
};

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

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.

typedef int64 LARGE_INT

typedef char TUID[16]

plain UID type

typedef FIDString IAttrID

typedef uint32 ColorSpec

typedef uint8 ColorComponent

typedef ColorSpec UColorSpec

typedef ColorComponent UColorComponent

typedef UStringBuffer<128> UString128

128 character UTF-16 string

typedef UStringBuffer<256> UString256

256 character UTF-16 string

## Enumeration Type Documentation

anonymous enum

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

enum Direction

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

enum Orientation

Enumerator
kHorizontal |
kVertical |
kNumberOfOrientations |

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 |
VKEY_FIRST_CODE |
VKEY_LAST_CODE |
VKEY_FIRST_ASCII |

enum KeyModifier

OS-independent enumeration of virtual modifier-codes.

Enumerator
kShiftKey | same on both PC and Mac
kAlternateKey | same on both PC and Mac
kCommandKey | windows ctrl key; mac cmd key (apple button)
kControlKey | windows: not assigned, mac: ctrl key

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Assigning newly created object to an IPtr.

Example:

IPtr<IPath> path = owned (FHostCreate (IPath, hostClasses));

which is a slightly shorter form of writing:

IPtr<IPath> path = OPtr<IPath> (FHostCreate (IPath, hostClasses));

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

Assigning shared object to an IPtr.

Example:

IPtr<IPath> path = shared (iface.getXY ());

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

Create color specifier with RGB values (alpha is opaque)

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

Create color specifier with RGBA values.

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

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

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

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

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

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

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

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

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

Normalized color components.

{

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

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

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

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

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

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

}

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

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

Copy strings of different character width.

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

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

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

## Variable Documentation

const FIDString kPlatformStringWin = "WIN"

const FIDString kPlatformStringMac = "MAC"

const FIDString kPlatformStringIOS = "IOS"

const FIDString kPlatformStringLinux = "Linux"

const FIDString kPlatformString = kPlatformStringLinux

Empty

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