OpenShot Audio Library | OpenShotAudio 0.3.2
Loading...
Searching...
No Matches
juce_core.h
1/*
2 ==============================================================================
3
4 This file is part of the JUCE library.
5 Copyright (c) 2017 - ROLI Ltd.
6
7 JUCE is an open source library subject to commercial or open-source
8 licensing.
9
10 The code included in this file is provided under the terms of the ISC license
11 http://www.isc.org/downloads/software-support-policy/isc-license. Permission
12 To use, copy, modify, and/or distribute this software for any purpose with or
13 without fee is hereby granted provided that the above copyright notice and
14 this permission notice appear in all copies.
15
16 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
17 EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
18 DISCLAIMED.
19
20 ==============================================================================
21*/
22
23
24/*******************************************************************************
25 The block below describes the properties of this module, and is read by
26 the Projucer to automatically generate project code that uses it.
27 For details about the syntax and how to create or use a module, see the
28 JUCE Module Format.txt file.
29
30
31 BEGIN_JUCE_MODULE_DECLARATION
32
33 ID: juce_core
34 vendor: juce
35 version: 5.4.7
36 name: JUCE core classes
37 description: The essential set of basic JUCE classes, as required by all the other JUCE modules. Includes text, container, memory, threading and i/o functionality.
38 website: http://www.juce.com/juce
39 license: ISC
40
41 dependencies:
42 OSXFrameworks: Cocoa IOKit
43 iOSFrameworks: Foundation
44 linuxLibs: rt dl pthread
45 mingwLibs: uuid wsock32 wininet version ole32 ws2_32 oleaut32 imm32 comdlg32 shlwapi rpcrt4 winmm
46
47 END_JUCE_MODULE_DECLARATION
48
49*******************************************************************************/
50
51
52#pragma once
53#define JUCE_CORE_H_INCLUDED
54
55//==============================================================================
56#ifdef _MSC_VER
57 #pragma warning (push)
58 // Disable warnings for long class names, padding, and undefined preprocessor definitions.
59 #pragma warning (disable: 4251 4786 4668 4820)
60 #ifdef __INTEL_COMPILER
61 #pragma warning (disable: 1125)
62 #endif
63#endif
64
65#include "system/juce_TargetPlatform.h"
66
67//==============================================================================
73#ifndef JUCE_FORCE_DEBUG
74 //#define JUCE_FORCE_DEBUG 0
75#endif
76
77//==============================================================================
89#ifndef JUCE_LOG_ASSERTIONS
90 #if JUCE_ANDROID
91 #define JUCE_LOG_ASSERTIONS 1
92 #else
93 #define JUCE_LOG_ASSERTIONS 0
94 #endif
95#endif
96
97//==============================================================================
103#if JUCE_DEBUG && ! defined (JUCE_CHECK_MEMORY_LEAKS)
104 #define JUCE_CHECK_MEMORY_LEAKS 1
105#endif
106
107//==============================================================================
113#ifndef JUCE_DONT_AUTOLINK_TO_WIN32_LIBRARIES
114 #define JUCE_DONT_AUTOLINK_TO_WIN32_LIBRARIES 0
115#endif
116
125#ifndef JUCE_INCLUDE_ZLIB_CODE
126 #define JUCE_INCLUDE_ZLIB_CODE 1
127#endif
128
129#ifndef JUCE_ZLIB_INCLUDE_PATH
130 #define JUCE_ZLIB_INCLUDE_PATH <zlib.h>
131#endif
132
139#ifndef JUCE_USE_CURL
140 #define JUCE_USE_CURL 1
141#endif
142
150#ifndef JUCE_LOAD_CURL_SYMBOLS_LAZILY
151 #define JUCE_LOAD_CURL_SYMBOLS_LAZILY 0
152#endif
153
158#ifndef JUCE_CATCH_UNHANDLED_EXCEPTIONS
159 #define JUCE_CATCH_UNHANDLED_EXCEPTIONS 0
160#endif
161
167#ifndef JUCE_ALLOW_STATIC_NULL_VARIABLES
168 #define JUCE_ALLOW_STATIC_NULL_VARIABLES 0
169#endif
170
176#ifndef JUCE_STRICT_REFCOUNTEDPOINTER
177 #define JUCE_STRICT_REFCOUNTEDPOINTER 0
178#endif
179
180
181#ifndef JUCE_STRING_UTF_TYPE
182 #define JUCE_STRING_UTF_TYPE 8
183#endif
184
185//==============================================================================
186//==============================================================================
187
188#if JUCE_CORE_INCLUDE_NATIVE_HEADERS
189 #include "native/juce_BasicNativeHeaders.h"
190#endif
191
192#if JUCE_WINDOWS
193 #undef small
194#endif
195
196#include "system/juce_StandardHeader.h"
197
198namespace juce
199{
200 class StringRef;
201 class MemoryBlock;
202 class File;
203 class InputStream;
204 class OutputStream;
205 class DynamicObject;
206 class FileInputStream;
207 class FileOutputStream;
208 class XmlElement;
209
210 extern JUCE_API bool JUCE_CALLTYPE juce_isRunningUnderDebugger() noexcept;
211 extern JUCE_API void JUCE_CALLTYPE logAssertion (const char* file, int line) noexcept;
212}
213
214#include "memory/juce_Memory.h"
215#include "maths/juce_MathsFunctions.h"
216#include "memory/juce_ByteOrder.h"
217#include "memory/juce_Atomic.h"
218#include "text/juce_CharacterFunctions.h"
219
220#if JUCE_MSVC
221 #pragma warning (push)
222 #pragma warning (disable: 4514 4996)
223#endif
224
225#include "text/juce_CharPointer_UTF8.h"
226#include "text/juce_CharPointer_UTF16.h"
227#include "text/juce_CharPointer_UTF32.h"
228#include "text/juce_CharPointer_ASCII.h"
229
230#if JUCE_MSVC
231 #pragma warning (pop)
232#endif
233
234#include "text/juce_String.h"
235#include "text/juce_StringRef.h"
236#include "logging/juce_Logger.h"
237#include "memory/juce_LeakedObjectDetector.h"
238#include "memory/juce_ContainerDeletePolicy.h"
239#include "memory/juce_HeapBlock.h"
240#include "memory/juce_MemoryBlock.h"
241#include "memory/juce_ReferenceCountedObject.h"
242#include "memory/juce_ScopedPointer.h"
243#include "memory/juce_OptionalScopedPointer.h"
244#include "memory/juce_Singleton.h"
245#include "memory/juce_WeakReference.h"
246#include "threads/juce_ScopedLock.h"
247#include "threads/juce_CriticalSection.h"
248#include "maths/juce_Range.h"
249#include "maths/juce_NormalisableRange.h"
250#include "maths/juce_StatisticsAccumulator.h"
251#include "containers/juce_ElementComparator.h"
252#include "containers/juce_ArrayAllocationBase.h"
253#include "containers/juce_ArrayBase.h"
254#include "containers/juce_Array.h"
255#include "containers/juce_LinkedListPointer.h"
256#include "containers/juce_ListenerList.h"
257#include "containers/juce_OwnedArray.h"
258#include "containers/juce_ReferenceCountedArray.h"
259#include "containers/juce_ScopedValueSetter.h"
260#include "containers/juce_SortedSet.h"
261#include "containers/juce_SparseSet.h"
262#include "containers/juce_AbstractFifo.h"
263#include "text/juce_NewLine.h"
264#include "text/juce_StringPool.h"
265#include "text/juce_Identifier.h"
266#include "text/juce_StringArray.h"
267#include "system/juce_SystemStats.h"
268#include "memory/juce_HeavyweightLeakedObjectDetector.h"
269#include "text/juce_StringPairArray.h"
270#include "text/juce_TextDiff.h"
271#include "text/juce_LocalisedStrings.h"
272#include "text/juce_Base64.h"
273#include "misc/juce_Result.h"
274#include "misc/juce_Uuid.h"
275#include "misc/juce_ConsoleApplication.h"
276#include "containers/juce_Variant.h"
277#include "containers/juce_NamedValueSet.h"
278#include "containers/juce_DynamicObject.h"
279#include "containers/juce_HashMap.h"
280#include "time/juce_RelativeTime.h"
281#include "time/juce_Time.h"
282#include "streams/juce_InputStream.h"
283#include "streams/juce_OutputStream.h"
284#include "streams/juce_BufferedInputStream.h"
285#include "streams/juce_MemoryInputStream.h"
286#include "streams/juce_MemoryOutputStream.h"
287#include "streams/juce_SubregionStream.h"
288#include "streams/juce_InputSource.h"
289#include "files/juce_File.h"
290#include "files/juce_DirectoryIterator.h"
291#include "files/juce_FileInputStream.h"
292#include "files/juce_FileOutputStream.h"
293#include "files/juce_FileSearchPath.h"
294#include "files/juce_MemoryMappedFile.h"
295#include "files/juce_TemporaryFile.h"
296#include "files/juce_FileFilter.h"
297#include "files/juce_WildcardFileFilter.h"
298#include "streams/juce_FileInputSource.h"
299#include "logging/juce_FileLogger.h"
300#include "javascript/juce_JSON.h"
301#include "javascript/juce_Javascript.h"
302#include "maths/juce_BigInteger.h"
303#include "maths/juce_Expression.h"
304#include "maths/juce_Random.h"
305#include "misc/juce_RuntimePermissions.h"
306#include "misc/juce_WindowsRegistry.h"
307#include "threads/juce_ChildProcess.h"
308#include "threads/juce_DynamicLibrary.h"
309#include "threads/juce_HighResolutionTimer.h"
310#include "threads/juce_InterProcessLock.h"
311#include "threads/juce_Process.h"
312#include "threads/juce_SpinLock.h"
313#include "threads/juce_WaitableEvent.h"
314#include "threads/juce_Thread.h"
315#include "threads/juce_ThreadLocalValue.h"
316#include "threads/juce_ThreadPool.h"
317#include "threads/juce_TimeSliceThread.h"
318#include "threads/juce_ReadWriteLock.h"
319#include "threads/juce_ScopedReadLock.h"
320#include "threads/juce_ScopedWriteLock.h"
321#include "network/juce_IPAddress.h"
322#include "network/juce_MACAddress.h"
323#include "network/juce_NamedPipe.h"
324#include "network/juce_Socket.h"
325#include "network/juce_URL.h"
326#include "network/juce_WebInputStream.h"
327#include "streams/juce_URLInputSource.h"
328#include "time/juce_PerformanceCounter.h"
329#include "unit_tests/juce_UnitTest.h"
330#include "xml/juce_XmlDocument.h"
331#include "xml/juce_XmlElement.h"
332#include "zip/juce_GZIPCompressorOutputStream.h"
333#include "zip/juce_GZIPDecompressorInputStream.h"
334#include "zip/juce_ZipFile.h"
335#include "containers/juce_PropertySet.h"
336#include "memory/juce_SharedResourcePointer.h"
337
338#if JUCE_CORE_INCLUDE_OBJC_HELPERS && (JUCE_MAC || JUCE_IOS)
339 #include "native/juce_osx_ObjCHelpers.h"
340#endif
341
342#if JUCE_CORE_INCLUDE_COM_SMART_PTR && JUCE_WINDOWS
343 #include "native/juce_win32_ComSmartPtr.h"
344#endif
345
346#if JUCE_CORE_INCLUDE_JNI_HELPERS && JUCE_ANDROID
347 #include <jni.h>
348 #include "native/juce_android_JNIHelpers.h"
349#endif
350
351#if JUCE_UNIT_TESTS
352 #include "unit_tests/juce_UnitTestCategories.h"
353#endif
354
355#ifndef DOXYGEN
356namespace juce
357{
358 /*
359 As the very long class names here try to explain, the purpose of this code is to cause
360 a linker error if not all of your compile units are consistent in the options that they
361 enable before including JUCE headers. The reason this is important is that if you have
362 two cpp files, and one includes the juce headers with debug enabled, and another does so
363 without that, then each will be generating code with different class layouts, and you'll
364 get subtle and hard-to-track-down memory corruption!
365 */
366 #if JUCE_DEBUG
367 struct JUCE_API this_will_fail_to_link_if_some_of_your_compile_units_are_built_in_debug_mode
368 { this_will_fail_to_link_if_some_of_your_compile_units_are_built_in_debug_mode() noexcept; };
369 static this_will_fail_to_link_if_some_of_your_compile_units_are_built_in_debug_mode compileUnitMismatchSentinel;
370 #else
371 struct JUCE_API this_will_fail_to_link_if_some_of_your_compile_units_are_built_in_release_mode
372 { this_will_fail_to_link_if_some_of_your_compile_units_are_built_in_release_mode() noexcept; };
373 static this_will_fail_to_link_if_some_of_your_compile_units_are_built_in_release_mode compileUnitMismatchSentinel;
374 #endif
375}
376#endif
377
378#if JUCE_MSVC
379 #pragma warning (pop)
380
381 // In DLL builds, need to disable this warnings for other modules
382 #if defined (JUCE_DLL_BUILD) || defined (JUCE_DLL)
383 #pragma warning (disable: 4251)
384 #endif
385#endif