Re: [PATCH 26/94] Maple Tree: Add new data structure
From: Liam Howlett <hidden>
Date: 2021-05-14 21:44:09
Also in:
lkml
* Peter Zijlstra [off-list ref] [210514 11:32]:
On Wed, Apr 28, 2021 at 03:36:02PM +0000, Liam Howlett wrote:quoted
+enum maple_type { + maple_dense, + maple_leaf_64, + maple_range_64, + maple_arange_64, +};quoted
+static inline unsigned long *ma_pivots(struct maple_node *node, + enum maple_type type) +{ + switch (type) { + case maple_arange_64: + return node->ma64.pivot; + case maple_range_64: + case maple_leaf_64: + return node->mr64.pivot; + case maple_dense: + default: + return NULL; + } +}quoted
+static inline unsigned long *ma_gaps(struct maple_node *node, + enum maple_type type) +{ + switch (type) { + case maple_arange_64: + return node->ma64.gap; + case maple_range_64: + case maple_leaf_64: + case maple_dense: + default: + return NULL; + } +}quoted
+static inline unsigned long mte_pivot(const struct maple_enode *mn, + unsigned char piv) +{ + struct maple_node *node = mte_to_node(mn); + + switch (mte_node_type(mn)) { + case maple_arange_64: + return node->ma64.pivot[piv]; + case maple_range_64: + case maple_leaf_64: + return node->mr64.pivot[piv]; + case maple_dense: + default: + return 0; + } +}I would suggest removing the default: case. Without it the cases are complete and the compiler should not complain. Then if you extend the enum and forget to add a case, the switch is no longer complete and will trigger a warning, forcing you to update it (hopefully correct). If you have the default, you'll not get a warning and it'll do whatever.
Thanks, I will do this.