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
44
45
46
47
48
49
|
/* vim: set sw=4 ts=4 sts=4 et: */
#ifndef LBS_ARRAY2_H
#define LBS_ARRAY2_H
#include <l4common.h>
typedef struct LbsArray2Struct {
/*< private >*/
size_t size; /* element size */
size_t lenx; /* x length */
size_t leny; /* y length */
unsigned ref_count; /* reference count */
/*< public >*/
char data[]; /* data */
} LbsArray2;
#define LBS_ARRAY2(x) ((LbsArray2*)(x))
LbsArray2* lbs_array2_new (size_t size, int lenx, int leny);
void lbs_array2_copy_in (LbsArray2* array2, const void* copy_in);
void lbs_array2_copy_out (LbsArray2* array2, void* copy_out);
#define lbs_array2_ref(array2) \
(lbs_array2_ref_generic (LBS_COMMON_CHECK_TYPE ((array2), LbsArray2*)))
#define lbs_array2_unref(array2) \
(lbs_array2_unref_generic (LBS_COMMON_CHECK_TYPE ((array2), LbsArray2*)))
void* lbs_array2_ref_generic (void* array2);
void lbs_array2_unref_generic (void* array2);
#define lbs_array2_get_data(array2) \
(LBS_COMMON_CHECK_TYPE ((array2), LbsArray2*)->data)
#define lbs_array2_get_size(array2) \
(LBS_COMMON_CHECK_TYPE ((array2), LbsArray2*)->size)
#define lbs_array2_get_lenx(array2) \
(LBS_COMMON_CHECK_TYPE ((array2), LbsArray2*)->lenx)
#define lbs_array2_get_leny(array2) \
(LBS_COMMON_CHECK_TYPE ((array2), LbsArray2*)->leny)
#define lbs_array2_get_ref_count(array2) \
(LBS_COMMON_CHECK_TYPE ((array2), LbsArray2*)->ref_count)
#define lbs_array2_v(array2,type,x,y) \
(*(((type*)((array2)->data)) + \
((x)*((array2)->leny))+(y)))
#define lbs_array2_vp(array2,x,y) \
((void*)(((char*)((array2)->data)) + \
((array2)->size)*((x)*((array2)->leny)+(y))))
#endif /* LBS_ARRAY2_H */
|