tagver_t map_stadfa_ver(ctx_t &ctx, size_t tag, int32_t ver)
{
    const stadfa_tagvers_t::key_type k(tag, ver);
    stadfa_tagvers_t::iterator i = ctx.stadfa_tagvers.find(k);

    tagver_t m;
    if (i == ctx.stadfa_tagvers.end()) {
        m = ++ctx.dfa.maxtagver;

        ctx.stadfa_tagvers.insert(std::make_pair(k, m));

        if (history(ctx.dfa.tags[tag])) {
            ctx.dfa.mtagvers.insert(m);
        }
    }
    else {
        m = i->second;
    }
    return m;
}
tagver_t map_stadfa_ver(ctx_t &ctx, size_t tag, int32_t ver)
{
    const stadfa_tagvers_t::key_type k(tag, ver);
    stadfa_tagvers_t::iterator i = ctx.stadfa_tagvers.find(k);

    tagver_t m;
    if (i == ctx.stadfa_tagvers.end()) {
        m = ++ctx.dfa.maxtagver;

        ctx.stadfa_tagvers.insert(std::make_pair(k, m));

        if (history(ctx.dfa.tags[tag])) {
            ctx.dfa.mtagvers.insert(m);
        }
    }
    else {
        m = i->second;
    }
    return m;
}