001 package com.thaiopensource.relaxng.impl;
002
003 import com.thaiopensource.xml.util.Name;
004
005 class AnyNameExceptNameClass implements NameClass {
006
007 private final NameClass nameClass;
008
009 AnyNameExceptNameClass(NameClass nameClass) {
010 this.nameClass = nameClass;
011 }
012
013 public boolean contains(Name name) {
014 return !nameClass.contains(name);
015 }
016
017 public int containsSpecificity(Name name) {
018 return contains(name) ? SPECIFICITY_ANY_NAME : SPECIFICITY_NONE;
019 }
020
021 public boolean equals(Object obj) {
022 if (obj == null || !(obj instanceof AnyNameExceptNameClass))
023 return false;
024 return nameClass.equals(((AnyNameExceptNameClass)obj).nameClass);
025 }
026
027 public int hashCode() {
028 return ~nameClass.hashCode();
029 }
030
031 public void accept(NameClassVisitor visitor) {
032 visitor.visitAnyNameExcept(nameClass);
033 }
034
035 public boolean isOpen() {
036 return true;
037 }
038 }