/** * Searches the documentation of the function in which <code>node</code> lies. * * @param node some node or a function definition * @param information additional information about the region * @return the documentation of the function or <code>null</code> */ protected NesCDocComment getFunctionDocumentation( FunctionDefinition node, DocumentRegionInformation information) { NesCDocComment[] comments = node.getComments(); if (comments != null && comments.length > 0) return comments[comments.length - 1]; Name definitionName = node.resolveName(); if (definitionName == null) return null; String[] segments = definitionName.segments(); if (segments.length != 2) return null; NesCInterfaceReference reference = node.resolveInterface(); if (reference == null) return null; NesCInterface interfaze = reference.getRawReference(); if (interfaze == null) return null; Field base = interfaze.getField(segments[1]); if (base == null) return null; FieldModelNode baseNode = base.asNode(); if (baseNode == null) return null; NesC12DocComment nesComment = baseNode.getDocumentation(); return new NesCDocComment(0, null, nesComment.getComment(), true); }
/** * Searches documentation for <code>field</code>. * * @param field the identifier of some field * @param region additional information about the document * @return the documentation or <code>null</code> */ protected String getFieldDocumentation(Identifier field, DocumentRegionInformation region) { ASTNode node = field; while (node != null) { if (node instanceof FunctionDefinition) { FunctionDefinition definition = (FunctionDefinition) node; FieldModelNode fieldNode = definition.resolveNode(); if (fieldNode != null) { Name[] arguments = fieldNode.getArgumentNames(); if (arguments != null) { for (Name name : arguments) { if (name != null) { if (name.toIdentifier().equals(field.getName())) { NesCDocComment comment = getFunctionDocumentation(definition, region); if (comment == null) return null; return comment.getAnalysis().getParameterDescription(field.getName()); } } } } } } NesCDocComment[] comments = node.getComments(); if (comments != null) { for (int i = comments.length - 1; i >= 0; i--) { String documentation = comments[i].getAnalysis().getParameterDescription(field.getName()); if (documentation != null) return documentation; } } node = node.getParent(); } return null; }
@Override public FieldModelNode read(FieldModelNode value, IStorage storage) throws IOException { super.read(value, storage); value.delegate = FieldUtility.read(storage); return value; }