TypeReference (Mibble 2.9.4 Documentation)
Date: 2016-09-27

net.percederberg.mibble.type

## Class TypeReference

- java.lang.Object
- - net.percederberg.mibble.MibType
  - - net.percederberg.mibble.type.TypeReference

- All Implemented Interfaces:
    MibContext

      public class TypeReference
      extends MibType
      implements MibContext

  A reference to a type symbol.

  NOTE: This class is used internally during the MIB parsing only. After loading a MIB file successfully, all type references will have been resolved to other MIB types. Do NOT use or reference this class.

  Since:
    2.0

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `TypeReference(FileLocation location, MibContext context, java.lang.String name)` Creates a new type reference.
    `TypeReference(FileLocation location, MibContext context, java.lang.String name, java.util.ArrayList values)` Creates a new type reference.
    `TypeReference(FileLocation location, MibContext context, java.lang.String name, Constraint constraint)` Creates a new type reference.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `MibSymbol` | `findSymbol(java.lang.String name, boolean expanded)` Searches for a named MIB symbol.
    `FileLocation` | `getLocation()` Returns the file containing the reference.
    `MibSymbol` | `getSymbol()` Returns the referenced symbol.
    `MibType` | `initialize(MibSymbol symbol, MibLoaderLog log)` Initializes the MIB type.
    `boolean` | `isCompatible(MibValue value)` Checks if the specified value is compatible with this type.
    `void` | `setTag(boolean implicit, MibTypeTag tag)` Sets the type tag.

    - ### Methods inherited from class net.percederberg.mibble.MibType

      `createReference, createReference, createReference, getComment, getName, getReferenceSymbol, getTag, hasReferenceTo, hasReferenceTo, hasTag, hasTag, isPrimitive, setReferenceSymbol, toString`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Constructor Detail

    - #### TypeReference

          public TypeReference(FileLocation location,
                               MibContext context,
                               java.lang.String name)

      Creates a new type reference.
      Parameters:
        `location` - the reference location
        `context` - the reference context
        `name` - the reference name

    - #### TypeReference

          public TypeReference(FileLocation location,
                               MibContext context,
                               java.lang.String name,
                               Constraint constraint)

      Creates a new type reference.
      Parameters:
        `location` - the reference location
        `context` - the reference context
        `name` - the reference name
        `constraint` - the additional type constraint

    - #### TypeReference

          public TypeReference(FileLocation location,
                               MibContext context,
                               java.lang.String name,
                               java.util.ArrayList values)

      Creates a new type reference.
      Parameters:
        `location` - the reference location
        `context` - the reference context
        `name` - the reference name
        `values` - the additional defined symbols

  - ### Method Detail

    - #### initialize

          public MibType initialize(MibSymbol symbol,
                                    MibLoaderLog log)
                             throws MibException

      Initializes the MIB type. 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, and will return the basic type.

      NOTE: This is an internal method that should only be called by the MIB loader.

      Specified by:
        `initialize` in class `MibType`
      Parameters:
        `symbol` - the MIB symbol containing this type
        `log` - the MIB loader log
      Returns:
        the basic MIB type
      Throws:
        `MibException` - if an error was encountered during the initialization
      Since:
        2.2

    - #### getLocation

          public FileLocation getLocation()

      Returns the file containing the reference.
      Returns:
        the file containing the reference

    - #### getSymbol

          public MibSymbol getSymbol()

      Returns the referenced symbol.
      Returns:
        the referenced symbol

    - #### isCompatible

          public boolean isCompatible(MibValue value)

      Checks if the specified value is compatible with this type. This metod will always return false for referenced types.
      Specified by:
        `isCompatible` in class `MibType`
      Parameters:
        `value` - the value to check
      Returns:
        true if the value is compatible, or false otherwise

    - #### findSymbol

          public MibSymbol findSymbol(java.lang.String name,
                                      boolean expanded)

      Searches for a named MIB symbol. This method may search outside the normal (or strict) scope, thereby allowing a form of relaxed search. Note that the results from the normal and expanded search may not be identical, due to the context chaining and the same symbol name appearing in various contexts. This method checks the referenced type for a MibContext implementation.

      NOTE: This is an internal method that should only be called by the MIB loader.

      Specified by:
        `findSymbol` in interface `MibContext`
      Parameters:
        `name` - the symbol name
        `expanded` - the expanded scope flag
      Returns:
        the MIB symbol, or null if not found
      Since:
        2.4

    - #### setTag

          public void setTag(boolean implicit,
                             MibTypeTag tag)

      Sets the type tag. This method will keep the type tag stored until the type reference is resolved.
      Overrides:
        `setTag` in class `MibType`
      Parameters:
        `implicit` - the implicit inheritance flag
        `tag` - the new type tag
      Since:
        2.2