コード例 #1
0
ファイル: Symbol.cs プロジェクト: toshok/shelisp
 private Symbol(PrimitiveSymbol prim)
 {
     switch (prim) {
     case PrimitiveSymbol.Unbound:
         this.name = "unbound";
         this.value = this.function = this;
         break;
     default:
         throw new NotSupportedException();
     }
 }
コード例 #2
0
        public static bool operator <=(Name a, Name b)
        {
            PrimitiveSymbol pa = a as PrimitiveSymbol;
            PrimitiveSymbol pb = b as PrimitiveSymbol;

            if (pa == null || pb == null)
            {
                return(false);
            }

            int delta;

            if (PrimitiveSymbol.TryCompare(pa, pb, out delta))
            {
                return(delta <= 0);
            }
            return(false);
        }
コード例 #3
0
            public override bool Equals(object obj)
            {
                PrimitiveSymbol s = obj as PrimitiveSymbol;

                if (s == null)
                {
                    return(false);
                }

                if (m_value == s.m_value)
                {
                    return(true);
                }

                if (m_value == null || s.m_value == null)
                {
                    return(false);
                }

                return(CompareNameWithString(s.m_value.ToString()));
            }
コード例 #4
0
            public override bool Match(Name name)
            {
                PrimitiveSymbol s = name as PrimitiveSymbol;

                if (s == null)
                {
                    return(false);
                }

                if (m_value == s.m_value)
                {
                    return(true);
                }

                if (m_value == null || s.m_value == null)
                {
                    return(false);
                }

                return(CompareNameWithString(s.m_value));
            }
コード例 #5
0
            public override bool Match(Name name)
            {
                if (name.IsUniversal)
                {
                    return(true);
                }

                PrimitiveSymbol s = name as PrimitiveSymbol;

                if (s == null)
                {
                    return(false);
                }

                if (m_value == null)
                {
                    return(false);
                }

                return(m_value.Equals(s.m_value));
            }
コード例 #6
0
 public static bool TryCompare(PrimitiveSymbol s1, PrimitiveSymbol s2, out int delta)
 {
     return(PrimitiveValue.TryCompare(s1.m_value, s2.m_value, out delta));
 }