char* idris_utf8_rev(char* s, char* result) { strcpy(result, s); char* end = result; while(*end) { end = reverse_char(end); } reverse_range(result, end-1); return result; }
char* reverse_char(char *start) { char *end = start; while((end[1] & 0xc0) == 0x80) { end++; } reverse_range(start, end); return(end + 1); }
struct ListNode* reverseKGroup(struct ListNode* head, int k) { struct ListNode root; struct ListNode *tail,*cur,*tmp; int i; int count = 0; if(!k) return head; root.next = head; tail = &root; cur = head; while(cur){ count++; if(count % k == 0){ tmp = cur->next; cur->next = NULL; tail = reverse_range(tail->next,tail); tail->next = tmp; cur = tmp; continue; } cur = cur->next; } return root.next; }
void hb_buffer_t::reverse (void) { if (unlikely (!len)) return; reverse_range (0, len); }
void hb_buffer_t::reverse_clusters (void) { unsigned int i, start, count, last_cluster; if (unlikely (!len)) return; reverse (); count = len; start = 0; last_cluster = info[0].cluster; for (i = 1; i < count; i++) { if (last_cluster != info[i].cluster) { reverse_range (start, i); start = i; last_cluster = info[i].cluster; } } reverse_range (start, i); }