Changes in uspace/lib/c/include/adt/generic_field.h [aaa3f33a:820ab55c] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/c/include/adt/generic_field.h
raaa3f33a r820ab55c 53 53 #define GENERIC_FIELD_DECLARE(name, type) \ 54 54 typedef struct name name##_t; \ 55 typedef name##_t *name##_ref; \ 55 56 \ 56 57 struct name { \ … … 61 62 }; \ 62 63 \ 63 int name##_add(name##_ t *, type *); \64 int name##_count(name##_ t *); \65 void name##_destroy(name##_ t *); \66 void name##_exclude_index(name##_ t *, int); \67 type **name##_get_field(name##_ t *); \68 type *name##_get_index(name##_ t *, int); \69 int name##_initialize(name##_ t *); \70 int name##_is_valid(name##_ t *);64 int name##_add(name##_ref, type *); \ 65 int name##_count(name##_ref); \ 66 void name##_destroy(name##_ref); \ 67 void name##_exclude_index(name##_ref, int); \ 68 type **name##_get_field(name##_ref); \ 69 type *name##_get_index(name##_ref, int); \ 70 int name##_initialize(name##_ref); \ 71 int name##_is_valid(name##_ref); 71 72 72 73 /** Generic type field implementation. … … 78 79 */ 79 80 #define GENERIC_FIELD_IMPLEMENT(name, type) \ 80 int name##_add(name##_ t *field, type *value) \81 int name##_add(name##_ref field, type *value) \ 81 82 { \ 82 83 if (name##_is_valid(field)) { \ … … 98 99 } \ 99 100 \ 100 int name##_count(name##_ t *field) \101 int name##_count(name##_ref field) \ 101 102 { \ 102 103 return name##_is_valid(field) ? field->next : -1; \ 103 104 } \ 104 105 \ 105 void name##_destroy(name##_ t *field) \106 void name##_destroy(name##_ref field) \ 106 107 { \ 107 108 if (name##_is_valid(field)) { \ … … 116 117 } \ 117 118 \ 118 void name##_exclude_index(name##_ t *field, int index) \119 void name##_exclude_index(name##_ref field, int index) \ 119 120 { \ 120 121 if (name##_is_valid(field) && (index >= 0) && \ … … 125 126 } \ 126 127 \ 127 type *name##_get_index(name##_ t *field, int index) \128 type *name##_get_index(name##_ref field, int index) \ 128 129 { \ 129 130 if (name##_is_valid(field) && (index >= 0) && \ … … 133 134 } \ 134 135 \ 135 type **name##_get_field(name##_ t *field) \136 type **name##_get_field(name##_ref field) \ 136 137 { \ 137 138 return name##_is_valid(field) ? field->items : NULL; \ 138 139 } \ 139 140 \ 140 int name##_initialize(name##_ t *field) \141 int name##_initialize(name##_ref field) \ 141 142 { \ 142 143 if (!field) \ … … 152 153 } \ 153 154 \ 154 int name##_is_valid(name##_ t *field) \155 int name##_is_valid(name##_ref field) \ 155 156 { \ 156 157 return field && (field->magic == GENERIC_FIELD_MAGIC_VALUE); \
Note:
See TracChangeset
for help on using the changeset viewer.