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    }