Browse Source

Removed some defunct code from the C++1 feature detection macros, and simplified code which no longer needs to test for feature availability

tags/2021-05-28
jules 7 years ago
parent
commit
8d09eaadb6
25 changed files with 74 additions and 146 deletions
  1. +1
    -1
      extras/Projucer/Source/Project/jucer_ProjectType.h
  2. +1
    -1
      extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Xcode.h
  3. +3
    -7
      modules/juce_audio_plugin_client/AU/juce_AUv3_Wrapper.mm
  4. +1
    -1
      modules/juce_audio_plugin_client/VST3/juce_VST3_Wrapper.cpp
  5. +1
    -1
      modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.mm
  6. +1
    -1
      modules/juce_core/containers/juce_ElementComparator.h
  7. +1
    -1
      modules/juce_core/containers/juce_HashMap.h
  8. +1
    -1
      modules/juce_core/javascript/juce_JSON.h
  9. +1
    -1
      modules/juce_core/memory/juce_ByteOrder.h
  10. +1
    -1
      modules/juce_core/memory/juce_OptionalScopedPointer.h
  11. +1
    -1
      modules/juce_core/misc/juce_WindowsRegistry.h
  12. +0
    -6
      modules/juce_core/native/juce_osx_ObjCHelpers.h
  13. +30
    -71
      modules/juce_core/system/juce_CompilerSupport.h
  14. +4
    -4
      modules/juce_core/system/juce_PlatformDefs.h
  15. +0
    -9
      modules/juce_core/system/juce_TargetPlatform.h
  16. +1
    -1
      modules/juce_core/text/juce_String.cpp
  17. +2
    -2
      modules/juce_core/xml/juce_XmlElement.h
  18. +1
    -1
      modules/juce_cryptography/hashing/juce_MD5.h
  19. +2
    -2
      modules/juce_data_structures/values/juce_Value.h
  20. +1
    -1
      modules/juce_gui_basics/components/juce_Component.h
  21. +1
    -1
      modules/juce_gui_basics/drawables/juce_SVGParser.cpp
  22. +1
    -1
      modules/juce_gui_basics/windows/juce_NativeMessageBox.h
  23. +0
    -2
      modules/juce_osc/osc/juce_OSCMessage.cpp
  24. +6
    -12
      modules/juce_osc/osc/juce_OSCMessage.h
  25. +12
    -16
      modules/juce_osc/osc/juce_OSCSender.h

+ 1
- 1
extras/Projucer/Source/Project/jucer_ProjectType.h View File

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


+ 1
- 1
extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Xcode.h View File

@@ -1675,7 +1675,7 @@ public:
//==============================================================================
const XcodeProjectExporter& owner;
Target& operator= (const Target&) JUCE_DELETED_FUNCTION;
Target& operator= (const Target&) = delete;
};
mutable StringArray xcodeFrameworks;


+ 3
- 7
modules/juce_audio_plugin_client/AU/juce_AUv3_Wrapper.mm View File

@@ -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;
};
//==============================================================================


+ 1
- 1
modules/juce_audio_plugin_client/VST3/juce_VST3_Wrapper.cpp View File

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


+ 1
- 1
modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.mm View File

@@ -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


+ 1
- 1
modules/juce_core/containers/juce_ElementComparator.h View File

@@ -39,7 +39,7 @@ struct SortFunctionConverter
private:
ElementComparator& comparator;
SortFunctionConverter& operator= (const SortFunctionConverter&) JUCE_DELETED_FUNCTION;
SortFunctionConverter& operator= (const SortFunctionConverter&) = delete;
};
#endif


+ 1
- 1
modules/juce_core/containers/juce_HashMap.h View File

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


+ 1
- 1
modules/juce_core/javascript/juce_JSON.h View File

@@ -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

+ 1
- 1
modules/juce_core/memory/juce_ByteOrder.h View File

@@ -129,7 +129,7 @@ public:
JUCE_CONSTEXPR static bool isBigEndian() noexcept;
private:
ByteOrder() JUCE_DELETED_FUNCTION;
ByteOrder() = delete;
JUCE_DECLARE_NON_COPYABLE (ByteOrder)
};


+ 1
- 1
modules/juce_core/memory/juce_OptionalScopedPointer.h View File

@@ -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

+ 1
- 1
modules/juce_core/misc/juce_WindowsRegistry.h View File

@@ -127,7 +127,7 @@ public:
JUCE_DEPRECATED (static bool keyExistsWow64 (const String&));
private:
WindowsRegistry() JUCE_DELETED_FUNCTION;
WindowsRegistry() = delete;
JUCE_DECLARE_NON_COPYABLE (WindowsRegistry)
};


+ 0
- 6
modules/juce_core/native/juce_osx_ObjCHelpers.h View File

@@ -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

+ 30
- 71
modules/juce_core/system/juce_CompilerSupport.h View File

@@ -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
//==============================================================================


+ 4
- 4
modules/juce_core/system/juce_PlatformDefs.h View File

@@ -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)


+ 0
- 9
modules/juce_core/system/juce_TargetPlatform.h View File

@@ -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

+ 1
- 1
modules/juce_core/text/juce_String.cpp View File

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


+ 2
- 2
modules/juce_core/xml/juce_XmlElement.h View File

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


+ 1
- 1
modules/juce_cryptography/hashing/juce_MD5.h View File

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


+ 2
- 2
modules/juce_data_structures/values/juce_Value.h View File

@@ -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. */


+ 1
- 1
modules/juce_gui_basics/components/juce_Component.h View File

@@ -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:


+ 1
- 1
modules/juce_gui_basics/drawables/juce_SVGParser.cpp View File

@@ -1686,7 +1686,7 @@ private:
deltaAngle = fmod (deltaAngle, MathConstants<double>::twoPi);
}
SVGState& operator= (const SVGState&) JUCE_DELETED_FUNCTION;
SVGState& operator= (const SVGState&) = delete;
};


+ 1
- 1
modules/juce_gui_basics/windows/juce_NativeMessageBox.h View File

@@ -213,7 +213,7 @@ public:
#endif
private:
NativeMessageBox() JUCE_DELETED_FUNCTION;
NativeMessageBox() = delete;
JUCE_DECLARE_NON_COPYABLE (NativeMessageBox)
};


+ 0
- 2
modules/juce_osc/osc/juce_OSCMessage.cpp View File

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


+ 6
- 12
modules/juce_osc/osc/juce_OSCMessage.h View File

@@ -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

+ 12
- 16
modules/juce_osc/osc/juce_OSCSender.h View File

@@ -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

Loading…
Cancel
Save