Open Bug 562421 Opened 14 years ago Updated 2 years ago

Clean-up macros in nsAttrValue.h and nsAttrValue.cpp

Categories

(Core :: DOM: Core & HTML, defect, P5)

defect

Tracking

()

People

(Reporter: mounir, Unassigned)

References

Details

This is a follow-up from bug 551670, see bug 551670 comment 59.

Quoting Jonas about nsAttrValue.h and nsAttrValue.cpp:
"
>+  const EnumTable* table = sEnumTableArray->
>+    ElementAt(allEnumBits & NS_ATTRVALUE_ENUMTABLEINDEX_MASK);

Hmm.. This looks wierd. This argument passed to ElementAt will always be a
multiple of 16384 or 16 or something like that. I think.

This bit twiddling is too complex and too spread out. I take full
responsibility for this fact.

Would you mind centralizing and cleaning it up? Something like the following
defines:

#define NS_ATTRVALUE_ENUM_TABLEINDEX_BITS (32 - 16 - 1 -
NS_ATTRVALUE_INTEGERTYPE_BITS)
#define NS_ATTRVALUE_ENUM_TABLEINDEX_OFFSET NS_ATTRVALUE_INTEGERTYPE_BITS
#define NS_ATTRVALUE_ENUM_TABLEINDEX_MASK \
 (PR_BITMASK(NS_ATTRVALUE_ENUM_TABLEINDEX_BITS) <<
NS_ATTRVALUE_ENUM_TABLEINDEX_OFFSET)
#define NS_ATTRVALUE_ENUM_GET_TABLEINDEX(_bits) \
 (((_bits) & NS_ATTRVALUE_ENUM_TABLEINDEX_MASK) >>
NS_ATTRVALUE_ENUM_TABLEINDEX_OFFSET)

#define NS_ATTRVALUE_ENUM_VALUE_NEEDS_TO_UPPER_BITS 1
#define NS_ATTRVALUE_ENUM_VALUE_NEEDS_TO_UPPER_OFFSET \
 (NS_ATTRVALUE_ENUM_TABLEINDEX_OFFSET + NS_ATTRVALUE_ENUM_TABLEINDEX_BITS)
#define NS_ATTRVALUE_ENUM_VALUE_NEEDS_TO_UPPER_MASK \
 (PR_BITMASK(NS_ATTRVALUE_ENUM_VALUE_NEEDS_TO_UPPER_BITS) <<
NS_ATTRVALUE_ENUM_VALUE_NEEDS_TO_UPPER_OFFSET)
#define NS_ATTRVALUE_ENUM_VALUE_NEEDS_TO_UPPER(_bits) \
 ((_bits) & NS_ATTRVALUE_ENUM_VALUE_NEEDS_TO_UPPER_MASK)

#define NS_ATTRVALUE_ENUM_VALUE_BITS 16
#define NS_ATTRVALUE_ENUM_VALUE_OFFSET \
 (NS_ATTRVALUE_ENUM_TABLEINDEX_OFFSET + NS_ATTRVALUE_ENUM_TABLEINDEX_BITS)
#define NS_ATTRVALUE_ENUM_VALUE_MASK \
 (PR_BITMASK(NS_ATTRVALUE_ENUM_VALUE_BITS) << NS_ATTRVALUE_ENUM_VALUE_OFFSET)
#define NS_ATTRVALUE_ENUM_GET_VALUE(_bits) \
 (((_bits) & NS_ATTRVALUE_ENUM_VALUE_MASK) >> NS_ATTRVALUE_ENUM_VALUE_OFFSET)

And then use these defines throughout. Feel free to simplify these macros.
Might actually be more readable to calculate the values by hand and #define to
those values directly.
"
You should use functions (marked as inline, not that it should make a difference) in preference to macros, for what it's worth -- easier to debug in/through.
https://bugzilla.mozilla.org/show_bug.cgi?id=1472046

Move all DOM bugs that haven’t been updated in more than 3 years and has no one currently assigned to P5.

If you have questions, please contact :mdaly.
Priority: -- → P5
Severity: normal → S3
You need to log in before you can comment on or make changes to this bug.