Base Module: fstdmethods.h File Reference
Author: Steinberg

Base Module VST 3.8 SDK for developing VST plug-in

Loading...
Searching...
No Matches
Macros
fstdmethods.h File Reference

Convenient macros to create setter and getter methods. More...

## Macros
#define | DEFINE_VARIABLE(type, varName, methodName)
#define | DEFINE_POINTER(type, varName, methodName)
#define | DEFINE_MEMBER(type, varName, methodName)
#define | COMPARE_BY_MEMBER_METHODS(className, memberName)
#define | COMPARE_BY_MEMORY_METHODS(className)
#define | COMPARE_BY_COMPARE_METHOD(className, methodName)
Methods for flags.
Macros to create setter and getter methods for flags. Usage example with DEFINE_STATE: class MyClass { public: MyClass () : flags (0) {} DEFINE_FLAG (flags, isFlagged, 1<<0) DEFINE_FLAG (flags, isMine, 1<<1) private: uint32 flags; }; void someFunction () { MyClass c; if (c.isFlagged ()) // check the flag c.isFlagged (false); // set the flag } DEFINE_FLAG #define DEFINE_FLAG(flagVar, methodName, value) Create Methods. Definition fstdmethods.h:62
#define | DEFINE_STATE(flagVar, methodName, value)
| Create Methods with `get` and `set` prefix.
#define | DEFINE_GETSTATE(flagVar, methodName, value)
| Create Methods with `get` prefix.
#define | DEFINE_FLAG(flagVar, methodName, value)
| Create Methods.
#define | DEFINE_GETFLAG(flagVar, methodName, value)
| Create Methods.
#define | DEFINE_FLAG_STATIC(flagVar, methodName, value)
| Create `static` Methods.
Methods for data members.
Macros to create setter and getter methods for class members. Examples: class MyClass { public: DATA_MEMBER (double, distance, Distance) STRING_MEMBER (Steinberg::String, name, Name) SHARED_MEMBER (FUnknown, userData, UserData) CLASS_MEMBER (Steinberg::Buffer, bufferData, BufferData) POINTER_MEMBER (Steinberg::FObject, refOnly, RefOnly) }; Steinberg::Buffer Buffer. Definition fbuffer.h:36 Steinberg::FObject Implements FUnknown and IDependent. Definition fobject.h:65 Steinberg::String String. Definition fstring.h:303 STRING_MEMBER #define STRING_MEMBER(type, varName, methodName) Build-in member (pass by value). Definition fstdmethods.h:130 DATA_MEMBER #define DATA_MEMBER(type, varName, methodName) Build-in member (pass by value). Definition fstdmethods.h:100 POINTER_MEMBER #define POINTER_MEMBER(type, varName, methodName) Build-in member (pass by value). Definition fstdmethods.h:112 CLASS_MEMBER #define CLASS_MEMBER(type, varName, methodName) Build-in member (pass by value). Definition fstdmethods.h:106 SHARED_MEMBER #define SHARED_MEMBER(type, varName, methodName) Build-in member (pass by value). Definition fstdmethods.h:118
#define | DATA_MEMBER(type, varName, methodName)
| Build-in member (pass by value).
#define | CLASS_MEMBER(type, varName, methodName)
| Build-in member (pass by value).
#define | POINTER_MEMBER(type, varName, methodName)
| Build-in member (pass by value).
#define | SHARED_MEMBER(type, varName, methodName)
| Build-in member (pass by value).
#define | OWNED_MEMBER(type, varName, methodName)
| Build-in member (pass by value).
#define | STRING_MEMBER(type, varName, methodName)
| Build-in member (pass by value).
#define | STRING8_MEMBER(type, varName, methodName)
| Build-in member (pass by value).
#define | STRING_MEMBER_STD(varName, methodName)
| Build-in member (pass by value).
#define | STRING8_MEMBER_STD(varName, methodName)
| Build-in member (pass by value).

## Detailed Description

Convenient macros to create setter and getter methods.

## Macro Definition Documentation

## ◆ DEFINE_STATE

#define DEFINE_STATE | ( |  | flagVar,
|  |  | methodName,
|  |  | value )

Value:
void set##methodName (bool state) { if (state) flagVar |= (value); else flagVar &= ~(value); }\
bool get##methodName ()const { return (flagVar & (value)) != 0; }

Create Methods with `get` and `set` prefix.

## ◆ DEFINE_GETSTATE

#define DEFINE_GETSTATE | ( |  | flagVar,
|  |  | methodName,
|  |  | value )

Value:
bool get##methodName ()const { return (flagVar & (value)) != 0; }

Create Methods with `get` prefix.

There is only a 'get' method.

## ◆ DEFINE_FLAG

#define DEFINE_FLAG | ( |  | flagVar,
|  |  | methodName,
|  |  | value )

Value:
void methodName (bool state) { if (state) flagVar |= (value); else flagVar &= ~(value); }\
bool methodName ()const { return (flagVar & (value)) != 0; }

Create Methods.

Same name for the getter and setter.

## ◆ DEFINE_GETFLAG

#define DEFINE_GETFLAG | ( |  | flagVar,
|  |  | methodName,
|  |  | value )

Value:
bool methodName ()const { return (flagVar & (value)) != 0; }

Create Methods.

There is only a 'get' method.

## ◆ DEFINE_FLAG_STATIC

#define DEFINE_FLAG_STATIC | ( |  | flagVar,
|  |  | methodName,
|  |  | value )

Value:
static void methodName (bool __state) { if (__state) flagVar |= (value); else flagVar &= ~(value); }\
static bool methodName () { return (flagVar & (value)) != 0; }

Create `static` Methods.

Same name for the getter and setter.

## ◆ DATA_MEMBER

#define DATA_MEMBER | ( |  | type,
|  |  | varName,
|  |  | methodName )

Value:
public:void set##methodName (type v) { varName = v;}\
type get##methodName ()const { return varName; }\
protected: type varName; public:

Build-in member (pass by value).

## ◆ CLASS_MEMBER

#define CLASS_MEMBER | ( |  | type,
|  |  | varName,
|  |  | methodName )

Value:
public:void set##methodName (const type& v){ varName = v;}\
const type& get##methodName () const { return varName; }\
protected: type varName; public:

Build-in member (pass by value).

## ◆ POINTER_MEMBER

#define POINTER_MEMBER | ( |  | type,
|  |  | varName,
|  |  | methodName )

Value:
public:void set##methodName (type* ptr){ varName = ptr;}\
type* get##methodName ()const { return varName; }\
private: type* varName; public:

Build-in member (pass by value).

## ◆ SHARED_MEMBER

#define SHARED_MEMBER | ( |  | type,
|  |  | varName,
|  |  | methodName )

Value:
public:void set##methodName (type* v){ varName = v;}\
type* get##methodName ()const { return varName; }\
private: IPtr<type> varName; public:

Build-in member (pass by value).

## ◆ OWNED_MEMBER

#define OWNED_MEMBER | ( |  | type,
|  |  | varName,
|  |  | methodName )

Value:
public:void set##methodName (type* v){ varName = v;}\
type* get##methodName ()const { return varName; }\
private: OPtr<type> varName; public:

Build-in member (pass by value).

## ◆ STRING_MEMBER

#define STRING_MEMBER | ( |  | type,
|  |  | varName,
|  |  | methodName )

Value:
public:void set##methodName (const tchar* v){ varName = v;}\
const type& get##methodName () const { return varName; }\
protected: type varName; public:

Build-in member (pass by value).

## ◆ STRING8_MEMBER

#define STRING8_MEMBER | ( |  | type,
|  |  | varName,
|  |  | methodName )

Value:
public:void set##methodName (const char8* v){ varName = v;}\
const type& get##methodName () const { return varName; }\
protected: type varName; public:

Build-in member (pass by value).

## ◆ STRING_MEMBER_STD

#define STRING_MEMBER_STD | ( |  | varName,
|  |  | methodName )

Value:
STRING_MEMBER(Steinberg::String,varName,methodName)

Build-in member (pass by value).

## ◆ STRING8_MEMBER_STD

#define STRING8_MEMBER_STD | ( |  | varName,
|  |  | methodName )

Value:
STRING8_MEMBER(Steinberg::String,varName,methodName)
STRING8_MEMBER
#define STRING8_MEMBER(type, varName, methodName)
Build-in member (pass by value).
Definition fstdmethods.h:136

Build-in member (pass by value).

## ◆ DEFINE_VARIABLE

#define DEFINE_VARIABLE | ( |  | type,
|  |  | varName,
|  |  | methodName )

Value:
DATA_MEMBER(type,varName,methodName)

## ◆ DEFINE_POINTER

#define DEFINE_POINTER | ( |  | type,
|  |  | varName,
|  |  | methodName )

Value:
POINTER_MEMBER(type,varName,methodName)

## ◆ DEFINE_MEMBER

#define DEFINE_MEMBER | ( |  | type,
|  |  | varName,
|  |  | methodName )

Value:
CLASS_MEMBER(type,varName,methodName)

## ◆ COMPARE_BY_MEMBER_METHODS

#define COMPARE_BY_MEMBER_METHODS | ( |  | className,
|  |  | memberName )

Value:
bool operator == (const className& other) const {return (memberName == other.memberName);} \
bool operator != (const className& other) const {return (memberName != other.memberName);} \
bool operator < (const className& other) const {return (memberName < other.memberName);} \
bool operator > (const className& other) const {return (memberName > other.memberName);} \
bool operator <= (const className& other) const {return (memberName <= other.memberName);} \
bool operator >= (const className& other) const {return (memberName >= other.memberName);}

## ◆ COMPARE_BY_MEMORY_METHODS

#define COMPARE_BY_MEMORY_METHODS | ( |  | className | ) |

Value:
bool operator == (const className& other) const {return memcmp (this, &other, sizeof (className)) == 0;} \
bool operator != (const className& other) const {return memcmp (this, &other, sizeof (className)) != 0;} \
bool operator < (const className& other) const {return memcmp (this, &other, sizeof (className)) < 0;} \
bool operator > (const className& other) const {return memcmp (this, &other, sizeof (className)) > 0;} \
bool operator <= (const className& other) const {return memcmp (this, &other, sizeof (className)) <= 0;} \
bool operator >= (const className& other) const {return memcmp (this, &other, sizeof (className)) >= 0;}

## ◆ COMPARE_BY_COMPARE_METHOD

#define COMPARE_BY_COMPARE_METHOD | ( |  | className,
|  |  | methodName )

Value:
bool operator == (const className& other) const {return methodName (other) == 0;} \
bool operator != (const className& other) const {return methodName (other) != 0;} \
bool operator < (const className& other) const {return methodName (other) < 0;} \
bool operator > (const className& other) const {return methodName (other) > 0;} \
bool operator <= (const className& other) const {return methodName (other) <= 0; } \
bool operator >= (const className& other) const {return methodName (other) >= 0; }
Empty

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