Plasma Engine  2.0
Loading...
Searching...
No Matches
StringDeduplicationContext.h
1
2#pragma once
3
4#include <Foundation/Containers/DynamicArray.h>
5#include <Foundation/Containers/Map.h>
6#include <Foundation/IO/MemoryStream.h>
7#include <Foundation/IO/SerializationContext.h>
8#include <Foundation/Strings/String.h>
9
10class plStreamWriter;
11class plStreamReader;
12
17class PL_FOUNDATION_DLL plStringDeduplicationWriteContext : public plSerializationContext<plStringDeduplicationWriteContext>
18{
19 PL_DECLARE_SERIALIZATION_CONTEXT(plStringDeduplicationWriteContext);
20
21public:
25
28 plStreamWriter& Begin();
29
31 plResult End();
32
34 void SerializeString(const plStringView& sString, plStreamWriter& ref_writer);
35
37 plUInt32 GetUniqueStringCount() const;
38
40 plStreamWriter& GetOriginalStream() { return m_OriginalStream; }
41
42protected:
43 plStreamWriter& m_OriginalStream;
44
45 plDefaultMemoryStreamStorage m_TempStreamStorage;
46 plMemoryStreamWriter m_TempStreamWriter;
47
48 plMap<plHybridString<64>, plUInt32> m_DeduplicatedStrings;
49};
50
52class PL_FOUNDATION_DLL plStringDeduplicationReadContext : public plSerializationContext<plStringDeduplicationReadContext>
53{
54 PL_DECLARE_SERIALIZATION_CONTEXT(plStringDeduplicationReadContext);
55
56public:
60
62 plStringView DeserializeString(plStreamReader& ref_reader);
63
64protected:
65 plDynamicArray<plHybridString<64>> m_DeduplicatedStrings;
66};
The default implementation for memory stream storage.
Definition MemoryStream.h:161
Definition DynamicArray.h:81
Definition Map.h:408
A writer which can access a memory stream.
Definition MemoryStream.h:313
Base class for serialization contexts. A serialization context can be used to add high level logic to...
Definition SerializationContext.h:10
Interface for binary in (read) streams.
Definition Stream.h:22
Interface for binary out (write) streams.
Definition Stream.h:107
This class to restore strings written to a stream using a plStringDeduplicationWriteContext.
Definition StringDeduplicationContext.h:53
This class allows for automatic deduplication of strings written to a stream. To use,...
Definition StringDeduplicationContext.h:18
plStreamWriter & GetOriginalStream()
Returns the original stream that was passed to the constructor.
Definition StringDeduplicationContext.h:40
plStringView represent a read-only sub-string of a larger string, as it can store a dedicated string ...
Definition StringView.h:34
Default enum for returning failure or success, instead of using a bool.
Definition Types.h:54