blob: 10451f61822878c339995d1d779faa135cbf915c [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2003 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Common Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/cpl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.debug.internal.core.stringsubstitution;
import org.eclipse.core.runtime.CoreException;
/**
* Regisitry for string variables and contexts.
*
* @since 3.0
*/
public interface IStringVariableManager {
/**
* Returns all registered variables.
*
* @return a collection of all registered variables
*/
public IStringVariable[] getVariables();
/**
* Returns all registered value variables.
*
* @return a collection of all registered value variables
*/
public IValueVariable[] getValueVariables();
/**
* Returns all registered context variables.
*
* @return a collection of all registered context variables
*/
public IContextVariable[] getContextVariables();
/**
* Recursively resolves and replaces all variable references in the given
* expression with their corresponding values.
*
* @param expression expression referencing variables
* @return expression with variable references replaced with variable values
* @throws CoreException if unable to resolve the value of one or more variables
*/
public String performStringSubstitution(String expression) throws CoreException;
/**
* Returns a new value variable with the given name and description.
*
* @param name variable name, cannot be <code>null</code>
* @param description variable description, possibly <code>null</code>
* @return a new variable
* @exception CoreException if a variable already exists with the given name
*/
public IValueVariable newVariable(String name, String description) throws CoreException;
/**
* Adds the given variables to the variable registry.
*
* @param variables the variables to add
* @throws CoreException if one or more variables to add has a name collision with
* an existing variable
*/
public void addVariables(IValueVariable[] variables) throws CoreException;
/**
* Removes the given variables from the registry. Has no effect for unregistered
* variables.
*
* @param variables variables to remove
*/
public void removeVariables(IValueVariable[] variables);
/**
* Returns the context with the given identifier or <code>null</code> if none.
*
* @param id context identifier
* @return the context with the given identifier of <code>null</code> if none
*/
public IStringVariableContext getContext(String id);
/**
* Sets the variable context for the given identifier. A variable
* context of <code>null</code> indicates that the context is no longer
* defined.
*
* @param id context identifier
* @param context variable context
*/
public void setContext(String id, IStringVariableContext context);
}