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