private HashMap<String, HashMap<String, IVariable>> getModuleDescriptors( IVariable[] variables, NesCVariableNameParser varPars) { HashMap<String, HashMap<String, IVariable>> res = new HashMap<String, HashMap<String, IVariable>>(); for (IVariable var : variables) { try { if (varPars.isNesCVariable(var.getName())) { String name = var.getName(); String desc = varPars.getModuleName(name); String varName = varPars.getVariableName(name); if (desc != null) { HashMap<String, IVariable> modVars = res.get(desc); if (modVars == null) { modVars = new HashMap<String, IVariable>(); res.put(desc, modVars); } modVars.put(varName, var); } } } catch (DebugException e) { TinyOSDebugPlugin.getDefault().log("Exception while extracting module descriptors.", e); } } return res; }
private void addVariable(IVariable var, NesCVariableNameParser varPars, TreeParent parent) { try { IValue val = var.getValue(); String cVarName = var.getName(); String name = varPars.getVariableName(cVarName); TreeNode node = parent.hasChild(name); if (val.hasVariables()) { // var consists of multiple inner variables... (like for example a struct) if (node == null) { node = new TreeParent(name); node.setData(var); parent.addChild(node); } for (IVariable innerVar : val.getVariables()) { addVariable(innerVar, varPars, (TreeParent) node); } } else { if (node == null) { node = new TreeParent(name); // Leaf node.setData(var); parent.addChild(node); } } } catch (DebugException e) { TinyOSDebugPlugin.getDefault().log("Exception while adding variable to tree.", e); } }
public String toString() { String res = getName(); if (data instanceof IVariable) { IVariable var = (IVariable) data; try { String value = var.getValue().getValueString(); res += " " + ASSIGNMENT + " " + value; } catch (DebugException e) { TinyOSDebugPlugin.getDefault().log("Could not get value from variable", e); } } return res; }
private void addNescVariables(DebugEvent[] events) { if (m_isTerminated) return; for (DebugEvent event : events) { Object element = event.getSource(); if (element instanceof IAdaptable) { IAdaptable adaptable = (IAdaptable) element; ILaunch launch = (ILaunch) adaptable.getAdapter(ILaunch.class); NesCVariableNameParser varPars = new NesCVariableNameParser(new NesCSeparatorFromCDTLaunch(launch)); IVariable[] variables = m_varMan.getRegisteredVariables(adaptable); if (variables != null) { // Save the name of all registered variables Vector<String> existingVars = new Vector<String>(); for (IVariable var : variables) { try { existingVars.add(var.getName()); } catch (DebugException ex) { TinyOSDebugPlugin.getDefault() .log("Exception while adding variable: " + var.toString(), ex); } } // Compile a list of all potential NescC Variables that are not yet registered Vector<IVariableDescriptor> descriptors = new Vector<IVariableDescriptor>(); for (IVariableDescriptor globDesc : m_varMan.getAvailableVariableDescriptors(adaptable)) { if (varPars.isNesCVariable(globDesc.getName()) && !existingVars.contains(globDesc.getName())) { descriptors.add(globDesc); } } // Add all NesC variables if (descriptors.size() > 0) { descriptors.addAll(Arrays.asList(m_varMan.getRegisteredVariableDescriptors(adaptable))); IVariableDescriptor[] array = (IVariableDescriptor[]) descriptors.toArray(new IVariableDescriptor[descriptors.size()]); m_varMan.registerVariables(array, adaptable); } } } } }
private void populate(Object o) { if (o instanceof IStackFrame) { IStackFrame f = (IStackFrame) o; NesCVariableNameParser varPars = new NesCVariableNameParser( new NesCSeparatorFromCDTLaunch(f.getDebugTarget().getLaunch())); try { if (f.hasVariables()) { IVariable[] vars = f.getVariables(); populate(vars, varPars); } } catch (DebugException e) { TinyOSDebugPlugin.getDefault().log("Exception while populating viewer.", e); } } else { clear(); } }
public Image getImage(Object obj) { if (obj instanceof TreeNode) { TreeNode to = (TreeNode) obj; IVariable var = (IVariable) to.getAdapter(IVariable.class); if (var != null) { try { if (var.getValue().hasVariables()) { return NesCDebugIcons.get(NesCDebugIcons.ICON_VAR_AGGR); } else { return NesCDebugIcons.get(NesCDebugIcons.ICON_VAR_SIMPLE); } } catch (DebugException e) { TinyOSDebugPlugin.getDefault().log("Exception while getting image.", e); } } else if (to.getAdapter(IModuleDescriptor.class) != null) { return NesCDebugIcons.get(NesCDebugIcons.ICON_COMPONENT); } } String imageKey = ISharedImages.IMG_OBJ_ELEMENT; return PlatformUI.getWorkbench().getSharedImages().getImage(imageKey); }