/* ============================================================================== 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 21 /** 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) //============================================================================== #ifndef DOXYGEN // These are old macros that are now deprecated: you should just use the juce namespace directly. #define JUCE_NAMESPACE juce #define BEGIN_JUCE_NAMESPACE namespace juce { #define END_JUCE_NAMESPACE } #endif //============================================================================== #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 #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 #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 logAssertion (const char* filename, int lineNum) noexcept; #endif #undef max #undef min #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__