Name Description Size
analysis
annotations.rs Types and functions related to bindgen annotation comments. Users can add annotations in doc comments to types that they would like to replace other types with, mark as opaque, etc. This module deals with all of that stuff. 8317
comment.rs Utilities for manipulating C/C++ comments. 2886
comp.rs Compound types (unions and structs) in our intermediate representation. 61284
context.rs Common context that is passed around during parsing and codegen. 111288
derive.rs Traits for determining whether we can derive traits for a thing or not. These traits tend to come in pairs: 1. A "trivial" version, whose implementations aren't allowed to recursively look at other types or the results of fix point analyses. 2. A "normal" version, whose implementations simply query the results of a fix point analysis. The former is used by the analyses when creating the results queried by the second. 4148
dot.rs Generating Graphviz `dot` files from our IR. 2444
enum_ty.rs Intermediate representation for C/C++ enumerations. 10112
function.rs Intermediate representation for C/C++ functions and methods. 27580
int.rs Intermediate representation for integral types. 2925
item.rs Bindgen's core intermediate representation type. 66680
item_kind.rs Different variants of an `Item` in our intermediate representation. 3881
layout.rs Intermediate representation for the physical layout of some type. 4205
mod.rs The ir module defines bindgen's intermediate representation. Parsing C/C++ generates the IR, while code generation outputs Rust code from the IR. 649
module.rs Intermediate representation for modules (AKA C++ namespaces). 2542
objc.rs Objective C types 11621
template.rs Template declaration and instantiation related things. The nomenclature surrounding templates is often confusing, so here are a few brief definitions: * "Template definition": a class/struct/alias/function definition that takes generic template parameters. For example: ```c++ template<typename T> class List<T> { // ... }; ``` * "Template instantiation": an instantiation is a use of a template with concrete template arguments. For example, `List<int>`. * "Template specialization": an alternative template definition providing a custom definition for instantiations with the matching template arguments. This C++ feature is unsupported by bindgen. For example: ```c++ template<> class List<int> { // Special layout for int lists... }; ``` 11906
traversal.rs Traversal of the graph of IR items and types. 14117
ty.rs Everything related to types in our intermediate representation. 48000
var.rs Intermediate representation of variables. 16540