Martin, Yes. bindgen should be able to be used for wxc wrapping. Rust-ish OOP layer is a separate work. Recently I have very few time to try that. So your hack is very helpful! I'll take a closer look of that when I can work on this again. Thanks!
2013/10/6 Martin DeMello <[email protected]>: > After thinking about it some more, I realised that bindgen works > perfectly for generating the low-level C layer, and that the custom > codegen can then just handle the OOP layer on top of it. > > I did a quick hack here, and after a few signature changes it all just > worked: https://github.com/martindemello/wxRust/commits/bindgen > > martin > > On Sat, Oct 5, 2013 at 9:54 PM, Martin DeMello <[email protected]> > wrote: >> I took a closer look, and now think bindgen may not be the way to go >> for this. The wxc layer uses a bunch of custom C macros to provide >> extra information to binding generators, and generating bindings from >> the preprocessed C source throws all that information away. Might be >> worth taking a closer look at what the Haskell bindings are doing with >> the wxc headers and trying to reproduce that in wxRust. >> >> martin >> >> On Fri, Sep 27, 2013 at 8:51 PM, KENZ gelsoft <[email protected]> wrote: >>> I tried rust-bindgen finally, and it worked excellently. Great work!! >>> >>> Since it requires Clang 3.3 which doesn't exist on OS X 10.8 setup, >>> I tried commit 3d49dbbbb7bcc0cf63b43a16a6cf52480fa9b752 and some tweak. >>> >>> And some arguments are needed, for my project: >>> >>> $ ./bindgen -x c++ ../wxRust/wxHaskell/wxc/src/include/wxc.h >>> `wx-config --cflags` --include stdint.h --include time.h > >>> ../wxRust/generated.rs >>> >>> bindgen is C mode as default like clang or gcc are, so I understand it >>> requires `-x c++` option, >>> but I don't know why I have to explicitly include stdint.h and time.h >>> for size_t and uint8_t. >>> Do you have another recommended options? >>> >>> My codegen.py just handles functions, so handling for other >>> definitions benefits. >>> So I want adopt rust-bindgen to generate extern fn part of my binding >>> for long-term plan. >>> >>> Despite I know its Clang requirement changed for bitwidth support, but >>> as a Mac developer, I don't want to install the Clang 3.3 only for >>> rust-bindgen, >>> especially I don't want add a new prerequisite to my library. >>> Are there a posibility of optional Clang 3.1 support (without bitwidth >>> support)? >>> >>> >>> >>> 2013/9/26 Martin DeMello <[email protected]>: >>>> no, but it might be feasible to add. not sure if it'd fall within the >>>> scope of bindgen or not, but at least bindgen could emit some sort of >>>> serialised data structure that would make generating the next level >>>> binding easier. >>>> >>>> martin >>>> >>>> On Wed, Sep 25, 2013 at 4:49 PM, KENZ gelsoft <[email protected]> >>>> wrote: >>>>> Oh, I didn't know that project, thank you for information. I'll try it. >>>>> BTW, I chose to make own parser and generator to generate not only extern >>>>> fn >>>>> decls but also next-level wrapper such as: >>>>> >>>>> trait Frame { >>>>> pub fn show(&self) { >>>>> unsafe { >>>>> wxFrame_Show(self.handle()); >>>>> } >>>>> } >>>>> } >>>>> >>>>> or so, would bindgen helps this use case? (c.f. parsed data accessible or >>>>> so.) >>>>> >>>>> Did you try using bindgen on the wxc header file? If there were bits >>>>> it couldn't handle, I'd be interested in helping fix that. >>>>> >>>>> martin >>>>> >>>>> On Wed, Sep 25, 2013 at 10:49 AM, KENZ gelsoft <[email protected]> >>>>> wrote: >>>>>> Hello, everyone. >>>>>> >>>>>> I would like to introduce my experimental project, wxRust. >>>>>> Which is a wxWidgets binding for Rust. >>>>>> >>>>>> https://github.com/kenz-gelsoft/wxRust >>>>>> >>>>>> This binding is based on the wxHaskell especially its "wxc"*1 >>>>>> C-Language wxWidgets binding part. >>>>>> >>>>>> Currently, it just converts wxc's header file to `extern fn`s and >>>>>> export them as a rust library. >>>>>> >>>>>> Test program has just started working which opens a wxFrame >>>>>> by calling wxc's C interface from extern fn. >>>>>> >>>>>> Current state is pre-alpha experimental state, there's no stable API, >>>>>> hard to use, but announced here for someone planning similar project. >>>>>> >>>>>> I'm planning for next generating simple OOP style wrapper as rust >>>>>> traits for each classes from wxc's header. >>>>>> >>>>>> There is many problems to tackle, for example how it can work >>>>>> with multitask or, library users can write wx GUI programs easier. >>>>>> Any helps or feedbacks are welcome. >>>>>> >>>>>> *1: [http://www.haskell.org/haskellwiki/WxHaskell#Status] >>>>>> >>>>>> >>>>>> Thanks, >>>>>> -- >>>>>> KENZ <[email protected]> >>>>>> >>>>>> >>>>>> _______________________________________________ >>>>>> Rust-dev mailing list >>>>>> [email protected] >>>>>> https://mail.mozilla.org/listinfo/rust-dev >>>>>> _______________________________________________ Rust-dev mailing list [email protected] https://mail.mozilla.org/listinfo/rust-dev
