/* ============================================================================== This file is part of the JUCE library - "Jules' Utility Class Extensions" Copyright 2004-11 by Raw Material Software Ltd. ------------------------------------------------------------------------------ JUCE can be redistributed and/or modified under the terms of the GNU General Public License (Version 2), as published by the Free Software Foundation. A copy of the license is included in the JUCE distribution, or can be found online at www.gnu.org/licenses. JUCE is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. ------------------------------------------------------------------------------ To release a closed-source product which uses JUCE, commercial licenses are available: visit www.rawmaterialsoftware.com/juce for more information. ============================================================================== */ #ifndef __JUCE_STANDARDHEADER_JUCEHEADER__ #define __JUCE_STANDARDHEADER_JUCEHEADER__ //============================================================================== /** Current JUCE version number. See also SystemStats::getJUCEVersion() for a string version. */ #define JUCE_MAJOR_VERSION 2 #define JUCE_MINOR_VERSION 0 #define JUCE_BUILDNUMBER 6 /** 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. */ #define JUCE_VERSION ((JUCE_MAJOR_VERSION << 16) + (JUCE_MINOR_VERSION << 8) + JUCE_BUILDNUMBER) //============================================================================== #include "juce_TargetPlatform.h" // (sets up the various JUCE_WINDOWS, JUCE_MAC, etc flags) //============================================================================== #define JUCE_NAMESPACE juce #define BEGIN_JUCE_NAMESPACE namespace juce { #define END_JUCE_NAMESPACE } //============================================================================== #include "juce_PlatformDefs.h" // Now we'll include any OS headers we need.. (at this point we are outside the Juce namespace). #if JUCE_MSVC #if JUCE_VC6 #pragma warning (disable: 4284 4786) // (spurious VC6 warnings) namespace std // VC6 doesn't have sqrt/sin/cos/tan/abs in std, so declare them here: { template Type abs (Type a) { if (a < 0) return -a; return a; } template Type tan (Type a) { return static_cast (::tan (static_cast (a))); } template Type sin (Type a) { return static_cast (::sin (static_cast (a))); } template Type cos (Type a) { return static_cast (::cos (static_cast (a))); } template Type sqrt (Type a) { return static_cast (::sqrt (static_cast (a))); } template Type floor (Type a) { return static_cast (::floor (static_cast (a))); } template Type ceil (Type a) { return static_cast (::ceil (static_cast (a))); } template Type atan2 (Type a, Type b) { return static_cast (::atan2 (static_cast (a), static_cast (b))); } } #endif #pragma warning (push) #pragma warning (disable: 4514 4245 4100) #endif #include #include #include #include #include #include #include #include #include #include #include #include #if JUCE_USE_INTRINSICS #include #endif #if JUCE_MAC || JUCE_IOS #include #endif #if JUCE_LINUX #include #if __INTEL_COMPILER #if __ia64__ #include #else #include #endif #endif #endif #if JUCE_MSVC && JUCE_DEBUG #include #endif #if JUCE_MSVC #include #pragma warning (pop) #endif #if JUCE_ANDROID #include #include #endif //============================================================================== // DLL building settings on Windows #if JUCE_MSVC #ifdef JUCE_DLL_BUILD #define JUCE_API __declspec (dllexport) #pragma warning (disable: 4251) #elif defined (JUCE_DLL) #define JUCE_API __declspec (dllimport) #pragma warning (disable: 4251) #endif #ifdef __INTEL_COMPILER #pragma warning (disable: 1125) // (virtual override warning) #endif #elif defined (__GNUC__) && ((__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) #ifdef JUCE_DLL_BUILD #define JUCE_API __attribute__ ((visibility("default"))) #endif #endif #ifndef JUCE_API /** This macro is added to all juce public class declarations. */ #define JUCE_API #endif /** This macro is added to all juce public function declarations. */ #define JUCE_PUBLIC_FUNCTION JUCE_API JUCE_CALLTYPE /** This turns on some non-essential bits of code that should prevent old code from compiling in cases where method signatures have changed, etc. */ #if (! defined (JUCE_CATCH_DEPRECATED_CODE_MISUSE)) && JUCE_DEBUG && ! DOXYGEN #define JUCE_CATCH_DEPRECATED_CODE_MISUSE 1 #endif //============================================================================== // Now include some basics that are needed by most of the Juce classes... BEGIN_JUCE_NAMESPACE extern JUCE_API bool JUCE_CALLTYPE juce_isRunningUnderDebugger(); #if JUCE_LOG_ASSERTIONS extern JUCE_API void juce_LogAssertion (const char* filename, int lineNum) noexcept; #endif #include "../memory/juce_Memory.h" #include "../maths/juce_MathsFunctions.h" #include "../memory/juce_ByteOrder.h" #include "../logging/juce_Logger.h" #include "../memory/juce_LeakedObjectDetector.h" // unbelievably, some system headers actually use macros to define these symbols: #undef check #undef TYPE_BOOL //============================================================================== #if JUCE_MAC || JUCE_IOS || DOXYGEN /** A handy C++ wrapper that creates and deletes an NSAutoreleasePool object using RAII. You should use the JUCE_AUTORELEASEPOOL macro to create a local auto-release pool on the stack. */ class JUCE_API ScopedAutoReleasePool { public: ScopedAutoReleasePool(); ~ScopedAutoReleasePool(); private: void* pool; JUCE_DECLARE_NON_COPYABLE (ScopedAutoReleasePool); }; /** A macro that can be used to easily declare a local ScopedAutoReleasePool object for RAII-based obj-C autoreleasing. */ #define JUCE_AUTORELEASEPOOL const juce::ScopedAutoReleasePool JUCE_JOIN_MACRO (autoReleasePool_, __LINE__); #else #define JUCE_AUTORELEASEPOOL #endif END_JUCE_NAMESPACE #endif // __JUCE_STANDARDHEADER_JUCEHEADER__