From 1bc6faa48907919376b14429f3b802d0d16fc00a Mon Sep 17 00:00:00 2001 From: Henrik Rydberg Date: Tue, 21 Dec 2010 17:29:14 +0100 Subject: Make evemu ABI resilient Hide the evemu struct, make it versioned, and instead use new/delete and accessor functions. This should give us enough ABI stability to run mixed library implementations. Signed-off-by: Henrik Rydberg --- src/evemu.c | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) (limited to 'src/evemu.c') diff --git a/src/evemu.c b/src/evemu.c index 54156aa..53bda86 100644 --- a/src/evemu.c +++ b/src/evemu.c @@ -26,7 +26,8 @@ * ****************************************************************************/ -#include "evemu.h" +#include "evemu-impl.h" +#include #include #include #include @@ -44,6 +45,34 @@ static void copy_bits(unsigned char *mask, const unsigned long *bits, int bytes) } } +struct evemu_device *evemu_new(const char *name) +{ + struct evemu_device *dev = calloc(1, sizeof(struct evemu_device)); + + dev->version_major = EVEMU_VERSION_MAJOR; + dev->version_minor = EVEMU_VERSION_MINOR; + + if (name && strlen(name) < sizeof(dev->name)) + strcpy(dev->name, name); + + return dev; +} + +void evemu_delete(struct evemu_device *dev) +{ + free(dev); +} + +const char *evemu_get_name(const struct evemu_device *dev) +{ + return dev->name; +} + +int evemu_has(const struct evemu_device *dev, int type, int code) +{ + return (dev->mask[type][code >> 3] >> (code & 7)) & 1; +} + int evemu_extract(struct evemu_device *dev, int fd) { unsigned long bits[64]; -- cgit v1.2.3