1 module sha3iuf_d.wasm; 2 3 4 version (WebAssembly): 5 6 version (SHA3IUF_D_WASM) 7 extern (C) 8 pure nothrow @safe @nogc @live 9 export void _start() 10 11 do 12 { 13 } 14 15 version (SHA3IUF_D_WASM) 16 extern (C) 17 pure nothrow @trusted @nogc @live 18 export void* memset(return ubyte* s, int c, size_t n) 19 20 do 21 { 22 for (size_t i = 0; i < n; i++) { 23 s[i] = cast(ubyte)(c); 24 } 25 26 return s; 27 } 28 29 version (SHA3IUF_D_WASM) 30 extern (C) 31 pure nothrow @trusted @nogc @live 32 export void* memcpy(return ubyte* s1, scope const ubyte* s2, size_t n) 33 34 do 35 { 36 for (size_t i = 0; i < n; i++) { 37 s1[i] = s2[i]; 38 } 39 40 return s1; 41 } 42 43 version (SHA3IUF_D_ENABLE_STATIC_BUFFER) { 44 enum input_buffer_length = 4096; 45 enum output_buffer_length = 512 / 8; 46 47 export ubyte[.input_buffer_length] input_buffer; 48 export ubyte[.output_buffer_length] output_buffer; 49 50 extern (C) 51 pure nothrow @safe @nogc @live 52 export size_t input_buf_length() 53 54 do 55 { 56 return .input_buffer_length; 57 } 58 59 extern (C) 60 pure nothrow @safe @nogc @live 61 export size_t output_buf_length() 62 63 do 64 { 65 return .output_buffer_length; 66 } 67 68 extern (C) 69 nothrow @nogc @trusted @live 70 export ubyte* get_input_buffer_address() 71 72 do 73 { 74 return &(.input_buffer[0]); 75 } 76 77 extern (C) 78 nothrow @nogc @trusted @live 79 export ubyte* get_output_buffer_address() 80 81 do 82 { 83 return &(.output_buffer[0]); 84 } 85 }