Closed
Bug 1119075
Opened 10 years ago
Closed 10 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•10 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•10 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•10 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•10 years ago
|
||
Status: ASSIGNED → RESOLVED
Closed: 10 years ago
Resolution: --- → FIXED
Comment 5•10 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•10 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
Comment 7•10 years ago
|
||
You need to log in
before you can comment on or make changes to this bug.
Description
•