diff options
author | Daniel Kolesa <d.kolesa@samsung.com> | 2019-09-30 19:45:45 +0200 |
---|---|---|
committer | Daniel Kolesa <d.kolesa@samsung.com> | 2019-09-30 20:12:35 +0200 |
commit | 71c83d2005e060daee8df97ad267e1954f12ff83 (patch) | |
tree | 51c2aaa8cdda3e2655127424b296b41e70e71936 /src | |
parent | 835e230f2fefa14cdfae7af84dc5afbc40bca985 (diff) |
efl: add code to enforce presence of @since tags
This is not yet enabled because there's too many instances where
this is broken.
Ref T7704
Diffstat (limited to 'src')
-rw-r--r-- | src/lib/efl/interfaces/efl_gfx_types.eot | 7 | ||||
-rw-r--r-- | src/lib/efl/interfaces/efl_input_device.eo | 4 | ||||
-rw-r--r-- | src/lib/efl/interfaces/efl_model.eo | 7 | ||||
-rw-r--r-- | src/lib/efl/interfaces/efl_pack.eo | 2 | ||||
-rw-r--r-- | src/lib/efl/interfaces/efl_player.eo | 5 | ||||
-rw-r--r-- | src/lib/efl/interfaces/efl_text_types.eot | 5 | ||||
-rw-r--r-- | src/lib/efl/interfaces/efl_ui_property_bind.eo | 9 | ||||
-rw-r--r-- | src/lib/elementary/efl_ui.eot | 5 | ||||
-rw-r--r-- | src/lib/eo/efl_object.eo | 15 | ||||
-rw-r--r-- | src/lib/eo/eina_types.eot | 40 | ||||
-rw-r--r-- | src/lib/eolian/database_validate.c | 108 | ||||
-rw-r--r-- | src/lib/evas/canvas/efl_canvas_object.eo | 5 | ||||
-rw-r--r-- | src/lib/evas/canvas/efl_input_event.eo | 2 | ||||
-rw-r--r-- | src/lib/evas/canvas/efl_input_interface.eo | 2 |
14 files changed, 192 insertions, 24 deletions
diff --git a/src/lib/efl/interfaces/efl_gfx_types.eot b/src/lib/efl/interfaces/efl_gfx_types.eot index 2a4e668..7522b21 100644 --- a/src/lib/efl/interfaces/efl_gfx_types.eot +++ b/src/lib/efl/interfaces/efl_gfx_types.eot | |||
@@ -24,7 +24,10 @@ enum @beta Efl.Gfx.Colorspace { | |||
24 | } | 24 | } |
25 | 25 | ||
26 | enum Efl.Gfx.Render_Op { | 26 | enum Efl.Gfx.Render_Op { |
27 | [[Graphics render operation mode]] | 27 | [[Graphics render operation mode |
28 | |||
29 | @since 1.23 | ||
30 | ]] | ||
28 | blend = 0, [[Alpha blending onto destination (default); d = d*(1-sa) + s.]] | 31 | blend = 0, [[Alpha blending onto destination (default); d = d*(1-sa) + s.]] |
29 | copy = 1, [[Copy source to destination; d = s.]] | 32 | copy = 1, [[Copy source to destination; d = s.]] |
30 | last [[Sentinel value to indicate last enum field during iteration]] | 33 | last [[Sentinel value to indicate last enum field during iteration]] |
@@ -182,6 +185,8 @@ enum Efl.Gfx.Hint_Aspect | |||
182 | [[Aspect types/policies for scaling size hints. | 185 | [[Aspect types/policies for scaling size hints. |
183 | 186 | ||
184 | See also @Efl.Gfx.Hint.hint_aspect. | 187 | See also @Efl.Gfx.Hint.hint_aspect. |
188 | |||
189 | @since 1.23 | ||
185 | ]] | 190 | ]] |
186 | 191 | ||
187 | none = 0, [[No preference on either direction of the container | 192 | none = 0, [[No preference on either direction of the container |
diff --git a/src/lib/efl/interfaces/efl_input_device.eo b/src/lib/efl/interfaces/efl_input_device.eo index 783b261..dda39b1 100644 --- a/src/lib/efl/interfaces/efl_input_device.eo +++ b/src/lib/efl/interfaces/efl_input_device.eo | |||
@@ -3,6 +3,8 @@ enum Efl.Input.Device_Type | |||
3 | [[General type of input device. | 3 | [[General type of input device. |
4 | 4 | ||
5 | Legacy support since 1.8 as $Evas_Device_Class. | 5 | Legacy support since 1.8 as $Evas_Device_Class. |
6 | |||
7 | @since 1.23 | ||
6 | ]] | 8 | ]] |
7 | none, [[Not a device.]] | 9 | none, [[Not a device.]] |
8 | seat, [[The user/seat (the user themselves).]] | 10 | seat, [[The user/seat (the user themselves).]] |
@@ -22,6 +24,8 @@ enum Efl.Input.Device_Type | |||
22 | class Efl.Input.Device extends Efl.Object | 24 | class Efl.Input.Device extends Efl.Object |
23 | { | 25 | { |
24 | [[Represents a pointing device such as a touch finger, pen or mouse. | 26 | [[Represents a pointing device such as a touch finger, pen or mouse. |
27 | |||
28 | @since 1.23 | ||
25 | ]] | 29 | ]] |
26 | methods { | 30 | methods { |
27 | @property device_type { | 31 | @property device_type { |
diff --git a/src/lib/efl/interfaces/efl_model.eo b/src/lib/efl/interfaces/efl_model.eo index 477e9e1..6492f76 100644 --- a/src/lib/efl/interfaces/efl_model.eo +++ b/src/lib/efl/interfaces/efl_model.eo | |||
@@ -1,5 +1,8 @@ | |||
1 | struct Efl.Model_Property_Event { | 1 | struct Efl.Model_Property_Event { |
2 | [[EFL model property event data structure]] | 2 | [[EFL model property event data structure |
3 | |||
4 | @since 1.23 | ||
5 | ]] | ||
3 | changed_properties: array<stringshare>; [[List of changed properties]] | 6 | changed_properties: array<stringshare>; [[List of changed properties]] |
4 | invalidated_properties: array<stringshare>; [[Removed properties identified by name]] | 7 | invalidated_properties: array<stringshare>; [[Removed properties identified by name]] |
5 | } | 8 | } |
@@ -22,6 +25,8 @@ interface Efl.Model | |||
22 | 25 | ||
23 | Additionally a model can have a list of children. The fetching of the children is asynchronous, this has the advantage of | 26 | Additionally a model can have a list of children. The fetching of the children is asynchronous, this has the advantage of |
24 | having as few data sets as possible in the memory itself. | 27 | having as few data sets as possible in the memory itself. |
28 | |||
29 | @since 1.23 | ||
25 | ]] | 30 | ]] |
26 | c_prefix: efl_model; | 31 | c_prefix: efl_model; |
27 | methods { | 32 | methods { |
diff --git a/src/lib/efl/interfaces/efl_pack.eo b/src/lib/efl/interfaces/efl_pack.eo index 7c65928..0c7b330 100644 --- a/src/lib/efl/interfaces/efl_pack.eo +++ b/src/lib/efl/interfaces/efl_pack.eo | |||
@@ -2,6 +2,8 @@ interface Efl.Pack extends Efl.Container | |||
2 | { | 2 | { |
3 | [[Common interface for objects (containers) with multiple contents | 3 | [[Common interface for objects (containers) with multiple contents |
4 | (sub-objects) which can be added and removed at runtime. | 4 | (sub-objects) which can be added and removed at runtime. |
5 | |||
6 | @since 1.23 | ||
5 | ]] | 7 | ]] |
6 | methods | 8 | methods |
7 | { | 9 | { |
diff --git a/src/lib/efl/interfaces/efl_player.eo b/src/lib/efl/interfaces/efl_player.eo index 3157715..afeb7c2 100644 --- a/src/lib/efl/interfaces/efl_player.eo +++ b/src/lib/efl/interfaces/efl_player.eo | |||
@@ -1,6 +1,9 @@ | |||
1 | interface Efl.Player | 1 | interface Efl.Player |
2 | { | 2 | { |
3 | [[Efl media player interface]] | 3 | [[Efl media player interface |
4 | |||
5 | @since 1.23 | ||
6 | ]] | ||
4 | c_prefix: efl_player; | 7 | c_prefix: efl_player; |
5 | methods { | 8 | methods { |
6 | @property playing { | 9 | @property playing { |
diff --git a/src/lib/efl/interfaces/efl_text_types.eot b/src/lib/efl/interfaces/efl_text_types.eot index f50e0d5..b712720 100644 --- a/src/lib/efl/interfaces/efl_text_types.eot +++ b/src/lib/efl/interfaces/efl_text_types.eot | |||
@@ -1,5 +1,8 @@ | |||
1 | enum Efl.Text_Bidirectional_Type { | 1 | enum Efl.Text_Bidirectional_Type { |
2 | [[Bidirectionaltext type]] | 2 | [[Bidirectionaltext type |
3 | |||
4 | @since 1.23 | ||
5 | ]] | ||
3 | natural = 0, [[Natural text type, same as neutral]] | 6 | natural = 0, [[Natural text type, same as neutral]] |
4 | neutral = 0, [[Neutral text type, same as natural]] | 7 | neutral = 0, [[Neutral text type, same as natural]] |
5 | ltr, [[Left to right text type]] | 8 | ltr, [[Left to right text type]] |
diff --git a/src/lib/efl/interfaces/efl_ui_property_bind.eo b/src/lib/efl/interfaces/efl_ui_property_bind.eo index aafd772..d0249ae 100644 --- a/src/lib/efl/interfaces/efl_ui_property_bind.eo +++ b/src/lib/efl/interfaces/efl_ui_property_bind.eo | |||
@@ -2,7 +2,10 @@ import eina_types; | |||
2 | 2 | ||
3 | struct Efl.Ui.Property_Event { | 3 | struct Efl.Ui.Property_Event { |
4 | [[EFL Ui property event data structure triggered when an object property change due | 4 | [[EFL Ui property event data structure triggered when an object property change due |
5 | to the interaction on the object.]] | 5 | to the interaction on the object. |
6 | |||
7 | @since 1.23 | ||
8 | ]] | ||
6 | changed_properties: array<stringshare>; [[List of changed properties]] | 9 | changed_properties: array<stringshare>; [[List of changed properties]] |
7 | } | 10 | } |
8 | 11 | ||
@@ -12,7 +15,9 @@ interface Efl.Ui.Property_Bind | |||
12 | view object can have @Efl.Model to manage the data, | 15 | view object can have @Efl.Model to manage the data, |
13 | the interface can help loading and tracking child data from the model property. | 16 | the interface can help loading and tracking child data from the model property. |
14 | see @Efl.Model | 17 | see @Efl.Model |
15 | see @Efl.Ui.Factory]] | 18 | see @Efl.Ui.Factory |
19 | |||
20 | @since 1.23]] | ||
16 | methods { | 21 | methods { |
17 | property_bind { | 22 | property_bind { |
18 | [[bind property data with the given key string. when the data is ready or changed, | 23 | [[bind property data with the given key string. when the data is ready or changed, |
diff --git a/src/lib/elementary/efl_ui.eot b/src/lib/elementary/efl_ui.eot index eaa4ae4..e9c2fbc 100644 --- a/src/lib/elementary/efl_ui.eot +++ b/src/lib/elementary/efl_ui.eot | |||
@@ -17,7 +17,10 @@ error Efl.Ui.Theme.Apply_Error.VERSION = "The widget attempted to load a theme t | |||
17 | 17 | ||
18 | enum Efl.Ui.Focus.Direction | 18 | enum Efl.Ui.Focus.Direction |
19 | { | 19 | { |
20 | [[ Focus directions. ]] | 20 | [[ Focus directions. |
21 | |||
22 | @since 1.23 | ||
23 | ]] | ||
21 | previous = 0, [[ previous direction ]] | 24 | previous = 0, [[ previous direction ]] |
22 | next = 1, [[ next direction ]] | 25 | next = 1, [[ next direction ]] |
23 | up = 2, [[ up direction ]] | 26 | up = 2, [[ up direction ]] |
diff --git a/src/lib/eo/efl_object.eo b/src/lib/eo/efl_object.eo index 68082f5..b336a4e 100644 --- a/src/lib/eo/efl_object.eo +++ b/src/lib/eo/efl_object.eo | |||
@@ -26,11 +26,20 @@ type Efl.Callback_Priority : short; | |||
26 | ]] | 26 | ]] |
27 | 27 | ||
28 | const Efl.Callback_Priority_Before : Efl.Callback_Priority = -100; | 28 | const Efl.Callback_Priority_Before : Efl.Callback_Priority = -100; |
29 | [[Slightly more prioritized than default.]] | 29 | [[Slightly more prioritized than default. |
30 | |||
31 | @since 1.22 | ||
32 | ]] | ||
30 | const Efl.Callback_Priority_Default : Efl.Callback_Priority = 0; | 33 | const Efl.Callback_Priority_Default : Efl.Callback_Priority = 0; |
31 | [[Default priority.]] | 34 | [[Default priority. |
35 | |||
36 | @since 1.22 | ||
37 | ]] | ||
32 | const Efl.Callback_Priority_After : Efl.Callback_Priority = 100; | 38 | const Efl.Callback_Priority_After : Efl.Callback_Priority = 100; |
33 | [[Slightly less prioritized than default.]] | 39 | [[Slightly less prioritized than default. |
40 | |||
41 | @since 1.22 | ||
42 | ]] | ||
34 | 43 | ||
35 | abstract Efl.Object | 44 | abstract Efl.Object |
36 | { | 45 | { |
diff --git a/src/lib/eo/eina_types.eot b/src/lib/eo/eina_types.eot index d936901..5c31e5b 100644 --- a/src/lib/eo/eina_types.eot +++ b/src/lib/eo/eina_types.eot | |||
@@ -1,6 +1,9 @@ | |||
1 | /* FIXME: Move to Eina when we decide they are handled properly. */ | 1 | /* FIXME: Move to Eina when we decide they are handled properly. */ |
2 | struct @extern @free(eina_rectangle_free) Eina.Rect { | 2 | struct @extern @free(eina_rectangle_free) Eina.Rect { |
3 | [[A rectangle in pixel dimensions.]] | 3 | [[A rectangle in pixel dimensions. |
4 | |||
5 | @since 1.22 | ||
6 | ]] | ||
4 | x: int; [[X coordinate of the rectangle, from the top-left corner.]] | 7 | x: int; [[X coordinate of the rectangle, from the top-left corner.]] |
5 | y: int; [[Y coordinate of the rectangle, from the top-left corner.]] | 8 | y: int; [[Y coordinate of the rectangle, from the top-left corner.]] |
6 | w: int; [[Width of the rectangle in pixels.]] | 9 | w: int; [[Width of the rectangle in pixels.]] |
@@ -8,27 +11,42 @@ struct @extern @free(eina_rectangle_free) Eina.Rect { | |||
8 | } | 11 | } |
9 | 12 | ||
10 | struct @extern Eina.Position2D { | 13 | struct @extern Eina.Position2D { |
11 | [[A 2D location in pixels.]] | 14 | [[A 2D location in pixels. |
15 | |||
16 | @since 1.22 | ||
17 | ]] | ||
12 | x: int; [[X position in pixels, from the top-left corner.]] | 18 | x: int; [[X position in pixels, from the top-left corner.]] |
13 | y: int; [[Y position in pixels, from the top-left corner.]] | 19 | y: int; [[Y position in pixels, from the top-left corner.]] |
14 | } | 20 | } |
15 | 21 | ||
16 | struct @extern Eina.Size2D { | 22 | struct @extern Eina.Size2D { |
17 | [[A 2D size in pixels.]] | 23 | [[A 2D size in pixels. |
24 | |||
25 | @since 1.22 | ||
26 | ]] | ||
18 | w: int; [[X position in pixels, from the top-left corner.]] | 27 | w: int; [[X position in pixels, from the top-left corner.]] |
19 | h: int; [[Y position in pixels, from the top-left corner.]] | 28 | h: int; [[Y position in pixels, from the top-left corner.]] |
20 | } | 29 | } |
21 | 30 | ||
22 | struct @extern Eina.File; [[Eina file data structure]] | 31 | struct @extern Eina.File; [[Eina file data structure |
32 | |||
33 | @since 1.22 | ||
34 | ]] | ||
23 | 35 | ||
24 | struct @extern Eina.Vector2 { | 36 | struct @extern Eina.Vector2 { |
25 | [[A simple 2D vector type using floating point values.]] | 37 | [[A simple 2D vector type using floating point values. |
38 | |||
39 | @since 1.22 | ||
40 | ]] | ||
26 | x: double; [[X coordinate.]] | 41 | x: double; [[X coordinate.]] |
27 | y: double; [[Y coordinate.]] | 42 | y: double; [[Y coordinate.]] |
28 | } | 43 | } |
29 | 44 | ||
30 | struct @extern Eina.Matrix3 { | 45 | struct @extern Eina.Matrix3 { |
31 | [[Eina 3x3 Matrix]] | 46 | [[Eina 3x3 Matrix |
47 | |||
48 | @since 1.22 | ||
49 | ]] | ||
32 | xx: double; [[XX matrix value]] | 50 | xx: double; [[XX matrix value]] |
33 | xy: double; [[XY matrix value]] | 51 | xy: double; [[XY matrix value]] |
34 | xz: double; [[XZ matrix value]] | 52 | xz: double; [[XZ matrix value]] |
@@ -60,7 +78,10 @@ enum @extern @beta Eina.Xattr.Flags { | |||
60 | created [[This will only succeed if the extended attribute wasn't previously set]] | 78 | created [[This will only succeed if the extended attribute wasn't previously set]] |
61 | } | 79 | } |
62 | 80 | ||
63 | type @extern Eina.Error: int; [[Eina error type]] | 81 | type @extern Eina.Error: int; [[Eina error type |
82 | |||
83 | @since 1.22 | ||
84 | ]] | ||
64 | 85 | ||
65 | struct @extern @beta @free(eina_binbuf_free) Eina.Binbuf; [[Eina binbuf data structure]] | 86 | struct @extern @beta @free(eina_binbuf_free) Eina.Binbuf; [[Eina binbuf data structure]] |
66 | struct @extern @beta @free(eina_strbuf_free) Eina.Strbuf; [[Eina strbuf data structure]] | 87 | struct @extern @beta @free(eina_strbuf_free) Eina.Strbuf; [[Eina strbuf data structure]] |
@@ -100,7 +121,10 @@ struct @extern @beta Eina.Stat { | |||
100 | ctimensec: ulong; [[The nano version of the timestmap when the file was created]] | 121 | ctimensec: ulong; [[The nano version of the timestmap when the file was created]] |
101 | } | 122 | } |
102 | 123 | ||
103 | struct @extern @free(eina_promise_free) Eina.Promise; [[Eina promise type]] | 124 | struct @extern @free(eina_promise_free) Eina.Promise; [[Eina promise type |
125 | |||
126 | @since 1.22 | ||
127 | ]] | ||
104 | 128 | ||
105 | /* FIXME: This definitely shouldn't be here. */ | 129 | /* FIXME: This definitely shouldn't be here. */ |
106 | type @beta Efl.Event_Cb: __undefined_type; [[Efl event callback type]] | 130 | type @beta Efl.Event_Cb: __undefined_type; [[Efl event callback type]] |
diff --git a/src/lib/eolian/database_validate.c b/src/lib/eolian/database_validate.c index c1de7ec..4e51718 100644 --- a/src/lib/eolian/database_validate.c +++ b/src/lib/eolian/database_validate.c | |||
@@ -1,5 +1,6 @@ | |||
1 | #include <ctype.h> | 1 | #include <ctype.h> |
2 | #include <assert.h> | 2 | #include <assert.h> |
3 | #include <stdlib.h> | ||
3 | 4 | ||
4 | #ifdef HAVE_CONFIG_H | 5 | #ifdef HAVE_CONFIG_H |
5 | # include "config.h" | 6 | # include "config.h" |
@@ -12,7 +13,10 @@ typedef struct _Validate_State | |||
12 | { | 13 | { |
13 | Eina_Bool warned; | 14 | Eina_Bool warned; |
14 | Eina_Bool stable; | 15 | Eina_Bool stable; |
16 | Eina_Bool in_tree; | ||
15 | Eina_Bool unimplemented_beta; | 17 | Eina_Bool unimplemented_beta; |
18 | Eina_Bool verify_since; | ||
19 | const char *since_ver; | ||
16 | } Validate_State; | 20 | } Validate_State; |
17 | 21 | ||
18 | static Eina_Bool | 22 | static Eina_Bool |
@@ -88,6 +92,60 @@ _validate_docstr(Eina_Stringshare *str, const Eolian_Object *info, Eina_List **r | |||
88 | } | 92 | } |
89 | 93 | ||
90 | static Eina_Bool | 94 | static Eina_Bool |
95 | _validate_doc_since(Validate_State *vals, Eolian_Documentation *doc) | ||
96 | { | ||
97 | if (!doc || !vals->stable || !vals->verify_since) | ||
98 | return EINA_TRUE; | ||
99 | |||
100 | if (doc->since) | ||
101 | { | ||
102 | if (!doc->since[0]) | ||
103 | { | ||
104 | /* this should not really happen */ | ||
105 | _eo_parser_log(&doc->base, "empty @since tag"); | ||
106 | return EINA_FALSE; | ||
107 | } | ||
108 | /* this is EFL; check the numbers */ | ||
109 | if (vals->in_tree) | ||
110 | { | ||
111 | const char *snum = doc->since; | ||
112 | if (strncmp(snum, "1.", 2)) | ||
113 | { | ||
114 | _eo_parser_log(&doc->base, "invalid EFL version in @since"); | ||
115 | return EINA_FALSE; | ||
116 | } | ||
117 | snum += 2; | ||
118 | unsigned long min = strtoul(snum, NULL, 10); | ||
119 | if (min < 22) | ||
120 | { | ||
121 | _eo_parser_log(&doc->base, "stable APIs must be 1.22 or higher"); | ||
122 | return EINA_FALSE; | ||
123 | } | ||
124 | } | ||
125 | vals->since_ver = doc->since; | ||
126 | } | ||
127 | else if (!vals->since_ver) | ||
128 | { | ||
129 | _eo_parser_log(&doc->base, "missing @since tag"); | ||
130 | return EINA_FALSE; | ||
131 | } | ||
132 | |||
133 | return EINA_TRUE; | ||
134 | } | ||
135 | |||
136 | static Eina_Bool | ||
137 | _validate_doc_since_reset(Validate_State *vals, Eolian_Documentation *doc) | ||
138 | { | ||
139 | if (!doc || !doc->since) | ||
140 | return EINA_TRUE; | ||
141 | |||
142 | const char *old_since = vals->since_ver; | ||
143 | Eina_Bool ret = _validate_doc_since(vals, doc); | ||
144 | vals->since_ver = old_since; | ||
145 | return ret; | ||
146 | } | ||
147 | |||
148 | static Eina_Bool | ||
91 | _validate_doc(Eolian_Documentation *doc) | 149 | _validate_doc(Eolian_Documentation *doc) |
92 | { | 150 | { |
93 | if (!doc) | 151 | if (!doc) |
@@ -133,6 +191,7 @@ _sf_map_cb(const Eina_Hash *hash EINA_UNUSED, const void *key EINA_UNUSED, | |||
133 | return EINA_FALSE; | 191 | return EINA_FALSE; |
134 | 192 | ||
135 | sc->succ = _validate_doc(sf->doc); | 193 | sc->succ = _validate_doc(sf->doc); |
194 | if (sc->succ) sc->succ = _validate_doc_since_reset(sc->vals, sf->doc); | ||
136 | 195 | ||
137 | return sc->succ; | 196 | return sc->succ; |
138 | } | 197 | } |
@@ -150,6 +209,7 @@ _ef_map_cb(const Eina_Hash *hash EINA_UNUSED, const void *key EINA_UNUSED, | |||
150 | return EINA_FALSE; | 209 | return EINA_FALSE; |
151 | 210 | ||
152 | sc->succ = _validate_doc(ef->doc); | 211 | sc->succ = _validate_doc(ef->doc); |
212 | if (sc->succ) sc->succ = _validate_doc_since_reset(sc->vals, ef->doc); | ||
153 | 213 | ||
154 | return sc->succ; | 214 | return sc->succ; |
155 | } | 215 | } |
@@ -160,12 +220,18 @@ _validate_typedecl(Validate_State *vals, Eolian_Typedecl *tp) | |||
160 | if (tp->base.validated) | 220 | if (tp->base.validated) |
161 | return EINA_TRUE; | 221 | return EINA_TRUE; |
162 | 222 | ||
163 | if (!_validate_doc(tp->doc)) | 223 | const char *old_since = vals->since_ver; |
164 | return EINA_FALSE; | 224 | vals->since_ver = NULL; |
165 | 225 | ||
166 | /* for the time being assume all typedecls are beta unless overridden */ | 226 | /* for the time being assume all typedecls are beta unless overridden */ |
167 | Eina_Bool was_stable = _set_stable(vals, !tp->base.is_beta); | 227 | Eina_Bool was_stable = _set_stable(vals, !tp->base.is_beta); |
168 | 228 | ||
229 | if (!_validate_doc(tp->doc)) | ||
230 | return EINA_FALSE; | ||
231 | |||
232 | if (!_validate_doc_since(vals, tp->doc)) | ||
233 | return EINA_FALSE; | ||
234 | |||
169 | switch (tp->type) | 235 | switch (tp->type) |
170 | { | 236 | { |
171 | case EOLIAN_TYPEDECL_ALIAS: | 237 | case EOLIAN_TYPEDECL_ALIAS: |
@@ -174,6 +240,7 @@ _validate_typedecl(Validate_State *vals, Eolian_Typedecl *tp) | |||
174 | if (tp->base_type->ownable) | 240 | if (tp->base_type->ownable) |
175 | tp->ownable = EINA_TRUE; | 241 | tp->ownable = EINA_TRUE; |
176 | _reset_stable(vals, was_stable, EINA_TRUE); | 242 | _reset_stable(vals, was_stable, EINA_TRUE); |
243 | vals->since_ver = old_since; | ||
177 | return _validate(&tp->base); | 244 | return _validate(&tp->base); |
178 | case EOLIAN_TYPEDECL_STRUCT: | 245 | case EOLIAN_TYPEDECL_STRUCT: |
179 | { | 246 | { |
@@ -182,10 +249,12 @@ _validate_typedecl(Validate_State *vals, Eolian_Typedecl *tp) | |||
182 | if (!rt.succ) | 249 | if (!rt.succ) |
183 | return _reset_stable(vals, was_stable, EINA_FALSE); | 250 | return _reset_stable(vals, was_stable, EINA_FALSE); |
184 | _reset_stable(vals, was_stable, EINA_TRUE); | 251 | _reset_stable(vals, was_stable, EINA_TRUE); |
252 | vals->since_ver = old_since; | ||
185 | return _validate(&tp->base); | 253 | return _validate(&tp->base); |
186 | } | 254 | } |
187 | case EOLIAN_TYPEDECL_STRUCT_OPAQUE: | 255 | case EOLIAN_TYPEDECL_STRUCT_OPAQUE: |
188 | _reset_stable(vals, was_stable, EINA_TRUE); | 256 | _reset_stable(vals, was_stable, EINA_TRUE); |
257 | vals->since_ver = old_since; | ||
189 | return _validate(&tp->base); | 258 | return _validate(&tp->base); |
190 | case EOLIAN_TYPEDECL_ENUM: | 259 | case EOLIAN_TYPEDECL_ENUM: |
191 | { | 260 | { |
@@ -199,12 +268,14 @@ _validate_typedecl(Validate_State *vals, Eolian_Typedecl *tp) | |||
199 | if (!rt.succ) | 268 | if (!rt.succ) |
200 | return _reset_stable(vals, was_stable, EINA_FALSE); | 269 | return _reset_stable(vals, was_stable, EINA_FALSE); |
201 | _reset_stable(vals, was_stable, EINA_TRUE); | 270 | _reset_stable(vals, was_stable, EINA_TRUE); |
271 | vals->since_ver = old_since; | ||
202 | return _validate(&tp->base); | 272 | return _validate(&tp->base); |
203 | } | 273 | } |
204 | case EOLIAN_TYPEDECL_FUNCTION_POINTER: | 274 | case EOLIAN_TYPEDECL_FUNCTION_POINTER: |
205 | if (!_validate_function(vals, tp->function_pointer, NULL)) | 275 | if (!_validate_function(vals, tp->function_pointer, NULL)) |
206 | return _reset_stable(vals, was_stable, EINA_FALSE); | 276 | return _reset_stable(vals, was_stable, EINA_FALSE); |
207 | _reset_stable(vals, was_stable, EINA_TRUE); | 277 | _reset_stable(vals, was_stable, EINA_TRUE); |
278 | vals->since_ver = old_since; | ||
208 | return _validate(&tp->base); | 279 | return _validate(&tp->base); |
209 | default: | 280 | default: |
210 | return _reset_stable(vals, was_stable, EINA_FALSE); | 281 | return _reset_stable(vals, was_stable, EINA_FALSE); |
@@ -576,6 +647,8 @@ _validate_part(Validate_State *vals, Eolian_Part *part, Eina_Hash *phash) | |||
576 | 647 | ||
577 | if (!_validate_doc(part->doc)) | 648 | if (!_validate_doc(part->doc)) |
578 | return _reset_stable(vals, was_stable, EINA_FALSE); | 649 | return _reset_stable(vals, was_stable, EINA_FALSE); |
650 | if (!_validate_doc_since_reset(vals, part->doc)) | ||
651 | return _reset_stable(vals, was_stable, EINA_FALSE); | ||
579 | 652 | ||
580 | /* switch the class name for class */ | 653 | /* switch the class name for class */ |
581 | Eolian_Class *pcl = eina_hash_find(part->base.unit->classes, part->klass_name); | 654 | Eolian_Class *pcl = eina_hash_find(part->base.unit->classes, part->klass_name); |
@@ -695,6 +768,8 @@ _validate_event(Validate_State *vals, Eolian_Event *event, Eina_Hash *nhash) | |||
695 | 768 | ||
696 | if (!_validate_doc(event->doc)) | 769 | if (!_validate_doc(event->doc)) |
697 | return _reset_stable(vals, was_stable, EINA_FALSE); | 770 | return _reset_stable(vals, was_stable, EINA_FALSE); |
771 | if (!_validate_doc_since_reset(vals, event->doc)) | ||
772 | return _reset_stable(vals, was_stable, EINA_FALSE); | ||
698 | 773 | ||
699 | eina_hash_set(nhash, &event->base.name, &event->base); | 774 | eina_hash_set(nhash, &event->base.name, &event->base); |
700 | 775 | ||
@@ -1346,7 +1421,7 @@ _db_fill_inherits(Validate_State *vals, Eolian_Class *cl, Eina_Hash *fhash, | |||
1346 | } | 1421 | } |
1347 | 1422 | ||
1348 | static Eina_Bool | 1423 | static Eina_Bool |
1349 | _validate_implement(Eolian_Implement *impl) | 1424 | _validate_implement(Validate_State *vals, Eolian_Implement *impl) |
1350 | { | 1425 | { |
1351 | if (impl->base.validated) | 1426 | if (impl->base.validated) |
1352 | return EINA_TRUE; | 1427 | return EINA_TRUE; |
@@ -1358,6 +1433,16 @@ _validate_implement(Eolian_Implement *impl) | |||
1358 | if (!_validate_doc(impl->set_doc)) | 1433 | if (!_validate_doc(impl->set_doc)) |
1359 | return EINA_FALSE; | 1434 | return EINA_FALSE; |
1360 | 1435 | ||
1436 | /* common doc inherits @since into get/set doc */ | ||
1437 | const char *old_since = vals->since_ver; | ||
1438 | if (impl->common_doc && !_validate_doc_since(vals, impl->common_doc)) | ||
1439 | return EINA_FALSE; | ||
1440 | if (!_validate_doc_since_reset(vals, impl->get_doc)) | ||
1441 | return EINA_FALSE; | ||
1442 | if (!_validate_doc_since_reset(vals, impl->set_doc)) | ||
1443 | return EINA_FALSE; | ||
1444 | vals->since_ver = old_since; | ||
1445 | |||
1361 | return _validate(&impl->base); | 1446 | return _validate(&impl->base); |
1362 | } | 1447 | } |
1363 | 1448 | ||
@@ -1485,6 +1570,10 @@ _validate_class(Validate_State *vals, Eolian_Class *cl, | |||
1485 | } | 1570 | } |
1486 | 1571 | ||
1487 | _set_stable(vals, !cl->base.is_beta); | 1572 | _set_stable(vals, !cl->base.is_beta); |
1573 | vals->since_ver = NULL; | ||
1574 | |||
1575 | if (!_validate_doc_since(vals, cl->doc)) | ||
1576 | return EINA_FALSE; | ||
1488 | 1577 | ||
1489 | EINA_LIST_FOREACH(cl->properties, l, func) | 1578 | EINA_LIST_FOREACH(cl->properties, l, func) |
1490 | if (!_validate_function(vals, func, nhash)) | 1579 | if (!_validate_function(vals, func, nhash)) |
@@ -1503,7 +1592,7 @@ _validate_class(Validate_State *vals, Eolian_Class *cl, | |||
1503 | return EINA_FALSE; | 1592 | return EINA_FALSE; |
1504 | 1593 | ||
1505 | EINA_LIST_FOREACH(cl->implements, l, impl) | 1594 | EINA_LIST_FOREACH(cl->implements, l, impl) |
1506 | if (!_validate_implement(impl)) | 1595 | if (!_validate_implement(vals, impl)) |
1507 | return EINA_FALSE; | 1596 | return EINA_FALSE; |
1508 | 1597 | ||
1509 | /* all the checks that need to be done every time are performed now */ | 1598 | /* all the checks that need to be done every time are performed now */ |
@@ -1529,8 +1618,14 @@ _validate_constant(Validate_State *vals, Eolian_Constant *var) | |||
1529 | if (var->base.validated) | 1618 | if (var->base.validated) |
1530 | return EINA_TRUE; | 1619 | return EINA_TRUE; |
1531 | 1620 | ||
1621 | const char *old_since = vals->since_ver; | ||
1622 | vals->since_ver = NULL; | ||
1623 | |||
1532 | Eina_Bool was_stable = _set_stable(vals, !var->base.is_beta && vals->stable); | 1624 | Eina_Bool was_stable = _set_stable(vals, !var->base.is_beta && vals->stable); |
1533 | 1625 | ||
1626 | if (!_validate_doc_since(vals, var->doc)) | ||
1627 | return EINA_FALSE; | ||
1628 | |||
1534 | if (!_validate_type(vals, var->base_type, EINA_FALSE, EINA_FALSE)) | 1629 | if (!_validate_type(vals, var->base_type, EINA_FALSE, EINA_FALSE)) |
1535 | return _reset_stable(vals, was_stable, EINA_FALSE); | 1630 | return _reset_stable(vals, was_stable, EINA_FALSE); |
1536 | 1631 | ||
@@ -1541,6 +1636,7 @@ _validate_constant(Validate_State *vals, Eolian_Constant *var) | |||
1541 | return _reset_stable(vals, was_stable, EINA_FALSE); | 1636 | return _reset_stable(vals, was_stable, EINA_FALSE); |
1542 | 1637 | ||
1543 | _reset_stable(vals, was_stable, EINA_TRUE); | 1638 | _reset_stable(vals, was_stable, EINA_TRUE); |
1639 | vals->since_ver = old_since; | ||
1544 | return _validate(&var->base); | 1640 | return _validate(&var->base); |
1545 | } | 1641 | } |
1546 | 1642 | ||
@@ -1566,7 +1662,9 @@ database_validate(const Eolian_Unit *src) | |||
1566 | Validate_State vals = { | 1662 | Validate_State vals = { |
1567 | EINA_FALSE, | 1663 | EINA_FALSE, |
1568 | EINA_TRUE, | 1664 | EINA_TRUE, |
1569 | !!getenv("EOLIAN_CLASS_UNIMPLEMENTED_BETA_WARN") | 1665 | !!getenv("EFL_RUN_IN_TREE"), |
1666 | !!getenv("EOLIAN_CLASS_UNIMPLEMENTED_BETA_WARN"), | ||
1667 | !!getenv("EOLIAN_ENFORCE_SINCE") | ||
1570 | }; | 1668 | }; |
1571 | 1669 | ||
1572 | /* do an initial pass to refill inherits */ | 1670 | /* do an initial pass to refill inherits */ |
diff --git a/src/lib/evas/canvas/efl_canvas_object.eo b/src/lib/evas/canvas/efl_canvas_object.eo index ab51da1..48b67e7 100644 --- a/src/lib/evas/canvas/efl_canvas_object.eo +++ b/src/lib/evas/canvas/efl_canvas_object.eo | |||
@@ -2,7 +2,10 @@ import efl_text_types; | |||
2 | 2 | ||
3 | struct @beta Efl.Canvas.Object_Animation_Event; [[Information of animation events]] | 3 | struct @beta Efl.Canvas.Object_Animation_Event; [[Information of animation events]] |
4 | struct Efl.Event_Animator_Tick { | 4 | struct Efl.Event_Animator_Tick { |
5 | [[EFL event animator tick data structure]] | 5 | [[EFL event animator tick data structure |
6 | |||
7 | @since 1.22 | ||
8 | ]] | ||
6 | update_area: Eina.Rect; [[Area of the canvas that will be pushed to screen.]] | 9 | update_area: Eina.Rect; [[Area of the canvas that will be pushed to screen.]] |
7 | } | 10 | } |
8 | 11 | ||
diff --git a/src/lib/evas/canvas/efl_input_event.eo b/src/lib/evas/canvas/efl_input_event.eo index 9194b0b..080ef90 100644 --- a/src/lib/evas/canvas/efl_input_event.eo +++ b/src/lib/evas/canvas/efl_input_event.eo | |||
@@ -7,6 +7,8 @@ mixin Efl.Input.Event requires Efl.Object extends Efl.Duplicate | |||
7 | Note: Most Efl Events do not carry Efl Objects, rather simple data | 7 | Note: Most Efl Events do not carry Efl Objects, rather simple data |
8 | structures. This class is intended to carry more complex event | 8 | structures. This class is intended to carry more complex event |
9 | data, such as pointer events. | 9 | data, such as pointer events. |
10 | |||
11 | @since 1.23 | ||
10 | ]] | 12 | ]] |
11 | c_prefix: efl_input; | 13 | c_prefix: efl_input; |
12 | data: null; | 14 | data: null; |
diff --git a/src/lib/evas/canvas/efl_input_interface.eo b/src/lib/evas/canvas/efl_input_interface.eo index fde39c1..1a89206 100644 --- a/src/lib/evas/canvas/efl_input_interface.eo +++ b/src/lib/evas/canvas/efl_input_interface.eo | |||
@@ -18,6 +18,8 @@ interface Efl.Input.Interface | |||
18 | A "key" is a key press from a keyboard or equivalent type of input device. | 18 | A "key" is a key press from a keyboard or equivalent type of input device. |
19 | Long, repeated, key presses will always happen like this: | 19 | Long, repeated, key presses will always happen like this: |
20 | down...up,down...up,down...up (not down...up or down...down...down...up). | 20 | down...up,down...up,down...up (not down...up or down...down...down...up). |
21 | |||
22 | @since 1.23 | ||
21 | ]] | 23 | ]] |
22 | c_prefix: efl_input; | 24 | c_prefix: efl_input; |
23 | event_c_prefix: efl; | 25 | event_c_prefix: efl; |