Writer.d.ts 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. import { Slice } from './Slice';
  2. import type { IWriterGrowable, IWriter } from './types';
  3. /**
  4. * Writer class provides an efficient way to encode binary data. It grows the
  5. * internal memory buffer automatically as more space is required. It is useful
  6. * in cases when it is not known in advance the size of memory needed.
  7. */
  8. export declare class Writer implements IWriter, IWriterGrowable {
  9. allocSize: number;
  10. /** @ignore */
  11. uint8: Uint8Array;
  12. /** @ignore */
  13. view: DataView;
  14. /** @ignore */
  15. x0: number;
  16. /** @ignore */
  17. x: number;
  18. protected size: number;
  19. /**
  20. * @param allocSize Number of bytes to allocate at a time when buffer ends.
  21. */
  22. constructor(allocSize?: number);
  23. /** @ignore */
  24. protected grow(size: number): void;
  25. /**
  26. * Make sure the internal buffer has enough space to write the specified number
  27. * of bytes, otherwise resize the internal buffer to accommodate for more size.
  28. *
  29. * @param capacity Number of bytes.
  30. */
  31. ensureCapacity(capacity: number): void;
  32. /** @todo Consider renaming to "skip"? */
  33. move(capacity: number): void;
  34. reset(): void;
  35. /**
  36. * Allocates a new {@link ArrayBuffer}, useful when the underlying
  37. * {@link ArrayBuffer} cannot be shared between threads.
  38. *
  39. * @param size Size of memory to allocate.
  40. */
  41. newBuffer(size: number): void;
  42. /**
  43. * @returns Encoded memory buffer contents.
  44. */
  45. flush(): Uint8Array;
  46. flushSlice(): Slice;
  47. u8(char: number): void;
  48. u16(word: number): void;
  49. u32(dword: number): void;
  50. i32(dword: number): void;
  51. u64(qword: number | bigint): void;
  52. f64(float: number): void;
  53. u8u16(u8: number, u16: number): void;
  54. u8u32(u8: number, u32: number): void;
  55. u8u64(u8: number, u64: number | bigint): void;
  56. u8f32(u8: number, f32: number): void;
  57. u8f64(u8: number, f64: number): void;
  58. buf(buf: Uint8Array, length: number): void;
  59. /**
  60. * Encodes string as UTF-8. You need to call .ensureCapacity(str.length * 4)
  61. * before calling
  62. *
  63. * @param str String to encode as UTF-8.
  64. * @returns The number of bytes written
  65. */
  66. utf8(str: string): number;
  67. utf8Native(str: string): number;
  68. ascii(str: string): void;
  69. }