// 
// Decompiled by Procyon v0.6.0
// 

package com.hypixel.hytale.common.collection;

import com.hypixel.hytale.common.util.StringUtil;
import javax.annotation.Nonnull;

public class Flags<T extends Flag>
{
    private int flags;
    
    public Flags(@Nonnull final T flag) {
        this.set(flag, true);
    }
    
    @SafeVarargs
    public Flags(@Nonnull final T... flags) {
        for (final T flag : flags) {
            this.set(flag, true);
        }
    }
    
    public Flags(final int flags) {
        this.flags = flags;
    }
    
    public int getFlags() {
        return this.flags;
    }
    
    public boolean is(@Nonnull final T flag) {
        return (this.flags & flag.mask()) != 0x0;
    }
    
    public boolean not(@Nonnull final T flag) {
        return (this.flags & flag.mask()) == 0x0;
    }
    
    public boolean set(@Nonnull final T flag, final boolean value) {
        if (value) {
            final int flags = this.flags;
            final int flags2 = this.flags | flag.mask();
            this.flags = flags2;
            return flags != flags2;
        }
        final int flags3 = this.flags;
        final int flags4 = this.flags & ~flag.mask();
        this.flags = flags4;
        return flags3 != flags4;
    }
    
    public boolean toggle(@Nonnull final T flag) {
        final int flags = this.flags ^ flag.mask();
        this.flags = flags;
        return (flags & flag.mask()) != 0x0;
    }
    
    @Nonnull
    @Override
    public String toString() {
        return StringUtil.toPaddedBinaryString(this.flags);
    }
}
