From 1a44b7e86a38b886902e172c292f810647a60277 Mon Sep 17 00:00:00 2001 From: Daniel Kolesa Date: Fri, 26 Jul 2019 13:35:27 +0200 Subject: [PATCH] eolian: ban void_ptr in stable APIs This required some refactoring in eldbus and tests but otherwise seems good to go. --- src/lib/eldbus/Eldbus.h | 20 +++- src/lib/eldbus/eldbus_introspection.h | 104 ++++++++++++++++++++- src/lib/eldbus/eldbus_types.eot | 26 +++--- src/lib/eolian/database_validate.c | 11 +++ src/lib/evas/include/evas_ector_buffer.eo | 2 +- .../eolian_cxx/name1_name2_type_generation.eo | 2 +- 6 files changed, 148 insertions(+), 17 deletions(-) diff --git a/src/lib/eldbus/Eldbus.h b/src/lib/eldbus/Eldbus.h index 1167adb..4539a63 100644 --- a/src/lib/eldbus/Eldbus.h +++ b/src/lib/eldbus/Eldbus.h @@ -217,7 +217,25 @@ typedef void (*Eldbus_Signal_Cb)(void *data, const Eldbus_Message *msg); * @} */ -#include "eldbus_types.eot.h" +/* FIXME: these are duplicated as @extern in eldbus_types.eot */ + +/** Represents a client object bound to an interface + * + * @ingroup Eldbus + */ +typedef struct _Eldbus_Proxy Eldbus_Proxy; + +/** Represents a connection of one the type of connection with the DBus daemon. + * + * @ingroup Eldbus + */ +typedef struct _Eldbus_Connection Eldbus_Connection; + +/** Represents an object path already attached with bus name or unique id + * + * @ingroup Eldbus + */ +typedef struct _Eldbus_Object Eldbus_Object; #include "eldbus_connection.h" #include "eldbus_message.h" diff --git a/src/lib/eldbus/eldbus_introspection.h b/src/lib/eldbus/eldbus_introspection.h index 7c02498..665d38a 100644 --- a/src/lib/eldbus/eldbus_introspection.h +++ b/src/lib/eldbus/eldbus_introspection.h @@ -4,7 +4,109 @@ #include #include -#include "eldbus_types.eot.h" +/* FIXME: these are duplicated as @extern in eldbus_types.eot */ + +/** Argument direction + * + * @ingroup Eldbus_Introspection + */ +typedef enum +{ + ELDBUS_INTROSPECTION_ARGUMENT_DIRECTION_NONE = 0, /**< No direction */ + ELDBUS_INTROSPECTION_ARGUMENT_DIRECTION_IN, /**< Incoming direction */ + ELDBUS_INTROSPECTION_ARGUMENT_DIRECTION_OUT /**< Outgoing direction */ +} Eldbus_Introspection_Argument_Direction; + +/** Property access rights + * + * @ingroup Eldbus_Introspection + */ +typedef enum +{ + ELDBUS_INTROSPECTION_PROPERTY_ACCESS_READ = 0, /**< Property can be read */ + ELDBUS_INTROSPECTION_PROPERTY_ACCESS_WRITE, /**< Property can be written */ + ELDBUS_INTROSPECTION_PROPERTY_ACCESS_READWRITE /**< Property can be read and + * written */ +} Eldbus_Introspection_Property_Access; + +/** DBus Node + * + * @ingroup Eldbus_Introspection + */ +typedef struct _Eldbus_Introspection_Node +{ + Eina_Stringshare *name; /**< Node name (optional) */ + Eina_List *nodes; /**< List with nodes */ + Eina_List *interfaces; /**< List with interfaces */ +} Eldbus_Introspection_Node; + +/** DBus Interface + * + * @ingroup Eldbus_Introspection + */ +typedef struct _Eldbus_Introspection_Interface +{ + Eina_Stringshare *name; /**< Interface name */ + Eina_List *methods; /**< List with interface methods */ + Eina_List *signals; /**< List with interface signals */ + Eina_List *properties; /**< List with interface properties */ + Eina_List *annotations; /**< List with interface annotations */ +} Eldbus_Introspection_Interface; + +/** DBus Method + * + * @ingroup Eldbus_Introspection + */ +typedef struct _Eldbus_Introspection_Method +{ + Eina_Stringshare *name; /**< Method name */ + Eina_List *arguments; /**< List with method arguments */ + Eina_List *annotations; /**< List with method annotations */ +} Eldbus_Introspection_Method; + +/** DBus Property + * + * @ingroup Eldbus_Introspection + */ +typedef struct _Eldbus_Introspection_Property +{ + Eina_Stringshare *name; /**< Property name */ + Eina_Stringshare *type; /**< Property type */ + Eldbus_Introspection_Property_Access access; /**< Property access rights */ + Eina_List *annotations; /**< List with property annotations */ +} Eldbus_Introspection_Property; + +/** DBus Annotation + * + * @ingroup Eldbus_Introspection + */ +typedef struct _Eldbus_Introspection_Annotation +{ + Eina_Stringshare *name; /**< Annotation name */ + Eina_Stringshare *value; /**< Annotation value */ +} Eldbus_Introspection_Annotation; + +/** DBus Argument + * + * @ingroup Eldbus_Introspection + */ +typedef struct _Eldbus_Introspection_Argument +{ + Eina_Stringshare *name; /**< Argument name (optional) */ + Eina_Stringshare *type; /**< Argument type */ + Eldbus_Introspection_Argument_Direction direction; /**< Argument direction */ +} Eldbus_Introspection_Argument; + +/** DBus Signal + * + * @ingroup Eldbus_Introspection + */ +typedef struct _Eldbus_Introspection_Signal +{ + Eina_Stringshare *name; /**< Signal name */ + Eina_List *arguments; /**< List with signal arguments */ + Eina_List *annotations; /**< List with signal annotations */ +} Eldbus_Introspection_Signal; /** * @brief Parses the introspection xml abstracting it to an object tree diff --git a/src/lib/eldbus/eldbus_types.eot b/src/lib/eldbus/eldbus_types.eot index ebd3130..a4a5bab 100644 --- a/src/lib/eldbus/eldbus_types.eot +++ b/src/lib/eldbus/eldbus_types.eot @@ -1,8 +1,8 @@ -struct Eldbus.Proxy; [[Represents a client object bound to an interface]] -struct Eldbus.Connection; [[Represents a connection of one the type of connection with the DBus daemon.]] -struct Eldbus.Object; [[Represents an object path already attached with bus name or unique id]] +struct @beta @extern Eldbus.Proxy; [[Represents a client object bound to an interface]] +struct @beta @extern Eldbus.Connection; [[Represents a connection of one the type of connection with the DBus daemon.]] +struct @beta @extern Eldbus.Object; [[Represents an object path already attached with bus name or unique id]] -enum @extern Eldbus.Connection.Type +enum @beta @extern Eldbus.Connection.Type { [[Eldbus connection type]] unknown = 0, [[Sentinel, not a real type]] @@ -13,7 +13,7 @@ enum @extern Eldbus.Connection.Type last, [[Sentinel, not a real type]] } -enum Eldbus.Introspection.Argument_Direction +enum @beta @extern Eldbus.Introspection.Argument_Direction { [[Argument direction]] none = 0, [[No direction]] @@ -23,7 +23,7 @@ enum Eldbus.Introspection.Argument_Direction /* DTD conversion form: http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd */ -enum Eldbus.Introspection.Property_Access +enum @beta @extern Eldbus.Introspection.Property_Access { [[Property access rights]] read, [[Property can be read]] @@ -32,7 +32,7 @@ enum Eldbus.Introspection.Property_Access } /* FIXME: Properly type all of these lists. */ -struct Eldbus.Introspection.Node +struct @beta @extern Eldbus.Introspection.Node { [[DBus Node]] name: stringshare; [[Node name (optional)]] @@ -40,7 +40,7 @@ struct Eldbus.Introspection.Node interfaces: list; [[List with interfaces]] } -struct Eldbus.Introspection.Interface +struct @beta @extern Eldbus.Introspection.Interface { [[DBus Interface]] name: stringshare; [[Interface name]] @@ -50,7 +50,7 @@ struct Eldbus.Introspection.Interface annotations: list; [[List with interface annotations]] } -struct Eldbus.Introspection.Method +struct @beta @extern Eldbus.Introspection.Method { [[DBus Method]] name: stringshare; [[Method name]] @@ -58,7 +58,7 @@ struct Eldbus.Introspection.Method annotations: list; [[List with method annotations]] } -struct Eldbus.Introspection.Property +struct @beta @extern Eldbus.Introspection.Property { [[DBus Property]] name: stringshare; [[Property name]] @@ -67,14 +67,14 @@ struct Eldbus.Introspection.Property annotations: list; [[List with property annotations]] } -struct Eldbus.Introspection.Annotation +struct @beta @extern Eldbus.Introspection.Annotation { [[DBus Annotation]] name: stringshare; [[Annotation name]] value: stringshare; [[Annotation value]] } -struct Eldbus.Introspection.Argument +struct @beta @extern Eldbus.Introspection.Argument { [[DBus Argument]] name: stringshare; [[Argument name (optional)]] @@ -82,7 +82,7 @@ struct Eldbus.Introspection.Argument direction: Eldbus.Introspection.Argument_Direction; [[Argument direction]] } -struct Eldbus.Introspection.Signal +struct @beta @extern Eldbus.Introspection.Signal { [[DBus Signal]] name: stringshare; [[Signal name]] diff --git a/src/lib/eolian/database_validate.c b/src/lib/eolian/database_validate.c index 8e14a95..95dc4a5 100644 --- a/src/lib/eolian/database_validate.c +++ b/src/lib/eolian/database_validate.c @@ -289,6 +289,17 @@ _validate_type(Validate_State *vals, Eolian_Type *tp) default: break; } + switch (id) + { + case KW_void_ptr: + if (vals->stable) + { + _eo_parser_log(&tp->base, + "deprecated builtin type '%s' not allowed in stable context", + tp->base.name); + return EINA_FALSE; + } + } return _validate_ownable(tp); } /* user defined */ diff --git a/src/lib/evas/include/evas_ector_buffer.eo b/src/lib/evas/include/evas_ector_buffer.eo index 8801c5a..5c09745 100644 --- a/src/lib/evas/include/evas_ector_buffer.eo +++ b/src/lib/evas/include/evas_ector_buffer.eo @@ -1,4 +1,4 @@ -interface Evas.Ector.Buffer +interface @beta Evas.Ector.Buffer { [[Binding layer between ector buffers and evas images. diff --git a/src/tests/eolian_cxx/name1_name2_type_generation.eo b/src/tests/eolian_cxx/name1_name2_type_generation.eo index dce2ff2..8f3ca8e 100644 --- a/src/tests/eolian_cxx/name1_name2_type_generation.eo +++ b/src/tests/eolian_cxx/name1_name2_type_generation.eo @@ -1,4 +1,4 @@ -class Name1.Name2.Type_Generation extends Efl.Object +class @beta Name1.Name2.Type_Generation extends Efl.Object { data: Type_Generation_Data; methods { -- 2.7.4