I don't know --maybe--, but then you end up with dozens of structure
definitions.
Bitfields are simply a bad idea in this scenario because some of the
code needs to be performant, and you can't trust the compiler to
generate the best possible code to access a member. With a mask/shift,
you can. There's been lots of codegen errors by GCC in the past due to
bitfields. I just talked with someone in my office who agrees on this
issue, having worked with GCC pretty much since day one :)
Also, treating the various GDI objects as unions is also pretty wrong
-- they're not unions anymore, as the structure *changes* depending on
the object. This means you'll be passing around a union, and all the
code will have to check its type. By using separate containers for
each object, you have type-safe code and more efficient design.
On 8/30/07, James Tabor
<jimtabor(a)adsl-64-217-116-74.dsl.hstntx.swbell.net> wrote:
  Alex Ionescu wrote:
  Hey,
 Yes I was in a hurry, sorry.
 1) a. Modifying a well known, Microsoft-documented structure.
      b. Using structure-based bit logic instead of shifts and masks.
 2) a. I think this is clear.
      b. I think it makes the code less maintainable, harder to
 understand, less clean, and potentially hurts performance. This
 becomes a significantly bigger problem when thinking about other
 architectures with alignment requirements, or different endianness.
 3) Use macros to hide away the mask/offsets, or better yet, inlined functions.
 
 Could we use _X86_ for one structure type and have the other too?
 Thanks,
 James
 _______________________________________________
 Ros-dev mailing list
 Ros-dev(a)reactos.org
 
http://www.reactos.org/mailman/listinfo/ros-dev
 
--
Best regards,
Alex Ionescu