// String Tagger.NBestParse(int n, String input) static KMETHOD Tagger_NBestParse(KonohaContext *kctx, KonohaStack *sfp) { struct _kTagger *mecab = (struct _kTagger *)sfp[0].asObject; kint_t ival = sfp[1].intValue; const char *input = kString_text(sfp[2].asString); const char* result = mecab_nbest_sparse_tostr(mecab->mecab, ival, input); KReturn(KLIB new_kString(kctx, GcUnsafe, result, strlen(result), 0)); }
static emacs_value Fmecab_sparse_to_string(emacs_env *env, ptrdiff_t nargs, emacs_value args[], void *data) { mecab_t *mecab = env->get_user_ptr(env, args[0]); ptrdiff_t size; char *input = retrieve_string(env, args[1], &size); int nbest = (int)env->extract_integer(env, args[2]); const char *ret; if (nbest < 0) { ret = mecab_sparse_tostr(mecab, input); } else { ret = mecab_nbest_sparse_tostr(mecab, nbest, input); } free(input); return env->make_string(env, ret, strlen(ret)); }