using System; 
 | 
using System.Collections.Generic; 
 | 
using System.Linq; 
 | 
using System.Text; 
 | 
  
 | 
namespace Jace.Operations 
 | 
{ 
 | 
    public abstract class Constant<T> : Operation 
 | 
    { 
 | 
        public Constant(DataType dataType, T value) 
 | 
            : base(dataType, false, true) 
 | 
        { 
 | 
            this.Value = value; 
 | 
        } 
 | 
  
 | 
        public T Value { get; private set; } 
 | 
  
 | 
        public override bool Equals(object obj) 
 | 
        { 
 | 
            Constant<T> other = obj as Constant<T>; 
 | 
            if (other != null) 
 | 
                return this.Value.Equals(other.Value); 
 | 
            else 
 | 
                return false; 
 | 
        } 
 | 
  
 | 
        public override int GetHashCode() 
 | 
        { 
 | 
            return this.Value.GetHashCode(); 
 | 
        } 
 | 
    } 
 | 
  
 | 
    public class IntegerConstant : Constant<int> 
 | 
    { 
 | 
        public IntegerConstant(int value) 
 | 
            : base(DataType.Integer, value) 
 | 
        { 
 | 
        } 
 | 
    } 
 | 
  
 | 
    public class FloatingPointConstant : Constant<double> 
 | 
    { 
 | 
        public FloatingPointConstant(double value) 
 | 
            : base(DataType.FloatingPoint, value) 
 | 
        { 
 | 
        } 
 | 
    } 
 | 
} 
 |