aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/buffer.c1
-rw-r--r--src/charset.c1
-rw-r--r--src/digraph.c1
-rw-r--r--src/eval.c1
-rw-r--r--src/ex_cmds.c1
-rw-r--r--src/ex_docmd.c1
-rw-r--r--src/ex_getln.c1
-rw-r--r--src/fileio.c1
-rw-r--r--src/fold.c1
-rw-r--r--src/garray.c144
-rw-r--r--src/garray.h14
-rw-r--r--src/getchar.c1
-rw-r--r--src/hardcopy.c1
-rw-r--r--src/main.c1
-rw-r--r--src/menu.c1
-rw-r--r--src/message.c1
-rw-r--r--src/misc1.c1
-rw-r--r--src/misc2.c137
-rw-r--r--src/misc2.h9
-rw-r--r--src/option.c1
-rw-r--r--src/os_unix.c1
-rw-r--r--src/regexp.c1
-rw-r--r--src/regexp_nfa.c1
-rw-r--r--src/screen.c1
-rw-r--r--src/spell.c1
-rw-r--r--src/syntax.c1
-rw-r--r--src/tag.c1
-rw-r--r--src/term.c1
-rw-r--r--src/ui.c1
-rw-r--r--src/undo.c1
-rw-r--r--src/window.c1
31 files changed, 185 insertions, 146 deletions
diff --git a/src/buffer.c b/src/buffer.c
index 401dc40333..0cefde5640 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -47,6 +47,7 @@
#include "message.h"
#include "misc1.h"
#include "misc2.h"
+#include "garray.h"
#include "move.h"
#include "option.h"
#include "os_unix.h"
diff --git a/src/charset.c b/src/charset.c
index 271df2c7f4..d613e2b48b 100644
--- a/src/charset.c
+++ b/src/charset.c
@@ -14,6 +14,7 @@
#include "memline.h"
#include "misc1.h"
#include "misc2.h"
+#include "garray.h"
#include "move.h"
#include "os_unix.h"
diff --git a/src/digraph.c b/src/digraph.c
index 9a58058fde..25b0251916 100644
--- a/src/digraph.c
+++ b/src/digraph.c
@@ -21,6 +21,7 @@
#include "mbyte.h"
#include "message.h"
#include "misc2.h"
+#include "garray.h"
#include "normal.h"
#include "screen.h"
#include "ui.h"
diff --git a/src/eval.c b/src/eval.c
index 4d120c82ce..7c54513e00 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -33,6 +33,7 @@
#include "message.h"
#include "misc1.h"
#include "misc2.h"
+#include "garray.h"
#include "move.h"
#include "normal.h"
#include "ops.h"
diff --git a/src/ex_cmds.c b/src/ex_cmds.c
index 5a28167ddb..73fd567429 100644
--- a/src/ex_cmds.c
+++ b/src/ex_cmds.c
@@ -34,6 +34,7 @@
#include "message.h"
#include "misc1.h"
#include "misc2.h"
+#include "garray.h"
#include "move.h"
#include "normal.h"
#include "ops.h"
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index 35aa970aac..cb731c17d3 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -37,6 +37,7 @@
#include "message.h"
#include "misc1.h"
#include "misc2.h"
+#include "garray.h"
#include "move.h"
#include "normal.h"
#include "ops.h"
diff --git a/src/ex_getln.c b/src/ex_getln.c
index c3f389e279..b4bd842f8e 100644
--- a/src/ex_getln.c
+++ b/src/ex_getln.c
@@ -32,6 +32,7 @@
#include "message.h"
#include "misc1.h"
#include "misc2.h"
+#include "garray.h"
#include "move.h"
#include "ops.h"
#include "option.h"
diff --git a/src/fileio.c b/src/fileio.c
index 482c47e17d..4e0f68af7e 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -31,6 +31,7 @@
#include "message.h"
#include "misc1.h"
#include "misc2.h"
+#include "garray.h"
#include "move.h"
#include "option.h"
#include "os_unix.h"
diff --git a/src/fold.c b/src/fold.c
index 47e5cdfdd2..f4aa436a3a 100644
--- a/src/fold.c
+++ b/src/fold.c
@@ -23,6 +23,7 @@
#include "message.h"
#include "misc1.h"
#include "misc2.h"
+#include "garray.h"
#include "move.h"
#include "option.h"
#include "screen.h"
diff --git a/src/garray.c b/src/garray.c
new file mode 100644
index 0000000000..ebd6748e78
--- /dev/null
+++ b/src/garray.c
@@ -0,0 +1,144 @@
+/*
+ * Functions for handling growing arrays.
+ */
+
+#include "vim.h"
+#include "ascii.h"
+#include "misc2.h"
+#include "garray.h"
+//#include "globals.h"
+#include "memline.h"
+
+/*
+ * Clear an allocated growing array.
+ */
+void ga_clear(garray_T *gap)
+{
+ vim_free(gap->ga_data);
+ ga_init(gap);
+}
+
+/*
+ * Clear a growing array that contains a list of strings.
+ */
+void ga_clear_strings(garray_T *gap)
+{
+ int i;
+
+ for (i = 0; i < gap->ga_len; ++i)
+ vim_free(((char_u **)(gap->ga_data))[i]);
+ ga_clear(gap);
+}
+
+/*
+ * Initialize a growing array. Don't forget to set ga_itemsize and
+ * ga_growsize! Or use ga_init2().
+ */
+void ga_init(garray_T *gap)
+{
+ gap->ga_data = NULL;
+ gap->ga_maxlen = 0;
+ gap->ga_len = 0;
+}
+
+void ga_init2(garray_T *gap, int itemsize, int growsize)
+{
+ ga_init(gap);
+ gap->ga_itemsize = itemsize;
+ gap->ga_growsize = growsize;
+}
+
+/*
+ * Make room in growing array "gap" for at least "n" items.
+ * Return FAIL for failure, OK otherwise.
+ */
+int ga_grow(garray_T *gap, int n)
+{
+ size_t old_len;
+ size_t new_len;
+ char_u *pp;
+
+ if (gap->ga_maxlen - gap->ga_len < n) {
+ if (n < gap->ga_growsize)
+ n = gap->ga_growsize;
+ new_len = gap->ga_itemsize * (gap->ga_len + n);
+ pp = (gap->ga_data == NULL)
+ ? alloc((unsigned)new_len) : vim_realloc(gap->ga_data, new_len);
+ if (pp == NULL)
+ return FAIL;
+ old_len = gap->ga_itemsize * gap->ga_maxlen;
+ vim_memset(pp + old_len, 0, new_len - old_len);
+ gap->ga_maxlen = gap->ga_len + n;
+ gap->ga_data = pp;
+ }
+ return OK;
+}
+
+/*
+ * For a growing array that contains a list of strings: concatenate all the
+ * strings with a separating comma.
+ * Returns NULL when out of memory.
+ */
+char_u *ga_concat_strings(garray_T *gap)
+{
+ int i;
+ int len = 0;
+ char_u *s;
+
+ for (i = 0; i < gap->ga_len; ++i)
+ len += (int)STRLEN(((char_u **)(gap->ga_data))[i]) + 1;
+
+ s = alloc(len + 1);
+ if (s != NULL) {
+ *s = NUL;
+ for (i = 0; i < gap->ga_len; ++i) {
+ if (*s != NUL)
+ STRCAT(s, ",");
+ STRCAT(s, ((char_u **)(gap->ga_data))[i]);
+ }
+ }
+ return s;
+}
+
+/*
+ * Concatenate a string to a growarray which contains characters.
+ * Note: Does NOT copy the NUL at the end!
+ */
+void ga_concat(garray_T *gap, char_u *s)
+{
+ int len = (int)STRLEN(s);
+
+ if (ga_grow(gap, len) == OK) {
+ mch_memmove((char *)gap->ga_data + gap->ga_len, s, (size_t)len);
+ gap->ga_len += len;
+ }
+}
+
+/*
+ * Append one byte to a growarray which contains bytes.
+ */
+void ga_append(garray_T *gap, int c)
+{
+ if (ga_grow(gap, 1) == OK) {
+ *((char *)gap->ga_data + gap->ga_len) = c;
+ ++gap->ga_len;
+ }
+}
+
+#if (defined(UNIX) && !defined(USE_SYSTEM)) || defined(WIN3264)
+/*
+ * Append the text in "gap" below the cursor line and clear "gap".
+ */
+void append_ga_line(garray_T *gap)
+{
+ /* Remove trailing CR. */
+ if (gap->ga_len > 0
+ && !curbuf->b_p_bin
+ && ((char_u *)gap->ga_data)[gap->ga_len - 1] == CAR)
+ --gap->ga_len;
+ ga_append(gap, NUL);
+ ml_append(curwin->w_cursor.lnum++, gap->ga_data, 0, FALSE);
+ gap->ga_len = 0;
+}
+#endif
+
diff --git a/src/garray.h b/src/garray.h
new file mode 100644
index 0000000000..256d5f2cb8
--- /dev/null
+++ b/src/garray.h
@@ -0,0 +1,14 @@
+#ifndef NEOVIM_GARRAY_H
+#define NEOVIM_GARRAY_H
+
+void ga_clear __ARGS((garray_T *gap));
+void ga_clear_strings __ARGS((garray_T *gap));
+void ga_init __ARGS((garray_T *gap));
+void ga_init2 __ARGS((garray_T *gap, int itemsize, int growsize));
+int ga_grow __ARGS((garray_T *gap, int n));
+char_u *ga_concat_strings __ARGS((garray_T *gap));
+void ga_concat __ARGS((garray_T *gap, char_u *s));
+void ga_append __ARGS((garray_T *gap, int c));
+void append_ga_line __ARGS((garray_T *gap));
+
+#endif /* NEOVIM_GARRAY_H */
diff --git a/src/getchar.c b/src/getchar.c
index 7303e3739e..be1966c007 100644
--- a/src/getchar.c
+++ b/src/getchar.c
@@ -29,6 +29,7 @@
#include "message.h"
#include "misc1.h"
#include "misc2.h"
+#include "garray.h"
#include "move.h"
#include "normal.h"
#include "ops.h"
diff --git a/src/hardcopy.c b/src/hardcopy.c
index 4f5ef53799..cfcf86cf62 100644
--- a/src/hardcopy.c
+++ b/src/hardcopy.c
@@ -25,6 +25,7 @@
#include "message.h"
#include "misc1.h"
#include "misc2.h"
+#include "garray.h"
#include "option.h"
#include "screen.h"
#include "syntax.h"
diff --git a/src/main.c b/src/main.c
index c5d7d528cf..a9d9f676e8 100644
--- a/src/main.c
+++ b/src/main.c
@@ -29,6 +29,7 @@
#include "message.h"
#include "misc1.h"
#include "misc2.h"
+#include "garray.h"
#include "move.h"
#include "normal.h"
#include "ops.h"
diff --git a/src/menu.c b/src/menu.c
index 95ac7bd5f5..085e3dda0d 100644
--- a/src/menu.c
+++ b/src/menu.c
@@ -21,6 +21,7 @@
#include "message.h"
#include "misc1.h"
#include "misc2.h"
+#include "garray.h"
#include "term.h"
diff --git a/src/message.c b/src/message.c
index 99d52380a4..094e2f5f8e 100644
--- a/src/message.c
+++ b/src/message.c
@@ -23,6 +23,7 @@
#include "mbyte.h"
#include "misc1.h"
#include "misc2.h"
+#include "garray.h"
#include "ops.h"
#include "option.h"
#include "screen.h"
diff --git a/src/misc1.c b/src/misc1.c
index 2d59948e60..b92d57a03a 100644
--- a/src/misc1.c
+++ b/src/misc1.c
@@ -30,6 +30,7 @@
#include "memline.h"
#include "message.h"
#include "misc2.h"
+#include "garray.h"
#include "move.h"
#include "option.h"
#include "os_unix.h"
diff --git a/src/misc2.c b/src/misc2.c
index 544a45a315..910ff5150c 100644
--- a/src/misc2.c
+++ b/src/misc2.c
@@ -1609,143 +1609,6 @@ int vim_isspace(int x)
}
/************************************************************************
- * Functions for handling growing arrays.
- */
-
-/*
- * Clear an allocated growing array.
- */
-void ga_clear(garray_T *gap)
-{
- vim_free(gap->ga_data);
- ga_init(gap);
-}
-
-/*
- * Clear a growing array that contains a list of strings.
- */
-void ga_clear_strings(garray_T *gap)
-{
- int i;
-
- for (i = 0; i < gap->ga_len; ++i)
- vim_free(((char_u **)(gap->ga_data))[i]);
- ga_clear(gap);
-}
-
-/*
- * Initialize a growing array. Don't forget to set ga_itemsize and
- * ga_growsize! Or use ga_init2().
- */
-void ga_init(garray_T *gap)
-{
- gap->ga_data = NULL;
- gap->ga_maxlen = 0;
- gap->ga_len = 0;
-}
-
-void ga_init2(garray_T *gap, int itemsize, int growsize)
-{
- ga_init(gap);
- gap->ga_itemsize = itemsize;
- gap->ga_growsize = growsize;
-}
-
-/*
- * Make room in growing array "gap" for at least "n" items.
- * Return FAIL for failure, OK otherwise.
- */
-int ga_grow(garray_T *gap, int n)
-{
- size_t old_len;
- size_t new_len;
- char_u *pp;
-
- if (gap->ga_maxlen - gap->ga_len < n) {
- if (n < gap->ga_growsize)
- n = gap->ga_growsize;
- new_len = gap->ga_itemsize * (gap->ga_len + n);
- pp = (gap->ga_data == NULL)
- ? alloc((unsigned)new_len) : vim_realloc(gap->ga_data, new_len);
- if (pp == NULL)
- return FAIL;
- old_len = gap->ga_itemsize * gap->ga_maxlen;
- vim_memset(pp + old_len, 0, new_len - old_len);
- gap->ga_maxlen = gap->ga_len + n;
- gap->ga_data = pp;
- }
- return OK;
-}
-
-/*
- * For a growing array that contains a list of strings: concatenate all the
- * strings with a separating comma.
- * Returns NULL when out of memory.
- */
-char_u *ga_concat_strings(garray_T *gap)
-{
- int i;
- int len = 0;
- char_u *s;
-
- for (i = 0; i < gap->ga_len; ++i)
- len += (int)STRLEN(((char_u **)(gap->ga_data))[i]) + 1;
-
- s = alloc(len + 1);
- if (s != NULL) {
- *s = NUL;
- for (i = 0; i < gap->ga_len; ++i) {
- if (*s != NUL)
- STRCAT(s, ",");
- STRCAT(s, ((char_u **)(gap->ga_data))[i]);
- }
- }
- return s;
-}
-
-/*
- * Concatenate a string to a growarray which contains characters.
- * Note: Does NOT copy the NUL at the end!
- */
-void ga_concat(garray_T *gap, char_u *s)
-{
- int len = (int)STRLEN(s);
-
- if (ga_grow(gap, len) == OK) {
- mch_memmove((char *)gap->ga_data + gap->ga_len, s, (size_t)len);
- gap->ga_len += len;
- }
-}
-
-/*
- * Append one byte to a growarray which contains bytes.
- */
-void ga_append(garray_T *gap, int c)
-{
- if (ga_grow(gap, 1) == OK) {
- *((char *)gap->ga_data + gap->ga_len) = c;
- ++gap->ga_len;
- }
-}
-
-#if (defined(UNIX) && !defined(USE_SYSTEM)) || defined(WIN3264)
-/*
- * Append the text in "gap" below the cursor line and clear "gap".
- */
-void append_ga_line(garray_T *gap)
-{
- /* Remove trailing CR. */
- if (gap->ga_len > 0
- && !curbuf->b_p_bin
- && ((char_u *)gap->ga_data)[gap->ga_len - 1] == CAR)
- --gap->ga_len;
- ga_append(gap, NUL);
- ml_append(curwin->w_cursor.lnum++, gap->ga_data, 0, FALSE);
- gap->ga_len = 0;
-}
-#endif
-
-/************************************************************************
* functions that use lookup tables for various things, generally to do with
* special key codes.
*/
diff --git a/src/misc2.h b/src/misc2.h
index 7beb681661..4fabd49001 100644
--- a/src/misc2.h
+++ b/src/misc2.h
@@ -55,15 +55,6 @@ char_u *vim_strchr __ARGS((char_u *string, int c));
char_u *vim_strbyte __ARGS((char_u *string, int c));
char_u *vim_strrchr __ARGS((char_u *string, int c));
int vim_isspace __ARGS((int x));
-void ga_clear __ARGS((garray_T *gap));
-void ga_clear_strings __ARGS((garray_T *gap));
-void ga_init __ARGS((garray_T *gap));
-void ga_init2 __ARGS((garray_T *gap, int itemsize, int growsize));
-int ga_grow __ARGS((garray_T *gap, int n));
-char_u *ga_concat_strings __ARGS((garray_T *gap));
-void ga_concat __ARGS((garray_T *gap, char_u *s));
-void ga_append __ARGS((garray_T *gap, int c));
-void append_ga_line __ARGS((garray_T *gap));
int name_to_mod_mask __ARGS((int c));
int simplify_key __ARGS((int key, int *modifiers));
int handle_x_keys __ARGS((int key));
diff --git a/src/option.c b/src/option.c
index ded6fc1314..50335cd9db 100644
--- a/src/option.c
+++ b/src/option.c
@@ -53,6 +53,7 @@
#include "message.h"
#include "misc1.h"
#include "misc2.h"
+#include "garray.h"
#include "move.h"
#include "normal.h"
#include "os_unix.h"
diff --git a/src/os_unix.c b/src/os_unix.c
index 856191ea95..d80ef00f5e 100644
--- a/src/os_unix.c
+++ b/src/os_unix.c
@@ -41,6 +41,7 @@
#include "message.h"
#include "misc1.h"
#include "misc2.h"
+#include "garray.h"
#include "screen.h"
#include "syntax.h"
#include "term.h"
diff --git a/src/regexp.c b/src/regexp.c
index 3641f16cdb..c325a7d129 100644
--- a/src/regexp.c
+++ b/src/regexp.c
@@ -54,6 +54,7 @@
#include "message.h"
#include "misc1.h"
#include "misc2.h"
+#include "garray.h"
#ifdef REGEXP_DEBUG
/* show/save debugging data when BT engine is used */
diff --git a/src/regexp_nfa.c b/src/regexp_nfa.c
index 75deff1b3e..902d46f825 100644
--- a/src/regexp_nfa.c
+++ b/src/regexp_nfa.c
@@ -6,6 +6,7 @@
*/
#include "misc2.h"
+#include "garray.h"
/*
* Logging of NFA engine.
diff --git a/src/screen.c b/src/screen.c
index 293a41b9c6..b860b6719e 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -105,6 +105,7 @@
#include "message.h"
#include "misc1.h"
#include "misc2.h"
+#include "garray.h"
#include "move.h"
#include "normal.h"
#include "option.h"
diff --git a/src/spell.c b/src/spell.c
index 3fae72ffd2..4d8bcf5245 100644
--- a/src/spell.c
+++ b/src/spell.c
@@ -314,6 +314,7 @@
#include "message.h"
#include "misc1.h"
#include "misc2.h"
+#include "garray.h"
#include "normal.h"
#include "option.h"
#include "os_unix.h"
diff --git a/src/syntax.c b/src/syntax.c
index 4b22137fda..ca0bfe1e4b 100644
--- a/src/syntax.c
+++ b/src/syntax.c
@@ -25,6 +25,7 @@
#include "message.h"
#include "misc1.h"
#include "misc2.h"
+#include "garray.h"
#include "option.h"
#include "os_unix.h"
#include "regexp.h"
diff --git a/src/tag.c b/src/tag.c
index ebdfb6b2a2..5fb80724bb 100644
--- a/src/tag.c
+++ b/src/tag.c
@@ -29,6 +29,7 @@
#include "message.h"
#include "misc1.h"
#include "misc2.h"
+#include "garray.h"
#include "move.h"
#include "option.h"
#include "os_unix.h"
diff --git a/src/term.c b/src/term.c
index 8488376a25..5ce3e3ee96 100644
--- a/src/term.c
+++ b/src/term.c
@@ -34,6 +34,7 @@
#include "getchar.h"
#include "message.h"
#include "misc2.h"
+#include "garray.h"
#include "move.h"
#include "normal.h"
#include "option.h"
diff --git a/src/ui.c b/src/ui.c
index 3396f2e6ef..e864de9dd8 100644
--- a/src/ui.c
+++ b/src/ui.c
@@ -25,6 +25,7 @@
#include "mbyte.h"
#include "misc1.h"
#include "misc2.h"
+#include "garray.h"
#include "move.h"
#include "normal.h"
#include "option.h"
diff --git a/src/undo.c b/src/undo.c
index b63e89458e..8d28f86fba 100644
--- a/src/undo.c
+++ b/src/undo.c
@@ -92,6 +92,7 @@
#include "message.h"
#include "misc1.h"
#include "misc2.h"
+#include "garray.h"
#include "option.h"
#include "os_unix.h"
#include "quickfix.h"
diff --git a/src/window.c b/src/window.c
index fb95ec1239..a3347ed0f1 100644
--- a/src/window.c
+++ b/src/window.c
@@ -29,6 +29,7 @@
#include "message.h"
#include "misc1.h"
#include "misc2.h"
+#include "garray.h"
#include "move.h"
#include "normal.h"
#include "option.h"