diff options
author | Felipe Oliveira Carvalho <felipekde@gmail.com> | 2014-02-28 01:35:53 -0300 |
---|---|---|
committer | Thiago de Arruda <tpadilha84@gmail.com> | 2014-02-28 06:43:20 -0300 |
commit | 410f0a27c5dbd28a48d43af360c23c03ca088f6c (patch) | |
tree | 4d2454a3af3b77c0adb4185682b2cb41b6afb199 /src | |
parent | 79882bc7bdcb7de8827cb08187ea6252f4d1fd6e (diff) | |
download | rneovim-410f0a27c5dbd28a48d43af360c23c03ca088f6c.tar.gz rneovim-410f0a27c5dbd28a48d43af360c23c03ca088f6c.tar.bz2 rneovim-410f0a27c5dbd28a48d43af360c23c03ca088f6c.zip |
Extract garray.c from misc2.c
Start to split misc2.c in many other files (see #209).
Diffstat (limited to 'src')
-rw-r--r-- | src/buffer.c | 1 | ||||
-rw-r--r-- | src/charset.c | 1 | ||||
-rw-r--r-- | src/digraph.c | 1 | ||||
-rw-r--r-- | src/eval.c | 1 | ||||
-rw-r--r-- | src/ex_cmds.c | 1 | ||||
-rw-r--r-- | src/ex_docmd.c | 1 | ||||
-rw-r--r-- | src/ex_getln.c | 1 | ||||
-rw-r--r-- | src/fileio.c | 1 | ||||
-rw-r--r-- | src/fold.c | 1 | ||||
-rw-r--r-- | src/garray.c | 144 | ||||
-rw-r--r-- | src/garray.h | 14 | ||||
-rw-r--r-- | src/getchar.c | 1 | ||||
-rw-r--r-- | src/hardcopy.c | 1 | ||||
-rw-r--r-- | src/main.c | 1 | ||||
-rw-r--r-- | src/menu.c | 1 | ||||
-rw-r--r-- | src/message.c | 1 | ||||
-rw-r--r-- | src/misc1.c | 1 | ||||
-rw-r--r-- | src/misc2.c | 137 | ||||
-rw-r--r-- | src/misc2.h | 9 | ||||
-rw-r--r-- | src/option.c | 1 | ||||
-rw-r--r-- | src/os_unix.c | 1 | ||||
-rw-r--r-- | src/regexp.c | 1 | ||||
-rw-r--r-- | src/regexp_nfa.c | 1 | ||||
-rw-r--r-- | src/screen.c | 1 | ||||
-rw-r--r-- | src/spell.c | 1 | ||||
-rw-r--r-- | src/syntax.c | 1 | ||||
-rw-r--r-- | src/tag.c | 1 | ||||
-rw-r--r-- | src/term.c | 1 | ||||
-rw-r--r-- | src/ui.c | 1 | ||||
-rw-r--r-- | src/undo.c | 1 | ||||
-rw-r--r-- | src/window.c | 1 |
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" @@ -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" @@ -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" |