Decoder.h 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. /*
  2. * Copyright (c) 2020-2021, Andreas Kling <kling@serenityos.org>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #pragma once
  7. #include <AK/Forward.h>
  8. namespace TextCodec {
  9. class Decoder {
  10. public:
  11. virtual String to_utf8(const StringView&) = 0;
  12. protected:
  13. virtual ~Decoder() = default;
  14. };
  15. class UTF8Decoder final : public Decoder {
  16. public:
  17. virtual String to_utf8(const StringView&) override;
  18. };
  19. class UTF16BEDecoder final : public Decoder {
  20. public:
  21. virtual String to_utf8(const StringView&) override;
  22. };
  23. class Latin1Decoder final : public Decoder {
  24. public:
  25. virtual String to_utf8(const StringView&) override;
  26. };
  27. class Latin2Decoder final : public Decoder {
  28. public:
  29. virtual String to_utf8(const StringView&) override;
  30. };
  31. class HebrewDecoder final : public Decoder {
  32. public:
  33. virtual String to_utf8(const StringView&) override;
  34. };
  35. class CyrillicDecoder final : public Decoder {
  36. public:
  37. virtual String to_utf8(const StringView&) override;
  38. };
  39. class Latin9Decoder final : public Decoder {
  40. public:
  41. virtual String to_utf8(const StringView&) override;
  42. };
  43. class TurkishDecoder final : public Decoder {
  44. public:
  45. virtual String to_utf8(const StringView&) override;
  46. };
  47. Decoder* decoder_for(const String& encoding);
  48. Optional<String> get_standardized_encoding(const String& encoding);
  49. bool is_standardized_encoding(const String& encoding);
  50. }