Axiom.Runtime.ObjectTerm.Unify C# (CSharp) Method

Unify() public method

public Unify ( AbstractTerm term ) : bool
term AbstractTerm
return bool
        public override bool Unify(AbstractTerm term)
        {
            // Unify with a .NET object
            if (term.IsObject)
            {
                if (_data.Equals(term.Data()))
                {
                    return true;
                }
                else if (_data == term.Data())
                {
                    return true;
                }
                return false;
            }

            // Unify with a constant
            if (term.IsConstant)
            {
                // unify with an int
                int v;
                float x;
                if (Int32.TryParse((string)term.Data(), out v))
                {

                    if (_data.GetType().ToString() == "System.Int32")
                    {
                        if (((int)_data) == v)
                        {
                            return true;
                        }
                        else
                        {
                            return false;
                        }
                    }
                    return false;
                }
                // Unify with a float
                else if (float.TryParse((string)term.Data(), out x))
                {
                    if (_data.GetType().ToString() == "System.Float")
                    {
                        if (((float)_data) == x)
                        {
                            return true;
                        }
                        else
                        {
                            return false;
                        }
                    }
                    return false;
                }
                // Unify with a constant atom/string
                else
                {
                    if (_data.GetType().ToString() == "System.String")
                    {
                        if (((string)_data) == ((string)term.Data()))
                        {
                            return true;
                        }
                        else
                        {
                            return false;
                        }
                    }
                    return false;
                }

            }

            // Unify with a list (need to unify it with an ArrayList)
            else
            {
                return false;
            }

            // Unify with a structure

            // Unify with a reference
        }