JUCE

- Main Page
- Related Pages
- Topics
- Classes
- Files

Loading...
Searching...
No Matches
Classes | Macros
system
juce_core

## Classes
class | SystemStats
| Contains methods for finding out about the current hardware and OS configuration. More...

## Macros
#define | JUCE_NTH_ARG_(_00, _01, _02, _03, _04, _05, _06, _07, _08, _09, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, N, ...) N
| Return the Nth argument.
#define | JUCE_EACH_00_(FN)
#define | JUCE_EACH_01_(FN, X) FN(X)
#define | JUCE_EACH_02_(FN, X, ...) FN(X) JUCE_EACH_01_(FN, __VA_ARGS__)
#define | JUCE_EACH_03_(FN, X, ...) FN(X) JUCE_EACH_02_(FN, __VA_ARGS__)
#define | JUCE_EACH_04_(FN, X, ...) FN(X) JUCE_EACH_03_(FN, __VA_ARGS__)
#define | JUCE_EACH_05_(FN, X, ...) FN(X) JUCE_EACH_04_(FN, __VA_ARGS__)
#define | JUCE_EACH_06_(FN, X, ...) FN(X) JUCE_EACH_05_(FN, __VA_ARGS__)
#define | JUCE_EACH_07_(FN, X, ...) FN(X) JUCE_EACH_06_(FN, __VA_ARGS__)
#define | JUCE_EACH_08_(FN, X, ...) FN(X) JUCE_EACH_07_(FN, __VA_ARGS__)
#define | JUCE_EACH_09_(FN, X, ...) FN(X) JUCE_EACH_08_(FN, __VA_ARGS__)
#define | JUCE_EACH_10_(FN, X, ...) FN(X) JUCE_EACH_09_(FN, __VA_ARGS__)
#define | JUCE_EACH_11_(FN, X, ...) FN(X) JUCE_EACH_10_(FN, __VA_ARGS__)
#define | JUCE_EACH_12_(FN, X, ...) FN(X) JUCE_EACH_11_(FN, __VA_ARGS__)
#define | JUCE_EACH_13_(FN, X, ...) FN(X) JUCE_EACH_12_(FN, __VA_ARGS__)
#define | JUCE_EACH_14_(FN, X, ...) FN(X) JUCE_EACH_13_(FN, __VA_ARGS__)
#define | JUCE_EACH_15_(FN, X, ...) FN(X) JUCE_EACH_14_(FN, __VA_ARGS__)
#define | JUCE_EACH_16_(FN, X, ...) FN(X) JUCE_EACH_15_(FN, __VA_ARGS__)
#define | JUCE_EACH_17_(FN, X, ...) FN(X) JUCE_EACH_16_(FN, __VA_ARGS__)
#define | JUCE_EACH_18_(FN, X, ...) FN(X) JUCE_EACH_17_(FN, __VA_ARGS__)
#define | JUCE_EACH_19_(FN, X, ...) FN(X) JUCE_EACH_18_(FN, __VA_ARGS__)
#define | JUCE_EACH_20_(FN, X, ...) FN(X) JUCE_EACH_19_(FN, __VA_ARGS__)
#define | JUCE_EACH_21_(FN, X, ...) FN(X) JUCE_EACH_20_(FN, __VA_ARGS__)
#define | JUCE_EACH_22_(FN, X, ...) FN(X) JUCE_EACH_21_(FN, __VA_ARGS__)
#define | JUCE_EACH_23_(FN, X, ...) FN(X) JUCE_EACH_22_(FN, __VA_ARGS__)
#define | JUCE_EACH_24_(FN, X, ...) FN(X) JUCE_EACH_23_(FN, __VA_ARGS__)
#define | JUCE_EACH_25_(FN, X, ...) FN(X) JUCE_EACH_24_(FN, __VA_ARGS__)
#define | JUCE_EACH_26_(FN, X, ...) FN(X) JUCE_EACH_25_(FN, __VA_ARGS__)
#define | JUCE_EACH_27_(FN, X, ...) FN(X) JUCE_EACH_26_(FN, __VA_ARGS__)
#define | JUCE_EACH_28_(FN, X, ...) FN(X) JUCE_EACH_27_(FN, __VA_ARGS__)
#define | JUCE_EACH_29_(FN, X, ...) FN(X) JUCE_EACH_28_(FN, __VA_ARGS__)
#define | JUCE_EACH_30_(FN, X, ...) FN(X) JUCE_EACH_29_(FN, __VA_ARGS__)
#define | JUCE_EACH_31_(FN, X, ...) FN(X) JUCE_EACH_30_(FN, __VA_ARGS__)
#define | JUCE_EACH_32_(FN, X, ...) FN(X) JUCE_EACH_31_(FN, __VA_ARGS__)
#define | JUCE_EACH_33_(FN, X, ...) FN(X) JUCE_EACH_32_(FN, __VA_ARGS__)
#define | JUCE_EACH_34_(FN, X, ...) FN(X) JUCE_EACH_33_(FN, __VA_ARGS__)
#define | JUCE_EACH_35_(FN, X, ...) FN(X) JUCE_EACH_34_(FN, __VA_ARGS__)
#define | JUCE_EACH_36_(FN, X, ...) FN(X) JUCE_EACH_35_(FN, __VA_ARGS__)
#define | JUCE_EACH_37_(FN, X, ...) FN(X) JUCE_EACH_36_(FN, __VA_ARGS__)
#define | JUCE_EACH_38_(FN, X, ...) FN(X) JUCE_EACH_37_(FN, __VA_ARGS__)
#define | JUCE_EACH_39_(FN, X, ...) FN(X) JUCE_EACH_38_(FN, __VA_ARGS__)
#define | JUCE_EACH_40_(FN, X, ...) FN(X) JUCE_EACH_39_(FN, __VA_ARGS__)
#define | JUCE_EACH_41_(FN, X, ...) FN(X) JUCE_EACH_40_(FN, __VA_ARGS__)
#define | JUCE_EACH_42_(FN, X, ...) FN(X) JUCE_EACH_41_(FN, __VA_ARGS__)
#define | JUCE_EACH_43_(FN, X, ...) FN(X) JUCE_EACH_42_(FN, __VA_ARGS__)
#define | JUCE_EACH_44_(FN, X, ...) FN(X) JUCE_EACH_43_(FN, __VA_ARGS__)
#define | JUCE_EACH_45_(FN, X, ...) FN(X) JUCE_EACH_44_(FN, __VA_ARGS__)
#define | JUCE_EACH_46_(FN, X, ...) FN(X) JUCE_EACH_45_(FN, __VA_ARGS__)
#define | JUCE_EACH_47_(FN, X, ...) FN(X) JUCE_EACH_46_(FN, __VA_ARGS__)
#define | JUCE_EACH_48_(FN, X, ...) FN(X) JUCE_EACH_47_(FN, __VA_ARGS__)
#define | JUCE_EACH_49_(FN, X, ...) FN(X) JUCE_EACH_48_(FN, __VA_ARGS__)
#define | JUCE_EACH(FN, ...)
| Apply the macro FN to each of the other arguments.
#define | JUCE_CONCAT_(a, b) a##b
| Concatenate two tokens to form a new token.
#define | JUCE_CONCAT(a, b) JUCE_CONCAT_(a, b)
#define | JUCE_TO_STRING(x) #x
| Quote the argument, turning it into a string.
#define | JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE(...)
#define | JUCE_END_IGNORE_WARNINGS_GCC_LIKE
#define | JUCE_IGNORE_MSVC(warnings)
| Push/pop warnings on MSVC.
#define | JUCE_BEGIN_IGNORE_WARNINGS_LEVEL_MSVC(level, warnings)
#define | JUCE_BEGIN_IGNORE_WARNINGS_MSVC(warnings)
#define | JUCE_END_IGNORE_WARNINGS_MSVC
#define | JUCE_SANITIZER_ATTRIBUTE_MINIMUM_CLANG_VERSION 11
#define | JUCE_BEGIN_NO_SANITIZE(warnings)
| Disable sanitizers for a range of functions.
#define | JUCE_END_NO_SANITIZE
#define | JUCE_CALLTYPE
| This macro defines the C calling convention used as the standard for JUCE calls.
#define | JUCE_CDECL
#define | JUCE_LOG_CURRENT_ASSERTION
#define | JUCE_BREAK_IN_DEBUGGER { ::kill (0, SIGTRAP); }
| This will try to break into the debugger if the app is currently being debugged.
#define | JUCE_ANALYZER_NORETURN
#define | JUCE_FALLTHROUGH
| Used to silence Wimplicit-fallthrough on Clang and GCC where available as there are a few places in the codebase where we need to do this deliberately and want to ignore the warning.
#define | JUCE_BLOCK_WITH_FORCED_SEMICOLON(x) do { x } while (false)
| This is the good old C++ trick for creating a macro that forces the user to put a semicolon after it when they use it.
#define | DBG(textToWrite) JUCE_BLOCK_WITH_FORCED_SEMICOLON (juce::String tempDbgBuf; tempDbgBuf << textToWrite; juce::Logger::outputDebugString (tempDbgBuf);)
| Writes a string to the standard error stream.
#define | jassertfalse JUCE_BLOCK_WITH_FORCED_SEMICOLON (JUCE_LOG_CURRENT_ASSERTION; if (juce::juce_isRunningUnderDebugger()) JUCE_BREAK_IN_DEBUGGER; JUCE_ANALYZER_NORETURN)
| This will always cause an assertion failure.
#define | jassert(expression) JUCE_BLOCK_WITH_FORCED_SEMICOLON (if (! (expression)) jassertfalse;)
| Platform-independent assertion macro.
#define | jassertquiet(expression) JUCE_BLOCK_WITH_FORCED_SEMICOLON (if (! (expression)) jassertfalse;)
| Platform-independent assertion macro which suppresses ignored-variable warnings in all build modes.
#define | JUCE_JOIN_MACRO(item1, item2) JUCE_JOIN_MACRO_HELPER (item1, item2)
| A good old-fashioned C macro concatenation helper.
#define | JUCE_STRINGIFY(item) JUCE_STRINGIFY_MACRO_HELPER (item)
| A handy C macro for stringifying any symbol, rather than just a macro parameter.
#define | JUCE_DECLARE_NON_COPYABLE(className)
| This is a shorthand macro for deleting a class's copy constructor and copy assignment operator.
#define | JUCE_DECLARE_NON_MOVEABLE(className)
| This is a shorthand macro for deleting a class's move constructor and move assignment operator.
#define | JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(className)
| This is a shorthand way of writing both a JUCE_DECLARE_NON_COPYABLE and JUCE_LEAK_DETECTOR macro for a class.
#define | JUCE_PREVENT_HEAP_ALLOCATION
| This macro can be added to class definitions to disable the use of new/delete to allocate the object on the heap, forcing it to only be used as a stack or member variable.
#define | JUCE_COMPILER_WARNING(message) _Pragma(JUCE_STRINGIFY (JUCE_WARNING_HELPER (message)))
| This macro allows you to emit a custom compiler warning message.
#define | forcedinline inline
| A platform-independent way of forcing an inline function.
#define | JUCE_ALIGN(bytes) __declspec (align (bytes))
| This can be placed before a stack or member variable declaration to tell the compiler to align it to the specified number of bytes.
#define | JUCE_NO_ASSOCIATIVE_MATH_OPTIMISATIONS __attribute__ ((__optimize__ ("no-associative-math")))
| This can be appended to a function declaration to tell gcc to disable associative math optimisations which break some floating point algorithms.
#define | JUCE_MAJOR_VERSION 7
| Current JUCE version number.
#define | JUCE_MINOR_VERSION 0
#define | JUCE_BUILDNUMBER 12
#define | JUCE_VERSION ((JUCE_MAJOR_VERSION << 16) + (JUCE_MINOR_VERSION << 8) + JUCE_BUILDNUMBER)
| Current JUCE version number.
#define | JUCE_API
| This macro is added to all JUCE public class declarations.
#define | JUCE_PUBLIC_IN_DLL_BUILD(declaration) declaration;
#define | JUCE_PUBLIC_FUNCTION JUCE_API JUCE_CALLTYPE
| This macro is added to all JUCE public function declarations.
#define | JUCE_ANDROID 1
#define | JUCE_DEBUG 1
#define | JUCE_BIG_ENDIAN 1
#define | JUCE_32BIT 1
#define | JUCE_INTEL 1

## Detailed Description

## Macro Definition Documentation

## ◆ JUCE_NTH_ARG_

#define JUCE_NTH_ARG_ | ( |  | _00,
|  |  | _01,
|  |  | _02,
|  |  | _03,
|  |  | _04,
|  |  | _05,
|  |  | _06,
|  |  | _07,
|  |  | _08,
|  |  | _09,
|  |  | _10,
|  |  | _11,
|  |  | _12,
|  |  | _13,
|  |  | _14,
|  |  | _15,
|  |  | _16,
|  |  | _17,
|  |  | _18,
|  |  | _19,
|  |  | _20,
|  |  | _21,
|  |  | _22,
|  |  | _23,
|  |  | _24,
|  |  | _25,
|  |  | _26,
|  |  | _27,
|  |  | _28,
|  |  | _29,
|  |  | _30,
|  |  | _31,
|  |  | _32,
|  |  | _33,
|  |  | _34,
|  |  | _35,
|  |  | _36,
|  |  | _37,
|  |  | _38,
|  |  | _39,
|  |  | _40,
|  |  | _41,
|  |  | _42,
|  |  | _43,
|  |  | _44,
|  |  | _45,
|  |  | _46,
|  |  | _47,
|  |  | _48,
|  |  | _49,
|  |  | N,
|  |  | ... ) N

Return the Nth argument.

By passing a variadic pack followed by N other parameters, we can select one of those N parameter based on the length of the parameter pack.

## ◆ JUCE_EACH_00_

#define JUCE_EACH_00_ | ( |  | FN | ) |

## ◆ JUCE_EACH_01_

#define JUCE_EACH_01_ | ( |  | FN,
|  |  | X ) FN(X)

## ◆ JUCE_EACH_02_

#define JUCE_EACH_02_ | ( |  | FN,
|  |  | X,
|  |  | ... ) FN(X) JUCE_EACH_01_(FN, __VA_ARGS__)

## ◆ JUCE_EACH_03_

#define JUCE_EACH_03_ | ( |  | FN,
|  |  | X,
|  |  | ... ) FN(X) JUCE_EACH_02_(FN, __VA_ARGS__)

## ◆ JUCE_EACH_04_

#define JUCE_EACH_04_ | ( |  | FN,
|  |  | X,
|  |  | ... ) FN(X) JUCE_EACH_03_(FN, __VA_ARGS__)

## ◆ JUCE_EACH_05_

#define JUCE_EACH_05_ | ( |  | FN,
|  |  | X,
|  |  | ... ) FN(X) JUCE_EACH_04_(FN, __VA_ARGS__)

## ◆ JUCE_EACH_06_

#define JUCE_EACH_06_ | ( |  | FN,
|  |  | X,
|  |  | ... ) FN(X) JUCE_EACH_05_(FN, __VA_ARGS__)

## ◆ JUCE_EACH_07_

#define JUCE_EACH_07_ | ( |  | FN,
|  |  | X,
|  |  | ... ) FN(X) JUCE_EACH_06_(FN, __VA_ARGS__)

## ◆ JUCE_EACH_08_

#define JUCE_EACH_08_ | ( |  | FN,
|  |  | X,
|  |  | ... ) FN(X) JUCE_EACH_07_(FN, __VA_ARGS__)

## ◆ JUCE_EACH_09_

#define JUCE_EACH_09_ | ( |  | FN,
|  |  | X,
|  |  | ... ) FN(X) JUCE_EACH_08_(FN, __VA_ARGS__)

## ◆ JUCE_EACH_10_

#define JUCE_EACH_10_ | ( |  | FN,
|  |  | X,
|  |  | ... ) FN(X) JUCE_EACH_09_(FN, __VA_ARGS__)

## ◆ JUCE_EACH_11_

#define JUCE_EACH_11_ | ( |  | FN,
|  |  | X,
|  |  | ... ) FN(X) JUCE_EACH_10_(FN, __VA_ARGS__)

## ◆ JUCE_EACH_12_

#define JUCE_EACH_12_ | ( |  | FN,
|  |  | X,
|  |  | ... ) FN(X) JUCE_EACH_11_(FN, __VA_ARGS__)

## ◆ JUCE_EACH_13_

#define JUCE_EACH_13_ | ( |  | FN,
|  |  | X,
|  |  | ... ) FN(X) JUCE_EACH_12_(FN, __VA_ARGS__)

## ◆ JUCE_EACH_14_

#define JUCE_EACH_14_ | ( |  | FN,
|  |  | X,
|  |  | ... ) FN(X) JUCE_EACH_13_(FN, __VA_ARGS__)

## ◆ JUCE_EACH_15_

#define JUCE_EACH_15_ | ( |  | FN,
|  |  | X,
|  |  | ... ) FN(X) JUCE_EACH_14_(FN, __VA_ARGS__)

## ◆ JUCE_EACH_16_

#define JUCE_EACH_16_ | ( |  | FN,
|  |  | X,
|  |  | ... ) FN(X) JUCE_EACH_15_(FN, __VA_ARGS__)

## ◆ JUCE_EACH_17_

#define JUCE_EACH_17_ | ( |  | FN,
|  |  | X,
|  |  | ... ) FN(X) JUCE_EACH_16_(FN, __VA_ARGS__)

## ◆ JUCE_EACH_18_

#define JUCE_EACH_18_ | ( |  | FN,
|  |  | X,
|  |  | ... ) FN(X) JUCE_EACH_17_(FN, __VA_ARGS__)

## ◆ JUCE_EACH_19_

#define JUCE_EACH_19_ | ( |  | FN,
|  |  | X,
|  |  | ... ) FN(X) JUCE_EACH_18_(FN, __VA_ARGS__)

## ◆ JUCE_EACH_20_

#define JUCE_EACH_20_ | ( |  | FN,
|  |  | X,
|  |  | ... ) FN(X) JUCE_EACH_19_(FN, __VA_ARGS__)

## ◆ JUCE_EACH_21_

#define JUCE_EACH_21_ | ( |  | FN,
|  |  | X,
|  |  | ... ) FN(X) JUCE_EACH_20_(FN, __VA_ARGS__)

## ◆ JUCE_EACH_22_

#define JUCE_EACH_22_ | ( |  | FN,
|  |  | X,
|  |  | ... ) FN(X) JUCE_EACH_21_(FN, __VA_ARGS__)

## ◆ JUCE_EACH_23_

#define JUCE_EACH_23_ | ( |  | FN,
|  |  | X,
|  |  | ... ) FN(X) JUCE_EACH_22_(FN, __VA_ARGS__)

## ◆ JUCE_EACH_24_

#define JUCE_EACH_24_ | ( |  | FN,
|  |  | X,
|  |  | ... ) FN(X) JUCE_EACH_23_(FN, __VA_ARGS__)

## ◆ JUCE_EACH_25_

#define JUCE_EACH_25_ | ( |  | FN,
|  |  | X,
|  |  | ... ) FN(X) JUCE_EACH_24_(FN, __VA_ARGS__)

## ◆ JUCE_EACH_26_

#define JUCE_EACH_26_ | ( |  | FN,
|  |  | X,
|  |  | ... ) FN(X) JUCE_EACH_25_(FN, __VA_ARGS__)

## ◆ JUCE_EACH_27_

#define JUCE_EACH_27_ | ( |  | FN,
|  |  | X,
|  |  | ... ) FN(X) JUCE_EACH_26_(FN, __VA_ARGS__)

## ◆ JUCE_EACH_28_

#define JUCE_EACH_28_ | ( |  | FN,
|  |  | X,
|  |  | ... ) FN(X) JUCE_EACH_27_(FN, __VA_ARGS__)

## ◆ JUCE_EACH_29_

#define JUCE_EACH_29_ | ( |  | FN,
|  |  | X,
|  |  | ... ) FN(X) JUCE_EACH_28_(FN, __VA_ARGS__)

## ◆ JUCE_EACH_30_

#define JUCE_EACH_30_ | ( |  | FN,
|  |  | X,
|  |  | ... ) FN(X) JUCE_EACH_29_(FN, __VA_ARGS__)

## ◆ JUCE_EACH_31_

#define JUCE_EACH_31_ | ( |  | FN,
|  |  | X,
|  |  | ... ) FN(X) JUCE_EACH_30_(FN, __VA_ARGS__)

## ◆ JUCE_EACH_32_

#define JUCE_EACH_32_ | ( |  | FN,
|  |  | X,
|  |  | ... ) FN(X) JUCE_EACH_31_(FN, __VA_ARGS__)

## ◆ JUCE_EACH_33_

#define JUCE_EACH_33_ | ( |  | FN,
|  |  | X,
|  |  | ... ) FN(X) JUCE_EACH_32_(FN, __VA_ARGS__)

## ◆ JUCE_EACH_34_

#define JUCE_EACH_34_ | ( |  | FN,
|  |  | X,
|  |  | ... ) FN(X) JUCE_EACH_33_(FN, __VA_ARGS__)

## ◆ JUCE_EACH_35_

#define JUCE_EACH_35_ | ( |  | FN,
|  |  | X,
|  |  | ... ) FN(X) JUCE_EACH_34_(FN, __VA_ARGS__)

## ◆ JUCE_EACH_36_

#define JUCE_EACH_36_ | ( |  | FN,
|  |  | X,
|  |  | ... ) FN(X) JUCE_EACH_35_(FN, __VA_ARGS__)

## ◆ JUCE_EACH_37_

#define JUCE_EACH_37_ | ( |  | FN,
|  |  | X,
|  |  | ... ) FN(X) JUCE_EACH_36_(FN, __VA_ARGS__)

## ◆ JUCE_EACH_38_

#define JUCE_EACH_38_ | ( |  | FN,
|  |  | X,
|  |  | ... ) FN(X) JUCE_EACH_37_(FN, __VA_ARGS__)

## ◆ JUCE_EACH_39_

#define JUCE_EACH_39_ | ( |  | FN,
|  |  | X,
|  |  | ... ) FN(X) JUCE_EACH_38_(FN, __VA_ARGS__)

## ◆ JUCE_EACH_40_

#define JUCE_EACH_40_ | ( |  | FN,
|  |  | X,
|  |  | ... ) FN(X) JUCE_EACH_39_(FN, __VA_ARGS__)

## ◆ JUCE_EACH_41_

#define JUCE_EACH_41_ | ( |  | FN,
|  |  | X,
|  |  | ... ) FN(X) JUCE_EACH_40_(FN, __VA_ARGS__)

## ◆ JUCE_EACH_42_

#define JUCE_EACH_42_ | ( |  | FN,
|  |  | X,
|  |  | ... ) FN(X) JUCE_EACH_41_(FN, __VA_ARGS__)

## ◆ JUCE_EACH_43_

#define JUCE_EACH_43_ | ( |  | FN,
|  |  | X,
|  |  | ... ) FN(X) JUCE_EACH_42_(FN, __VA_ARGS__)

## ◆ JUCE_EACH_44_

#define JUCE_EACH_44_ | ( |  | FN,
|  |  | X,
|  |  | ... ) FN(X) JUCE_EACH_43_(FN, __VA_ARGS__)

## ◆ JUCE_EACH_45_

#define JUCE_EACH_45_ | ( |  | FN,
|  |  | X,
|  |  | ... ) FN(X) JUCE_EACH_44_(FN, __VA_ARGS__)

## ◆ JUCE_EACH_46_

#define JUCE_EACH_46_ | ( |  | FN,
|  |  | X,
|  |  | ... ) FN(X) JUCE_EACH_45_(FN, __VA_ARGS__)

## ◆ JUCE_EACH_47_

#define JUCE_EACH_47_ | ( |  | FN,
|  |  | X,
|  |  | ... ) FN(X) JUCE_EACH_46_(FN, __VA_ARGS__)

## ◆ JUCE_EACH_48_

#define JUCE_EACH_48_ | ( |  | FN,
|  |  | X,
|  |  | ... ) FN(X) JUCE_EACH_47_(FN, __VA_ARGS__)

## ◆ JUCE_EACH_49_

#define JUCE_EACH_49_ | ( |  | FN,
|  |  | X,
|  |  | ... ) FN(X) JUCE_EACH_48_(FN, __VA_ARGS__)

## ◆ JUCE_EACH

#define JUCE_EACH | ( |  | FN,
|  |  | ... )

Apply the macro FN to each of the other arguments.

## ◆ JUCE_CONCAT_

#define JUCE_CONCAT_ | ( |  | a,
|  |  | b ) a##b

Concatenate two tokens to form a new token.

## ◆ JUCE_CONCAT

#define JUCE_CONCAT | ( |  | a,
|  |  | b ) JUCE_CONCAT_(a, b)

## ◆ JUCE_TO_STRING

#define JUCE_TO_STRING | ( |  | x | ) | #x

Quote the argument, turning it into a string.

## ◆ JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE

#define JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE | ( |  | ... | ) |

Referenced by exactlyEqual(), and NullCheckedInvocation::invoke().

## ◆ JUCE_END_IGNORE_WARNINGS_GCC_LIKE

#define JUCE_END_IGNORE_WARNINGS_GCC_LIKE

Referenced by exactlyEqual(), and NullCheckedInvocation::invoke().

## ◆ JUCE_IGNORE_MSVC

#define JUCE_IGNORE_MSVC | ( |  | warnings | ) |

Push/pop warnings on MSVC.

These macros expand to nothing on other compilers (like clang and gcc).

## ◆ JUCE_BEGIN_IGNORE_WARNINGS_LEVEL_MSVC

#define JUCE_BEGIN_IGNORE_WARNINGS_LEVEL_MSVC | ( |  | level,
|  |  | warnings )

## ◆ JUCE_BEGIN_IGNORE_WARNINGS_MSVC

#define JUCE_BEGIN_IGNORE_WARNINGS_MSVC | ( |  | warnings | ) |

Referenced by AudioBuffer< Type >::addFrom(), AudioBuffer< Type >::clear(), LinkedListPointer< ObjectType >::copyToArray(), LinkedListPointer< ObjectType >::insertNext(), CharPointer_UTF8::isByteOrderMark(), CharPointer_UTF16::isByteOrderMarkBigEndian(), CharPointer_UTF16::isByteOrderMarkLittleEndian(), juce::dsp::Bias< FloatType >::process(), juce::dsp::Gain< FloatType >::process(), Reverb::processMono(), Reverb::processStereo(), LinkedListPointer< ObjectType >::replaceNext(), and CharPointer_UTF8::sizeInBytes().

## ◆ JUCE_END_IGNORE_WARNINGS_MSVC

#define JUCE_END_IGNORE_WARNINGS_MSVC

Referenced by AudioBuffer< Type >::addFrom(), AudioBuffer< Type >::clear(), LinkedListPointer< ObjectType >::copyToArray(), LinkedListPointer< ObjectType >::insertNext(), CharPointer_UTF8::isByteOrderMark(), CharPointer_UTF16::isByteOrderMarkBigEndian(), CharPointer_UTF16::isByteOrderMarkLittleEndian(), juce::dsp::Bias< FloatType >::process(), juce::dsp::Gain< FloatType >::process(), Reverb::processMono(), Reverb::processStereo(), LinkedListPointer< ObjectType >::replaceNext(), and CharPointer_UTF8::sizeInBytes().

## ◆ JUCE_SANITIZER_ATTRIBUTE_MINIMUM_CLANG_VERSION

#define JUCE_SANITIZER_ATTRIBUTE_MINIMUM_CLANG_VERSION 11

## ◆ JUCE_BEGIN_NO_SANITIZE

#define JUCE_BEGIN_NO_SANITIZE | ( |  | warnings | ) |

Disable sanitizers for a range of functions.

This functionality doesn't seem to exist on GCC yet, so at the moment this only works for clang.

## ◆ JUCE_END_NO_SANITIZE

#define JUCE_END_NO_SANITIZE

## ◆ JUCE_CALLTYPE

#define JUCE_CALLTYPE

This macro defines the C calling convention used as the standard for JUCE calls.

## ◆ JUCE_CDECL

#define JUCE_CDECL

## ◆ JUCE_LOG_CURRENT_ASSERTION

#define JUCE_LOG_CURRENT_ASSERTION

## ◆ JUCE_BREAK_IN_DEBUGGER

#define JUCE_BREAK_IN_DEBUGGER { ::kill (0, SIGTRAP); }

This will try to break into the debugger if the app is currently being debugged.

If called by an app that's not being debugged, the behaviour isn't defined - it may crash or not, depending on the platform.

See also
  jassert()

## ◆ JUCE_ANALYZER_NORETURN

#define JUCE_ANALYZER_NORETURN

## ◆ JUCE_FALLTHROUGH

#define JUCE_FALLTHROUGH

Used to silence Wimplicit-fallthrough on Clang and GCC where available as there are a few places in the codebase where we need to do this deliberately and want to ignore the warning.

Referenced by CharacterFunctions::readDoubleValue(), and CppTokeniserFunctions::writeEscapeChars().

## ◆ JUCE_BLOCK_WITH_FORCED_SEMICOLON

#define JUCE_BLOCK_WITH_FORCED_SEMICOLON | ( |  | x | ) | do { x } while (false)

This is the good old C++ trick for creating a macro that forces the user to put a semicolon after it when they use it.

## ◆ DBG

#define DBG | ( |  | textToWrite | ) | JUCE_BLOCK_WITH_FORCED_SEMICOLON (juce::String tempDbgBuf; tempDbgBuf << textToWrite; juce::Logger::outputDebugString (tempDbgBuf);)

Writes a string to the standard error stream.

Note that as well as a single string, you can use this to write multiple items as a stream, e.g.

DBG ("foo = " << foo << "bar = " << bar);
DBG
#define DBG(textToWrite)
Writes a string to the standard error stream.
Definition juce_PlatformDefs.h:146

The macro is only enabled in a debug build, so be careful not to use it with expressions that have important side-effects!

See also
  Logger::outputDebugString

Referenced by OSCException::OSCException(), and LeakedObjectDetector< OwnerClass >::~LeakedObjectDetector().

## ◆ jassertfalse

#define jassertfalse JUCE_BLOCK_WITH_FORCED_SEMICOLON (JUCE_LOG_CURRENT_ASSERTION; if (juce::juce_isRunningUnderDebugger()) JUCE_BREAK_IN_DEBUGGER; JUCE_ANALYZER_NORETURN)

This will always cause an assertion failure.

It is only compiled in a debug build, (unless JUCE_LOG_ASSERTIONS is enabled for your build).

See also
  jassert

Referenced by ListenerList< ListenerClass, ArrayType >::add(), ArrayBase< ElementType, TypeOfCriticalSectionToUse >::addArray(), OwnedArray< ObjectClass, TypeOfCriticalSectionToUse >::addCopiesOf(), SortedSet< ElementType, TypeOfCriticalSectionToUse >::addSet(), AudioFormatReader::clearSamplesBeyondAvailableLength(), SingletonHolder< Type, MutexType, onlyCreateOncePerRun >::get(), AudioProcessor::memoryWarningReceived(), JUCEApplicationBase::memoryWarningReceived(), juce::dsp::Reverb::process(), juce::dsp::StateVariableFilter::Filter< SampleType >::processSample(), Array< ElementType, TypeOfCriticalSectionToUse, minimumAllocatedSize >::remove(), OwnedArray< ObjectClass, TypeOfCriticalSectionToUse >::set(), Array< ElementType, TypeOfCriticalSectionToUse, minimumAllocatedSize >::set(), juce::midi_ci::DeviceOptions::withProductInstanceId(), and LeakedObjectDetector< OwnerClass >::~LeakedObjectDetector().

## ◆ jassert

#define jassert | ( |  | expression | ) | JUCE_BLOCK_WITH_FORCED_SEMICOLON (if (! (expression)) jassertfalse;)

Platform-independent assertion macro.

This macro gets turned into a no-op when you're building with debugging turned off, so be careful that the expression you pass to it doesn't perform any actions that are vital for the correct behaviour of your program!

See also
  jassertfalse

Referenced by AccessibilityValueInterface::AccessibleValueRange::AccessibleValueRange(), RectangleList< ValueType >::add(), ArrayBase< ElementType, TypeOfCriticalSectionToUse >::addArray(), ArrayBase< ElementType, TypeOfCriticalSectionToUse >::addArray(), OwnedArray< ObjectClass, TypeOfCriticalSectionToUse >::addCopiesOf(), AudioBuffer< Type >::addFrom(), AudioBuffer< Type >::addFrom(), AudioBuffer< Type >::addFromWithRamp(), juce::dsp::AudioBlock< SampleType >::addSample(), AudioBuffer< Type >::addSample(), SortedSet< ElementType, TypeOfCriticalSectionToUse >::addSet(), StatisticsAccumulator< FloatType >::addValue(), RectangleList< ValueType >::addWithoutMerging(), juce::dsp::Phase< Type >::advance(), String::appendCharPointer(), LinkedListPointer< ObjectType >::Appender::Appender(), ADSR::applyEnvelopeToBuffer(), SmoothedValueBase< SmoothedValueType >::applyGain(), SmoothedValueBase< SmoothedValueType >::applyGain(), SmoothedValueBase< SmoothedValueType >::applyGain(), AudioBuffer< Type >::applyGain(), AudioBuffer< Type >::applyGainRamp(), juce::dsp::AudioBlock< SampleType >::AudioBlock(), AudioBuffer< Type >::AudioBuffer(), AudioBuffer< Type >::AudioBuffer(), AudioBuffer< Type >::AudioBuffer(), LassoComponent< SelectableItemType >::beginLasso(), AudioBuffer< Type >::clear(), AudioBuffer< Type >::clear(), RectangleList< ValueType >::clipTo(), AudioData::ConverterInstance< SourceSampleType, DestSampleType >::convertSamples(), AudioBuffer< Type >::copyFrom(), AudioBuffer< Type >::copyFrom(), AudioBuffer< Type >::copyFrom(), AudioBuffer< Type >::copyFromWithRamp(), LinkedListPointer< ObjectType >::copyToArray(), juce::dsp::SIMDRegister< Type >::copyToRawArray(), createPluginFilterOfType(), ReferenceCountedObject::decReferenceCount(), SingleThreadedReferenceCountedObject::decReferenceCount(), ReferenceCountedObject::decReferenceCountWithoutDeleting(), SingleThreadedReferenceCountedObject::decReferenceCountWithoutDeleting(), ArrayAllocationBase< ElementType, TypeOfCriticalSectionToUse >::ensureAllocatedSize(), ArrayBase< ElementType, TypeOfCriticalSectionToUse >::ensureAllocatedSize(), SpinLock::exit(), AudioBuffer< Type >::findMinMax(), FixedSizeFunction< len, Ret(Args...)>::FixedSizeFunction(), juce::dsp::SIMDRegister< Type >::fromRawArray(), StrictVariantConverter< Type >::fromVar(), Decibels::gainWithLowerBound(), juce::dsp::SIMDRegister< Type >::get(), juce::dsp::AudioBlock< SampleType >::getChannelPointer(), juce::midi_ci::PropertyExchangeResult::getHeaderAsReplyHeader(), juce::midi_ci::PropertyExchangeResult::getHeaderAsRequestHeader(), juce::midi_ci::PropertyExchangeResult::getHeaderAsSubscriptionHeader(), RectangleList< ValueType >::getIntersectionWith(), AudioBuffer< Type >::getMagnitude(), AudioBuffer< Type >::getReadPointer(), AudioBuffer< Type >::getReadPointer(), AudioBuffer< Type >::getRMSLevel(), AudioBuffer< Type >::getSample(), juce::dsp::AudioBlock< SampleType >::getSample(), WeakReference< ObjectType, ReferenceCountingType >::Master::getSharedPointer(), juce::dsp::AudioBlock< SampleType >::getSingleChannelBlock(), juce::dsp::AudioBlock< SampleType >::getSubBlock(), juce::dsp::AudioBlock< SampleType >::getSubsetChannelBlock(), juce::dsp::LookupTable< FloatType >::getUnchecked(), AudioBuffer< Type >::getWritePointer(), AudioBuffer< Type >::getWritePointer(), LinkedListPointer< ObjectType >::insertAtIndex(), LinkedListPointer< ObjectType >::insertNext(), CharPointer_UTF8::isByteOrderMark(), CharPointer_UTF16::isByteOrderMarkBigEndian(), CharPointer_UTF16::isByteOrderMarkLittleEndian(), isPositiveAndBelow(), isPositiveAndBelow(), isPositiveAndNotGreaterThan(), isPositiveAndNotGreaterThan(), EdgeTable::iterate(), jlimit(), jmap(), juce::midi_ci::MUID::makeUnchecked(), mapFromLog10(), mapToLog10(), MidiMessage::MidiMessage(), negativeAwareModulo(), AudioProcessorGraph::Node::Node(), Quaternion< Type >::normalised(), juce::dsp::Matrix< ElementType >::operator()(), juce::dsp::Matrix< ElementType >::operator()(), ReferenceCountedObjectPtr< ObjectType >::operator*(), ComponentPeer::OptionalBorderSize::operator*(), CharPointer_UTF8::operator++(), ReferenceCountedObjectPtr< ObjectType >::operator->(), ComponentPeer::OptionalBorderSize::operator->(), LinkedListPointer< ObjectType >::operator=(), ArrayBase< ElementType, TypeOfCriticalSectionToUse >::operator[](), ArrayBase< ElementType, TypeOfCriticalSectionToUse >::operator[](), juce::dsp::SIMDRegister< Type >::operator[](), LassoComponent< SelectableItemType >::paint(), juce::dsp::Polynomial< FloatingType >::Polynomial(), juce::dsp::Polynomial< FloatingType >::Polynomial(), juce::dsp::FIR::Filter< SampleType >::prepare(), juce::dsp::AudioBlock< SampleType >::process(), juce::dsp::BallisticsFilter< SampleType >::process(), juce::dsp::DelayLine< SampleType, InterpolationType >::process(), juce::dsp::FIR::Filter< SampleType >::process(), juce::dsp::FirstOrderTPTFilter< SampleType >::process(), juce::dsp::LinkwitzRileyFilter< SampleType >::process(), juce::dsp::Panner< SampleType >::process(), juce::dsp::ProcessorDuplicator< MonoProcessorType, StateType >::process(), juce::dsp::StateVariableTPTFilter< SampleType >::process(), juce::dsp::Bias< FloatType >::process(), juce::dsp::Chorus< SampleType >::process(), juce::dsp::Compressor< SampleType >::process(), juce::dsp::Gain< FloatType >::process(), juce::dsp::LadderFilter< SampleType >::process(), juce::dsp::Limiter< SampleType >::process(), juce::dsp::NoiseGate< SampleType >::process(), juce::dsp::Oscillator< SampleType >::process(), juce::dsp::Phaser< SampleType >::process(), juce::dsp::Reverb::process(), juce::dsp::ProcessContextNonReplacing< ContextSampleType >::ProcessContextNonReplacing(), Reverb::processMono(), juce::dsp::LookupTableTransform< FloatType >::processSample(), juce::dsp::Oscillator< SampleType >::processSample(), juce::dsp::LookupTableTransform< FloatType >::processSampleUnchecked(), Reverb::processStereo(), Array< ElementType, TypeOfCriticalSectionToUse, minimumAllocatedSize >::remove(), ListenerList< ListenerClass, ArrayType >::remove(), ArrayBase< ElementType, TypeOfCriticalSectionToUse >::removeElements(), Array< ElementType, TypeOfCriticalSectionToUse, minimumAllocatedSize >::removeLast(), SparseSet< Type >::removeRange(), LinkedListPointer< ObjectType >::replaceNext(), SmoothedValue< FloatType, SmoothingType >::reset(), juce::dsp::LogRampedValue< FloatType >::reset(), Array< ElementType, TypeOfCriticalSectionToUse, minimumAllocatedSize >::resize(), AudioBuffer< Type >::reverse(), juce::dsp::SIMDRegister< Type >::set(), ArrayBase< ElementType, TypeOfCriticalSectionToUse >::setAllocatedSize(), juce::dsp::Bias< FloatType >::setBias(), juce::dsp::StateVariableFilter::Parameters< NumericType >::setCutOffFrequency(), AudioBuffer< Type >::setDataToReferTo(), juce::dsp::LogRampedValue< FloatType >::setLogParameters(), ADSR::setParameters(), juce::dsp::AudioBlock< SampleType >::setSample(), AudioBuffer< Type >::setSample(), Reverb::setSampleRate(), ADSR::setSampleRate(), AudioBuffer< Type >::setSize(), NormalisableRange< ValueType >::setSkewForCentre(), SmoothedValue< FloatType, SmoothingType >::setTargetValue(), Array< ElementType, TypeOfCriticalSectionToUse, minimumAllocatedSize >::setUnchecked(), SingleThreadedAbstractFifo::SingleThreadedAbstractFifo(), CharPointer_UTF8::sizeInBytes(), SmoothedValue< FloatType, SmoothingType >::SmoothedValue(), GridItem::Span::Span(), GridItem::Span::Span(), GridItem::Span::Span(), TimedCallback::TimedCallback(), String::toDecimalStringWithSignificantFigures(), StrictVariantConverter< Type >::toVar(), truncatePositiveToUnsignedInt(), Thread::RealtimeOptions::withApproximateAudioProcessingTime(), WebBrowserComponent::Options::WinWebView2::withBackgroundColour(), juce::midi_ci::ChannelAddress::withGroup(), Thread::RealtimeOptions::withMaximumProcessingTimeMs(), Thread::RealtimeOptions::withPeriodHz(), Thread::RealtimeOptions::withPeriodMs(), Thread::RealtimeOptions::withPriority(), Thread::RealtimeOptions::withProcessingTimeMs(), Range< ValueType >::withStartAndLength(), WeakReference< ObjectType, ReferenceCountingType >::Master::~Master(), ReferenceCountedObject::~ReferenceCountedObject(), SingleThreadedReferenceCountedObject::~SingleThreadedReferenceCountedObject(), and SingletonHolder< Type, MutexType, onlyCreateOncePerRun >::~SingletonHolder().

## ◆ jassertquiet

#define jassertquiet | ( |  | expression | ) | JUCE_BLOCK_WITH_FORCED_SEMICOLON (if (! (expression)) jassertfalse;)

Platform-independent assertion macro which suppresses ignored-variable warnings in all build modes.

You should probably use a plain jassert() and [[maybe_unused]] by default.

## ◆ JUCE_JOIN_MACRO

#define JUCE_JOIN_MACRO | ( |  | item1,
|  |  | item2 ) JUCE_JOIN_MACRO_HELPER (item1, item2)

A good old-fashioned C macro concatenation helper.

This combines two items (which may themselves be macros) into a single string, avoiding the pitfalls of the ## macro operator.

## ◆ JUCE_STRINGIFY

#define JUCE_STRINGIFY | ( |  | item | ) | JUCE_STRINGIFY_MACRO_HELPER (item)

A handy C macro for stringifying any symbol, rather than just a macro parameter.

## ◆ JUCE_DECLARE_NON_COPYABLE

#define JUCE_DECLARE_NON_COPYABLE | ( |  | className | ) |

Value:
className (const className&) = delete;\
className& operator= (const className&) = delete;

This is a shorthand macro for deleting a class's copy constructor and copy assignment operator.

For example, instead of

class MyClass
{
etc..
private:
MyClass (const MyClass&);
MyClass& operator= (const MyClass&);
};

..you can just write:

class MyClass
{
etc..
private:
JUCE_DECLARE_NON_COPYABLE (MyClass)
};
JUCE_DECLARE_NON_COPYABLE
#define JUCE_DECLARE_NON_COPYABLE(className)
This is a shorthand macro for deleting a class's copy constructor and copy assignment operator.
Definition juce_PlatformDefs.h:229

## ◆ JUCE_DECLARE_NON_MOVEABLE

#define JUCE_DECLARE_NON_MOVEABLE | ( |  | className | ) |

Value:
className (className&&) = delete;\
className& operator= (className&&) = delete;

This is a shorthand macro for deleting a class's move constructor and move assignment operator.

## ◆ JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR

#define JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR | ( |  | className | ) |

Value:
JUCE_DECLARE_NON_COPYABLE(className) \
JUCE_LEAK_DETECTOR(className)

This is a shorthand way of writing both a JUCE_DECLARE_NON_COPYABLE and JUCE_LEAK_DETECTOR macro for a class.

## ◆ JUCE_PREVENT_HEAP_ALLOCATION

#define JUCE_PREVENT_HEAP_ALLOCATION

Value:
private: \
static void* operator new (size_t) = delete; \
static void operator delete (void*) = delete;

This macro can be added to class definitions to disable the use of new/delete to allocate the object on the heap, forcing it to only be used as a stack or member variable.

## ◆ JUCE_COMPILER_WARNING

#define JUCE_COMPILER_WARNING | ( |  | message | ) | _Pragma(JUCE_STRINGIFY (JUCE_WARNING_HELPER (message)))

This macro allows you to emit a custom compiler warning message.

Very handy for marking bits of code as "to-do" items, or for shaming code written by your co-workers in a way that's hard to ignore.

GCC and Clang provide the #warning directive, but MSVC doesn't, so this macro is a cross-compiler way to get the same functionality as #warning.

## ◆ forcedinline

#define forcedinline inline

A platform-independent way of forcing an inline function.

Use the syntax:

forcedinline void myfunction (int x)
x
float x
Definition juce_UnityPluginInterface.h:192
forcedinline
#define forcedinline
A platform-independent way of forcing an inline function.
Definition juce_PlatformDefs.h:282

## ◆ JUCE_ALIGN

#define JUCE_ALIGN | ( |  | bytes | ) | __declspec (align (bytes))

This can be placed before a stack or member variable declaration to tell the compiler to align it to the specified number of bytes.

## ◆ JUCE_NO_ASSOCIATIVE_MATH_OPTIMISATIONS

#define JUCE_NO_ASSOCIATIVE_MATH_OPTIMISATIONS __attribute__ ((__optimize__ ("no-associative-math")))

This can be appended to a function declaration to tell gcc to disable associative math optimisations which break some floating point algorithms.

## ◆ JUCE_MAJOR_VERSION

#define JUCE_MAJOR_VERSION 7

Current JUCE version number.

See also SystemStats::getJUCEVersion() for a string version.

## ◆ JUCE_MINOR_VERSION

#define JUCE_MINOR_VERSION 0

## ◆ JUCE_BUILDNUMBER

#define JUCE_BUILDNUMBER 12

## ◆ JUCE_VERSION

#define JUCE_VERSION ((JUCE_MAJOR_VERSION << 16) + (JUCE_MINOR_VERSION << 8) + JUCE_BUILDNUMBER)

Current JUCE version number.

Bits 16 to 32 = major version. Bits 8 to 16 = minor version. Bits 0 to 8 = point release.

See also SystemStats::getJUCEVersion() for a string version.

## ◆ JUCE_API

#define JUCE_API

This macro is added to all JUCE public class declarations.

## ◆ JUCE_PUBLIC_IN_DLL_BUILD

#define JUCE_PUBLIC_IN_DLL_BUILD | ( |  | declaration | ) | declaration;

## ◆ JUCE_PUBLIC_FUNCTION

#define JUCE_PUBLIC_FUNCTION JUCE_API JUCE_CALLTYPE

This macro is added to all JUCE public function declarations.

## ◆ JUCE_ANDROID

#define JUCE_ANDROID 1

## ◆ JUCE_DEBUG

#define JUCE_DEBUG 1

## ◆ JUCE_BIG_ENDIAN [1/2]

#define JUCE_BIG_ENDIAN 1

## ◆ JUCE_BIG_ENDIAN [2/2]

#define JUCE_BIG_ENDIAN 1

## ◆ JUCE_32BIT [1/2]

#define JUCE_32BIT 1

## ◆ JUCE_32BIT [2/2]

#define JUCE_32BIT 1

## ◆ JUCE_INTEL

#define JUCE_INTEL 1