blob: 3abfc933cd9bc2ff559ed626df115b8171dc6e6a [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2004, 2007 Boeing.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Boeing - initial API and implementation
*******************************************************************************/
package org.eclipse.osee.ote.message.elements;
import java.util.Collection;
import org.eclipse.osee.ote.message.Message;
import org.eclipse.osee.ote.message.data.MemoryResource;
import org.eclipse.osee.ote.message.data.MessageData;
public class ArrayElement extends Element {
public ArrayElement(Message<?, ?, ?> msg, String elementName, MessageData messageData, int byteOffset, int msb, int lsb, int originalMsb, int originalLsb) {
super(msg, elementName, messageData, byteOffset, msb, lsb, originalMsb, originalLsb);
}
public ArrayElement(Message<?, ?, ?> msg, String elementName, MessageData messageData, int bitOffset, int bitLength) {
super(msg, elementName, messageData, bitOffset, bitLength);
}
public ArrayElement(Message<?, ?, ?> msg, String elementName, MessageData messageData, int byteOffset, int msb, int lsb) {
super(msg, elementName, messageData, byteOffset, msb, lsb);
}
@Override
protected Element getNonMappingElement() {
return null;
}
public void setValue(int index, byte value) {
getMsgData().getMem().getData()[index + getMsgData().getMem().getOffset() + getArrayStartOffset()] = value;
}
public byte getValue(int index) {
return getValue(getMsgData().getMem(), index);
}
public byte getValue(MemoryResource mem, int index) {
return mem.getData()[index + mem.getOffset() + getArrayStartOffset()];
}
public void zeroize() {
MemoryResource mem = getMsgData().getMem();
mem.zeroizeFromOffset(getArrayStartOffset(), getLength());
}
public int getLength() {
int currentMsgLength = getMsgData().getCurrentLength() - getMsgData().getOffset() - getArrayStartOffset();
int length = getArrayEndOffset() - getArrayStartOffset();
length = currentMsgLength < length ? currentMsgLength : length;
return length;
}
public int getArrayStartOffset() {
return byteOffset + (msb / 8);
}
public int getArrayEndOffset() {
return ((lsb - msb + 1) / 8) + byteOffset;
}
@Override
public void visit(IElementVisitor visitor) {
visitor.asArrayElement(this);
}
/*
* (non-Javadoc)
*
* @see org.eclipse.osee.ote.message.elements.Element#switchMessages(org.eclipse.osee.ote.message.Message[])
*/
@Override
public ArrayElement switchMessages(Collection<? extends Message<?, ?, ?>> messages) {
return (ArrayElement) super.switchMessages(messages);
}
}