summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2016-03-20parser: Ignore a few cursor kinds to avoid pointless warningsEmilio Cobos Álvarez
2016-03-20Resolve class typedefs eagerlyEmilio Cobos Álvarez
2016-03-20Some nits to allow i64::MAX as enum value among othersEmilio Cobos Álvarez
2016-03-17Fix func testsEmilio Cobos Álvarez
2016-03-16SM hacks squashMichael Wu
Generate better enums Squash of... Disable prefixing Default to failing on unknown types Add support for Char16 Emit errors for unknown cursor kinds Hack in support for classes Recurse into unexposed decls This fixes functions that use extern "C". Add support for generating unmangled functions Prefix unnamed data structures with the file name Recurse into namespaced things Avoid rust reserved keywords in unmangle func args Don't create variadic unmangled funcs Don't translate typedefs to the same name Ignore operator overloads Avoid templates Handle class declarations Number duplicate demangle functions Implement copy on enums Translate stdint types into standard rust int types Switch enums to i32 for better compatibility Correctly deal with mangled functions with unnamed args Mark unmangling functions as unsafe Attempt to produce structs for C++ classes Convert references Generate better func decls for void returns Make every function callback unsafe Add support for generics in typedefs Add support for class templates Aggressively trim duplicates Don't generate default impl for templates Improve handling of templates Fix function numbering Fix deduplication Make unmangling functions extern "C" Convert all int/float typedefs to standard rust ints/floats This also gives better information to the bitfield parsing and allows uint32_t and other stdint bitfields to be processed properly Add support for wchar Add support for bitfield setter generation Fix floats Squash of... Shorten generated bitfield names Add support for generating whole bitfields Add support for enums nested inside structs/classes Rustup Fixes #184. Rustup to b301e02f3 2015-05-19 Inline demangling functions Add support for base classes/types Generate bindings for methods Make duplicate detection less aggressive Avoid converting long/unsigned longs to rust types. This fixes 64/32bit issues in structs. Generate bitfields correctly for typedefs Convert stdint types to rust types Derive Debug on BindgenOptions, Bindings, and LinkType. Remove +'static when writing bindings Generate virtual function tables Resolve some warnings Add NotConst where Constness params are required Generate real bools when applicable Squash of... Add support for comments Improve bitfield support using const fn Add limited support for references Add comments to fields Don't generate empty comments Convert char16_t to u16 rather than i16 Convert signed chars to libc::c_char Fix Cargo.toml rebasing breakage Fix compiler errors This gets bindgen to compile and run again, but all but one `cargo test` tests fail. Not sure if that’s because of mistakes on my part or if the sm-hacks branch never passed those tests. Fix build warnings Use link_name attr for mangled function names Handle mangled global vars Only generate bindings for visible symbols Don't generate arrays for blobs when the length is 1 Name enums inside classes better Handle template args inside typedefs better Filter out duplicate decls better Generate correctly sized enums Squash of... Fix bitfield accessor method generation for bools Insert phantom fields in empty structs Don't mark unmangling methods as extern "C" Add back comment support for functions Add basic annotation support Don't generate univariant enums Add support for hide annotation and adjust syntax Don't generate unsupported structs Don't parse hidden fields Don't derive Copy for structs with destructors Don't implement Clone or Default Derive Clone when deriving Copy Bypass single member unions Disable references in function args for now Remove extra underscore in mangled names on OSX Don't translate private methods Support generating consts from macros that are defined as integer literals. Handle mangling better Squash of... Update README.md for fork Generate docs for enum items Generate docs for typedefs Generate docs for enums Update syntex_syntax to 0.24.* Update clang info in README.md Spit errors and warnings to stdout. The correct thing to do here is to use env_logger, but that was causing cargo troubles for me, and this is preferable to swallowing them. Add the -ignore-functions argument. Handle 1 << 63 as enum value. Don't try to convert standard int types in rust_type_id. It looks like mwu added this, but I'm pretty sure it's a category error. This function appears to be designed to reproducibly permute C identifiers so that they don't conflict with builtin rust types. It's specifically _not_ a type translator (which would happen at the type level, rather than the string level), and using it as such with callers like ctypedef_to_rs causes us to generate things like: type u64 = u64; While processing stdint.h, which is clearly wrong. Stop patching in placeholder names for CompInfo and EnumInfo instances during code generator. As best as I can tell, it's done this way (rather than my way) because bindgen tries to recognize struct and enums typedefs of the form: /* This is a common idiom in C, not so much in C++ */ typdef struct { ... } Foo; The intention, I think, is to avoid generating rust code for a struct with a placeholder name followed by a typedef, and just give the struct the right name initially. This seems like a reasonable goal, though not a particularly important one. However, in my testing this never actually happens, because we end up calling unnamed_name anyway during the GComp(ci) case of gen_mod before we get to evaluting the typedef. So let's just remove that stuff and simplify the code. This lets us remove all the borrow_mut calls during code generation, which seems necessary for soundness. gen: Allow empty union members Use full paths in generation. Fix test compilation parser: Add support for parsing namespaces Partial C++ namespaces support We currently generate the modules as expected, but we don't resolve the names from external namespaces well. Remove unnecesary return statements Put namespaces behind a flag Overall now that they aren't complete still. Moar refactoring Finally take rid of all the warnings Even moar gen: Avoid so much cloning parser: Refactor the way submodules are stored This way we can share the global map, while having each module custom globals. gen: Checkpoint before the refactoring This actually keeps working as before. gen: Make modules (almost) work for typedef'd types We generate almost valid code, we just have to add some use statements. Or maybe is a better idea to add an unintelligible name to the root mod, and actually output a root mod plus a use root::* before. gen: Document the current submodule approach and some desirable alternative gen: Make it actually compilable \o/ gen: Make the code generation usable for every type. There's just an edge case I've detected, and it's when we remove the instantiation of C<int>, and another module uses it, because that means we only know of its existance in that other module. Probably we might want to use cursor_getSemanticParent to get the real class instead of the instantiated, but I'm not too confident about that. Fix a corner case when a template was instantiated in another module. Added an example of the namespace resolution. Don't panic when not finding the specialised template This can be annoying if filtering files out. Straight rebase completed, let's fix that build errors wip Pair up with master nits Update AST Add -no-rename-fields option This is for compatibility between C bindings and C++ bindings (in C `struct Foo` and `enum Foo`, are different, while in C++ they aren't). wip Add enum tests pass, and add C++ tests Make a few more struct-related tests pass
2016-03-12Disallow needless_lifetimesAnthony Ramine
https://github.com/Manishearth/rust-clippy/issues/740
2016-03-12Disallow if_not_elseAnthony Ramine
2016-03-12Disallow items_after_statementsAnthony Ramine
2016-03-12Appease or disable clippy lints.Benedikt Steinbusch
2016-03-12Add clippy as an optional dependency.Benedikt Steinbusch
2016-03-11derive(Debug) on cenums.Yamakaky
Related #282
2016-03-11derive(Debug) on unions.Yamakaky
Related #282
2016-03-11Add options to enable derive_debug, disabled by default.Yamakaky
Fixes #282
2016-03-10Introduce -no-rust-enums (fixes #276)Anthony Ramine
This completely disables translation of C enums to Rust enums, restoring to the old behaviour of translating them to integer constants.
2016-03-10Move enum_kind_is_signed to a method on IKindAnthony Ramine
2016-03-10Properly determine which integer type to use for enums (fixes #232)Anthony Ramine
We use the kind for the sign and the layout's size for the width, and we wrap unsigned values that are too large to fit inside the determined type.
2016-03-10Revert "produce valid univariant enums"Anthony Ramine
This reverts commit fa6f4407f3cd366c2390b390a6400db8a5c5a071.
2016-03-10Fix typo introduced by fa6f440.Yamakaky
2016-03-10Add #[derive(Debug)] to all structs and enums.Yamakaky
Don't derive debug on a struct if one of it's members isn't Debug. Add a new test for this case. Fixes #261
2016-03-10produce valid univariant enumsJorge Aparicio
Instead of generating a enum like this: ``` pub enum Enum_CUipcMem_flags_enum { CU_IPC_MEM_LAZY_ENABLE_PEER_ACCESS = 1, } ``` Which is a compiler error because repr can't be used with univariant enums. See https://github.com/rust-lang/rust/issues/10292 We generate a two variant enum with a dummy variant. ``` pub enum Enum_CUipcMem_flags_enum { CU_IPC_MEM_LAZY_ENABLE_PEER_ACCESS = 1, __DUMMY, } ``` Which is the recommend workaround to the previous compiler error. closes #255
2016-03-10Use std instead of libc whenever possibleWangshan Lu
2016-03-10Update dependenciesDavid Hotham
2016-01-23Cleanup some warnings from Clippymcarton
2016-01-23Merge pull request #253 from japaric/clang-dirMichael Wu
make get_clang_dir more robust
2016-01-19use std::os::raw types instead of libc typesJorge Aparicio
closes #240
2016-01-16make get_clang_dir more robustJorge Aparicio
Similar to #242. In my system, clang is a symlink to a versioned clang (e.g. clang-3.7), and this equality check to "clang" was failing. This patch makes the check more robust so it can match "clang" or "clang-3.7", but still reject a symlink to ccache.
2016-01-13Merge pull request #249 from nox/void-returnJyun-Yan You
Generate better func decls for void returns
2016-01-13Merge pull request #250 from nox/externJyun-Yan You
Recurse into unexposed decls
2015-12-30Recurse into unexposed declsMichael Wu
This fixes functions that use extern "C".
2015-12-29Generate better func decls for void returnsMichael Wu
2015-12-28Translate C enums to Rust enumsMichael Wu
Duplicate values end up as constants of the same enum type. Most enums are repr(u32) as they should, except for those with attribute((packed)), which are of the smallest representation possible.
2015-12-16Update to syntex_syntax 0.23.0Erick Tryzelaar
2015-12-11Merge pull request #243 from abbradar/include-pathJyun-Yan You
Add bundled Clang includes in default options
2015-12-07Add bundled CLang includes in default optionsNikolay Amiantov
2015-11-29Make sure that we really have found clangDavid Hotham
2015-10-24Presume that a function taking a pointer is unsafeDavid Hotham
2015-07-29Add support for 'packed' attribute.Ilkka Rauta
2015-07-25Fix a typoIvan Ukhov
2015-07-07Add support for generating consts for integer constants. Fixes #145.Ted Mielczarek
This patch adds a few things to enable this: * Cursor::extent * struct Token * TranslationUnit::tokens - clang's C API doesn't have a straightforward way to get the integer literal from a variable declaration, so I used clang_tokenize to get the literal token and parse it. * VarInfo::val - to store the value. Non-const variable declarations and non-integer constants are handled as they were previously.
2015-07-01match_pat support for bindgen::builder() APIJeff Waugh
2015-06-13Update to syntex_syntax 0.7.*mcarton
Fix #213.
2015-06-07Add Builder::clang_argBen Foppa
2015-05-23add `-I /path/to/clang/include` to clang args used in the `bindgen!` pluginJorge Aparicio
We do the same thing for the `bindgen` binary (see #196).
2015-05-11remove unnecessary lifetime bound from `Bindings::write`Jorge Aparicio
2015-05-07Add a builder interface to libbindgenEdward Barnard
2015-05-03Support building bindgen with rust 1.0 betaEdward Barnard
2015-04-24rustup: add required trace_mac when declaring ExpansionCfgPaul Osborne
This was tested on rustc 1.0.0-dev (f46c4e158 2015-04-20) (built 2015-04-20). The commit in rust that appears to have introduced the problem is https://github.com/rust-lang/rust/commit/d14109ec7e90f42a7cb966415b96094b146d3706 This change will likely break with older versions of rust (e.g. 1.0 beta), so it may be worth sitting on its inclusion into master for some time.
2015-04-19Move rustc plugin out into its own crate.Philipp Brüschweiler
This is a workaround while #89 is still breaking bindgen for many people. I haven't tested if the plugin still works, as it always crashed for me because of that bug.
2015-04-19Merge branch 'get-clang-headers' of https://github.com/Blei/rust-bindgenJyun-Yan You
2015-04-18Try to include clang's bundled include files if possible.Philipp Brüschweiler
Towards #85