We can unify string properties initializer macros with integer initializers.
Showing the changes to include/linux (1 of 1 file). Show all
Unified · Split
| @@ -250,37 +250,33 @@ struct property_entry { · 249 unmodified lines | |||
| 250 | }; | 250 | }; |
| 251 | 251 | ||
| 252 | /* | 252 | /* |
| 253 | * Note: the below four initializers for the anonymous union are carefully | 253 | * Note: the below initializers for the anonymous union are carefully |
| 254 | * crafted to avoid gcc-4.4.4's problems with initialization of anon unions | 254 | * crafted to avoid gcc-4.4.4's problems with initialization of anon unions |
| 255 | * and structs. | 255 | * and structs. |
| 256 | */ | 256 | */ |
| 257 | 257 | ||
| 258 | #define __PROPERTY_ENTRY_ARRAY_LEN(_name_, _type_, _Type_, _val_, _len_)\ | 258 | #define __PROPERTY_ENTRY_ELEMENT_SIZE(_elem_) \ |
| 259 | sizeof(((struct property_entry *)NULL)->value._elem_) | ||
| 260 | |||
| 261 | #define __PROPERTY_ENTRY_ARRAY_LEN(_name_, _elem_, _Type_, _val_, _len_)\ | ||
| 259 | (struct property_entry) { \ | 262 | (struct property_entry) { \ |
| 260 | .name = _name_, \ | 263 | .name = _name_, \ |
| 261 | .length = (_len_) * sizeof(_type_), \ | 264 | .length = (_len_) * __PROPERTY_ENTRY_ELEMENT_SIZE(_elem_), \ |
| 262 | .is_array = true, \ | 265 | .is_array = true, \ |
| 263 | .type = DEV_PROP_##_Type_, \ | 266 | .type = DEV_PROP_##_Type_, \ |
| 264 | { .pointer = _val_ }, \ | 267 | { .pointer = _val_ }, \ |
| 265 | } | 268 | } |
| 266 | 269 | ||
| 267 | #define PROPERTY_ENTRY_U8_ARRAY_LEN(_name_, _val_, _len_) \ | 270 | #define PROPERTY_ENTRY_U8_ARRAY_LEN(_name_, _val_, _len_) \ |
| 268 | __PROPERTY_ENTRY_ARRAY_LEN(_name_, u8, U8, _val_, _len_) | 271 | __PROPERTY_ENTRY_ARRAY_LEN(_name_, u8_data, U8, _val_, _len_) |
| 269 | #define PROPERTY_ENTRY_U16_ARRAY_LEN(_name_, _val_, _len_) \ | 272 | #define PROPERTY_ENTRY_U16_ARRAY_LEN(_name_, _val_, _len_) \ |
| 270 | __PROPERTY_ENTRY_ARRAY_LEN(_name_, u16, U16, _val_, _len_) | 273 | __PROPERTY_ENTRY_ARRAY_LEN(_name_, u16_data, U16, _val_, _len_) |
| 271 | #define PROPERTY_ENTRY_U32_ARRAY_LEN(_name_, _val_, _len_) \ | 274 | #define PROPERTY_ENTRY_U32_ARRAY_LEN(_name_, _val_, _len_) \ |
| 272 | __PROPERTY_ENTRY_ARRAY_LEN(_name_, u32, U32, _val_, _len_) | 275 | __PROPERTY_ENTRY_ARRAY_LEN(_name_, u32_data, U32, _val_, _len_) |
| 273 | #define PROPERTY_ENTRY_U64_ARRAY_LEN(_name_, _val_, _len_) \ | 276 | #define PROPERTY_ENTRY_U64_ARRAY_LEN(_name_, _val_, _len_) \ |
| 274 | __PROPERTY_ENTRY_ARRAY_LEN(_name_, u64, U64, _val_, _len_) | 277 | __PROPERTY_ENTRY_ARRAY_LEN(_name_, u64_data, U64, _val_, _len_) |
| 275 | |||
| 276 | #define PROPERTY_ENTRY_STRING_ARRAY_LEN(_name_, _val_, _len_) \ | 278 | #define PROPERTY_ENTRY_STRING_ARRAY_LEN(_name_, _val_, _len_) \ |
| 277 | (struct property_entry) { \ | 279 | __PROPERTY_ENTRY_ARRAY_LEN(_name_, str, STRING, _val_, _len_) |
| 278 | .name = _name_, \ | ||
| 279 | .length = (_len_) * sizeof(const char *), \ | ||
| 280 | .is_array = true, \ | ||
| 281 | .type = DEV_PROP_STRING, \ | ||
| 282 | { .pointer = _val_ }, \ | ||
| 283 | } | ||
| 284 | 280 | ||
| 285 | #define PROPERTY_ENTRY_U8_ARRAY(_name_, _val_) \ | 281 | #define PROPERTY_ENTRY_U8_ARRAY(_name_, _val_) \ |
| 286 | PROPERTY_ENTRY_U8_ARRAY_LEN(_name_, _val_, ARRAY_SIZE(_val_)) | 282 | PROPERTY_ENTRY_U8_ARRAY_LEN(_name_, _val_, ARRAY_SIZE(_val_)) |
| @@ -293,30 +289,24 @@ struct property_entry { · 6 unmodified lines | |||
| 293 | #define PROPERTY_ENTRY_STRING_ARRAY(_name_, _val_) \ | 289 | #define PROPERTY_ENTRY_STRING_ARRAY(_name_, _val_) \ |
| 294 | PROPERTY_ENTRY_STRING_ARRAY_LEN(_name_, _val_, ARRAY_SIZE(_val_)) | 290 | PROPERTY_ENTRY_STRING_ARRAY_LEN(_name_, _val_, ARRAY_SIZE(_val_)) |
| 295 | 291 | ||
| 296 | #define __PROPERTY_ENTRY_INTEGER(_name_, _type_, _Type_, _val_) \ | 292 | #define __PROPERTY_ENTRY_ELEMENT(_name_, _elem_, _Type_, _val_) \ |
| 297 | (struct property_entry) { \ | 293 | (struct property_entry) { \ |
| 298 | .name = _name_, \ | 294 | .name = _name_, \ |
| 299 | .length = sizeof(_type_), \ | 295 | .length = __PROPERTY_ENTRY_ELEMENT_SIZE(_elem_), \ |
| 300 | .type = DEV_PROP_##_Type_, \ | 296 | .type = DEV_PROP_##_Type_, \ |
| 301 | { .value = { ._type_##_data = _val_ } }, \ | 297 | { .value = { ._elem_ = _val_ } }, \ |
| 302 | } | 298 | } |
| 303 | 299 | ||
| 304 | #define PROPERTY_ENTRY_U8(_name_, _val_) \ | 300 | #define PROPERTY_ENTRY_U8(_name_, _val_) \ |
| 305 | __PROPERTY_ENTRY_INTEGER(_name_, u8, U8, _val_) | 301 | __PROPERTY_ENTRY_ELEMENT(_name_, u8_data, U8, _val_) |
| 306 | #define PROPERTY_ENTRY_U16(_name_, _val_) \ | 302 | #define PROPERTY_ENTRY_U16(_name_, _val_) \ |
| 307 | __PROPERTY_ENTRY_INTEGER(_name_, u16, U16, _val_) | 303 | __PROPERTY_ENTRY_ELEMENT(_name_, u16_data, U16, _val_) |
| 308 | #define PROPERTY_ENTRY_U32(_name_, _val_) \ | 304 | #define PROPERTY_ENTRY_U32(_name_, _val_) \ |
| 309 | __PROPERTY_ENTRY_INTEGER(_name_, u32, U32, _val_) | 305 | __PROPERTY_ENTRY_ELEMENT(_name_, u32_data, U32, _val_) |
| 310 | #define PROPERTY_ENTRY_U64(_name_, _val_) \ | 306 | #define PROPERTY_ENTRY_U64(_name_, _val_) \ |
| 311 | __PROPERTY_ENTRY_INTEGER(_name_, u64, U64, _val_) | 307 | __PROPERTY_ENTRY_ELEMENT(_name_, u64_data, U64, _val_) |
| 312 | 308 | #define PROPERTY_ENTRY_STRING(_name_, _val_) \ | |
| 313 | #define PROPERTY_ENTRY_STRING(_name_, _val_) \ | 309 | __PROPERTY_ENTRY_ELEMENT(_name_, str, STRING, _val_) |
| 314 | (struct property_entry) { \ | ||
| 315 | .name = _name_, \ | ||
| 316 | .length = sizeof(const char *), \ | ||
| 317 | .type = DEV_PROP_STRING, \ | ||
| 318 | { .value = { .str = _val_ } }, \ | ||
| 319 | } | ||
| 320 | 310 | ||
| 321 | #define PROPERTY_ENTRY_BOOL(_name_) \ | 311 | #define PROPERTY_ENTRY_BOOL(_name_) \ |
| 322 | (struct property_entry) { \ | 312 | (struct property_entry) { \ |