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/raw_span.h"
13#include "core/fxcrt/span.h"
14#include "core/fxcrt/widestring.h"
15#include "xfa/fgas/crt/locale_iface.h"
16
17class CFX_DateTime;
18class LocaleMgrIface;
19
20bool FX_DateFromCanonical(pdfium::span<const wchar_t> wsTime,
21 CFX_DateTime* datetime);
22bool FX_TimeFromCanonical(const LocaleIface* pLocale,
23 pdfium::span<const wchar_t> wsTime,
24 CFX_DateTime* datetime);
25
27 public:
38
46
47 explicit CFGAS_StringFormatter(const WideString& wsPattern);
49
50 static std::vector<WideString> SplitOnBars(const WideString& wsFormatString);
51
52 Category GetCategory() const;
53
54 bool ParseText(const WideString& wsSrcText, WideString* wsValue) const;
55 bool ParseNum(LocaleMgrIface* pLocaleMgr,
56 const WideString& wsSrcNum,
57 WideString* wsValue) const;
58 bool ParseDateTime(LocaleMgrIface* pLocaleMgr,
59 const WideString& wsSrcDateTime,
60 DateTimeType eDateTimeType,
61 CFX_DateTime* dtValue) const;
62 bool ParseZero(const WideString& wsSrcText) const;
63 bool ParseNull(const WideString& wsSrcText) const;
64
65 bool FormatText(const WideString& wsSrcText, WideString* wsOutput) const;
66 bool FormatNum(LocaleMgrIface* pLocaleMgr,
67 const WideString& wsSrcNum,
68 WideString* wsOutput) const;
69 bool FormatDateTime(LocaleMgrIface* pLocaleMgr,
70 const WideString& wsSrcDateTime,
71 DateTimeType eDateTimeType,
72 WideString* wsOutput) const;
73 bool FormatZero(WideString* wsOutput) const;
74 bool FormatNull(WideString* wsOutput) const;
75
76 private:
77 WideString GetTextFormat(WideStringView wsCategory) const;
78 LocaleIface* GetNumericFormat(LocaleMgrIface* pLocaleMgr,
79 size_t* iDotIndex,
80 uint32_t* dwStyle,
81 WideString* wsPurgePattern) const;
82 DateTimeType GetDateTimeFormat(LocaleMgrIface* pLocaleMgr,
83 LocaleIface** pLocale,
84 WideString* wsDatePattern,
85 WideString* wsTimePattern) const;
86
87 // keep pattern string alive.
88 const WideString m_wsPattern;
89
90 // span into `m_wsPattern`.
91 const pdfium::raw_span<const wchar_t> m_spPattern;
92};
93
94#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()=default
WideString & operator+=(const wchar_t *str)
bool operator==(const wchar_t *ptr) const
WideString & operator+=(wchar_t ch)
bool EqualsASCIINoCase(ByteStringView that) const
Definition widestring.h:114
WideString & operator=(const WideString &that)
bool operator!=(const wchar_t *ptr) const
Definition widestring.h:83
bool EqualsASCII(ByteStringView that) const
Definition widestring.h:111
#define UNSAFE_TODO(...)
bool FXSYS_IsHexDigit(char c)
int FXSYS_HexCharToInt(char c)
pdfium::CheckedNumeric< uint32_t > FX_SAFE_UINT32
WideString operator+(const WideString &str1, const WideString &str2)
Definition widestring.h:156
WideString operator+(wchar_t ch, const WideString &str2)
Definition widestring.h:162
WideString operator+(const wchar_t *str1, const WideString &str2)
Definition widestring.h:168
#define NOTREACHED_NORETURN()
Definition notreached.h:22
fxcrt::WideStringView WideStringView
fxcrt::WideString WideString
Definition widestring.h:207