Hey Conr2d, On 6 December 2016 at 13:33, Conrad Um <con...@gmail.com> wrote:
> Dear friends, > > I'm a big fan of vala (if you don't know what vala is, please see this link > <https://wiki.gnome.org/Projects/Vala>), and writing a vala binding > generator for EFL. > > Vala has a syntax similar to C# and has managed feature based on reference > counting, but basically it just converts .vala files to .c files to compile > them with gcc and gobject library. > > My experimental generator can create VAPI files for having vala recognize C > APIs, but only support compact class type which is not a full-featured vala > class type. > (Because complete vala class is based on gobject system. You can see the > difference of compact and complete class here > <https://wiki.gnome.org/Projects/Vala/FAQ#What_does_.5BSimpl > eType.5D_and_.5BCompact.5D_in_bindings_mean.3F> > .) > If I want to use all features supported in vala, I should make a wrapper > class like in eolian_cxx. > > By the way, it comes to my mind that makes vala generate c code based on eo > instead of gobject. It can be used by application developers, but I think > even EFL developers can write libraries with modern language. > > Currently, we should write 2 files (.c and .eo) per class at least. > However, vala with eo backend only requires 1 vala file. > > For example, > > public class Elm.Button : Elm.Layout, Efl.Ui.Clickable, > Elm.Interface.Atspi_Widget_Action > { > /* elm_widget_button.h, contents of private header */ > private double ar_initial_timeout; > private double ar_gap_timeout; > private Ecore.Timer? timer; // question mark means nullable > private bool repeating; > > /* events */ > public signal void clicked(); > public signal void repeated(); > > /* elm_button.c, property setter/getter body */ > public bool autorepeat { > set { > timer = null; // To assign null to 'timer' will unref timer. > autorepeat = value; > repeating = false; > } > get { > return autorepeat & admits_autorepeat; > } > } > > /* elm_button.c, private function body */ > private void activate() { > timer = null; > repeating = false; > /* if property getter is set, the next condition will be (!disabled > && !freeze_events) */ > if (!disabled_get() && !freeze_events_get()) > clicked(); // invokes callbacks for "clicked" events > } > > /* elm_button.c, override Efl.Canvas.Group.group_add() */ > public override group_add() { > base.group_add(); // efl_super > sub_object_parent_add(); > > /* lambda expression */ > resize_obj.signal_callback_add("elm,action,click", "*", (emission, > source) => > { > activate(); > }); > > access_object_register(resize_obj); > can_focus_set(true); > > theme_set("button", "base", style_get()); > } > ... > } > > With vala file like above, valac (vala compiler) with eo backend will be > able to generate several files we need. (public header, private header, c > file including .c and .eo.c contents) > Moreover, header and c files generated by valac are simple c source files, > so they can be compiled with existing code or c file written in c from the > beginning (not generated). > I know all EFL developers are C expert, and you may never feel need of > redundant tools except for C. However I think if you want EFL to advance > further and continuously, we should investigate how we can adapt modern > concepts, knowledge and ideas on our works. > > It's just a suggestion, but if there is any one interested in this idea, we > can start new project for the future. :D > I was wondering when you would go public with your idea :) Will you publish your current code somewhere? You have a private repo on git.e.org. I think this is really cool as it seems to generate a (almost?) zero-overhead binding in a friendly language. I know nothing about C# or Vala, although I know they only look similar, they are not the same language. I doubt we would use this inside the EFL codebase itself but I can definitely see the value in a new language binding. If only the EFL interfaces could be completed already... Best regards -- Jean-Philippe André ------------------------------------------------------------------------------ Developer Access Program for Intel Xeon Phi Processors Access to Intel Xeon Phi processor-based developer platforms. With one year of Intel Parallel Studio XE. Training and support from Colfax. Order your platform today.http://sdm.link/xeonphi _______________________________________________ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel