pdcurses/addstr.c

changeset 97
2d43f05b284c
equal deleted inserted replaced
96:5314ebdcb38d 97:2d43f05b284c
1 /* Public Domain Curses */
2
3 #include <curspriv.h>
4
5 RCSID("$Id: addstr.c,v 1.44 2008/07/13 16:08:17 wmcbrine Exp $")
6
7 /*man-start**************************************************************
8
9 Name: addstr
10
11 Synopsis:
12 int addstr(const char *str);
13 int addnstr(const char *str, int n);
14 int waddstr(WINDOW *win, const char *str);
15 int waddnstr(WINDOW *win, const char *str, int n);
16 int mvaddstr(int y, int x, const char *str);
17 int mvaddnstr(int y, int x, const char *str, int n);
18 int mvwaddstr(WINDOW *win, int y, int x, const char *str);
19 int mvwaddnstr(WINDOW *win, int y, int x, const char *str, int n);
20
21 int addwstr(const wchar_t *wstr);
22 int addnwstr(const wchar_t *wstr, int n);
23 int waddwstr(WINDOW *win, const wchar_t *wstr);
24 int waddnwstr(WINDOW *win, const wchar_t *wstr, int n);
25 int mvaddwstr(int y, int x, const wchar_t *wstr);
26 int mvaddnwstr(int y, int x, const wchar_t *wstr, int n);
27 int mvwaddwstr(WINDOW *win, int y, int x, const wchar_t *wstr);
28 int mvwaddnwstr(WINDOW *win, int y, int x, const wchar_t *wstr, int n);
29
30 Description:
31 These routines write all the characters of the null-terminated
32 string str or wide-character string wstr to the given window.
33 The functionality is similar to calling waddch() once for each
34 character in the string; except that, when PDCurses is built
35 with wide-character support enabled, the narrow-character
36 functions treat the string as a multibyte string in the current
37 locale, and convert it. The routines with n as the last
38 argument write at most n characters; if n is negative, then the
39 entire string will be added.
40
41 Return Value:
42 All functions return OK or ERR.
43
44 Portability X/Open BSD SYS V
45 addstr Y Y Y
46 waddstr Y Y Y
47 mvaddstr Y Y Y
48 mvwaddstr Y Y Y
49 addnstr Y - 4.0
50 waddnstr Y - 4.0
51 mvaddnstr Y - 4.0
52 mvwaddnstr Y - 4.0
53 addwstr Y
54 waddwstr Y
55 mvaddwstr Y
56 mvwaddwstr Y
57 addnwstr Y
58 waddnwstr Y
59 mvaddnwstr Y
60 mvwaddnwstr Y
61
62 **man-end****************************************************************/
63
64 int waddnstr(WINDOW *win, const char *str, int n)
65 {
66 int i = 0;
67
68 PDC_LOG(("waddnstr() - called: string=\"%s\" n %d \n", str, n));
69
70 if (!win || !str)
71 return ERR;
72
73 while (str[i] && (i < n || n < 0))
74 {
75 #ifdef PDC_WIDE
76 wchar_t wch;
77 int retval = PDC_mbtowc(&wch, str + i, n >= 0 ? n - i : 6);
78
79 if (retval <= 0)
80 return OK;
81
82 i += retval;
83 #else
84 chtype wch = (unsigned char)(str[i++]);
85 #endif
86 if (waddch(win, wch) == ERR)
87 return ERR;
88 }
89
90 return OK;
91 }
92
93 int addstr(const char *str)
94 {
95 PDC_LOG(("addstr() - called: string=\"%s\"\n", str));
96
97 return waddnstr(stdscr, str, -1);
98 }
99
100 int addnstr(const char *str, int n)
101 {
102 PDC_LOG(("addnstr() - called: string=\"%s\" n %d \n", str, n));
103
104 return waddnstr(stdscr, str, n);
105 }
106
107 int waddstr(WINDOW *win, const char *str)
108 {
109 PDC_LOG(("waddstr() - called: string=\"%s\"\n", str));
110
111 return waddnstr(win, str, -1);
112 }
113
114 int mvaddstr(int y, int x, const char *str)
115 {
116 PDC_LOG(("mvaddstr() - called: y %d x %d string=\"%s\"\n", y, x, str));
117
118 if (move(y, x) == ERR)
119 return ERR;
120
121 return waddnstr(stdscr, str, -1);
122 }
123
124 int mvaddnstr(int y, int x, const char *str, int n)
125 {
126 PDC_LOG(("mvaddnstr() - called: y %d x %d string=\"%s\" n %d \n",
127 y, x, str, n));
128
129 if (move(y, x) == ERR)
130 return ERR;
131
132 return waddnstr(stdscr, str, n);
133 }
134
135 int mvwaddstr(WINDOW *win, int y, int x, const char *str)
136 {
137 PDC_LOG(("mvwaddstr() - called: string=\"%s\"\n", str));
138
139 if (wmove(win, y, x) == ERR)
140 return ERR;
141
142 return waddnstr(win, str, -1);
143 }
144
145 int mvwaddnstr(WINDOW *win, int y, int x, const char *str, int n)
146 {
147 PDC_LOG(("mvwaddnstr() - called: y %d x %d string=\"%s\" n %d \n",
148 y, x, str, n));
149
150 if (wmove(win, y, x) == ERR)
151 return ERR;
152
153 return waddnstr(win, str, n);
154 }
155
156 #ifdef PDC_WIDE
157 int waddnwstr(WINDOW *win, const wchar_t *wstr, int n)
158 {
159 int i = 0;
160
161 PDC_LOG(("waddnwstr() - called\n"));
162
163 if (!win || !wstr)
164 return ERR;
165
166 while (wstr[i] && (i < n || n < 0))
167 {
168 chtype wch = wstr[i++];
169
170 if (waddch(win, wch) == ERR)
171 return ERR;
172 }
173
174 return OK;
175 }
176
177 int addwstr(const wchar_t *wstr)
178 {
179 PDC_LOG(("addwstr() - called\n"));
180
181 return waddnwstr(stdscr, wstr, -1);
182 }
183
184 int addnwstr(const wchar_t *wstr, int n)
185 {
186 PDC_LOG(("addnwstr() - called\n"));
187
188 return waddnwstr(stdscr, wstr, n);
189 }
190
191 int waddwstr(WINDOW *win, const wchar_t *wstr)
192 {
193 PDC_LOG(("waddwstr() - called\n"));
194
195 return waddnwstr(win, wstr, -1);
196 }
197
198 int mvaddwstr(int y, int x, const wchar_t *wstr)
199 {
200 PDC_LOG(("mvaddstr() - called\n"));
201
202 if (move(y, x) == ERR)
203 return ERR;
204
205 return waddnwstr(stdscr, wstr, -1);
206 }
207
208 int mvaddnwstr(int y, int x, const wchar_t *wstr, int n)
209 {
210 PDC_LOG(("mvaddnstr() - called\n"));
211
212 if (move(y, x) == ERR)
213 return ERR;
214
215 return waddnwstr(stdscr, wstr, n);
216 }
217
218 int mvwaddwstr(WINDOW *win, int y, int x, const wchar_t *wstr)
219 {
220 PDC_LOG(("mvwaddstr() - called\n"));
221
222 if (wmove(win, y, x) == ERR)
223 return ERR;
224
225 return waddnwstr(win, wstr, -1);
226 }
227
228 int mvwaddnwstr(WINDOW *win, int y, int x, const wchar_t *wstr, int n)
229 {
230 PDC_LOG(("mvwaddnstr() - called\n"));
231
232 if (wmove(win, y, x) == ERR)
233 return ERR;
234
235 return waddnwstr(win, wstr, n);
236 }
237 #endif

mercurial