29struct DanglingStreamChecker
31 DanglingStreamChecker() =
default;
33 ~DanglingStreamChecker()
41 jassert (activeStreams.size() == 0);
45 hasBeenDestroyed =
true;
48 Array<void*, CriticalSection> activeStreams;
50 static bool hasBeenDestroyed;
53bool DanglingStreamChecker::hasBeenDestroyed =
false;
54static DanglingStreamChecker danglingStreamChecker;
63 if (! DanglingStreamChecker::hasBeenDestroyed)
64 danglingStreamChecker.activeStreams.add (
this);
71 if (! DanglingStreamChecker::hasBeenDestroyed)
72 danglingStreamChecker.activeStreams.removeFirstMatchingValue (
this);
85 return write (&
byte, 1);
90 for (
size_t i = 0;
i < numTimesToRepeat; ++
i)
157 union {
int asInt;
float asFloat; }
n;
164 union {
int asInt;
float asFloat; }
n;
171 union {
int64 asInt;
double asDouble; }
n;
178 union {
int64 asInt;
double asDouble; }
n;
185 auto numBytes =
text.getNumBytesAsUTF8() + 1;
187 #if (JUCE_STRING_UTF_TYPE == 8)
188 return write (
text.toRawUTF8(), numBytes);
193 text.copyToUTF8 (temp, numBytes);
194 return write (temp, numBytes);
200 bool replaceLineFeedWithUnix = lf !=
nullptr && lf[0] ==
'\n' && lf[1] == 0;
201 bool replaceLineFeedWithWindows = lf !=
nullptr && lf[0] ==
'\r' && lf[1] ==
'\n' && lf[2] == 0;
204 jassert (lf ==
nullptr || replaceLineFeedWithWindows || replaceLineFeedWithUnix);
208 if (writeUTF16ByteOrderMark)
209 write (
"\x0ff\x0fe", 2);
211 auto src =
text.getCharPointer();
212 bool lastCharWasReturn =
false;
216 auto c = src.getAndAdvance();
221 if (replaceLineFeedWithWindows)
223 if (
c ==
'\n' && ! lastCharWasReturn)
226 lastCharWasReturn = (
c == L
'\r');
228 else if (replaceLineFeedWithUnix &&
c ==
'\r')
239 const char* src =
text.toRawUTF8();
241 if (replaceLineFeedWithWindows)
248 if (!
write (src, (
size_t) (
t - src)))
251 if (!
write (
"\r\n", 2))
264 if (!
write (src, (
size_t) (
t - src)))
273 else if (replaceLineFeedWithUnix)
289 return write (src,
text.getNumBytesAsUTF8());
298 if (numBytesToWrite < 0)
299 numBytesToWrite = std::numeric_limits<int64>::max();
301 int64 numWritten = 0;
303 while (numBytesToWrite > 0)
306 auto num = source.
read (buffer, (
int)
jmin (numBytesToWrite, (
int64)
sizeof (buffer)));
311 write (buffer, (
size_t) num);
313 numBytesToWrite -= num;
327template <
typename IntegerType>
350 return stream <<
String (number);
367 if (!
data.isEmpty())
ostream & operator<<(ostream &out, const MidiEvent &ev)
Definition InMgr.cpp:9
static uint16 swapIfLittleEndian(uint16 value) noexcept
Definition ByteOrder.h:227
static uint16 swapIfBigEndian(uint16 value) noexcept
Definition ByteOrder.h:218
Definition juce_File.h:45
Definition juce_HeapBlock.h:87
Definition juce_MemoryBlock.h:33
Definition juce_NewLine.h:40
Definition juce_OutputStream.h:38
virtual bool writeDoubleBigEndian(double value)
Definition juce_OutputStream.cpp:176
virtual ~OutputStream()
Definition juce_OutputStream.cpp:68
virtual bool writeDouble(double value)
Definition juce_OutputStream.cpp:169
virtual bool write(const void *dataToWrite, size_t numberOfBytes)=0
virtual bool writeRepeatedByte(uint8 byte, size_t numTimesToRepeat)
Definition juce_OutputStream.cpp:88
void setNewLineString(const String &newLineString)
Definition juce_OutputStream.cpp:321
OutputStream()
Definition juce_OutputStream.cpp:59
virtual bool writeInt64BigEndian(int64 value)
Definition juce_OutputStream.cpp:149
virtual bool writeFloat(float value)
Definition juce_OutputStream.cpp:155
virtual int64 writeFromInputStream(InputStream &source, int64 maxNumBytesToWrite)
Definition juce_OutputStream.cpp:296
String newLineString
Definition juce_OutputStream.h:235
virtual bool writeText(const String &text, bool asUTF16, bool writeUTF16ByteOrderMark, const char *lineEndings)
Definition juce_OutputStream.cpp:198
virtual bool writeCompressedInt(int value)
Definition juce_OutputStream.cpp:121
virtual bool writeByte(char byte)
Definition juce_OutputStream.cpp:83
virtual bool writeShort(short value)
Definition juce_OutputStream.cpp:97
virtual bool writeBool(bool boolValue)
Definition juce_OutputStream.cpp:77
virtual bool writeInt64(int64 value)
Definition juce_OutputStream.cpp:143
virtual bool writeIntBigEndian(int value)
Definition juce_OutputStream.cpp:115
virtual bool writeShortBigEndian(short value)
Definition juce_OutputStream.cpp:103
virtual bool writeFloatBigEndian(float value)
Definition juce_OutputStream.cpp:162
virtual bool writeInt(int value)
Definition juce_OutputStream.cpp:109
const String & getNewLineString() const noexcept
Definition juce_OutputStream.h:231
virtual bool writeString(const String &text)
Definition juce_OutputStream.cpp:183
Definition juce_String.h:53
struct huft * t
Definition inflate.c:943
unsigned v[N_MAX]
Definition inflate.c:1584
register unsigned i
Definition inflate.c:1575
static PuglViewHint int value
Definition pugl.h:1708
virtual ASIOError start()=0
JSAMPIMAGE data
Definition jpeglib.h:945
#define JUCE_API
Definition juce_StandardHeader.h:152
float in
Definition lilv_test.c:1460
static char * numberToString(char *t, int64 n) noexcept
Definition juce_String.cpp:393
@ charsNeededForInt
Definition juce_String.cpp:373
Definition carla_juce.cpp:31
unsigned short uint16
Definition juce_MathsFunctions.h:41
unsigned long long uint64
Definition juce_MathsFunctions.h:56
constexpr Type jmin(Type a, Type b)
Definition juce_MathsFunctions.h:106
unsigned int uint32
Definition juce_MathsFunctions.h:45
RangedDirectoryIterator end(const RangedDirectoryIterator &)
Definition juce_RangedDirectoryIterator.h:184
long long int64
Definition juce_MathsFunctions.h:54
static void writeIntToStream(OutputStream &stream, IntegerType number)
Definition juce_OutputStream.cpp:328
unsigned char uint8
Definition juce_MathsFunctions.h:37
constexpr int numElementsInArray(Type(&)[N]) noexcept
Definition juce_MathsFunctions.h:344
const char * text
Definition swell-functions.h:167
int n
Definition crypt.c:458
return c
Definition crypt.c:175
typedef int(UZ_EXP MsgFn)()