CodePorting.Translator Cs2Cpp
CodePorting.Translator.Cs2Cpp.Framework
encoding.h
1
2#pragma once
3
4#include <system/object.h>
5#include <system/text/decoder_fallback.h>
6#include <system/text/encoder_fallback.h>
7#include <system/text/decoder.h>
8#include <system/text/encoder.h>
9#include <system/text/encoding_decoder.h>
10#include <system/text/encoding_encoder.h>
11#include <system/exceptions.h>
12#include <system/details/array_view.h>
13#include <system/details/stack_array.h>
14#include <fwd.h>
15
16
17namespace System {
18
19template<typename> class ReadOnlySpan;
20
21namespace Text {
22
23namespace Details {
24 struct EncodingInfoInternal;
25}
26
27class Encoding;
28
33class ASPOSECPP_SHARED_CLASS EncodingInfo final : public Object
34{
35public:
40 EncodingInfo(int codepage, const String& name, const String& display_name)
41 : m_codepage(codepage)
42 , m_name(name)
43 , m_display_name(display_name)
44 {}
45
48 int get_CodePage() const { return m_codepage; }
51 const String& get_Name() const { return m_name; }
54 const String& get_DisplayName() const { return m_display_name; }
55
58 ASPOSECPP_SHARED_API EncodingPtr GetEncoding();
59
60private:
62 const int m_codepage;
64 const String m_name;
66 const String m_display_name;
67};
68
70class ASPOSECPP_SHARED_CLASS Encoding : public Object
71{
73 RTTI_INFO(System::Text::Encoding, ::System::BaseTypesInfo<System::Object>)
74
75public:
78
80 static constexpr int DEFAULT_CODE_PAGE = 0;
81
85 ASPOSECPP_SHARED_API bool Equals(SharedPtr<Object> obj) override;
88 ASPOSECPP_SHARED_API int GetHashCode() const override;
89
92 virtual ASPOSECPP_SHARED_API int get_CodePage();
95 virtual ASPOSECPP_SHARED_API int get_WindowsCodePage();
96
99 virtual ASPOSECPP_SHARED_API String get_WebName();
102 virtual ASPOSECPP_SHARED_API String get_BodyName();
105 virtual ASPOSECPP_SHARED_API String get_EncodingName();
108 virtual ASPOSECPP_SHARED_API String get_HeaderName();
109
112 virtual ASPOSECPP_SHARED_API bool get_IsSingleByte();
115 virtual ASPOSECPP_SHARED_API bool get_IsBrowserDisplay();
118 virtual ASPOSECPP_SHARED_API bool get_IsBrowserSave();
121 virtual ASPOSECPP_SHARED_API bool get_IsMailNewsDisplay();
124 virtual ASPOSECPP_SHARED_API bool get_IsMailNewsSave();
127 ASPOSECPP_SHARED_API bool get_IsReadOnly();
128
131 ASPOSECPP_SHARED_API DecoderFallbackPtr get_DecoderFallback() const;
134 ASPOSECPP_SHARED_API void set_DecoderFallback(const DecoderFallbackPtr& value);
137 ASPOSECPP_SHARED_API const EncoderFallbackPtr get_EncoderFallback() const;
140 ASPOSECPP_SHARED_API void set_EncoderFallback(const EncoderFallbackPtr& value);
141
147 static ASPOSECPP_SHARED_API ArrayPtr<uint8_t> Convert(const EncodingPtr& src_encoding, const EncodingPtr& dst_encoding, const ArrayPtr<uint8_t>& bytes);
155 static ASPOSECPP_SHARED_API ArrayPtr<uint8_t> Convert(const EncodingPtr& src_encoding, const EncodingPtr& dst_encoding, const ArrayPtr<uint8_t>& bytes, int index, int count);
156
162 virtual ASPOSECPP_SHARED_API int GetByteCount(ArrayPtr<char_t> chars, int index, int count);
163
169 virtual ASPOSECPP_SHARED_API int GetByteCount(System::Details::ArrayView<char_t> chars, int index, int count);
175 template<std::size_t N>
176 int GetByteCount(const System::Details::StackArray<char_t, N> & chars, int index, int count)
177 {
178 return GetByteCount(static_cast<System::Details::ArrayView<char_t>>(chars), index, count);
179 }
180
184 virtual ASPOSECPP_SHARED_API int GetByteCount(const String& s);
188 virtual ASPOSECPP_SHARED_API int GetByteCount(ArrayPtr<char_t> chars);
193 virtual ASPOSECPP_SHARED_API int GetByteCount(const char_t *chars, int count);
194
202 virtual ASPOSECPP_SHARED_API int GetBytes(ArrayPtr<char_t> chars, int char_index, int char_count, ArrayPtr<uint8_t> bytes, int byte_index);
210 virtual ASPOSECPP_SHARED_API int GetBytes(System::Details::ArrayView<char_t> chars, int char_index, int char_count, System::Details::ArrayView<uint8_t> bytes, int byte_index);
218 template<std::size_t SC, std::size_t SB>
219 int GetBytes(System::Details::StackArray<char_t, SC> &chars, int char_index, int char_count, System::Details::StackArray<uint8_t, SB> &bytes, int byte_index)
220 {
221 return GetBytes(static_cast<System::Details::ArrayView<char_t>>(chars), char_index, char_count, static_cast<System::Details::ArrayView<uint8_t>>(bytes), byte_index);
222 }
223
231 virtual ASPOSECPP_SHARED_API int GetBytes(const String &s, int char_index, int char_count, ArrayPtr<uint8_t> bytes, int byte_index);
235 virtual ASPOSECPP_SHARED_API ArrayPtr<uint8_t> GetBytes(const String &s);
241 virtual ASPOSECPP_SHARED_API ArrayPtr<uint8_t> GetBytes(ArrayPtr<char_t> chars, int index, int count);
247 virtual ASPOSECPP_SHARED_API ArrayPtr<uint8_t> GetBytes(const System::Details::ArrayView<char_t> &chars, int index, int count);
253 template<std::size_t N>
254 ArrayPtr<uint8_t> GetBytes(const System::Details::StackArray<char_t, N> &chars, int index, int count)
255 {
256 return GetBytes(static_cast<System::Details::ArrayView<char_t>>(chars), index, count);
257 }
258
262 virtual ASPOSECPP_SHARED_API ArrayPtr<uint8_t> GetBytes(ArrayPtr<char_t> chars);
269 virtual ASPOSECPP_SHARED_API int GetBytes(const char_t* chars, int char_count, uint8_t* bytes, int byte_count);
270
276 virtual ASPOSECPP_SHARED_API int GetCharCount(ArrayPtr<uint8_t> bytes, int index, int count);
280 virtual ASPOSECPP_SHARED_API int GetCharCount(ArrayPtr<uint8_t> bytes);
285 virtual ASPOSECPP_SHARED_API int GetCharCount(const uint8_t* bytes, int count);
286
294 virtual ASPOSECPP_SHARED_API int GetChars(ArrayPtr<uint8_t> bytes, int byte_index, int byte_count, ArrayPtr<char_t> chars, int char_index);
300 virtual ASPOSECPP_SHARED_API ArrayPtr<char_t> GetChars(ArrayPtr<uint8_t> bytes, int index, int count);
304 virtual ASPOSECPP_SHARED_API ArrayPtr<char_t> GetChars(ArrayPtr<uint8_t> bytes);
311 virtual ASPOSECPP_SHARED_API int GetChars(const uint8_t *bytes, int byte_count, char_t *chars, int char_count);
312
315 virtual ASPOSECPP_SHARED_API DecoderPtr GetDecoder();
318 virtual ASPOSECPP_SHARED_API EncoderPtr GetEncoder();
319
324 virtual ASPOSECPP_SHARED_API String GetString(uint8_t* bytes, int byte_count);
328 ASPOSECPP_SHARED_API String GetString(const ReadOnlySpan<uint8_t>& bytes);
332 virtual ASPOSECPP_SHARED_API String GetString(ArrayPtr<uint8_t> bytes);
336 virtual ASPOSECPP_SHARED_API String GetString(const System::Details::ArrayView<uint8_t> &bytes);
340 template<std::size_t N>
341 String GetString(System::Details::StackArray<uint8_t, N> &bytes)
342 {
343 return GetString(static_cast<System::Details::ArrayView<uint8_t>>(bytes));
344 }
345
351 virtual ASPOSECPP_SHARED_API String GetString(ArrayPtr<uint8_t> bytes, int index, int count);
357 virtual ASPOSECPP_SHARED_API String GetString(const System::Details::ArrayView<uint8_t> &bytes, int index, int count);
363 template<std::size_t N>
364 String GetString(System::Details::StackArray<uint8_t, N> bytes, int index, int count)
365 {
366 return GetString(static_cast<System::Details::ArrayView<uint8_t>>(bytes), index, count);
367 }
368
372 virtual ASPOSECPP_SHARED_API int GetMaxByteCount(int char_count) = 0;
376 virtual ASPOSECPP_SHARED_API int GetMaxCharCount(int byte_count) = 0;
377
380 virtual ASPOSECPP_SHARED_API SharedPtr<Object> Clone();
383 virtual ASPOSECPP_SHARED_API ArrayPtr<uint8_t> GetPreamble();
384
387 static ASPOSECPP_SHARED_API EncodingPtr get_ASCII();
390 static ASPOSECPP_SHARED_API EncodingPtr get_BigEndianUnicode();
393 static ASPOSECPP_SHARED_API EncodingPtr get_Unicode();
396 static ASPOSECPP_SHARED_API EncodingPtr get_UTF8();
399 static ASPOSECPP_SHARED_API EncodingPtr get_UTF8Unmarked();
400 // Gets the standard UTF-32 encoding object.
402 static ASPOSECPP_SHARED_API EncodingPtr get_UTF32();
405 static ASPOSECPP_SHARED_API EncodingPtr get_BigEndianUTF32();
408 static ASPOSECPP_SHARED_API EncodingPtr get_UTF7();
411
415 static ASPOSECPP_SHARED_API EncodingPtr GetEncoding(const String& name);
419 static ASPOSECPP_SHARED_API EncodingPtr GetEncoding(int codepage);
425 static ASPOSECPP_SHARED_API EncodingPtr GetEncoding(int codepage, const EncoderFallbackPtr& encoder_fallback, const DecoderFallbackPtr& decoder_fallback);
431 static ASPOSECPP_SHARED_API EncodingPtr GetEncoding(const String& name, const EncoderFallbackPtr& encoder_fallback, const DecoderFallbackPtr& decoder_fallback);
432
435 static ASPOSECPP_SHARED_API EncodingPtr get_Default();
436
439 static ASPOSECPP_SHARED_API ArrayPtr<EncodingInfoPtr> GetEncodings();
440
441protected:
443 const Details::EncodingInfoInternal* m_info;
445 const int m_codepage;
447 bool m_is_read_only = true;
448
450 ASPOSECPP_SHARED_API Encoding();
453 ASPOSECPP_SHARED_API Encoding(int codepage);
458 ASPOSECPP_SHARED_API Encoding(int codepage, const EncoderFallbackPtr& encoder_fallback, const DecoderFallbackPtr& decoder_fallback);
459
462 Encoding(const Details::EncodingInfoInternal* info);
463
464private:
466 void SetDefaultFallbacks();
468 void VerifyInternalData();
469
471 DecoderFallbackPtr m_decoder_fallback;
473 EncoderFallbackPtr m_encoder_fallback;
474};
475
476}} // System::Text
Base class that enables using methods available for System.Object class in C#. All non-trivial classe...
Definition: object.h:51
Forward to use within Span class.
Definition: span.h:404
String class used across the library. Is a substitute for C# System.String when translating code....
Definition: string.h:125
Encoding services.
Definition: encoding.h:71
virtual int GetByteCount(ArrayPtr< char_t > chars, int index, int count)
Get the number of characters needed to encode a character buffer.
virtual int GetMaxCharCount(int byte_count)=0
Get the maximum number of characters needed to decode a specified number of bytes.
virtual int GetBytes(System::Details::ArrayView< char_t > chars, int char_index, int char_count, System::Details::ArrayView< uint8_t > bytes, int byte_index)
Get the bytes that result from encoding a character buffer.
virtual int GetBytes(ArrayPtr< char_t > chars, int char_index, int char_count, ArrayPtr< uint8_t > bytes, int byte_index)
Get the bytes that result from encoding a character buffer.
virtual ArrayPtr< uint8_t > GetBytes(ArrayPtr< char_t > chars, int index, int count)
Get the bytes that result from encoding a character buffer.
virtual String GetString(const System::Details::ArrayView< uint8_t > &bytes)
Decodes a buffer of bytes into a string.
Encoding(int codepage, const EncoderFallbackPtr &encoder_fallback, const DecoderFallbackPtr &decoder_fallback)
Constructor.
virtual SharedPtr< Object > Clone()
Clones encoding object.
static EncodingPtr GetEncoding(const String &name)
Gets encoding by name.
virtual String GetString(const System::Details::ArrayView< uint8_t > &bytes, int index, int count)
Decodes a buffer of bytes into a string.
virtual bool get_IsBrowserSave()
Checks whether encoding can be used in browser to save content.
ArrayPtr< uint8_t > GetBytes(const System::Details::StackArray< char_t, N > &chars, int index, int count)
Get the bytes that result from encoding a character buffer.
Definition: encoding.h:254
virtual int GetMaxByteCount(int char_count)=0
Get the maximum number of bytes needed to encode a specified number of characters.
virtual int get_WindowsCodePage()
Gets Windows codepage ID.
static EncodingPtr get_BigEndianUnicode()
Gets the standard big-endian Unicode encoding object.
virtual ArrayPtr< char_t > GetChars(ArrayPtr< uint8_t > bytes)
Get the characters that result from decoding a byte buffer.
static EncodingPtr get_UTF8Unmarked()
Only internal, to be used by the class libraries: Unmarked and non-input-validating.
Encoding(int codepage)
Constructor.
virtual ArrayPtr< uint8_t > GetPreamble()
Returns a sequence of bytes that denotes the encoding (e. g. BOM).
virtual String get_BodyName()
Gets mail agent body compatible encoding name.
virtual int GetByteCount(ArrayPtr< char_t > chars)
Get the number of characters needed to encode a character buffer.
virtual bool get_IsMailNewsDisplay()
Checks whether encoding can be used in mail client to display content.
virtual int GetByteCount(System::Details::ArrayView< char_t > chars, int index, int count)
Get the number of characters needed to encode a character buffer.
static EncodingPtr get_UTF7()
Gets the standard UTF-7 encoding object.
const int m_codepage
Code page identifier.
Definition: encoding.h:445
static EncodingPtr GetEncoding(int codepage, const EncoderFallbackPtr &encoder_fallback, const DecoderFallbackPtr &decoder_fallback)
Gets encoding by codepage.
virtual int GetCharCount(const uint8_t *bytes, int count)
Get the number of characters needed to decode a byte buffer.
virtual int get_CodePage()
Gets Windows codepage ID.
virtual String get_HeaderName()
Gets mail agent header compatible encoding name.
System::SharedPtr< Encoding > Ptr
RTTI.
Definition: encoding.h:77
virtual int GetCharCount(ArrayPtr< uint8_t > bytes, int index, int count)
Get the number of characters needed to decode a byte buffer.
Encoding(const Details::EncodingInfoInternal *info)
Internal constructor.
virtual int GetByteCount(const char_t *chars, int count)
Get the number of characters needed to encode a character buffer.
virtual ArrayPtr< uint8_t > GetBytes(const System::Details::ArrayView< char_t > &chars, int index, int count)
Get the bytes that result from encoding a character buffer.
virtual EncoderPtr GetEncoder()
Get an encoder that forwards requests to this object.
static EncodingPtr get_UTF32()
int GetByteCount(const System::Details::StackArray< char_t, N > &chars, int index, int count)
Get the number of characters needed to encode a character buffer.
Definition: encoding.h:176
virtual String get_WebName()
Gets IANA-compatible encoding name.
int GetHashCode() const override
Hashes encoding.
static ArrayPtr< uint8_t > Convert(const EncodingPtr &src_encoding, const EncodingPtr &dst_encoding, const ArrayPtr< uint8_t > &bytes)
Converts bytes between two encodings.
virtual ArrayPtr< uint8_t > GetBytes(const String &s)
Get the bytes that result from encoding a character buffer.
int GetBytes(System::Details::StackArray< char_t, SC > &chars, int char_index, int char_count, System::Details::StackArray< uint8_t, SB > &bytes, int byte_index)
Get the bytes that result from encoding a character buffer.
Definition: encoding.h:219
String GetString(const ReadOnlySpan< uint8_t > &bytes)
Decodes a buffer of bytes into a string.
static EncodingPtr get_BigEndianUTF32()
Gets the standard big-endian UTF-32 encoding object.
static ArrayPtr< EncodingInfoPtr > GetEncodings()
Gets list of known encodings.
static EncodingPtr get_UTF8()
Gets the standard UTF-8 encoding object.
virtual bool get_IsBrowserDisplay()
Checks whether encoding can be used in browser to display content.
void set_EncoderFallback(const EncoderFallbackPtr &value)
Sets encoder fallback.
virtual ArrayPtr< uint8_t > GetBytes(ArrayPtr< char_t > chars)
Get the bytes that result from encoding a character buffer.
virtual ArrayPtr< char_t > GetChars(ArrayPtr< uint8_t > bytes, int index, int count)
Get the characters that result from decoding a byte buffer.
virtual String GetString(uint8_t *bytes, int byte_count)
Decodes a buffer of bytes into a string.
static EncodingPtr get_Latin1()
Gets Latin1 encoding. FOR INTERNAL USE.
virtual String GetString(ArrayPtr< uint8_t > bytes, int index, int count)
Decodes a buffer of bytes into a string.
static EncodingPtr get_Unicode()
Gets the standard Unicode encoding object.
String GetString(System::Details::StackArray< uint8_t, N > bytes, int index, int count)
Decodes a buffer of bytes into a string.
Definition: encoding.h:364
virtual int GetChars(const uint8_t *bytes, int byte_count, char_t *chars, int char_count)
Get the characters that result from decoding a byte buffer.
void set_DecoderFallback(const DecoderFallbackPtr &value)
Sets decoder fallback.
virtual int GetCharCount(ArrayPtr< uint8_t > bytes)
Get the number of characters needed to decode a byte buffer.
const EncoderFallbackPtr get_EncoderFallback() const
Gets encoder fallback.
const Details::EncodingInfoInternal * m_info
Pointer to internal encoding info.
Definition: encoding.h:443
virtual int GetBytes(const char_t *chars, int char_count, uint8_t *bytes, int byte_count)
Get the bytes that result from encoding a character buffer.
static EncodingPtr GetEncoding(int codepage)
Gets encoding by codepage.
virtual bool get_IsMailNewsSave()
Checks whether encoding can be used in mail client to save content.
static EncodingPtr GetEncoding(const String &name, const EncoderFallbackPtr &encoder_fallback, const DecoderFallbackPtr &decoder_fallback)
Gets encoding by name.
static EncodingPtr get_Default()
Gets default encoding.
virtual String get_EncodingName()
Gets human-readable encoding name.
Encoding()
Default constructor.
virtual int GetByteCount(const String &s)
Get the number of characters needed to encode a string.
static EncodingPtr get_ASCII()
Gets ASCII encoding.
bool Equals(SharedPtr< Object > obj) override
Compares encodings.
bool get_IsReadOnly()
Checks whether encoding is read-only.
virtual int GetChars(ArrayPtr< uint8_t > bytes, int byte_index, int byte_count, ArrayPtr< char_t > chars, int char_index)
Get the characters that result from decoding a byte buffer.
String GetString(System::Details::StackArray< uint8_t, N > &bytes)
Decodes a buffer of bytes into a string.
Definition: encoding.h:341
virtual bool get_IsSingleByte()
Checks whether encoding is single byte.
virtual String GetString(ArrayPtr< uint8_t > bytes)
Decodes a buffer of bytes into a string.
DecoderFallbackPtr get_DecoderFallback() const
Gets decoder fallback.
virtual int GetBytes(const String &s, int char_index, int char_count, ArrayPtr< uint8_t > bytes, int byte_index)
Get the bytes that result from encoding a character buffer.
virtual DecoderPtr GetDecoder()
Get a decoder that forwards requests to this object.
static ArrayPtr< uint8_t > Convert(const EncodingPtr &src_encoding, const EncodingPtr &dst_encoding, const ArrayPtr< uint8_t > &bytes, int index, int count)
Converts bytes between two encodings.
Brief info on encoding. Objects of this class should only be allocated using System::MakeObject() fun...
Definition: encoding.h:34
const String & get_Name() const
Gets encoding short name.
Definition: encoding.h:51
int get_CodePage() const
Gets codepage ID.
Definition: encoding.h:48
const String & get_DisplayName() const
Gets full localized encoding name.
Definition: encoding.h:54
EncodingPtr GetEncoding()
Gets encoding described by info.
EncodingInfo(int codepage, const String &name, const String &display_name)
Constuctor.
Definition: encoding.h:40
@ Text
Defines color adjustment information for text.
Definition: db_command.h:9