Hello Zac,
Does anyone have feedback on whether they believe the tests for normal control characters vs reversed control characters should be mutually exlusive?
I took a look at the documentation. My read is that the tests are not mutually exclusive.
Given your current version and my reading of the documentation you would need two separate goto targets: control_char_done and reverse_control_char_done.
Note that all of this is based on my reading of the documentation. You'll need to dig into some Windows testing. Off the top of my head I would try a set of four tests:
Flags IS_TEXT_UNICODE_CONTROLS and IS_TEXT_UNICODE_REVERSE_CONTROLS set and then pass in a string:
- with no controls - with unicode control - with reversed unicode control - with both
This teases out if your IS_TEXT_UNICODE_CONTROLS needs to expand its conditional with:
---- !(out_flags & IS_TEXT_UNICODE_REVERSE_SIGNATURE) ----
and provides evidence as to the mutual exclusivity of the two tests. For full Windows compliance you could also test:
- only the IS_TEXT_UNICODE_CONTROLS flag and a string with reversed unicode controls (does it set the flag for reversed controls?)
- only the IS_TEXT_UNICODE_REVERSE_CONTROLS flag and a string with unicode controls (does it set the flag for controls?)
One additional point. The documentation explicitly notes that:
"Only flags that are set upon input to the function are significant upon output."
Based on the documentation, setting extra flags should not be a problem. But for full conformance with Windows, you may not have this flexibility.
Best of luck! -Roy