1extern crate clang;
2
3use clang::*;
4
5fn main() {
6 let clang = Clang::new().unwrap();
8
9 let index = Index::new(&clang, false, false);
11
12 let tu = index.parser("examples/structs.c").parse().unwrap();
14
15 let structs = tu.get_entity().get_children().into_iter().filter(|e| {
17 e.get_kind() == EntityKind::StructDecl
18 }).collect::<Vec<_>>();
19
20 for struct_ in structs {
22 let type_ = struct_.get_type().unwrap();
23 let size = type_.get_sizeof().unwrap();
24 println!("struct: {:?} (size: {} bytes)", struct_.get_name().unwrap(), size);
25
26 for field in struct_.get_children() {
27 let name = field.get_name().unwrap();
28 let offset = type_.get_offsetof(&name).unwrap();
29 println!(" field: {:?} (offset: {} bits)", name, offset);
30 }
31 }
32}