1 typedef unsigned char byte;
2 typedef unsigned int uint;
3 typedef unsigned long ulong;
4 typedef ulong gs_char;
5 typedef struct gs_show_enum_s gs_show_enum;
6 typedef struct gs_font_s gs_font;
7 typedef struct gx_font_stack_item_s {
8   gs_font *font;
9 } gx_font_stack_item;
10 typedef struct gx_font_stack_s {
11   gx_font_stack_item items[1 + 5 ];
12 } gx_font_stack;
13 struct gs_show_enum_s {
14   gx_font_stack fstack;
15 };
16 typedef enum {
17   ft_composite = 0,
18 } font_type;
19 struct gs_font_s {
20   font_type FontType;
21 };
22 typedef enum {
23   fmap_escape = 3,
24   fmap_shift = 8
25   } fmap_type;
26 typedef struct gs_type0_data_s {
27   fmap_type FMapType;
28 } gs_type0_data;
gs_type0_next_char(register gs_show_enum * penum)29 gs_type0_next_char(register gs_show_enum *penum)
30 {
31   const byte *p;
32   int fdepth;
33   gs_font *pfont;
34   gs_type0_data *pdata;
35   uint fidx;
36   gs_char chr;
37   for (; pfont->FontType == ft_composite; )
38     {
39       fmap_type fmt;
40       switch ( fmt )
41 	{
42 	  do {} while (0);
43 	rdown:
44 	  continue;
45 	case fmap_shift:
46 	  p++;
47 	  do {} while (0);
48 	  goto rdown;
49 	}
50       break;
51     }
52  up:
53   while ( fdepth > 0 )
54     {
55       switch ( pdata->FMapType )
56 	{
57 	default:
58 	  continue;
59 	case fmap_escape:
60 	  fidx = *++p;
61 	  do {} while (0);
62 	  if ( fidx == chr && fdepth > 1 )
63 	    goto up;
64 	down:
65 	  fdepth--;
66 	  do {} while (0);
67 	}
68       break;
69     }
70   while ( (pfont = penum->fstack.items[fdepth].font)->FontType == ft_composite )
71     ;
72 }
73