Copyright (c) 2004, 2006 IBM Corporation and others. This program and the accompanying materials are made available under the terms of the Eclipse Public License 2.0 which accompanies this distribution, and is available at https://www.eclipse.org/legal/epl-2.0/ SPDX-License-Identifier: EPL-2.0 Contributors: IBM Corporation - initial API and implementation
/******************************************************************************* * Copyright (c) 2004, 2006 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 * which accompanies this distribution, and is available at * https://www.eclipse.org/legal/epl-2.0/ * * SPDX-License-Identifier: EPL-2.0 * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/
package org.eclipse.debug.core.model;
A byte of memory in a memory block. Each byte of memory has a value and attributes indicating if the byte is read-only, valid, or if its value has changed.

Clients may instantiate this class. Clients may subclass this class to add other attributes to a memory byte, as required.

See Also:
Since:3.1
/** * A byte of memory in a memory block. Each byte of memory has a value and * attributes indicating if the byte is read-only, valid, or if its value has * changed. * <p> * Clients may instantiate this class. Clients may subclass this class to * add other attributes to a memory byte, as required. * </p> * @since 3.1 * @see org.eclipse.debug.core.model.IMemoryBlockExtension */
public class MemoryByte {
Bit mask used to indicate a byte is writable.
/** * Bit mask used to indicate a byte is writable. */
public static final byte WRITABLE = 0x01;
Bit mask used to indicate a byte is readable. A memory byte is readable when its value and attributes are retrievable. Otherwise, a byte is considered non-readable.
/** * Bit mask used to indicate a byte is readable. * A memory byte is readable when its value and attributes are retrievable. * Otherwise, a byte is considered non-readable. */
public static final byte READABLE = 0x02;
Bit mask used to indicate a byte has changed since the last suspend event.
See Also:
  • SUSPEND.SUSPEND
/** * Bit mask used to indicate a byte has changed since the last * suspend event. * * @see org.eclipse.debug.core.DebugEvent#SUSPEND */
public static final byte CHANGED = 0x04;
Bit mask used to indicate a memory byte has history to determine if its value has changed. When a memory byte's history is unknown, the change state has no meaning.
/** * Bit mask used to indicate a memory byte has history to * determine if its value has changed. When a memory byte's * history is unknown, the change state has no meaning. */
public static final byte HISTORY_KNOWN = 0x08;
Bit mask used to indicate a this byte of memory is big endian. If this byte of memory is little endian, turn this bit mask to off.
/** * Bit mask used to indicate a this byte of memory * is big endian. If this byte of memory is little endian, * turn this bit mask to off. */
public static final byte BIG_ENDIAN = 0x10;
Bit mask used to indicate that the endianess of this byte of memory is known. When a memory byte's endianess is unknown, the endianess of this byte has no meaning.
/** * Bit mask used to indicate that the endianess of this byte * of memory is known. When a memory byte's endianess is * unknown, the endianess of this byte has no meaning. */
public static final byte ENDIANESS_KNOWN = 0x20;
Value of this byte.
/** * Value of this byte. */
protected byte value;
Attribute flags.

To specify READABLE: flags |= MemoryByte.READABLE; To specify WRITABLE: flags |= MemoryByte.WRITABLE;

/** * Attribute flags. * <p> * To specify READABLE: flags |= MemoryByte.READABLE; * To specify WRITABLE: flags |= MemoryByte.WRITABLE; * </p> */
protected byte flags;
Constructs a readable, writable memory byte without a change history, and a value of 0. The byte's endianess is known and is little endian by default.
/** * Constructs a readable, writable memory byte without a change history, * and a value of 0. The byte's endianess is known and is little endian * by default. */
public MemoryByte() { this((byte)0, (byte)(WRITABLE | READABLE | ENDIANESS_KNOWN)); }
Constructs a readable, writable memory byte without a change history, with the given value. The byte's endianess is known and is little endian by default.
Params:
  • byteValue – value of this memory byte
/** * Constructs a readable, writable memory byte without a change history, * with the given value. The byte's endianess is known and is little endian * by default. * * @param byteValue value of this memory byte * */
public MemoryByte(byte byteValue) { this(byteValue, (byte)(WRITABLE | READABLE | ENDIANESS_KNOWN)); }
Constructs a memory byte with the given value and attributes.
Params:
  • byteValue – value of this memory byte
  • byteFlags – attributes of the byte specified as a bit mask
/** * Constructs a memory byte with the given value and attributes. * * @param byteValue value of this memory byte * @param byteFlags attributes of the byte specified as a bit mask */
public MemoryByte(byte byteValue, byte byteFlags) { value = byteValue; flags = byteFlags; }
Returns this memory byte's attribute as a bit mask.
Returns:this memory byte's attribute as a bit mask
/** * Returns this memory byte's attribute as a bit mask. * * @return this memory byte's attribute as a bit mask */
public byte getFlags() { return flags; }
Sets this memory byte's attributes based on the given bit mask.
Params:
  • flags – bit mask of attributes
/** * Sets this memory byte's attributes based on the given bit mask. * * @param flags bit mask of attributes */
public void setFlags(byte flags) { this.flags = flags; }
Returns the value of this memory byte.
Returns:the value of this memory byte
/** * Returns the value of this memory byte. * * @return the value of this memory byte */
public byte getValue() { return value; }
Sets the value of this memory byte.
Params:
  • value – the new value of this memory byte
/** * Sets the value of this memory byte. * * @param value the new value of this memory byte */
public void setValue(byte value) { this.value = value; }
Sets whether this memory byte is readable. A memory byte is considered readable when its value and attributes are retrievable.
Params:
  • readable – whether this memory byte is readable
/** * Sets whether this memory byte is readable. A memory byte * is considered readable when its value and attributes are * retrievable. * * @param readable whether this memory byte is readable */
public void setReadable(boolean readable) { flags |= MemoryByte.READABLE; if (!readable) flags ^= MemoryByte.READABLE; }
Returns whether this memory byte is readable. A memory byte is considered readable when its value and attributes are retrievable.
Returns:whether this memory byte is readable
/** * Returns whether this memory byte is readable. A memory byte * is considered readable when its value and attributes are * retrievable. * * @return whether this memory byte is readable */
public boolean isReadable() { return ((flags & MemoryByte.READABLE) == MemoryByte.READABLE); }
Sets whether this memory byte is writable.
Params:
  • writable – whether this memory byte is writable.
/** * Sets whether this memory byte is writable. * * @param writable whether this memory byte is writable. */
public void setWritable(boolean writable) { flags |= MemoryByte.WRITABLE; if (!writable) flags ^= MemoryByte.WRITABLE; }
Returns whether this memory byte is writable.
Returns:whether this memory byte is writable
/** * Returns whether this memory byte is writable. * * @return whether this memory byte is writable */
public boolean isWritable() { return ((flags & MemoryByte.WRITABLE) == MemoryByte.WRITABLE); }
Sets whether this memory byte has changed.
Params:
  • changed – whether this memory byte has changed
/** * Sets whether this memory byte has changed. * * @param changed whether this memory byte has changed */
public void setChanged(boolean changed) { flags |= MemoryByte.CHANGED; if (!changed) flags ^= MemoryByte.CHANGED; }
Returns whether this memory byte has changed.
Returns:whether this memory byte has changed
/** * Returns whether this memory byte has changed. * * @return whether this memory byte has changed */
public boolean isChanged() { return ((flags & MemoryByte.CHANGED) == MemoryByte.CHANGED); }
Sets whether the history of this byte is known. When history is unknown, the change state of a memory byte has no meaning.
Params:
  • known – whether the change state of this byte is known
/** * Sets whether the history of this byte is known. When history * is unknown, the change state of a memory byte has no meaning. * * @param known whether the change state of this byte is known */
public void setHistoryKnown(boolean known) { flags |= MemoryByte.HISTORY_KNOWN; if (!known) flags ^= MemoryByte.HISTORY_KNOWN; }
Returns whether the history of this byte is known. When history is unknown, the change state of a memory byte has no meaning.
Returns:whether the change state of this byte is known
/** * Returns whether the history of this byte is known. When history * is unknown, the change state of a memory byte has no meaning. * * @return whether the change state of this byte is known */
public boolean isHistoryKnown() { return ((flags & MemoryByte.HISTORY_KNOWN) == MemoryByte.HISTORY_KNOWN); }
Sets whether this byte of memory is big endian.
Params:
  • isBigEndian – whether the byte of memory is big endian.
/** * Sets whether this byte of memory is big endian. * * @param isBigEndian whether the byte of memory is big endian. */
public void setBigEndian(boolean isBigEndian) { flags |= MemoryByte.BIG_ENDIAN; if (!isBigEndian) flags ^= MemoryByte.BIG_ENDIAN; }
Returns whether this byte of memory is big endian.
Returns:whether the byte of memory is big endian.
/** * Returns whether this byte of memory is big endian. * * @return whether the byte of memory is big endian. */
public boolean isBigEndian() { return ((flags & MemoryByte.BIG_ENDIAN) == MemoryByte.BIG_ENDIAN); }
Sets whether the endianess of this byte of memory is known. If the endianess is unknown, the endianess of this byte has no meaning.
Params:
  • isEndianessKnown – whether the endianess of this byte is known.
/** * Sets whether the endianess of this byte of memory is known. * If the endianess is unknown, the endianess of this byte * has no meaning. * * @param isEndianessKnown whether the endianess of this byte is known. */
public void setEndianessKnown(boolean isEndianessKnown) { flags |= MemoryByte.ENDIANESS_KNOWN; if (!isEndianessKnown) flags ^= MemoryByte.ENDIANESS_KNOWN; }
Returns whether the endianess of this byte of memory is known. If the endianess is unknown, the endianess of this byte has no meaning.
Returns:whether the endianess of this byte of memory is known.
/** * Returns whether the endianess of this byte of memory is known. * If the endianess is unknown, the endianess of this byte * has no meaning. * * @return whether the endianess of this byte of memory is known. */
public boolean isEndianessKnown() { return ((flags & MemoryByte.ENDIANESS_KNOWN) == MemoryByte.ENDIANESS_KNOWN); } }