]> pilppa.org Git - uci.git/blobdiff - ucimap.h
ucimap: cleanup OPTMAP_OPTION macro, rename to UCIMAP_OPTION
[uci.git] / ucimap.h
index 001ae1b206338f426cc3debe6c2abf02ef16c0ab..adb7004e5337ff7ef00c27d964fc77f26d089df6 100644 (file)
--- a/ucimap.h
+++ b/ucimap.h
 #define TEST_BIT(_name, _bit) \
        (_name[(_bit) / 8] & (1 << ((_bit) % 8)))
 
-#define OPTMAP_OPTION(_maptype, _type, _field, ...) \
-       { \
-               .type = _maptype, \
-               .name = #_field, \
-               .offset = offsetof(_type, _field), \
-               __VA_ARGS__  \
-       }
+#define UCIMAP_OPTION(_type, _field) \
+       .name = #_field, \
+       .offset = offsetof(_type, _field)
 
 struct uci_sectmap;
 struct uci_optmap;
+struct ucimap_list;
 
 struct uci_map {
        struct uci_sectmap **sections;
@@ -66,17 +63,17 @@ enum ucimap_type {
        UCIMAP_SUBTYPE  = 0xf, /* subtype mask */
 };
 
-union uci_datamap {
+union ucimap_data {
        int i;
        bool b;
        const char *s;
        void *section;
-       struct list_head list;
+       struct ucimap_list *list;
 };
 
 struct uci_listmap {
        struct list_head list;
-       union uci_datamap data;
+       union ucimap_data data;
 };
 
 struct uci_sectmap {
@@ -118,6 +115,11 @@ struct uci_optmap {
        } data;
 };
 
+struct ucimap_list {
+       int n_items;
+       union ucimap_data item[];
+};
+
 extern int ucimap_init(struct uci_map *map);
 extern void ucimap_cleanup(struct uci_map *map);
 extern void ucimap_set_changed(void *section, void *field);