/* uppercase.c */ #include #include #include "duktape.h" static int dummy_upper_case(duk_context *ctx) { size_t sz; const char *val = duk_require_lstring(ctx, 0, &sz); size_t i; /* We're going to need 'sz' additional entries on the stack. */ duk_require_stack(ctx, sz); for (i = 0; i < sz; i++) { char ch = val[i]; if (ch >= 'a' && ch <= 'z') { ch = ch - 'a' + 'A'; } duk_push_lstring(ctx, (const char *) &ch, 1); } duk_concat(ctx, sz); return 1; } int main(int argc, char *argv[]) { duk_context *ctx; if (argc < 2) { exit(1); } ctx = duk_create_heap_default(); if (!ctx) { exit(1); } duk_push_c_function(ctx, dummy_upper_case, 1); duk_push_string(ctx, argv[1]); duk_call(ctx, 1); printf("%s -> %s\n", argv[1], duk_to_string(ctx, -1)); duk_pop(ctx); duk_destroy_heap(ctx); return 0; }