001    /*
002     * To change this template, choose Tools | Templates
003     * and open the template in the editor.
004     */
005    
006    package com.nativelibs4java.util;
007    
008    import java.util.EnumSet;
009    
010    /**
011     *
012     * @author ochafik
013     */
014    public class ValuedEnums {
015            public static <E extends Enum<E>> long or(EnumSet<E> enums) {
016                    long value = 0;
017                    for (E e : enums)
018                            value |= ((ValuedEnum)e).value();
019                    return value;
020            }
021            public static <E extends Enum<E>> long and(EnumSet<E> enums) {
022                    long value = 0;
023                    boolean first = true;
024                    for (E e : enums) {
025                            long ev = ((ValuedEnum)e).value();
026                            if (first) {
027                                    value = ev;
028                                    first = false;
029                            } else
030                                    value &= ev;
031                    }
032                    return value;
033            }
034    }