*** empty log message ***
[m17n/m17n-lib-cs.git] / XmlExpr.cs
index e37e7ea..0bc2421 100644 (file)
@@ -415,6 +415,8 @@ namespace System.Xml
       // single list.
       internal readonly int max_args;
 
+      public delegate Term Builtin (Domain domain, Variable vari, Term[] terms);
+
       public Function () { }
 
       public Function (Symbol name, bool with_var, int min_args, int max_args)
@@ -434,10 +436,9 @@ namespace System.Xml
 
       internal class Subroutine : Function
       {
-       public Func<Domain, Variable, Term[], Term> builtin;
+       public Builtin builtin;
 
-       public Subroutine (Func<Domain, Variable, Term[], Term> builtin,
-                          Symbol name, bool with_var,
+       public Subroutine (Builtin builtin, Symbol name, bool with_var,
                           int min_args, int max_args)
          : base (name, with_var, min_args, max_args)
          {
@@ -462,10 +463,9 @@ namespace System.Xml
 
       internal class SpecialForm : Function
       {
-       public Func<Domain, Variable, Term[], Term> builtin;
+       public Builtin builtin;
 
-       public SpecialForm (Func<Domain, Variable, Term[], Term> builtin,
-                           Symbol name, bool with_var,
+       public SpecialForm (Builtin builtin, Symbol name, bool with_var,
                            int min_args, int max_args)
          : base (name, with_var, min_args, max_args)
          {
@@ -796,18 +796,16 @@ namespace System.Xml
          }
       }
 
-      public void DefSubr (Func<Domain, Variable, Term[], Term> builtin,
-                          Symbol name, bool with_var,
-                          int min_args, int max_args)
+      public void DefSubr (Function.Builtin builtin, Symbol name,
+                          bool with_var, int min_args, int max_args)
       {
        check_func_head (name, with_var, min_args, max_args, false);
        functions[name] = new Function.Subroutine (builtin, name, with_var,
                                                   min_args, max_args);
       }
 
-      public void DefSpecial (Func<Domain, Variable, Term[], Term> builtin,
-                             Symbol name, bool with_var,
-                             int min_args, int max_args)
+      public void DefSpecial (Function.Builtin builtin, Symbol name,
+                             bool with_var, int min_args, int max_args)
       {
        check_func_head (name, with_var, min_args, max_args, false);
        functions[name] = new Function.SpecialForm (builtin, name, with_var,
@@ -2408,8 +2406,9 @@ namespace System.Xml
 
     private static bool default_stop (XmlNode n) { return n == null; }
 
-    public static Term[] Parse (Domain domain, XmlNode node,
-                               Func<XmlNode, bool> stop)
+    public delegate bool ParseStop (XmlNode node);
+
+    public static Term[] Parse (Domain domain, XmlNode node, ParseStop stop)
     {
       if (stop == null)
        stop = default_stop;