mirror of
https://github.com/fluencelabs/wasmer
synced 2024-12-13 22:25:40 +00:00
54 lines
2.0 KiB
C++
54 lines
2.0 KiB
C++
// Copyright 2017 The Emscripten Authors. All rights reserved.
|
|
// Emscripten is available under two separate licenses, the MIT license and the
|
|
// University of Illinois/NCSA Open Source License. Both these licenses can be
|
|
// found in the LICENSE file.
|
|
|
|
#include <emscripten.h>
|
|
#include <stdio.h>
|
|
|
|
int main() {
|
|
printf("BEGIN\n");
|
|
EM_ASM({ out("no args works"); });
|
|
|
|
// The following two lines are deprecated, test them still.
|
|
printf(" EM_ASM_INT_V returned: %d\n", EM_ASM_INT_V({ out("no args returning int"); return 12; }));
|
|
printf(" EM_ASM_DOUBLE_V returned: %f\n", EM_ASM_DOUBLE_V({ out("no args returning double"); return 12.25; }));
|
|
|
|
printf(" EM_ASM_INT returned: %d\n", EM_ASM_INT({ out("no args returning int"); return 12; }));
|
|
printf(" EM_ASM_DOUBLE returned: %f\n", EM_ASM_DOUBLE({ out("no args returning double"); return 12.25; }));
|
|
|
|
#define TEST() \
|
|
FUNC({ out(" takes ints: " + $0);}, 5); \
|
|
FUNC({ out(" takes doubles: " + $0);}, 5.0675); \
|
|
FUNC({ out(" takes strings: " + Pointer_stringify($0)); return 7.75; }, "string arg"); \
|
|
FUNC({ out(" takes multiple ints: " + $0 + ", " + $1); return 6; }, 5, 7); \
|
|
FUNC({ out(" mixed arg types: " + $0 + ", " + Pointer_stringify($1) + ", " + $2); return 8.125; }, 3, "hello", 4.75); \
|
|
FUNC({ out(" ignores unused args"); return 5.5; }, 0); \
|
|
FUNC({ out(" skips unused args: " + $1); return 6; }, 5, 7); \
|
|
FUNC({ out(" " + $0 + " + " + $2); return $0 + $2; }, 5.5, 7.0, 14.375);
|
|
|
|
#define FUNC_WITH(macro, format, ...) printf(" returned: " format "\n", macro(__VA_ARGS__));
|
|
#define FUNC(...) FUNC_WITH(EM_ASM_, "%d", __VA_ARGS__)
|
|
printf("EM_ASM_ :\n");
|
|
TEST()
|
|
#undef FUNC
|
|
|
|
#define FUNC(...) FUNC_WITH(EM_ASM_INT, "%d", __VA_ARGS__)
|
|
printf("EM_ASM_INT :\n");
|
|
TEST()
|
|
#undef FUNC
|
|
|
|
#define FUNC(...) FUNC_WITH(EM_ASM_ARGS, "%d", __VA_ARGS__)
|
|
printf("EM_ASM_ARGS :\n");
|
|
TEST()
|
|
#undef FUNC
|
|
|
|
#define FUNC(...) FUNC_WITH(EM_ASM_DOUBLE, "%f", __VA_ARGS__)
|
|
printf("EM_ASM_DOUBLE :\n");
|
|
TEST()
|
|
#undef FUNC
|
|
|
|
printf("END\n");
|
|
return 0;
|
|
}
|