1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "base/strings/string_util.h"
6 
7 namespace base {
8 
9 #define WHITESPACE_ASCII_NO_CR_LF      \
10   0x09,     /* CHARACTER TABULATION */ \
11       0x0B, /* LINE TABULATION */      \
12       0x0C, /* FORM FEED (FF) */       \
13       0x20  /* SPACE */
14 
15 #define WHITESPACE_ASCII                                                  \
16   WHITESPACE_ASCII_NO_CR_LF, /* Comment to make clang-format linebreak */ \
17       0x0A,                  /* LINE FEED (LF) */                         \
18       0x0D                   /* CARRIAGE RETURN (CR) */
19 
20 #define WHITESPACE_UNICODE_NON_ASCII          \
21   0x0085,     /* NEXT LINE (NEL) */           \
22       0x00A0, /* NO-BREAK SPACE */            \
23       0x1680, /* OGHAM SPACE MARK */          \
24       0x2000, /* EN QUAD */                   \
25       0x2001, /* EM QUAD */                   \
26       0x2002, /* EN SPACE */                  \
27       0x2003, /* EM SPACE */                  \
28       0x2004, /* THREE-PER-EM SPACE */        \
29       0x2005, /* FOUR-PER-EM SPACE */         \
30       0x2006, /* SIX-PER-EM SPACE */          \
31       0x2007, /* FIGURE SPACE */              \
32       0x2008, /* PUNCTUATION SPACE */         \
33       0x2009, /* THIN SPACE */                \
34       0x200A, /* HAIR SPACE */                \
35       0x2028, /* LINE SEPARATOR */            \
36       0x2029, /* PARAGRAPH SEPARATOR */       \
37       0x202F, /* NARROW NO-BREAK SPACE */     \
38       0x205F, /* MEDIUM MATHEMATICAL SPACE */ \
39       0x3000  /* IDEOGRAPHIC SPACE */
40 
41 #define WHITESPACE_UNICODE_NO_CR_LF \
42   WHITESPACE_ASCII_NO_CR_LF, WHITESPACE_UNICODE_NON_ASCII
43 
44 #define WHITESPACE_UNICODE WHITESPACE_ASCII, WHITESPACE_UNICODE_NON_ASCII
45 
46 const wchar_t kWhitespaceWide[] = {WHITESPACE_UNICODE, 0};
47 const char16 kWhitespaceUTF16[] = {WHITESPACE_UNICODE, 0};
48 const char16 kWhitespaceNoCrLfUTF16[] = {WHITESPACE_UNICODE_NO_CR_LF, 0};
49 const char kWhitespaceASCII[] = {WHITESPACE_ASCII, 0};
50 const char16 kWhitespaceASCIIAs16[] = {WHITESPACE_ASCII, 0};
51 
52 const char kUtf8ByteOrderMark[] = "\xEF\xBB\xBF";
53 
54 }  // namespace base
55