edu.stanford.nlp.ling.LabelFactory Maven / Gradle / Ivy
package edu.stanford.nlp.ling;
/**
* A LabelFactory
object acts as a factory for creating
* objects of class Label
, or some descendant class.
* It can also make Labels from Strings, optionally with options.
*
* @author Christopher Manning
* @version 2000/12/25
*/
public interface LabelFactory {
/**
* Make a new label with this String
as the
* value
.
* Any other fields of the label would normally be null
.
*
* @param labelStr The String that will be used for value
* @return The new Label
*/
public Label newLabel(String labelStr);
/**
* Make a new label with this String
as the value, and
* the type determined in an implementation-dependent way from the
* options value.
*
* @param labelStr The String that will be used for value
* @param options May determine what kind of label is created
* @return The new Label
*/
public Label newLabel(String labelStr, int options);
/**
* Make a new label. The String argument will be decomposed into
* multiple fields in an implementing class-specific way, in
* accordance with the class's setFromString() method.
*
* @param encodedLabelStr The String that will be used for labelling the
* object (by decoding it into parts)
* @return The new Label
*/
public Label newLabelFromString(String encodedLabelStr);
/**
* Create a new Label
, where the label is formed from
* the Label
object passed in. The new Label is
* guaranteed to at least copy the value()
of the
* source label (if non-null); it may also copy other components
* (this is implementation-specific). However, if oldLabel is of
* the same type as is produced by the factory, then the whole
* label should be cloned, so that the returnedLabel.equals(oldLabel).
* Implementation note: That last sentence isn't true of all
* current implementations (e.g., WordTag), but we should make it
* so that it is true!
*
* @param oldLabel The Label that the new label is being created from
* @return The new label of a particular type
*/
public Label newLabel(Label oldLabel);
}