Closed
Bug 1119075
Opened 8 years ago
Closed 8 years ago
Use standard unicode string literals with VS2015
Categories
(Core :: MFBT, defect)
Tracking
()
RESOLVED
FIXED
mozilla38
People
(Reporter: briansmith, Assigned: briansmith)
References
Details
Attachments
(1 file)
1.70 KB,
patch
|
Waldo
:
review+
|
Details | Diff | Splinter Review |
VS2015 won't conpile mfbt/char16.h without this change. One thing I did not explore: Is MOZ_USE_CHAR16_WRAPPER still needed?
Attachment #8545588 -
Flags: review?(jwalden+bmo)
Comment 1•8 years ago
|
||
(In reply to Brian Smith (:briansmith, :bsmith, use NEEDINFO?) from comment #0) > One thing I did not explore: Is MOZ_USE_CHAR16_WRAPPER still needed? That was added to support MingW compilation, since we historically used PRUnichar (now char16_t) and wchar_t more or less interchangeably on Windows. Given that Windows uses a lot of UTF-16-based APIs, I wasn't (and still am not) sure if they would add some extra variants or compiler magic when they eventually update the SDK. If a newer SDK adds char16_t* overloads, then it would probably be possible to get rid of it. If it doesn't happen, then it probably won't.
Comment 2•8 years ago
|
||
Comment on attachment 8545588 [details] [diff] [review] vs2015-unicode-literals.patch Review of attachment 8545588 [details] [diff] [review]: ----------------------------------------------------------------- Yeah, unless Microsoft did something special to allow Windows APIs to accept char16_t stuff (seems unlikely, but maybe they'll do it someday), the wrapper things are going to have to keep living. ::: mfbt/Char16.h @@ +17,5 @@ > * is a 16-bit code unit of a Unicode code point, not a "character". > */ > > #ifdef _MSC_VER > +#if _MSC_VER < 1900 Undefined macros expand to 0, so you can do #if defined(_MSC_VER) && _MSC_VER < 1900 here. (Technically not even the defined() is needed, then, but I'd rather see it for clarity.) Otherwise you'd have to indent these macro uses two spaces: #ifdef _MSC_VER # if _MSC_VER < 1900 /* * C++11 says... */ # define MOZ_UTF16_HELPER(s) ... typedef wchar_t char16_t; ... # endif #endif @@ +22,3 @@ > /* > * C++11 says char16_t is a distinct builtin type, but Windows's yvals.h > * typedefs char16_t as an unsigned short. We would like to alias char16_t Add a "(prior to MSVC 2015, which implemented C++11's distinct char16_t type)" here while you're in the neighborhood.
Attachment #8545588 -
Flags: review?(jwalden+bmo) → review+
Assignee | ||
Comment 3•8 years ago
|
||
https://hg.mozilla.org/integration/mozilla-inbound/rev/1aac5e49e4bd (In reply to Jeff Walden [:Waldo] (remove +bmo to email) from comment #2) > Add a "(prior to MSVC 2015, which implemented C++11's distinct char16_t > type)" here while you're in the neighborhood. I added the comment, worded slightly differently. I also updated another comment. Please make sure the wording of those comments in the the checked-in patch is reasonable.
Status: NEW → ASSIGNED
Target Milestone: --- → mozilla38
Comment 4•8 years ago
|
||
https://hg.mozilla.org/mozilla-central/rev/1aac5e49e4bd
Status: ASSIGNED → RESOLVED
Closed: 8 years ago
Resolution: --- → FIXED
Comment 5•8 years ago
|
||
The wording is fine by me, but you have a stray ')' in there: ...implemented C++11's distinct char16_t type)...
Assignee | ||
Comment 6•8 years ago
|
||
(In reply to Jeff Walden [:Waldo] (remove +bmo to email) from comment #5) > The wording is fine by me, but you have a stray ')' in there: > > ...implemented C++11's distinct char16_t type)... Thanks for pointing that out. I fixed it: https://hg.mozilla.org/integration/mozilla-inbound/rev/3e4246e29bdc
You need to log in
before you can comment on or make changes to this bug.
Description
•