Options
All
  • Public
  • Public/Protected
  • All
Menu

An object that behaves like a layout but does not consume space within its containing layout.

This is primarily used to obtain metadata about a member, such as a OffsetLayout that can provide data about a {@link Layout#getSpan|value-specific span}.

NOTE This is an abstract base class; you can create instances if it amuses you, but they won't support {@link ExternalLayout#isCount|isCount} or other Layout functions.

param span

initializer for {@link Layout#span|span}. The parameter can range from 1 through 6.

param [property]

initializer for {@link Layout#property|property}.

abstract

Hierarchy

Index

Constructors

constructor

Properties

Optional boundConstructor_

boundConstructor_?: any

Optional property

property?: string

span

span: number

Methods

Abstract decode

  • decode(b: Uint8Array, offset?: number): number
  • Decode from a Uint8Array into a JavaScript value.

    abstract

    Parameters

    • b: Uint8Array

      the buffer from which encoded data is read.

    • Optional offset: number

    Returns number

    • the value of the decoded data.

Abstract encode

  • encode(src: number, b: Uint8Array, offset?: number): number
  • Encode a JavaScript value into a Uint8Array.

    abstract

    Parameters

    • src: number

      the value to be encoded into the buffer. The type accepted depends on the (sub-)type of Layout.

    • b: Uint8Array

      the buffer into which encoded data will be written.

    • Optional offset: number

    Returns number

    • the number of bytes encoded, including the space skipped for internal padding, but excluding data such as {@link Sequence#count|lengths} when stored externally. This is the adjustment to offset producing the offset where data for the next layout would be written.

fromArray

  • Create an object from layout properties and an array of values.

    NOTE This function returns undefined if invoked on a layout that does not return its value as an Object. Objects are returned for things that are a Structure, which includes variant layouts if they are structures, and excludes Unions. If you want this feature for a union you must use getVariant to select the desired layout.

    Parameters

    • values: any[]

      an array of values that correspond to the default order for properties. As with {@link Layout#decode|decode} layout elements that have no property name are skipped when iterating over the array values. Only the top-level properties are assigned; arguments are not assigned to properties of contained layouts. Any unused values are ignored.

    Returns undefined | LayoutObject

getSpan

  • getSpan(b?: Uint8Array, offset?: number): number
  • Calculate the span of a specific instance of a layout.

    throws

    {RangeError} - if the length of the value cannot be determined.

    Parameters

    • Optional b: Uint8Array

      the buffer that contains an encoded instance.

    • Optional offset: number

    Returns number

    • the number of bytes covered by the layout instance. If this method is not overridden in a subclass the definition-time constant {@link Layout#span|span} will be returned.

isCount

  • isCount(): boolean
  • Return true iff the external layout decodes to an unsigned integer layout.

    In that case it can be used as the source of {@link Sequence#count|Sequence counts}, {@link Blob#length|Blob lengths}, or as {@link UnionLayoutDiscriminator#layout|external union discriminators}.

    abstract

    Returns boolean

makeDestinationObject

replicate

  • Replicate the layout using a new property.

    This function must be used to get a structurally-equivalent layout with a different name since all Layout instances are immutable.

    NOTE This is a shallow copy. All fields except {@link Layout#property|property} are strictly equal to the origin layout.

    Parameters

    • property: string

      the value for {@link Layout#property|property} in the replica.

    Returns ExternalLayout

    • the copy with {@link Layout#property|property} set to property.

Generated using TypeDoc