z80-tools/src/nl/grauw/glass/expressions/FlagOrRegister.java

63 wiersze
1.1 KiB
Java

package nl.grauw.glass.expressions;
public class FlagOrRegister extends Literal {
public static FlagOrRegister C = new FlagOrRegister(Flag.C, Register.C);
private final Flag flag;
private final Register register;
public FlagOrRegister(Flag flag, Register register) {
this.flag = flag;
this.register = register;
}
@Override
public FlagOrRegister copy(Context context) {
return this;
}
@Override
public boolean isFlag() {
return true;
}
@Override
public Flag getFlag() {
return flag;
}
@Override
public boolean isRegister() {
return true;
}
@Override
public Register getRegister() {
return register;
}
@Override
public String toString() {
return flag.toString();
}
@Override
public String toDebugString() {
return flag.toString();
}
public static Literal getByName(String name) {
Flag flag = Flag.getByName(name);
Register register = Register.getByName(name);
if (flag != null && register == null)
return flag;
if (flag == null && register != null)
return register;
if (flag != null && register != null)
return new FlagOrRegister(flag, register);
return null;
}
}