Package me.pixodro.j2cpp.core.info

Source Code of me.pixodro.j2cpp.core.info.NameInfo

package me.pixodro.j2cpp.core.info;

import java.util.ArrayList;
import java.util.List;

import org.eclipse.cdt.core.dom.ast.IASTName;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTQualifiedName;
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPNodeFactory;
import org.eclipse.jdt.core.dom.Name;
import org.eclipse.jdt.core.dom.QualifiedName;
import org.eclipse.jdt.core.dom.SimpleName;

/**
* Created with IntelliJ IDEA.
* User: bquenin
* Date: 7/15/12
* Time: 11:50 PM
* To change this template use File | Settings | File Templates.
*/
public class NameInfo {
  private static final CPPNodeFactory f = CPPNodeFactory.getDefault();

  private final IASTName name;
  private final Name javaName;

  public NameInfo(final Name javaName) {
    this.javaName = javaName;
    if (javaName.isSimpleName()) {
      name = convertSimpleName((SimpleName) javaName);
    } else if (javaName.isQualifiedName()) {
      name = convertQualifiedName((QualifiedName) javaName);
    } else {
      throw new IllegalStateException("Unsupported javaName: " + javaName);
    }
  }

  private IASTName convertSimpleName(final SimpleName simpleName) {
    return f.newName(simpleName.getIdentifier().toCharArray());
  }

  private IASTName convertQualifiedName(final QualifiedName qualifiedName) {
    final ICPPASTQualifiedName iastQualifiedName = f.newQualifiedName();
    iastQualifiedName.addName(new NameInfo(qualifiedName.getQualifier()).name);
    iastQualifiedName.addName(new NameInfo(qualifiedName.getName()).name);
    return iastQualifiedName;
  }

  public IASTName getName() {
    return name;
  }

  public List<String> tokenize() {
    final List<String> tokens = new ArrayList<String>();
    if (javaName.isQualifiedName()) {
      final QualifiedName qualifiedName = (QualifiedName) javaName;
      tokens.addAll(new NameInfo(qualifiedName.getQualifier()).tokenize());
      tokens.add(qualifiedName.getName().getIdentifier());
    } else if (javaName.isSimpleName()) {
      final SimpleName simpleName = (SimpleName) javaName;
      tokens.add(simpleName.getIdentifier());
    } else {
      throw new IllegalStateException("Unsupported name: " + javaName);
    }
    return tokens;
  }

  public String getNameAsString() {
    final List<String> tokens = tokenize();
    return tokens.get(tokens.size() - 1);
  }

}
TOP

Related Classes of me.pixodro.j2cpp.core.info.NameInfo

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.