Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Firefox/dom/encoding/   (Browser von der Mozilla Stiftung Version 136.0.1©)  Datei vom 10.2.2025 mit Größe 3 kB image not shown  

Quelle  TextDecoder.h   Sprache: C

 
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this file,
 * You can obtain one at http://mozilla.org/MPL/2.0/. */


#ifndef mozilla_dom_textdecoder_h_
#define mozilla_dom_textdecoder_h_

#include "mozilla/dom/NonRefcountedDOMObject.h"
#include "mozilla/dom/TextDecoderBinding.h"
#include "mozilla/dom/TypedArray.h"
#include "mozilla/Encoding.h"
#include "mozilla/ErrorResult.h"
#include "mozilla/UniquePtr.h"

namespace mozilla::dom {

class ArrayBufferViewOrArrayBuffer;

class TextDecoderCommon {
 public:
  /**
   * Decodes incoming byte stream of characters in charset indicated by
   * encoding.
   *
   * The encoding algorithm state is reset if aOptions.mStream is not set.
   *
   * If the fatal flag is set then a decoding error will throw EncodingError.
   * Else the decoder will return a decoded string with replacement
   * character(s) for unidentified character(s).
   *
   * @param      aInput, incoming byte stream of characters to be decoded to
   *                    to UTF-16 code points.
   * @param      aStream, indicates if streaming or not.
   * @param      aOutDecodedString, decoded string of UTF-16 code points.
   * @param      aRv, error result.
   */

  void DecodeNative(mozilla::Span<const uint8_t> aInput, const bool aStream,
                    nsAString& aOutDecodedString, ErrorResult& aRv);

  /**
   * Return the encoding name.
   *
   * @param aEncoding, current encoding.
   */

  void GetEncoding(nsAString& aEncoding);

  bool Fatal() const { return mFatal; }

  bool IgnoreBOM() const { return mIgnoreBOM; }

 protected:
  mozilla::UniquePtr<mozilla::Decoder> mDecoder;
  nsCString mEncoding;
  bool mFatal = false;
  bool mIgnoreBOM = false;
};

class TextDecoder final : public NonRefcountedDOMObject,
                          public TextDecoderCommon {
 public:
  // The WebIDL constructor.
  static UniquePtr<TextDecoder> Constructor(const GlobalObject& aGlobal,
                                            const nsAString& aEncoding,
                                            const TextDecoderOptions& aOptions,
                                            ErrorResult& aRv) {
    auto txtDecoder = MakeUnique<TextDecoder>();
    txtDecoder->Init(aEncoding, aOptions, aRv);
    if (aRv.Failed()) {
      return nullptr;
    }
    return txtDecoder;
  }

  TextDecoder() { MOZ_COUNT_CTOR(TextDecoder); }

  MOZ_COUNTED_DTOR(TextDecoder)

  bool WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto,
                  JS::MutableHandle<JSObject*> aReflector) {
    return TextDecoder_Binding::Wrap(aCx, this, aGivenProto, aReflector);
  }

  /**
   * Validates provided label and throws an exception if invalid label.
   *
   * @param aLabel       The encoding label (case insensitive) provided.
   * @param aOptions     The TextDecoderOptions to use.
   * @return aRv         EncodingError exception else null.
   */

  void Init(const nsAString& aLabel, const TextDecoderOptions& aOptions,
            ErrorResult& aRv);

  /**
   * Performs initialization with a Gecko-canonical encoding name (as opposed
   * to a label.)
   *
   * @param aEncoding    An Encoding object
   * @param aOptions     The TextDecoderOptions to use.
   */

  void InitWithEncoding(NotNull<const Encoding*> aEncoding,
                        const TextDecoderOptions& aOptions);

  void Decode(const Optional<ArrayBufferViewOrArrayBuffer>& aBuffer,
              const TextDecodeOptions& aOptions, nsAString& aOutDecodedString,
              ErrorResult& aRv);

 private:
};

}  // namespace mozilla::dom

#endif  // mozilla_dom_textdecoder_h_

100%


¤ Dauer der Verarbeitung: 0.25 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung ist noch experimentell.