1// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
2
3package plural
4
5// Form defines a plural form.
6//
7// Not all languages support all forms. Also, the meaning of each form varies
8// per language. It is important to note that the name of a form does not
9// necessarily correspond one-to-one with the set of numbers. For instance,
10// for Croation, One matches not only 1, but also 11, 21, etc.
11//
12// Each language must at least support the form "other".
13type Form byte
14
15const (
16	Other Form = iota
17	Zero
18	One
19	Two
20	Few
21	Many
22)
23
24var countMap = map[string]Form{
25	"other": Other,
26	"zero":  Zero,
27	"one":   One,
28	"two":   Two,
29	"few":   Few,
30	"many":  Many,
31}
32
33type pluralCheck struct {
34	// category:
35	// 3..7: opID
36	// 0..2: category
37	cat   byte
38	setID byte
39}
40
41// opID identifies the type of operand in the plural rule, being i, n or f.
42// (v, w, and t are treated as filters in our implementation.)
43type opID byte
44
45const (
46	opMod           opID = 0x1    // is '%' used?
47	opNotEqual      opID = 0x2    // using "!=" to compare
48	opI             opID = 0 << 2 // integers after taking the absolute value
49	opN             opID = 1 << 2 // full number (must be integer)
50	opF             opID = 2 << 2 // fraction
51	opV             opID = 3 << 2 // number of visible digits
52	opW             opID = 4 << 2 // number of visible digits without trailing zeros
53	opBretonM       opID = 5 << 2 // hard-wired rule for Breton
54	opItalian800    opID = 6 << 2 // hard-wired rule for Italian
55	opAzerbaijan00s opID = 7 << 2 // hard-wired rule for Azerbaijan
56)
57const (
58	// Use this plural form to indicate the next rule needs to match as well.
59	// The last condition in the list will have the correct plural form.
60	andNext  = 0x7
61	formMask = 0x7
62
63	opShift = 3
64
65	// numN indicates the maximum integer, or maximum mod value, for which we
66	// have inclusion masks.
67	numN = 100
68	// The common denominator of the modulo that is taken.
69	maxMod = 100
70)
71