Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


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_

Messung V0.5
C=92 H=95 G=93

¤ Dauer der Verarbeitung: 0.22 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 und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge