/*******************************************************************************
* Copyright (c) 2005, 2007 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 Corporation - initial API and implementation
* Anton Leherbauer (Wind River Systems)
*******************************************************************************/
package org.eclipse.cdt.core.model;
/**
* Interface supported by model builders for contributed languages.
*
* Model builders parse a <code>TranslationUnit</code> (i.e., a file) and
* return a hierarchy of <code>ICElement</code>s which represent the high-level
* structure of that file (what modules, classes, functions, and similar
* constructs are contained in it, and on what line(s) the definition occurs).
*
* The translation unit to parse and the initial element map are given to
* {@link ILanguage#createModelBuilder}, which will presumably
* pass that information on to the model builder constructor.
*
* @author Jeff Overbey
*/
public interface IContributedModelBuilder {
/**
* A factory to create a model builder for a translation unit.
*
* @since 5.0
*/
public interface Factory {
/**
* Create a model builder for the given translation unit.
*
* @param tu the translation unit
* @return the model builder or <code>null</code> if no model builder could be created
*/
IContributedModelBuilder create(ITranslationUnit tu);
}
/**
* Callback used when a <code>TranslationUnit</code> needs to be parsed.
*
* The translation unit to parse is given to
* {@link ILanguage#createModelBuilder}, which will presumably
* pass it on to the model builder constructor.
*/
public abstract void parse(boolean quickParseMode) throws Exception;
}