eolian: ban void_ptr in stable APIs

This required some refactoring in eldbus and tests but otherwise
seems good to go.
This commit is contained in:
Daniel Kolesa 2019-07-26 13:35:27 +02:00
parent d964a04da1
commit 635a2df7e7
6 changed files with 148 additions and 17 deletions

View File

@ -212,7 +212,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"

View File

@ -4,7 +4,109 @@
#include <Eina.h>
#include <Eo.h>
#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

View File

@ -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<void_ptr>; [[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<void_ptr>; [[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<void_ptr>; [[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<void_ptr>; [[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]]

View File

@ -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 */

View File

@ -1,4 +1,4 @@
interface Evas.Ector.Buffer
interface @beta Evas.Ector.Buffer
{
[[Binding layer between ector buffers and evas images.

View File

@ -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 {