@@ -305,3 +305,24 @@ int ptr_cur_end(struct ptr_cur *cur, struct ptr_list *head)
cur->n = prev->nr;
return 1;
}
+
+void ptr_cur_insert(struct ptr_cur *cur, void *new, void *ptr)
+{
+ void **this, **last;
+
+ if (cur->l->nr == LIST_NODE_NR) {
+ split_ptr_list_head(cur->l);
+ if (cur->n >= cur->l->nr) {
+ cur->n -= cur->l->nr;
+ cur->l = cur->l->next;
+ }
+ }
+ this = cur->l->list + cur->n;
+ last = cur->l->list + cur->l->nr - 1;
+ while (last >= this) {
+ last[1] = last[0];
+ last--;
+ }
+ *this = new;
+ cur->l->nr++;
+}
@@ -55,6 +55,7 @@ int ptr_cur_beg(struct ptr_cur *cur, struct ptr_list *head);
int ptr_cur_next(struct ptr_cur *cur);
int ptr_cur_end(struct ptr_cur *cur, struct ptr_list *head);
int ptr_cur_prev(struct ptr_cur *cur);
+void ptr_cur_insert(struct ptr_cur *cur, void *new, void *ptr);
/*
* Hey, who said that you can't do overloading in C?
@@ -213,27 +214,6 @@ do { \
extern void split_ptr_list_head(struct ptr_list *);
-static inline void ptr_cur_insert(struct ptr_cur *cur, void *new, void *ptr)
-{
- void **this, **last;
-
- if (cur->l->nr == LIST_NODE_NR) {
- split_ptr_list_head(cur->l);
- if (cur->n >= cur->l->nr) {
- cur->n -= cur->l->nr;
- cur->l = cur->l->next;
- }
- }
- this = cur->l->list + cur->n;
- last = cur->l->list + cur->l->nr - 1;
- while (last >= this) {
- last[1] = last[0];
- last--;
- }
- *this = (new);
- cur->l->nr++;
-}
-
#define DO_INSERT_CURRENT(new, ptr, __cur) \
ptr_cur_insert(&__cur, new, ptr)