public static IPersistentMap ExtractAttributes(IPersistentMap meta) { if (meta != null && ExtractAttributesVar.isBound) { return((IPersistentMap)ExtractAttributesVar.invoke(meta)); } return(PersistentArrayMap.EMPTY); }
/// <summary> /// Is one value preferred over another? /// </summary> /// <param name="x">The first dispatch value.</param> /// <param name="y">The second dispatch value.</param> /// <returns><value>true</value> if <paramref name="x"/> is preferred over <paramref name="y"/></returns> private bool Prefers(object x, object y) { IPersistentSet xprefs = (IPersistentSet)PreferTable.valAt(x); if (xprefs != null && xprefs.contains(y)) { return(true); } for (ISeq ps = RT.seq(_parents.invoke(y)); ps != null; ps = ps.next()) { if (Prefers(x, ps.first())) { return(true); } } for (ISeq ps = RT.seq(_parents.invoke(x)); ps != null; ps = ps.next()) { if (Prefers(ps.first(), y)) { return(true); } } return(false); }
/// <summary> /// Check the hierarchy. /// </summary> /// <param name="x"></param> /// <param name="y"></param> /// <returns></returns> private bool IsA(object x, object y) { return(RT.booleanCast(_isa.invoke(_hierarchy.deref(), x, y))); }
public static void Initialize(TextBox newLogControl) { SetLogControl(newLogControl); //Setup clojure system RT_ReadString = RT.var("clojure.core", "read-string"); RT_Eval = RT.var("clojure.core", "eval"); RT_Eval.invoke(RT_ReadString.invoke(outstrval_macro)); //Allows correct returns for logging Eval("(use 'clojure.repl)"); Eval("(def x 0)"); Eval("(def y 0)"); Eval("(def z 0)"); //Load clojure functions from this runtime LoadClojureFuncsFromAllAssemblies(); InitRuntimeMethods(); //Load all the clojure function files foreach (string file in Directory.GetFiles("functions")) { Eval(File.ReadAllText(file), true); } ClearLog(); Eval("(println \"" + Clojure_InitCompleteString + "\")", true); }