Mercurial > kinput2.yaz
comparison lib/Xatoklib/segment.c @ 0:92745d501b9a
initial import from kinput2-v3.1
author | Yoshiki Yazawa <yaz@honeyplanet.jp> |
---|---|
date | Mon, 08 Mar 2010 04:44:30 +0900 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:92745d501b9a |
---|---|
1 /* | |
2 * Copyright 1999 Justsystem Corporation, Japan. | |
3 * | |
4 * Permission to use, copy, modify, and distribute this software and its | |
5 * documentation for any purpose and without fee is hereby granted, | |
6 * provided that the above copyright notice appear in all copies and that | |
7 * both that copyright notice and this permission notice appear in | |
8 * supporting documentation, and that the name of Justsystem Corporation | |
9 * not be used in advertising or publicity pertaining to distribution | |
10 * of the software without specific, written prior permission. Justsystem | |
11 * Corporation makes no representations about the suitability of this | |
12 * software for any purpose. It is provided "as is" without express | |
13 * or implied warranty. | |
14 * | |
15 * Author: Atsushi Irisawa | |
16 */ | |
17 | |
18 #ifndef lint | |
19 static char rcsid[] = "$Id: segment.c,v 1.3 1999/08/24 09:05:27 ishisone Exp $" ; | |
20 #endif /* !lint */ | |
21 | |
22 #include <ICtypes.h> | |
23 #include <Xatoklib.h> | |
24 /* Page */ | |
25 /* | |
26 * [$B4X?tL>(B] | |
27 * XatokGetModeStr( ) | |
28 * [$BI=Bj(B] | |
29 * $B%b!<%IJ8;zNs$N<hF@(B | |
30 * [$B8F=P7A<0(B] | |
31 * WCHAR *XatokGetModeStr( _XatokRecPtr abuf, int *length ) | |
32 * [$B0z?t(B] | |
33 * $B7?(B : $BL>(B $B>N(B : I O : $B@b(B $BL@(B | |
34 * _XatokRecPtr : abuf : i/o : kinput2$BMQJQ49%P%C%U%!(B | |
35 * int : *length : o : $BJ8;zNs$ND9$5(B | |
36 * | |
37 * [$BJV$jCM(B] | |
38 * $B%b!<%IJ8;zNs3JG<NN0h$N%"%I%l%9(B | |
39 * [$B;HMQ4X?t(B] | |
40 * $B$J$7(B | |
41 * [$B5!G=(B] | |
42 * $B%b!<%II=<(MQ$NJ8;zNs$*$h$S$=$ND9$5$r<hF@$9$k!#(B | |
43 */ | |
44 WCHAR *XatokGetModeStr(abuf, length) | |
45 _XatokRecPtr abuf; | |
46 int *length; | |
47 { | |
48 int i, n ; | |
49 | |
50 *length = ( int )abuf->mode.length ; | |
51 n = *length ; | |
52 | |
53 #ifdef ATOK_DEBUG | |
54 printf( "GET \245\342\241\274\245\311 : "/*=GET $B%b!<%I(B : =*/ ) ; | |
55 for ( i = 0 ; i < n ; i++ ) { | |
56 printf( "0x%x ", abuf->mode.name[i] ) ; | |
57 } | |
58 printf( "\n" ) ; | |
59 #endif /* ATOK_DEBUG */ | |
60 | |
61 return abuf->mode.name ; | |
62 } | |
63 | |
64 /* Page */ | |
65 /* | |
66 * [$B4X?tL>(B] | |
67 * XatokGetSegmentPosition( ) | |
68 * [$BI=Bj(B] | |
69 * $B%+%l%s%H%;%0%a%s%H$N<hF@(B | |
70 * [$B8F=P7A<0(B] | |
71 * int wordStartFunc( _XatokRecPtr acomm ) | |
72 * | |
73 * [$B0z?t(B] | |
74 * $B7?(B : $BL>(B $B>N(B : I O : $B@b(B $BL@(B | |
75 * _XatokRecPtr : acomm : i/o : kinput2$BMQJQ49%P%C%U%!(B | |
76 * | |
77 * [$BJV$jCM(B] | |
78 * 0 : | |
79 * 1 : | |
80 * | |
81 * [$B;HMQ4X?t(B] | |
82 * $B$J$7(B | |
83 * [$B5!G=(B] | |
84 * $B8=:_$N%+%l%s%H%;%0%a%s%H$r<hF@$9$k!#(B | |
85 * $B8=:_4IM}$7$F$$$k(B $B%+%l%s%H%]%7%7%g%s$,(B | |
86 * $B%;%0%a%s%H?t$h$j>.$5$1$l$P$=$N%;%0%a%s%H$,!"(B | |
87 * $B8F$P$l$?;~$N%;%0%a%s%H$H$J$k!#(B | |
88 * $B%;%0%a%s%H$,8:>/$7$F(B($BJ8@a$r1d$P$7$?>l9g$J$I(B) | |
89 * $B8=:_$N%]%8%7%g%s$,%;%0%a%s%H?t$h$jBg$-$1$l$P!"(B | |
90 * $B:G8e$N%;%0%a%s%H$,(B $B%+%l%s%H%]%8%7%g%s$H$J$k!#(B | |
91 */ | |
92 int XatokGetSegmentPosition(abuf, nsegp, ncharp) | |
93 _XatokRecPtr abuf; | |
94 int *nsegp; | |
95 int *ncharp; | |
96 { | |
97 int ret = 0 ; | |
98 | |
99 if ( abuf->cur_seg < abuf->nbr_of_seg ) { | |
100 *nsegp = abuf->cur_seg ; | |
101 *ncharp = abuf->segments[abuf->cur_seg].offset ; | |
102 } | |
103 else if ( abuf->cur_seg > 0 ) { | |
104 *nsegp = abuf->nbr_of_seg - 1 ; | |
105 *ncharp = abuf->segments[abuf->cur_seg].offset ; | |
106 ret = 1 ; | |
107 } | |
108 else { | |
109 *nsegp = 0 ; | |
110 *ncharp = 0 ; | |
111 ret = 1 ; | |
112 } | |
113 | |
114 return ret ; | |
115 } | |
116 | |
117 /* Page */ | |
118 /* | |
119 * [$B4X?tL>(B] | |
120 * XatokGetSegmentNumber( ) | |
121 * [$BI=Bj(B] | |
122 * $B%;%0%a%s%H?t$N<hF@(B | |
123 * [$B8F=P7A<0(B] | |
124 * int XatokGetSegmentNumber( _XatokRecPtr abuf ) | |
125 * | |
126 * [$B0z?t(B] | |
127 * $B7?(B : $BL>(B $B>N(B : I O : $B@b(B $BL@(B | |
128 * _XatokRecPtr : acomm : i/o : kinput2$BMQJQ49%P%C%U%!(B | |
129 * | |
130 * [$BJV$jCM(B] | |
131 * N : $B%;%0%a%s%H?t(B | |
132 * | |
133 * [$B;HMQ4X?t(B] | |
134 * $B$J$7(B | |
135 * [$B5!G=(B] | |
136 * $B8=:_$N%;%0%a%s%H?t$r<hF@$9$k!#(B | |
137 */ | |
138 int XatokGetSegmentNumber(abuf) | |
139 _XatokRecPtr abuf; | |
140 { | |
141 int nbr ; | |
142 | |
143 nbr = abuf->nbr_of_seg ; | |
144 | |
145 return nbr ; | |
146 } | |
147 | |
148 /* Page */ | |
149 /* | |
150 * [$B4X?tL>(B] | |
151 * XatokGetSegmentRec( ) | |
152 * [$BI=Bj(B] | |
153 * $B;XDj%;%0%a%s%H$N%G!<%?<hF@(B | |
154 * [$B8F=P7A<0(B] | |
155 * wchar *XatokGetSegmentRec( _XatokRecPtr *abuf, | |
156 * int n, int *len, int *attr ) | |
157 * | |
158 * [$B0z?t(B] | |
159 * $B7?(B : $BL>(B $B>N(B : I O : $B@b(B $BL@(B | |
160 * _XatokRecPtr : acomm : i : kinput2$BMQJQ49%P%C%U%!(B | |
161 * int : n : i : $B;XDj%;%0%a%s%HHV9f(B | |
162 * int : *len : o : $B;XDj%;%0%a%s%H$NJ8;zNs$ND9$5(B | |
163 * int : *attr : o : $B;XDj%;%0%a%s%H$NB0@-(B | |
164 * | |
165 * [$BJV$jCM(B] | |
166 * $B;XDj%;%0%a%s%H$NJ8;zNs(B | |
167 * | |
168 * [$B;HMQ4X?t(B] | |
169 * $B$J$7(B | |
170 * [$B5!G=(B] | |
171 * $B;XDj$5$l$?%;%0%a%s%H$NJ8;zNs$*$h$S$=$NJ8;zNs$ND9$5!"(B | |
172 * $BI=<(B0@-$r<hF@$9$k!#(B | |
173 */ | |
174 wchar *XatokGetSegmentRec(abuf, n, len, attr) | |
175 _XatokRecPtr abuf; | |
176 int n; | |
177 int *len; | |
178 int *attr; | |
179 { | |
180 wchar *data ; | |
181 | |
182 if ( abuf->cur_seg == n ) { | |
183 *attr = ICAttrConverted | ICAttrCurrentSegment ; | |
184 } | |
185 else if ( n < abuf->cur_seg ) { | |
186 *attr = ICAttrConverted ; | |
187 } | |
188 else { | |
189 *attr = ICAttrConverted ; | |
190 } | |
191 | |
192 *len = abuf->segments[n].length ; | |
193 data = abuf->segments[n].string ; | |
194 | |
195 return data ; | |
196 } | |
197 /* Page */ | |
198 /* | |
199 * [$B4X?tL>(B] | |
200 * XatokGetConvertedLength( ) | |
201 * [$BI=Bj(B] | |
202 * $BJQ497k2LJ8;zNs$ND9$5<hF@(B | |
203 * [$B8F=P7A<0(B] | |
204 * int XatokGetConvertedLength( _XatokRecPtr abuf ) | |
205 * | |
206 * [$B0z?t(B] | |
207 * $B7?(B : $BL>(B $B>N(B : I O : $B@b(B $BL@(B | |
208 * _XatokRecPtr : abuf : i : kinput2$BMQJQ49%P%C%U%!(B | |
209 * | |
210 * [$BJV$jCM(B] | |
211 * N : $BJ8;zNs$ND9$5(B | |
212 * | |
213 * [$B;HMQ4X?t(B] | |
214 * $B$J$7(B | |
215 * [$B5!G=(B] | |
216 * $BJQ497k2LJ8;zNs$ND9$5$r<hF@$9$k!#(B | |
217 * $BJQ497k2LJ8;zNs$ND9$5$H$O!"%;%0%a%s%H$KJ]B8$5$l$F$$$k(B | |
218 * $BJ8;zNs$ND9$5$N9g7W$G$"$k!#(B | |
219 */ | |
220 int XatokGetConvertedLength(abuf) | |
221 _XatokRecPtr abuf; | |
222 { | |
223 | |
224 int n = 0 ; | |
225 int i ; | |
226 | |
227 for( i = 0 ; i < abuf->nbr_of_seg ; i++ ) { | |
228 n += abuf->segments[i].length ; | |
229 } | |
230 return n ; | |
231 } | |
232 | |
233 /* Page */ | |
234 /* | |
235 * [$B4X?tL>(B] | |
236 * XatokGetConvertedString( ) | |
237 * [$BI=Bj(B] | |
238 * $BJQ497k2LJ8;zNs$N<hF@(B | |
239 * [$B8F=P7A<0(B] | |
240 * int XatokGetConvertedString( _XatokRecPtr abuf, wchar *wstr ) | |
241 * | |
242 * [$B0z?t(B] | |
243 * $B7?(B : $BL>(B $B>N(B : I O : $B@b(B $BL@(B | |
244 * _XatokRecPtr : abuf : i : kinput2$BMQJQ49%P%C%U%!(B | |
245 * wchar : *wstr : o : $B<hF@$7$?J8;zNs3JG<NN0h(B | |
246 * | |
247 * [$BJV$jCM(B] | |
248 * N : $BJ8;zNs$ND9$5(B | |
249 * | |
250 * [$B;HMQ4X?t(B] | |
251 * $B$J$7(B | |
252 * [$B5!G=(B] | |
253 * $BJQ497k2LJ8;zNs$ND9$5$r<hF@$9$k!#(B | |
254 */ | |
255 int XatokGetConvertedString(abuf, wstr) | |
256 _XatokRecPtr abuf; | |
257 wchar *wstr; | |
258 { | |
259 register wchar *w1, *w2 ; | |
260 int i, n = 0 ; | |
261 | |
262 w1 = wstr ; | |
263 | |
264 for( i = 0 ; i < abuf->nbr_of_seg ; i++ ) { | |
265 w2 = abuf->segments[i].string ; | |
266 while( *w2 ) { | |
267 *w1 = *w2 ; | |
268 w1++ ; | |
269 w2++ ; | |
270 n++ ; | |
271 } | |
272 } | |
273 *w1 = 0 ; | |
274 return n ; | |
275 } | |
276 /* Page */ | |
277 /* | |
278 * [$B4X?tL>(B] | |
279 * XatokShiftRight( ) | |
280 * [$BI=Bj(B] | |
281 * $B%;%0%a%s%H%G!<%?$N1&(BROTATE | |
282 * [$B8F=P7A<0(B] | |
283 * int XatokShiftRight( _XatokRecPtr abuf ) | |
284 * | |
285 * [$B0z?t(B] | |
286 * $B7?(B : $BL>(B $B>N(B : I O : $B@b(B $BL@(B | |
287 * _XatokRecPtr : abuf : i/o : kinput2$BMQJQ49%P%C%U%!(B | |
288 * | |
289 * [$BJV$jCM(B] | |
290 * 1 : $B>o$K#1(B | |
291 * | |
292 * [$B;HMQ4X?t(B] | |
293 * $B$J$7(B | |
294 * [$B5!G=(B] | |
295 * $B%;%0%a%s%H%G!<%?$r1&$K(B ROTATE$B$9$k!#(B | |
296 * $B1&$N(BROTATE$B$H$O(B $B%;%0%a%s%H$NG[Ns$N%$%s%G%C%/%9$,>.$5$$%G!<%?$r(B | |
297 * $B#1$DBg$-$$=j$K0\$9$H$$$&;v$G$"$k!#(B | |
298 * $B#1HVBg$-$$=j$O!"@hF,$K0\$k!#(B | |
299 */ | |
300 int XatokShiftRight(abuf) | |
301 _XatokRecPtr abuf; | |
302 { | |
303 _XatokSegment tmpseg ; | |
304 _XatokSegment *sp ; | |
305 int offset ; | |
306 int nseg ; | |
307 int i ; | |
308 | |
309 nseg = abuf->nbr_of_seg ; | |
310 offset = abuf->offset ; | |
311 sp = abuf->segments ; | |
312 | |
313 tmpseg.string = sp[nseg].string ; | |
314 tmpseg.length = sp[nseg].length ; | |
315 tmpseg.size = sp[nseg].size ; | |
316 tmpseg.offset = sp[nseg].offset ; | |
317 | |
318 sp = &abuf->segments[nseg] ; | |
319 for( i = nseg ; i > offset ; i-- ) { | |
320 sp->string = ( sp - 1 )->string ; | |
321 sp->length = ( sp - 1 )->length ; | |
322 sp->size = ( sp - 1 )->size ; | |
323 sp->offset = ( sp - 1 )->offset ; | |
324 sp-- ; | |
325 } | |
326 sp = &abuf->segments[offset] ; | |
327 sp->string = tmpseg.string ; | |
328 sp->length = tmpseg.length ; | |
329 sp->size = tmpseg.size ; | |
330 sp->offset = tmpseg.offset ; | |
331 | |
332 abuf->offset++ ; | |
333 abuf->nbr_of_seg++ ; | |
334 abuf->cur_seg++ ; | |
335 | |
336 return 1 ; | |
337 } | |
338 | |
339 | |
340 /* Page */ | |
341 /* | |
342 * [$B4X?tL>(B] | |
343 * XatokShiftLeft( ) | |
344 * [$BI=Bj(B] | |
345 * $B%;%0%a%s%H%G!<%?$N:8(BROTATE | |
346 * [$B8F=P7A<0(B] | |
347 * int XatokShiftLeft( _XatokRecPtr abuf ) | |
348 * | |
349 * [$B0z?t(B] | |
350 * $B7?(B : $BL>(B $B>N(B : I O : $B@b(B $BL@(B | |
351 * _XatokRecPtr : abuf : i/o : kinput2$BMQJQ49%P%C%U%!(B | |
352 * | |
353 * [$BJV$jCM(B] | |
354 * 1 : $B>o$K#1(B | |
355 * | |
356 * [$B;HMQ4X?t(B] | |
357 * $B$J$7(B | |
358 * [$B5!G=(B] | |
359 * $B%;%0%a%s%H%G!<%?$r:8$K(B ROTATE$B$9$k!#(B | |
360 * $B:8$N(BROTATE$B$H$O(B $B%;%0%a%s%H$NG[Ns$N%$%s%G%C%/%9$,Bg$-$$%G!<%?$r(B | |
361 * $B#1$D>.$5$$=j$K0\$9$H$$$&;v$G$"$k!#(B | |
362 * $B#1HV>.$5$$=j$O!"(BOFFSET$B$K0\$k!#(B | |
363 */ | |
364 int XatokShiftLeft(abuf) | |
365 _XatokRecPtr abuf; | |
366 { | |
367 _XatokSegment tmpseg ; | |
368 _XatokSegment *sp ; | |
369 int offset ; | |
370 int i ; | |
371 | |
372 offset = abuf->offset ; | |
373 | |
374 sp = abuf->segments ; | |
375 tmpseg.string = sp[0].string ; | |
376 tmpseg.length = sp[0].length ; | |
377 tmpseg.size = sp[0].size ; | |
378 tmpseg.offset = sp[0].offset ; | |
379 | |
380 for( i = 0 ; i < offset - 1 ; i++ ) { | |
381 sp->string = ( sp + 1 )->string ; | |
382 sp->length = ( sp + 1 )->length ; | |
383 sp->size = ( sp + 1 )->size ; | |
384 sp->offset = ( sp + 1 )->offset ; | |
385 sp++ ; | |
386 } | |
387 abuf->segments[offset-1].string = tmpseg.string ; | |
388 abuf->segments[offset-1].length = tmpseg.length ; | |
389 abuf->segments[offset-1].size = tmpseg.size ; | |
390 abuf->segments[offset-1].offset = tmpseg.offset ; | |
391 | |
392 return 1 ; | |
393 } | |
394 /* Page */ | |
395 /* | |
396 * [$B4X?tL>(B] | |
397 * XatokShiftLeftAll( ) | |
398 * [$BI=Bj(B] | |
399 * $BA4%;%0%a%s%H%G!<%?$N:8(BROTATE | |
400 * [$B8F=P7A<0(B] | |
401 * int XatokShiftLeftAll( _XatokRecPtr abuf ) | |
402 * | |
403 * [$B0z?t(B] | |
404 * $B7?(B : $BL>(B $B>N(B : I O : $B@b(B $BL@(B | |
405 * _XatokRecPtr : abuf : i/o : kinput2$BMQJQ49%P%C%U%!(B | |
406 * | |
407 * [$BJV$jCM(B] | |
408 * 1 : $B>o$K#1(B | |
409 * | |
410 * [$B;HMQ4X?t(B] | |
411 * $B$J$7(B | |
412 * [$B5!G=(B] | |
413 * $B%;%0%a%s%H%G!<%?$r:8$K(B ROTATE$B$9$k!#(B | |
414 * $B:8$N(BROTATE$B$H$O(B $B%;%0%a%s%H$NG[Ns$N%$%s%G%C%/%9$,Bg$-$$%G!<%?$r(B | |
415 * $B#1$D>.$5$$=j$K0\$9$H$$$&;v$G$"$k!#(B | |
416 */ | |
417 int XatokShiftLeftAll(abuf) | |
418 _XatokRecPtr abuf; | |
419 { | |
420 _XatokSegment tmpseg ; | |
421 _XatokSegment *sp ; | |
422 int offset ; | |
423 int nseg ; | |
424 int i ; | |
425 | |
426 nseg = abuf->nbr_of_seg ; | |
427 sp = abuf->segments ; | |
428 tmpseg.string = sp->string ; | |
429 tmpseg.length = sp->length ; | |
430 tmpseg.size = sp->size ; | |
431 tmpseg.offset = sp->offset ; | |
432 for( i = 0 ; i < nseg - 1 ; i++ ) { | |
433 sp->string = ( sp + 1 )->string ; | |
434 sp->length = ( sp + 1 )->length ; | |
435 sp->size = ( sp + 1 )->size ; | |
436 sp->offset = ( sp + 1 )->offset ; | |
437 sp++ ; | |
438 } | |
439 sp = &abuf->segments[nseg-1] ; | |
440 sp->string = tmpseg.string ; | |
441 sp->length = tmpseg.length ; | |
442 sp->size = tmpseg.size ; | |
443 sp->offset = tmpseg.offset ; | |
444 | |
445 abuf->offset-- ; | |
446 abuf->nbr_of_seg-- ; | |
447 abuf->cur_seg-- ; | |
448 } | |
449 | |
450 /* End of segment.c */ |