iTextSharp.text.pdf.SequenceList.GetAttributes C# (CSharp) Метод

GetAttributes() защищенный Метод

protected GetAttributes ( ) : bool
Результат bool
        protected bool GetAttributes()
        {
            low = -1;
            high = -1;
            odd = even = inverse = false;
            int state = OTHER;
            while (true) {
                int type = Type;
                if (type == END || type == COMMA) {
                    if (state == DIGIT)
                        high = low;
                    return (type == END);
                }
                switch (state) {
                    case OTHER:
                        switch (type) {
                            case NOT:
                                inverse = true;
                                break;
                            case MINUS:
                                state = DIGIT2;
                                break;
                            default:
                                if (type == NUMBER) {
                                    low = number;
                                    state = DIGIT;
                                }
                                else
                                    OtherProc();
                                break;
                        }
                        break;
                    case DIGIT:
                        switch (type) {
                            case NOT:
                                inverse = true;
                                state = OTHER;
                                high = low;
                                break;
                            case MINUS:
                                state = DIGIT2;
                                break;
                            default:
                                high = low;
                                state = OTHER;
                                OtherProc();
                                break;
                        }
                        break;
                    case DIGIT2:
                        switch (type) {
                            case NOT:
                                inverse = true;
                                state = OTHER;
                                break;
                            case MINUS:
                                break;
                            case NUMBER:
                                high = number;
                                state = OTHER;
                                break;
                            default:
                                state = OTHER;
                                OtherProc();
                                break;
                        }
                        break;
                }
            }
        }

Usage Example

Пример #1
0
 /**
 * Generates a list of numbers from a string.
 * @param ranges the comma separated ranges
 * @param maxNumber the maximum number in the range
 * @return a list with the numbers as <CODE>Integer</CODE>
 */    
 public static ICollection<int> Expand(String ranges, int maxNumber) {
     SequenceList parse = new SequenceList(ranges);
     List<int> list = new List<int>();
     bool sair = false;
     while (!sair) {
         sair = parse.GetAttributes();
         if (parse.low == -1 && parse.high == -1 && !parse.even && !parse.odd)
             continue;
         if (parse.low < 1)
             parse.low = 1;
         if (parse.high < 1 || parse.high > maxNumber)
             parse.high = maxNumber;
         if (parse.low > maxNumber)
             parse.low = maxNumber;
         
         //System.out.Println("low="+parse.low+",high="+parse.high+",odd="+parse.odd+",even="+parse.even+",inverse="+parse.inverse);
         int inc = 1;
         if (parse.inverse) {
             if (parse.low > parse.high) {
                 int t = parse.low;
                 parse.low = parse.high;
                 parse.high = t;
             }
             for (ListIterator<int> it = new ListIterator<int>(list); it.HasNext();) {
                 int n = it.Next();
                 if (parse.even && (n & 1) == 1)
                     continue;
                 if (parse.odd && (n & 1) == 0)
                     continue;
                 if (n >= parse.low && n <= parse.high)
                     it.Remove();
             }
         }
         else {
             if (parse.low > parse.high) {
                 inc = -1;
                 if (parse.odd || parse.even) {
                     --inc;
                     if (parse.even)
                         parse.low &= ~1;
                     else
                         parse.low -= ((parse.low & 1) == 1 ? 0 : 1);
                 }
                 for (int k = parse.low; k >= parse.high; k += inc) {
                     list.Add(k);
                 }
             }
             else {
                 if (parse.odd || parse.even) {
                     ++inc;
                     if (parse.odd)
                         parse.low |= 1;
                     else
                         parse.low += ((parse.low & 1) == 1 ? 1 : 0);
                 }
                 for (int k = parse.low; k <= parse.high; k += inc)
                     list.Add(k);
             }
         }
     }
     return list;
 }
All Usage Examples Of iTextSharp.text.pdf.SequenceList::GetAttributes