JUCE
Macros | Functions
memory

Macros

#define JUCE_HEAVYWEIGHT_LEAK_DETECTOR(OwnerClass)
 This macro lets you embed a heavyweight leak-detecting object inside a class. More...
 
#define JUCE_LEAK_DETECTOR(OwnerClass)
 This macro lets you embed a leak-detecting object inside a class. More...
 
#define JUCE_AUTORELEASEPOOL   @autoreleasepool
 A macro that can be used to easily declare a local ScopedAutoReleasePool object for RAII-based obj-C autoreleasing. More...
 
#define juce_UseDebuggingNewOperator
 (Deprecated) This was a Windows-specific way of checking for object leaks - now please use the JUCE_LEAK_DETECTOR instead. More...
 
#define JUCE_DECLARE_SINGLETON(Classname, doNotRecreateAfterDeletion)
 Macro to generate the appropriate methods and boilerplate for a singleton class. More...
 
#define JUCE_IMPLEMENT_SINGLETON(Classname)
 This is a counterpart to the JUCE_DECLARE_SINGLETON macros. More...
 
#define JUCE_DECLARE_SINGLETON_SINGLETHREADED(Classname, doNotRecreateAfterDeletion)
 Macro to declare member variables and methods for a singleton class. More...
 
#define JUCE_DECLARE_SINGLETON_SINGLETHREADED_MINIMAL(Classname)
 Macro to declare member variables and methods for a singleton class. More...
 
#define JUCE_DECLARE_WEAK_REFERENCEABLE(Class)
 Macro to easily allow a class to be made weak-referenceable. More...
 

Functions

void zeromem (void *memory, size_t numBytes) noexcept
 Fills a block of memory with zeros. More...
 
template<typename Type >
void zerostruct (Type &structure) noexcept
 Overwrites a structure or object with zeros. More...
 
template<typename Type >
void deleteAndZero (Type &pointer)
 Delete an object pointer, and sets the pointer to null. More...
 
template<typename Type , typename IntegerType >
Type * snapPointerToAlignment (Type *basePointer, IntegerType alignmentBytes) noexcept
 A handy function to round up a pointer to the nearest multiple of a given number of bytes. More...
 
template<typename Type1 , typename Type2 >
int getAddressDifference (Type1 *pointer1, Type2 *pointer2) noexcept
 A handy function which returns the difference between any two pointers, in bytes. More...
 
template<class Type >
Type * createCopyIfNotNull (const Type *objectToCopy)
 If a pointer is non-null, this returns a new copy of the object that it points to, or safely returns nullptr if the pointer is null. More...
 
template<typename Type >
Type readUnaligned (const void *srcPtr) noexcept
 A handy function to read un-aligned memory without a performance penalty or bus-error. More...
 
template<typename Type >
void writeUnaligned (void *dstPtr, Type value) noexcept
 A handy function to write un-aligned memory without a performance penalty or bus-error. More...
 
template<typename Type , typename std::enable_if< std::is_pointer< Type >::value, int >::type = 0>
Type unalignedPointerCast (void *ptr) noexcept
 Casts a pointer to another type via void*, which suppresses the cast-align warning which sometimes arises when casting pointers to types with different alignment. More...
 
template<typename Type , typename std::enable_if< std::is_pointer< Type >::value, int >::type = 0>
Type unalignedPointerCast (const void *ptr) noexcept
 Casts a pointer to another type via void*, which suppresses the cast-align warning which sometimes arises when casting pointers to types with different alignment. More...
 
template<typename Type , typename IntegerType >
Type * addBytesToPointer (Type *basePointer, IntegerType bytes) noexcept
 A handy function which adds a number of bytes to any type of pointer and returns the result. More...
 
template<typename Type , typename IntegerType >
const Type * addBytesToPointer (const Type *basePointer, IntegerType bytes) noexcept
 A handy function which adds a number of bytes to any type of pointer and returns the result. More...
 
template<typename T >
std::unique_ptr< T > rawToUniquePtr (T *ptr)
 Converts an owning raw pointer into a unique_ptr, deriving the type of the unique_ptr automatically. More...
 
template<typename Type >
bool operator== (const Type *object1, const ReferenceCountedObjectPtr< Type > &object2) noexcept
 Compares two ReferenceCountedObjectPtrs. More...
 
template<typename Type >
bool operator!= (const Type *object1, const ReferenceCountedObjectPtr< Type > &object2) noexcept
 Compares two ReferenceCountedObjectPtrs. More...
 
constexpr static uint16 ByteOrder::swap (uint16 value) noexcept
 Swaps the upper and lower bytes of a 16-bit integer. More...
 
constexpr static int16 ByteOrder::swap (int16 value) noexcept
 Swaps the upper and lower bytes of a 16-bit integer. More...
 
static int32 ByteOrder::swap (int32 value) noexcept
 Reverses the order of the 4 bytes in a 32-bit integer. More...
 
static int64 ByteOrder::swap (int64 value) noexcept
 Reverses the order of the 8 bytes in a 64-bit integer. More...
 
static float ByteOrder::swap (float value) noexcept
 Returns a garbled float which has the reverse byte-order of the original. More...
 
static double ByteOrder::swap (double value) noexcept
 Returns a garbled double which has the reverse byte-order of the original. More...
 
static uint32 ByteOrder::swap (uint32 value) noexcept
 Reverses the order of the 4 bytes in a 32-bit integer. More...
 
static uint64 ByteOrder::swap (uint64 value) noexcept
 Reverses the order of the 8 bytes in a 64-bit integer. More...
 
constexpr static uint16 ByteOrder::makeInt (uint8 leastSig, uint8 mostSig) noexcept
 Constructs a 16-bit integer from its constituent bytes, in order of significance. More...
 
constexpr static uint32 ByteOrder::makeInt (uint8 leastSig, uint8 byte1, uint8 byte2, uint8 mostSig) noexcept
 Constructs a 32-bit integer from its constituent bytes, in order of significance. More...
 
constexpr static uint64 ByteOrder::makeInt (uint8 leastSig, uint8 byte1, uint8 byte2, uint8 byte3, uint8 byte4, uint8 byte5, uint8 byte6, uint8 mostSig) noexcept
 Constructs a 64-bit integer from its constituent bytes, in order of significance. More...
 
constexpr static uint16 ByteOrder::littleEndianShort (const void *bytes) noexcept
 Turns 2 bytes into a little-endian integer. More...
 
constexpr static uint32 ByteOrder::littleEndianInt (const void *bytes) noexcept
 Turns 4 bytes into a little-endian integer. More...
 
constexpr static uint64 ByteOrder::littleEndianInt64 (const void *bytes) noexcept
 Turns 8 bytes into a little-endian integer. More...
 
constexpr static uint16 ByteOrder::bigEndianShort (const void *bytes) noexcept
 Turns 2 bytes into a big-endian integer. More...
 
constexpr static uint32 ByteOrder::bigEndianInt (const void *bytes) noexcept
 Turns 4 bytes into a big-endian integer. More...
 
constexpr static uint64 ByteOrder::bigEndianInt64 (const void *bytes) noexcept
 Turns 8 bytes into a big-endian integer. More...
 
constexpr static int ByteOrder::littleEndian24Bit (const void *bytes) noexcept
 Converts 3 little-endian bytes into a signed 24-bit value (which is sign-extended to 32 bits). More...
 
constexpr static int ByteOrder::bigEndian24Bit (const void *bytes) noexcept
 Converts 3 big-endian bytes into a signed 24-bit value (which is sign-extended to 32 bits). More...
 
static void ByteOrder::littleEndian24BitToChars (int32 value, void *destBytes) noexcept
 Copies a 24-bit number to 3 little-endian bytes. More...
 
static void ByteOrder::bigEndian24BitToChars (int32 value, void *destBytes) noexcept
 Copies a 24-bit number to 3 big-endian bytes. More...
 

Detailed Description

Macro Definition Documentation

◆ JUCE_HEAVYWEIGHT_LEAK_DETECTOR

#define JUCE_HEAVYWEIGHT_LEAK_DETECTOR (   OwnerClass)
Value:
friend class juce::HeavyweightLeakedObjectDetector<OwnerClass>; \
static const char* getLeakedObjectClassName() noexcept { return #OwnerClass; } \
juce::HeavyweightLeakedObjectDetector<OwnerClass> JUCE_JOIN_MACRO (leakDetector, __LINE__);
#define JUCE_JOIN_MACRO(item1, item2)
A good old-fashioned C macro concatenation helper.
Definition: juce_PlatformDefs.h:200

This macro lets you embed a heavyweight leak-detecting object inside a class.

To use it, simply declare a JUCE_HEAVYWEIGHT_LEAK_DETECTOR (YourClassName) inside a private section of the class declaration. E.g.

class MyClass
{
public:
MyClass();
void blahBlah();
private:
};
#define JUCE_HEAVYWEIGHT_LEAK_DETECTOR(OwnerClass)
This macro lets you embed a heavyweight leak-detecting object inside a class.
Definition: juce_HeavyweightLeakedObjectDetector.h:136

NB: you should only use this when you really need to track down a tricky memory leak, and should never leave one of these inside a class!

See also
HeavyweightLeakedObjectDetector, JUCE_LEAK_DETECTOR, LeakedObjectDetector

◆ JUCE_LEAK_DETECTOR

#define JUCE_LEAK_DETECTOR (   OwnerClass)
Value:
friend class juce::LeakedObjectDetector<OwnerClass>; \
static const char* getLeakedObjectClassName() noexcept { return #OwnerClass; } \
juce::LeakedObjectDetector<OwnerClass> JUCE_JOIN_MACRO (leakDetector, __LINE__);

This macro lets you embed a leak-detecting object inside a class.

To use it, simply declare a JUCE_LEAK_DETECTOR(YourClassName) inside a private section of the class declaration. E.g.

class MyClass
{
public:
MyClass();
void blahBlah();
private:
};
#define JUCE_LEAK_DETECTOR(OwnerClass)
This macro lets you embed a leak-detecting object inside a class.
Definition: juce_LeakedObjectDetector.h:134
See also
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR, LeakedObjectDetector

◆ JUCE_AUTORELEASEPOOL

#define JUCE_AUTORELEASEPOOL   @autoreleasepool

A macro that can be used to easily declare a local ScopedAutoReleasePool object for RAII-based obj-C autoreleasing.

Because this may use the @autoreleasepool syntax, you must follow the macro with a set of braces to mark the scope of the pool.

◆ juce_UseDebuggingNewOperator

#define juce_UseDebuggingNewOperator

(Deprecated) This was a Windows-specific way of checking for object leaks - now please use the JUCE_LEAK_DETECTOR instead.

◆ JUCE_DECLARE_SINGLETON

#define JUCE_DECLARE_SINGLETON (   Classname,
  doNotRecreateAfterDeletion 
)
Value:
\
static juce::SingletonHolder<Classname, juce::CriticalSection, doNotRecreateAfterDeletion> singletonHolder; \
friend decltype (singletonHolder); \
\
static Classname* JUCE_CALLTYPE getInstance() { return singletonHolder.get(); } \
static Classname* JUCE_CALLTYPE getInstanceWithoutCreating() noexcept { return singletonHolder.instance; } \
static void JUCE_CALLTYPE deleteInstance() noexcept { singletonHolder.deleteInstance(); } \
void clearSingletonInstance() noexcept { singletonHolder.clear (this); }
#define JUCE_CALLTYPE
This macro defines the C calling convention used as the standard for JUCE calls.
Definition: juce_PlatformDefs.h:47

Macro to generate the appropriate methods and boilerplate for a singleton class.

To use this, add the line JUCE_DECLARE_SINGLETON(MyClass, doNotRecreateAfterDeletion) to the class's definition.

Then put a macro JUCE_IMPLEMENT_SINGLETON(MyClass) along with the class's implementation code.

It's also a very good idea to also add the call clearSingletonInstance() in your class's destructor, in case it is deleted by other means than deleteInstance()

Clients can then call the static method MyClass::getInstance() to get a pointer to the singleton, or MyClass::getInstanceWithoutCreating() which will return nullptr if no instance currently exists.

e.g.

struct MySingleton
{
MySingleton() {}
~MySingleton()
{
// this ensures that no dangling pointers are left when the
// singleton is deleted.
clearSingletonInstance();
}
JUCE_DECLARE_SINGLETON (MySingleton, false)
};
// ..and this goes in a suitable .cpp file:
// example of usage:
auto* m = MySingleton::getInstance(); // creates the singleton if there isn't already one.
...
MySingleton::deleteInstance(); // safely deletes the singleton (if it's been created).
#define JUCE_IMPLEMENT_SINGLETON(Classname)
This is a counterpart to the JUCE_DECLARE_SINGLETON macros.
Definition: juce_Singleton.h:202
#define JUCE_DECLARE_SINGLETON(Classname, doNotRecreateAfterDeletion)
Macro to generate the appropriate methods and boilerplate for a singleton class.
Definition: juce_Singleton.h:185
const GLfloat * m
Definition: juce_gl.h:6279

If doNotRecreateAfterDeletion = true, it won't allow the object to be created more than once during the process's lifetime - i.e. after you've created and deleted the object, getInstance() will refuse to create another one. This can be useful to stop objects being accidentally re-created during your app's shutdown code.

If you know that your object will only be created and deleted by a single thread, you can use the slightly more efficient JUCE_DECLARE_SINGLETON_SINGLETHREADED macro instead of this one.

See also
JUCE_IMPLEMENT_SINGLETON, JUCE_DECLARE_SINGLETON_SINGLETHREADED

◆ JUCE_IMPLEMENT_SINGLETON

#define JUCE_IMPLEMENT_SINGLETON (   Classname)
Value:
\
decltype (Classname::singletonHolder) Classname::singletonHolder;

This is a counterpart to the JUCE_DECLARE_SINGLETON macros.

After adding the JUCE_DECLARE_SINGLETON to the class definition, this macro has to be used in the cpp file.

◆ JUCE_DECLARE_SINGLETON_SINGLETHREADED

#define JUCE_DECLARE_SINGLETON_SINGLETHREADED (   Classname,
  doNotRecreateAfterDeletion 
)
Value:
\
static juce::SingletonHolder<Classname, juce::DummyCriticalSection, doNotRecreateAfterDeletion> singletonHolder; \
friend decltype (singletonHolder); \
\
static Classname* JUCE_CALLTYPE getInstance() { return singletonHolder.get(); } \
static Classname* JUCE_CALLTYPE getInstanceWithoutCreating() noexcept { return singletonHolder.instance; } \
static void JUCE_CALLTYPE deleteInstance() noexcept { singletonHolder.deleteInstance(); } \
void clearSingletonInstance() noexcept { singletonHolder.clear (this); }

Macro to declare member variables and methods for a singleton class.

This is exactly the same as JUCE_DECLARE_SINGLETON, but doesn't use a critical section to make access to it thread-safe. If you know that your object will only ever be created or deleted by a single thread, then this is a more efficient version to use.

If doNotRecreateAfterDeletion = true, it won't allow the object to be created more than once during the process's lifetime - i.e. after you've created and deleted the object, getInstance() will refuse to create another one. This can be useful to stop objects being accidentally re-created during your app's shutdown code.

See the documentation for JUCE_DECLARE_SINGLETON for more information about how to use it. Just like JUCE_DECLARE_SINGLETON you need to also have a corresponding JUCE_IMPLEMENT_SINGLETON statement somewhere in your code.

See also
JUCE_IMPLEMENT_SINGLETON, JUCE_DECLARE_SINGLETON, JUCE_DECLARE_SINGLETON_SINGLETHREADED_MINIMAL

◆ JUCE_DECLARE_SINGLETON_SINGLETHREADED_MINIMAL

#define JUCE_DECLARE_SINGLETON_SINGLETHREADED_MINIMAL (   Classname)
Value:
\
static juce::SingletonHolder<Classname, juce::DummyCriticalSection, false> singletonHolder; \
friend decltype (singletonHolder); \
\
static Classname* JUCE_CALLTYPE getInstance() { return singletonHolder.getWithoutChecking(); } \
static Classname* JUCE_CALLTYPE getInstanceWithoutCreating() noexcept { return singletonHolder.instance; } \
static void JUCE_CALLTYPE deleteInstance() noexcept { singletonHolder.deleteInstance(); } \
void clearSingletonInstance() noexcept { singletonHolder.clear (this); }

Macro to declare member variables and methods for a singleton class.

This is like JUCE_DECLARE_SINGLETON_SINGLETHREADED, but doesn't do any checking for recursion or repeated instantiation. It's intended for use as a lightweight version of a singleton, where you're using it in very straightforward circumstances and don't need the extra checking.

See the documentation for JUCE_DECLARE_SINGLETON for more information about how to use it. Just like JUCE_DECLARE_SINGLETON you need to also have a corresponding JUCE_IMPLEMENT_SINGLETON statement somewhere in your code.

See also
JUCE_IMPLEMENT_SINGLETON, JUCE_DECLARE_SINGLETON

◆ JUCE_DECLARE_WEAK_REFERENCEABLE

#define JUCE_DECLARE_WEAK_REFERENCEABLE (   Class)
Value:
struct WeakRefMaster : public juce::WeakReference<Class>::Master { ~WeakRefMaster() { this->clear(); } }; \
WeakRefMaster masterReference; \
friend class juce::WeakReference<Class>; \

Macro to easily allow a class to be made weak-referenceable.

This can be inserted in a class definition to add the requisite weak-ref boilerplate to that class. e.g.

class MyObject
{
public:
MyObject();
~MyObject();
private:
};
#define JUCE_DECLARE_WEAK_REFERENCEABLE(Class)
Macro to easily allow a class to be made weak-referenceable.
Definition: juce_WeakReference.h:235
See also
WeakReference, WeakReference::Master

Function Documentation

◆ zeromem()

void zeromem ( void *  memory,
size_t  numBytes 
)
noexcept

◆ zerostruct()

template<typename Type >
void zerostruct ( Type &  structure)
noexcept

Overwrites a structure or object with zeros.

◆ deleteAndZero()

template<typename Type >
void deleteAndZero ( Type &  pointer)

Delete an object pointer, and sets the pointer to null.

Remember that it's not good c++ practice to use delete directly - always try to use a std::unique_ptr or other automatic lifetime-management system rather than resorting to deleting raw pointers!

References gl::pointer.

◆ snapPointerToAlignment()

template<typename Type , typename IntegerType >
Type* snapPointerToAlignment ( Type *  basePointer,
IntegerType  alignmentBytes 
)
noexcept

A handy function to round up a pointer to the nearest multiple of a given number of bytes.

alignmentBytes must be a power of two.

Referenced by dsp::AudioBlock< SampleType >::AudioBlock(), dsp::SIMDRegister< Type >::getNextSIMDAlignedPtr(), and dsp::FIR::Filter< SampleType >::reset().

◆ getAddressDifference()

template<typename Type1 , typename Type2 >
int getAddressDifference ( Type1 *  pointer1,
Type2 *  pointer2 
)
noexcept

A handy function which returns the difference between any two pointers, in bytes.

The address of the second pointer is subtracted from the first, and the difference in bytes is returned.

Referenced by CharacterFunctions::copyWithDestByteLimit().

◆ createCopyIfNotNull()

template<class Type >
Type* createCopyIfNotNull ( const Type *  objectToCopy)

If a pointer is non-null, this returns a new copy of the object that it points to, or safely returns nullptr if the pointer is null.

Referenced by OwnedArray< ObjectClass, TypeOfCriticalSectionToUse >::addCopiesOf().

◆ readUnaligned()

template<typename Type >
Type readUnaligned ( const void *  srcPtr)
noexcept

A handy function to read un-aligned memory without a performance penalty or bus-error.

References gl::value.

◆ writeUnaligned()

template<typename Type >
void writeUnaligned ( void *  dstPtr,
Type  value 
)
noexcept

A handy function to write un-aligned memory without a performance penalty or bus-error.

References gl::value.

◆ unalignedPointerCast() [1/2]

template<typename Type , typename std::enable_if< std::is_pointer< Type >::value, int >::type = 0>
Type unalignedPointerCast ( void *  ptr)
noexcept

Casts a pointer to another type via void*, which suppresses the cast-align warning which sometimes arises when casting pointers to types with different alignment.

You should only use this when you know for a fact that the input pointer points to a region that has suitable alignment for Type, e.g. regions returned from malloc/calloc that should be suitable for any non-over-aligned type.

◆ unalignedPointerCast() [2/2]

template<typename Type , typename std::enable_if< std::is_pointer< Type >::value, int >::type = 0>
Type unalignedPointerCast ( const void *  ptr)
noexcept

Casts a pointer to another type via void*, which suppresses the cast-align warning which sometimes arises when casting pointers to types with different alignment.

You should only use this when you know for a fact that the input pointer points to a region that has suitable alignment for Type, e.g. regions returned from malloc/calloc that should be suitable for any non-over-aligned type.

◆ addBytesToPointer() [1/2]

template<typename Type , typename IntegerType >
Type* addBytesToPointer ( Type *  basePointer,
IntegerType  bytes 
)
noexcept

◆ addBytesToPointer() [2/2]

template<typename Type , typename IntegerType >
const Type* addBytesToPointer ( const Type *  basePointer,
IntegerType  bytes 
)
noexcept

A handy function which adds a number of bytes to any type of pointer and returns the result.

This can be useful to avoid casting pointers to a char* and back when you want to move them by a specific number of bytes,

◆ rawToUniquePtr()

template<typename T >
std::unique_ptr<T> rawToUniquePtr ( T *  ptr)

Converts an owning raw pointer into a unique_ptr, deriving the type of the unique_ptr automatically.

This should only be used with pointers to single objects. Do NOT pass a pointer to an array to this function, as the destructor of the unique_ptr will incorrectly call delete instead of delete[] on the pointer.

◆ operator==()

template<typename Type >
bool operator== ( const Type *  object1,
const ReferenceCountedObjectPtr< Type > &  object2 
)
noexcept

Compares two ReferenceCountedObjectPtrs.

◆ operator!=()

template<typename Type >
bool operator!= ( const Type *  object1,
const ReferenceCountedObjectPtr< Type > &  object2 
)
noexcept

Compares two ReferenceCountedObjectPtrs.

◆ swap() [1/8]

constexpr uint16 ByteOrder::swap ( uint16  value)
staticconstexprnoexcept

Swaps the upper and lower bytes of a 16-bit integer.

References gl::v.

◆ swap() [2/8]

constexpr int16 ByteOrder::swap ( int16  value)
staticconstexprnoexcept

Swaps the upper and lower bytes of a 16-bit integer.

References gl::v.

◆ swap() [3/8]

int32 ByteOrder::swap ( int32  value)
staticnoexcept

Reverses the order of the 4 bytes in a 32-bit integer.

References gl::v.

◆ swap() [4/8]

int64 ByteOrder::swap ( int64  value)
staticnoexcept

Reverses the order of the 8 bytes in a 64-bit integer.

References gl::v.

◆ swap() [5/8]

float ByteOrder::swap ( float  value)
staticnoexcept

Returns a garbled float which has the reverse byte-order of the original.

References gl::n, and gl::v.

◆ swap() [6/8]

double ByteOrder::swap ( double  value)
staticnoexcept

Returns a garbled double which has the reverse byte-order of the original.

References gl::n, and gl::v.

◆ swap() [7/8]

uint32 ByteOrder::swap ( uint32  value)
staticnoexcept

Reverses the order of the 4 bytes in a 32-bit integer.

References gl::n.

◆ swap() [8/8]

uint64 ByteOrder::swap ( uint64  value)
staticnoexcept

Reverses the order of the 8 bytes in a 64-bit integer.

References gl::value.

◆ makeInt() [1/3]

constexpr uint16 ByteOrder::makeInt ( uint8  leastSig,
uint8  mostSig 
)
staticconstexprnoexcept

Constructs a 16-bit integer from its constituent bytes, in order of significance.

◆ makeInt() [2/3]

constexpr uint32 ByteOrder::makeInt ( uint8  leastSig,
uint8  byte1,
uint8  byte2,
uint8  mostSig 
)
staticconstexprnoexcept

Constructs a 32-bit integer from its constituent bytes, in order of significance.

◆ makeInt() [3/3]

constexpr uint64 ByteOrder::makeInt ( uint8  leastSig,
uint8  byte1,
uint8  byte2,
uint8  byte3,
uint8  byte4,
uint8  byte5,
uint8  byte6,
uint8  mostSig 
)
staticconstexprnoexcept

Constructs a 64-bit integer from its constituent bytes, in order of significance.

◆ littleEndianShort()

constexpr uint16 ByteOrder::littleEndianShort ( const void *  bytes)
staticconstexprnoexcept

Turns 2 bytes into a little-endian integer.

◆ littleEndianInt()

constexpr uint32 ByteOrder::littleEndianInt ( const void *  bytes)
staticconstexprnoexcept

Turns 4 bytes into a little-endian integer.

◆ littleEndianInt64()

constexpr uint64 ByteOrder::littleEndianInt64 ( const void *  bytes)
staticconstexprnoexcept

Turns 8 bytes into a little-endian integer.

◆ bigEndianShort()

constexpr uint16 ByteOrder::bigEndianShort ( const void *  bytes)
staticconstexprnoexcept

Turns 2 bytes into a big-endian integer.

◆ bigEndianInt()

constexpr uint32 ByteOrder::bigEndianInt ( const void *  bytes)
staticconstexprnoexcept

Turns 4 bytes into a big-endian integer.

◆ bigEndianInt64()

constexpr uint64 ByteOrder::bigEndianInt64 ( const void *  bytes)
staticconstexprnoexcept

Turns 8 bytes into a big-endian integer.

◆ littleEndian24Bit()

constexpr int32 ByteOrder::littleEndian24Bit ( const void *  bytes)
staticconstexprnoexcept

Converts 3 little-endian bytes into a signed 24-bit value (which is sign-extended to 32 bits).

◆ bigEndian24Bit()

constexpr int32 ByteOrder::bigEndian24Bit ( const void *  bytes)
staticconstexprnoexcept

Converts 3 big-endian bytes into a signed 24-bit value (which is sign-extended to 32 bits).

◆ littleEndian24BitToChars()

void ByteOrder::littleEndian24BitToChars ( int32  value,
void *  destBytes 
)
staticnoexcept

Copies a 24-bit number to 3 little-endian bytes.

References gl::value.

◆ bigEndian24BitToChars()

void ByteOrder::bigEndian24BitToChars ( int32  value,
void *  destBytes 
)
staticnoexcept

Copies a 24-bit number to 3 big-endian bytes.

References gl::value.