serenity/AK
Lenny Maiorani 2983215fb1 Base64: Pre-allocate size of input and output
Problem:
- Output of decode and encode grow as the decode and encode
  happen. This is inefficient because a large size will require many
  reallocations.
- `const` qualifiers are missing on variables which are not intended
  to change.

Solution:
- Since the size of the decoded or encoded message is known prior to
  starting, calculate the size and set the output to that size
  immediately. All appends will not incur the reallocation overhead.
- Add `const` qualifiers to show intent.
2020-10-13 23:59:46 +02:00
..
Tests Base64: Pre-allocate size of input and output 2020-10-13 23:59:46 +02:00
Array.h AK: Add template deduction guides for Array. 2020-09-21 20:17:36 +02:00
Assertions.h AK+LibC: Add TODO() as an alternative to ASSERT_NOT_REACHED() 2020-05-30 11:31:49 +02:00
Atomic.h Meta+AK: Make clang-format-10 clean 2020-09-25 21:18:17 +02:00
Badge.h Meta+AK: Make clang-format-10 clean 2020-09-25 21:18:17 +02:00
Base64.cpp Base64: Pre-allocate size of input and output 2020-10-13 23:59:46 +02:00
Base64.h Base64: Pre-allocate size of input and output 2020-10-13 23:59:46 +02:00
BinarySearch.h AK: Fix the signature of binary_search. 2020-08-26 21:07:53 +02:00
Bitmap.h Everywhere: Fix more typos 2020-10-03 12:36:49 +02:00
BitStream.h AK: Lower the requirements for InputStream::eof and rename it. 2020-09-14 20:58:12 +02:00
Buffered.h AK: Replace a write_or_error call with write. 2020-10-03 20:16:26 +02:00
ByteBuffer.cpp AK: Prevent confusing silent misuse of ByteBuffer 2020-08-22 17:18:14 +02:00
ByteBuffer.h AK: Fix ByteBuffer zero bytes allocations 2020-08-30 17:30:48 +02:00
Checked.h AK: Demonstrate and fix Checked 2020-08-26 00:55:13 +02:00
CircularDeque.h AK: Add enqueue_begin() for the CircularDeque class (#1320) 2020-03-02 09:50:43 +01:00
CircularDuplexStream.h AK: Lower the requirements for InputStream::eof and rename it. 2020-09-14 20:58:12 +02:00
CircularQueue.h AK: Add CircularDuplexStream class. 2020-08-26 21:07:53 +02:00
CMakeLists.txt Meta: Install source files at /usr/src/serenity 2020-08-15 15:06:35 +02:00
Concepts.h AK: Add SFINAE fallback for AK C++ concepts use, for Coverity compiler 2020-08-17 09:17:57 +02:00
Demangle.h Revert "AK: Don't demangle in serenity :(" 2020-05-20 16:24:26 +02:00
DistinctNumeric.h AK: Fix description of DistinctNumeric around operator bool 2020-08-22 17:18:14 +02:00
DoublyLinkedList.h AK: Make all DoublyLinkedList search methods use Traits<T>::equals (#3404) 2020-09-05 14:17:14 +02:00
Endian.h Endian: constexpr constructors and conversion operators 2020-10-08 23:28:54 +02:00
FlyString.cpp AK: Use StringImpl::operator== in FlyString 2020-10-06 17:43:51 +02:00
FlyString.h AK: Tweak String::is_one_of() and FlyString::is_one_of() 2020-07-28 18:55:47 +02:00
Format.cpp AK+Format: Remove new_dbg(dbg) and raw_dbg. 2020-10-09 20:52:17 +02:00
Format.h AK+Format: Remove new_dbg(dbg) and raw_dbg. 2020-10-09 20:52:17 +02:00
Forward.h AK: Remove BufferStream class. 2020-09-21 09:37:49 +02:00
Function.h Meta+AK: Make clang-format-10 clean 2020-09-25 21:18:17 +02:00
GenericLexer.cpp AK+Format: Do some housekeeping in the format implementation. 2020-10-02 20:48:19 +02:00
GenericLexer.h AK+Format: Do some housekeeping in the format implementation. 2020-10-02 20:48:19 +02:00
HashFunctions.h Meta+AK: Make clang-format-10 clean 2020-09-25 21:18:17 +02:00
HashMap.h Meta+AK: Make clang-format-10 clean 2020-09-25 21:18:17 +02:00
HashTable.h AK: HashTable add a constructor that allows preallocation of capacity + Use in CppLexer. (#3147) 2020-08-16 11:04:00 +02:00
IDAllocator.h Meta+AK: Make clang-format-10 clean 2020-09-25 21:18:17 +02:00
InlineLinkedList.h AK: Clear previous/next link in InlineLinkList::remove 2020-09-27 19:46:04 +02:00
IntrusiveList.h LibCore: Add a forward declaration header 2020-02-14 23:31:18 +01:00
IPv4Address.h AK: Use new format functions. 2020-10-08 09:59:55 +02:00
IterationDecision.h Meta: Add license header to source files 2020-01-18 09:45:54 +01:00
Iterator.h AK: Add generic SimpleIterator class to replace VectorIterator. 2020-09-08 14:01:21 +02:00
JsonArray.h Meta+AK: Make clang-format-10 clean 2020-09-25 21:18:17 +02:00
JsonArraySerializer.h Meta: Claim copyright for files created by me 2020-01-24 15:15:16 +01:00
JsonObject.h AK: Use new format functions. 2020-10-08 09:59:55 +02:00
JsonObjectSerializer.h AK: Make JsonValue and JsonObjectSerializer speak int/long/long long 2020-05-22 13:57:23 +02:00
JsonParser.cpp AK: check fractional string has_value() in JsonParser 2020-10-06 14:27:51 +02:00
JsonParser.h AK: Remove empty destructor from JsonParser. 2020-09-08 14:01:21 +02:00
JsonPath.cpp Inspector: Expand and show properties in a TreeView 2020-07-01 11:18:19 +02:00
JsonPath.h Inspector: Expand and show properties in a TreeView 2020-07-01 11:18:19 +02:00
JsonValue.cpp AK: Fix JsonValue copy constructor behavior for 64-bit values 2020-07-06 18:38:08 +02:00
JsonValue.h Use new format functions in remaining DevTools. (#3755) 2020-10-13 18:34:27 +02:00
kmalloc.h Revert "AK: Let the compiler provide the default new and delete operators" 2020-08-04 21:16:07 +02:00
kstdio.h AK: Make the return type of dbgputstr consistent. 2020-10-04 19:18:32 +02:00
LexicalPath.cpp Meta+AK: Make clang-format-10 clean 2020-09-25 21:18:17 +02:00
LexicalPath.h AK: Add formatter for LexcialPath. 2020-10-09 20:52:17 +02:00
LogStream.cpp AK: Don't add newline for outf/dbgf/warnf. 2020-10-04 17:04:55 +02:00
LogStream.h AK: Don't add newline for outf/dbgf/warnf. 2020-10-04 17:04:55 +02:00
MACAddress.h AK: Use new format functions. 2020-10-08 09:59:55 +02:00
MappedFile.cpp AK: Use new format functions. 2020-10-08 09:59:55 +02:00
MappedFile.h AK: Make MappedFile store why it is invalid 2020-08-01 08:39:26 +02:00
MemMem.h AK+LibC+Kernel: Move the implementation of memmem to AK 2020-08-21 16:00:42 +02:00
Memory.h AK+LibC: Always use REP MOVSB/STOSB for memcpy()/memset() 2020-07-27 15:54:39 +02:00
MemoryStream.h LibAudio: Use InputMemoryStream instead of BufferStream. 2020-09-21 09:37:49 +02:00
NeverDestroyed.h AK: Consider long and unsigned long as integral types. 2020-09-22 15:06:40 +02:00
Noncopyable.h Meta: Force semi-colon after MAKE_AK_NONXXXABLE() 2020-08-27 10:12:04 +02:00
NonnullOwnPtr.h AK: Decorate AK::NonnullOwnPtr::leak_ptr() with [[nodiscard]] 2020-08-05 16:12:00 +02:00
NonnullOwnPtrVector.h Meta+AK: Make clang-format-10 clean 2020-09-25 21:18:17 +02:00
NonnullPtrVector.h AK: Add generic SimpleIterator class to replace VectorIterator. 2020-09-08 14:01:21 +02:00
NonnullRefPtr.h AK: Add formatter for NonnullRefPtr<T>. 2020-10-05 14:19:24 +02:00
NonnullRefPtrVector.h Meta+AK: Make clang-format-10 clean 2020-09-25 21:18:17 +02:00
NumberFormat.h AK: Use new format functions. 2020-10-08 09:59:55 +02:00
NumericLimits.h AK: Add NumericLimits specialization for char. 2020-09-29 16:14:58 +02:00
Optional.h AK: Add Optional::emplace method. 2020-08-30 09:56:10 +02:00
OwnPtr.h AK: Decorate AK::OwnPtr::leak_ptr() with [[nodiscard]] 2020-08-05 16:12:00 +02:00
Platform.h AK: Add Endian.h header to replace NetworkOrdered.h. 2020-08-25 16:22:14 +02:00
PrintfImplementation.h AK: Use new format functions. 2020-10-08 09:59:55 +02:00
Queue.h Meta+AK: Make clang-format-10 clean 2020-09-25 21:18:17 +02:00
QuickSort.h AK: Dual pivot quicksort implementation (#1838) 2020-04-18 13:58:49 +02:00
Random.h Lagom: Adjust AK, LibCore and LibTLS to build on MacOS 2020-05-30 00:36:13 +02:00
RefCounted.h Meta: Force semi-colon after MAKE_AK_NONXXXABLE() 2020-08-27 10:12:04 +02:00
RefPtr.h Meta+AK: Make clang-format-10 clean 2020-09-25 21:18:17 +02:00
Result.h AK: Make Buffered<T> non-copyable. 2020-10-03 20:16:26 +02:00
ScopedValueRollback.h Meta: Add license header to source files 2020-01-18 09:45:54 +01:00
ScopeGuard.h Meta+AK: Make clang-format-10 clean 2020-09-25 21:18:17 +02:00
SharedBuffer.cpp AK: Use new format functions. 2020-10-08 09:59:55 +02:00
SharedBuffer.h AK: Add trivial structure validation to SharedBuffer 2020-10-02 15:38:07 +02:00
Singleton.h Meta+AK: Make clang-format-10 clean 2020-09-25 21:18:17 +02:00
SinglyLinkedList.h AK: SinglyLinkedList use Traits<T>::equals in find 2020-09-06 21:56:32 +02:00
SinglyLinkedListWithCount.h Meta+AK: Make clang-format-10 clean 2020-09-25 21:18:17 +02:00
SourceGenerator.h AK: Add SourceGenerator class. 2020-10-12 19:40:49 +02:00
Span.h AK: Add missing const in Span::operator==. 2020-09-21 09:37:49 +02:00
StdLibExtras.h LibIPC: Make IPC::encode() and ::decode() fail at compiletime when used 2020-10-04 23:12:28 +02:00
Stream.h Everywhere: Fix more typos 2020-10-03 12:36:49 +02:00
String.cpp AK: Move StringImpl::operator== implementation into StringImpl 2020-10-05 17:35:27 +02:00
String.h Everywhere: Fix more typos 2020-10-03 12:36:49 +02:00
StringBuilder.cpp Unicode: Try s/codepoint/code_point/g again 2020-08-05 22:33:42 +02:00
StringBuilder.h AK+Format: Do some housekeeping in the format implementation. 2020-10-02 20:48:19 +02:00
StringImpl.cpp AK: Use new format functions. 2020-10-08 09:59:55 +02:00
StringImpl.h AK: Add formatter for StringImpl. 2020-10-08 09:59:55 +02:00
StringUtils.cpp AK: Move trim_whitespace() into StringUtils and add it to StringView 2020-09-27 21:14:18 +02:00
StringUtils.h AK: Move trim_whitespace() into StringUtils and add it to StringView 2020-09-27 21:14:18 +02:00
StringView.cpp AK: Add StringView::substring_view(size_t) overload. 2020-09-21 20:17:36 +02:00
StringView.h AK: Make StringView hashable 2020-10-08 23:27:16 +02:00
TemporaryChange.h Meta: Add license header to source files 2020-01-18 09:45:54 +01:00
TestSuite.h AK: Use new format functions. 2020-10-08 09:59:55 +02:00
Time.cpp AK+LibC+LibCore: Have fewer implementations of day_of_week 2020-08-26 08:52:07 +02:00
Time.h Meta+AK: Make clang-format-10 clean 2020-09-25 21:18:17 +02:00
Traits.h AK: Add HashMap, HashTable and Traits to Forward.h 2020-02-16 02:01:18 +01:00
TypeCasts.h AK: Add global is<T>() and downcast<T>() 2020-07-26 17:51:00 +02:00
TypedTransfer.h AK: Moved TypedTransfer into it's own header. 2020-09-09 20:15:50 +02:00
Types.h AK: Rename KB, MB, GB to KiB, MiB, GiB 2020-08-16 16:33:28 +02:00
URL.cpp AK: Use new format functions. 2020-10-08 09:59:55 +02:00
URL.h AK: Add formatter for URL. 2020-10-04 14:23:25 +02:00
URLParser.cpp AK: Use new format functions. 2020-10-08 09:59:55 +02:00
URLParser.h AK: Add basic percent encoder/decoder (urlencode and urldecode) 2020-06-07 21:05:05 +02:00
Userspace.h AK: Prevent confusing silent misuse of Userspace<T> 2020-08-22 17:18:14 +02:00
Utf8View.cpp AK: Use new format functions. 2020-10-08 09:59:55 +02:00
Utf8View.h Unicode: Try s/codepoint/code_point/g again 2020-08-05 22:33:42 +02:00
Utf32View.h Unicode: Try s/codepoint/code_point/g again 2020-08-05 22:33:42 +02:00
Vector.h AK: Make Vector::remove_first_matching() signal if anything was removed 2020-10-06 18:38:18 +02:00
Weakable.h AK: Unbreak building with extra debug macros 2020-08-30 09:43:49 +02:00
WeakPtr.h Meta+AK: Make clang-format-10 clean 2020-09-25 21:18:17 +02:00