summaryrefslogtreecommitdiff
path: root/src/teams-hell.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/teams-hell.h')
-rw-r--r--src/teams-hell.h50
1 files changed, 50 insertions, 0 deletions
diff --git a/src/teams-hell.h b/src/teams-hell.h
new file mode 100644
index 0000000..72fbdbd
--- /dev/null
+++ b/src/teams-hell.h
@@ -0,0 +1,50 @@
+#if defined(__TEAMS_H__) || defined(__TEAMS_PRIVATE_UNDEF__)
+
+# ifndef __TEAMS_HELL_H__
+# define __TEAMS_HELL_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 fun(klass, fun, ...) klass##_##fun(__VA_ARGS__)
+# endif /* __TEAMS_HELL_H__ */
+
+# if defined(__TEAMS_PRIVATE_UNDEF__)
+# undef GETTER
+# undef SETTER
+# undef DEFINE
+# undef NEW
+# undef DEL
+# undef __TEAMS_PRIVATE_UNDEF__
+# undef __TEAMS_PRIVATE_H__
+# elif defined(__IMPL_TEAMS_INTERNAL)
+# define UNUSED(arg) while(0 && (arg))
+# define GETTER(klass, field, struct, type, body, ...) \
+ type klass##_get_##field(struct self, ## __VA_ARGS__) \
+ body
+# define SETTER(klass, field, struct, type, body, ...) \
+ bool klass##_set_##field(struct self, ## __VA_ARGS__, type value) \
+ body
+# define DEFINE(klass, name, struct, type, body, ...) \
+ type klass##_##name(struct self, ## __VA_ARGS__) \
+ body
+# define NEW(klass, struct, body, ...) \
+ struct klass ## _new(__VA_ARGS__) \
+ body
+# define DEL(klass, struct, body, ...) \
+ void klass ## _del(struct self, ## __VA_ARGS__) \
+ body
+# elif defined(__TEAMS_PRIVATE_H__)
+# define GETTER(klass, field, struct, type, ...) \
+ type klass##_get_##field(struct self, ## __VA_ARGS__)
+# define SETTER(klass, field, struct, type, ...) \
+ bool klass##_set_##field(struct self, ## __VA_ARGS__, type value)
+# define DEFINE(klass, name, struct, type, ...) \
+ type klass##_##name(struct self, ## __VA_ARGS__)
+# define NEW(klass, struct, ...) struct klass ## _new(__VA_ARGS__)
+# define DEL(klass, struct, ...) void klass ## _del(struct self, ## __VA_ARGS__)
+# endif
+
+#endif