intl/unicharutil/nsEntityConverter.h
author Sylvestre Ledru <sledru@mozilla.com>
Fri, 24 Feb 2017 09:55:59 +0100
changeset 489668 cbb8fdf1daf98a15f7d57f6b08d273bdf96aa1a0
parent 261034 b42e82ef33d929c3894e77d45a6159b9db35edea
child 489671 05d9746016f47666c00390aacc9f9d62c8ffffb4
permissions -rw-r--r--
indent all but js/ MozReview-Commit-ID: 4rriqT7lBP9

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/* 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 nsEntityConverter_h__
#define nsEntityConverter_h__

#include "nsIEntityConverter.h"
#include "nsIStringBundle.h"
#include "nsCOMPtr.h"

class nsEntityConverter : public nsIEntityConverter
{
public:
  //
  // implementation methods
  //
  nsEntityConverter();

  //
  // nsISupports
  //
  NS_DECL_ISUPPORTS

  NS_IMETHOD ConvertUTF32ToEntity(uint32_t character,
                                  uint32_t entityVersion,
                                  char** _retval) override;
  NS_IMETHOD ConvertToEntity(char16_t character,
                             uint32_t entityVersion,
                             char** _retval) override;
  NS_IMETHOD ConvertToEntities(const char16_t* inString,
                               uint32_t entityVersion,
                               char16_t** _retval) override;

protected:
  // map version number to a string bundle
  nsIStringBundle* GetVersionBundleInstance(uint32_t versionNumber);

  // load a string bundle file
  already_AddRefed<nsIStringBundle> LoadEntityBundle(const char* fileName);

  const char* kHTML40LATIN1 = "html40Latin1.properties";
  const char* kHTML40SYMBOLS = "html40Symbols.properties";
  const char* kHTML40SPECIAL = "html40Special.properties";
  const char* kMATHML20 = "mathml20.properties";
  nsCOMPtr<nsIStringBundle> mHTML40Latin1Bundle;
  nsCOMPtr<nsIStringBundle> mHTML40SymbolsBundle;
  nsCOMPtr<nsIStringBundle> mHTML40SpecialBundle;
  nsCOMPtr<nsIStringBundle> mMathML20Bundle;

  virtual ~nsEntityConverter();
};

#endif