Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/c/include/adt/generic_field.h

    raaa3f33a r820ab55c  
    5353#define GENERIC_FIELD_DECLARE(name, type) \
    5454        typedef struct name name##_t; \
     55        typedef name##_t *name##_ref; \
    5556        \
    5657        struct  name { \
     
    6162        }; \
    6263        \
    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);
    7172
    7273/** Generic type field implementation.
     
    7879 */
    7980#define GENERIC_FIELD_IMPLEMENT(name, type) \
    80         int name##_add(name##_t *field, type *value) \
     81        int name##_add(name##_ref field, type *value) \
    8182        { \
    8283                if (name##_is_valid(field)) { \
     
    9899        } \
    99100        \
    100         int name##_count(name##_t *field) \
     101        int name##_count(name##_ref field) \
    101102        { \
    102103                return name##_is_valid(field) ? field->next : -1; \
    103104        } \
    104105        \
    105         void name##_destroy(name##_t *field) \
     106        void name##_destroy(name##_ref field) \
    106107        { \
    107108                if (name##_is_valid(field)) { \
     
    116117        } \
    117118         \
    118         void name##_exclude_index(name##_t *field, int index) \
     119        void name##_exclude_index(name##_ref field, int index) \
    119120        { \
    120121                if (name##_is_valid(field) && (index >= 0) && \
     
    125126        } \
    126127         \
    127         type *name##_get_index(name##_t *field, int index) \
     128        type *name##_get_index(name##_ref field, int index) \
    128129        { \
    129130                if (name##_is_valid(field) && (index >= 0) && \
     
    133134        } \
    134135        \
    135         type **name##_get_field(name##_t *field) \
     136        type **name##_get_field(name##_ref field) \
    136137        { \
    137138                return name##_is_valid(field) ? field->items : NULL; \
    138139        } \
    139140        \
    140         int name##_initialize(name##_t *field) \
     141        int name##_initialize(name##_ref field) \
    141142        { \
    142143                if (!field) \
     
    152153        } \
    153154        \
    154         int name##_is_valid(name##_t *field) \
     155        int name##_is_valid(name##_ref field) \
    155156        { \
    156157                return field && (field->magic == GENERIC_FIELD_MAGIC_VALUE); \
Note: See TracChangeset for help on using the changeset viewer.