summaryrefslogtreecommitdiffstats
path: root/comm/third_party/asn1js/src/internals/LocalSimpleStringBlock.ts
blob: a52c9e28980bf361f0b6b0f7ca78daf4a0dc93a9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import * as pvtsutils from "pvtsutils";
import { BaseBlockParams } from "../BaseBlock";
import { BaseStringBlock } from "../BaseStringBlock";
import { LocalSimpleStringValueBlock, LocalSimpleStringValueBlockJson, LocalSimpleStringValueBlockParams } from "./LocalSimpleStringValueBlock";

export interface LocalSimpleStringBlockParams extends BaseBlockParams, LocalSimpleStringValueBlockParams { }
export type LocalSimpleStringBlockJson = LocalSimpleStringValueBlockJson;

export class LocalSimpleStringBlock extends BaseStringBlock<LocalSimpleStringValueBlock, LocalSimpleStringValueBlockJson> {

  public static override NAME = "SIMPLE STRING";

  constructor({
    ...parameters
  }: LocalSimpleStringBlockParams = {}) {
    super(parameters, LocalSimpleStringValueBlock);
  }

  public override fromBuffer(inputBuffer: ArrayBuffer | Uint8Array): void {
    this.valueBlock.value = String.fromCharCode.apply(null, pvtsutils.BufferSourceConverter.toUint8Array(inputBuffer) as unknown as number[]);
  }

  public fromString(inputString: string): void {
    const strLen = inputString.length;

    const view = this.valueBlock.valueHexView = new Uint8Array(strLen);

    for (let i = 0; i < strLen; i++)
      view[i] = inputString.charCodeAt(i);

    this.valueBlock.value = inputString;
  }

}