@@ -94,7 +94,7 @@ public: | |||
private: | |||
//============================================================================== | |||
Target& operator= (const Target&) JUCE_DELETED_FUNCTION; | |||
Target& operator= (const Target&) = delete; | |||
}; | |||
virtual bool supportsTargetType (Target::Type /*targetType*/) const { return false; } | |||
@@ -1675,7 +1675,7 @@ public: | |||
//============================================================================== | |||
const XcodeProjectExporter& owner; | |||
Target& operator= (const Target&) JUCE_DELETED_FUNCTION; | |||
Target& operator= (const Target&) = delete; | |||
}; | |||
mutable StringArray xcodeFrameworks; | |||
@@ -68,10 +68,6 @@ | |||
#define JUCE_VIEWCONTROLLER_OBJC_NAME(x) JUCE_JOIN_MACRO (x, FactoryAUv3) | |||
#if ! JUCE_COMPILER_SUPPORTS_VARIADIC_TEMPLATES | |||
#error AUv3 wrapper requires variadic template support | |||
#endif | |||
#if JUCE_IOS | |||
#define JUCE_IOS_MAC_VIEW UIView | |||
#else | |||
@@ -122,9 +118,9 @@ struct AudioProcessorHolder : public ReferenceCountedObject | |||
private: | |||
ScopedPointer<AudioProcessor> processor; | |||
AudioProcessorHolder& operator= (AudioProcessor*) JUCE_DELETED_FUNCTION; | |||
AudioProcessorHolder (AudioProcessorHolder&) JUCE_DELETED_FUNCTION; | |||
AudioProcessorHolder& operator= (AudioProcessorHolder&) JUCE_DELETED_FUNCTION; | |||
AudioProcessorHolder& operator= (AudioProcessor*) = delete; | |||
AudioProcessorHolder (AudioProcessorHolder&) = delete; | |||
AudioProcessorHolder& operator= (AudioProcessorHolder&) = delete; | |||
}; | |||
//============================================================================== | |||
@@ -106,7 +106,7 @@ private: | |||
ScopedPointer<AudioProcessor> audioProcessor; | |||
ScopedJuceInitialiser_GUI libraryInitialiser; | |||
JuceAudioProcessor() JUCE_DELETED_FUNCTION; | |||
JuceAudioProcessor() = delete; | |||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (JuceAudioProcessor) | |||
}; | |||
@@ -39,7 +39,7 @@ | |||
#endif | |||
#ifndef JUCE_SUPPORTS_AUv3 | |||
#if JUCE_COMPILER_SUPPORTS_VARIADIC_TEMPLATES && __OBJC2__ \ | |||
#if __OBJC2__ \ | |||
&& ((defined (MAC_OS_X_VERSION_MIN_REQUIRED) && defined (MAC_OS_X_VERSION_10_11) && (MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11)) \ | |||
|| (defined (__IPHONE_OS_VERSION_MIN_REQUIRED) && defined (__IPHONE_9_0) && (__IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_9_0))) | |||
#define JUCE_SUPPORTS_AUv3 1 | |||
@@ -39,7 +39,7 @@ struct SortFunctionConverter | |||
private: | |||
ElementComparator& comparator; | |||
SortFunctionConverter& operator= (const SortFunctionConverter&) JUCE_DELETED_FUNCTION; | |||
SortFunctionConverter& operator= (const SortFunctionConverter&) = delete; | |||
}; | |||
#endif | |||
@@ -455,7 +455,7 @@ public: | |||
int index; | |||
// using the copy constructor is ok, but you cannot assign iterators | |||
Iterator& operator= (const Iterator&) JUCE_DELETED_FUNCTION; | |||
Iterator& operator= (const Iterator&) = delete; | |||
JUCE_LEAK_DETECTOR (Iterator) | |||
}; | |||
@@ -126,7 +126,7 @@ public: | |||
private: | |||
//============================================================================== | |||
JSON() JUCE_DELETED_FUNCTION; // This class can't be instantiated - just use its static methods. | |||
JSON() = delete; // This class can't be instantiated - just use its static methods. | |||
}; | |||
} // namespace juce |
@@ -129,7 +129,7 @@ public: | |||
JUCE_CONSTEXPR static bool isBigEndian() noexcept; | |||
private: | |||
ByteOrder() JUCE_DELETED_FUNCTION; | |||
ByteOrder() = delete; | |||
JUCE_DECLARE_NON_COPYABLE (ByteOrder) | |||
}; | |||
@@ -181,7 +181,7 @@ private: | |||
// a scoped pointer, which is almost certainly not what you intended to do! | |||
// If you hit a problem with this, you probably meant to say | |||
// myPointer.setOwned (myScopedPointer.release()) | |||
void setOwned (const ScopedPointer<ObjectType>&) JUCE_DELETED_FUNCTION; | |||
void setOwned (const ScopedPointer<ObjectType>&) = delete; | |||
}; | |||
} // namespace juce |
@@ -127,7 +127,7 @@ public: | |||
JUCE_DEPRECATED (static bool keyExistsWow64 (const String&)); | |||
private: | |||
WindowsRegistry() JUCE_DELETED_FUNCTION; | |||
WindowsRegistry() = delete; | |||
JUCE_DECLARE_NON_COPYABLE (WindowsRegistry) | |||
}; | |||
@@ -204,7 +204,6 @@ static NSRect makeNSRect (const RectangleType& r) noexcept | |||
} | |||
#endif | |||
#if JUCE_MAC || JUCE_IOS | |||
#if JUCE_COMPILER_SUPPORTS_VARIADIC_TEMPLATES | |||
// This is necessary as on iOS builds, some arguments may be passed on registers | |||
// depending on the argument type. The re-cast objc_msgSendSuper to a function | |||
@@ -217,8 +216,6 @@ static inline ReturnValue ObjCMsgSendSuper (struct objc_super* s, SEL sel, Param | |||
return fn (s, sel, params...); | |||
} | |||
#endif | |||
// These hacks are a workaround for newer Xcode builds which by default prevent calls to these objc functions.. | |||
typedef id (*MsgSendSuperFn) (struct objc_super*, SEL, ...); | |||
static inline MsgSendSuperFn getMsgSendSuperFn() noexcept { return (MsgSendSuperFn) (void*) objc_msgSendSuper; } | |||
@@ -399,8 +396,6 @@ Class* getJuceClassFromNSObject (NSObject* obj) | |||
return obj != nullptr ? ObjCLifetimeManagedClass<Class>:: template getIvar<Class*> (obj, "cppObject") : nullptr; | |||
} | |||
#if JUCE_COMPILER_SUPPORTS_VARIADIC_TEMPLATES | |||
template <typename ReturnT, class Class, typename... Params> | |||
ReturnT (^CreateObjCBlock(Class* object, ReturnT (Class::*fn)(Params...))) (Params...) | |||
{ | |||
@@ -429,6 +424,5 @@ private: | |||
BlockType block; | |||
}; | |||
#endif | |||
} // namespace juce |
@@ -22,29 +22,25 @@ | |||
#pragma once | |||
/* This file has some checks to see whether the compiler supports various C++11/14 features, | |||
When these aren't available, the code defines a few workarounds, so that we can still use | |||
some of the newer language features like nullptr and noexcept, even on old compilers. | |||
/* | |||
This file provides flags for compiler features that aren't supported on all platforms. | |||
*/ | |||
//============================================================================== | |||
// GCC | |||
#if (__cplusplus >= 201103L || defined (__GXX_EXPERIMENTAL_CXX0X__)) && (__GNUC__ * 100 + __GNUC_MINOR__) >= 405 | |||
#define JUCE_COMPILER_SUPPORTS_NOEXCEPT 1 | |||
#define JUCE_COMPILER_SUPPORTS_INITIALIZER_LISTS 1 | |||
#define JUCE_COMPILER_SUPPORTS_VARIADIC_TEMPLATES 1 | |||
#if JUCE_GCC | |||
#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 407 && ! defined (JUCE_COMPILER_SUPPORTS_OVERRIDE_AND_FINAL) | |||
#define JUCE_COMPILER_SUPPORTS_OVERRIDE_AND_FINAL 1 | |||
#if (__GNUC__ * 100 + __GNUC_MINOR__) < 407 | |||
#error "JUCE requires GCC 4.7 or later" | |||
#endif | |||
#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 407 && ! defined (JUCE_DELETED_FUNCTION) | |||
#define JUCE_DELETED_FUNCTION = delete | |||
#if ! (__cplusplus >= 201103L || defined (__GXX_EXPERIMENTAL_CXX0X__)) | |||
#error "JUCE requires that GCC has C++11 compatibility enabled" | |||
#endif | |||
#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 406 | |||
#define JUCE_STDLIB_HAS_STD_FUNCTION_SUPPORT 1 | |||
#endif | |||
#define JUCE_COMPILER_SUPPORTS_NOEXCEPT 1 | |||
#define JUCE_COMPILER_SUPPORTS_INITIALIZER_LISTS 1 | |||
#define JUCE_STDLIB_HAS_STD_FUNCTION_SUPPORT 1 | |||
#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 500 | |||
#define JUCE_HAS_CONSTEXPR 1 | |||
@@ -59,36 +55,20 @@ | |||
//============================================================================== | |||
// Clang | |||
#if JUCE_CLANG && defined (__has_feature) | |||
#if JUCE_CLANG | |||
#if __has_feature (cxx_noexcept) | |||
#define JUCE_COMPILER_SUPPORTS_NOEXCEPT 1 | |||
#if __clang_major__ < 5 | |||
#error "JUCE requires Clang 5.0 or later" | |||
#endif | |||
#if __has_feature (cxx_deleted_functions) | |||
#define JUCE_DELETED_FUNCTION = delete | |||
#endif | |||
#define JUCE_COMPILER_SUPPORTS_NOEXCEPT 1 | |||
#define JUCE_HAS_CONSTEXPR 1 | |||
#if (defined (_LIBCPP_VERSION) || ! (JUCE_MAC || JUCE_IOS)) | |||
#if defined (_LIBCPP_VERSION) || ! (JUCE_MAC || JUCE_IOS) | |||
#define JUCE_STDLIB_HAS_STD_FUNCTION_SUPPORT 1 | |||
#endif | |||
#if __has_feature (cxx_generalized_initializers) && (defined (_LIBCPP_VERSION) || ! (JUCE_MAC || JUCE_IOS)) | |||
#define JUCE_COMPILER_SUPPORTS_INITIALIZER_LISTS 1 | |||
#endif | |||
#if __has_feature (cxx_variadic_templates) | |||
#define JUCE_COMPILER_SUPPORTS_VARIADIC_TEMPLATES 1 | |||
#endif | |||
#if __has_feature (cxx_override_control) && (! defined (JUCE_COMPILER_SUPPORTS_OVERRIDE_AND_FINAL)) | |||
#define JUCE_COMPILER_SUPPORTS_OVERRIDE_AND_FINAL 1 | |||
#endif | |||
#if __has_feature(cxx_constexpr) | |||
#define JUCE_HAS_CONSTEXPR 1 | |||
#endif | |||
#ifndef JUCE_COMPILER_SUPPORTS_ARC | |||
#define JUCE_COMPILER_SUPPORTS_ARC 1 | |||
#endif | |||
@@ -103,22 +83,22 @@ | |||
//============================================================================== | |||
// MSVC | |||
#ifdef _MSC_VER | |||
#if JUCE_MSVC | |||
#if _MSC_VER >= 1700 | |||
#define JUCE_COMPILER_SUPPORTS_OVERRIDE_AND_FINAL 1 | |||
#if _MSC_VER < 1800 // VS2013 | |||
#error "JUCE requires Visual Studio 2013 or later" | |||
#endif | |||
#if _MSC_VER >= 1800 | |||
#define JUCE_COMPILER_SUPPORTS_INITIALIZER_LISTS 1 | |||
#define JUCE_COMPILER_SUPPORTS_VARIADIC_TEMPLATES 1 | |||
#define JUCE_DELETED_FUNCTION = delete | |||
#define JUCE_STDLIB_HAS_STD_FUNCTION_SUPPORT 1 | |||
#endif | |||
#define JUCE_COMPILER_SUPPORTS_INITIALIZER_LISTS 1 | |||
#define JUCE_STDLIB_HAS_STD_FUNCTION_SUPPORT 1 | |||
#if _MSC_VER >= 1900 | |||
#if _MSC_VER >= 1900 // VS2015 | |||
#define JUCE_COMPILER_SUPPORTS_NOEXCEPT 1 | |||
#define JUCE_HAS_CONSTEXPR 1 | |||
#else | |||
#define _ALLOW_KEYWORD_MACROS 1 // prevent a warning | |||
#undef noexcept | |||
#define noexcept throw() | |||
#endif | |||
#ifndef JUCE_EXCEPTIONS_DISABLED | |||
@@ -129,17 +109,6 @@ | |||
#endif | |||
//============================================================================== | |||
// Declare some fake versions of nullptr and noexcept, for older compilers: | |||
#ifndef JUCE_DELETED_FUNCTION | |||
/** This macro can be placed after a method declaration to allow the use of | |||
the C++11 feature "= delete" on all compilers. | |||
On newer compilers that support it, it does the C++11 "= delete", but on | |||
older ones it's just an empty definition. | |||
*/ | |||
#define JUCE_DELETED_FUNCTION | |||
#endif | |||
#if JUCE_HAS_CONSTEXPR | |||
#define JUCE_CONSTEXPR constexpr | |||
#else | |||
@@ -147,20 +116,10 @@ | |||
#endif | |||
#if ! DOXYGEN | |||
#if ! JUCE_COMPILER_SUPPORTS_NOEXCEPT | |||
#ifdef noexcept | |||
#undef noexcept | |||
#endif | |||
#define noexcept throw() | |||
#if defined (_MSC_VER) && _MSC_VER > 1600 | |||
#define _ALLOW_KEYWORD_MACROS 1 // (to stop VC2012 complaining) | |||
#endif | |||
#endif | |||
#if ! JUCE_COMPILER_SUPPORTS_OVERRIDE_AND_FINAL | |||
#undef override | |||
#define override | |||
#endif | |||
// These are old flags that are now supported on all compatible build targets | |||
#define JUCE_COMPILER_SUPPORTS_OVERRIDE_AND_FINAL 1 | |||
#define JUCE_COMPILER_SUPPORTS_VARIADIC_TEMPLATES 1 | |||
#define JUCE_DELETED_FUNCTION = delete | |||
#endif | |||
//============================================================================== | |||
@@ -191,8 +191,8 @@ namespace juce | |||
};@endcode | |||
*/ | |||
#define JUCE_DECLARE_NON_COPYABLE(className) \ | |||
className (const className&) JUCE_DELETED_FUNCTION;\ | |||
className& operator= (const className&) JUCE_DELETED_FUNCTION; | |||
className (const className&) = delete;\ | |||
className& operator= (const className&) = delete; | |||
/** This is a shorthand way of writing both a JUCE_DECLARE_NON_COPYABLE and | |||
JUCE_LEAK_DETECTOR macro for a class. | |||
@@ -206,8 +206,8 @@ namespace juce | |||
*/ | |||
#define JUCE_PREVENT_HEAP_ALLOCATION \ | |||
private: \ | |||
static void* operator new (size_t) JUCE_DELETED_FUNCTION; \ | |||
static void operator delete (void*) JUCE_DELETED_FUNCTION; | |||
static void* operator new (size_t) = delete; \ | |||
static void operator delete (void*) = delete; | |||
//============================================================================== | |||
#if JUCE_MSVC && ! defined (DOXYGEN) | |||
@@ -185,21 +185,12 @@ | |||
#ifdef __clang__ | |||
#define JUCE_CLANG 1 | |||
#if ((! __has_feature (cxx_nullptr)) || (! __has_feature (cxx_rvalue_references)) || (! __has_feature (cxx_static_assert))) | |||
#error "Clang 3.2 and earlier are no longer supported!" | |||
#endif | |||
#elif defined (__GNUC__) | |||
#define JUCE_GCC 1 | |||
#if (__cplusplus < 201103L && (! defined (__GXX_EXPERIMENTAL_CXX0X__))) || ((__GNUC__ * 100 + __GNUC_MINOR__) < 406) | |||
#error "GCC 4.5 and earlier are no longer supported!" | |||
#endif | |||
#elif defined (_MSC_VER) | |||
#define JUCE_MSVC 1 | |||
#if _MSC_VER < 1600 | |||
#error "Visual Studio 2008 and earlier are no longer supported!" | |||
#endif | |||
#else | |||
#error unknown compiler | |||
#endif |
@@ -62,7 +62,7 @@ static const EmptyString emptyString = { 0x3fffffff, sizeof (String::CharPointer | |||
class StringHolder | |||
{ | |||
public: | |||
StringHolder() JUCE_DELETED_FUNCTION; | |||
StringHolder() = delete; | |||
typedef String::CharPointerType CharPointerType; | |||
typedef String::CharPointerType::CharType CharType; | |||
@@ -734,7 +734,7 @@ private: | |||
String value; | |||
private: | |||
XmlAttributeNode& operator= (const XmlAttributeNode&) JUCE_DELETED_FUNCTION; | |||
XmlAttributeNode& operator= (const XmlAttributeNode&) = delete; | |||
}; | |||
friend class XmlDocument; | |||
@@ -758,7 +758,7 @@ private: | |||
// Sigh.. L"" or _T("") string literals are problematic in general, and really inappropriate | |||
// for XML tags. Use a UTF-8 encoded literal instead, or if you're really determined to use | |||
// UTF-16, cast it to a String and use the other constructor. | |||
XmlElement (const wchar_t*) JUCE_DELETED_FUNCTION; | |||
XmlElement (const wchar_t*) = delete; | |||
JUCE_LEAK_DETECTOR (XmlElement) | |||
}; | |||
@@ -111,7 +111,7 @@ private: | |||
// This private constructor is declared here to prevent you accidentally passing a | |||
// String and having it unexpectedly call the constructor that takes a File. | |||
explicit MD5 (const String&) JUCE_DELETED_FUNCTION; | |||
explicit MD5 (const String&) = delete; | |||
JUCE_LEAK_DETECTOR (MD5) | |||
}; | |||
@@ -227,11 +227,11 @@ private: | |||
// This is disallowed to avoid confusion about whether it should | |||
// do a by-value or by-reference copy. | |||
Value& operator= (const Value&) JUCE_DELETED_FUNCTION; | |||
Value& operator= (const Value&) = delete; | |||
// This declaration prevents accidental construction from an integer of 0, | |||
// which is possible in some compilers via an implicit cast to a pointer. | |||
explicit Value (void*) JUCE_DELETED_FUNCTION; | |||
explicit Value (void*) = delete; | |||
}; | |||
/** Writes a Value to an OutputStream as a UTF8 string. */ | |||
@@ -2374,7 +2374,7 @@ private: | |||
// This is included here to cause an error if you use or overload it - it has been deprecated in | |||
// favour of contains (Point<int>) | |||
void contains (int, int) JUCE_DELETED_FUNCTION; | |||
void contains (int, int) = delete; | |||
#endif | |||
protected: | |||
@@ -1686,7 +1686,7 @@ private: | |||
deltaAngle = fmod (deltaAngle, MathConstants<double>::twoPi); | |||
} | |||
SVGState& operator= (const SVGState&) JUCE_DELETED_FUNCTION; | |||
SVGState& operator= (const SVGState&) = delete; | |||
}; | |||
@@ -213,7 +213,7 @@ public: | |||
#endif | |||
private: | |||
NativeMessageBox() JUCE_DELETED_FUNCTION; | |||
NativeMessageBox() = delete; | |||
JUCE_DECLARE_NON_COPYABLE (NativeMessageBox) | |||
}; | |||
@@ -152,7 +152,6 @@ public: | |||
} | |||
#if JUCE_COMPILER_SUPPORTS_VARIADIC_TEMPLATES | |||
beginTest ("Initialisation with argument list (C++11 only)"); | |||
{ | |||
int testInt = 42; | |||
@@ -197,7 +196,6 @@ public: | |||
expectEquals (msg[4].getInt32(), testInt); | |||
} | |||
} | |||
#endif | |||
} | |||
}; | |||
@@ -53,7 +53,6 @@ public: | |||
OSCMessage (const OSCAddressPattern& ap) noexcept; | |||
#if JUCE_COMPILER_SUPPORTS_VARIADIC_TEMPLATES | |||
/** Constructs an OSCMessage object with the given address pattern and list | |||
of arguments. | |||
@@ -68,7 +67,6 @@ public: | |||
*/ | |||
template <typename Arg1, typename... Args> | |||
OSCMessage (const OSCAddressPattern& ap, Arg1&& arg1, Args&&... args); | |||
#endif | |||
/** Sets the address pattern of the OSCMessage. | |||
@@ -143,7 +141,6 @@ public: | |||
private: | |||
//============================================================================== | |||
#if JUCE_COMPILER_SUPPORTS_VARIADIC_TEMPLATES | |||
template <typename Arg1, typename... Args> | |||
void addArguments (Arg1&& arg1, Args&&... args) | |||
{ | |||
@@ -152,7 +149,6 @@ private: | |||
} | |||
void addArguments() {} | |||
#endif | |||
//============================================================================== | |||
OSCAddressPattern addressPattern; | |||
@@ -161,13 +157,11 @@ private: | |||
//============================================================================== | |||
#if JUCE_COMPILER_SUPPORTS_VARIADIC_TEMPLATES | |||
template <typename Arg1, typename... Args> | |||
OSCMessage::OSCMessage (const OSCAddressPattern& ap, Arg1&& arg1, Args&&... args) | |||
: addressPattern (ap) | |||
{ | |||
addArguments (std::forward<Arg1> (arg1), std::forward<Args> (args)...); | |||
} | |||
#endif | |||
template <typename Arg1, typename... Args> | |||
OSCMessage::OSCMessage (const OSCAddressPattern& ap, Arg1&& arg1, Args&&... args) | |||
: addressPattern (ap) | |||
{ | |||
addArguments (std::forward<Arg1> (arg1), std::forward<Args> (args)...); | |||
} | |||
} // namespace juce |
@@ -113,7 +113,6 @@ public: | |||
bool sendToIPAddress (const String& targetIPAddress, int targetPortNumber, | |||
const OSCBundle& bundle); | |||
#if JUCE_COMPILER_SUPPORTS_VARIADIC_TEMPLATES | |||
/** Creates a new OSC message with the specified address pattern and list | |||
of arguments, and sends it to the target. | |||
@@ -136,7 +135,6 @@ public: | |||
template <typename... Args> | |||
bool sendToIPAddress (const String& targetIPAddress, int targetPortNumber, | |||
const OSCAddressPattern& address, Args&&... args); | |||
#endif | |||
private: | |||
//============================================================================== | |||
@@ -150,19 +148,17 @@ private: | |||
//============================================================================== | |||
#if JUCE_COMPILER_SUPPORTS_VARIADIC_TEMPLATES | |||
template <typename... Args> | |||
bool OSCSender::send (const OSCAddressPattern& address, Args&&... args) | |||
{ | |||
return send (OSCMessage (address, std::forward<Args> (args)...)); | |||
} | |||
template <typename... Args> | |||
bool OSCSender::sendToIPAddress (const String& targetIPAddress, int targetPortNumber, | |||
const OSCAddressPattern& address, Args&&... args) | |||
{ | |||
return sendToIPAddress (targetIPAddress, targetPortNumber, OSCMessage (address, std::forward<Args> (args)...)); | |||
} | |||
#endif // JUCE_COMPILER_SUPPORTS_VARIADIC_TEMPLATES | |||
template <typename... Args> | |||
bool OSCSender::send (const OSCAddressPattern& address, Args&&... args) | |||
{ | |||
return send (OSCMessage (address, std::forward<Args> (args)...)); | |||
} | |||
template <typename... Args> | |||
bool OSCSender::sendToIPAddress (const String& targetIPAddress, int targetPortNumber, | |||
const OSCAddressPattern& address, Args&&... args) | |||
{ | |||
return sendToIPAddress (targetIPAddress, targetPortNumber, OSCMessage (address, std::forward<Args> (args)...)); | |||
} | |||
} // namespace juce |