Skip to content

NightProg/mangler

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

mangler

A simple Rust program that mangles and parse C++ symbol names using Itanium ABI.

Example

use mangler::*;

fn main() {
    let mangled = mangle("foo::bar::hello(int, float, std::string)");
    println!("{}", mangled); // _ZN3foo3bar5helloEifSs

    let mangled = mangle(
        Symbol::Function(
            Box::new(
                Symbol::Namespace(
                    vec![
                        Symbol::Type("hello".to_string()),
                        Symbol::Type("world".to_string()),
                        Symbol::Generic(
                            vec![
                                Symbol::Typed(
                                    Box::new(
                                        Symbol::Type("int".to_string())
                                    ),
                                    vec![TypedElement::Ptr]
                                )
                            ]
                        ),
                        Symbol::Type("print".to_string())
                    ]
                )
            ),
            vec![
                Symbol::Type("int".to_string()),
                Symbol::Type("float".to_string()),
                Symbol::Type("std::string".to_string())
            ]
        )
    );

    println!("{}", mangled); // _ZN5hello5worldIPiE5printEifSs
  
}

About

A simple Rust program that mangles and parse C++ symbol names using Itanium ABI.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages