All Downloads are FREE. Search and download functionalities are using the official Maven repository.

main.shark.HeapField.kt Maven / Gradle / Ivy

There is a newer version: 3.0-alpha-8
Show newest version
package shark

import shark.HeapObject.HeapClass
import shark.HeapObject.HeapInstance
import shark.HeapObject.HeapObjectArray
import shark.HeapObject.HeapPrimitiveArray

/**
 * Represents a static field or an instance field.
 */
class HeapField(
  /**
   * The class this field was declared in.
   */
  val declaringClass: HeapClass,
  /**
   * Name of the field
   */
  val name: String,
  /**
   * Value of the field. Also see shorthands [valueAsClass], [valueAsInstance],
   * [valueAsObjectArray], [valueAsPrimitiveArray].
   */
  val value: HeapValue
) {

  /**
   * Return a [HeapClass] is [value] references a class, and null otherwise.
   */
  val valueAsClass: HeapClass?
    get() = value.asObject?.asClass

  /**
   * Return a [HeapInstance] is [value] references an instance, and null otherwise.
   */
  val valueAsInstance: HeapInstance?
    get() = value.asObject?.asInstance

  /**
   * Return a [HeapObjectArray] is [value] references an object array, and null otherwise.
   */
  val valueAsObjectArray: HeapObjectArray?
    get() = value.asObject?.asObjectArray

  /**
   * Return a [HeapPrimitiveArray] is [value] references a primitive array, and null
   * otherwise.
   */
  val valueAsPrimitiveArray: HeapPrimitiveArray?
    get() = value.asObject?.asPrimitiveArray
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy