/*******************************************************************************
* Copyright (c) 2014 Red Hat, Inc.
* 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:
* Red Hat - Initial API and implementation
*******************************************************************************/
package org.eclipse.linuxtools.internal.systemtap.ui.ide.structures.nodedata;
import org.eclipse.linuxtools.systemtap.structures.TreeNode;
/**
* A structure for containing extra information of SystemTap functions.
* @since 3.0
*/
public class FunctionNodeData implements ISearchableNode, ISingleTypedNode {
static final String ID = "FunctionNodeData"; //$NON-NLS-1$
private final static String SPLIT = " - "; //$NON-NLS-1$
private final static String VOID = "void"; //$NON-NLS-1$
private final String line;
private final String type;
@Override
public boolean isRegexSearch() {
return false;
}
/**
* @return the text to search a file with for the definition of this function.
*/
@Override
public String getSearchToken() {
return line;
}
@Override
public String toString() {
return line + SPLIT + (type != null ? type : VOID);
}
/**
* @return the <code>String</code> representation of the return type of the
* node's function (<code>null</code> for void functions).
*/
@Override
public String getType() {
return type;
}
/**
* Create a new instance of function node information. (Note that the name of a function
* or parameter is stored in a {@link TreeNode}, not here.)
* @param line The original script text that defines this function.
* @param type The <code>String</code> representation of the return type of the function
* (<code>null</code> for void).
*/
public FunctionNodeData(String line, String type) {
this.line = line;
this.type = type;
}
public FunctionNodeData(String fromString) {
int splitPoint = fromString.lastIndexOf(SPLIT);
this.line = fromString.substring(0, splitPoint);
String type = fromString.substring(splitPoint + SPLIT.length());
this.type = !type.equals(VOID) ? type : null;
}
}