| // This file was generated by go generate; DO NOT EDIT |
| |
| package number |
| |
| import ( |
| "unicode/utf8" |
| |
| "golang.org/x/text/internal/format/plural" |
| ) |
| |
| // A system identifies a CLDR numbering system. |
| type system byte |
| |
| type systemData struct { |
| id system |
| digitSize byte // number of UTF-8 bytes per digit |
| zero [utf8.UTFMax]byte // UTF-8 sequence of zero digit. |
| } |
| |
| // A SymbolType identifies a symbol of a specific kind. |
| type SymbolType int |
| |
| const ( |
| SymDecimal SymbolType = iota |
| SymGroup |
| SymList |
| SymPercentSign |
| SymPlusSign |
| SymMinusSign |
| SymExponential |
| SymSuperscriptingExponent |
| SymPerMille |
| SymInfinity |
| SymNan |
| SymTimeSeparator |
| |
| NumSymbolTypes |
| ) |
| |
| type altSymData struct { |
| compactTag uint16 |
| system system |
| symIndex byte |
| } |
| |
| var countMap = map[string]plural.Form{ |
| "other": plural.Other, |
| "zero": plural.Zero, |
| "one": plural.One, |
| "two": plural.Two, |
| "few": plural.Few, |
| "many": plural.Many, |
| } |
| |
| type pluralCheck struct { |
| // category: |
| // 3..7: opID |
| // 0..2: category |
| cat byte |
| setID byte |
| } |
| |
| // opID identifies the type of operand in the plural rule, being i, n or f. |
| // (v, w, and t are treated as filters in our implementation.) |
| type opID byte |
| |
| const ( |
| opMod opID = 0x1 // is '%' used? |
| opNotEqual opID = 0x2 // using "!=" to compare |
| opI opID = 0 << 2 // integers after taking the absolute value |
| opN opID = 1 << 2 // full number (must be integer) |
| opF opID = 2 << 2 // fraction |
| opV opID = 3 << 2 // number of visible digits |
| opW opID = 4 << 2 // number of visible digits without trailing zeros |
| opBretonM opID = 5 << 2 // hard-wired rule for Breton |
| opItalian800 opID = 6 << 2 // hard-wired rule for Italian |
| opAzerbaijan00s opID = 7 << 2 // hard-wired rule for Azerbaijan |
| ) |
| const ( |
| // Use this plural form to indicate the next rule needs to match as well. |
| // The last condition in the list will have the correct plural form. |
| andNext = 0x7 |
| formMask = 0x7 |
| |
| opShift = 3 |
| |
| // numN indicates the maximum integer, or maximum mod value, for which we |
| // have inclusion masks. |
| numN = 100 |
| // The common denominator of the modulo that is taken. |
| maxMod = 100 |
| ) |