1 package gnu.kawa.xslt;
2 import gnu.mapping.Procedure;
3 import gnu.mapping.Symbol;
4 
5 /** Manages the set of xslt templates that have the same 'mode'. */
6 
7 public class TemplateTable
8 {
9   /** The "mode" parameter of xsl:template. */
10   Symbol name;
11 
12   static final TemplateTable nullModeTable = new TemplateTable(XSLT.nullMode);
13 
TemplateTable(Symbol mode)14   public TemplateTable(Symbol mode)
15   {
16     this.name = mode;
17   }
18 
getTemplateTable(Symbol name)19   static TemplateTable getTemplateTable(Symbol name)
20   {
21     if (name == XSLT.nullMode)
22       return nullModeTable;
23     return null;  // FIXME
24   }
25 
26   TemplateEntry entries;  // For now - later use HashTable.
27 
enter(String pattern, double priority, Procedure procedure)28   public void enter(String pattern, double priority, Procedure procedure)
29   {
30     TemplateEntry entry = new TemplateEntry();
31     entry.procedure = procedure;
32     entry.priority = priority;
33     entry.pattern = pattern;
34     entry.next = entries;
35     entries = entry;
36   }
37 
find(String name)38   public Procedure find (String name)
39   {
40     for (TemplateEntry entry = entries;  entry != null;  entry = entry.next)
41       {
42 	if (entry.pattern.equals(name))
43 	  return entry.procedure;
44       }
45     return null;
46   }
47 }
48 
49 /** Each xsl:template creates a TemplateEntry. */
50 
51 class TemplateEntry
52 {
53   Procedure procedure;
54   double priority;
55   String pattern;
56   TemplateEntry next;
57 }
58