diff options
author | Bram Moolenaar <Bram@vim.org> | 2006-04-18 21:55:01 +0000 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2006-04-18 21:55:01 +0000 |
commit | c1e37901fc8486c9960d7290e521ba51e292e94b (patch) | |
tree | 5367e8f83d9d313dd73c0499fd310f57df5e605f /src/gui.h | |
parent | a93fa7ee7856b54d3778e613c7b7e4b76aaeb2af (diff) | |
download | vim-git-c1e37901fc8486c9960d7290e521ba51e292e94b.tar.gz |
updated for version 7.0e02v7.0e02
Diffstat (limited to 'src/gui.h')
-rw-r--r-- | src/gui.h | 43 |
1 files changed, 43 insertions, 0 deletions
@@ -504,3 +504,46 @@ typedef enum # define FRD_WHOLE_WORD 0x08 /* match whole word only */ # define FRD_MATCH_CASE 0x10 /* match case */ #endif + +#ifdef HAVE_GTK2 +/* + * Convenience macros to convert from 'encoding' to 'termencoding' and + * vice versa. If no conversion is necessary the passed-in pointer is + * returned as is, without allocating any memory. Thus additional _FREE() + * macros are provided. The _FREE() macros also set the pointer to NULL, + * in order to avoid bugs due to illegal memory access only happening if + * 'encoding' != utf-8... + * + * Defining these macros as pure expressions looks a bit tricky but + * avoids depending on the context of the macro expansion. One of the + * rare occasions where the comma operator comes in handy :) + * + * Note: Do NOT keep the result around when handling control back to + * the main Vim! The user could change 'encoding' at any time. + */ +# define CONVERT_TO_UTF8(String) \ + ((output_conv.vc_type == CONV_NONE || (String) == NULL) \ + ? (String) \ + : string_convert(&output_conv, (String), NULL)) + +# define CONVERT_TO_UTF8_FREE(String) \ + ((String) = ((output_conv.vc_type == CONV_NONE) \ + ? (char_u *)NULL \ + : (vim_free(String), (char_u *)NULL))) + +# define CONVERT_FROM_UTF8(String) \ + ((input_conv.vc_type == CONV_NONE || (String) == NULL) \ + ? (String) \ + : string_convert(&input_conv, (String), NULL)) + +# define CONVERT_FROM_UTF8_FREE(String) \ + ((String) = ((input_conv.vc_type == CONV_NONE) \ + ? (char_u *)NULL \ + : (vim_free(String), (char_u *)NULL))) + +#else +# define CONVERT_TO_UTF8(String) (String) +# define CONVERT_TO_UTF8_FREE(String) ((String) = (char_u *)NULL) +# define CONVERT_FROM_UTF8(String) (String) +# define CONVERT_FROM_UTF8_FREE(String) ((String) = (char_u *)NULL) +#endif /* HAVE_GTK2 */ |