Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEugene Tarassov2014-11-15 03:40:18 +0000
committerEugene Tarassov2014-11-15 03:40:18 +0000
commitd44cc27c9c79bc48954a751e92114b0d2f67fdae (patch)
treeb41363e93dc096b233b0baa8fb3e53eedf476c6b
parent6466ab5bd573bd7bbac6fefd7f30e7440934e448 (diff)
downloadorg.eclipse.tcf-d44cc27c9c79bc48954a751e92114b0d2f67fdae.tar.gz
org.eclipse.tcf-d44cc27c9c79bc48954a751e92114b0d2f67fdae.tar.xz
org.eclipse.tcf-d44cc27c9c79bc48954a751e92114b0d2f67fdae.zip
Bug 451598 - Provide support for TAG_variant and TAG_variant_part
-rw-r--r--plugins/org.eclipse.tcf.core/src/org/eclipse/tcf/internal/services/remote/SymbolsProxy.java2
-rw-r--r--plugins/org.eclipse.tcf.core/src/org/eclipse/tcf/services/ISymbols.java4
-rw-r--r--plugins/org.eclipse.tcf.debug.ui/src/org/eclipse/tcf/internal/debug/ui/model/TCFChildrenSubExpressions.java25
3 files changed, 21 insertions, 10 deletions
diff --git a/plugins/org.eclipse.tcf.core/src/org/eclipse/tcf/internal/services/remote/SymbolsProxy.java b/plugins/org.eclipse.tcf.core/src/org/eclipse/tcf/internal/services/remote/SymbolsProxy.java
index 8d6dd7fdb..7cbeb1d75 100644
--- a/plugins/org.eclipse.tcf.core/src/org/eclipse/tcf/internal/services/remote/SymbolsProxy.java
+++ b/plugins/org.eclipse.tcf.core/src/org/eclipse/tcf/internal/services/remote/SymbolsProxy.java
@@ -109,6 +109,8 @@ public class SymbolsProxy implements ISymbols {
case 5: return SymbolClass.comp_unit;
case 6: return SymbolClass.block;
case 7: return SymbolClass.namespace;
+ case 8: return SymbolClass.variant_part;
+ case 9: return SymbolClass.variant;
}
}
return SymbolClass.unknown;
diff --git a/plugins/org.eclipse.tcf.core/src/org/eclipse/tcf/services/ISymbols.java b/plugins/org.eclipse.tcf.core/src/org/eclipse/tcf/services/ISymbols.java
index f61158c01..b3660cbe4 100644
--- a/plugins/org.eclipse.tcf.core/src/org/eclipse/tcf/services/ISymbols.java
+++ b/plugins/org.eclipse.tcf.core/src/org/eclipse/tcf/services/ISymbols.java
@@ -35,7 +35,9 @@ public interface ISymbols extends IService {
type, // a type
comp_unit, // compilation unit
block, // lexical block
- namespace // C++ namespace
+ namespace, // C++ namespace
+ variant_part, // a variant part of a structure
+ variant // a member of a variant part of a structure
}
enum TypeClass {
diff --git a/plugins/org.eclipse.tcf.debug.ui/src/org/eclipse/tcf/internal/debug/ui/model/TCFChildrenSubExpressions.java b/plugins/org.eclipse.tcf.debug.ui/src/org/eclipse/tcf/internal/debug/ui/model/TCFChildrenSubExpressions.java
index 44df1ca74..8c1848e59 100644
--- a/plugins/org.eclipse.tcf.debug.ui/src/org/eclipse/tcf/internal/debug/ui/model/TCFChildrenSubExpressions.java
+++ b/plugins/org.eclipse.tcf.debug.ui/src/org/eclipse/tcf/internal/debug/ui/model/TCFChildrenSubExpressions.java
@@ -104,15 +104,22 @@ public class TCFChildrenSubExpressions extends TCFChildren {
else {
ISymbols.Symbol sym_data = sym_cache.getData();
if (sym_data == null) continue;
- if (sym_data.getSymbolClass() != ISymbols.SymbolClass.reference) continue;
- if (sym_data.getFlag(ISymbols.SYM_FLAG_ARTIFICIAL)) continue;
- if (sym_data.getName() == null && !sym_data.getFlag(ISymbols.SYM_FLAG_INHERITANCE)) {
- if (!findFields(sym_data, map, deref)) return false;
- }
- else {
- TCFNodeExpression n = getField(id, deref);
- n.setSortPosition(map.size());
- map.put(n.id, n);
+ switch (sym_data.getSymbolClass()) {
+ case reference:
+ case variant_part:
+ case variant:
+ if (sym_data.getFlag(ISymbols.SYM_FLAG_ARTIFICIAL)) continue;
+ if (sym_data.getName() == null && !sym_data.getFlag(ISymbols.SYM_FLAG_INHERITANCE)) {
+ if (!findFields(sym_data, map, deref)) return false;
+ }
+ else {
+ TCFNodeExpression n = getField(id, deref);
+ n.setSortPosition(map.size());
+ map.put(n.id, n);
+ }
+ break;
+ default:
+ break;
}
}
}

Back to the top