blob: c0ddd92023437a7a97fc2aadd83ba6c781aa2ed7 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
|
/*******************************************************************************
* Copyright (c) 2000, 2007 QNX Software Systems 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:
* QNX Software Systems - Initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.debug.mi.core.cdi.model.type;
import org.eclipse.cdt.debug.core.cdi.CDIException;
import org.eclipse.cdt.debug.core.cdi.model.ICDIValue;
import org.eclipse.cdt.debug.core.cdi.model.type.ICDIBoolType;
import org.eclipse.cdt.debug.core.cdi.model.type.ICDICharType;
import org.eclipse.cdt.debug.core.cdi.model.type.ICDIDoubleType;
import org.eclipse.cdt.debug.core.cdi.model.type.ICDIEnumType;
import org.eclipse.cdt.debug.core.cdi.model.type.ICDIFloatType;
import org.eclipse.cdt.debug.core.cdi.model.type.ICDIFunctionType;
import org.eclipse.cdt.debug.core.cdi.model.type.ICDIIntType;
import org.eclipse.cdt.debug.core.cdi.model.type.ICDILongLongType;
import org.eclipse.cdt.debug.core.cdi.model.type.ICDILongType;
import org.eclipse.cdt.debug.core.cdi.model.type.ICDIPointerType;
import org.eclipse.cdt.debug.core.cdi.model.type.ICDIReferenceType;
import org.eclipse.cdt.debug.core.cdi.model.type.ICDIReferenceValue;
import org.eclipse.cdt.debug.core.cdi.model.type.ICDIShortType;
import org.eclipse.cdt.debug.core.cdi.model.type.ICDIStructType;
import org.eclipse.cdt.debug.core.cdi.model.type.ICDIType;
import org.eclipse.cdt.debug.core.cdi.model.type.ICDIWCharType;
import org.eclipse.cdt.debug.mi.core.cdi.model.Value;
import org.eclipse.cdt.debug.mi.core.cdi.model.Variable;
/**
* Enter type comment.
*
* @since Jun 3, 2003
*/
public class ReferenceValue extends DerivedValue implements ICDIReferenceValue {
/**
* Construct a value object for the referred variable
* @param v
* @since 6.0
*/
public ReferenceValue(Variable v) {
super(v);
}
/* (non-Javadoc)
* @see org.eclipse.cdt.debug.core.cdi.model.type.ICDIReferenceValue#referenceValue()
*/
public ICDIValue referenceValue() throws CDIException {
Value value = null;
ICDIReferenceType rt = (ICDIReferenceType)getType();
ICDIType t = rt.getComponentType();
if (t instanceof ICDIBoolType) {
value = new BoolValue(getVariable());
} else if (t instanceof ICDICharType) {
value = new CharValue(getVariable());
} else if (t instanceof ICDIWCharType) {
value = new WCharValue(getVariable());
} else if (t instanceof ICDIShortType) {
value = new ShortValue(getVariable());
} else if (t instanceof ICDIIntType) {
value = new IntValue(getVariable());
} else if (t instanceof ICDILongType) {
value = new LongValue(getVariable());
} else if (t instanceof ICDILongLongType) {
value = new LongLongValue(getVariable());
} else if (t instanceof ICDIEnumType) {
value = new EnumValue(getVariable());
} else if (t instanceof ICDIFloatType) {
value = new FloatValue(getVariable());
} else if (t instanceof ICDIDoubleType) {
value = new DoubleValue(getVariable());
} else if (t instanceof ICDIFunctionType) {
value = new FunctionValue(getVariable());
} else if (t instanceof ICDIPointerType) {
value = new PointerValue(getVariable());
// } else if (t instanceof ICDIReferenceType) {
// value = new ReferenceValue(getVariable());
//
// Don't think you can have a reference to an array variable, making
// the following case pointless. Removing it since it would otherwise
// require us to be constructed with a hexAddress qualifier.
// } else if (t instanceof ICDIArrayType) {
// value = new ArrayValue(getVariable(), hexAddress);
//
} else if (t instanceof ICDIStructType) {
value = new StructValue(getVariable());
} else {
value = new Value(getVariable());
}
value.setIsReference(true);
return value;
}
}
|