/
fn_call_size.rs
24 lines (23 loc) · 1.25 KB
/
fn_call_size.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#[test]
fn size() {
assert_eq!(function_size("Windows.Win32.System.Console", "ReadConsoleOutputA"), 20);
assert_eq!(function_size("Windows.Win32.System.Console", "ReadConsoleOutputAttribute"), 20);
assert_eq!(function_size("Windows.Win32.UI.Accessibility", "ItemContainerPattern_FindItemByProperty"), 32);
assert_eq!(function_size("Windows.Win32.System.Ole", "VarI2FromCy"), 12);
assert_eq!(function_size("Windows.Win32.UI.Accessibility", "UiaRaiseAutomationPropertyChangedEvent"), 40);
assert_eq!(function_size("Windows.Win32.Graphics.Gdi", "AlphaBlend"), 44);
assert_eq!(function_size("Windows.Win32.UI.Accessibility", "TextRange_FindAttribute"), 32);
assert_eq!(function_size("Windows.Win32.System.Com", "GetErrorInfo"), 8);
}
fn function_size(namespace: &str, name: &str) -> usize {
let files = vec![metadata::reader::File::new("../../libs/metadata/default/Windows.Win32.winmd").unwrap()];
let reader = &metadata::reader::Reader::new(&files);
if let Some(def) = reader.get(metadata::reader::TypeName::new(namespace, "Apis")).next() {
for method in reader.type_def_methods(def) {
if reader.method_def_name(method) == name {
return reader.method_def_size(method);
}
}
}
0
}