"http://relaxng.org/ns/structure/1.0";\r
\r
// object model fields\r
- ArrayList starts = new ArrayList ();\r
- ArrayList defs = new ArrayList ();\r
- ArrayList includes = new ArrayList ();\r
- ArrayList divs = new ArrayList ();\r
+ RelaxngGrammarContentList starts = new RelaxngGrammarContentList ();\r
+ RelaxngGrammarContentList defs = new RelaxngGrammarContentList ();\r
+ RelaxngGrammarContentList includes = new RelaxngGrammarContentList ();\r
+ RelaxngGrammarContentList divs = new RelaxngGrammarContentList ();\r
\r
RelaxngDatatypeProvider provider;\r
\r
get { return RelaxngPatternType.Grammar; }\r
}\r
\r
- public IList Starts {\r
+ public RelaxngGrammarContentList Starts {\r
get { return starts; }\r
}\r
\r
- public IList Defines {\r
+ public RelaxngGrammarContentList Defines {\r
get { return defs; }\r
}\r
\r
- public IList Includes {\r
+ public RelaxngGrammarContentList Includes {\r
get { return includes; }\r
}\r
\r
- public IList Divs {\r
+ public RelaxngGrammarContentList Divs {\r
get { return divs; }\r
}\r
\r
#endregion\r
\r
#region Grammatical elements\r
- public class RelaxngStart : RelaxngElementBase\r
+ public interface IGrammarContent\r
+ {\r
+ }\r
+\r
+ public class RelaxngStart : RelaxngElementBase, IGrammarContent\r
{\r
RelaxngPattern p;\r
string combine;\r
}\r
}\r
\r
- public class RelaxngDefine : RelaxngElementBase\r
+ public class RelaxngDefine : RelaxngElementBase, IGrammarContent\r
{\r
string name;\r
private RelaxngPatternList patterns = new RelaxngPatternList ();\r
}\r
}\r
\r
- public class RelaxngInclude : RelaxngElementBase\r
+ public class RelaxngInclude : RelaxngElementBase, IGrammarContent\r
{\r
string href;\r
- IList starts = new ArrayList ();\r
- IList defines = new ArrayList ();\r
- IList divs = new ArrayList ();\r
+ RelaxngGrammarContentList starts = new RelaxngGrammarContentList ();\r
+ RelaxngGrammarContentList defines = new RelaxngGrammarContentList ();\r
+ RelaxngGrammarContentList divs = new RelaxngGrammarContentList ();\r
string ns;\r
\r
public RelaxngInclude ()\r
set { href = value; }\r
}\r
\r
- public IList Starts {\r
+ public RelaxngGrammarContentList Starts {\r
get { return starts; }\r
}\r
\r
- public IList Defines {\r
+ public RelaxngGrammarContentList Defines {\r
get { return defines; }\r
}\r
\r
- public IList Divs {\r
+ public RelaxngGrammarContentList Divs {\r
get { return divs; }\r
}\r
\r
// starts.\r
if (this.Starts.Count > 0 && g.Starts.Count == 0)\r
throw new RelaxngException ("When the included grammar does not contain start components, this include component must not contain start components.");\r
- IList appliedStarts = (this.starts.Count > 0) ?\r
+ RelaxngGrammarContentList appliedStarts = (this.starts.Count > 0) ?\r
this.starts : g.Starts;\r
\r
RelaxngDiv div = new RelaxngDiv ();\r
}\r
}\r
\r
- public class RelaxngDiv : RelaxngElementBase\r
+ public class RelaxngDiv : RelaxngElementBase, IGrammarContent\r
{\r
- IList starts = new ArrayList ();\r
- IList defines = new ArrayList ();\r
- IList includes = new ArrayList ();\r
- IList divs = new ArrayList ();\r
+ RelaxngGrammarContentList starts = new RelaxngGrammarContentList ();\r
+ RelaxngGrammarContentList defines = new RelaxngGrammarContentList ();\r
+ RelaxngGrammarContentList includes = new RelaxngGrammarContentList ();\r
+ RelaxngGrammarContentList divs = new RelaxngGrammarContentList ();\r
\r
public RelaxngDiv ()\r
{\r
}\r
\r
- public IList Starts {\r
+ public RelaxngGrammarContentList Starts {\r
get { return starts; }\r
}\r
\r
- public IList Defines {\r
+ public RelaxngGrammarContentList Defines {\r
get { return defines; }\r
}\r
\r
- public IList Includes {\r
+ public RelaxngGrammarContentList Includes {\r
get { return includes; }\r
}\r
\r
- public IList Divs {\r
+ public RelaxngGrammarContentList Divs {\r
get { return divs; }\r
}\r
\r
}\r
}\r
\r
+ public class RelaxngGrammarContentList : CollectionBase\r
+ {\r
+ public RelaxngGrammarContentList ()\r
+ {\r
+ }\r
+\r
+ public void Add (IGrammarContent p)\r
+ {\r
+ List.Add (p);\r
+ }\r
+\r
+ public IGrammarContent this [int i] {\r
+ get { return this.List [i] as IGrammarContent; }\r
+ set { this.List [i] = value; }\r
+ }\r
+\r
+ public void Insert (int pos, IGrammarContent p)\r
+ {\r
+ List.Insert (pos, p);\r
+ }\r
+\r
+ public void Remove (IGrammarContent p)\r
+ {\r
+ List.Remove (p);\r
+ }\r
+ }\r
+\r
// strict to say, it's not a pattern ;)\r
public class RelaxngNotAllowed : RelaxngPattern\r
{\r