001/*
002 * To change this template, choose Tools | Templates
003 * and open the template in the editor.
004 */
005
006package com.nativelibs4java.util;
007
008import java.util.EnumSet;
009
010/**
011 *
012 * @author ochafik
013 */
014public 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}