示例#1
0
        int CompareStmts(ImplAccStatement x, ImplAccStatement y)
        {
            if (x.Kind != y.Kind)
            {
                return(x.Kind.CompareTo(y.Kind));
            }

            switch (x)
            {
            case NoArgImplAccStatement:
                return(0);

            case EmmiImplAccStatement emmi_a:
                var emmi_b = (EmmiImplAccStatement)y;
                return(emmi_a.CompareTo(emmi_b));

            case IntArgImplAccStatement ia_a:
                var ia_b = (IntArgImplAccStatement)y;
                return(ia_a.CompareTo(ia_b));

            case IntX2ArgImplAccStatement ia2_a:
                var ia2_b = (IntX2ArgImplAccStatement)y;
                return(ia2_a.CompareTo(ia2_b));

            case RegisterRangeImplAccStatement range_a:
                var range_b = (RegisterRangeImplAccStatement)y;
                return(range_a.CompareTo(range_b));

            case RegisterImplAccStatement reg_a:
                var reg_b = (RegisterImplAccStatement)y;
                return(reg_a.CompareTo(reg_b));

            case MemoryImplAccStatement mem_a:
                var mem_b = (MemoryImplAccStatement)y;
                return(mem_a.CompareTo(mem_b));

            default:
                throw new InvalidOperationException();
            }
        }
示例#2
0
 public override bool Equals([AllowNull] ImplAccStatement obj) =>
 obj is RegisterRangeImplAccStatement other && Access == other.Access && RegisterFirst == other.RegisterFirst && RegisterLast == other.RegisterLast;
示例#3
0
 public override bool Equals([AllowNull] ImplAccStatement obj) => obj is IntX2ArgImplAccStatement other && Kind == other.Kind && Arg1 == other.Arg1 && Arg2 == other.Arg2;