// Copyright 2014 PDFium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com

#ifndef XFA_FGAS_CRT_LOCALE_IFACE_H_
#define XFA_FGAS_CRT_LOCALE_IFACE_H_

#include "core/fxcrt/fx_string.h"

class LocaleIface {
 public:
  enum class DateTimeSubcategory {
    kDefault,
    kShort,
    kMedium,
    kFull,
    kLong,
  };

  enum class NumSubcategory {
    kPercent,
    kCurrency,
    kDecimal,
    kInteger,
  };

  virtual ~LocaleIface() = default;

  virtual WideString GetName() const = 0;
  virtual WideString GetDecimalSymbol() const = 0;
  virtual WideString GetGroupingSymbol() const = 0;
  virtual WideString GetPercentSymbol() const = 0;
  virtual WideString GetMinusSymbol() const = 0;
  virtual WideString GetCurrencySymbol() const = 0;
  virtual WideString GetDateTimeSymbols() const = 0;
  virtual WideString GetMonthName(int32_t nMonth, bool bAbbr) const = 0;
  virtual WideString GetDayName(int32_t nWeek, bool bAbbr) const = 0;
  virtual WideString GetMeridiemName(bool bAM) const = 0;
  virtual int GetTimeZoneInMinutes() const = 0;
  virtual WideString GetEraName(bool bAD) const = 0;
  virtual WideString GetDatePattern(DateTimeSubcategory eType) const = 0;
  virtual WideString GetTimePattern(DateTimeSubcategory eType) const = 0;
  virtual WideString GetNumPattern(NumSubcategory eType) const = 0;
};

#endif  // XFA_FGAS_CRT_LOCALE_IFACE_H_
