sassc4 2.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +18 -0
- data/.gitmodules +3 -0
- data/.travis.yml +16 -0
- data/CHANGELOG.md +97 -0
- data/CODE_OF_CONDUCT.md +10 -0
- data/Gemfile +2 -0
- data/LICENSE.txt +22 -0
- data/README.md +80 -0
- data/Rakefile +51 -0
- data/ext/depend +4 -0
- data/ext/extconf.rb +92 -0
- data/ext/libsass/VERSION +1 -0
- data/ext/libsass/contrib/plugin.cpp +60 -0
- data/ext/libsass/include/sass/base.h +97 -0
- data/ext/libsass/include/sass/context.h +174 -0
- data/ext/libsass/include/sass/functions.h +139 -0
- data/ext/libsass/include/sass/values.h +145 -0
- data/ext/libsass/include/sass/version.h +12 -0
- data/ext/libsass/include/sass.h +15 -0
- data/ext/libsass/include/sass2scss.h +120 -0
- data/ext/libsass/src/MurmurHash2.hpp +91 -0
- data/ext/libsass/src/ast.cpp +953 -0
- data/ext/libsass/src/ast.hpp +1064 -0
- data/ext/libsass/src/ast2c.cpp +80 -0
- data/ext/libsass/src/ast2c.hpp +39 -0
- data/ext/libsass/src/ast_def_macros.hpp +140 -0
- data/ext/libsass/src/ast_fwd_decl.cpp +31 -0
- data/ext/libsass/src/ast_fwd_decl.hpp +274 -0
- data/ext/libsass/src/ast_helpers.hpp +316 -0
- data/ext/libsass/src/ast_sel_cmp.cpp +396 -0
- data/ext/libsass/src/ast_sel_super.cpp +539 -0
- data/ext/libsass/src/ast_sel_unify.cpp +275 -0
- data/ext/libsass/src/ast_sel_weave.cpp +616 -0
- data/ext/libsass/src/ast_selectors.cpp +1070 -0
- data/ext/libsass/src/ast_selectors.hpp +523 -0
- data/ext/libsass/src/ast_supports.cpp +114 -0
- data/ext/libsass/src/ast_supports.hpp +121 -0
- data/ext/libsass/src/ast_values.cpp +1154 -0
- data/ext/libsass/src/ast_values.hpp +498 -0
- data/ext/libsass/src/b64/cencode.h +32 -0
- data/ext/libsass/src/b64/encode.h +79 -0
- data/ext/libsass/src/backtrace.cpp +50 -0
- data/ext/libsass/src/backtrace.hpp +29 -0
- data/ext/libsass/src/base64vlq.cpp +47 -0
- data/ext/libsass/src/base64vlq.hpp +30 -0
- data/ext/libsass/src/bind.cpp +312 -0
- data/ext/libsass/src/bind.hpp +15 -0
- data/ext/libsass/src/c2ast.cpp +64 -0
- data/ext/libsass/src/c2ast.hpp +14 -0
- data/ext/libsass/src/c99func.c +54 -0
- data/ext/libsass/src/cencode.c +106 -0
- data/ext/libsass/src/check_nesting.cpp +393 -0
- data/ext/libsass/src/check_nesting.hpp +70 -0
- data/ext/libsass/src/color_maps.cpp +652 -0
- data/ext/libsass/src/color_maps.hpp +323 -0
- data/ext/libsass/src/color_spaces.cpp +241 -0
- data/ext/libsass/src/color_spaces.hpp +227 -0
- data/ext/libsass/src/constants.cpp +199 -0
- data/ext/libsass/src/constants.hpp +200 -0
- data/ext/libsass/src/context.cpp +870 -0
- data/ext/libsass/src/context.hpp +140 -0
- data/ext/libsass/src/cssize.cpp +521 -0
- data/ext/libsass/src/cssize.hpp +71 -0
- data/ext/libsass/src/dart_helpers.hpp +199 -0
- data/ext/libsass/src/debug.hpp +43 -0
- data/ext/libsass/src/debugger.hpp +964 -0
- data/ext/libsass/src/emitter.cpp +297 -0
- data/ext/libsass/src/emitter.hpp +101 -0
- data/ext/libsass/src/environment.cpp +260 -0
- data/ext/libsass/src/environment.hpp +124 -0
- data/ext/libsass/src/error_handling.cpp +239 -0
- data/ext/libsass/src/error_handling.hpp +248 -0
- data/ext/libsass/src/eval.cpp +1543 -0
- data/ext/libsass/src/eval.hpp +110 -0
- data/ext/libsass/src/eval_selectors.cpp +75 -0
- data/ext/libsass/src/expand.cpp +875 -0
- data/ext/libsass/src/expand.hpp +98 -0
- data/ext/libsass/src/extender.cpp +1226 -0
- data/ext/libsass/src/extender.hpp +399 -0
- data/ext/libsass/src/extension.cpp +43 -0
- data/ext/libsass/src/extension.hpp +89 -0
- data/ext/libsass/src/file.cpp +531 -0
- data/ext/libsass/src/file.hpp +124 -0
- data/ext/libsass/src/fn_colors.cpp +836 -0
- data/ext/libsass/src/fn_colors.hpp +99 -0
- data/ext/libsass/src/fn_lists.cpp +285 -0
- data/ext/libsass/src/fn_lists.hpp +34 -0
- data/ext/libsass/src/fn_maps.cpp +94 -0
- data/ext/libsass/src/fn_maps.hpp +30 -0
- data/ext/libsass/src/fn_miscs.cpp +248 -0
- data/ext/libsass/src/fn_miscs.hpp +40 -0
- data/ext/libsass/src/fn_numbers.cpp +246 -0
- data/ext/libsass/src/fn_numbers.hpp +45 -0
- data/ext/libsass/src/fn_selectors.cpp +205 -0
- data/ext/libsass/src/fn_selectors.hpp +35 -0
- data/ext/libsass/src/fn_strings.cpp +268 -0
- data/ext/libsass/src/fn_strings.hpp +34 -0
- data/ext/libsass/src/fn_utils.cpp +159 -0
- data/ext/libsass/src/fn_utils.hpp +62 -0
- data/ext/libsass/src/inspect.cpp +1126 -0
- data/ext/libsass/src/inspect.hpp +101 -0
- data/ext/libsass/src/json.cpp +1436 -0
- data/ext/libsass/src/json.hpp +117 -0
- data/ext/libsass/src/kwd_arg_macros.hpp +28 -0
- data/ext/libsass/src/lexer.cpp +122 -0
- data/ext/libsass/src/lexer.hpp +304 -0
- data/ext/libsass/src/listize.cpp +70 -0
- data/ext/libsass/src/listize.hpp +37 -0
- data/ext/libsass/src/mapping.hpp +19 -0
- data/ext/libsass/src/memory/allocator.cpp +48 -0
- data/ext/libsass/src/memory/allocator.hpp +138 -0
- data/ext/libsass/src/memory/config.hpp +20 -0
- data/ext/libsass/src/memory/memory_pool.hpp +186 -0
- data/ext/libsass/src/memory/shared_ptr.cpp +33 -0
- data/ext/libsass/src/memory/shared_ptr.hpp +332 -0
- data/ext/libsass/src/memory.hpp +12 -0
- data/ext/libsass/src/operation.hpp +223 -0
- data/ext/libsass/src/operators.cpp +267 -0
- data/ext/libsass/src/operators.hpp +30 -0
- data/ext/libsass/src/ordered_map.hpp +112 -0
- data/ext/libsass/src/output.cpp +320 -0
- data/ext/libsass/src/output.hpp +47 -0
- data/ext/libsass/src/parser.cpp +3059 -0
- data/ext/libsass/src/parser.hpp +395 -0
- data/ext/libsass/src/parser_selectors.cpp +189 -0
- data/ext/libsass/src/permutate.hpp +164 -0
- data/ext/libsass/src/plugins.cpp +188 -0
- data/ext/libsass/src/plugins.hpp +57 -0
- data/ext/libsass/src/position.cpp +163 -0
- data/ext/libsass/src/position.hpp +147 -0
- data/ext/libsass/src/prelexer.cpp +1780 -0
- data/ext/libsass/src/prelexer.hpp +484 -0
- data/ext/libsass/src/remove_placeholders.cpp +86 -0
- data/ext/libsass/src/remove_placeholders.hpp +37 -0
- data/ext/libsass/src/sass.cpp +156 -0
- data/ext/libsass/src/sass.hpp +147 -0
- data/ext/libsass/src/sass2scss.cpp +895 -0
- data/ext/libsass/src/sass_context.cpp +742 -0
- data/ext/libsass/src/sass_context.hpp +129 -0
- data/ext/libsass/src/sass_functions.cpp +210 -0
- data/ext/libsass/src/sass_functions.hpp +50 -0
- data/ext/libsass/src/sass_values.cpp +362 -0
- data/ext/libsass/src/sass_values.hpp +82 -0
- data/ext/libsass/src/settings.hpp +19 -0
- data/ext/libsass/src/source.cpp +69 -0
- data/ext/libsass/src/source.hpp +95 -0
- data/ext/libsass/src/source_data.hpp +32 -0
- data/ext/libsass/src/source_map.cpp +202 -0
- data/ext/libsass/src/source_map.hpp +65 -0
- data/ext/libsass/src/stylesheet.cpp +22 -0
- data/ext/libsass/src/stylesheet.hpp +57 -0
- data/ext/libsass/src/to_value.cpp +114 -0
- data/ext/libsass/src/to_value.hpp +46 -0
- data/ext/libsass/src/units.cpp +507 -0
- data/ext/libsass/src/units.hpp +110 -0
- data/ext/libsass/src/utf8/checked.h +336 -0
- data/ext/libsass/src/utf8/core.h +332 -0
- data/ext/libsass/src/utf8/unchecked.h +235 -0
- data/ext/libsass/src/utf8.h +34 -0
- data/ext/libsass/src/utf8_string.cpp +104 -0
- data/ext/libsass/src/utf8_string.hpp +38 -0
- data/ext/libsass/src/util.cpp +723 -0
- data/ext/libsass/src/util.hpp +105 -0
- data/ext/libsass/src/util_string.cpp +125 -0
- data/ext/libsass/src/util_string.hpp +73 -0
- data/ext/libsass/src/values.cpp +140 -0
- data/ext/libsass/src/values.hpp +12 -0
- data/lib/sassc/dependency.rb +17 -0
- data/lib/sassc/engine.rb +141 -0
- data/lib/sassc/error.rb +37 -0
- data/lib/sassc/functions_handler.rb +73 -0
- data/lib/sassc/import_handler.rb +50 -0
- data/lib/sassc/importer.rb +31 -0
- data/lib/sassc/native/native_context_api.rb +147 -0
- data/lib/sassc/native/native_functions_api.rb +159 -0
- data/lib/sassc/native/sass2scss_api.rb +10 -0
- data/lib/sassc/native/sass_input_style.rb +13 -0
- data/lib/sassc/native/sass_output_style.rb +12 -0
- data/lib/sassc/native/sass_value.rb +97 -0
- data/lib/sassc/native/string_list.rb +10 -0
- data/lib/sassc/native.rb +64 -0
- data/lib/sassc/sass_2_scss.rb +9 -0
- data/lib/sassc/script/functions.rb +8 -0
- data/lib/sassc/script/value/bool.rb +32 -0
- data/lib/sassc/script/value/color.rb +95 -0
- data/lib/sassc/script/value/list.rb +136 -0
- data/lib/sassc/script/value/map.rb +69 -0
- data/lib/sassc/script/value/number.rb +389 -0
- data/lib/sassc/script/value/string.rb +96 -0
- data/lib/sassc/script/value.rb +137 -0
- data/lib/sassc/script/value_conversion/base.rb +13 -0
- data/lib/sassc/script/value_conversion/bool.rb +13 -0
- data/lib/sassc/script/value_conversion/color.rb +18 -0
- data/lib/sassc/script/value_conversion/list.rb +25 -0
- data/lib/sassc/script/value_conversion/map.rb +21 -0
- data/lib/sassc/script/value_conversion/number.rb +13 -0
- data/lib/sassc/script/value_conversion/string.rb +17 -0
- data/lib/sassc/script/value_conversion.rb +69 -0
- data/lib/sassc/script.rb +17 -0
- data/lib/sassc/util/normalized_map.rb +117 -0
- data/lib/sassc/util.rb +231 -0
- data/lib/sassc/version.rb +5 -0
- data/lib/sassc.rb +57 -0
- data/sassc.gemspec +69 -0
- data/test/css_color_level4_test.rb +168 -0
- data/test/custom_importer_test.rb +127 -0
- data/test/engine_test.rb +314 -0
- data/test/error_test.rb +29 -0
- data/test/fixtures/paths.scss +10 -0
- data/test/functions_test.rb +340 -0
- data/test/native_test.rb +213 -0
- data/test/output_style_test.rb +107 -0
- data/test/sass_2_scss_test.rb +14 -0
- data/test/test_helper.rb +45 -0
- metadata +396 -0
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
#ifndef SASS_COLOR_SPACES_H
|
|
2
|
+
#define SASS_COLOR_SPACES_H
|
|
3
|
+
|
|
4
|
+
#include "sass.hpp"
|
|
5
|
+
#include <cmath>
|
|
6
|
+
#include <array>
|
|
7
|
+
|
|
8
|
+
namespace Sass {
|
|
9
|
+
|
|
10
|
+
// Forward declarations
|
|
11
|
+
class Color;
|
|
12
|
+
class Color_RGBA;
|
|
13
|
+
class Color_HSLA;
|
|
14
|
+
|
|
15
|
+
// Color space constants for CSS Color Level 4
|
|
16
|
+
namespace ColorSpaces {
|
|
17
|
+
|
|
18
|
+
// Constants from https://www.w3.org/TR/css-color-4/
|
|
19
|
+
constexpr double D50[3] = {0.3457 / 0.3585, 1.00000, (1.0 - 0.3457 - 0.3585) / 0.3585};
|
|
20
|
+
|
|
21
|
+
// Lab constants
|
|
22
|
+
constexpr double LAB_KAPPA = 24389.0 / 27.0; // 29^3/3^3
|
|
23
|
+
constexpr double LAB_EPSILON = 216.0 / 24389.0; // 6^3/29^3
|
|
24
|
+
|
|
25
|
+
// Conversion matrices
|
|
26
|
+
// Matrix for converting linear sRGB to XYZ D50
|
|
27
|
+
constexpr double LINEAR_SRGB_TO_XYZ_D50[9] = {
|
|
28
|
+
0.43606574687426936, 0.38515150959015960, 0.14307841996513868,
|
|
29
|
+
0.22249317711056518, 0.71688701309448240, 0.06061980979495235,
|
|
30
|
+
0.01392392146316939, 0.09708132423141015, 0.71409935681588070
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
// Matrix for converting XYZ D50 to linear sRGB
|
|
34
|
+
constexpr double XYZ_D50_TO_LINEAR_SRGB[9] = {
|
|
35
|
+
3.13413585290011780, -1.61738599801804200, -0.49066221791109754,
|
|
36
|
+
-0.97879547655577770, 1.91625437739598840, 0.03344287339036693,
|
|
37
|
+
0.07195539255794733, -0.22897675981518200, 1.40538603511311820
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
// Matrix for converting linear sRGB to XYZ D65
|
|
41
|
+
constexpr double LINEAR_SRGB_TO_XYZ_D65[9] = {
|
|
42
|
+
0.41239079926595950, 0.35758433938387796, 0.18048078840183430,
|
|
43
|
+
0.21263900587151036, 0.71516867876775590, 0.07219231536073371,
|
|
44
|
+
0.01933081871559185, 0.11919477979462598, 0.95053215224966060
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
// Matrix for converting XYZ D65 to linear sRGB
|
|
48
|
+
constexpr double XYZ_D65_TO_LINEAR_SRGB[9] = {
|
|
49
|
+
3.24096994190452130, -1.53738317757009350, -0.49861076029300330,
|
|
50
|
+
-0.96924363628087980, 1.87596750150772060, 0.04155505740717561,
|
|
51
|
+
0.05563007969699360, -0.20397695888897657, 1.05697151424287860
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
// Matrix for converting linear sRGB to LMS
|
|
55
|
+
constexpr double LINEAR_SRGB_TO_LMS[9] = {
|
|
56
|
+
0.41222146947076300, 0.53633253726173480, 0.05144599326750220,
|
|
57
|
+
0.21190349581782520, 0.68069955064523420, 0.10739695353694050,
|
|
58
|
+
0.08830245919005641, 0.28171883913612150, 0.62997870167382210
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
// Matrix for converting LMS to linear sRGB
|
|
62
|
+
constexpr double LMS_TO_LINEAR_SRGB[9] = {
|
|
63
|
+
4.07674163607595800, -3.30771153925806200, 0.23096990318210417,
|
|
64
|
+
-1.26843797328503200, 2.60975734928768900, -0.34131937600265710,
|
|
65
|
+
-0.00419607613867551, -0.70341861793593630, 1.70761469407461200
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
// Matrix for converting LMS to OKLab
|
|
69
|
+
constexpr double LMS_TO_OKLAB[9] = {
|
|
70
|
+
0.21045426830931400, 0.79361777470230540, -0.00407204301161930,
|
|
71
|
+
1.97799853243116840, -2.42859224204858000, 0.45059370961741100,
|
|
72
|
+
0.02590404246554780, 0.78277171245752960, -0.80867575492307740
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
// Matrix for converting OKLab to LMS
|
|
76
|
+
constexpr double OKLAB_TO_LMS[9] = {
|
|
77
|
+
1.00000000000000020, 0.39633777737617490, 0.21580375730991360,
|
|
78
|
+
0.99999999999999980, -0.10556134581565854, -0.06385417282581334,
|
|
79
|
+
0.99999999999999990, -0.08948417752981180, -1.29148554801940940
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
// Utility functions for matrix multiplication
|
|
83
|
+
inline std::array<double, 3> multiplyMatrix(const double matrix[9], double a, double b, double c) {
|
|
84
|
+
return {
|
|
85
|
+
matrix[0] * a + matrix[1] * b + matrix[2] * c,
|
|
86
|
+
matrix[3] * a + matrix[4] * b + matrix[5] * c,
|
|
87
|
+
matrix[6] * a + matrix[7] * b + matrix[8] * c
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
// sRGB gamma encoding/decoding
|
|
92
|
+
inline double gammaEncode(double linear) {
|
|
93
|
+
if (linear <= 0.0031308) {
|
|
94
|
+
return 12.92 * linear;
|
|
95
|
+
}
|
|
96
|
+
return 1.055 * std::pow(linear, 1.0 / 2.4) - 0.055;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
inline double gammaDecode(double encoded) {
|
|
100
|
+
if (encoded <= 0.04045) {
|
|
101
|
+
return encoded / 12.92;
|
|
102
|
+
}
|
|
103
|
+
return std::pow((encoded + 0.055) / 1.055, 2.4);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
// HWB conversion helpers
|
|
107
|
+
inline double hueToRgb(double m1, double m2, double h) {
|
|
108
|
+
h = h < 0 ? h + 1 : (h > 1 ? h - 1 : h);
|
|
109
|
+
if (h * 6 < 1) return m1 + (m2 - m1) * h * 6;
|
|
110
|
+
if (h * 2 < 1) return m2;
|
|
111
|
+
if (h * 3 < 2) return m1 + (m2 - m1) * (2.0 / 3.0 - h) * 6;
|
|
112
|
+
return m1;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
// Lab conversion helpers
|
|
116
|
+
inline double labF(double t) {
|
|
117
|
+
if (t > LAB_EPSILON) {
|
|
118
|
+
return std::cbrt(t);
|
|
119
|
+
}
|
|
120
|
+
return (LAB_KAPPA * t + 16) / 116;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
inline double labFinv(double t) {
|
|
124
|
+
double cubed = t * t * t;
|
|
125
|
+
if (cubed > LAB_EPSILON) {
|
|
126
|
+
return cubed;
|
|
127
|
+
}
|
|
128
|
+
return (116 * t - 16) / LAB_KAPPA;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
// LCH/Lab conversion
|
|
132
|
+
inline void labToLch(double L, double a, double b, double& l, double& c, double& h) {
|
|
133
|
+
l = L;
|
|
134
|
+
c = std::sqrt(a * a + b * b);
|
|
135
|
+
h = std::atan2(b, a) * 180.0 / M_PI;
|
|
136
|
+
if (h < 0) h += 360;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
inline void lchToLab(double l, double c, double h, double& L, double& a, double& b) {
|
|
140
|
+
L = l;
|
|
141
|
+
double hRad = h * M_PI / 180.0;
|
|
142
|
+
a = c * std::cos(hRad);
|
|
143
|
+
b = c * std::sin(hRad);
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
} // namespace ColorSpaces
|
|
147
|
+
|
|
148
|
+
// New color classes for CSS Color Level 4
|
|
149
|
+
|
|
150
|
+
// HWB Color
|
|
151
|
+
struct HWB {
|
|
152
|
+
double h; // Hue (0-360)
|
|
153
|
+
double w; // Whiteness (0-100)
|
|
154
|
+
double b; // Blackness (0-100)
|
|
155
|
+
double a; // Alpha (0-1)
|
|
156
|
+
|
|
157
|
+
HWB(double hue = 0, double white = 0, double black = 0, double alpha = 1.0)
|
|
158
|
+
: h(hue), w(white), b(black), a(alpha) {}
|
|
159
|
+
|
|
160
|
+
Color_RGBA* toRGBA() const;
|
|
161
|
+
static HWB fromRGBA(const Color_RGBA* rgb);
|
|
162
|
+
};
|
|
163
|
+
|
|
164
|
+
// Lab Color
|
|
165
|
+
struct Lab {
|
|
166
|
+
double l; // Lightness (0-100)
|
|
167
|
+
double a; // a-axis (-125 to 125)
|
|
168
|
+
double b; // b-axis (-125 to 125)
|
|
169
|
+
double alpha; // Alpha (0-1)
|
|
170
|
+
|
|
171
|
+
Lab(double lightness = 0, double aAxis = 0, double bAxis = 0, double alphaVal = 1.0)
|
|
172
|
+
: l(lightness), a(aAxis), b(bAxis), alpha(alphaVal) {}
|
|
173
|
+
|
|
174
|
+
Color_RGBA* toRGBA() const;
|
|
175
|
+
static Lab fromRGBA(const Color_RGBA* rgb);
|
|
176
|
+
};
|
|
177
|
+
|
|
178
|
+
// LCH Color
|
|
179
|
+
struct LCH {
|
|
180
|
+
double l; // Lightness (0-100)
|
|
181
|
+
double c; // Chroma (0-150)
|
|
182
|
+
double h; // Hue (0-360)
|
|
183
|
+
double alpha; // Alpha (0-1)
|
|
184
|
+
|
|
185
|
+
LCH(double lightness = 0, double chroma = 0, double hue = 0, double alphaVal = 1.0)
|
|
186
|
+
: l(lightness), c(chroma), h(hue), alpha(alphaVal) {}
|
|
187
|
+
|
|
188
|
+
Color_RGBA* toRGBA() const;
|
|
189
|
+
static LCH fromRGBA(const Color_RGBA* rgb);
|
|
190
|
+
Lab toLab() const;
|
|
191
|
+
static LCH fromLab(const Lab& lab);
|
|
192
|
+
};
|
|
193
|
+
|
|
194
|
+
// OKLab Color
|
|
195
|
+
struct OKLab {
|
|
196
|
+
double l; // Lightness (0-1)
|
|
197
|
+
double a; // a-axis (-0.4 to 0.4)
|
|
198
|
+
double b; // b-axis (-0.4 to 0.4)
|
|
199
|
+
double alpha; // Alpha (0-1)
|
|
200
|
+
|
|
201
|
+
OKLab(double lightness = 0, double aAxis = 0, double bAxis = 0, double alphaVal = 1.0)
|
|
202
|
+
: l(lightness), a(aAxis), b(bAxis), alpha(alphaVal) {}
|
|
203
|
+
|
|
204
|
+
Color_RGBA* toRGBA() const;
|
|
205
|
+
static OKLab fromRGBA(const Color_RGBA* rgb);
|
|
206
|
+
};
|
|
207
|
+
|
|
208
|
+
// OKLCH Color
|
|
209
|
+
struct OKLCH {
|
|
210
|
+
double l; // Lightness (0-1)
|
|
211
|
+
double c; // Chroma (0-0.4)
|
|
212
|
+
double h; // Hue (0-360)
|
|
213
|
+
double alpha; // Alpha (0-1)
|
|
214
|
+
|
|
215
|
+
OKLCH(double lightness = 0, double chroma = 0, double hue = 0, double alphaVal = 1.0)
|
|
216
|
+
: l(lightness), c(chroma), h(hue), alpha(alphaVal) {}
|
|
217
|
+
|
|
218
|
+
Color_RGBA* toRGBA() const;
|
|
219
|
+
static OKLCH fromRGBA(const Color_RGBA* rgb);
|
|
220
|
+
OKLab toOKLab() const;
|
|
221
|
+
static OKLCH fromOKLab(const OKLab& oklab);
|
|
222
|
+
};
|
|
223
|
+
|
|
224
|
+
} // namespace Sass
|
|
225
|
+
|
|
226
|
+
#endif
|
|
227
|
+
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
// sass.hpp must go before all system headers to get the
|
|
2
|
+
// __EXTENSIONS__ fix on Solaris.
|
|
3
|
+
#include "sass.hpp"
|
|
4
|
+
|
|
5
|
+
#include "constants.hpp"
|
|
6
|
+
|
|
7
|
+
namespace Sass {
|
|
8
|
+
namespace Constants {
|
|
9
|
+
|
|
10
|
+
extern const unsigned long MaxCallStack = 1024;
|
|
11
|
+
|
|
12
|
+
// https://github.com/sass/libsass/issues/592
|
|
13
|
+
// https://developer.mozilla.org/en-US/docs/Web/CSS/Specificity
|
|
14
|
+
// https://github.com/sass/sass/issues/1495#issuecomment-61189114
|
|
15
|
+
extern const unsigned long Specificity_Star = 0;
|
|
16
|
+
extern const unsigned long Specificity_Universal = 0;
|
|
17
|
+
extern const unsigned long Specificity_Element = 1;
|
|
18
|
+
extern const unsigned long Specificity_Base = 1000;
|
|
19
|
+
extern const unsigned long Specificity_Class = 1000;
|
|
20
|
+
extern const unsigned long Specificity_Attr = 1000;
|
|
21
|
+
extern const unsigned long Specificity_Pseudo = 1000;
|
|
22
|
+
extern const unsigned long Specificity_ID = 1000000;
|
|
23
|
+
|
|
24
|
+
extern const int UnificationOrder_Element = 1;
|
|
25
|
+
extern const int UnificationOrder_Id = 2;
|
|
26
|
+
extern const int UnificationOrder_Class = 2;
|
|
27
|
+
extern const int UnificationOrder_Attribute = 3;
|
|
28
|
+
extern const int UnificationOrder_PseudoClass = 4;
|
|
29
|
+
extern const int UnificationOrder_Wrapped = 5;
|
|
30
|
+
extern const int UnificationOrder_PseudoElement = 6;
|
|
31
|
+
extern const int UnificationOrder_Placeholder = 7;
|
|
32
|
+
|
|
33
|
+
// sass keywords
|
|
34
|
+
extern const char at_root_kwd[] = "@at-root";
|
|
35
|
+
extern const char import_kwd[] = "@import";
|
|
36
|
+
extern const char mixin_kwd[] = "@mixin";
|
|
37
|
+
extern const char function_kwd[] = "@function";
|
|
38
|
+
extern const char return_kwd[] = "@return";
|
|
39
|
+
extern const char include_kwd[] = "@include";
|
|
40
|
+
extern const char content_kwd[] = "@content";
|
|
41
|
+
extern const char extend_kwd[] = "@extend";
|
|
42
|
+
extern const char if_kwd[] = "@if";
|
|
43
|
+
extern const char else_kwd[] = "@else";
|
|
44
|
+
extern const char if_after_else_kwd[] = "if";
|
|
45
|
+
extern const char for_kwd[] = "@for";
|
|
46
|
+
extern const char from_kwd[] = "from";
|
|
47
|
+
extern const char to_kwd[] = "to";
|
|
48
|
+
extern const char of_kwd[] = "of";
|
|
49
|
+
extern const char through_kwd[] = "through";
|
|
50
|
+
extern const char each_kwd[] = "@each";
|
|
51
|
+
extern const char in_kwd[] = "in";
|
|
52
|
+
extern const char while_kwd[] = "@while";
|
|
53
|
+
extern const char warn_kwd[] = "@warn";
|
|
54
|
+
extern const char error_kwd[] = "@error";
|
|
55
|
+
extern const char debug_kwd[] = "@debug";
|
|
56
|
+
extern const char default_kwd[] = "default";
|
|
57
|
+
extern const char global_kwd[] = "global";
|
|
58
|
+
extern const char null_kwd[] = "null";
|
|
59
|
+
extern const char optional_kwd[] = "optional";
|
|
60
|
+
extern const char with_kwd[] = "with";
|
|
61
|
+
extern const char without_kwd[] = "without";
|
|
62
|
+
extern const char all_kwd[] = "all";
|
|
63
|
+
extern const char rule_kwd[] = "rule";
|
|
64
|
+
|
|
65
|
+
// css standard units
|
|
66
|
+
extern const char em_kwd[] = "em";
|
|
67
|
+
extern const char ex_kwd[] = "ex";
|
|
68
|
+
extern const char px_kwd[] = "px";
|
|
69
|
+
extern const char cm_kwd[] = "cm";
|
|
70
|
+
extern const char mm_kwd[] = "mm";
|
|
71
|
+
extern const char pt_kwd[] = "pt";
|
|
72
|
+
extern const char pc_kwd[] = "pc";
|
|
73
|
+
extern const char deg_kwd[] = "deg";
|
|
74
|
+
extern const char rad_kwd[] = "rad";
|
|
75
|
+
extern const char grad_kwd[] = "grad";
|
|
76
|
+
extern const char turn_kwd[] = "turn";
|
|
77
|
+
extern const char ms_kwd[] = "ms";
|
|
78
|
+
extern const char s_kwd[] = "s";
|
|
79
|
+
extern const char Hz_kwd[] = "Hz";
|
|
80
|
+
extern const char kHz_kwd[] = "kHz";
|
|
81
|
+
|
|
82
|
+
// vendor prefixes
|
|
83
|
+
extern const char vendor_opera_kwd[] = "-o-";
|
|
84
|
+
extern const char vendor_webkit_kwd[] = "-webkit-";
|
|
85
|
+
extern const char vendor_mozilla_kwd[] = "-moz-";
|
|
86
|
+
extern const char vendor_ms_kwd[] = "-ms-";
|
|
87
|
+
extern const char vendor_khtml_kwd[] = "-khtml-";
|
|
88
|
+
|
|
89
|
+
// css functions and keywords
|
|
90
|
+
extern const char charset_kwd[] = "@charset";
|
|
91
|
+
extern const char media_kwd[] = "@media";
|
|
92
|
+
extern const char supports_kwd[] = "@supports";
|
|
93
|
+
extern const char keyframes_kwd[] = "keyframes";
|
|
94
|
+
extern const char only_kwd[] = "only";
|
|
95
|
+
extern const char rgb_fn_kwd[] = "rgb(";
|
|
96
|
+
extern const char url_fn_kwd[] = "url(";
|
|
97
|
+
extern const char url_kwd[] = "url";
|
|
98
|
+
// extern const char url_prefix_fn_kwd[] = "url-prefix(";
|
|
99
|
+
extern const char important_kwd[] = "important";
|
|
100
|
+
extern const char pseudo_not_fn_kwd[] = ":not(";
|
|
101
|
+
extern const char even_kwd[] = "even";
|
|
102
|
+
extern const char odd_kwd[] = "odd";
|
|
103
|
+
extern const char progid_kwd[] = "progid";
|
|
104
|
+
extern const char expression_kwd[] = "expression";
|
|
105
|
+
extern const char calc_fn_kwd[] = "calc";
|
|
106
|
+
|
|
107
|
+
extern const char almost_any_value_class[] = "\"'#!;{}";
|
|
108
|
+
|
|
109
|
+
// css selector keywords
|
|
110
|
+
extern const char sel_deep_kwd[] = "/deep/";
|
|
111
|
+
|
|
112
|
+
// css attribute-matching operators
|
|
113
|
+
extern const char tilde_equal[] = "~=";
|
|
114
|
+
extern const char pipe_equal[] = "|=";
|
|
115
|
+
extern const char caret_equal[] = "^=";
|
|
116
|
+
extern const char dollar_equal[] = "$=";
|
|
117
|
+
extern const char star_equal[] = "*=";
|
|
118
|
+
|
|
119
|
+
// relational & logical operators and constants
|
|
120
|
+
extern const char and_kwd[] = "and";
|
|
121
|
+
extern const char or_kwd[] = "or";
|
|
122
|
+
extern const char not_kwd[] = "not";
|
|
123
|
+
extern const char gt[] = ">";
|
|
124
|
+
extern const char gte[] = ">=";
|
|
125
|
+
extern const char lt[] = "<";
|
|
126
|
+
extern const char lte[] = "<=";
|
|
127
|
+
extern const char eq[] = "==";
|
|
128
|
+
extern const char neq[] = "!=";
|
|
129
|
+
extern const char true_kwd[] = "true";
|
|
130
|
+
extern const char false_kwd[] = "false";
|
|
131
|
+
|
|
132
|
+
// definition keywords
|
|
133
|
+
extern const char using_kwd[] = "using";
|
|
134
|
+
|
|
135
|
+
// miscellaneous punctuation and delimiters
|
|
136
|
+
extern const char percent_str[] = "%";
|
|
137
|
+
extern const char empty_str[] = "";
|
|
138
|
+
extern const char slash_slash[] = "//";
|
|
139
|
+
extern const char slash_star[] = "/*";
|
|
140
|
+
extern const char star_slash[] = "*/";
|
|
141
|
+
extern const char hash_lbrace[] = "#{";
|
|
142
|
+
extern const char rbrace[] = "}";
|
|
143
|
+
extern const char rparen[] = ")";
|
|
144
|
+
extern const char sign_chars[] = "-+";
|
|
145
|
+
extern const char op_chars[] = "-+";
|
|
146
|
+
extern const char hyphen[] = "-";
|
|
147
|
+
extern const char ellipsis[] = "...";
|
|
148
|
+
// extern const char url_space_chars[] = " \t\r\n\f";
|
|
149
|
+
// type names
|
|
150
|
+
extern const char numeric_name[] = "numeric value";
|
|
151
|
+
extern const char number_name[] = "number";
|
|
152
|
+
extern const char percentage_name[] = "percentage";
|
|
153
|
+
extern const char dimension_name[] = "numeric dimension";
|
|
154
|
+
extern const char string_name[] = "string";
|
|
155
|
+
extern const char bool_name[] = "bool";
|
|
156
|
+
extern const char color_name[] = "color";
|
|
157
|
+
extern const char list_name[] = "list";
|
|
158
|
+
extern const char map_name[] = "map";
|
|
159
|
+
extern const char arglist_name[] = "arglist";
|
|
160
|
+
|
|
161
|
+
// constants for uri parsing (RFC 3986 Appendix A.)
|
|
162
|
+
extern const char uri_chars[] = ":;/?!%&#@|[]{}'`^\"*+-.,_=~";
|
|
163
|
+
extern const char real_uri_chars[] = "#%&";
|
|
164
|
+
|
|
165
|
+
extern const char selector_combinator_child[] = ">";
|
|
166
|
+
extern const char selector_combinator_general[] = "~";
|
|
167
|
+
extern const char selector_combinator_adjacent[] = "+";
|
|
168
|
+
|
|
169
|
+
// some specific constant character classes
|
|
170
|
+
// they must be static to be useable by lexer
|
|
171
|
+
extern const char static_ops[] = "*/%";
|
|
172
|
+
// some character classes for the parser
|
|
173
|
+
extern const char selector_list_delims[] = "){};!";
|
|
174
|
+
extern const char complex_selector_delims[] = ",){};!";
|
|
175
|
+
extern const char selector_combinator_ops[] = "+~>";
|
|
176
|
+
// optional modifiers for alternative compare context
|
|
177
|
+
extern const char attribute_compare_modifiers[] = "~|^$*";
|
|
178
|
+
extern const char selector_lookahead_ops[] = "*&%,()[]";
|
|
179
|
+
|
|
180
|
+
// byte order marks
|
|
181
|
+
// (taken from http://en.wikipedia.org/wiki/Byte_order_mark)
|
|
182
|
+
extern const unsigned char utf_8_bom[] = { 0xEF, 0xBB, 0xBF };
|
|
183
|
+
extern const unsigned char utf_16_bom_be[] = { 0xFE, 0xFF };
|
|
184
|
+
extern const unsigned char utf_16_bom_le[] = { 0xFF, 0xFE };
|
|
185
|
+
extern const unsigned char utf_32_bom_be[] = { 0x00, 0x00, 0xFE, 0xFF };
|
|
186
|
+
extern const unsigned char utf_32_bom_le[] = { 0xFF, 0xFE, 0x00, 0x00 };
|
|
187
|
+
extern const unsigned char utf_7_bom_1[] = { 0x2B, 0x2F, 0x76, 0x38 };
|
|
188
|
+
extern const unsigned char utf_7_bom_2[] = { 0x2B, 0x2F, 0x76, 0x39 };
|
|
189
|
+
extern const unsigned char utf_7_bom_3[] = { 0x2B, 0x2F, 0x76, 0x2B };
|
|
190
|
+
extern const unsigned char utf_7_bom_4[] = { 0x2B, 0x2F, 0x76, 0x2F };
|
|
191
|
+
extern const unsigned char utf_7_bom_5[] = { 0x2B, 0x2F, 0x76, 0x38, 0x2D };
|
|
192
|
+
extern const unsigned char utf_1_bom[] = { 0xF7, 0x64, 0x4C };
|
|
193
|
+
extern const unsigned char utf_ebcdic_bom[] = { 0xDD, 0x73, 0x66, 0x73 };
|
|
194
|
+
extern const unsigned char scsu_bom[] = { 0x0E, 0xFE, 0xFF };
|
|
195
|
+
extern const unsigned char bocu_1_bom[] = { 0xFB, 0xEE, 0x28 };
|
|
196
|
+
extern const unsigned char gb_18030_bom[] = { 0x84, 0x31, 0x95, 0x33 };
|
|
197
|
+
|
|
198
|
+
}
|
|
199
|
+
}
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
#ifndef SASS_CONSTANTS_H
|
|
2
|
+
#define SASS_CONSTANTS_H
|
|
3
|
+
|
|
4
|
+
namespace Sass {
|
|
5
|
+
namespace Constants {
|
|
6
|
+
|
|
7
|
+
// The maximum call stack that can be created
|
|
8
|
+
extern const unsigned long MaxCallStack;
|
|
9
|
+
|
|
10
|
+
// https://developer.mozilla.org/en-US/docs/Web/CSS/Specificity
|
|
11
|
+
// The following list of selectors is by increasing specificity:
|
|
12
|
+
extern const unsigned long Specificity_Star;
|
|
13
|
+
extern const unsigned long Specificity_Universal;
|
|
14
|
+
extern const unsigned long Specificity_Element;
|
|
15
|
+
extern const unsigned long Specificity_Base;
|
|
16
|
+
extern const unsigned long Specificity_Class;
|
|
17
|
+
extern const unsigned long Specificity_Attr;
|
|
18
|
+
extern const unsigned long Specificity_Pseudo;
|
|
19
|
+
extern const unsigned long Specificity_ID;
|
|
20
|
+
|
|
21
|
+
// Selector unification order;
|
|
22
|
+
extern const int UnificationOrder_Element;
|
|
23
|
+
extern const int UnificationOrder_Id;
|
|
24
|
+
extern const int UnificationOrder_Class;
|
|
25
|
+
extern const int UnificationOrder_Attribute;
|
|
26
|
+
extern const int UnificationOrder_PseudoClass;
|
|
27
|
+
extern const int UnificationOrder_Wrapped;
|
|
28
|
+
extern const int UnificationOrder_PseudoElement;
|
|
29
|
+
extern const int UnificationOrder_Placeholder;
|
|
30
|
+
|
|
31
|
+
// sass keywords
|
|
32
|
+
extern const char at_root_kwd[];
|
|
33
|
+
extern const char import_kwd[];
|
|
34
|
+
extern const char mixin_kwd[];
|
|
35
|
+
extern const char function_kwd[];
|
|
36
|
+
extern const char return_kwd[];
|
|
37
|
+
extern const char include_kwd[];
|
|
38
|
+
extern const char content_kwd[];
|
|
39
|
+
extern const char extend_kwd[];
|
|
40
|
+
extern const char if_kwd[];
|
|
41
|
+
extern const char else_kwd[];
|
|
42
|
+
extern const char if_after_else_kwd[];
|
|
43
|
+
extern const char for_kwd[];
|
|
44
|
+
extern const char from_kwd[];
|
|
45
|
+
extern const char to_kwd[];
|
|
46
|
+
extern const char of_kwd[];
|
|
47
|
+
extern const char through_kwd[];
|
|
48
|
+
extern const char each_kwd[];
|
|
49
|
+
extern const char in_kwd[];
|
|
50
|
+
extern const char while_kwd[];
|
|
51
|
+
extern const char warn_kwd[];
|
|
52
|
+
extern const char error_kwd[];
|
|
53
|
+
extern const char debug_kwd[];
|
|
54
|
+
extern const char default_kwd[];
|
|
55
|
+
extern const char global_kwd[];
|
|
56
|
+
extern const char null_kwd[];
|
|
57
|
+
extern const char optional_kwd[];
|
|
58
|
+
extern const char with_kwd[];
|
|
59
|
+
extern const char without_kwd[];
|
|
60
|
+
extern const char all_kwd[];
|
|
61
|
+
extern const char rule_kwd[];
|
|
62
|
+
|
|
63
|
+
// css standard units
|
|
64
|
+
extern const char em_kwd[];
|
|
65
|
+
extern const char ex_kwd[];
|
|
66
|
+
extern const char px_kwd[];
|
|
67
|
+
extern const char cm_kwd[];
|
|
68
|
+
extern const char mm_kwd[];
|
|
69
|
+
extern const char pt_kwd[];
|
|
70
|
+
extern const char pc_kwd[];
|
|
71
|
+
extern const char deg_kwd[];
|
|
72
|
+
extern const char rad_kwd[];
|
|
73
|
+
extern const char grad_kwd[];
|
|
74
|
+
extern const char turn_kwd[];
|
|
75
|
+
extern const char ms_kwd[];
|
|
76
|
+
extern const char s_kwd[];
|
|
77
|
+
extern const char Hz_kwd[];
|
|
78
|
+
extern const char kHz_kwd[];
|
|
79
|
+
|
|
80
|
+
// vendor prefixes
|
|
81
|
+
extern const char vendor_opera_kwd[];
|
|
82
|
+
extern const char vendor_webkit_kwd[];
|
|
83
|
+
extern const char vendor_mozilla_kwd[];
|
|
84
|
+
extern const char vendor_ms_kwd[];
|
|
85
|
+
extern const char vendor_khtml_kwd[];
|
|
86
|
+
|
|
87
|
+
// css functions and keywords
|
|
88
|
+
extern const char charset_kwd[];
|
|
89
|
+
extern const char media_kwd[];
|
|
90
|
+
extern const char supports_kwd[];
|
|
91
|
+
extern const char keyframes_kwd[];
|
|
92
|
+
extern const char only_kwd[];
|
|
93
|
+
extern const char rgb_fn_kwd[];
|
|
94
|
+
extern const char url_fn_kwd[];
|
|
95
|
+
extern const char url_kwd[];
|
|
96
|
+
// extern const char url_prefix_fn_kwd[];
|
|
97
|
+
extern const char important_kwd[];
|
|
98
|
+
extern const char pseudo_not_fn_kwd[];
|
|
99
|
+
extern const char even_kwd[];
|
|
100
|
+
extern const char odd_kwd[];
|
|
101
|
+
extern const char progid_kwd[];
|
|
102
|
+
extern const char expression_kwd[];
|
|
103
|
+
extern const char calc_fn_kwd[];
|
|
104
|
+
|
|
105
|
+
// char classes for "regular expressions"
|
|
106
|
+
extern const char almost_any_value_class[];
|
|
107
|
+
|
|
108
|
+
// css selector keywords
|
|
109
|
+
extern const char sel_deep_kwd[];
|
|
110
|
+
|
|
111
|
+
// css attribute-matching operators
|
|
112
|
+
extern const char tilde_equal[];
|
|
113
|
+
extern const char pipe_equal[];
|
|
114
|
+
extern const char caret_equal[];
|
|
115
|
+
extern const char dollar_equal[];
|
|
116
|
+
extern const char star_equal[];
|
|
117
|
+
|
|
118
|
+
// relational & logical operators and constants
|
|
119
|
+
extern const char and_kwd[];
|
|
120
|
+
extern const char or_kwd[];
|
|
121
|
+
extern const char not_kwd[];
|
|
122
|
+
extern const char gt[];
|
|
123
|
+
extern const char gte[];
|
|
124
|
+
extern const char lt[];
|
|
125
|
+
extern const char lte[];
|
|
126
|
+
extern const char eq[];
|
|
127
|
+
extern const char neq[];
|
|
128
|
+
extern const char true_kwd[];
|
|
129
|
+
extern const char false_kwd[];
|
|
130
|
+
|
|
131
|
+
// definition keywords
|
|
132
|
+
extern const char using_kwd[];
|
|
133
|
+
|
|
134
|
+
// miscellaneous punctuation and delimiters
|
|
135
|
+
extern const char percent_str[];
|
|
136
|
+
extern const char empty_str[];
|
|
137
|
+
extern const char slash_slash[];
|
|
138
|
+
extern const char slash_star[];
|
|
139
|
+
extern const char star_slash[];
|
|
140
|
+
extern const char hash_lbrace[];
|
|
141
|
+
extern const char rbrace[];
|
|
142
|
+
extern const char rparen[];
|
|
143
|
+
extern const char sign_chars[];
|
|
144
|
+
extern const char op_chars[];
|
|
145
|
+
extern const char hyphen[];
|
|
146
|
+
extern const char ellipsis[];
|
|
147
|
+
// extern const char url_space_chars[];
|
|
148
|
+
|
|
149
|
+
// type names
|
|
150
|
+
extern const char numeric_name[];
|
|
151
|
+
extern const char number_name[];
|
|
152
|
+
extern const char percentage_name[];
|
|
153
|
+
extern const char dimension_name[];
|
|
154
|
+
extern const char string_name[];
|
|
155
|
+
extern const char bool_name[];
|
|
156
|
+
extern const char color_name[];
|
|
157
|
+
extern const char list_name[];
|
|
158
|
+
extern const char map_name[];
|
|
159
|
+
extern const char arglist_name[];
|
|
160
|
+
|
|
161
|
+
// constants for uri parsing (RFC 3986 Appendix A.)
|
|
162
|
+
extern const char uri_chars[];
|
|
163
|
+
extern const char real_uri_chars[];
|
|
164
|
+
|
|
165
|
+
// constants for selector combinators
|
|
166
|
+
extern const char selector_combinator_child[];
|
|
167
|
+
extern const char selector_combinator_general[];
|
|
168
|
+
extern const char selector_combinator_adjacent[];
|
|
169
|
+
|
|
170
|
+
// some specific constant character classes
|
|
171
|
+
// they must be static to be useable by lexer
|
|
172
|
+
extern const char static_ops[];
|
|
173
|
+
extern const char selector_list_delims[];
|
|
174
|
+
extern const char complex_selector_delims[];
|
|
175
|
+
extern const char selector_combinator_ops[];
|
|
176
|
+
extern const char attribute_compare_modifiers[];
|
|
177
|
+
extern const char selector_lookahead_ops[];
|
|
178
|
+
|
|
179
|
+
// byte order marks
|
|
180
|
+
// (taken from http://en.wikipedia.org/wiki/Byte_order_mark)
|
|
181
|
+
extern const unsigned char utf_8_bom[];
|
|
182
|
+
extern const unsigned char utf_16_bom_be[];
|
|
183
|
+
extern const unsigned char utf_16_bom_le[];
|
|
184
|
+
extern const unsigned char utf_32_bom_be[];
|
|
185
|
+
extern const unsigned char utf_32_bom_le[];
|
|
186
|
+
extern const unsigned char utf_7_bom_1[];
|
|
187
|
+
extern const unsigned char utf_7_bom_2[];
|
|
188
|
+
extern const unsigned char utf_7_bom_3[];
|
|
189
|
+
extern const unsigned char utf_7_bom_4[];
|
|
190
|
+
extern const unsigned char utf_7_bom_5[];
|
|
191
|
+
extern const unsigned char utf_1_bom[];
|
|
192
|
+
extern const unsigned char utf_ebcdic_bom[];
|
|
193
|
+
extern const unsigned char scsu_bom[];
|
|
194
|
+
extern const unsigned char bocu_1_bom[];
|
|
195
|
+
extern const unsigned char gb_18030_bom[];
|
|
196
|
+
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
#endif
|