LMMS
Loading...
Searching...
No Matches
juce_MemoryOutputStream.h
Go to the documentation of this file.
1/*
2 ==============================================================================
3
4 This file is part of the JUCE library.
5 Copyright (c) 2022 - Raw Material Software Limited
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
23namespace juce
24{
25
26//==============================================================================
36{
37public:
38 //==============================================================================
42 MemoryOutputStream (size_t initialSize = 256);
43
56 MemoryOutputStream (MemoryBlock& memoryBlockToWriteTo,
57 bool appendToExistingBlockContent);
58
64 MemoryOutputStream (void* destBuffer, size_t destBufferSize);
65
69 ~MemoryOutputStream() override;
70
71 //==============================================================================
75 const void* getData() const noexcept;
76
80 size_t getDataSize() const noexcept { return size; }
81
83 void reset() noexcept;
84
88 void preallocate (size_t bytesToPreallocate);
89
91 bool appendUTF8Char (juce_wchar character);
92
94 String toUTF8() const;
95
100
102 MemoryBlock getMemoryBlock() const;
103
104 //==============================================================================
109 void flush() override;
110
111 bool write (const void*, size_t) override;
112 int64 getPosition() override { return (int64) position; }
113 bool setPosition (int64) override;
114 int64 writeFromInputStream (InputStream&, int64 maxNumBytesToWrite) override;
115 bool writeRepeatedByte (uint8 byte, size_t numTimesToRepeat) override;
116
117private:
118 //==============================================================================
119 MemoryBlock* const blockToUse = nullptr;
121 void* externalData = nullptr;
122 size_t position = 0, size = 0, availableSize = 0;
123
125 char* prepareToWrite (size_t);
126
128};
129
132
133} // namespace juce
#define noexcept
Definition DistrhoDefines.h:72
#define override
Definition DistrhoDefines.h:73
ostream & operator<<(ostream &out, const MidiEvent &ev)
Definition InMgr.cpp:9
Definition juce_InputStream.h:37
Definition juce_MemoryBlock.h:33
Definition juce_MemoryOutputStream.h:36
const void * getData() const noexcept
Definition juce_MemoryOutputStream.cpp:148
size_t position
Definition juce_MemoryOutputStream.h:122
size_t getDataSize() const noexcept
Definition juce_MemoryOutputStream.h:80
MemoryBlock *const blockToUse
Definition juce_MemoryOutputStream.h:119
size_t availableSize
Definition juce_MemoryOutputStream.h:122
MemoryOutputStream(size_t initialSize=256)
Definition juce_MemoryOutputStream.cpp:26
int64 getPosition() override
Definition juce_MemoryOutputStream.h:112
size_t size
Definition juce_MemoryOutputStream.h:122
char * prepareToWrite(size_t)
Definition juce_MemoryOutputStream.cpp:74
void trimExternalBlockSize()
Definition juce_MemoryOutputStream.cpp:56
void * externalData
Definition juce_MemoryOutputStream.h:121
MemoryBlock internalBlock
Definition juce_MemoryOutputStream.h:120
Definition juce_OutputStream.h:38
OutputStream()
Definition juce_OutputStream.cpp:59
Definition juce_String.h:53
#define JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(className)
#define JUCE_CALLTYPE
#define JUCE_API
Definition juce_StandardHeader.h:152
Definition carla_juce.cpp:31
juce::String toString(const Steinberg::char8 *string) noexcept
Definition juce_VST3Common.h:159
long long int64
Definition juce_MathsFunctions.h:54
wchar_t juce_wchar
Definition juce_CharacterFunctions.h:42
unsigned char uint8
Definition juce_MathsFunctions.h:37
int flush(__G__ rawbuf, size, unshrink) __GDEF uch *rawbuf
#define const
Definition zconf.h:137