Lines Matching refs:data
60 #define IsLegalC0(data, c) (((c) == HT) || ((c) == NL) || \
61 (((data)->version > XctVersion) && \
62 ((data)->flags & XctAcceptC0Extensions)))
64 #define IsLegalC1(priv, c) (((data)->version > XctVersion) && \
65 ((data)->flags & XctAcceptC1Extensions))
87 static int HandleExtended(XctData data, int);
90 static int HandleMultiGR(XctData data, int);
97 ComputeGLGR(register XctData data)
100 if ((data->GL_set_size == 94) && (data->GL_char_size == 1) &&
101 (data->GL[0] == '\102') &&
102 (data->GR_set_size == 96) && (data->GR_char_size == 1))
103 data->GLGR_encoding = data->GR_encoding;
104 else if ((data->GL_set_size == 94) && (data->GL_char_size == 1) &&
105 (data->GL[0] == '\112') &&
106 (data->GR_set_size == 94) && (data->GR_char_size == 1))
107 data->GLGR_encoding = data->GR_encoding;
109 data->GLGR_encoding = (char *)NULL;
113 HandleGL(register XctData data, int c)
117 data->GL = "\102";
118 data->GL_encoding = "ISO8859-1";
121 data->GL = "\112";
122 data->GL_encoding = "JISX0201.1976-0";
127 data->GL_set_size = 94;
128 data->GL_char_size = 1;
129 ComputeGLGR(data);
134 HandleMultiGL(register XctData data, int c)
138 data->GL = "\101";
139 data->GL_encoding = "GB2312.1980-0";
142 data->GL = "\102";
143 data->GL_encoding = "JISX0208.1983-0";
146 data->GL = "\103";
147 data->GL_encoding = "KSC5601.1987-0";
152 data->GL_set_size = 94;
153 data->GL_char_size = 2;
156 data->GL_char_size = 2;
158 data->GL_char_size = 3;
160 data->GL_char_size = 4;
162 data->GLGR_encoding = (char *)NULL;
167 Handle94GR(register XctData data, int c)
171 data->GR = "\111";
172 data->GR_encoding = "JISX0201.1976-0";
177 data->priv->flags &= ~ToGL;
178 data->GR_set_size = 94;
179 data->GR_char_size = 1;
180 data->GLGR_encoding = (char *)NULL;
185 Handle96GR(register XctData data, int c)
189 data->GR = "\101";
190 data->GR_encoding = "ISO8859-1";
193 data->GR = "\102";
194 data->GR_encoding = "ISO8859-2";
197 data->GR = "\103";
198 data->GR_encoding = "ISO8859-3";
201 data->GR = "\104";
202 data->GR_encoding = "ISO8859-4";
205 data->GR = "\106";
206 data->GR_encoding = "ISO8859-7";
209 data->GR = "\107";
210 data->GR_encoding = "ISO8859-6";
213 data->GR = "\110";
214 data->GR_encoding = "ISO8859-8";
217 data->GR = "\114";
218 data->GR_encoding = "ISO8859-5";
221 data->GR = "\115";
222 data->GR_encoding = "ISO8859-9";
227 data->priv->flags &= ~ToGL;
228 data->GR_set_size = 96;
229 data->GR_char_size = 1;
230 ComputeGLGR(data);
235 HandleMultiGR(register XctData data, int c)
239 data->GR = "\101";
240 if (data->flags & XctShiftMultiGRToGL)
241 data->GR_encoding = "GB2312.1980-0";
243 data->GR_encoding = "GB2312.1980-1";
246 data->GR = "\102";
247 if (data->flags & XctShiftMultiGRToGL)
248 data->GR_encoding = "JISX0208.1983-0";
250 data->GR_encoding = "JISX0208.1983-1";
253 data->GR = "\103";
254 if (data->flags & XctShiftMultiGRToGL)
255 data->GR_encoding = "KSC5601.1987-0";
257 data->GR_encoding = "KSC5601.1987-1";
262 if (data->flags & XctShiftMultiGRToGL)
263 data->priv->flags |= ToGL;
265 data->priv->flags &= ~ToGL;
266 data->GR_set_size = 94;
267 data->GR_char_size = 2;
270 data->GR_char_size = 2;
272 data->GR_char_size = 3;
274 data->GR_char_size = 4;
276 data->GLGR_encoding = (char *)NULL;
281 HandleExtended(register XctData data, int c)
283 register XctPriv priv = data->priv;
284 XctString enc = data->item + 6;
292 data->item = ptr + 1;
293 data->item_length = priv->ptr - data->item;
322 data->encoding = priv->encodings[i];
323 data->char_size = c - 0x30;
328 ShiftGRToGL(register XctData data, int hasCdata)
330 register XctPriv priv = data->priv;
333 if (data->item_length > priv->buf_count) {
334 priv->buf_count = data->item_length;
340 memcpy(priv->itembuf, data->item, data->item_length);
341 data->item = priv->itembuf;
343 for (i = data->item_length; --i >= 0; ) {
344 if (IsGR(data->item[i]))
345 data->item[i] &= 0x7f;
348 for (i = data->item_length; --i >= 0; )
349 data->item[i] &= 0x7f;
357 register XctData data;
360 data = malloc(sizeof(struct _XctRec) + sizeof(struct _XctPriv));
361 if (!data)
362 return data;
363 data->priv = priv = (XctPriv)(data + 1);
364 data->total_string = (XctString)string;
365 data->total_length = length;
366 data->flags = flags;
373 XctReset(data);
374 return data;
379 XctReset(register XctData data)
381 register XctPriv priv = data->priv;
383 priv->ptr = data->total_string;
384 priv->ptrend = data->total_string + data->total_length;
385 data->item = (XctString)NULL;
386 data->item_length = 0;
387 data->encoding = (char *)NULL;
388 data->char_size = 1;
389 data->horizontal = XctUnspecified;
390 data->horz_depth = 0;
392 data->GL_set_size = data->GR_set_size = 0; /* XXX */
393 (void)HandleGL(data, (unsigned char)0x42);
394 (void)Handle96GR(data, (unsigned char)0x41);
395 data->version = 1;
396 data->can_ignore_exts = 0;
398 if ((data->total_length >= 4) &&
402 data->version = priv->ptr[2] - 0x1f;
404 data->can_ignore_exts = 1;
414 XctNextItem(register XctData data)
416 register XctPriv priv = data->priv;
420 #define NEXT data->item_length++; priv->ptr++
423 data->item = priv->ptr;
424 data->item_length = 0;
437 switch (data->item[1]) {
439 if (data->item_length > 3) {
440 if (data->item[2] == 0x28) {
441 if (HandleMultiGL(data, c))
443 } else if (data->item[2] == 0x29) {
444 if (HandleMultiGR(data, c))
450 if ((data->item_length == 4) && (data->item[2] == 0x2f) &&
461 data->item_length += len;
464 if (!HandleExtended(data, c) ||
465 ((data->horz_depth == 0) &&
474 if (HandleGL(data, c))
478 if (Handle94GR(data, c))
482 if (Handle96GR(data, c))
501 if ((data->item_length == 3) &&
502 ((data->item[1] == 0x31) || (data->item[1] == 0x32))) {
503 data->horz_depth++;
504 if (priv->dirsize < data->horz_depth) {
516 priv->dirstack[data->horz_depth - 1] = data->horizontal;
517 if (data->item[1] == 0x31)
518 data->horizontal = XctLeftToRight;
520 data->horizontal = XctRightToLeft;
525 if (data->flags & XctHideDirection)
528 } else if (data->item_length == 2) {
529 if (!data->horz_depth)
531 data->horz_depth--;
532 data->horizontal = priv->dirstack[data->horz_depth];
533 if (data->flags & XctHideDirection)
538 } else if (data->flags & XctSingleSetSegments) {
541 data->encoding = (char *)NULL;
542 data->char_size = 1;
543 if (IsLegalC0(data, c))
546 data->encoding = data->GL_encoding;
547 data->char_size = data->GL_char_size;
551 if (((data->char_size > 1) &&
552 (data->item_length % data->char_size)) ||
553 ((data->horz_depth == 0) &&
559 data->encoding = (char *)NULL;
560 data->char_size = 1;
561 if (IsLegalC1(data, c))
564 data->encoding = data->GR_encoding;
565 data->char_size = data->GR_char_size;
569 if (((data->char_size > 1) &&
570 (data->item_length % data->char_size)) ||
571 ((data->horz_depth == 0) &&
577 ShiftGRToGL(data, 0);
586 if (IsC0(c) ? !IsLegalC0(data, c) : !IsLegalC1(data, c))
591 len = data->item_length;
593 if ((data->flags & XctShiftMultiGRToGL) &&
601 if ((data->GL_char_size > 1) &&
602 ((data->item_length - len) % data->GL_char_size))
605 if ((data->flags & XctShiftMultiGRToGL) &&
613 if ((data->GR_char_size > 1) &&
614 ((data->item_length - len) % data->GR_char_size))
622 if (data->item_length) {
625 if ((data->horz_depth == 0) &&
628 if ((data->flags & XctShiftMultiGRToGL) && (bits & HasGR))
629 ShiftGRToGL(data, bits & HasC);
632 (data->GLGR_encoding && !(bits & HasC))) {
633 data->encoding = data->GLGR_encoding;
634 if (data->GL_char_size == data->GR_char_size)
635 data->char_size = data->GL_char_size;
637 data->char_size = 0;
639 data->encoding = data->GL_encoding;
640 data->char_size = data->GL_char_size;
642 data->encoding = data->GR_encoding;
643 data->char_size = data->GR_char_size;
645 data->encoding = (char *)NULL;
646 data->char_size = 1;
648 (data->GL_char_size != data->char_size))
649 data->char_size = 0;
651 (data->GR_char_size != data->char_size))
652 data->char_size = 0;
658 if (data->version <= XctVersion)
660 if (data->flags & XctProvideExtensions)
662 if (!data->can_ignore_exts)
668 /* Free all data associated with an XctDataStructure. */
670 XctFree(register XctData data)
673 register XctPriv priv = data->priv;
677 if (data->flags & XctFreeString)
678 free(data->total_string);
685 free(data);