/* This file is part of jpcsp. Jpcsp is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Jpcsp is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Jpcsp. If not, see <http://www.gnu.org/licenses/>. */ package jpcsp.HLE; import jpcsp.MemoryMap; import jpcsp.util.Utilities; public class PspString { protected String string; protected int address; protected int maxLength; protected boolean canBeNull; public PspString(int address) { this.string = null; this.address = address; this.maxLength = MemoryMap.SIZE_RAM; // Never will be greater than the whole PSP memory :P } public PspString(int address, int maxLength) { this.string = null; this.address = address; this.maxLength = maxLength; } public PspString(int address, int maxLength, boolean canBeNull) { this.string = null; this.address = address; this.maxLength = maxLength; this.canBeNull = canBeNull; } public String getString() { if (string == null) { if (canBeNull && isNull()) { string = ""; } else { string = Utilities.readStringNZ(address, maxLength); } } return string; } public int getAddress() { return address; } public boolean isNull() { return address == 0; } public boolean isNotNull() { return address != 0; } @Override public String toString() { return String.format("0x%08X('%s')", getAddress(), getString()); } public boolean equals(String s) { if (s == null) { return isNull(); } if (isNull()) { return false; } return s.equals(getString()); } }