001 package com.thaiopensource.relaxng.impl;
002
003 class Alphabet {
004 private NameClass nameClass;
005
006 boolean isEmpty() {
007 return nameClass == null;
008 }
009
010 void addElement(NameClass nc) {
011 if (nameClass == null)
012 nameClass = nc;
013 else if (nc != null)
014 nameClass = new ChoiceNameClass(nameClass, nc);
015 }
016
017 void addAlphabet(Alphabet a) {
018 addElement(a.nameClass);
019 }
020
021 void checkOverlap(Alphabet a) throws RestrictionViolationException {
022 if (nameClass != null
023 && a.nameClass != null
024 && OverlapDetector.overlap(nameClass, a.nameClass))
025 throw new RestrictionViolationException("interleave_element_overlap");
026 }
027 }