diff options
author | Hisham Muhammad <hisham@gobolinux.org> | 2008-03-09 02:33:23 +0000 |
---|---|---|
committer | Hisham Muhammad <hisham@gobolinux.org> | 2008-03-09 02:33:23 +0000 |
commit | 8fa33dc3365f0e27a5013748321def4bef937049 (patch) | |
tree | cf1498456001b55157c4ce9dcd516dd5226158e3 /RichString.h | |
parent | fa87ff02514cdd148cdcf8d24de0599a400f3918 (diff) |
Add Unicode support, enabled with the --enable-unicode
flag, which requires libncursesw.
Thanks to Sergej Pupykin!
Diffstat (limited to 'RichString.h')
-rw-r--r-- | RichString.h | 44 |
1 files changed, 40 insertions, 4 deletions
diff --git a/RichString.h b/RichString.h index 6eed0d92..7f777bba 100644 --- a/RichString.h +++ b/RichString.h @@ -4,12 +4,20 @@ #define HEADER_RichString +#ifndef CONFIG_H +#define CONFIG_H +#include "config.h" +#endif + #include <stdlib.h> #include <string.h> #include <curses.h> #include "debug.h" #include <assert.h> +#ifdef HAVE_LIBNCURSESW +#include <wchar.h> +#endif #define RICHSTRING_MAXLEN 300 @@ -17,9 +25,23 @@ #define RichString_init(this) (this)->len = 0 #define RichString_initVal(this) (this).len = 0 +#ifdef HAVE_LIBNCURSESW +#define RichString_printVal(this, y, x) mvadd_wchstr(y, x, this.chstr) +#define RichString_printoffnVal(this, y, x, off, n) mvadd_wchnstr(y, x, this.chstr + off, n) +#define RichString_getCharVal(this, i) (this.chstr[i].chars[0] & 255) +#else +#define RichString_printVal(this, y, x) mvaddchstr(y, x, this.chstr) +#define RichString_printoffnVal(this, y, x, off, n) mvaddchnstr(y, x, this.chstr + off, n) +#define RichString_getCharVal(this, i) (this.chstr[i]) +#endif + typedef struct RichString_ { int len; +#ifdef HAVE_LIBNCURSESW + cchar_t chstr[RICHSTRING_MAXLEN+1]; +#else chtype chstr[RICHSTRING_MAXLEN+1]; +#endif } RichString; @@ -27,15 +49,29 @@ typedef struct RichString_ { #define MIN(a,b) ((a)<(b)?(a):(b)) #endif -extern void RichString_appendn(RichString* this, int attrs, char* data, int len); +#ifdef HAVE_LIBNCURSESW -extern void RichString_append(RichString* this, int attrs, char* data); +extern void RichString_appendn(RichString* this, int attrs, char* data_c, int len); -void RichString_write(RichString* this, int attrs, char* data); +extern void RichString_setAttrn(RichString *this, int attrs, int start, int finish); + +int RichString_findChar(RichString *this, char c, int start); + +#else + +extern void RichString_appendn(RichString* this, int attrs, char* data_c, int len); + +void RichString_setAttrn(RichString *this, int attrs, int start, int finish); + +int RichString_findChar(RichString *this, char c, int start); + +#endif void RichString_setAttr(RichString *this, int attrs); -void RichString_applyAttr(RichString *this, int attrs); +extern void RichString_append(RichString* this, int attrs, char* data); + +void RichString_write(RichString* this, int attrs, char* data); RichString RichString_quickString(int attrs, char* data); |