Ejemplo n.º 1
0
 public static bool cliToStrRaw(PlTerm obj, PlTerm str)
 {
     try
     {
         if (!str.IsVar)
         {
             var plvar = PlTerm.PlVar();
             return(cliToStrRaw(obj, plvar) && SpecialUnify(str, plvar));
         }
         if (obj.IsString)
         {
             return(str.Unify(obj));
         }
         if (obj.IsVar)
         {
             return(str.Unify((string)obj));
         }
         object o = GetInstance(obj);
         if (o == null)
         {
             return(str.FromObject("" + obj));
         }
         return(str.FromObject(ToString(o)));
     }
     catch (Exception e)
     {
         Warn("cliToString: {0}", e);
         object o = GetInstance(obj);
         if (o == null)
         {
             return(str.FromObject("" + obj));
         }
         return(str.FromObject(ToString(o)));
     }
 }
Ejemplo n.º 2
0
        public void Intern(string varname, object value)
        {
            PlTerm termin = PlTerm.PlVar();

            termin.FromObject(value);
            ModuleCall("Intern", PlNamed(varname), termin);
        }
Ejemplo n.º 3
0
        static public bool cliGetClass(PlTerm valueIn, PlTerm valueOut)
        {
            if (!valueOut.IsVar)
            {
                var plvar = PlTerm.PlVar();
                return(cliGetClass(valueIn, plvar) && SpecialUnify(valueOut, plvar));
            }
            object val = GetInstance(valueIn);

            // extension method
#if USE_IKVM
            return(valueOut.FromObject((val.getClass())));
#else
            return(valueOut.FromObject((val.GetType())));
#endif
        }
Ejemplo n.º 4
0
 internal static PlTerm ToPLCS(Term args)
 {
     if (args is Atom)
     {
         return(new PlTerm(args.name()));
     }
     if (args is jpl.Variable)
     {
         return(new PlTerm((uint)GetField(args, "term_")));
     }
     if (args is jpl.Float)
     {
         return(new PlTerm(args.doubleValue()));
     }
     if (args is jpl.Integer)
     {
         return(new PlTerm(args.longValue()));
     }
     if (args is jpl.Compound)
     {
         return(PlTerm.PlCompound(args.name(), ToPLCSV(args.args())));
     }
     if (args is jpl.JRef)
     {
         var jref = (jpl.JRef)args;// return new PlTerm(args.doubleValue());
         var obj  = jref.@ref();
         var t    = new PlTerm();
         t.FromObject(obj);
         return(t);
     }
     throw new ArgumentOutOfRangeException();
 }
Ejemplo n.º 5
0
        public static PlTerm ToProlog(object value)
        {
            PlTerm t = PlTerm.PlVar();

            t.FromObject(value);
            return(t);
        }
Ejemplo n.º 6
0
        static public bool cliTypeFromClass(PlTerm valueIn, PlTerm valueOut)
        {
            if (!valueOut.IsVar)
            {
                var plvar = PlTerm.PlVar();
                return(cliTypeFromClass(valueIn, plvar) && SpecialUnify(valueOut, plvar));
            }
            Type val = GetType(valueIn);

            if (val == null)
            {
                return(false);
            }
#if USE_IKVM
            Type c = ikvm.runtime.Util.getInstanceTypeFromClass(val);
            return(valueOut.FromObject((c)));
#else
            return(valueOut.FromObject(val));
#endif
        }
Ejemplo n.º 7
0
        public static bool cliTermToArray(PlTerm arrayValue, PlTerm valueOut)
        {
            if (!valueOut.IsVar)
            {
                var plvar = PlTerm.PlVar();
                return(cliTermToArray(arrayValue, plvar) && SpecialUnify(valueOut, plvar));
            }
            if (arrayValue.Name == "array")
            {
                return(valueOut.FromObject(GetInstance(arrayValue)));
            }
            Type elementType = ResolveType(arrayValue.Name);

            if (elementType == null)
            {
                Error("Cant find vector from {0}", arrayValue);
                return(false);
            }
            var value = CreateArrayOfTypeRankOneFilled(arrayValue, elementType.MakeArrayType());

            return(valueOut.FromObject((value)));
        }
Ejemplo n.º 8
0
        static public bool cliGetType(PlTerm valueIn, PlTerm valueOut)
        {
            if (!valueOut.IsVar)
            {
                var plvar = PlTerm.PlVar();
                return(cliGetType(valueIn, plvar) && SpecialUnify(valueOut, plvar));
            }
            object val = GetInstance(valueIn);

            if (val == null)
            {
                Error("Cannot get object for {0}", valueIn);
                return(true);
            }
            return(valueOut.FromObject((val.GetType())));
        }
Ejemplo n.º 9
0
        static public bool cliCastImmediate(PlTerm valueIn, PlTerm clazzSpec, PlTerm valueOut)
        {
            if (valueIn.IsVar)
            {
                return(Warn("Cant find instance {0}", valueIn));
            }
            if (!valueOut.IsVar)
            {
                var plvar = PlTerm.PlVar();
                return(cliCastImmediate(valueIn, clazzSpec, plvar) && SpecialUnify(valueOut, plvar));
            }
            Type   type   = GetType(clazzSpec);
            object retval = CastTerm(valueIn, type);

            return(valueOut.FromObject(retval));
        }
Ejemplo n.º 10
0
 internal static PlTerm ToPLCS(Term args)
 {
     if (args is Atom) return new PlTerm(args.name());
     if (args is jpl.Variable) return new PlTerm((uint)GetField(args, "term_"));
     if (args is jpl.Float) return new PlTerm(args.doubleValue());
     if (args is jpl.Integer) return new PlTerm(args.longValue());
     if (args is jpl.Compound) return PlTerm.PlCompound(args.name(), ToPLCSV(args.args()));
     if (args is jpl.JRef)
     {
         var jref = (jpl.JRef)args;// return new PlTerm(args.doubleValue());
         var obj = jref.@ref();
         var t = new PlTerm();
         t.FromObject(obj);
         return t;
     }
     throw new ArgumentOutOfRangeException();
 }
Ejemplo n.º 11
0
        public object Eval(object obj)
        {
            PlTerm termin = PlTerm.PlVar();

            if (obj is PlTerm)
            {
                termin.Unify((PlTerm)obj);
            }
            else
            {
                termin.FromObject(obj);
            }
            PlTerm termout = PlTerm.PlVar();

            if (!ModuleCall("Eval", termin, termout))
            {
                return(null);
            }
            return(PrologCLR.CastTerm(termout, typeof(System.Object)));
        }
Ejemplo n.º 12
0
        static public bool cliGetterm(PlTerm valueCol, PlTerm valueIn, PlTerm valueOut)
        {
            List <object> objs;

            if (valueCol.IsVar)
            {
                objs = new List <object>();
                valueCol.FromObject(objs);
            }
            else
            {
                objs = (List <object>)CastTerm(valueCol, typeof(ICollection));
            }
            if (!valueOut.IsVar)
            {
                var plvar = PlTerm.PlVar();
                return(cliGetterm(valueCol, valueIn, plvar) && SpecialUnify(valueOut, plvar));
            }
            if (IsTaggedObject(valueIn))
            {
                object val   = GetInstance(valueIn);
                int    index = objs.IndexOf(val);
                if (index < 0)
                {
                    index = objs.Count;
                    objs.Add(val);
                    var type = val.GetType();
                    if (type.IsArray)
                    {
                        return(valueIn.Unify(valueOut));
                    }
                    return(ToFieldLayout("object", typeToName(type), val, type, valueOut, false, false) != libpl.PL_fail);
                }
            }
            return(valueIn.Unify(valueOut));
        }
Ejemplo n.º 13
0
 public static bool cliToStrRaw(PlTerm obj, PlTerm str)
 {
     try
     {
         if (!str.IsVar)
         {
             var plvar = PlTerm.PlVar();
             return cliToStrRaw(obj, plvar) && SpecialUnify(str, plvar);
         }
         if (obj.IsString) return str.Unify(obj);
         if (obj.IsVar) return str.Unify((string)obj);
         object o = GetInstance(obj);
         if (o == null) return str.FromObject("" + obj);
         return str.FromObject(ToString(o));
     }
     catch (Exception e)
     {
         Warn("cliToString: {0}", e);
         object o = GetInstance(obj);
         if (o == null) return str.FromObject("" + obj);
         return str.FromObject(ToString(o));
     }
 }
Ejemplo n.º 14
0
        static public bool cliGetClass(PlTerm valueIn, PlTerm valueOut)
        {
            if (!valueOut.IsVar)
            {
                var plvar = PlTerm.PlVar();
                return cliGetClass(valueIn, plvar) && SpecialUnify(valueOut, plvar);
            }
            object val = GetInstance(valueIn);
            // extension method
#if USE_IKVM
            return valueOut.FromObject((val.getClass()));
#else
            return valueOut.FromObject((val.GetType()));
#endif
        }
Ejemplo n.º 15
0
        static public bool cliTypeFromClass(PlTerm valueIn, PlTerm valueOut)
        {
            if (!valueOut.IsVar)
            {
                var plvar = PlTerm.PlVar();
                return cliTypeFromClass(valueIn, plvar) && SpecialUnify(valueOut, plvar);
            }
            Type val = GetType(valueIn);
            if (val == null) return false;
#if USE_IKVM
            Type c = ikvm.runtime.Util.getInstanceTypeFromClass(val);
            return valueOut.FromObject((c));
#else
            return valueOut.FromObject(val);
#endif
        }
Ejemplo n.º 16
0
 private static bool UnifySpecialObject(PlTerm plTerm, object ret1)
 {
     if (plTerm.IsVar)
     {
         return plTerm.FromObject(ret1);
     }
     else
     {
         var plvar = PlTerm.PlVar();
         return plvar.FromObject(ret1) && SpecialUnify(plTerm, plvar);
     }
 }
Ejemplo n.º 17
0
 static public bool cliGetType(PlTerm valueIn, PlTerm valueOut)
 {
     if (!valueOut.IsVar)
     {
         var plvar = PlTerm.PlVar();
         return cliGetType(valueIn, plvar) && SpecialUnify(valueOut, plvar);
     }
     object val = GetInstance(valueIn);
     if (val == null)
     {
         Error("Cannot get object for {0}", valueIn);
         return true;
     }
     return valueOut.FromObject((val.GetType()));
 }