コード例 #1
0
ファイル: AsmModelBuilder.java プロジェクト: zhaog/cdt
 protected void createLabel(CElement parent, IToken token) throws CModelException {
   String labelName = token.getImage();
   int index = getGlobalLabelIndex(labelName);
   boolean global = index > 0;
   if (!global) {
     index = registerLabel(labelName);
   }
   AsmLabel label = new AsmLabel(parent, labelName, global, index);
   SourceManipulationInfo labelInfo = label.getSourceManipulationInfo();
   labelInfo.setIdPos(token.getOffset(), token.getLength());
   labelInfo.setPos(token.getOffset(), token.getLength());
   if (fLastLabel != null) {
     fixupLastLabel();
   }
   if (global) {
     // new global label
     if (fLastGlobalLabel != null) {
       fixupLastGlobalLabel();
     }
     fLastGlobalLabel = label;
   } else {
     // add under global label if available
     if (fLastGlobalLabel != null) {
       parent = fLastGlobalLabel;
     }
   }
   fLastLabel = label;
   parent.addChild(label);
 }
コード例 #2
0
ファイル: AsmModelBuilder.java プロジェクト: zhaog/cdt
 private void parsePPDefine(CElement parent) throws CModelException, OffsetLimitReachedException {
   int startOffset = fLexer.currentToken().getOffset();
   int nameStart = 0;
   int nameEnd = 0;
   String name = null;
   IToken t = nextToken();
   if (t.getType() == IToken.tIDENTIFIER) {
     nameStart = fLexer.currentToken().getOffset();
     nameEnd = fLexer.currentToken().getEndOffset();
     name = t.getImage();
   }
   if (name == null) {
     return;
   }
   int endOffset = skipToNewLine();
   Macro macro = new Macro(parent, name);
   SourceManipulationInfo macroInfo = macro.getSourceManipulationInfo();
   macroInfo.setIdPos(nameStart, nameEnd - nameStart);
   macroInfo.setPos(startOffset, endOffset - startOffset);
   parent.addChild(macro);
 }
コード例 #3
0
ファイル: AsmModelBuilder.java プロジェクト: zhaog/cdt
 private void parsePPInclude(CElement parent) throws CModelException, OffsetLimitReachedException {
   int startOffset = fLexer.currentToken().getOffset();
   int nameStart = 0;
   int nameEnd = 0;
   String name = null;
   boolean isStandard = false;
   IToken t = nextToken();
   switch (t.getType()) {
     case IToken.tLT:
       nameStart = fLexer.currentToken().getOffset();
       do {
         t = nextToken();
       } while (t.getType() != IToken.tGT);
       nameEnd = fLexer.currentToken().getEndOffset();
       name = new String(fLexer.getInputChars(nameStart + 1, nameEnd - 1));
       isStandard = true;
       break;
     case IToken.tSTRING:
       nameStart = fLexer.currentToken().getOffset();
       nameEnd = fLexer.currentToken().getEndOffset();
       name = t.getImage().substring(1, t.getLength() - 1);
       break;
     case IToken.tIDENTIFIER:
       nameStart = fLexer.currentToken().getOffset();
       nameEnd = fLexer.currentToken().getEndOffset();
       name = t.getImage();
       break;
     default:
   }
   if (name == null) {
     return;
   }
   int endOffset = skipToNewLine();
   Include include = new Include(parent, name, isStandard);
   SourceManipulationInfo includeInfo = include.getSourceManipulationInfo();
   includeInfo.setIdPos(nameStart, nameEnd - nameStart);
   includeInfo.setPos(startOffset, endOffset - startOffset);
   parent.addChild(include);
 }
コード例 #4
0
 public static boolean equals(IFunctionDeclaration lhs, IFunctionDeclaration rhs) {
   return CElement.equals(lhs, rhs)
       && Util.equalArraysOrNull(lhs.getParameterTypes(), rhs.getParameterTypes())
       && lhs.getReturnType().equals(rhs.getReturnType());
 }