001 package com.thaiopensource.validate.nrl;
002
003 class ElementsOrAttributes {
004 private static final int ELEMENTS_FLAG = 01;
005 private static final int ATTRIBUTES_FLAG = 02;
006
007 static final ElementsOrAttributes NEITHER = new ElementsOrAttributes(0);
008 static final ElementsOrAttributes ELEMENTS = new ElementsOrAttributes(ELEMENTS_FLAG);
009 static final ElementsOrAttributes ATTRIBUTES = new ElementsOrAttributes(ATTRIBUTES_FLAG);
010 static final ElementsOrAttributes BOTH = new ElementsOrAttributes(ELEMENTS_FLAG|ATTRIBUTES_FLAG);
011
012 private static final ElementsOrAttributes values[] = {
013 NEITHER,
014 ELEMENTS,
015 ATTRIBUTES,
016 BOTH
017 };
018
019 private int flags = 0;
020
021 private ElementsOrAttributes(int flags) {
022 this.flags = flags;
023 }
024
025 ElementsOrAttributes addElements() {
026 return values[flags | ELEMENTS_FLAG];
027 }
028
029 ElementsOrAttributes addAttributes() {
030 return values[flags | ATTRIBUTES_FLAG];
031 }
032
033 boolean containsAttributes() {
034 return (flags & ATTRIBUTES_FLAG) != 0;
035 }
036
037 boolean containsElements() {
038 return (flags & ELEMENTS_FLAG) != 0;
039 }
040
041 }