src/corelib/tools/qlocale.h
changeset 0 1918ee327afb
child 4 3b1da2848fc7
equal deleted inserted replaced
-1:000000000000 0:1918ee327afb
       
     1 /****************************************************************************
       
     2 **
       
     3 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
       
     4 ** All rights reserved.
       
     5 ** Contact: Nokia Corporation (qt-info@nokia.com)
       
     6 **
       
     7 ** This file is part of the QtCore module of the Qt Toolkit.
       
     8 **
       
     9 ** $QT_BEGIN_LICENSE:LGPL$
       
    10 ** No Commercial Usage
       
    11 ** This file contains pre-release code and may not be distributed.
       
    12 ** You may use this file in accordance with the terms and conditions
       
    13 ** contained in the Technology Preview License Agreement accompanying
       
    14 ** this package.
       
    15 **
       
    16 ** GNU Lesser General Public License Usage
       
    17 ** Alternatively, this file may be used under the terms of the GNU Lesser
       
    18 ** General Public License version 2.1 as published by the Free Software
       
    19 ** Foundation and appearing in the file LICENSE.LGPL included in the
       
    20 ** packaging of this file.  Please review the following information to
       
    21 ** ensure the GNU Lesser General Public License version 2.1 requirements
       
    22 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
       
    23 **
       
    24 ** In addition, as a special exception, Nokia gives you certain additional
       
    25 ** rights.  These rights are described in the Nokia Qt LGPL Exception
       
    26 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
       
    27 **
       
    28 ** If you have questions regarding the use of this file, please contact
       
    29 ** Nokia at qt-info@nokia.com.
       
    30 **
       
    31 **
       
    32 **
       
    33 **
       
    34 **
       
    35 **
       
    36 **
       
    37 **
       
    38 ** $QT_END_LICENSE$
       
    39 **
       
    40 ****************************************************************************/
       
    41 
       
    42 #ifndef QLOCALE_H
       
    43 #define QLOCALE_H
       
    44 
       
    45 #include <QtCore/qstring.h>
       
    46 #include <QtCore/qobjectdefs.h>
       
    47 
       
    48 QT_BEGIN_HEADER
       
    49 
       
    50 QT_BEGIN_NAMESPACE
       
    51 
       
    52 QT_MODULE(Core)
       
    53 
       
    54 class QDataStream;
       
    55 class QDate;
       
    56 class QDateTime;
       
    57 class QTime;
       
    58 class QVariant;
       
    59 class QTextStream;
       
    60 class QTextStreamPrivate;
       
    61 
       
    62 class QLocale;
       
    63 
       
    64 #ifndef QT_NO_SYSTEMLOCALE
       
    65 class Q_CORE_EXPORT QSystemLocale
       
    66 {
       
    67 public:
       
    68     QSystemLocale();
       
    69     virtual ~QSystemLocale();
       
    70 
       
    71     enum QueryType {
       
    72         LanguageId, // uint
       
    73         CountryId, // uint
       
    74         DecimalPoint, // QString
       
    75         GroupSeparator, // QString
       
    76         ZeroDigit, // QString
       
    77         NegativeSign, // QString
       
    78         DateFormatLong, // QString
       
    79         DateFormatShort, // QString
       
    80         TimeFormatLong, // QString
       
    81         TimeFormatShort, // QString
       
    82         DayNameLong, // QString, in: int
       
    83         DayNameShort, // QString, in: int
       
    84         MonthNameLong, // QString, in: int
       
    85         MonthNameShort, // QString, in: int
       
    86         DateToStringLong, // QString, in: QDate
       
    87         DateToStringShort, // QString in: QDate
       
    88         TimeToStringLong, // QString in: QTime
       
    89         TimeToStringShort, // QString in: QTime
       
    90         DateTimeFormatLong, // QString
       
    91         DateTimeFormatShort, // QString
       
    92         DateTimeToStringLong, // QString in: QDateTime
       
    93         DateTimeToStringShort, // QString in: QDateTime
       
    94         MeasurementSystem, // uint
       
    95         PositiveSign, // QString
       
    96         AMText, // QString
       
    97         PMText // QString
       
    98     };
       
    99     virtual QVariant query(QueryType type, QVariant in) const;
       
   100     virtual QLocale fallbackLocale() const;
       
   101 
       
   102 private:
       
   103     QSystemLocale(bool);
       
   104     friend QSystemLocale *QSystemLocale_globalSystemLocale();
       
   105 };
       
   106 #endif
       
   107 
       
   108 struct QLocalePrivate;
       
   109 class Q_CORE_EXPORT QLocale
       
   110 {
       
   111     Q_GADGET
       
   112     Q_ENUMS(Language)
       
   113     Q_ENUMS(Country)
       
   114     friend class QString;
       
   115     friend class QByteArray;
       
   116     friend class QIntValidator;
       
   117     friend class QDoubleValidator;
       
   118     friend class QTextStream;
       
   119     friend class QTextStreamPrivate;
       
   120 
       
   121 public:
       
   122     enum Language {
       
   123         C = 1,
       
   124         Abkhazian = 2,
       
   125         Afan = 3,
       
   126         Afar = 4,
       
   127         Afrikaans = 5,
       
   128         Albanian = 6,
       
   129         Amharic = 7,
       
   130         Arabic = 8,
       
   131         Armenian = 9,
       
   132         Assamese = 10,
       
   133         Aymara = 11,
       
   134         Azerbaijani = 12,
       
   135         Bashkir = 13,
       
   136         Basque = 14,
       
   137         Bengali = 15,
       
   138         Bhutani = 16,
       
   139         Bihari = 17,
       
   140         Bislama = 18,
       
   141         Breton = 19,
       
   142         Bulgarian = 20,
       
   143         Burmese = 21,
       
   144         Byelorussian = 22,
       
   145         Cambodian = 23,
       
   146         Catalan = 24,
       
   147         Chinese = 25,
       
   148         Corsican = 26,
       
   149         Croatian = 27,
       
   150         Czech = 28,
       
   151         Danish = 29,
       
   152         Dutch = 30,
       
   153         English = 31,
       
   154         Esperanto = 32,
       
   155         Estonian = 33,
       
   156         Faroese = 34,
       
   157         FijiLanguage = 35,
       
   158         Finnish = 36,
       
   159         French = 37,
       
   160         Frisian = 38,
       
   161         Gaelic = 39,
       
   162         Galician = 40,
       
   163         Georgian = 41,
       
   164         German = 42,
       
   165         Greek = 43,
       
   166         Greenlandic = 44,
       
   167         Guarani = 45,
       
   168         Gujarati = 46,
       
   169         Hausa = 47,
       
   170         Hebrew = 48,
       
   171         Hindi = 49,
       
   172         Hungarian = 50,
       
   173         Icelandic = 51,
       
   174         Indonesian = 52,
       
   175         Interlingua = 53,
       
   176         Interlingue = 54,
       
   177         Inuktitut = 55,
       
   178         Inupiak = 56,
       
   179         Irish = 57,
       
   180         Italian = 58,
       
   181         Japanese = 59,
       
   182         Javanese = 60,
       
   183         Kannada = 61,
       
   184         Kashmiri = 62,
       
   185         Kazakh = 63,
       
   186         Kinyarwanda = 64,
       
   187         Kirghiz = 65,
       
   188         Korean = 66,
       
   189         Kurdish = 67,
       
   190         Kurundi = 68,
       
   191         Laothian = 69,
       
   192         Latin = 70,
       
   193         Latvian = 71,
       
   194         Lingala = 72,
       
   195         Lithuanian = 73,
       
   196         Macedonian = 74,
       
   197         Malagasy = 75,
       
   198         Malay = 76,
       
   199         Malayalam = 77,
       
   200         Maltese = 78,
       
   201         Maori = 79,
       
   202         Marathi = 80,
       
   203         Moldavian = 81,
       
   204         Mongolian = 82,
       
   205         NauruLanguage = 83,
       
   206         Nepali = 84,
       
   207         Norwegian = 85,
       
   208         NorwegianBokmal = Norwegian,
       
   209         Occitan = 86,
       
   210         Oriya = 87,
       
   211         Pashto = 88,
       
   212         Persian = 89,
       
   213         Polish = 90,
       
   214         Portuguese = 91,
       
   215         Punjabi = 92,
       
   216         Quechua = 93,
       
   217         RhaetoRomance = 94,
       
   218         Romanian = 95,
       
   219         Russian = 96,
       
   220         Samoan = 97,
       
   221         Sangho = 98,
       
   222         Sanskrit = 99,
       
   223         Serbian = 100,
       
   224         SerboCroatian = 101,
       
   225         Sesotho = 102,
       
   226         Setswana = 103,
       
   227         Shona = 104,
       
   228         Sindhi = 105,
       
   229         Singhalese = 106,
       
   230         Siswati = 107,
       
   231         Slovak = 108,
       
   232         Slovenian = 109,
       
   233         Somali = 110,
       
   234         Spanish = 111,
       
   235         Sundanese = 112,
       
   236         Swahili = 113,
       
   237         Swedish = 114,
       
   238         Tagalog = 115,
       
   239         Tajik = 116,
       
   240         Tamil = 117,
       
   241         Tatar = 118,
       
   242         Telugu = 119,
       
   243         Thai = 120,
       
   244         Tibetan = 121,
       
   245         Tigrinya = 122,
       
   246         TongaLanguage = 123,
       
   247         Tsonga = 124,
       
   248         Turkish = 125,
       
   249         Turkmen = 126,
       
   250         Twi = 127,
       
   251         Uigur = 128,
       
   252         Ukrainian = 129,
       
   253         Urdu = 130,
       
   254         Uzbek = 131,
       
   255         Vietnamese = 132,
       
   256         Volapuk = 133,
       
   257         Welsh = 134,
       
   258         Wolof = 135,
       
   259         Xhosa = 136,
       
   260         Yiddish = 137,
       
   261         Yoruba = 138,
       
   262         Zhuang = 139,
       
   263         Zulu = 140,
       
   264         NorwegianNynorsk = 141,
       
   265         Nynorsk = NorwegianNynorsk, // ### obsolete
       
   266         Bosnian = 142,
       
   267         Divehi = 143,
       
   268         Manx = 144,
       
   269         Cornish = 145,
       
   270         Akan = 146,
       
   271         Konkani = 147,
       
   272         Ga = 148,
       
   273         Igbo = 149,
       
   274         Kamba = 150,
       
   275         Syriac = 151,
       
   276         Blin = 152,
       
   277         Geez = 153,
       
   278         Koro = 154,
       
   279         Sidamo = 155,
       
   280         Atsam = 156,
       
   281         Tigre = 157,
       
   282         Jju = 158,
       
   283         Friulian = 159,
       
   284         Venda = 160,
       
   285         Ewe = 161,
       
   286         Walamo = 162,
       
   287         Hawaiian = 163,
       
   288         Tyap = 164,
       
   289         Chewa = 165,
       
   290         LastLanguage = Chewa
       
   291     };
       
   292 
       
   293     enum Country {
       
   294         AnyCountry = 0,
       
   295         Afghanistan = 1,
       
   296         Albania = 2,
       
   297         Algeria = 3,
       
   298         AmericanSamoa = 4,
       
   299         Andorra = 5,
       
   300         Angola = 6,
       
   301         Anguilla = 7,
       
   302         Antarctica = 8,
       
   303         AntiguaAndBarbuda = 9,
       
   304         Argentina = 10,
       
   305         Armenia = 11,
       
   306         Aruba = 12,
       
   307         Australia = 13,
       
   308         Austria = 14,
       
   309         Azerbaijan = 15,
       
   310         Bahamas = 16,
       
   311         Bahrain = 17,
       
   312         Bangladesh = 18,
       
   313         Barbados = 19,
       
   314         Belarus = 20,
       
   315         Belgium = 21,
       
   316         Belize = 22,
       
   317         Benin = 23,
       
   318         Bermuda = 24,
       
   319         Bhutan = 25,
       
   320         Bolivia = 26,
       
   321         BosniaAndHerzegowina = 27,
       
   322         Botswana = 28,
       
   323         BouvetIsland = 29,
       
   324         Brazil = 30,
       
   325         BritishIndianOceanTerritory = 31,
       
   326         BruneiDarussalam = 32,
       
   327         Bulgaria = 33,
       
   328         BurkinaFaso = 34,
       
   329         Burundi = 35,
       
   330         Cambodia = 36,
       
   331         Cameroon = 37,
       
   332         Canada = 38,
       
   333         CapeVerde = 39,
       
   334         CaymanIslands = 40,
       
   335         CentralAfricanRepublic = 41,
       
   336         Chad = 42,
       
   337         Chile = 43,
       
   338         China = 44,
       
   339         ChristmasIsland = 45,
       
   340         CocosIslands = 46,
       
   341         Colombia = 47,
       
   342         Comoros = 48,
       
   343         DemocraticRepublicOfCongo = 49,
       
   344         PeoplesRepublicOfCongo = 50,
       
   345         CookIslands = 51,
       
   346         CostaRica = 52,
       
   347         IvoryCoast = 53,
       
   348         Croatia = 54,
       
   349         Cuba = 55,
       
   350         Cyprus = 56,
       
   351         CzechRepublic = 57,
       
   352         Denmark = 58,
       
   353         Djibouti = 59,
       
   354         Dominica = 60,
       
   355         DominicanRepublic = 61,
       
   356         EastTimor = 62,
       
   357         Ecuador = 63,
       
   358         Egypt = 64,
       
   359         ElSalvador = 65,
       
   360         EquatorialGuinea = 66,
       
   361         Eritrea = 67,
       
   362         Estonia = 68,
       
   363         Ethiopia = 69,
       
   364         FalklandIslands = 70,
       
   365         FaroeIslands = 71,
       
   366         FijiCountry = 72,
       
   367         Finland = 73,
       
   368         France = 74,
       
   369         MetropolitanFrance = 75,
       
   370         FrenchGuiana = 76,
       
   371         FrenchPolynesia = 77,
       
   372         FrenchSouthernTerritories = 78,
       
   373         Gabon = 79,
       
   374         Gambia = 80,
       
   375         Georgia = 81,
       
   376         Germany = 82,
       
   377         Ghana = 83,
       
   378         Gibraltar = 84,
       
   379         Greece = 85,
       
   380         Greenland = 86,
       
   381         Grenada = 87,
       
   382         Guadeloupe = 88,
       
   383         Guam = 89,
       
   384         Guatemala = 90,
       
   385         Guinea = 91,
       
   386         GuineaBissau = 92,
       
   387         Guyana = 93,
       
   388         Haiti = 94,
       
   389         HeardAndMcDonaldIslands = 95,
       
   390         Honduras = 96,
       
   391         HongKong = 97,
       
   392         Hungary = 98,
       
   393         Iceland = 99,
       
   394         India = 100,
       
   395         Indonesia = 101,
       
   396         Iran = 102,
       
   397         Iraq = 103,
       
   398         Ireland = 104,
       
   399         Israel = 105,
       
   400         Italy = 106,
       
   401         Jamaica = 107,
       
   402         Japan = 108,
       
   403         Jordan = 109,
       
   404         Kazakhstan = 110,
       
   405         Kenya = 111,
       
   406         Kiribati = 112,
       
   407         DemocraticRepublicOfKorea = 113,
       
   408         RepublicOfKorea = 114,
       
   409         Kuwait = 115,
       
   410         Kyrgyzstan = 116,
       
   411         Lao = 117,
       
   412         Latvia = 118,
       
   413         Lebanon = 119,
       
   414         Lesotho = 120,
       
   415         Liberia = 121,
       
   416         LibyanArabJamahiriya = 122,
       
   417         Liechtenstein = 123,
       
   418         Lithuania = 124,
       
   419         Luxembourg = 125,
       
   420         Macau = 126,
       
   421         Macedonia = 127,
       
   422         Madagascar = 128,
       
   423         Malawi = 129,
       
   424         Malaysia = 130,
       
   425         Maldives = 131,
       
   426         Mali = 132,
       
   427         Malta = 133,
       
   428         MarshallIslands = 134,
       
   429         Martinique = 135,
       
   430         Mauritania = 136,
       
   431         Mauritius = 137,
       
   432         Mayotte = 138,
       
   433         Mexico = 139,
       
   434         Micronesia = 140,
       
   435         Moldova = 141,
       
   436         Monaco = 142,
       
   437         Mongolia = 143,
       
   438         Montserrat = 144,
       
   439         Morocco = 145,
       
   440         Mozambique = 146,
       
   441         Myanmar = 147,
       
   442         Namibia = 148,
       
   443         NauruCountry = 149,
       
   444         Nepal = 150,
       
   445         Netherlands = 151,
       
   446         NetherlandsAntilles = 152,
       
   447         NewCaledonia = 153,
       
   448         NewZealand = 154,
       
   449         Nicaragua = 155,
       
   450         Niger = 156,
       
   451         Nigeria = 157,
       
   452         Niue = 158,
       
   453         NorfolkIsland = 159,
       
   454         NorthernMarianaIslands = 160,
       
   455         Norway = 161,
       
   456         Oman = 162,
       
   457         Pakistan = 163,
       
   458         Palau = 164,
       
   459         PalestinianTerritory = 165,
       
   460         Panama = 166,
       
   461         PapuaNewGuinea = 167,
       
   462         Paraguay = 168,
       
   463         Peru = 169,
       
   464         Philippines = 170,
       
   465         Pitcairn = 171,
       
   466         Poland = 172,
       
   467         Portugal = 173,
       
   468         PuertoRico = 174,
       
   469         Qatar = 175,
       
   470         Reunion = 176,
       
   471         Romania = 177,
       
   472         RussianFederation = 178,
       
   473         Rwanda = 179,
       
   474         SaintKittsAndNevis = 180,
       
   475         StLucia = 181,
       
   476         StVincentAndTheGrenadines = 182,
       
   477         Samoa = 183,
       
   478         SanMarino = 184,
       
   479         SaoTomeAndPrincipe = 185,
       
   480         SaudiArabia = 186,
       
   481         Senegal = 187,
       
   482         Seychelles = 188,
       
   483         SierraLeone = 189,
       
   484         Singapore = 190,
       
   485         Slovakia = 191,
       
   486         Slovenia = 192,
       
   487         SolomonIslands = 193,
       
   488         Somalia = 194,
       
   489         SouthAfrica = 195,
       
   490         SouthGeorgiaAndTheSouthSandwichIslands = 196,
       
   491         Spain = 197,
       
   492         SriLanka = 198,
       
   493         StHelena = 199,
       
   494         StPierreAndMiquelon = 200,
       
   495         Sudan = 201,
       
   496         Suriname = 202,
       
   497         SvalbardAndJanMayenIslands = 203,
       
   498         Swaziland = 204,
       
   499         Sweden = 205,
       
   500         Switzerland = 206,
       
   501         SyrianArabRepublic = 207,
       
   502         Taiwan = 208,
       
   503         Tajikistan = 209,
       
   504         Tanzania = 210,
       
   505         Thailand = 211,
       
   506         Togo = 212,
       
   507         Tokelau = 213,
       
   508         TongaCountry = 214,
       
   509         TrinidadAndTobago = 215,
       
   510         Tunisia = 216,
       
   511         Turkey = 217,
       
   512         Turkmenistan = 218,
       
   513         TurksAndCaicosIslands = 219,
       
   514         Tuvalu = 220,
       
   515         Uganda = 221,
       
   516         Ukraine = 222,
       
   517         UnitedArabEmirates = 223,
       
   518         UnitedKingdom = 224,
       
   519         UnitedStates = 225,
       
   520         UnitedStatesMinorOutlyingIslands = 226,
       
   521         Uruguay = 227,
       
   522         Uzbekistan = 228,
       
   523         Vanuatu = 229,
       
   524         VaticanCityState = 230,
       
   525         Venezuela = 231,
       
   526         VietNam = 232,
       
   527         BritishVirginIslands = 233,
       
   528         USVirginIslands = 234,
       
   529         WallisAndFutunaIslands = 235,
       
   530         WesternSahara = 236,
       
   531         Yemen = 237,
       
   532         Yugoslavia = 238,
       
   533         Zambia = 239,
       
   534         Zimbabwe = 240,
       
   535         SerbiaAndMontenegro = 241,
       
   536         LastCountry = SerbiaAndMontenegro
       
   537     };
       
   538 
       
   539     enum MeasurementSystem { MetricSystem, ImperialSystem };
       
   540 
       
   541     enum FormatType { LongFormat, ShortFormat, NarrowFormat };
       
   542     enum NumberOption {
       
   543         OmitGroupSeparator = 0x01,
       
   544         RejectGroupSeparator = 0x02
       
   545     };
       
   546     Q_DECLARE_FLAGS(NumberOptions, NumberOption)
       
   547 
       
   548     QLocale();
       
   549     QLocale(const QString &name);
       
   550     QLocale(Language language, Country country = AnyCountry);
       
   551     QLocale(const QLocale &other);
       
   552 
       
   553     QLocale &operator=(const QLocale &other);
       
   554 
       
   555     Language language() const;
       
   556     Country country() const;
       
   557     QString name() const;
       
   558 
       
   559     short toShort(const QString &s, bool *ok = 0, int base = 0) const;
       
   560     ushort toUShort(const QString &s, bool *ok = 0, int base = 0) const;
       
   561     int toInt(const QString &s, bool *ok = 0, int base = 0) const;
       
   562     uint toUInt(const QString &s, bool *ok = 0, int base = 0) const;
       
   563     qlonglong toLongLong(const QString &s, bool *ok = 0, int base = 0) const;
       
   564     qlonglong toULongLong(const QString &s, bool *ok = 0, int base = 0) const;
       
   565     float toFloat(const QString &s, bool *ok = 0) const;
       
   566     double toDouble(const QString &s, bool *ok = 0) const;
       
   567 
       
   568     QString toString(qlonglong i) const;
       
   569     QString toString(qulonglong i) const;
       
   570     inline QString toString(short i) const;
       
   571     inline QString toString(ushort i) const;
       
   572     inline QString toString(int i) const;
       
   573     inline QString toString(uint i) const;
       
   574     QString toString(double i, char f = 'g', int prec = 6) const;
       
   575     inline QString toString(float i, char f = 'g', int prec = 6) const;
       
   576     QString toString(const QDate &date, const QString &formatStr) const;
       
   577     QString toString(const QDate &date, FormatType format = LongFormat) const;
       
   578     QString toString(const QTime &time, const QString &formatStr) const;
       
   579     QString toString(const QTime &time, FormatType format = LongFormat) const;
       
   580     QString toString(const QDateTime &dateTime, FormatType format = LongFormat) const;
       
   581     QString toString(const QDateTime &dateTime, const QString &format) const;
       
   582 
       
   583     QString dateFormat(FormatType format = LongFormat) const;
       
   584     QString timeFormat(FormatType format = LongFormat) const;
       
   585     QString dateTimeFormat(FormatType format = LongFormat) const;
       
   586 #ifndef QT_NO_DATESTRING
       
   587     QDate toDate(const QString &string, FormatType = LongFormat) const;
       
   588     QTime toTime(const QString &string, FormatType = LongFormat) const;
       
   589     QDateTime toDateTime(const QString &string, FormatType format = LongFormat) const;
       
   590     QDate toDate(const QString &string, const QString &format) const;
       
   591     QTime toTime(const QString &string, const QString &format) const;
       
   592     QDateTime toDateTime(const QString &string, const QString &format) const;
       
   593 #endif
       
   594 
       
   595     // ### Qt 5: We need to return QString from these function since
       
   596     //           unicode data contains several characters for these fields.
       
   597     QChar decimalPoint() const;
       
   598     QChar groupSeparator() const;
       
   599     QChar percent() const;
       
   600     QChar zeroDigit() const;
       
   601     QChar negativeSign() const;
       
   602     QChar positiveSign() const;
       
   603     QChar exponential() const;
       
   604 
       
   605     QString monthName(int, FormatType format = LongFormat) const;
       
   606     QString standaloneMonthName(int, FormatType format = LongFormat) const;
       
   607     QString dayName(int, FormatType format = LongFormat) const;
       
   608     QString standaloneDayName(int, FormatType format = LongFormat) const;
       
   609 
       
   610     QString amText() const;
       
   611     QString pmText() const;
       
   612 
       
   613     MeasurementSystem measurementSystem() const;
       
   614 
       
   615     inline bool operator==(const QLocale &other) const;
       
   616     inline bool operator!=(const QLocale &other) const;
       
   617 
       
   618     static QString languageToString(Language language);
       
   619     static QString countryToString(Country country);
       
   620     static void setDefault(const QLocale &locale);
       
   621 
       
   622     static QLocale c() { return QLocale(C); }
       
   623     static QLocale system();
       
   624 
       
   625     static QList<Country> countriesForLanguage(Language lang);
       
   626 
       
   627     void setNumberOptions(NumberOptions options);
       
   628     NumberOptions numberOptions() const;
       
   629 
       
   630 //private:                        // this should be private, but can't be
       
   631     struct Data {
       
   632         quint16 index;
       
   633         quint16 numberOptions;
       
   634     }
       
   635 #if (defined(__arm__) || defined(__ARMEL__))
       
   636         Q_PACKED
       
   637 #endif
       
   638         ;
       
   639 private:
       
   640     friend struct QLocalePrivate;
       
   641     // ### We now use this field to pack an index into locale_data and NumberOptions.
       
   642     // ### Qt 5: change to a QLocaleData *d; uint numberOptions.
       
   643     union {
       
   644         void *v;
       
   645         Data p;
       
   646     };
       
   647     const QLocalePrivate *d() const;
       
   648 };
       
   649 Q_DECLARE_TYPEINFO(QLocale, Q_MOVABLE_TYPE);
       
   650 Q_DECLARE_OPERATORS_FOR_FLAGS(QLocale::NumberOptions)
       
   651 
       
   652 inline QString QLocale::toString(short i) const
       
   653     { return toString(qlonglong(i)); }
       
   654 inline QString QLocale::toString(ushort i) const
       
   655     { return toString(qulonglong(i)); }
       
   656 inline QString QLocale::toString(int i) const
       
   657     { return toString(qlonglong(i)); }
       
   658 inline QString QLocale::toString(uint i) const
       
   659     { return toString(qulonglong(i)); }
       
   660 inline QString QLocale::toString(float i, char f, int prec) const
       
   661     { return toString(double(i), f, prec); }
       
   662 inline bool QLocale::operator==(const QLocale &other) const
       
   663     { return d() == other.d() && numberOptions() == other.numberOptions(); }
       
   664 inline bool QLocale::operator!=(const QLocale &other) const
       
   665     { return d() != other.d() || numberOptions() != other.numberOptions(); }
       
   666 
       
   667 #ifndef QT_NO_DATASTREAM
       
   668 Q_CORE_EXPORT QDataStream &operator<<(QDataStream &, const QLocale &);
       
   669 Q_CORE_EXPORT QDataStream &operator>>(QDataStream &, QLocale &);
       
   670 #endif
       
   671 
       
   672 QT_END_NAMESPACE
       
   673 
       
   674 QT_END_HEADER
       
   675 
       
   676 #endif // QLOCALE_H