62pm_newline_list_line(
const pm_newline_list_t *list,
const uint8_t *cursor, int32_t start_line) {
63 assert(cursor >= list->
start);
64 size_t offset = (size_t) (cursor - list->
start);
67 size_t right = list->
size - 1;
69 while (left <= right) {
70 size_t mid = left + (right - left) / 2;
72 if (list->
offsets[mid] == offset) {
73 return ((int32_t) mid) + start_line;
76 if (list->
offsets[mid] < offset) {
83 return ((int32_t) left) + start_line - 1;
92pm_newline_list_line_column(
const pm_newline_list_t *list,
const uint8_t *cursor, int32_t start_line) {
93 assert(cursor >= list->
start);
94 size_t offset = (size_t) (cursor - list->
start);
97 size_t right = list->
size - 1;
99 while (left <= right) {
100 size_t mid = left + (right - left) / 2;
102 if (list->
offsets[mid] == offset) {
106 if (list->
offsets[mid] < offset) {
114 .line = ((int32_t) left) + start_line - 1,
115 .column = (uint32_t) (offset - list->
offsets[left - 1])