pub struct Clang(/* private fields */);
Expand description
An empty type which prevents the use of this library from multiple threads simultaneously.
Implementations§
Source§impl Clang
impl Clang
Sourcepub fn new() -> Result<Clang, String>
pub fn new() -> Result<Clang, String>
Constructs a new Clang
.
Only one instance of Clang
is allowed at a time.
§Failures
- an instance of
Clang
already exists
Examples found in repository?
examples/structs.rs (line 7)
5fn main() {
6 // Acquire an instance of `Clang`
7 let clang = Clang::new().unwrap();
8
9 // Create a new `Index`
10 let index = Index::new(&clang, false, false);
11
12 // Parse a source file into a translation unit
13 let tu = index.parser("examples/structs.c").parse().unwrap();
14
15 // Get the structs in this translation unit
16 let structs = tu.get_entity().get_children().into_iter().filter(|e| {
17 e.get_kind() == EntityKind::StructDecl
18 }).collect::<Vec<_>>();
19
20 // Print information about the structs
21 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}
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Clang
impl RefUnwindSafe for Clang
impl !Send for Clang
impl !Sync for Clang
impl Unpin for Clang
impl UnwindSafe for Clang
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more