/*
* Mibble MIB Parser (www.mibble.org)
*
* See LICENSE.txt for licensing information.
*
* Copyright (c) 2004-2017 Per Cederberg. All rights reserved.
*/
package net.percederberg.mibble;
/**
* A MIB symbol. This is the base class for all symbols in a MIB file.
* Each symbol is typically identified by it's name, which must be
* unique within the MIB file. All symbols also have a data type.
*
* @author Per Cederberg
* @version 2.10
* @since 2.0
*/
public abstract class MibSymbol {
/**
* The MIB file reference.
*/
private MibFileRef fileRef;
/**
* The MIB containing this symbol.
*/
private Mib mib;
/**
* The symbol name.
*/
private String name;
/**
* The symbol comment.
*/
private String comment;
/**
* Creates a new symbol with the specified name. The symbol will
* also be added to the MIB file.
*
* @param fileRef the MIB file reference
* @param mib the symbol MIB file
* @param name the symbol name
*
* @since 2.2
*/
MibSymbol(MibFileRef fileRef, Mib mib, String name) {
this.fileRef = fileRef;
this.mib = mib;
this.name = name;
if (mib != null) {
mib.addSymbol(this);
}
}
/**
* Initializes the MIB symbol. This will remove all levels of
* indirection present, such as references to types or values. No
* information is lost by this operation. This method may modify
* this object as a side-effect.<p>
*
* <strong>NOTE:</strong> This is an internal method that should
* only be called by the MIB loader.
*
* @param log the MIB loader log
*
* @throws MibException if an error was encountered during the
* initialization
*/
public abstract void initialize(MibLoaderLog log) throws MibException;
/**
* Clears and prepares this MIB symbol for garbage collection.
* This method will recursively clear any associated types or
* values, making sure that no data structures references this
* symbol.
*/
abstract void clear();
/**
* Returns the MIB file reference.
*
* <strong>NOTE:</strong> This is an internal method that is used
* for extracting MIB source text.
*
* @return the MIB file reference
*/
public MibFileRef getFileRef() {
return fileRef;
}
/**
* Returns the file location.
*
* @return the file location
*
* @deprecated Use the getFileRef() method instead.
*/
public FileLocation getLocation() {
return fileRef;
}
/**
* Returns the symbol MIB file. This is the MIB file where the
* symbol is defined.
*
* @return the symbol MIB file
*
* @since 2.2
*/
public Mib getMib() {
return mib;
}
/**
* Returns the symbol name.
*
* @return the symbol name
*/
public String getName() {
return name;
}
/**
* Returns the unparsed input MIB text.
*
* @return the raw MIB file text
*
* @since 2.10
*/
public String getText() {
return mib.getText(fileRef);
}
/**
* Returns the symbol comment.
*
* @return the symbol comment, or
* null if no comment was set
*
* @since 2.6
*/
public String getComment() {
return comment;
}
/**
* Sets the symbol comment.
*
* @param comment the symbol comment
*
* @since 2.6
*/
void setComment(String comment) {
this.comment = comment;
}
}