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