2 // XQueryCompileContext.cs
5 // Atsushi Enomoto <atsushi@ximian.com>
7 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
9 // Permission is hereby granted, free of charge, to any person obtaining
10 // a copy of this software and associated documentation files (the
11 // "Software"), to deal in the Software without restriction, including
12 // without limitation the rights to use, copy, modify, merge, publish,
13 // distribute, sublicense, and/or sell copies of the Software, and to
14 // permit persons to whom the Software is furnished to do so, subject to
15 // the following conditions:
17 // The above copyright notice and this permission notice shall be
18 // included in all copies or substantial portions of the Software.
20 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
23 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
24 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
25 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
26 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
32 using System.Collections;
33 using System.Collections.Specialized;
35 using System.Xml.Query;
36 using System.Xml.Schema;
37 using Mono.Xml.XPath2;
39 namespace Mono.Xml.XPath2
41 // Holds dynamic compile context that is shared between one or more
42 // compilers that are created during one XQueryCommand.Compile().
43 internal class XQueryCompileContext
45 public XQueryCompileContext ()
47 schemaCache = new Hashtable ();
48 moduleCache = new Hashtable ();
50 inEffectSchemas = new XmlSchemaSet ();
51 inEffectVariables = new Hashtable ();
52 inEffectFunctions = new XQueryFunctionTable ();
55 // Compiled schema table; It is used to avoid multiple time
56 // compilation of the same schemas that is likely to happen
57 // when a library module is divided into multiple files.
58 // [location string] -> XmlSchema (done) or null (not).
59 IDictionary schemaCache;
60 // ditto for local module resources.
61 // [location] -> XQueryLibraryModule (done) or null (not).
62 IDictionary moduleCache;
64 // Collects the whole schemas, variables and functions.
65 XmlSchemaSet inEffectSchemas;
66 Hashtable inEffectVariables;
67 XQueryFunctionTable inEffectFunctions;
69 public IDictionary SchemaCache {
70 get { return schemaCache; }
73 public IDictionary ModuleCache {
74 get { return moduleCache; }
77 // Compilation results
79 public XmlSchemaSet InEffectSchemas {
80 get { return inEffectSchemas; }
83 public Hashtable InEffectVariables {
84 get { return inEffectVariables; }
87 public XQueryFunctionTable InEffectFunctions {
88 get { return inEffectFunctions; }