Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/ctagsindexer/CTagEntry.java')
-rw-r--r--core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/ctagsindexer/CTagEntry.java286
1 files changed, 0 insertions, 286 deletions
diff --git a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/ctagsindexer/CTagEntry.java b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/ctagsindexer/CTagEntry.java
deleted file mode 100644
index a099ab25f85..00000000000
--- a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/ctagsindexer/CTagEntry.java
+++ /dev/null
@@ -1,286 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.internal.core.index.ctagsindexer;
-
-import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.StringTokenizer;
-
-import org.eclipse.cdt.internal.core.index.FunctionEntry;
-import org.eclipse.cdt.internal.core.index.IIndex;
-import org.eclipse.cdt.internal.core.index.IIndexerOutput;
-import org.eclipse.cdt.internal.core.index.INamedEntry;
-import org.eclipse.cdt.internal.core.index.NamedEntry;
-import org.eclipse.cdt.internal.core.index.TypeEntry;
-import org.eclipse.cdt.internal.core.index.cindexstorage.ICIndexStorageConstants;
-import org.eclipse.cdt.internal.core.search.matching.CSearchPattern;
-
-
-class CTagEntry{
- private final CTagsConsoleParser parser;
- String elementName;
- String fileName;
- int lineNumber;
-
- /* Miscellaneous extension fields */
- HashMap tagExtensionField;
-
- String line;
-
- public CTagEntry(CTagsConsoleParser parser, String line) {
- this.line = line;
- this.parser = parser;
- elementName = ""; //$NON-NLS-1$
- fileName =""; //$NON-NLS-1$
- lineNumber = 0;
- tagExtensionField = new HashMap();
- parse();
- }
-
- void parse () {
- String delim = CTagsConsoleParser.TAB_SEPARATOR;
- StringTokenizer st = new StringTokenizer(line, delim);
- for (int state = 0; st.hasMoreTokens(); state++) {
- String token = st.nextToken();
-
- switch (state) {
- case 0: // ELEMENT_NAME:
- elementName = token;
- break;
-
- case 1: // FILE_NAME:
- fileName = token;
- break;
-
- case 2: // LINE NUMBER;
- try {
- String sub = token.trim();
- int i = sub.indexOf(';');
- String num = sub.substring(0, i);
- if (Character.isDigit(num.charAt(0))) {
- lineNumber = Integer.parseInt(num);
- }
- } catch (NumberFormatException e) {
- } catch (IndexOutOfBoundsException e) {
- }
- break;
-
- default: // EXTENSION_FIELDS:
- int i = token.indexOf(':');
- if (i != -1) {
- String key = token.substring(0, i);
- String value = token.substring(i + 1);
- tagExtensionField.put(key, value);
- }
- break;
- }
- }
- }
-
- /**
- * @param tempTag
- * @return
- */
- public char[][] getQualifiedName() {
- char[][] fullName = null;
- String name = null;
- String[] types = {CTagsConsoleParser.NAMESPACE, CTagsConsoleParser.CLASS, CTagsConsoleParser.STRUCT, CTagsConsoleParser.UNION, CTagsConsoleParser.FUNCTION, CTagsConsoleParser.ENUM};
-
- for (int i=0; i<types.length; i++){
- //look for name
- name = (String) tagExtensionField.get(types[i]);
- if (name != null)
- break;
- }
-
- if (name != null){
- StringTokenizer st = new StringTokenizer(name, CTagsConsoleParser.COLONCOLON);
- fullName = new char[st.countTokens() + 1][];
- int i=0;
- while (st.hasMoreTokens()){
- fullName[i] = st.nextToken().toCharArray();
- i++;
- }
- fullName[i] = elementName.toCharArray();
- } else {
- fullName = new char[1][];
- fullName[0] = elementName.toCharArray();
- }
-
- return fullName;
- }
-
- public void addTagToIndexOutput(int fileNum, IIndexerOutput output){
-
- String kind = (String) tagExtensionField.get(CTagsConsoleParser.KIND);
-
- if (kind == null)
- return;
-
- char[][] fullName = getQualifiedName();
-
- if (kind.equals(CTagsConsoleParser.CLASS)){
- TypeEntry typeEntry = new TypeEntry(IIndex.TYPE_CLASS,IIndex.DEFINITION, fullName, getModifiers(), fileNum);
- typeEntry.setNameOffset(lineNumber, 1, IIndex.LINE);
- typeEntry.setBaseTypes(getInherits());
- typeEntry.serialize(output);
- } else if (kind.equals(CTagsConsoleParser.MACRO)){
- NamedEntry namedEntry = new NamedEntry(IIndex.MACRO, IIndex.DECLARATION,fullName,getModifiers(),fileNum);
- namedEntry.setNameOffset(lineNumber, 1, IIndex.LINE);
- namedEntry.serialize(output);
- } else if (kind.equals(CTagsConsoleParser.ENUMERATOR)){
- NamedEntry namedEntry = new NamedEntry(IIndex.ENUMTOR, IIndex.DECLARATION,fullName,getModifiers(),fileNum);
- namedEntry.setNameOffset(lineNumber, 1, IIndex.LINE);
- namedEntry.serialize(output);
- } else if (kind.equals(CTagsConsoleParser.FUNCTION)){
- //Both methods and functions are reported back as functions - methods can be distinguished
- //from functions by the presence of a class field in the type entry
- String isMethod = (String) tagExtensionField.get(CTagsConsoleParser.CLASS);
- if (isMethod != null){
- //method
- FunctionEntry funEntry = new FunctionEntry(IIndex.METHOD, IIndex.DEFINITION,fullName,getModifiers(),fileNum);
- funEntry.setSignature(getFunctionSignature());
- funEntry.setNameOffset(lineNumber, 1, IIndex.LINE);
- funEntry.serialize(output);
- } else {
- //function
- FunctionEntry funEntry = new FunctionEntry(IIndex.FUNCTION, IIndex.DEFINITION,fullName,getModifiers(), fileNum);
- funEntry.setSignature(getFunctionSignature());
- funEntry.setNameOffset(lineNumber, 1, IIndex.LINE);
- funEntry.serialize(output);
- }
- } else if (kind.equals(CTagsConsoleParser.ENUM)){
- TypeEntry typeEntry = new TypeEntry(IIndex.TYPE_ENUM ,IIndex.DECLARATION, fullName, getModifiers(), fileNum);
- typeEntry.setNameOffset(lineNumber, 1, IIndex.LINE);
- typeEntry.serialize(output);
- } else if (kind.equals(CTagsConsoleParser.MEMBER)){
- NamedEntry namedEntry = new NamedEntry(IIndex.FIELD, IIndex.DEFINITION,fullName,getModifiers(),fileNum);
- namedEntry.setNameOffset(lineNumber, 1, IIndex.LINE);
- namedEntry.serialize(output);
- } else if (kind.equals(CTagsConsoleParser.NAMESPACE)){
- NamedEntry namedEntry = new NamedEntry(IIndex.NAMESPACE, IIndex.DEFINITION,fullName,getModifiers(),fileNum);
- namedEntry.setNameOffset(lineNumber, 1, IIndex.LINE);
- namedEntry.serialize(output);
- } else if (kind.equals(CTagsConsoleParser.PROTOTYPE)){
- //Both methods and functions are reported back as functions - methods can be distinguished
- //from functions by the presence of a class field in the type entry
- String isMethod = (String) tagExtensionField.get(CTagsConsoleParser.CLASS);
- if (isMethod != null){
- //method
- FunctionEntry funEntry = new FunctionEntry(IIndex.METHOD, IIndex.DECLARATION,fullName,getModifiers(), fileNum);
- funEntry.setSignature(getFunctionSignature());
- funEntry.setNameOffset(lineNumber, 1, IIndex.LINE);
- funEntry.serialize(output);
- } else {
- //function
- FunctionEntry funEntry = new FunctionEntry(IIndex.FUNCTION, IIndex.DECLARATION,fullName,getModifiers(),fileNum);
- funEntry.setSignature(getFunctionSignature());
- funEntry.setNameOffset(lineNumber, 1, IIndex.LINE);
- funEntry.serialize(output);
- }
- } else if (kind.equals(CTagsConsoleParser.STRUCT)){
- TypeEntry typeEntry = new TypeEntry(IIndex.TYPE_STRUCT,IIndex.DEFINITION, fullName, getModifiers(), fileNum);
- typeEntry.setNameOffset(lineNumber, 1, IIndex.LINE);
- typeEntry.setBaseTypes(getInherits());
- typeEntry.serialize(output);
- } else if (kind.equals(CTagsConsoleParser.TYPEDEF)){
- TypeEntry typeEntry = new TypeEntry(IIndex.TYPE_TYPEDEF,IIndex.DECLARATION, fullName, getModifiers(), fileNum);
- typeEntry.setNameOffset(lineNumber, 1, IIndex.LINE);
- typeEntry.serialize(output);
- } else if (kind.equals(CTagsConsoleParser.UNION)){
- TypeEntry typeEntry = new TypeEntry(IIndex.TYPE_UNION,IIndex.DEFINITION, fullName, getModifiers(), fileNum);
- typeEntry.setNameOffset(lineNumber, 1, IIndex.LINE);
- typeEntry.serialize(output);
- } else if (kind.equals(CTagsConsoleParser.VARIABLE)){
- NamedEntry namedEntry = new NamedEntry(IIndex.VAR,IIndex.DECLARATION, fullName, getModifiers(), fileNum);
- namedEntry.setNameOffset(lineNumber, 1, IIndex.LINE);
- namedEntry.serialize(output);
- } else if (kind.equals(CTagsConsoleParser.EXTERNALVAR)){
- //Have to specifically set external bit flag in modifier;
- int modifiers = getModifiers();
- modifiers |= 1 << 6;
- NamedEntry namedEntry = new NamedEntry(IIndex.VAR,IIndex.DECLARATION, fullName, modifiers, fileNum);
- namedEntry.setNameOffset(lineNumber, 1, IIndex.LINE);
- namedEntry.serialize(output);
- }
- }
-
- private char[][] getFunctionSignature() {
- String signature = (String) tagExtensionField.get(CTagsConsoleParser.SIGNATURE);
-
- //Under Exuberant CTags 5.5.4, in the C parsing mode: a function that doesn't take any parameters
- //will have no signature string (resulting in null)
- if (signature == null ||
- signature.equals("()")){ //$NON-NLS-1$
- char[][] voidSignature = new char[1][];
- voidSignature[0] = "void".toCharArray(); //$NON-NLS-1$
- return voidSignature;
- }
- return CSearchPattern.scanForParameters(signature);
- }
-
- private int getModifiers() {
-
- int modifier=0;
-
- //Check access modifier
- String access = (String) tagExtensionField.get(CTagsConsoleParser.ACCESS);
-
- if (access != null){
- for (int i=0; i<ICIndexStorageConstants.allSpecifiers.length; i++){
- if (access.equals(ICIndexStorageConstants.allSpecifiers[i])){
- int tempNum = 1 << i;
- modifier |= tempNum;
- break;
- }
- }
- }
-
- //Check implementation modifier
- String implementation=(String) tagExtensionField.get(CTagsConsoleParser.IMPLEMENTATION);
-
- if (implementation != null){
- for (int i=0; i<ICIndexStorageConstants.allSpecifiers.length; i++){
- if (implementation.equals(ICIndexStorageConstants.allSpecifiers[i])){
- int tempNum = 1 << i;
- modifier |= tempNum;
- }
- }
- }
-
- return modifier;
- }
-
- private INamedEntry[] getInherits() {
-
- //Check inherits modifier
- String access = (String) tagExtensionField.get(CTagsConsoleParser.INHERITS);
-
- if (access != null){
- StringTokenizer tokenizer = new StringTokenizer(access, ","); //$NON-NLS-1$
- LinkedList list = new LinkedList();
- while (tokenizer.hasMoreTokens()){
- list.add(tokenizer.nextToken());
- }
-
- String[] inherits = new String[0];
- inherits = (String []) list.toArray(inherits);
- INamedEntry[] inherits2 = new INamedEntry[inherits.length];
- for (int i=0; i<inherits.length; i++){
- NamedEntry tempEntry = new NamedEntry(IIndex.FIELD, IIndex.REFERENCE, inherits[i], 1, 1);
- inherits2[i] = tempEntry;
- }
- return inherits2;
- }
-
- return null;
- }
-}

Back to the top