diff options
author | 2025-05-22 17:49:46 +0600 | |
---|---|---|
committer | 2025-05-22 17:49:46 +0600 | |
commit | cefb440148fd80cac7537b3743dd0e018df3a797 (patch) | |
tree | 33ad297fd7226d4ef74678194cce444ba0d7cf90 /src/cobj.h | |
parent | ff1ba1e770b4205c2cc367ff513325e5f22c73e8 (diff) | |
download | c-obp-example-cefb440148fd80cac7537b3743dd0e018df3a797.tar.gz c-obp-example-cefb440148fd80cac7537b3743dd0e018df3a797.zip |
Rework class template
Signed-off-by: Mubashshir <ahmubashshir@gmail.com>
Diffstat (limited to 'src/cobj.h')
-rw-r--r-- | src/cobj.h | 44 |
1 files changed, 20 insertions, 24 deletions
@@ -1,22 +1,18 @@ #ifndef __COBJ_IMPLS_H__ # define __COBJ_IMPLS_H__ -# define get(instance, field, ...) \ +# define Get(instance, field, ...) \ (instance)->get_##field(instance, ## __VA_ARGS__) -# define set(instance, field, ...) \ +# define Set(instance, field, ...) \ (instance)->set_##field(instance, ## __VA_ARGS__) -# define call(instance, fun, ...) \ +# define Call(instance, fun, ...) \ (instance)->fun(instance, ## __VA_ARGS__) -# define new(klass, ...) klass##_new(__VA_ARGS__) -# define del(klass, ...) klass##_del(__VA_ARGS__) +# define New(klass, ...) klass##_new(__VA_ARGS__) +# define Del(klass, ...) klass##_del(__VA_ARGS__) #endif /* __COBJ_IMPLS_H__ */ #if defined(__USE_C_OBJSYS__) -# undef CLASS -# undef GETTER -# undef SETTER -# undef DEFINE -# undef NEW -# undef DEL +# undef New +# undef Del # undef __USE_C_OBJSYS__ #elif defined(__COBJ_PRIV_IMPLS_H__) # define UNUSED(arg) while(0 && (arg)) @@ -38,38 +34,38 @@ void klass ## _del(klass self, ## __VA_ARGS__) \ body +# define Property(klass, name) \ + (self->get_ ## name) = (& klass ## _ ## get_ ## name), \ + (self->set_ ## name) = (& klass ## _ ## set_ ## name) + +# define Callable(klass, name) \ + (self->name) = (& klass ## _ ## name) + # define SELF(name) \ self->_property_ ## name # define GET(obj, name) \ (obj)->_property_ ## name #else -# define CLASS(klass, data, ...) \ +# define Class(klass, data, ...) \ typedef struct __##klass##_impl * klass; \ klass klass ## _new(__VA_ARGS__); \ void klass ## _delete(); \ struct __##klass##_impl data -# define LIST(klass, field, type, dim, ...) \ +# define List(klass, field, type, dim, ...) \ type _property_ ## field dim; \ type* (*get_ ## field)(klass, ## __VA_ARGS__); \ bool (*set_ ## field)(klass, ## __VA_ARGS__, const type * const) -# define ATOM(klass, field, type, ...) \ +# define Atom(klass, field, type, ...) \ type _property_ ## field; \ type (*get_ ## field)(klass, ## __VA_ARGS__);\ bool (*set_ ## field)(klass, ## __VA_ARGS__, type) -# define FUNC(klass, name, type, ...) \ +# define Func(klass, name, type, ...) \ type (*name)(klass, ## __VA_ARGS__) - -# define PROPERTY(klass, name) \ - (self->get_ ## name) = (& klass ## _ ## get_ ## name), \ - (self->set_ ## name) = (& klass ## _ ## set_ ## name) - -# define CALLABLE(klass, name) \ - (self->name) = (& klass ## _ ## name) - -# define DEL() void (*del)(klass self) +# define Del (klass) \ + void (*destroy)(klass) # define __USE_C_OBJSYS__ #endif |