summaryrefslogtreecommitdiff
path: root/bindgen/codegen/mod.rs
AgeCommit message (Collapse)Author
2023-02-27codegen: Don't generate conflicting packed() and align() representation hints.HEADmasterEmilio Cobos Álvarez
Fixes #2240
2023-02-16Also de-duplicate functions with wrapped static functions feature (#2416)Urgau
2023-02-07Generate extern wrappers for inlined functions (#2335)Christian Poveda Ruiz
* Generate extern wrappers for inlined functions If bindgen finds an inlined function and the `--generate-extern-functions` options is enabled, then: - It will generate two new source and header files with external functions that wrap the inlined functions. - Rerun `Bindings::generate` using the new header file to include these wrappers in the generated bindings. The following additional options were added: - `--extern-function-suffix=<suffix>`: Adds <suffix> to the name of each external wrapper function (`__extern` is used by default). - `--extern-functions-file-name=<name>`: Uses <name> as the file name for the header and source files (`extern` is used by default). - `--extern-function-directory=<dir>`: Creates the source and header files inside <dir> (`/tmp/bindgen` is used by default). The C code serialization is experimental and only supports a very limited set of C functions. Fixes #1090. --------- Co-authored-by: Amanjeev Sethi <aj@amanjeev.com>
2023-01-20Implement cli option for custom derive (#2328)Dan Dumont
* custom derives after DeriveInfo * Introduce `TypeKind` instead of `CompKind` * Add tests * Emit CLI flags for callbacks * update changelog * run rustfmt * fix tests * fix features Co-authored-by: Christian Poveda <christian.poveda@ferrous-systems.com>
2023-01-06codegen: Look through typedefs to detect void return type. (#2379)Emilio Cobos Álvarez
* codegen: Look through typedefs to detect void return type. And reuse a bit more code. Should fix #2377, but needs a test (can't run tests atm). * Add tests * Run rustfmt * Update changelog Co-authored-by: Christian Poveda <christian.poveda@ferrous-systems.com>
2022-12-07codegen: Do generate field offset checks for classes with multiple bases.Emilio Cobos Álvarez
The bug only affects virtual inheritance, so instead disable layout tests in the test that we know is broken. Not generating layout tests is wrong anyways, because the offset would be wrong.
2022-11-28Fix name collision between C enum and typedef (#2326)David Tolnay
Fixes #2008. Example: ```c enum Enum { Variant }; typedef int16_t Enum; ``` This is valid and idiomatic C (though not valid C++). `cbindgen` uses this idiom as the default C translation of Rust enums, the equivalent of what would be `enum Enum : int16_t { Variant };` in C++. `bindgen header.h` before: ```rust pub const Enum_Variant: Enum = 0; pub type Enum = ::std::os::raw::c_uint; pub type Enum = i16; ``` ```console error[E0428]: the name `Enum` is defined multiple times --> generated.rs:3:1 | 2 | pub type Enum = ::std::os::raw::c_uint; | --------------------------------------- previous definition of the type `Enum` here 3 | pub type Enum = i16; | ^^^^^^^^^^^^^^^^^^^^ `Enum` redefined here | = note: `Enum` must be defined only once in the type namespace of this module ``` After: ```rust pub const Enum_Variant: Enum = 0; pub type Enum = i16; ```
2022-11-24Remove traits that have a single implementation (#2363)Christian Poveda Ruiz
2022-11-24Fix clippy warnings (#2362)Christian Poveda Ruiz
2022-11-22Add `--wrap-unsafe-ops` option (#2354)Christian Poveda Ruiz
This reverts commit e8ffb42ab66405ac56d04494a30e54b584f2d4dd and adds a new `--wrap-unsafe-ops` option as a workaround.
2022-11-22Add `ParseCallbacks::process_comment` (#2347)Christian Poveda Ruiz
This method can be used to process comments and replace them with whatever the user wants.
2022-11-21Introduce `DeriveInfo` (#2355)Christian Poveda Ruiz
This PR introduces a new non-exhaustive `struct` called `DeriveInfo` to be used as the sole argument of `ParseCallbacks::add_derives` with the purpose of being able to extend the information passed to this method in a backwards-compatible manner, meaning that adding new fields to `DeriveInfo` won't be a breaking change when releasing a new version.
2022-11-11Fix duplicated function names (#2341)Christian Poveda Ruiz
Even though this change does name deduplication in a slower way, it avoids name collisions without any breaking changes in the test suite. Fixes #2202
2022-11-04Wrap `unsafe` function's bodies in `unsafe` blocks (#2266)Christian Poveda Ruiz
This guarantees that bindings generated by `bindgen` compile even if the `unsafe_op_in_unsafe_fn` lint is denied.
2022-11-04Add support for the `"C-unwind"` ABI (#2334)Christian Poveda Ruiz
* Add support for the `"C-unwind"` ABI This allows using `"C-unwind"` as an ABI override if the rust target is nightly.
2022-11-02Add the `--override-abi` option (#2329)Christian Poveda Ruiz
* Add the `--override-abi` option. This option can be used from the CLI with the <abi>:<regex> syntax and it overrides the ABI of a function if it matches <regex>. Fixes #2257
2022-11-02Allow callback composition (#2330)Christian Poveda Ruiz
* Allow callback composition Store all the callbacks added to the builder in a `Vec` so bindgen invokes each one of them in a last-to-first manner.
2022-11-02Fix clippy warnings (#2331)Christian Poveda Ruiz
2022-10-04split the repo into a workspaceChristian Poveda
remove `clap` dependency :tada: update the book installation instructions