# TypeReference
Keywords: com.saxonica.schema.TypeReference class

## com.saxonica.schema
Class TypeReference

    java.lang.Object
      com.saxonica.schema.SchemaStructure
          com.saxonica.schema.TypeReference

All Implemented Interfaces:
  ComponentReference, Serializable, SourceLocator

    public class TypeReference

extends SchemaStructure
implements ComponentReference

A reference to a simple or complex type

See Also:
  Serialized Form

Constructor Summary
`TypeReference(int fingerprint, SchemaAwareConfiguration config, SourceLocator locator)` Creates a new Type reference

Method Summary
`int` `getFingerprint()` Get the fingerprint of the target of this reference
`int` `getSymbolSpace()` Get the symbol space of the target of this reference
`SchemaComponent` `getTarget()` Returns the type that this type reference is a reference to
`boolean` `isResolved()` Determine whether this reference has been resolved
`void` `lookForCycles(PreparedSchema schema, Stack references, ErrorListener errorListener)` This method is called to look for cycles.
`void` `setTarget(SchemaType target)`
`void` `tryToResolve(SchemaCompiler compiler)` Attempt to resolved this reference using the groups defined in a given schema.

Methods inherited from class com.saxonica.schema.SchemaStructure
`getColumnNumber, getConfiguration, getFixupStatus, getLineNumber, getPublicId, getSystemId, getValidationStatus, lookForCycles, setConfiguration, setFixupStatus, setLineNumber, setLocator, setSystemId, setValidationStatus`

Methods inherited from class java.lang.Object
`equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Methods inherited from interface com.saxonica.schema.ComponentReference
`getConfiguration`

Methods inherited from interface javax.xml.transform.SourceLocator
`getColumnNumber, getLineNumber, getPublicId, getSystemId`

Constructor Detail

### TypeReference

    public TypeReference(int fingerprint,
                         SchemaAwareConfiguration config,
                         SourceLocator locator)

  Creates a new Type reference

  Parameters:
    `fingerprint` - the Name Pool fingerprint of the name of the type being referenced
    `config` - identifies the XML Schema in which this type reference appears. May be null if the reference is in a built-in type
    `locator` - the SourceLocator identifying the location of the reference. May be null if the reference is in a built-in type

Method Detail

### isResolved

    public boolean isResolved()

  Determine whether this reference has been resolved

  Specified by:
    `isResolved` in interface `ComponentReference`

### setTarget

    public void setTarget(SchemaType target)

### getFingerprint

    public int getFingerprint()

  Description copied from interface: `ComponentReference`
  Get the fingerprint of the target of this reference

  Specified by:
    `getFingerprint` in interface `ComponentReference`

### getSymbolSpace

    public int getSymbolSpace()

  Get the symbol space of the target of this reference

  Specified by:
    `getSymbolSpace` in interface `ComponentReference`

### getTarget

    public SchemaComponent getTarget()
                              throws UnresolvedReferenceException

  Returns the type that this type reference is a reference to

  Specified by:
    `getTarget` in interface `ComponentReference`
  Returns:
    the schema component if the reference has been resolved.
  Throws:
    `UnresolvedReferenceException` - if the reference has not been resolved. Note that this is an unchecked exception.

### tryToResolve

    public void tryToResolve(SchemaCompiler compiler)

  Attempt to resolved this reference using the groups defined in a given schema. No error results if the reference cannot be resolved.

  Specified by:
    `tryToResolve` in interface `ComponentReference`
  Parameters:
    `compiler` - The compiler being used to compile the referring component. This is assumed to know about the schema containing the candidate target components for the reference. If null, the schema containing the reference is used.

### lookForCycles

    public void lookForCycles(PreparedSchema schema,
                              Stack references,
                              ErrorListener errorListener)
                       throws SchemaException

  This method is called to look for cycles. The object implementing this method is required (a) to raise an exception if the object itself appears in the list of references, (b) to add itself to the list of references, and (c) to call the lookForCycles method on all the objects that it references.

  Parameters:
    `schema` -
    `references` - A stack of objects that contain direct or indirect references to this object, and that must therefore not be referred to from this object.
    `errorListener` -
  Throws:
    `SchemaException`

Copyright (C) Michael H. Kay. All rights reserved.