/*******************************************************************************
* Copyright (c) 2004 Vlad Dumitrescu and others.
* 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:
* Vlad Dumitrescu
*******************************************************************************/
package org.erlide.backend.debug.model;
import org.eclipse.debug.core.DebugException;
import org.eclipse.debug.core.model.IDebugTarget;
import org.eclipse.debug.core.model.IValue;
import org.eclipse.debug.core.model.IVariable;
import com.ericsson.otp.erlang.OtpErlangAtom;
import com.ericsson.otp.erlang.OtpErlangBinary;
import com.ericsson.otp.erlang.OtpErlangFloat;
import com.ericsson.otp.erlang.OtpErlangList;
import com.ericsson.otp.erlang.OtpErlangLong;
import com.ericsson.otp.erlang.OtpErlangObject;
import com.ericsson.otp.erlang.OtpErlangPid;
import com.ericsson.otp.erlang.OtpErlangString;
import com.ericsson.otp.erlang.OtpErlangTuple;
public class ErlangValue extends ErlangDebugElement implements IValue {
protected OtpErlangObject value;
protected String varName; // to use with getVariables
protected final ErlangProcess process;
protected String moduleName;
public ErlangValue(final IDebugTarget target, final String varName,
final OtpErlangObject value, final ErlangProcess process,
final String moduleName) {
super(target);
this.value = value;
this.varName = varName;
this.process = process;
this.moduleName = moduleName;
}
@Override
public String getReferenceTypeName() throws DebugException {
if (value instanceof OtpErlangString) {
return "string";
} else if (value instanceof OtpErlangAtom) {
return "atom";
} else if (value instanceof OtpErlangList) {
return "list";
} else if (value instanceof OtpErlangTuple) {
return "tuple";
} else if (value instanceof OtpErlangPid) {
return "pid";
} else if (value instanceof OtpErlangLong) {
return "integer";
} else if (value instanceof OtpErlangFloat) {
return "float";
} else if (value instanceof OtpErlangBinary) {
return "binary";
} else {
return "term";
}
}
@Override
public String getValueString() throws DebugException {
return value.toString();
}
@Override
public boolean isAllocated() throws DebugException {
return true;
}
@Override
public IVariable[] getVariables() throws DebugException {
return null;
}
@Override
public boolean hasVariables() throws DebugException {
return false;
}
/**
* The string rep. of the erlang value must be returned, it's used by
* {@link ErlangVariable#setValue(IValue)}
*/
@Override
public String toString() {
return value.toString();
}
}