1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
#include <stdlib.h>
#include <stdio.h>
#include "rect.h"
#define TYPE Rect
DEFINE_OBJECT_STRUCTURE(TYPE) {
int left, top, width, height;
};
CONSTRUCTOR_IMPLEMENT(TYPE);
void METHOD(TYPE, init, int l, int t, int w, int h) {
self->left = l;
self->top = t;
self->width = w;
self->height = h;
}
int METHOD(TYPE, toString, char* buffer) {
return sprintf(buffer, NAMEOF(TYPE) " { left = %i, top = %i, width = %i, height = %i }", self->left, self->top, self->width, self->height);
}
GETTER_IMPLEMENT(TYPE, int, left);
SETTER_IMPLEMENT(TYPE, int, left);
GETTER_IMPLEMENT(TYPE, int, top);
SETTER_IMPLEMENT(TYPE, int, top);
GETTER_IMPLEMENT(TYPE, int, width);
SETTER_IMPLEMENT(TYPE, int, width);
GETTER_IMPLEMENT(TYPE, int, height);
SETTER_IMPLEMENT(TYPE, int, height);
GETTER(TYPE, int, right) {
return self->left + self->width;
}
GETTER(TYPE, int, bottom) {
return self->top + self->height;
}
#undef TYPE
|