diff options
author | Eugene Tarassov | 2014-11-15 03:40:18 +0000 |
---|---|---|
committer | Eugene Tarassov | 2014-11-15 03:40:18 +0000 |
commit | d44cc27c9c79bc48954a751e92114b0d2f67fdae (patch) | |
tree | b41363e93dc096b233b0baa8fb3e53eedf476c6b | |
parent | 6466ab5bd573bd7bbac6fefd7f30e7440934e448 (diff) | |
download | org.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
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; } } } |