Example #1
0
 static void AddPrimitives(Type type)
 {
     MemberInfo [] minfos = type.FindMembers(MemberTypes.Method, BindingFlags.Public | BindingFlags.Static, null, null);
     foreach (MemberInfo minfo in minfos)
     {
         object [] attributes = minfo.GetCustomAttributes(typeof(SchemePrimitiveAttribute), false);
         if (attributes.Length == 1)
         {
             string     name    = ((SchemePrimitiveAttribute)(attributes [0])).Name;
             int        arity   = ((SchemePrimitiveAttribute)(attributes [0])).Arity;
             MethodInfo mtdinfo = (MethodInfo)minfo;
             // Console.WriteLine ("Add Primitive {0}", ((PrimitiveAttribute) (attributes [0])).Name);
             if (arity == 0)
             {
                 PrimitiveMethod0 del = (PrimitiveMethod0)System.Delegate.CreateDelegate(typeof(PrimitiveMethod0), mtdinfo);
                 AddPrimitive(name, del);
             }
             else if (arity == 1)
             {
                 PrimitiveMethod1 del = (PrimitiveMethod1)System.Delegate.CreateDelegate(typeof(PrimitiveMethod1), mtdinfo);
                 AddPrimitive(name, del);
             }
             else if (arity == 2)
             {
                 PrimitiveMethod2 del = (PrimitiveMethod2)System.Delegate.CreateDelegate(typeof(PrimitiveMethod2), mtdinfo);
                 AddPrimitive(name, del);
             }
             else if (arity == 3)
             {
                 PrimitiveMethod3 del = (PrimitiveMethod3)System.Delegate.CreateDelegate(typeof(PrimitiveMethod3), mtdinfo);
                 AddPrimitive(name, del);
             }
             else
             {
                 PrimitiveMethod del = (PrimitiveMethod)System.Delegate.CreateDelegate(typeof(PrimitiveMethod), mtdinfo);
                 AddPrimitive(name, arity, del);
             }
         }
     }
 }
Example #2
0
 public Primitive3(Symbol name, PrimitiveMethod3 method)
     : base(name, 3)
 {
     this.method = method;
 }
Example #3
0
 public Primitive3(Symbol name, PrimitiveMethod3 method)
     : base(name, 3)
 {
     this.method = method;
 }
Example #4
0
 static void AddPrimitive(string name, PrimitiveMethod3 method)
 {
     primitiveTable.Add(CanonicalizeName(name), new Primitive3(Symbol.Make(name), method));
 }
Example #5
0
 static void AddPrimitive(string name, PrimitiveMethod3 method)
 {
     primitiveTable.Add (CanonicalizeName (name), new Primitive3 (Symbol.Make (name), method));
 }