Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
cfgas_stringformatter.h
Go to the documentation of this file.
1// Copyright 2017 The PDFium Authors
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6
7#ifndef XFA_FGAS_CRT_CFGAS_STRINGFORMATTER_H_
8#define XFA_FGAS_CRT_CFGAS_STRINGFORMATTER_H_
9
10#include <vector>
11
12#include "core/fxcrt/widestring.h"
13#include "third_party/base/containers/span.h"
14#include "xfa/fgas/crt/locale_iface.h"
15
16class CFX_DateTime;
17class LocaleMgrIface;
18
19bool FX_DateFromCanonical(pdfium::span<const wchar_t> wsTime,
20 CFX_DateTime* datetime);
21bool FX_TimeFromCanonical(const LocaleIface* pLocale,
22 pdfium::span<const wchar_t> wsTime,
23 CFX_DateTime* datetime);
24
26 public:
27 enum class Category {
29 kDate,
30 kTime,
32 kNum,
33 kText,
34 kZero,
35 kNull,
36 };
37
38 enum class DateTimeType {
40 kDate,
41 kTime,
44 };
45
46 explicit CFGAS_StringFormatter(const WideString& wsPattern);
48
49 static std::vector<WideString> SplitOnBars(const WideString& wsFormatString);
50
51 Category GetCategory() const;
52
53 bool ParseText(const WideString& wsSrcText, WideString* wsValue) const;
54 bool ParseNum(LocaleMgrIface* pLocaleMgr,
55 const WideString& wsSrcNum,
56 WideString* wsValue) const;
57 bool ParseDateTime(LocaleMgrIface* pLocaleMgr,
58 const WideString& wsSrcDateTime,
59 DateTimeType eDateTimeType,
60 CFX_DateTime* dtValue) const;
61 bool ParseZero(const WideString& wsSrcText) const;
62 bool ParseNull(const WideString& wsSrcText) const;
63
64 bool FormatText(const WideString& wsSrcText, WideString* wsOutput) const;
65 bool FormatNum(LocaleMgrIface* pLocaleMgr,
66 const WideString& wsSrcNum,
67 WideString* wsOutput) const;
68 bool FormatDateTime(LocaleMgrIface* pLocaleMgr,
69 const WideString& wsSrcDateTime,
70 DateTimeType eDateTimeType,
71 WideString* wsOutput) const;
72 bool FormatZero(WideString* wsOutput) const;
73 bool FormatNull(WideString* wsOutput) const;
74
75 private:
76 WideString GetTextFormat(WideStringView wsCategory) const;
77 LocaleIface* GetNumericFormat(LocaleMgrIface* pLocaleMgr,
78 size_t* iDotIndex,
79 uint32_t* dwStyle,
80 WideString* wsPurgePattern) const;
81 DateTimeType GetDateTimeFormat(LocaleMgrIface* pLocaleMgr,
82 LocaleIface** pLocale,
83 WideString* wsDatePattern,
84 WideString* wsTimePattern) const;
85
86 const WideString m_wsPattern; // keep pattern string alive.
87 const pdfium::span<const wchar_t> m_spPattern; // span into |m_wsPattern|.
88};
89
90#endif // XFA_FGAS_CRT_CFGAS_STRINGFORMATTER_H_
#define SUBC(a, b, c)
#define FX_NUMSTYLE_Exponent
#define FX_NUMSTYLE_Percent
bool FX_TimeFromCanonical(const LocaleIface *pLocale, pdfium::span< const wchar_t > spTime, CFX_DateTime *datetime)
#define FX_NUMSTYLE_DotVorv
bool FX_DateFromCanonical(pdfium::span< const wchar_t > spDate, CFX_DateTime *datetime)
bool FX_IsLeapYear(int32_t iYear)
bool IsNotZero() const
uint8_t GetScale() const
void SetScale(uint8_t newScale)
CFGAS_Decimal(float val, uint8_t scale)
CFGAS_Decimal operator*(const CFGAS_Decimal &val) const
double ToDouble() const
WideString ToWideString() const
CFGAS_Decimal operator/(const CFGAS_Decimal &val) const
CFGAS_Decimal(int32_t val)
bool FormatText(const WideString &wsSrcText, WideString *wsOutput) const
bool ParseText(const WideString &wsSrcText, WideString *wsValue) const
bool FormatNull(WideString *wsOutput) const
bool FormatZero(WideString *wsOutput) const
bool ParseDateTime(LocaleMgrIface *pLocaleMgr, const WideString &wsSrcDateTime, DateTimeType eDateTimeType, CFX_DateTime *dtValue) const
bool ParseNull(const WideString &wsSrcText) const
static std::vector< WideString > SplitOnBars(const WideString &wsFormatString)
bool ParseZero(const WideString &wsSrcText) const
bool FormatDateTime(LocaleMgrIface *pLocaleMgr, const WideString &wsSrcDateTime, DateTimeType eDateTimeType, WideString *wsOutput) const
bool FormatNum(LocaleMgrIface *pLocaleMgr, const WideString &wsSrcNum, WideString *wsOutput) const
bool ParseNum(LocaleMgrIface *pLocaleMgr, const WideString &wsSrcNum, WideString *wsValue) const
CFGAS_StringFormatter(const WideString &wsPattern)
int32_t GetYear() const
void SetDate(int32_t year, uint8_t month, uint8_t day)
uint8_t GetSecond() const
uint8_t GetHour() const
uint8_t GetDay() const
uint8_t GetMinute() const
void SetTime(uint8_t hour, uint8_t minute, uint8_t second, uint16_t millisecond)
uint16_t GetMillisecond() const
uint8_t GetMonth() const
virtual WideString GetDayName(int32_t nWeek, bool bAbbr) const =0
virtual WideString GetDecimalSymbol() const =0
virtual WideString GetMonthName(int32_t nMonth, bool bAbbr) const =0
virtual WideString GetNumPattern(NumSubcategory eType) const =0
virtual WideString GetDatePattern(DateTimeSubcategory eType) const =0
virtual int GetTimeZoneInMinutes() const =0
virtual WideString GetMeridiemName(bool bAM) const =0
virtual WideString GetCurrencySymbol() const =0
virtual WideString GetTimePattern(DateTimeSubcategory eType) const =0
virtual WideString GetPercentSymbol() const =0
virtual WideString GetGroupingSymbol() const =0
virtual WideString GetEraName(bool bAD) const =0
virtual WideString GetMinusSymbol() const =0
virtual LocaleIface * GetLocaleByName(const WideString &wsLCID)=0
virtual LocaleIface * GetDefLocale()=0
WideString & operator+=(const WideString &str)
static WideString Format(const wchar_t *pFormat,...)
WideString & operator=(WideString &&that) noexcept
WideString & operator+=(const wchar_t *str)
bool operator==(const wchar_t *ptr) const
WideString & operator+=(wchar_t ch)
void TrimLeft(wchar_t target)
bool EqualsASCIINoCase(ByteStringView that) const
Definition widestring.h:219
CharType operator[](const size_t index) const
Definition widestring.h:146
bool IsEmpty() const
Definition widestring.h:118
const wchar_t * c_str() const
Definition widestring.h:81
WideString & operator=(const WideString &that)
bool operator!=(const wchar_t *ptr) const
Definition widestring.h:138
bool EqualsASCII(ByteStringView that) const
Definition widestring.h:216
bool FXSYS_IsHexDigit(char c)
int FXSYS_HexCharToInt(char c)
WideString operator+(const WideString &str1, const WideString &str2)
Definition widestring.h:269
WideString operator+(wchar_t ch, const WideString &str2)
Definition widestring.h:275
WideString operator+(const wchar_t *str1, const WideString &str2)
Definition widestring.h:281