Commit Graph

972 Commits

Author SHA1 Message Date
Daniel Kolesa ee8cdc5411 elua: group messages with the same contents together, generate grouped line info 2014-06-10 15:48:52 +01:00
Daniel Kolesa 7cf6a8abb0 elua: line information in the generated output 2014-06-10 15:48:52 +01:00
Daniel Kolesa a0b8f72ae9 elua: respect msgstr prefix and suffix in xgettext 2014-06-10 15:48:52 +01:00
Daniel Kolesa b638f4d034 elua: respect comment tags in the lexer 2014-06-10 15:48:52 +01:00
Daniel Kolesa b2af5ff97e elua: pass opts, flags around 2014-06-10 15:48:52 +01:00
Daniel Kolesa 0e5f9bc151 elua: change xgettext lexer to never include delimiters and also expand \n escape sequence in short strings to actual newline (no other escapes get this treatment) 2014-06-10 15:48:52 +01:00
Daniel Kolesa 297f9a821a elua: almost functional xgettext generator 2014-06-10 15:48:52 +01:00
Daniel Kolesa d8010702e8 elua: initial stuff for the xgettext generator, check existence of all input files beforehand in the app, and other fixes 2014-06-10 15:48:52 +01:00
Daniel Kolesa a98b916a74 elua: get_cmdline_from_argv cleanup + use _popen on windows 2014-06-10 15:48:52 +01:00
Daniel Kolesa 4311dc0439 elua: fclose before realpath 2014-06-10 15:48:52 +01:00
Daniel Kolesa 489b5fac11 elua: do not use fork in our "array popen" impl; instead serialize args in a platform specific way 2014-06-10 15:48:52 +01:00
Daniel Kolesa 6558d1ccc9 elua: reformat C source to EFL style 2014-06-10 15:48:52 +01:00
Daniel Kolesa 5f1e08bddf elua: remove prefix stripping from lualian 2014-06-10 15:48:52 +01:00
Daniel Kolesa 6614d02a69 elua: update lualian against latest eolian API 2014-06-10 15:48:52 +01:00
Daniel Kolesa 6896f2949e elua: xgettext parser: proper keyword parsing 2014-06-10 15:48:51 +01:00
Daniel Kolesa a47dc77a8a elua: xgettext parser argument parsing 2014-06-10 15:48:51 +01:00
Daniel Kolesa 812a601548 elua: extend the xgettext parser a bit 2014-06-10 15:48:51 +01:00
Daniel Kolesa 839ce0f651 elua: xgettext keyword fix 2014-06-10 15:48:51 +01:00
Daniel Kolesa b168a515e2 elua: sanitize keywords and extract info in xgettext (include default keywords for lua), dgettext and dngettext compatibility calls 2014-06-10 15:48:51 +01:00
Daniel Kolesa 00bec70b69 elua: initial work on parser part of the extractor 2014-06-10 15:48:51 +01:00
Daniel Kolesa 3f4fd784c2 elua: file search function 2014-06-10 15:48:51 +01:00
Daniel Kolesa 7c449a14e1 elua: make xgettext use excluded_files, do some re-mappings, and have a default search dir 2014-06-10 15:48:51 +01:00
Daniel Kolesa 02ef160621 evil: add fork, adjust elua to use that 2014-06-10 15:48:51 +01:00
Daniel Kolesa 9c42595225 elua: popenv fix (read proper stack items as args), getopt fix (fixed array append), xgettext: use cutil.popenv 2014-06-10 15:48:51 +01:00
Daniel Kolesa e9b555c57b elua: popenv function 2014-06-10 15:48:51 +01:00
Daniel Kolesa a04948c02f elua: fork_win cleanup 2014-06-10 15:48:51 +01:00
Daniel Kolesa 420f7a869a elua: include fork_win.c in compilation 2014-06-10 15:48:51 +01:00
Daniel Kolesa 88ca0dbf3f elua: custom non-shell popen implementation 2014-06-10 15:48:51 +01:00
Daniel Kolesa 30415f9261 elua: fork impl for windows 2014-06-10 15:48:51 +01:00
Daniel Kolesa fd6c1f6888 elua: comment is a valid token in xgettext 2014-06-10 15:48:51 +01:00
Daniel Kolesa 5b7f44ea5b elua: add build_args function to core cutil library, for building normalized args string in a platform independent way 2014-06-10 15:48:51 +01:00
Daniel Kolesa 9bb3667e2b elua: xgettext is again at least partially functional 2014-06-10 15:48:51 +01:00
Daniel Kolesa 139502dc76 elua: handle all xgettext args correctly 2014-06-10 15:48:51 +01:00
Daniel Kolesa b1bfd90d40 elua: xgettext progress, currently broken 2014-06-10 15:48:51 +01:00
Daniel Kolesa 708aaeeb12 elua: pass opts to callback 2014-06-10 15:48:51 +01:00
Daniel Kolesa 6d739a8746 elua: ngettext support 2014-06-10 15:48:51 +01:00
Daniel Kolesa 63ccaee7fd elua: ability to specify custom opts table for each desc in getopt 2014-06-10 15:48:51 +01:00
Daniel Kolesa bc2b6b503f elua: simplified getopt (allocates fewer tables) 2014-06-10 15:48:51 +01:00
Daniel Kolesa 01a4fd89d2 elua: do not include the : in arg[0] 2014-06-10 15:48:51 +01:00
Daniel Kolesa ab05d47d7c elua: free format buffers immediately 2014-06-10 15:48:51 +01:00
Daniel Kolesa e8b356858b elua: never pcall in format, instead keep track of the types properly 2014-06-10 15:48:51 +01:00
Daniel Kolesa ebbce82403 elua: perform conversion beforehand 2014-06-10 15:48:51 +01:00
Daniel Kolesa 654653bc4a elua: check types manually instead of pcall in one place for format 2014-06-10 15:48:51 +01:00
Daniel Kolesa 5eccfb29b7 elua: some more checking for no value 2014-06-10 15:48:51 +01:00
Daniel Kolesa 0c7b3e5d6b elua: format bug fix 2014-06-10 15:48:51 +01:00
Daniel Kolesa b304316b81 elua: better error handling for format 2014-06-10 15:48:51 +01:00
Daniel Kolesa 3da9de3d41 elua: use string buffer in all places for format plus extra optimizations 2014-06-10 15:48:50 +01:00
Daniel Kolesa a6e50fa9c7 elua: use custom string buffer impl for format (avoids multiple table allocs and calls to string.char) 2014-06-10 15:48:50 +01:00
Daniel Kolesa 8738ca957d elua: slight optimization of format func 2014-06-10 15:48:50 +01:00
Daniel Kolesa 006a49ddda elua: relatively slow but very powerful string formatter with support for positional and named format arguments, invoked via % 2014-06-10 15:48:50 +01:00
Daniel Kolesa e33efdb745 elua: xgettext: support for -X 2014-06-10 15:48:50 +01:00
Daniel Kolesa c0baa15b11 elua: insert input files always after opts 2014-06-10 15:48:50 +01:00
Daniel Kolesa d90bba655f elua: expand the input file lists for xgettext call (we want to leave out lua files) 2014-06-10 15:48:50 +01:00
Daniel Kolesa bebe011676 elua: use the new app loading system 2014-06-10 15:48:50 +01:00
Daniel Kolesa 544bf37c30 elua: a general system for application loading without having to specify explicit path 2014-06-10 15:48:50 +01:00
Daniel Kolesa 85367d35be elua: match file extensions in a case insensitive way 2014-06-10 15:48:50 +01:00
Daniel Kolesa 38ae60f744 elua: more checks 2014-06-10 15:48:50 +01:00
Daniel Kolesa 69a64dd620 elua: a bit more informative getopt plus better arg handling when calling to xgettext 2014-06-10 15:48:50 +01:00
Daniel Kolesa 344c1cbaf1 elua: more informative getopt 2014-06-10 15:48:50 +01:00
Daniel Kolesa 55b7973e56 elua: xgettext lexer enhancements 2014-06-10 15:48:50 +01:00
Daniel Kolesa 23c27f06c5 elua: simplified source 2014-06-10 15:48:50 +01:00
Daniel Kolesa b71231d93d elua: typo fix 2014-06-10 15:48:50 +01:00
Daniel Kolesa 341d8a9168 elua: typo fix 2014-06-10 15:48:50 +01:00
Daniel Kolesa dd8e3b433f elua: use an appropriately sized buffer 2014-06-10 15:48:50 +01:00
Daniel Kolesa 6220dd5968 elua: lexer for xgettext 2014-06-10 15:48:50 +01:00
Daniel Kolesa cbeaf5b58a elua: utility func to exec a process (without spawning a shell like os.execute) 2014-06-10 15:48:50 +01:00
Daniel Kolesa 58409c521a elua: trigger xgettext execution from xgettext.lua, which is executed by xgettext_wrapper 2014-06-10 15:48:50 +01:00
Daniel Kolesa 4dfec82877 elua: support the EFL_RUN_IN_TREE environment variable 2014-06-10 15:48:50 +01:00
Daniel Kolesa 57ebf0e02c elua: initial code for xgettext.lua, a xgettext variant that supports lua
will be used to handle i18n for lua files in EFL (because only gettext 0.18.3+ supports Lua) and it'll be usable standalone too, it will also be able of handling more things than lua support in xgettext does (e.g. concatenated string literals will be considered one string)
2014-06-10 15:48:50 +01:00
Daniel Kolesa 3fd4399c6f elua: allow description of positional arguments in help in getopt (using metavar field without short/long) 2014-06-10 15:48:50 +01:00
Daniel Kolesa c427742634 elua: support for omitting things from help 2014-06-10 15:48:50 +01:00
Daniel Kolesa 3c42301f00 elua: in/out fix 2014-06-10 15:48:50 +01:00
Daniel Kolesa 176e41020d elua: remove leftover 2014-06-10 15:48:50 +01:00
Daniel Kolesa 98192dd8c3 elua: we don't need to include func name in conversion funcs (they're all the same...), also print out the required conversion functions during gen 2014-06-10 15:48:50 +01:00
Daniel Kolesa 13f3c616d5 elua: pass ownership information to converters 2014-06-10 15:48:49 +01:00
Daniel Kolesa e90973e5cb elua: eolian fix (return nil instead of null in type_information_get), generate different names for type conversion funcs 2014-06-10 15:48:49 +01:00
Daniel Kolesa a0838343cb elua: lualian reorg 2014-06-10 15:48:49 +01:00
Daniel Kolesa 5b307c282b elua: support for list appends in elua.getopt 2014-06-10 15:48:49 +01:00
Daniel Kolesa f0330e5692 elua: alignment 2014-06-10 15:48:49 +01:00
Daniel Kolesa 7eff92c055 elua: getopt help alignment 2014-06-10 15:48:49 +01:00
Daniel Kolesa 15dd9dd623 elua: enforce posixly_correct in getopt_long of elua 2014-06-10 15:48:49 +01:00
Daniel Kolesa ae4daa5401 elua: also use hash fields to store resulting optional arguments 2014-06-10 15:48:49 +01:00
Daniel Kolesa 8c5cfce2a4 elua: if script returns true, do not start the main loop 2014-06-10 15:48:49 +01:00
Daniel Kolesa a94c216442 elua: match help categories in a case insensitive way, and add them to lualian 2014-06-10 15:48:49 +01:00
Daniel Kolesa e293536915 elua: getopt: support for categories in help callback, fix newline insertion in help 2014-06-10 15:48:49 +01:00
Daniel Kolesa d3d09f7df6 elua: support for return values in getopt help 2014-06-10 15:48:49 +01:00
Daniel Kolesa bdecee2eca elua: support for help categories in getopt 2014-06-10 15:48:49 +01:00
Daniel Kolesa 310a8ab13b elua: support for "done" callback in getopt 2014-06-10 15:48:49 +01:00
Daniel Kolesa 131826a083 elua: error callback in getopt 2014-06-10 15:48:49 +01:00
Daniel Kolesa c9b1378217 elua: use callbacks more in lualian 2014-06-10 15:48:49 +01:00
Daniel Kolesa 46f07a670e elua: getopt support for callbacks 2014-06-10 15:48:49 +01:00
Daniel Kolesa cde3ce5220 elua: smarter progname replacement in getopt 2014-06-10 15:48:49 +01:00
Daniel Kolesa 1afd1e6f27 elua: getopt api improvement 2014-06-10 15:48:49 +01:00
Daniel Kolesa 3130a0ec20 elua: remove license printing 2014-06-10 15:48:49 +01:00
Daniel Kolesa 8056a85428 elua: support for default domain in gettext module 2014-06-10 15:48:49 +01:00
Daniel Kolesa aaaf103234 elua: gettext cleanups, use ffi for calling into gettext to speed it up 2014-06-10 15:48:49 +01:00
Daniel Kolesa 76b445fb6d elua: i18n/l10n support including gettext module for user apps, bump gettext requirement to 0.18.3 (required for lua support in xgettext) 2014-06-10 15:48:49 +01:00
Daniel Kolesa 7876dd579f elua: lualian: remove out/inout support on keys 2014-06-10 15:48:49 +01:00
Daniel Kolesa 754f0fee79 elua: lualian: with directory scanning in, there is no need to do this anymore 2014-06-10 15:48:49 +01:00
Daniel Kolesa 4f7cdefbee elua: geometry and size parsing support in getopt 2014-06-10 15:48:49 +01:00
Daniel Kolesa 6da958d462 elua: initial support for complex types in lualian plus bug fixes 2014-06-10 15:48:49 +01:00
Daniel Kolesa 6a5057ef0d elua getopt: support for optional values 2014-06-10 15:48:49 +01:00
Daniel Kolesa e2f912aa03 elua: remove getopt-like interface from getopt.lua, use descs directly instead, and add a system of aliases (optional) 2014-06-10 15:48:48 +01:00
Daniel Kolesa e742b758d2 elua: do not use ecore_getopt, getopt.lua improvements and fixes, initial lualian generator script, lualian module changes 2014-06-10 15:48:48 +01:00
Daniel Kolesa 17be497fc2 elua: help support in getopt 2014-06-10 15:48:48 +01:00
Daniel Kolesa 975ca2634f elua: declarative version of the getopt function 2014-06-10 15:48:48 +01:00
Daniel Kolesa 27a5151bd8 elua: getopt module 2014-06-10 15:48:48 +01:00
Daniel Kolesa cefd51b955 elua: adjust module system for injection into loaded table nad preload, lualian can now inject inside of existing modules 2014-06-10 15:48:48 +01:00
Daniel Kolesa 942d684825 elua: register classes in lualian generated code 2014-06-10 15:48:48 +01:00
Daniel Kolesa d301b5bb84 elua: use actual class_get functions instead of placeholder 2014-06-10 15:48:48 +01:00
Daniel Kolesa 10c68c59c8 elua: generate a default constructor if none provided 2014-06-10 15:48:48 +01:00
Daniel Kolesa 3b053abdac elua: lualian support for non-default constructors, and a fix in event generation 2014-06-10 15:48:48 +01:00
Daniel Kolesa ad2aa8e9a9 elua: basic constructor generation in lualian 2014-06-10 15:48:48 +01:00
Daniel Kolesa 2f678f862d elua: make it possible to return values from constructors 2014-06-10 15:48:48 +01:00
Daniel Kolesa 437c2cf68f elua: event fix 2014-06-10 15:48:48 +01:00
Daniel Kolesa c2d581631b elua: functional event generation 2014-06-10 15:48:48 +01:00
Daniel Kolesa 92f6397b96 elua: event ffi generation 2014-06-10 15:48:48 +01:00
Daniel Kolesa fd34396c0e elua: initial code for lualian events and remove default constructor nonsense 2014-06-10 15:48:48 +01:00
Daniel Kolesa b79bd85f8f elua: more refined type conversions in lualian 2014-06-10 15:48:48 +01:00
Daniel Kolesa f415c10f41 elua: specialize Evas_Coord 2014-06-10 15:48:48 +01:00
Daniel Kolesa f9ee9e8673 elua: get rid of a warning 2014-06-10 15:48:48 +01:00
Daniel Kolesa 8b83976295 elua: better lualian type conversions 2014-06-10 15:48:48 +01:00
Daniel Kolesa 097f02bcc7 elua: basic type conversion support in lualian 2014-06-10 15:48:48 +01:00
Daniel Kolesa 5b29cc38e1 elua: check for property/method scope in lualian (don't generate code for protected methods as they're only usable within implementations) 2014-06-10 15:48:48 +01:00
Daniel Kolesa a9d3df6523 elua: class prefix stripping support 2014-06-10 15:48:48 +01:00
Daniel Kolesa 6e119370e9 elua: wrap multiple-return properties 2014-06-10 15:48:48 +01:00
Daniel Kolesa b2aa896932 elua: lualian can now generate methods 2014-06-10 15:48:48 +01:00
Daniel Kolesa 2cb887be13 elua: bindings fixes, lualian can now generate properties correctly (doesn't perform type conversions yet) 2014-06-10 15:48:48 +01:00
Daniel Kolesa 567ff9f0b3 elua: fixes and more lualian stuff 2014-06-10 15:48:47 +01:00
Daniel Kolesa 534818eaba elua: more lualian functionality 2014-06-10 15:48:47 +01:00
Daniel Kolesa aae4567b4d elua: eina bindings fixes, include support in lualian 2014-06-10 15:48:47 +01:00
Daniel Kolesa 7508be9cdb elua: mixin 2014-06-10 15:48:47 +01:00
Daniel Kolesa b930c9c432 elua: property support in object system, lualian progress, initial (incomplete) eo bindings 2014-06-10 15:48:47 +01:00
Daniel Kolesa 2ba2b1f6bf elua: initial code for lualian, a luajit binding generator based on eolian 2014-06-10 15:48:47 +01:00
Daniel Kolesa 08e0fea8ca elua: list and readonly object fixes 2014-06-10 15:48:47 +01:00
Daniel Kolesa 588d06d157 elua: fixes 2014-06-10 15:48:47 +01:00
Daniel Kolesa c12b55696d elua: the -E parameter now works (ignores env vars) 2014-06-10 15:48:47 +01:00
Daniel Kolesa 473549219e elua: overridable core+modules directory paths (via command line argument or environment variables) plus support for extra lib paths via -L 2014-06-10 15:48:47 +01:00
Daniel Kolesa 6c8fc0a87e elua: add Readonly_Object to util.lua (its instances are read only userdata, requires special care, but is not intended for the user), use it in List 2014-06-10 15:48:47 +01:00
Daniel Kolesa 210cfb81e2 elua: use standard error() call instead of returning true/false in module init 2014-06-10 15:48:47 +01:00
Daniel Kolesa bce656b93f elua: benchmark module, plus return values for init/shutdown 2014-06-10 15:48:47 +01:00
Daniel Kolesa da9fbe677f elua: initial eina_file bindings, iterator container retrieval support and cleanup of main.c 2014-06-10 15:48:46 +01:00
Daniel Kolesa b3c36138f9 elua: elm test entry 2014-06-10 15:48:46 +01:00
Daniel Kolesa 68de26604c elua: start binding Eina
Added initial eina logging module, added library handling utility funcs in util.lua, added .gitignores
2014-06-10 15:48:46 +01:00
Daniel Kolesa 137be43b49 elua: util module, object system, organization 2014-06-10 15:48:46 +01:00
Daniel Kolesa 063dd4147e elua: use Eina_File (mmap) 2014-06-10 15:48:46 +01:00
Daniel Kolesa 26dc3505bc elua: 100% compatible module system 2014-06-10 15:48:46 +01:00
Daniel Kolesa dbaa103d1e elua: make the custom module system default 2014-06-10 15:48:46 +01:00
Daniel Kolesa 832f652a5a Elua: initial commit
Elua is a LuaJIT based runtime for the EFL meant to provide facilities for rapid application development. The name is temporary. The EFL bindings will be generated with Eolian. @feature
2014-06-10 15:48:46 +01:00
Daniel Zaoui 2160d0f27a Eolian/Generator: use a specific define for the Eo APIs.
The generation of EOAPI instead of EAPI for the Eo functions is only
needed for code readibility.
2014-06-10 07:57:09 +03:00
Daniel Zaoui 4c1cf87419 Eolian/Generator: Fix comments generation.
This patch:
- removes the @def from Doxygen, as it is not correct for API
functions.
- fixes the generation of class comments. When no class description is
supplied, no comment should be added.
2014-06-09 10:09:15 +03:00
Daniel Zaoui 233650ed9d Eolian/Generator: concentrate the function name calculation to one
place.

Instead of having the calculation (class name + function name + set/get)
in many places in the code, it is now in one place and accessible via a
function environment structure.
2014-06-08 12:41:18 +03:00
Daniel Zaoui fc2a983ab9 Eolian/Generator: remove unused code.
The removed code was needed for Eo1 and is no more necessary.
2014-06-08 12:40:42 +03:00
Daniel Zaoui e7faaf9fc5 Eolian/Generator: Fix Windows issue during string manipulation.
For Windows, it is simpler to replace all the \r\n with \n after having
read the file.
2014-06-05 11:34:44 +03:00
Daniel Zaoui 5c55ce49e6 Eolian: rename internal files.
This files were needed to be renamed a long time ago :-)
2014-06-05 10:11:13 +03:00
Daniel Zaoui 97913753ea Eolian: Fix Coverity issue.
In a certain case, the function was returning without releasing all the
resources.

CID 1220084
2014-06-05 07:40:26 +03:00
Guillaume Friloux 732f1c2a1b Fix gcc warning about uninitialized variable. 2014-06-03 16:37:50 +02:00
Tom Hacohen 26ea65b470 Eolian CXX: Remove unneeded Eo.h include.
Eo.h depends on things that are generated by normal Eolian, and because Eolian C++
is generating code pre-build (WHY THE FUCK???), the dependencies are missing.

This removes the stupid include, but a more proper fix would be to move eolian_cxx
to be part of the build process and not pre-build.
2014-06-03 13:41:38 +01:00
Tom Hacohen 62a3522fcc Eolian cxx: Fix it to use the right class names.
This is following the class name change in normal eolian.
2014-06-03 11:28:01 +01:00
Daniel Zaoui 03647b4279 Eolian: Use class name and not prefix in the class macro.
So for example a class called Eo_Base with prefix: eo, used to be
generated to EO_CLASS instead of EO_BASE_CLASS.
2014-06-03 11:26:58 +01:00
Daniel Zaoui 7a83c9c659 Eolian: Fix bad behavior when the .eo is incorrect
In this case, the section 'implements' contains bad information about the
function to override. If the first (at least) function is correct, it
will never fail but use the last correct information retrieved from the
database.
The patch fixes it by checking the result of the database function
eolian_implement_information_get.

@fix
2014-06-03 08:58:05 +03:00
Daniel Zaoui dc3178404f Eolian: modify 'implement' API parameters.
The function eolian_implement_information_get was returning strings for
the class and the function. It was written in this way at the beginning
because it was not needed to verify the correctness of the class and
the function.
Now that we have the namespace feature, this function must check it,
meaning that the class and the function are now known.
So we can return them instead of returning the strings.

The generators had to find the class from the classname. It is no more
needed.

The C++ generator has been adapted to this new API.
2014-05-29 14:48:05 +03:00
Daniel Zaoui fb6209f083 Eolian: modify generators to use internal variables environment. 2014-05-29 10:04:01 +03:00
Daniel Zaoui d9e177e61b Eolian: add the super invocation for developer code generation.
Now the eo_do_super is invoked for constructors overridding in a
inheriting class.
2014-05-29 10:03:45 +03:00
Daniel Zaoui cb499ab28e Eolian: Add an internal environment for class variables.
To reduce the invocations to strings conversions, we store the
classname, the Eo prefix in upper and lower cases in global variables.
The problem comes when we have to handle overriding functions. A lot of
conflicts between class base and class inheriting can happen.

The chosen solution is to create independent environments storing the
converted strings.
2014-05-29 09:58:27 +03:00
ChunEon Park dc945ccb55 edje/epp - clean up memory allocated. 2014-05-27 22:17:01 +09:00
ChunEon Park b2841c0db6 edje/edje_cc - intensive null check. 2014-05-27 22:00:59 +09:00
Daniel Zaoui b10a1b11f1 Eolian: fix coverity issues.
CID 1216274
CID 1216275
CID 1216276
CID 1216277
CID 1216278
CID 1216279
CID 1216280
2014-05-27 08:22:40 +03:00
Daniel Zaoui 0b33a142b1 Eolian: fix generation when optimization is set.
When using -O2 or -O3, the Eina_Bool legacy_support (unsigned char) was
overriding the int eo_needed.

The result was a failure during options check:
Eo flag is not specified (use --eo). Aborting eo generation.

@fix
2014-05-26 15:37:33 +03:00
Daniel Zaoui a1e72dee0d Eolian/Generator: add support to namespaces.
The C generators now support namespaces generation.
2014-05-26 13:56:06 +03:00
Daniel Zaoui 62082548bc Eolian: modify API to allow future scalability
Until now, the functions giving access to class information were taking
the class name as parameter.
Except the fact that we needed to search into a hash table for the internal
class structure, no flexibility is possible.

This change consists in modifying most of the APIs using the class name
with a new Eolian_Class type and adapt the code of the C and C++
generators accordingly.
2014-05-26 13:56:06 +03:00
Daniel Zaoui 04cc813813 Eolian: add test for generator.
The test checks the dev code generator.
2014-05-26 13:56:06 +03:00
Daniel Zaoui a541aecf76 Eolian/Generator: add support for implementation source file.
By using -gi option, the generator appends the functions that are
present into the given eo file and missing into the developer file
(given via -o option as an in/out file).

@feature
2014-05-26 13:56:06 +03:00
Daniel Zaoui 0782e96c36 Eolian/Generator: fix the class description generation.
The class description was not used during the generation of the legacy
and Eo headers.
2014-05-14 14:52:58 +03:00
Mike Blumenkrantz 894c36ff11 de-elipsis edje
the word is "ellipsis". it's bad enough that we have released misspelled api, but we can at least spell things correctly internally.
2014-05-13 16:20:41 -04:00
Mike Blumenkrantz 03edef876f edje_cc now prints helpful warning messages when it compiles broken text parts 2014-05-13 16:05:39 -04:00
Mike Blumenkrantz 800bcde9d7 edje_cc should throw errors when inheriting a part from the same part 2014-05-13 11:15:02 -04:00
Mike Blumenkrantz a84f19beb7 redo lazEDC parsing a bit to fix desc.state omission 2014-05-09 15:58:25 -04:00
Mike Blumenkrantz 6a7b0af847 lazEDC missing keywords for scale/noscale 2014-05-09 12:33:47 -04:00
Mike Blumenkrantz 1d6b9d71e6 fix be9b27ac99 for edje_cc
do_params is set when expecting parameters, not req_params
2014-05-09 12:26:22 -04:00
Mike Blumenkrantz 14fc7d2a36 lazEDC syntax update: imprecise -> noprecise 2014-05-09 12:21:45 -04:00
Felipe Magno de Almeida 78564fac45 eolian-cxx: fix #include directives generation
Summary: Fix eolian_cxx #include directives generation for relative paths

Reviewers: cedric, stefan, stefan_schmidt

CC: cedric, savio

Differential Revision: https://phab.enlightenment.org/D833

Signed-off-by: Cedric Bail <cedric.bail@free.fr>
2014-05-09 12:39:49 +02:00
Mike Blumenkrantz c911ac2fb9 call edje_cc link combining when popping the group so the last group doesn't not get linked 2014-05-08 21:04:28 -04:00
Savio Sena 95f5c11703 eolian_cxx: fix install-examples and (post-install) compilation.
Summary:
This patch fixes T1226 by adding a Makefile.examples to
examples/eolian_cxx. It also fixes a bug in bin/eolian_cxx: the
include paths were not being correctly generated for directories
outside EFL tree.

Reviewers: cedric, smohanty, stefan_schmidt, stefan

CC: uartie, wayland-efl, felipealmeida, raster, woohyun, cedric

Maniphest Tasks: T1226

Differential Revision: https://phab.enlightenment.org/D824

Signed-off-by: Cedric Bail <cedric.bail@free.fr>
2014-05-07 23:40:46 +02:00
Daniel Zaoui 935db516b2 Eolian_CXX: Fix generation warnings.
Since there was a bug in Eolian (Spank on you Savio that you didn't tell
me :-)), the cxx generator needed some workaround that is no more
mandatory now.
2014-05-07 09:13:25 +03:00
Savio Sena e61004e30f eolian_cxx: remove warnings from bin and lib.
Reviewers: cedric, smohanty, stefan_schmidt, stefan

CC: felipealmeida, cedric

Differential Revision: https://phab.enlightenment.org/D826

Signed-off-by: Cedric Bail <cedric.bail@free.fr>
2014-05-07 00:18:43 +02:00
Savio Sena 2fdc88b33a eolian-cxx: Fixed the generation .eo.h path.
Summary: This patch fixes T1225

Reviewers: uartie

CC: uartie, wayland-efl, felipealmeida, cedric, smohanty, raster, stefan_schmidt, stefan, woohyun

Maniphest Tasks: T1225

Differential Revision: https://phab.enlightenment.org/D821
2014-05-05 13:09:28 -07:00
Mike Blumenkrantz caf27c4fc3 eldbus-codegen no longer passes garbage values to error callbacks
@fix
2014-05-04 20:37:27 -04:00
Felipe Magno de Almeida 8149823897 eolian-cxx: fix make distcheck and automake files for Eolian C++
Summary:
Fixed distcheck for Eolian C++. Made the generated files as
nodist so it doesn't get picked up for generation way too
early.

Reviewers: cedric, seoz

CC: cedric

Maniphest Tasks: T1220

Differential Revision: https://phab.enlightenment.org/D820

Signed-off-by: Cedric Bail <cedric.bail@free.fr>
2014-05-04 12:21:30 +02:00
Daniel Zaoui 9cd038fb36 Eolian: Fix Coverity issue CID1210805.
The list is not used anymore so it can be removed.
2014-05-04 07:41:46 +03:00
Savio Sena 46b6e8a563 eolian_cxx: initial version of the EFL C++ Bindings Generator.
Summary:
This patch adds 'eolian_cxx' -- a C++ bindings generator --
to the EFL tree. Eolian Cxx uses Eolian API to read .eo files and generate
.eo.hh. It relies/depends on Eo Cxx and Eina Cxx (both non-generated
bindings).

src/bin/eolian_cxx: The eolian_cxx program.
src/lib/eolian_cxx: A header-only library that implements the C++ code
generation that binds the .eo classes.

=Examples=

src/examples/eolian_cxx/eolian_cxx_simple_01.cc: The simplest example,
it just uses some "dummy" generated C++ classes.

src/examples/eolian_cxx/eolian_cxx_inherit_01.cc: Illustrates how
pure C++ classes inherit from .eo generated classes.

src/examples/evas/evas_cxx_rectangle.cc: More realistic example using
the generated bindings Evas Cxx. Still a bit shallow because we don't
have full fledged .eo descriptions yet, but will be improved.

=Important=

The generated code is not supported and not a stable API/ABI. It is
here to gather people interest and get review before we set things in
stone for release 1.11.

@feature

Reviewers: cedric, smohanty, raster, stefan_schmidt

CC: felipealmeida, JackDanielZ, cedric, stefan

Differential Revision: https://phab.enlightenment.org/D805

Signed-off-by: Cedric Bail <cedric.bail@free.fr>
2014-05-03 00:56:32 +02:00
Mike Blumenkrantz 7823b187d9 edje_cc now requires quotes for using lazEDC block naming
this was making syntax errors much harder to debug and only served the purpose of further enabling shitty, nonconformant edc creating. removing now before it becomes an api break
2014-04-28 10:17:23 -04:00
Daniel Zaoui 7f90088232 Eolian/Generator: only requests .eo files parsing when needed.
Before this change, all the .eo files of the directories given with -I
option were parsed. Most of this information was not necessary at all,
since only the classes belonging to the inheritance of the class given
as parameter were needed.
Now, during the parsing of the given class, the inherits classes are
searched and parsed.

A condition is needed to make it work well. To find a filename for a
class, we consider the lowercase of the class name as the filename we
have to parse.
e.g, Elm_Button -> elm_button -> elm_button.eo

It considerably reduces the generation time.

A fix in the tests was needed.
2014-04-27 10:03:39 +03:00
Daniel Zaoui e42b68534b Eolian: remove --eo1 support totally 2014-04-27 08:04:00 +03:00
Mike Blumenkrantz f482aeb43f fix edje_cc multiple link usage on same description 2014-04-26 02:16:55 -04:00
Mike Blumenkrantz b35dfc5f05 edje_cc now (more) correctly handles text filter inheriting/resetting 2014-04-25 10:52:15 -04:00
Mike Blumenkrantz 5f376fde36 edje now correctly supports text.source and text.text_source for swallowed parts
fix T1186
2014-04-25 10:52:15 -04:00
Mike Blumenkrantz d498f6f723 edje_cc no longer has "slave" lookups
these appear to have been replaced many centuries ago with copied_X lookups
2014-04-25 10:52:15 -04:00
Mike Blumenkrantz bce864b8dd edc parts.alias documentation is now comprehensible and useful 2014-04-25 10:52:15 -04:00
Mike Blumenkrantz 939f2eea7f edje now has the group.script_recursion flag for permitting unsafe embryo recursion
this is enabled for all scripts within a group, and it should only be used if you:

1) know what you are doing

2) know why this is unsafe (T905)

@feature
2014-04-25 10:52:15 -04:00
Mike Blumenkrantz c5b1598e6e edje_cc now supports part.description.link for single line state changes
@feature
2014-04-25 10:52:15 -04:00
Mike Blumenkrantz 83832d6b1d edje_cc now supports group.program_source for specifying a default source in programs
this allows for program.source to be omitted 99% of the time since most sources in an application/library will be the same within a single group

@feature
2014-04-25 10:52:15 -04:00
Mike Blumenkrantz fd8c9532a1 edje_cc now has the program.groups and X.target_group keywords for target grouping
this allows any number of parts/programs to be added by name into a logical grouping which can then be referenced inside a program.

eg.

before
------

program { signal: XYZ; source: 123;
   action: STATE_SET "default";
   targets: "sup" "dawg" "parts" "up" "in" "dis" "progrizzle";
}

program { signal: ABC; source: 123;
   action: STATE_SET "notdefault";
   targets: "sup" "dawg" "parts" "up" "in" "dis" "progrizzle" "tooizzle";
}

======
after
------

target_group: "default" "sup" "dawg" "parts" "up" "in" "dis" "progrizzle";

program { signal: XYZ; source: 123;
   action: STATE_SET "default";
   group: "default";
}

program { signal: ABC; source: 123;
   action: STATE_SET "notdefault";
   group: "default";
   target: "tooizzle";
}

@feature
2014-04-25 10:52:15 -04:00
Mike Blumenkrantz be9b27ac99 edje_cc now errors immediately on syntax errors triggered by lack of parameters 2014-04-25 10:52:15 -04:00
Mike Blumenkrantz c8cc776fb1 edje_cc now supports targets for SIGNAL_EMIT actions
this is much more intuitive than somehow knowing you're supposed to add a ':' between part:signal

@feature
2014-04-25 10:52:15 -04:00
Mike Blumenkrantz 6b712f6f02 edje_cc now supports the group.inherit_only attribute
use this for flagging a group as a "virtual" group which is only used for inheriting

@feature
2014-04-25 10:52:14 -04:00
Mike Blumenkrantz 7eb703fdde edje_cc now supports "lazEDC", a more concise version of EDC
in today's modern world of fast-paced, HTML5-driven, C++-riddled
development, nobody wants to spend hours typing out long words like
"description" or "mouse_events" or "name". there's no time for it
and certainly nobody is going to allocate budget for this sort of
keyboard-related nonsense.
enter lazEDC: the solution for edje-loving keyboard jockeys everywhere.
by breaking the parser of edje_cc with the strength of 10 frenchmen,
new, shorter keywords such as "nomouse" can be used in place of lengthy,
rambling statements like "mouse_events: 0", and things like

part { name: "clip"; type: RECT; description { state: "default" 0.0; }}

can now be written as

rect { "clip"; }

with the exact same effect.

initial tests show that complex and terrible edc files such as the infamous
"genlist.edc" can be reduced in size by over 15% using these new features.

see edcref for docs, and genlist.edc for examples

@feature

@awesome
2014-04-25 10:52:14 -04:00
bluezery 785cdcf689 edje: Remove build warnning by clang
Summary:
This can fix below warning:
bin/edje/edje_cc_handlers.c:9839:42: warning: equality comparison with
extraneous parentheses [-Wparentheses-equality]

Reviewers: raster, cedric, seoz

Reviewed By: seoz

CC: cedric

Differential Revision: https://phab.enlightenment.org/D792
2014-04-25 14:27:15 +09:00
Daniel Zaoui f36fac8ec6 Eolian: Remove useless functions.
Default ctor/dtor are considered as implemented functions and no more as
special functions.
2014-04-23 16:28:33 +03:00
Mike Blumenkrantz 7355f67c1f revert edje ellipsis doc changes
if we're reverting functional changes, then it's probably a good idea to revert the accompanying documentation
2014-04-23 09:28:23 -04:00
Carsten Haitzler f442c21c04 partly revert mike's ellipsis changes as they break edje
partly revert adcc323291 as the default
ellipsis value was 0 as per the document, and must stay, as changing
this breaks edc descirptions as now text is no longer ellipsised by
default. this ACTUALLY broke titlebars on the default theme - just
have a title that is too long and see how it no longer goes:

This is a title he...

it instead covers the screen for as long as the title is.

if you want -1 for ellipsis... then set it. :)
2014-04-23 19:57:15 +09:00
Yossi Kantor 026d7210c6 Eolian: Space after const missing in function parameters of legacy header 2014-04-23 10:35:04 +03:00
Daniel Zaoui 5ea1ffac5b Eolian/Generator: support --eo.
--eo1 is still supported but it will be removed soon.
2014-04-23 08:55:15 +03:00
Mike Blumenkrantz adcc323291 edje: the ellipsis fuckup preservation commit.
what a huge, colossal cock-up of a clusterfuck. it's a good thing nobody ever uses ellipses or edje. otherwise we'd probably get complaints about this kind of thing.
2014-04-22 20:21:46 -04:00
Jean-Philippe Andre 5ab3bd7b7d ecore_evas_convert: Fix default quality setting
Quality should not default to 100 unless specified in the
command line. In particular, we don't want to save ETC1 at
high quality by default since it can take hours (literally).
2014-04-18 19:07:34 +09:00
Jean-Philippe Andre f6eae69eb2 Edje: Use LOSSY_ETC1 instead of LOSSY
Add a new flag in EDC files to specify ETC1 compression
should be enabled. It follows the same rules as the
current LOSSY flag for JPEG compression.

@feature
2014-04-18 16:50:01 +09:00
Jean-Philippe Andre 7ff410b9f6 Edje: Fix ETC1 encoding with EET and Edje
There were a few critical issues:
- Invalid pointer arithmetics on the input data (char vs. int)
- Invalid logic in the pixel duplication code

All of these due to bad copy and paste :(

Also, use LZ4HC instead of LZ4 when compression is enabled.
ETC1 encoding is so damn slow you won't see the difference between
LZ4 and LZ4HC compression times.
2014-04-18 15:43:07 +09:00
Jean-Philippe Andre d531816b12 Edje: Add support for ETC1 encoding
Edje will compress images as ETC1 provided that they don't
contain any alpha AND the command line includes -etc1.
2014-04-18 15:43:04 +09:00
Daniel Zaoui 60fb57a3e5 Eolian/Generator: Fix coverity issues.
Fix CID 1203409
Fix CID 1203410
2014-04-18 09:05:20 +03:00
Daniel Zaoui 38b993c29b Eolian/Generator: remove Eo1 generation 2014-04-17 15:50:22 +03:00
Daniel Zaoui fc9682bd7f Eolian: fix generation of Eo2 functions definitions.
When keys are used in property, the Eo2 macro was not well chosen.
2014-04-13 11:30:39 +03:00
Mike Blumenkrantz bdb8542e3b eolian no longer generates return statements for void functions 2014-04-11 10:33:20 -04:00
Daniel Zaoui 1a48d11fb9 Eolian: Fix generation of Eo APIs.
When return is forced to void, even if the function contains only
one parameter, the return type will be void.
2014-04-10 11:24:04 +03:00
Tom Hacohen 2b34ab4cf7 Eolian: Generate Eo2. 2014-04-10 04:20:21 +01:00
Daniel Zaoui 87776ff0fa Eolian: add support for functions scope.
This patch adds support for protected functions.

In the .eo file, the scope (public by default) has to be added before
the function name e.g:
protected foo ...

To access the protected APIs, #define (CLASS)_PROTECTED is needed e.g:
 #define ELM_BUTTON_PROTECTED
2014-04-10 05:55:16 +03:00
Daniel Zaoui bbba6a20b4 Eolian: generation of Eo2.
The generation of Eo2 can be enabled by defining EO flag in
common_funcs.h.
2014-04-10 04:20:02 +03:00
Yossi Kantor bff7e65d24 Eolian: Legacy generator generates const return value for legacy header if needed 2014-04-09 04:08:57 +03:00
Yossi Kantor b437457657 Eolian: Legacy generator - no semicolon after EINA_WARN_UNUSED_RESULT 2014-04-09 04:08:57 +03:00
Yossi Kantor 01c1626977 Eolian: Fix legacy generation.
Semicolon was misplaced when function flags are needed.
2014-04-08 09:33:01 +03:00
Daniel Zaoui 912409df3c Eolian: rename enums.
Add the EOLIAN namespace to the function types.
2014-04-08 04:27:01 +03:00
zmike 2373269ad7 reformat edje_player
ffs these tabs
2014-04-07 13:15:40 -04:00
Daniel Zaoui 0eb092d157 Eolian/Lexer: support data type for events. 2014-04-02 14:27:12 +03:00
Daniel Zaoui f2b857dcb3 Eolian: fix warnings. 2014-04-02 10:08:27 +03:00
Daniel Zaoui bddee1554f Eolian/Generator: don't generate legacy if legacy_prefix is "null".
For new classes that don't need legacy, instead of setting legacy null
for all the functions, legacy_prefix can be set to "null" to not
generate legacy.
However, if, for example, only one function among 50 need legacy, you
can specify it by setting for this function the legacy token.
2014-04-02 10:05:37 +03:00
Yossi Kantor 277c3e2ef3 Eolian: Explicit generation of either method or property in implemented functions 2014-04-02 10:05:37 +03:00
Jean-Philippe Andre 5926aadd9e Evil: Add support for mkstemps
This adds filename suffix support for temporary files on Windows.
2014-04-02 12:14:50 +09:00
Daniel Zaoui 9780b403ee Eolian: Proper use of legacy prefix in legacy function definition. 2014-04-01 16:36:59 +03:00
Yossi Kantor dfaa1d5722 Eolian: Legacy generator - dont generate @param[out] ret if return value is specified 2014-04-01 16:32:35 +03:00
Yossi Kantor 5c6a6b586a Eolian: No need for --eo version when generating legacy header 2014-04-01 16:32:35 +03:00
Cedric BAIL a086a4f089 ecore_evas: add a tool that can convert file using Evas internal loaders and savers. 2014-04-01 22:00:13 +09:00
Vorobiov Vitalii 85f8661f45 edje_cc: fix group inheriting with scripts. (group.script and .program.script)
After doing some edje_edit manipulations there was a problem that
after edje_decc of changed EDJ file it wasnt able to compile again, because some of scripts
weren't inherited.
The problem was in Code and Code_Script structure.
There is "shared" ("script") field and "original" field that contained a string with embryo script code.
After inheriting whole group, "original" field wasn't copied, so it wasn't able to write
the script into resulted EDJ file (look at edje_cc_out:1407).
@fix

Reviewers: cedric, seoz, raster

Reviewed By: cedric

CC: reutskiy.v.v, cedric

Differential Revision: https://phab.enlightenment.org/D671

Signed-off-by: Cedric BAIL <cedric.bail@free.fr>
2014-04-01 22:00:13 +09:00
Mike Blumenkrantz c5564213ea edje_cc should probably handle sequenced scripts successfully 2014-03-31 16:45:05 -04:00
Mike Blumenkrantz 01b54c75f1 edje_cc part description state name error clarification 2014-03-31 16:02:41 -04:00
Mike Blumenkrantz 5ffef1e853 edje_cc no longer allows buggy/unexpected behavior when inheriting parts
previously we allowed users to not specify the state names for non-default description states. this guaranteed crazy behavior during inheritance since it was impossible to properly reference such states.
2014-03-31 15:30:48 -04:00
Mike Blumenkrantz 1009e3c234 edje_cc sequence example: now with 50% more sequencing! 2014-03-29 09:57:27 -04:00
Ryuan Choi c2077f4853 edje_cc: Fix the crash when compiled wrong edc file containing empty part
It's regression since cff3ec04b.

@fix
2014-03-29 13:01:03 +09:00
Mike Blumenkrantz 7c018bba0d eolian should use "wb" for file opening to not break windows use 2014-03-28 16:39:52 -04:00
Daniel Zaoui fd25b44cab Eolian: extend const attributes for parameters to 'set' properties.
When const is used for parameters into 'set' properties, the generator
doesn't prepend 'const'.
This fixes this bad behavior.
2014-03-27 15:19:22 +02:00
Daniel Zaoui eb65cac12d Eolian/Generator: enable forcing return type as void.
For get properties, if only one parameter is given, the generator sets this one as return type.

There are cases where this parameter must stay a parameter (legacy API).

For example, elm_thumb_compress_get must be like:
void elm_thumb_compress_get(const Eo *obj, int *compress).
Eolian was generating the function as:
int elm_thumb_compress_get(const Eo *obj);

By setting "return void;" in the .eo file, you force the function to
return void.
2014-03-27 13:15:02 +02:00
Daniel Zaoui c863154a79 Eolian: fix virtual pure support.
When a property needs be defined as virtual pure, its type could not be
given.
It means that, even it was explicit that e.g only the get property if
virtual pure, both (set and get) were considered as virtual pure.

@fix
2014-03-27 08:52:53 +02:00
Mike Blumenkrantz 3083732bfb edje_cc probably should ignore limit inherits when there are no limits 2014-03-25 11:07:30 -04:00
Mike Blumenkrantz 7d9d42a281 edje_cc correctly copies group.limits when inheriting, FIXME-- 2014-03-24 15:27:17 -04:00
Mike Blumenkrantz 15df46b707 edje_cc now fails for multiple data entries with the same key, FIXME-- 2014-03-24 15:18:28 -04:00
Mike Blumenkrantz c8dc78cd00 edje_cc sets current_group_inherit at the start of inheriting to allow better checking 2014-03-24 15:07:46 -04:00
Mike Blumenkrantz ee7755e21b edje_cc now correctly handles group inheriting when the inherit is after a part/program
this is technically @fix, but it's also new-ish behavior so I'm not going to backport it; 1.10 can be the edje_cc release
2014-03-24 15:06:19 -04:00
Mike Blumenkrantz cea92fa2fc edje_cc collections.grpup is not collections.group 2014-03-24 12:52:55 -04:00
Mike Blumenkrantz 6c21e8eb83 edje_cc uses more setup macros to unify program statements 2014-03-24 12:51:14 -04:00
Mike Blumenkrantz 8d30e71e8b edje_cc prevents sequence users from failing to sequence 2014-03-24 10:58:48 -04:00
Mike Blumenkrantz 4cfff903c2 edje_cc should support sequences inside programs.program I guess 2014-03-24 10:58:09 -04:00
Daniel Zaoui 4092dc6277 Eolian/Generator: more stuff.
Better support of empty events/funcs lists
Better support of class constructor
Preparation for Eo2: separate Eo1 specific code and common code
2014-03-24 08:14:30 +02:00
Daniel Zaoui 0987b31247 Eolian/Generator: detach Eo1 from Legacy generator.
This step is needed to clean the code and to prepare the integration of
Eo2 inside Eolian.
Except the eo_do invocation, there is no reason why legacy has to know
about Eo.
2014-03-24 08:14:30 +02:00
Daniel Zaoui cc9526cd7f Eolian/Generator: generate Eo * instead of Evas_Object * 2014-03-23 08:04:22 +02:00
Carsten Haitzler 4da1081c4d drm - shut up warnings (not actual bugs) 2014-03-22 19:12:07 +09:00
Mike Blumenkrantz f3d5cee0e4 edje_cc can now use group.program_remove to remove inherited programs
@feature
2014-03-22 02:20:09 -04:00
Mike Blumenkrantz 7cfde40500 edje_cc no longer fails when program.name is specified after program.after 2014-03-22 00:52:55 -04:00
Mike Blumenkrantz a755dfa75e edje_cc should probably disallow overriding of currently-sequencing program 2014-03-22 00:13:18 -04:00
Mike Blumenkrantz b8bc366a28 edje_cc now supports program.sequence for more easily chaining programs together
this is just some syntax shortening for program.after which causes program.action and program.script to create a new program and automatically chain it within the sequence{} block

recursive sequences not currently allowed/planned (don't be insane)

@feature
2014-03-21 23:56:05 -04:00
Mike Blumenkrantz 98eaad570b edje_cc macros even more of its parser setup for consistency 2014-03-21 23:04:05 -04:00
Mike Blumenkrantz b6949578cf edje_cc typo which almost broke everything except nobody noticed 2014-03-21 22:36:22 -04:00
Mike Blumenkrantz cc5f8c6852 edje_cc uses macros for some of its handler setup
this reduces code size, ensures consistency, and actually fixes bugs where the "filter" keyword was erroneously disallowed in some places

@fix
2014-03-21 22:09:54 -04:00
Mike Blumenkrantz 499020ce4d edje_cc no longer reads every character of a script during parsing 2014-03-21 22:08:19 -04:00
Mike Blumenkrantz 0681af5ca1 edje_cc group.remove should probably be group.part_remove
this allows things like group.program_remove to exist
2014-03-21 16:50:12 -04:00
Mike Blumenkrantz 4619c3de4e edje_cc now supports part.inherit for copying attributes of parts within a group more easily
@feature
2014-03-21 15:47:04 -04:00
Mike Blumenkrantz 79a6653f59 edje_cc error message for description with missing state is now useful 2014-03-21 15:40:40 -04:00
Mike Blumenkrantz fa14af1afb edje_cc no longer errors when inheriting a description before/when state is not set
anonymous states are allowed in other places, so having this check is inconsistent and breaks inheriting. an error will be triggered at a later point.
2014-03-21 15:25:15 -04:00
Mike Blumenkrantz 153e3b45b4 edje_cc now supports group.remove for removing parts from inherited groups
@feature
2014-03-21 15:12:38 -04:00
Mike Blumenkrantz c4fc401d87 edje_cc now supports program.targets keyword for adding N targets in one line
@feature
2014-03-20 19:40:51 -04:00
Mike Blumenkrantz d025f89b2e edje_cc also checks min args correctly for STATE_SET actions
@fix
2014-03-20 19:27:48 -04:00
Mike Blumenkrantz 0f1ccdad09 edje_cc now correctly handles lack of state int in STATE_SET action
@fix
2014-03-20 19:20:50 -04:00
Mike Blumenkrantz edf825fd07 edje_cc no longer fails on collections.group{}
@fix
2014-03-20 14:59:58 -04:00
Cedric BAIL 15654012a6 edje: let's be careful on the string content.
Fix CID 1193215.
2014-03-20 16:48:38 +09:00
Tae-Hwan Kim 3061a706c4 Add new PLUGIN_RUN action type and new plugins.plugin handlers 1. If external library is commerical source and not opensource, we cannot include/build the library within edje. 2. If external library does not use general encodable sources, we...
Summary:
...cannot encode those things into edje.

In our case, we need vibration when longpressed. But those files are not
audio or image and cannot be encoded into edje. Also, this library is not
opensource so should not be linked directly with edje.
So we should call vibration API by using this plug-in.

Reviewers: raster, cedric, seoz, Hermet

CC: cedric

Differential Revision: https://phab.enlightenment.org/D588
2014-03-20 13:00:21 +09:00
Stefan Schmidt 44a54caa16 eolian/eo1_generator: Fix leak in error path
We allocated tmpstr so we should free it before we return in the error case.

CID 1191926
2014-03-19 16:40:52 +01:00
Daniel Zaoui d5256d442d Eolian/Generator: Don't generate sub ids structure if not needed.
If no methods and properties are declared for a class, no base id and
sub_ids structure are generated.

@fix
2014-03-19 07:52:04 +02:00
Daniel Zaoui 15f2bda474 Eolian/Generator: fix generation of events. 2014-03-19 07:04:28 +02:00
Jean-Philippe Andre 320a9f18c5 Evas cserve2: Fix client crashes when a file changed
Clients must ignore changed file entries as they are not valid
anymore. The server will also mark the entry as invalid in case
of file update.

@fix
2014-03-18 13:49:05 +09:00
Daniel Zaoui 5d1b948508 Eolian/Generator: Retrieve the Eo prefix from the database instead of
guessing it.
2014-03-16 16:00:29 +02:00
Yossi Kantor 6862fa801b Eolian/Generator: Improved event generation
Line breaks in source files and extern definitions
of events in header files.
2014-03-16 09:23:49 +02:00
Daniel Zaoui c203df0b5d Eolian: Support default return values from .eo file.
Now, it is possible to assign a default return value for a
method/property.
It will be used in case the function invocation makes issues, e.g eo_do
failing to find the function...
2014-03-16 08:37:23 +02:00
Daniel Zaoui 81c2a5d217 Eolian/Generator: return values set to 0.
Before eo_do invocation, generated legacy functions returning a value
initialize it to 0.
This change is needed in the case that eo_do fails to find some
function, which leads to an unitialized value and behavior.
2014-03-14 13:21:51 +02:00
Daniel Zaoui dcf94e9dd8 Eolian/Generator: fix generation of headers for const params.
When a parameter of a property is const for get but not for set, the
.eo file indicates it by setting a flag 'const' for this parameter.
The generation was checking this flag for C files generation but not for
H files.
2014-03-13 09:14:14 +02:00
Daniel Zaoui fd67c1692c Eolian/Generator: fix generation for return values.
- Remove space between type and variable if a star is present.
- Initialize return value to NULL before eo_do. It is needed in case the
eo_do invocation fails (NULL object...).
- Add const to the internal return value if needed.
2014-03-11 15:43:46 +02:00
Daniel Zaoui d3f343bdcc Eolian/Generator: fix type when no data type exists.
When data is set as "null", the generator was writing for this data
variable "void * *_pd" instead of "void *_pd".
2014-03-11 15:25:24 +02:00
Daniel Zaoui 0d6fadcab9 Eolian/Generator: fix for virtual pure implementations 2014-03-11 15:20:54 +02:00
Yossi Kantor b070981f8f Eolian: Support of unsigned short as int in va_arg 2014-03-11 07:37:47 +02:00
Daniel Zaoui d96c429179 Eolian/Generator: support NULL pointers for return values.
When an Eo operation returns a value, this one is stored in the last
parameter as an out parameter.
In case the caller doesn't set a pointer there, the storing will be done
in a NULL pointer and will bring to a segfault.

The generator has been modified to handle this case. Now, if the ret
pointer is NULL, the value will not be returned.
2014-03-10 15:07:05 +02:00
Daniel Zaoui 4e33fd16e2 Eolian: add support of eo_prefix and data.
You can add in the .eo file the eo_prefix:... and data:... in case
you want to override respectively the Eo prefix and the data type.
If "data: null" is used, no data type will be added.
2014-03-10 15:07:05 +02:00
Daniel Zaoui a04e80e7f6 Eolian/Generator: fix for legacy function name overriding.
When legacy is specified in the .eo file, the generator was adding the
property/method name after the legacy name.
So if you have 'legacy evas_object_textblock_clear_all' for clear method,
it was adding the function evas_object_textblock_clear_all_clear.
2014-03-10 13:28:03 +02:00
Daniel Zaoui 4be9526cc2 Eolian/Generator: more fixes related to stars to add to params. 2014-03-09 13:19:30 +02:00
Tom Hacohen 561ea66dec Eet vieet: Fixed to work on non-bash compat shells.
Thanks to Davide Andreoli for reporting and suggesting fixes.
2014-03-08 10:55:37 +00:00
Daniel Zaoui a78f779486 Eolian: Fixes into generated files.
- Added Doxygen description to parameters and return
- Added default description for parameters
- Return type needs to be after all the other parameters
- Better handling of stars for pointers: try to figure if a space is
needed between the type and the variable (e.g int *a / int a)
2014-03-07 17:42:41 +02:00
Daniel Zaoui bb8af681f9 Eolian: Coverity fixes 2014-03-07 17:42:41 +02:00
Tom Hacohen e63a5cc903 Eet: Added vieet a tool to edit eet files.
This tool lets you just open an eet file for editing directly,
by wrapping around 'eet' and the preferred editor defined in the env var
'EDITOR'.

@feature
2014-03-07 15:11:30 +00:00
Tom Hacohen 426e95b214 Eolian gen: Have a more useful error message when failing to write file. 2014-03-07 12:01:52 +00:00
Cedric BAIL f01a5a6265 git: ignore generated file. 2014-03-07 09:36:52 +09:00
Daniel Zaoui 7aebf671bf Eolian/Generator: Switch set/get functions generation.
We want to generate first set properties and then get properties to be
in accordance with the current op ids order.
2014-03-06 15:12:51 +02:00
Daniel Zaoui 232a3cf5fc Eolian/Generator: Fix comments generation in headers.
Trailing whitespaces were added in description empty lines.
2014-03-06 15:12:51 +02:00
Chris Michael 3d5f93a9cf ecore-drm: Add code for SPARTACUS !! ;)
@ferature: This adds code for the ecore-drm auth process to open
restricted inputs/cards/etc by the user.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-03-06 11:15:29 +00:00
Cedric BAIL dea550eba1 edje: add AUTHORS and more than one license file to Edje.
@feature
2014-03-06 16:33:06 +09:00
Cedric BAIL add9540b1c edje: fix edje_watch to not pass the '\n' to eio_monitor.
Eina_File line iterator does give the length of the line including the '\n'.
We did previously ignore that and passed the '\n' down to eio_monitor. Obviously
it would fail to monitor a PATH that finished with a '\n' and edje_watch did
stop working. I guess nobody did any real testing with edje watch in the past
year.

@fix
2014-03-05 12:14:40 +09:00
Daniel Zaoui fe682d9760 Eolian: Valgrind fixes 2014-03-03 18:14:14 +02:00
Daniel Zaoui 49822ec28d Eolian: remove Ecore_File dependency 2014-03-03 18:14:14 +02:00
Daniel Zaoui e8ee7ae24b Eolian: fix warnings.
Don't want Stefan to be angry ;-)
2014-03-03 14:28:30 +02:00
Yossi Kantor 1287177ac2 Eolian: New features/bugs fixes
1) Include files now have include guards
  2) --gh option generates legacy header with --legacy flag and eo header
  without --legacy flag
  3) EOLIAN keyword is introduced to mark functions used by generated
  file.
  4) * for comments when comment text is empty
2014-03-03 14:09:57 +02:00
Yossi Kantor 67dd5ef497 Eolian: New generation feature tested and bugs fixed
1) Underscore for static global names
  2) Escape special characters for in-code descriptions
  3) Proper spaces for generated lines
2014-03-03 14:09:57 +02:00
Daniel Zaoui 87f661e08e Eolian: support non null parameters.
The generation is only needed in legacy headers.
2014-03-03 14:09:57 +02:00
Daniel Zaoui 210051ebb3 Eolian/Generator: fix data type for implement function 2014-03-03 14:09:57 +02:00
Daniel Zaoui 10d7bffc4a Eolian: support warn_unused variables. 2014-03-03 14:09:56 +02:00
Daniel Zaoui 2db3cdb5e3 Eolian: Valgrind cleaning 2014-03-03 14:09:56 +02:00
Daniel Zaoui 21533a0079 Eolian/Generator: errors handling improvement.
Errors occuring during generation are now propagated to the main (i.e
exit code).
Logs have been ported to EINA_LOG instead of printf.
2014-03-03 14:09:56 +02:00
Daniel Zaoui baaf92c93a Eolian/Generator: implementation prototype change
Since we know the type of the private data given as parameter of the
implemented function, we can set it instead of void *.
2014-03-03 14:09:56 +02:00
Daniel Zaoui 60919ecbe6 Eolian/Generator: improve command line arguments and logging.
Now --gh/--gc don't require an additional argument.
If eolian_gen is called with --gc and some file.eo, the tool will
generate file.eo.c.
You can force another filename by using the -o with an argument.

Moreover, logging has been added to the generator.
2014-03-03 14:09:56 +02:00
Yossi Kantor 521701ff70 Eolian: naming convention for implemented functions
The format is now _<current_class>_<inherited_class>_function_name.
2014-03-03 14:09:56 +02:00
Daniel Zaoui 02f4c112ca Eolian/Generator: add private data to the prototypes of implementations 2014-03-03 14:09:56 +02:00
Yossi Kantor c7beca12ec Eolian: Class type and class constructor/destructor generation added 2014-03-03 14:09:56 +02:00
Daniel Zaoui 920c035c57 Eolian: Support of virtual pure functions.
Virtual pure can be defined in Eolian format by adding in the section
implements virtual::class_name::func_name[::func_type].
2014-03-03 14:09:55 +02:00
Daniel Zaoui f7dce9c8c9 Eolian/Generator: update options and return value from main.
-v is used instead of -V
returns 1 when an error occurred
useless print removed when scanning include directories
2014-03-03 14:09:55 +02:00
Daniel Zaoui 5ae7cc962f Eolian: Format changes
- Support keys/values for properties instead of params
- Direction for parameters syntax changed from in to @in...
- obj:const changed to const in .eo
2014-03-03 14:09:55 +02:00
Daniel Zaoui a8661af73e Eolian: update .gitignore 2014-03-03 14:09:55 +02:00
Daniel Zaoui 61b180448a Eolian/Generator: improve the files management.
Now, the .eo file given as parameter doesn't have to be into the given
include paths.
2014-03-03 14:09:55 +02:00
Daniel Zaoui 9add4c695c Eolian: remove --class option.
Now, the .eo file needs to be supplied instead of the class.
2014-03-03 14:09:54 +02:00
Yossi Kantor 17abdbdd43 Eolian: Code review fixes
1) API defined under EFL_BETA_API_SUPPORT
2) Init counters for init and shutdown
3) void for no-parameters functions
2014-03-03 14:09:54 +02:00
Daniel Zaoui 7a114b18af Eolian/Generator: oups, didn't mean to push that. 2014-03-03 14:09:54 +02:00
Daniel Zaoui 8de58b9757 Eolian/Lexer: rename signals to events. 2014-03-03 14:09:54 +02:00
Daniel Zaoui a934780714 Eolian-generator: fix crash during generation
It happens when no description is supplied for an event.
2014-03-03 14:09:54 +02:00
Daniel Zaoui ab8d877150 Eolian/Generator: support legacy as option.
For the moment, the option works for C files. Have to add support for H
files.
2014-03-03 14:09:54 +02:00
Daniel Zaoui 327202ef37 Eolian/Generator: port options to getopt
Even if we want to remove the appending options, we still support them.
We will remove them later.
2014-03-03 14:09:54 +02:00
Daniel Zaoui 5dea8ee0a8 Eolian: first import.
Imported by Tom, from the eolian repo which was written by:
Daniel Zaoui <daniel.zaoui@samsung.com>
Yakov Goldberg <yakov.g@samsung.com>
Yossi Kantor <yossi.kantor@samsung.com>
Savio Sena <savio@expertisesolutions.com.br>
Jérémy Zurcher <jeremy@asynk.ch>

Signed-off-by: Tom Hacohen <tom@stosb.com>
2014-03-03 14:09:53 +02:00
Cedric Bail 92a24dea79 edje: @feature to include license in edje file.
This will close T1027.
2014-03-03 08:39:53 -03:00
Jean-Philippe Andre 1fae9e5e21 cserve2: Fix minor clang warning 2014-02-14 13:06:05 +09:00
Carsten Haitzler bf4d34c172 edje - edje_cc - remove logically dead code
fixes CID 1135268
2014-02-13 19:31:29 +09:00
Carsten Haitzler 8764bd240c evas cserve2 - fix chekc of wrong return type
the wrong value was checked (not the returned value) - coverity caught
this. fixes CID 1135269
2014-02-13 19:27:11 +09:00
Carsten Haitzler db1990020a edje - feature - add channel types for sounds and ability to mute them
this adds a new feature to be able to assign a sample to a given
"type" of audio channel, and then to be able to mute these from code.
2014-02-09 19:08:12 +09:00
Carsten Haitzler 7c7f2eb300 formatting - make parse enum easier to read 2014-02-09 13:38:36 +09:00
Carsten Haitzler 82af0f60c5 edje_cc - sample play - document speed param and allow wider range 2014-02-09 13:31:00 +09:00
Jean-Philippe Andre 22e94df0f7 Evas filters: Quick check for existing part name
We just add all buffer source names to the part lookup queue,
so that edje_cc will check that the source part exists.

The final int key is discarded.
2014-02-07 17:33:18 +09:00
Jean-Philippe Andre a25b212bac Evas filters: Add support for proxies in Edje
They will be defined with the following syntax:
buffer:buf(src=part);
2014-02-07 17:33:18 +09:00
Jean-Philippe Andre 08f2624e6a Evas filters: Implement basic Edje support
Does not support proxies yet.
Implemented as "filter" field in a part.description.text (next
to a "font").
2014-02-07 17:33:18 +09:00
Cedric BAIL 5593964ead embryo: force the insertion of a '/' in the path to be sure that file path make sense. 2014-01-24 08:19:47 +09:00
Carsten Haitzler 1c2da046dc embryo_cc - remove trainling / from path for windows stat so it works 2014-01-23 08:45:44 +09:00