1 | #ifndef SASS_UTF8_STRING_H |
2 | #define SASS_UTF8_STRING_H |
3 | |
4 | #include <string> |
5 | #include "utf8.h" |
6 | #include "memory.hpp" |
7 | |
8 | namespace Sass { |
9 | namespace UTF_8 { |
10 | |
11 | // naming conventions: |
12 | // offset: raw byte offset (0 based) |
13 | // position: code point offset (0 based) |
14 | // index: code point offset (1 based or negative) |
15 | |
16 | // function that will count the number of code points (utf-8 characters) from the beginning to the given end |
17 | size_t code_point_count(const sass::string& str, size_t start, size_t end); |
18 | size_t code_point_count(const sass::string& str); |
19 | |
20 | // function that will return the byte offset of a code point in a |
21 | size_t offset_at_position(const sass::string& str, size_t position); |
22 | |
23 | // function that returns number of bytes in a character in a string |
24 | size_t code_point_size_at_offset(const sass::string& str, size_t offset); |
25 | |
26 | // function that will return a normalized index, given a crazy one |
27 | size_t normalize_index(int index, size_t len); |
28 | |
29 | #ifdef _WIN32 |
30 | // functions to handle unicode paths on windows |
31 | sass::string convert_from_utf16(const std::wstring& wstr); |
32 | std::wstring convert_to_utf16(const sass::string& str); |
33 | #endif |
34 | |
35 | } |
36 | } |
37 | |
38 | #endif |
39 | |