@@ -287,6 +287,34 @@ export class Buffer extends Uint8Array {
287287}
288288
289289export namespace Buffer {
290+ export namespace ASCII {
291+ export function encode ( str : string ) : ArrayBuffer {
292+ let length = str . length ;
293+ let output = __alloc ( length , idof < ArrayBuffer > ( ) ) ;
294+ for ( let i = 0 ; i < length ; i ++ ) {
295+ let char = load < u16 > ( changetype < usize > ( str ) + < usize > ( i << 1 ) ) ;
296+ store < u8 > ( output + < usize > i , char & 0x7F ) ;
297+ }
298+ return changetype < ArrayBuffer > ( output ) ;
299+ }
300+
301+ export function decode ( buffer : ArrayBuffer ) : String {
302+ return decodeUnsafe ( changetype < usize > ( buffer ) , buffer . byteLength ) ;
303+ }
304+
305+ // @ts -ignore: decorator
306+ @unsafe export function decodeUnsafe ( pointer : usize , length : i32 ) : String {
307+ let result = __alloc ( < usize > length << 1 , idof < string > ( ) ) ;
308+
309+ for ( let i = 0 ; i < length ; i ++ ) {
310+ let byte = load < u8 > ( pointer + < usize > i ) ;
311+ store < u16 > ( result + < usize > ( i << 1 ) , byte & 0x7F ) ;
312+ }
313+
314+ return changetype < String > ( result ) ;
315+ }
316+ }
317+
290318 export namespace HEX {
291319 /** Calculates the byte length of the specified string when encoded as HEX. */
292320 export function byteLength ( str : string ) : i32 {
@@ -358,6 +386,7 @@ export namespace Buffer {
358386 }
359387
360388 /** Decodes a chunk of memory to a utf16le encoded string in hex format. */
389+ // @ts -ignore: decorator
361390 @unsafe export function decodeUnsafe ( ptr : usize , length : i32 ) : string {
362391 let stringByteLength = length << 2 ; // length * (2 bytes per char) * (2 chars per input byte)
363392 let result = __alloc ( stringByteLength , idof < String > ( ) ) ;
@@ -374,6 +403,7 @@ export namespace Buffer {
374403 }
375404
376405 /** Calculates the two char combination from the byte. */
406+ // @ts -ignore: decorator
377407 @inline function charsFromByte ( byte : u32 ) : u32 {
378408 let hi = ( byte >>> 4 ) & 0xF ;
379409 let lo = byte & 0xF ;
0 commit comments