LMMS
Loading...
Searching...
No Matches
MemoryOutputStream.h
Go to the documentation of this file.
1/*
2 ==============================================================================
3
4 This file is part of the Water library.
5 Copyright (c) 2016 ROLI Ltd.
6 Copyright (C) 2017-2022 Filipe Coelho <falktx@falktx.com>
7
8 Permission is granted to use this software under the terms of the ISC license
9 http://www.isc.org/downloads/software-support-policy/isc-license/
10
11 Permission to use, copy, modify, and/or distribute this software for any
12 purpose with or without fee is hereby granted, provided that the above
13 copyright notice and this permission notice appear in all copies.
14
15 THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH REGARD
16 TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
17 FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT,
18 OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
19 USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
20 TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
21 OF THIS SOFTWARE.
22
23 ==============================================================================
24*/
25
26#ifndef WATER_MEMORYOUTPUTSTREAM_H_INCLUDED
27#define WATER_MEMORYOUTPUTSTREAM_H_INCLUDED
28
29#include "OutputStream.h"
31
32namespace water {
33
34//==============================================================================
42{
43public:
44 //==============================================================================
48 MemoryOutputStream (size_t initialSize = 256);
49
62 MemoryOutputStream (MemoryBlock& memoryBlockToWriteTo,
63 bool appendToExistingBlockContent);
64
69
70 //==============================================================================
74 const void* getData() const noexcept;
75
79 void* getDataAndRelease() noexcept;
80
84 size_t getDataSize() const noexcept { return size; }
85
87 void reset() noexcept;
88
92 void preallocate (size_t bytesToPreallocate);
93
95 bool appendUTF8Char (water_uchar character);
96
99
104
107
108 //==============================================================================
113 void flush() override;
114
115 bool write (const void*, size_t) override;
116 int64 getPosition() override { return (int64) position; }
117 bool setPosition (int64) override;
118 int64 writeFromInputStream (InputStream&, int64 maxNumBytesToWrite) override;
119 bool writeRepeatedByte (uint8 byte, size_t numTimesToRepeat) override;
120
121private:
122 //==============================================================================
125 size_t position, size;
127
129 char* prepareToWrite (size_t);
130
132};
133
135OutputStream& operator<< (OutputStream& stream, const MemoryOutputStream& streamToRead);
136
137}
138
139#endif // WATER_MEMORYOUTPUTSTREAM_H_INCLUDED
#define CARLA_DECLARE_NON_COPYABLE(ClassName)
Definition CarlaDefines.h:242
#define noexcept
Definition DistrhoDefines.h:72
#define override
Definition DistrhoDefines.h:73
Definition MemoryBlock.h:39
MemoryOutputStream(size_t initialSize=256)
Definition MemoryOutputStream.cpp:31
Definition InputStream.h:42
Definition MemoryBlock.h:39
Definition MemoryOutputStream.h:42
void * getDataAndRelease() noexcept
Definition MemoryOutputStream.cpp:146
void preallocate(size_t bytesToPreallocate)
Definition MemoryOutputStream.cpp:65
size_t size
Definition MemoryOutputStream.h:125
void trimExternalBlockSize()
Definition MemoryOutputStream.cpp:59
int64 getPosition() override
Definition MemoryOutputStream.h:116
bool writeRepeatedByte(uint8 byte, size_t numTimesToRepeat) override
Definition MemoryOutputStream.cpp:108
MemoryBlock & blockToUse
Definition MemoryOutputStream.h:124
bool usingInternalBlock
Definition MemoryOutputStream.h:126
char * prepareToWrite(size_t)
Definition MemoryOutputStream.cpp:76
size_t getDataSize() const noexcept
Definition MemoryOutputStream.h:84
int64 writeFromInputStream(InputStream &, int64 maxNumBytesToWrite) override
Definition MemoryOutputStream.cpp:167
bool write(const void *, size_t) override
Definition MemoryOutputStream.cpp:92
String toString() const
Definition MemoryOutputStream.cpp:189
bool setPosition(int64) override
Definition MemoryOutputStream.cpp:154
String toUTF8() const
Definition MemoryOutputStream.cpp:183
bool appendUTF8Char(water_uchar character)
Definition MemoryOutputStream.cpp:122
MemoryOutputStream(size_t initialSize=256)
Definition MemoryOutputStream.cpp:31
const void * getData() const noexcept
Definition MemoryOutputStream.cpp:138
MemoryBlock getMemoryBlock() const
Definition MemoryOutputStream.cpp:133
~MemoryOutputStream()
Definition MemoryOutputStream.cpp:49
MemoryBlock internalBlock
Definition MemoryOutputStream.h:123
void reset() noexcept
Definition MemoryOutputStream.cpp:70
size_t position
Definition MemoryOutputStream.h:125
Definition OutputStream.h:44
OutputStream()
Definition OutputStream.cpp:35
Definition String.h:48
Definition AudioSampleBuffer.h:33
OutputStream & operator<<(OutputStream &stream, const MemoryOutputStream &streamToRead)
Definition MemoryOutputStream.cpp:194
long long int64
Definition water.h:100
unsigned char uint8
Definition water.h:90
uint32 water_uchar
Definition CharacterFunctions.h:38
int flush(__G__ rawbuf, size, unshrink) __GDEF uch *rawbuf
#define const
Definition zconf.h:137