summary refs log tree commit diff stats
path: root/tests/template/tidentconcatenations.nim
diff options
context:
space:
mode:
Diffstat (limited to 'tests/template/tidentconcatenations.nim')
-rw-r--r--tests/template/tidentconcatenations.nim31
1 files changed, 31 insertions, 0 deletions
diff --git a/tests/template/tidentconcatenations.nim b/tests/template/tidentconcatenations.nim
new file mode 100644
index 000000000..ddd2e49cc
--- /dev/null
+++ b/tests/template/tidentconcatenations.nim
@@ -0,0 +1,31 @@
+type
+  Hash*[bits: static[int]] = object
+    data*: array[bits div 8, uint8]
+
+{.emit: """
+
+void sha_256(void* input, int input_len, void* output, int output_len) {}
+void sha_512(void* input, int input_len, void* output, int output_len) {}
+
+void keccak_256(void* input, int input_len, void* output, int output_len) {}
+void keccak_512(void* input, int input_len, void* output, int output_len) {}
+
+""".}
+
+template defineKeccak(bits: untyped) =
+  proc `extKeccak bits`(output: pointer, outSize: csize_t, input: pointer, inputSize: csize_t) {.nodecl, importc: "keccak_" & astToStr(bits).}
+
+template defineSha(bits: static[int]) =
+  proc `extSha bits`(output: pointer, outSize: csize_t, input: pointer, inputSize: csize_t) {.nodecl, importc: "sha_" & astToStr(bits).}
+
+template defineHashProcs(bits) =
+  defineSha(bits)
+  defineKeccak(bits)
+
+defineHashProcs(256)
+defineHashProcs(512)
+
+extSha256(nil, 0, nil, 0)
+extSha512(nil, 0, nil, 0)
+extKeccak256(nil, 0, nil, 0)
+extKeccak512(nil, 0, nil, 0)