/*******************************************************************************
* Copyright (c) 2013, 2015 QNX Software Systems 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:
* Andrew Eidsness - Initial implementation
*******************************************************************************/
package org.eclipse.cdt.core.dom.ast.tag;
import org.eclipse.cdt.core.dom.ast.IASTName;
import org.eclipse.cdt.core.dom.ast.IBinding;
/**
* Implementations are contributed with the org.eclipse.cdt.core.tagger extension-point.
* The implementation is responsible for populating the tag's data using a given input binding.
*
* @see #process(ITagWriter, IBinding, IASTName)
* @since 5.5
*/
public interface IBindingTagger {
/**
* Examines the given input binding to decide if a tag should be created. Use the given
* tagWriter to create data if needed. Return the tag if one was created and null otherwise.
* A tagger (as identified by it's unique id string) is allowed to create only one tag for each
* binding.
*
* @param tagWriter
* the writer to use for creating new tags
* @param binding
* the binding to examine when populating the tag (if needed)
* @param ast
* the AST name from which the binding was created
* @return the tag if one was created and null otherwise
*/
public ITag process(ITagWriter tagWriter, IBinding binding, IASTName ast);
}