// String Tagger.parse(String input) static KMETHOD Tagger_Parse(KonohaContext *kctx, KonohaStack *sfp) { mecab_t * mecab = ((struct _kTagger *)(sfp[0].asObject))->mecab; const char *input = kString_text(sfp[1].asString); const char* result = mecab_sparse_tostr(mecab, 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)); }