[prev in list] [next in list] [prev in thread] [next in thread] 

List:       enlightenment-devel
Subject:    Re: [E-devel] EET minor details
From:       "Cedric BAIL" <cedric.bail () free ! fr>
Date:       2008-04-28 16:05:13
Message-ID: 7625e9d90804280905h1c3f7b1cqd15c618924ad5185 () mail ! gmail ! com
[Download RAW message or body]

On Mon, Apr 28, 2008 at 5:04 PM, Gustavo Sverzut Barbieri
<barbieri@profusion.mobi> wrote:
> On Mon, Apr 28, 2008 at 8:57 AM, Cedric BAIL <cedric.bail@free.fr> wrote:
>  > On Mon, Apr 28, 2008 at 4:31 AM, Gustavo Sverzut Barbieri
>  >  <barbieri@profusion.mobi> wrote:
>  >  >  The SoC student for python-eet (Luiz Irber) is doing the project even
>  >  >  without Google's money, so while reading the code in order to do
>  >  >  proper mentoring I found some minor details. If you're ok with them,
>  >  >  the student can provide patches for these and I can commit.
>  >
>  > >  3 - why not make EET_T_* and EET_G_* enums and use them in functions?
>  >  >  4 - in many places we use the construction:
>  >  >        len = strlen(str);
>  >  >        strcpy(copy, str);
>  >  >     why not use memcpy() since we already know the size?
>  >  >  5 - in other places it's bit worse:
>  >  >      copy = strdup(str);
>  >  >      len = strlen(str);
>  >  >    this should be replaced with (will save 1 walk of the whole string):
>  >  >      len = strlen(str);
>  >  >      copy = malloc(len + 1);
>  >  >      memcpy(copy, str, len + 1);
>  >
>  >  This should be part of a big refactor of eet code.
>
>  yes, but this don't need to be part of a big refactor, it can come in
>  small patches by GSoC students! :-)

Yep, it can come with small patch, but I would really like them to
came after 1.0.1.

>  >  >  6 - from 4 and 5 it also look that we should keep the string size
>  >  >  around and use it instead of these str* variants...
>  >
>  >  I already tracked all source of slow down inside eet_data due to str*,
>  >  i left the one that doesn't impact performance. But I am definitively
>  >  thinking about keeping the string size around, this should be also
>  >  part of a refactor.
>
>  I know keeping the size may not pay off sometimes, specially with
>  smaller strings. But again, one looking at it and checking where is
>  desirable to keep an integer with this is a good thing to do. Again, a
>  great job for students, we can help by reviewing the patches.

I personnaly don't care who write the code, well that's not true, if
someone else than me is doing it, and do it well, it's much better :-)

>  >  >  9 - minor weirdness in casts... not respecting const where it could
>  >  >  (eet_data_{get,put}_*), unneeded casts for malloc.
>  >  >  10 - some code paths could be split into functions and be reused, to name one:
>  >  >              if (data)
>  >  >                {
>  >  >                   echnk = eet_data_chunk_new(data, size, ede->name,
>  >  >  ede->type, ede->group_type);
>  >  >                   eet_data_chunk_put(ed, echnk, ds);
>  >  >                   eet_data_chunk_free(echnk);
>  >  >                   free(data);
>  >  >                   data = NULL;
>  >  >               }
>  >  >     this is replicated all over the code...
>  >
>  >  This should be also part of refactoring the code.
>
>  again, this can be a small patch for today's EET and done by our dear
>  students. As raster pointed out at IRC we may have just 5 of these,
>  but yet, a student can just move this to a function, test and provide
>  the patch... maybe it will bring us developers more work to explain
>  how to provide a good patch than to fix it ourselves, but at least it
>  will get more people involved in the code.

>  >  >  11 - split dump code from decode... at least move the code inside if
>  >  >  (dumpfunc) to another func, it will make code easier to read and still
>  >  >  might make it a bit fast, because most used functions will be smaller.
>  >
>  >  I was thinking about adding a way for some generic pretty printer, so
>  >  it would be easy to write another kind of output. Like a json output,
>  >  or maybe directly the javascript internal object for me. This kind of
>  >  improvement would also help writing support in other scripting langage
>  >  when you want to do eet->script objects.
>  >
>  >  So if people agree, I am thinking we can plan to :
>  >  - Add unit test and covering to eet with cutest
>  >  - Refactorise/clean code of eet_data
>  >  - Add array support to eet_data
>  >  - Add "generic" pretty printer for script binding (use it later to
>  >  provide undump) to eet_data
>  >  - Add optional support for symetric crypto support per section in
>  >  eet_lib (could be usefull for private config)
>  >
>  >  This could be the todo for version 2.0. I will not start working on
>  >  this until 1 or 2 months, so if others want to help. But first make a
>  >  1.0.1 with all small fix before we start breaking thing and add new
>  >  features.

>  yeah, I discussed this a bit at IRC (but you were away), the idea was
>  to split the decoder walker from the part that construct the data or
>  output the contents. In a simple implementation we can just provide a
>  callback to be called with type, group_type, data and size. Then even
>  the C implementation could be build on top of it, also the
>  text-dump... and of course Python or JavaScript or Ruby :-)

Yep, that was my idea too. It's good to know that someone else is
going to help on this. I will help reviewing code and answer questions
on this subject.

-- 
Cedric BAIL

-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Don't miss this year's exciting event. There's still time to save $100. 
Use priority code J8TL2D2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic