summaryrefslogtreecommitdiff
path: root/src/cobj.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/cobj.h')
-rw-r--r--src/cobj.h46
1 files changed, 46 insertions, 0 deletions
diff --git a/src/cobj.h b/src/cobj.h
new file mode 100644
index 0000000..f8a4fec
--- /dev/null
+++ b/src/cobj.h
@@ -0,0 +1,46 @@
+#ifndef __COBJ_IMPLS_H__
+# define __COBJ_IMPLS_H__
+# define get(klass, instance, field, ...) \
+ klass##_get_##field(instance, ## __VA_ARGS__)
+# define set(klass, instance, field, ...) \
+ klass##_set_##field(instance, ## __VA_ARGS__)
+# define new(klass, ...) klass##_new(__VA_ARGS__)
+# define del(klass, ...) klass##_del(__VA_ARGS__)
+# define ask(klass, fun, ...) klass##_##fun(__VA_ARGS__)
+#endif /* __COBJ_IMPLS_H__ */
+
+#if defined(__USE_C_OBJSYS__)
+# undef GETTER
+# undef SETTER
+# undef DEFINE
+# undef NEW
+# undef DEL
+# undef __USE_C_OBJSYS__
+#elif defined(__COBJ_PRIV_IMPLS_H__)
+# define UNUSED(arg) while(0 && (arg))
+# define GETTER(klass, field, type, body, ...) \
+ type klass##_get_##field(klass self, ## __VA_ARGS__) \
+ body
+# define SETTER(klass, field, type, body, ...) \
+ bool klass##_set_##field(klass self, ## __VA_ARGS__, type value) \
+ body
+# define DEFINE(klass, name, type, body, ...) \
+ type klass##_##name(klass self, ## __VA_ARGS__) \
+ body
+# define NEW(klass, body, ...) \
+ klass klass ## _new(__VA_ARGS__) \
+ body
+# define DEL(klass, body, ...) \
+ void klass ## _del(klass self, ## __VA_ARGS__) \
+ body
+#else
+# define GETTER(klass, field, type, ...) \
+ type klass##_get_##field(klass self, ## __VA_ARGS__)
+# define SETTER(klass, field, type, ...) \
+ bool klass##_set_##field(klass self, ## __VA_ARGS__, type value)
+# define DEFINE(klass, name, type, ...) \
+ type klass##_##name(klass self, ## __VA_ARGS__)
+# define NEW(klass, ...) klass klass ## _new(__VA_ARGS__)
+# define DEL(klass, ...) void klass ## _del(klass self, ## __VA_ARGS__)
+# define __USE_C_OBJSYS__
+#endif