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

Reply via email to