001    package com.thaiopensource.relaxng.parse;
002    
003    import org.relaxng.datatype.ValidationContext;
004    
005    public interface SchemaBuilder {
006      ParsedPattern makeChoice(ParsedPattern[] patterns, int nPatterns, Location loc, Annotations anno) throws BuildException;
007      ParsedPattern makeInterleave(ParsedPattern[] patterns, int nPatterns, Location loc, Annotations anno) throws BuildException;
008      ParsedPattern makeGroup(ParsedPattern[] patterns, int nPatterns, Location loc, Annotations anno) throws BuildException;
009      ParsedPattern makeOneOrMore(ParsedPattern p, Location loc, Annotations anno) throws BuildException;
010      ParsedPattern makeZeroOrMore(ParsedPattern p, Location loc, Annotations anno) throws BuildException;
011      ParsedPattern makeOptional(ParsedPattern p, Location loc, Annotations anno) throws BuildException;
012      ParsedPattern makeList(ParsedPattern p, Location loc, Annotations anno) throws BuildException;
013      ParsedPattern makeMixed(ParsedPattern p, Location loc, Annotations anno) throws BuildException;
014      ParsedPattern makeEmpty(Location loc, Annotations anno);
015      ParsedPattern makeNotAllowed(Location loc, Annotations anno);
016      ParsedPattern makeText(Location loc, Annotations anno);
017      ParsedPattern makeAttribute(ParsedNameClass nc, ParsedPattern p, Location loc, Annotations anno) throws BuildException;
018      ParsedPattern makeElement(ParsedNameClass nc, ParsedPattern p, Location loc, Annotations anno) throws BuildException;
019      DataPatternBuilder makeDataPatternBuilder(String datatypeLibrary, String type, Location loc) throws BuildException;
020      ParsedPattern makeValue(String datatypeLibrary, String type, String value, Context c, String ns,
021                              Location loc, Annotations anno) throws BuildException;
022      Grammar makeGrammar(Scope parent);
023      ParsedPattern annotate(ParsedPattern p, Annotations anno) throws BuildException;
024      ParsedNameClass annotate(ParsedNameClass nc, Annotations anno) throws BuildException;
025      ParsedPattern annotateAfter(ParsedPattern p, ParsedElementAnnotation e) throws BuildException;
026      ParsedNameClass annotateAfter(ParsedNameClass nc, ParsedElementAnnotation e) throws BuildException;
027      ParsedPattern commentAfter(ParsedPattern p, CommentList comments) throws BuildException;
028      ParsedNameClass commentAfter(ParsedNameClass nc, CommentList comments) throws BuildException;
029      ParsedPattern makeExternalRef(String uri, String ns, Scope scope,
030                                    Location loc, Annotations anno) throws BuildException, IllegalSchemaException;
031      ParsedNameClass makeChoice(ParsedNameClass[] nameClasses, int nNameClasses, Location loc, Annotations anno);
032    
033      static final String INHERIT_NS = new String("#inherit");
034      ParsedNameClass makeName(String ns, String localName, String prefix, Location loc, Annotations anno);
035      ParsedNameClass makeNsName(String ns, Location loc, Annotations anno);
036      /**
037       * Caller must enforce constraints on except.
038       */
039      ParsedNameClass makeNsName(String ns, ParsedNameClass except, Location loc, Annotations anno);
040      ParsedNameClass makeAnyName(Location loc, Annotations anno);
041       /**
042       * Caller must enforce constraints on except.
043       */
044      ParsedNameClass makeAnyName(ParsedNameClass except, Location loc, Annotations anno);
045      Location makeLocation(String systemId, int lineNumber, int columnNumber);
046      Annotations makeAnnotations(CommentList comments, Context context);
047      ElementAnnotationBuilder makeElementAnnotationBuilder(String ns, String localName, String prefix,
048                                                            Location loc, CommentList comments, Context context);
049      CommentList makeCommentList();
050      ParsedPattern makeErrorPattern();
051      ParsedNameClass makeErrorNameClass();
052      boolean usesComments();
053    }