writeValue method

  1. @override
void writeValue(
  1. WriteBuffer buffer,
  2. Object? value
)
override

Writes value to buffer by first writing a type discriminator byte, then the value itself.

This method may be called recursively to serialize container values.

Type discriminators 0 through 127 inclusive are reserved for use by the base class, as follows:

  • null = 0
  • true = 1
  • false = 2
  • 32 bit integer = 3
  • 64 bit integer = 4
  • larger integers = 5 (see below)
  • 64 bit floating-point number = 6
  • String = 7
  • Uint8List = 8
  • Int32List = 9
  • Int64List = 10
  • Float64List = 11
  • List = 12
  • Map = 13
  • Float32List = 14
  • Reserved for future expansion: 15..127

The codec can be extended by overriding this method, calling super for values that the extension does not handle. Type discriminators used by extensions must be greater than or equal to 128 in order to avoid clashes with any later extensions to the base class.

The "larger integers" type, 5, is never used by writeValue. A subclass could represent big integers from another package using that type. The format is first the type byte (0x05), then the actual number as an ASCII string giving the hexadecimal representation of the integer, with the string's length as encoded by writeSize followed by the string bytes. On Android, that would get converted to a java.math.BigInteger object. On iOS, the string representation is returned.

Implementation

@override
void writeValue(WriteBuffer buffer, Object? value) {
  if (value is int) {
    buffer.putUint8(4);
    buffer.putInt64(value);
  } else if (value is GlyphsRasterizationMode) {
    buffer.putUint8(129);
    writeValue(buffer, value.index);
  } else if (value is ContextMode) {
    buffer.putUint8(130);
    writeValue(buffer, value.index);
  } else if (value is ConstrainMode) {
    buffer.putUint8(131);
    writeValue(buffer, value.index);
  } else if (value is ViewportMode) {
    buffer.putUint8(132);
    writeValue(buffer, value.index);
  } else if (value is NorthOrientation) {
    buffer.putUint8(133);
    writeValue(buffer, value.index);
  } else if (value is _MapWidgetDebugOptions) {
    buffer.putUint8(134);
    writeValue(buffer, value.index);
  } else if (value is MapDebugOptionsData) {
    buffer.putUint8(135);
    writeValue(buffer, value.index);
  } else if (value is ViewAnnotationAnchor) {
    buffer.putUint8(136);
    writeValue(buffer, value.index);
  } else if (value is _InteractionType) {
    buffer.putUint8(137);
    writeValue(buffer, value.index);
  } else if (value is GestureState) {
    buffer.putUint8(138);
    writeValue(buffer, value.index);
  } else if (value is Type) {
    buffer.putUint8(139);
    writeValue(buffer, value.index);
  } else if (value is FillExtrusionBaseAlignment) {
    buffer.putUint8(140);
    writeValue(buffer, value.index);
  } else if (value is FillExtrusionHeightAlignment) {
    buffer.putUint8(141);
    writeValue(buffer, value.index);
  } else if (value is BackgroundPitchAlignment) {
    buffer.putUint8(142);
    writeValue(buffer, value.index);
  } else if (value is StylePackErrorType) {
    buffer.putUint8(143);
    writeValue(buffer, value.index);
  } else if (value is ResponseErrorReason) {
    buffer.putUint8(144);
    writeValue(buffer, value.index);
  } else if (value is OfflineRegionDownloadState) {
    buffer.putUint8(145);
    writeValue(buffer, value.index);
  } else if (value is TileStoreUsageMode) {
    buffer.putUint8(146);
    writeValue(buffer, value.index);
  } else if (value is StylePropertyValueKind) {
    buffer.putUint8(147);
    writeValue(buffer, value.index);
  } else if (value is StyleProjectionName) {
    buffer.putUint8(148);
    writeValue(buffer, value.index);
  } else if (value is Anchor) {
    buffer.putUint8(149);
    writeValue(buffer, value.index);
  } else if (value is HttpMethod) {
    buffer.putUint8(150);
    writeValue(buffer, value.index);
  } else if (value is HttpRequestErrorType) {
    buffer.putUint8(151);
    writeValue(buffer, value.index);
  } else if (value is DownloadErrorCode) {
    buffer.putUint8(152);
    writeValue(buffer, value.index);
  } else if (value is DownloadState) {
    buffer.putUint8(153);
    writeValue(buffer, value.index);
  } else if (value is TileRegionErrorType) {
    buffer.putUint8(154);
    writeValue(buffer, value.index);
  } else if (value is _MapEvent) {
    buffer.putUint8(155);
    writeValue(buffer, value.index);
  } else if (value is Point) {
    buffer.putUint8(156);
    writeValue(buffer, value.encode());
  } else if (value is Feature) {
    buffer.putUint8(157);
    writeValue(buffer, value.encode());
  } else if (value is GlyphsRasterizationOptions) {
    buffer.putUint8(158);
    writeValue(buffer, value.encode());
  } else if (value is TileCoverOptions) {
    buffer.putUint8(159);
    writeValue(buffer, value.encode());
  } else if (value is MbxEdgeInsets) {
    buffer.putUint8(160);
    writeValue(buffer, value.encode());
  } else if (value is CameraOptions) {
    buffer.putUint8(161);
    writeValue(buffer, value.encode());
  } else if (value is CameraState) {
    buffer.putUint8(162);
    writeValue(buffer, value.encode());
  } else if (value is CameraBoundsOptions) {
    buffer.putUint8(163);
    writeValue(buffer, value.encode());
  } else if (value is CameraBounds) {
    buffer.putUint8(164);
    writeValue(buffer, value.encode());
  } else if (value is MapAnimationOptions) {
    buffer.putUint8(165);
    writeValue(buffer, value.encode());
  } else if (value is CoordinateBounds) {
    buffer.putUint8(166);
    writeValue(buffer, value.encode());
  } else if (value is MapDebugOptions) {
    buffer.putUint8(167);
    writeValue(buffer, value.encode());
  } else if (value is TileCacheBudgetInMegabytes) {
    buffer.putUint8(168);
    writeValue(buffer, value.encode());
  } else if (value is TileCacheBudgetInTiles) {
    buffer.putUint8(169);
    writeValue(buffer, value.encode());
  } else if (value is MapOptions) {
    buffer.putUint8(170);
    writeValue(buffer, value.encode());
  } else if (value is ScreenCoordinate) {
    buffer.putUint8(171);
    writeValue(buffer, value.encode());
  } else if (value is ScreenBox) {
    buffer.putUint8(172);
    writeValue(buffer, value.encode());
  } else if (value is CoordinateBoundsZoom) {
    buffer.putUint8(173);
    writeValue(buffer, value.encode());
  } else if (value is Size) {
    buffer.putUint8(174);
    writeValue(buffer, value.encode());
  } else if (value is RenderedQueryOptions) {
    buffer.putUint8(175);
    writeValue(buffer, value.encode());
  } else if (value is SourceQueryOptions) {
    buffer.putUint8(176);
    writeValue(buffer, value.encode());
  } else if (value is FeatureExtensionValue) {
    buffer.putUint8(177);
    writeValue(buffer, value.encode());
  } else if (value is LayerPosition) {
    buffer.putUint8(178);
    writeValue(buffer, value.encode());
  } else if (value is ImportPosition) {
    buffer.putUint8(179);
    writeValue(buffer, value.encode());
  } else if (value is QueriedRenderedFeature) {
    buffer.putUint8(180);
    writeValue(buffer, value.encode());
  } else if (value is QueriedSourceFeature) {
    buffer.putUint8(181);
    writeValue(buffer, value.encode());
  } else if (value is QueriedFeature) {
    buffer.putUint8(182);
    writeValue(buffer, value.encode());
  } else if (value is FeaturesetFeatureId) {
    buffer.putUint8(183);
    writeValue(buffer, value.encode());
  } else if (value is FeatureState) {
    buffer.putUint8(184);
    writeValue(buffer, value.encode());
  } else if (value is _Interaction) {
    buffer.putUint8(185);
    writeValue(buffer, value.encode());
  } else if (value is _InteractionPigeon) {
    buffer.putUint8(186);
    writeValue(buffer, value.encode());
  } else if (value is FeaturesetDescriptor) {
    buffer.putUint8(187);
    writeValue(buffer, value.encode());
  } else if (value is FeaturesetFeature) {
    buffer.putUint8(188);
    writeValue(buffer, value.encode());
  } else if (value is MapContentGestureContext) {
    buffer.putUint8(189);
    writeValue(buffer, value.encode());
  } else if (value is _RenderedQueryGeometry) {
    buffer.putUint8(190);
    writeValue(buffer, value.encode());
  } else if (value is ProjectedMeters) {
    buffer.putUint8(191);
    writeValue(buffer, value.encode());
  } else if (value is MercatorCoordinate) {
    buffer.putUint8(192);
    writeValue(buffer, value.encode());
  } else if (value is StyleObjectInfo) {
    buffer.putUint8(193);
    writeValue(buffer, value.encode());
  } else if (value is StyleProjection) {
    buffer.putUint8(194);
    writeValue(buffer, value.encode());
  } else if (value is FlatLight) {
    buffer.putUint8(195);
    writeValue(buffer, value.encode());
  } else if (value is DirectionalLight) {
    buffer.putUint8(196);
    writeValue(buffer, value.encode());
  } else if (value is AmbientLight) {
    buffer.putUint8(197);
    writeValue(buffer, value.encode());
  } else if (value is MbxImage) {
    buffer.putUint8(198);
    writeValue(buffer, value.encode());
  } else if (value is ImageStretches) {
    buffer.putUint8(199);
    writeValue(buffer, value.encode());
  } else if (value is ImageContent) {
    buffer.putUint8(200);
    writeValue(buffer, value.encode());
  } else if (value is TransitionOptions) {
    buffer.putUint8(201);
    writeValue(buffer, value.encode());
  } else if (value is CanonicalTileID) {
    buffer.putUint8(202);
    writeValue(buffer, value.encode());
  } else if (value is StylePropertyValue) {
    buffer.putUint8(203);
    writeValue(buffer, value.encode());
  } else {
    super.writeValue(buffer, value);
  }
}