discuss-gnustep
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: a c++11 wrapper for gnustep libraries


From: H. Nikolaus Schaller
Subject: Re: a c++11 wrapper for gnustep libraries
Date: Mon, 24 May 2021 10:53:46 +0200

Hi,

Am 22.05.2021 um 11:41 schrieb أسامة مخزوم <osmakh1@gmail.com>:

Well, you seem to be on my side but in anthoer corner

:)

The question will be which corner finds the best adoption by the broader community of C++ programmers. What they really need or are missing. Because we need adopters.

When we are talking about Gnustep outside objc view, developers has one main benefit: gnustep libraries that provide portable and rich libraries as a framework. as a programmer i like it  but try to avoid objective-c and objective-c++ even more. gnustep ui are pretty cool to port wxWidgets or even tk into its backend.  but why not to make this STEP more stright and provide some wrapper/binding to c++? So anyone can later do whatever he want using a c++ syntax without getting messed in objective-c++ every project. 

Hm. Maybe we should clarify the corners first.

My proposal is to use the wxWidgets API in C++. Implementing the wxWidgets API can likely be done in objc++ - not much different from Cocoa. The result should be some libwxgnustep...

This means that C++ programmers can simply link agains this wxWidgets wrappers by using plain C++.
They don't see objc++. Only those developers who develop wxWidgets wrapping for GNUstep have to care about.


A C++ programmer obviously (I have never written code in wxWidgets, but it is obvious what is going on) uses C++ classes like wxApp, wxFrame, wxMenu and functions like wxMessageBox() or SetStatusText().
These are provided by the wxWidget libs.

A GNUstep wxWidgets wrapper would of course be written in objc++, but compiled only once into the wrapper library.
It would translate these classes and function calls into ObjC-messages for GNUstep GUI and Base. For example I imagine that wxMessageBox() could open some NSPanel or the wxMenu method AppendSeparator() would translate into [menu addItem:[NSMenu separatorItem]]. 

The result would be that programmers can write in pure C++ for wxWidgets, link to the GNUstep wrapper and system and run the Apps on some GNUstep based desktop.

This would be my corner of thinking :)

Or do you generally think about something else?


Objc++ is something evil when it comes to syntax and code readabilty: two languages, many restricts to merge, and a strange convention . theorically you can anything possible using this latter, but its too ugly to people to handle it.

Fully agree. It should only be used to write Wrappers in either direction, e.g. making ObjC frameworks available to C++ programmers and making C++ libraries available to ObjC programmers.

That's why i would like to go further and make gnustep accesible outside using objective-c++ from the application-developers and other programmer

Yes, wxWidgets provide pure C++ classes to programmers and hide objc++.

So maybe we are not even in different corners?

And the key question is what C++ developers really want to see if GNUstep is wrapped. It is a little difficult to find them here on this list, but maybe some reader is "living in both worlds" and can comment.

BR and thanks,
Nikolaus



On Sat, May 15, 2021, 6:15 PM H. Nikolaus Schaller <hns@computer.org> wrote:
Hi Usama and all,
any thoughts on my suggestions?

BR,
Nikolaus

> Am 11.05.2021 um 14:24 schrieb H. Nikolaus Schaller <hns@computer.org>:
>
>
>> Am 11.05.2021 um 13:48 schrieb Usama makhzoum <osmakh1@gmail.com>:
>>
>>
>> On 5/10/21 11:20 PM, H. Nikolaus Schaller wrote:
>>> Hi,
>>>
>>>> Am 10.05.2021 um 20:58 schrieb أسامة مخزوم <osmakh1@gmail.com>:
>>>>
>>>> hi all
>>>>
>>>> I am thinking of a C++11 wrapper for base, gui and other libraries, may be it is easier to do than another PL (because of objective-c++ existence). however, i want to hear from you: I would like to have opinions and whether if there was a attemp to do this (with c++98, for example).
>>>>
>>>> This also can give gnustep (another step). macosX developers always searches for c++ wrappers around cocoa and friends. before they enforced deeply to objc and swift, they simply wishing the last wish "I hope that someone did it". so maybe a c++ wrapper can make gnutep famous for the mac development, rather.
>>> On macOS C++ is not the primary language (except for kernel drivers). It is ObjC and Swift.
>>>
>>> IMHO, objc++ exists because there are some interesting C++ based libraries (e.g. data processing, business logic, file format decoders) where it should be possible to integrate them into objc based GUI apps. So in MVC architecture, C++ would be mainly used for providing an existing data model.
>>
>> this could be also a reason for writing such a wrapper.
>
> I do not understand how it would help. If the GUI is to be written in ObjC and some C++ libs to be included, wrapping ObjC transforms the whole project into a C++ project which is not what I would like to have.
>
>> why doing things in two language becomes the standard way? think of it as you were using python and have to do GUI staff with Qt, does i have to try py-c++ or to use a wrapper like pyqt?
>
> Well, if I use ObjC and want to do some macOS or Linux or Windows GUI stuff. Then I simply use GNUstep withou any wrappers.
>
>>
>>
>> GNUSTEP framework is a very easy-and-popular framework, i like it both with developing, and in use. and I think it will make another little advance if there was some easy/neat way to use from c++ (and many other programming languages, like perl, and even _javascript_), i assume some progress when a c++ programmer (thinks in terms of templates, mutli-inheritance and smartpointers) has access to GNUSTEP. I know that i didn't invent something new or make things impossible as possible. I want to help people that like c++-syntax to consider gnustep as an option, after all.
>
> Ok!
>
> Now, I could imagine something like a https://www.wxwidgets.org glue so that you can compile any wxWidgets based application not only for macOS, Linux (GTK, Qt, X11 etc.) or Windows but also for GNUstep. So make GNUstep another "backend" option for wxWidgets in the list of supported platforms:
>
>       https://www.wxwidgets.org/about/   (i.e. create some wxGNUstep)
>
>>
>>>
>>> I wonder what a use case of the reverse wrapping would be.
>>
>> a syntax-sugar, or convince wrapper is the main goal.  maybe used as additional gui-frontend for a c++  graphical or command line application without too much diving into obj-c++.
>
> There may be a key decision before starting a project like you are thinking of: which classes and interfaces should your wrapper provide? Something completely new (optimized for wrapping GNUstep) or a well known set of interfaces already used by many C++ projects.
>
> Beware: there are already many:
>
>       https://www.reddit.com/r/cpp/comments/babfl5/a_pretty_big_list_of_c_gui_libraries/
>
> So wxWidget seems to me one of the preferred choices - but I am not that active in C++ that I know what others are doing.
>
> What I therefor suggest is to check if it is sufficient to make a special compiler setup to compile wxOSX/Cocoaas as C++ wrapper around GNUstep. So it may even almost exist but nobody did have the idea to make use of it. And it may be a much more manageable task than inventing a new wrapper and make people use it.
>
> Now I see a nice benefit of such a project: get any source package from github (e.g. KiCAD) that uses wxWidgets, compile it with wxGNUstep and get a harmonized look and feel inside a GNUstep desktop...
>
>



reply via email to

[Prev in Thread] Current Thread [Next in Thread]