vicis 0.1.0

Manipulate LLVM-IR in Pure Rust
Documentation
use super::Linkage;
use nom::{branch::alt, bytes::complete::tag, combinator::map, error::VerboseError, IResult};

pub fn parse<'a, 'b>(source: &'a str) -> IResult<&'a str, Linkage, VerboseError<&'a str>> {
    alt((
        map(tag("private"), |_| Linkage::Private),
        map(tag("internal"), |_| Linkage::Internal),
        map(tag("external"), |_| Linkage::External),
        map(tag("externalweak"), |_| Linkage::ExternalWeak),
        map(tag("availableexternally"), |_| Linkage::AvailableExternally),
        map(tag("linkonceany"), |_| Linkage::LinkOnceAny),
        map(tag("linkonceodr"), |_| Linkage::LinkOnceODR),
        map(tag("linkonceodrautohide"), |_| Linkage::LinkOnceODRAutoHide),
        map(tag("weakany"), |_| Linkage::WeakAny),
        map(tag("weakodr"), |_| Linkage::WeakODR),
        map(tag("common"), |_| Linkage::Common),
        map(tag("appending"), |_| Linkage::Appending),
        map(tag("dllimport"), |_| Linkage::DLLImport),
        map(tag("dllexport"), |_| Linkage::DLLExport),
        map(tag("ghost"), |_| Linkage::Ghost),
        map(tag("linkerprivate"), |_| Linkage::LinkerPrivate),
        map(tag("linkerprivateweak"), |_| Linkage::LinkerPrivateWeak),
    ))(source)
}