YAZ  5.23.1
iso5426.c
Go to the documentation of this file.
1 
6 #include <string.h>
7 #if HAVE_CONFIG_H
8 #include <config.h>
9 #endif
10 
12  char from[6];
13  unsigned combining : 1;
14  unsigned to : 24;
15  };
17  int ptr : 15;
18  unsigned combining : 1;
19  unsigned to : 24;
20  };
21 
22  struct yaz_iconv_trie {
25  };
26 
27 
28  static unsigned long lookup(struct yaz_iconv_trie **ptrs, int ptr, unsigned char *inp,
29  size_t inbytesleft, size_t *no_read, int *combining, unsigned mask, unsigned int boffset)
30  {
31  struct yaz_iconv_trie *t = ptrs[ptr-1];
32  if (inbytesleft < 1)
33  return 0;
34  if (t->dir)
35  {
36  size_t ch = (inp[0] & mask) + boffset;
37  unsigned long code;
38  if (t->dir[ch].ptr)
39  {
40  code = lookup(ptrs, t->dir[ch].ptr, inp+1, inbytesleft-1, no_read, combining, mask, boffset);
41  if (code)
42  {
43  (*no_read)++;
44  return code;
45  }
46  }
47  if (t->dir[ch].to)
48  {
49  code = t->dir[ch].to;
50  *combining = t->dir[ch].combining;
51  *no_read = 1;
52  return code;
53  }
54  }
55  else
56  {
57  struct yaz_iconv_trie_flat *flat = t->flat;
58  while (flat->to)
59  {
60  size_t len = strlen(flat->from);
61  if (len <= inbytesleft)
62  {
63  size_t i;
64  for (i = 0; i < len; i++)
65  {
66  if (((unsigned char *) flat->from)[i] != (inp[i] & mask) + boffset)
67  break;
68  }
69  if (i == len)
70  {
71  *no_read = len;
72  *combining = flat->combining;
73  return flat->to;
74  }
75  }
76  flat++;
77  }
78  }
79  return 0;
80  }
81 
82 /* TRIE: size 98 */
83 /* PAGE 0 */
85  {0, 0, 0},
86  {0, 0, 0},
87  {0, 0, 0},
88  {0, 0, 0},
89  {0, 0, 0},
90  {0, 0, 0},
91  {0, 0, 0},
92  {0, 0, 0},
93  {0, 0, 0},
94  {0, 0, 0},
95  {0, 0, 0},
96  {0, 0, 0},
97  {0, 0, 0},
98  {0, 0, 0},
99  {0, 0, 0},
100  {0, 0, 0},
101  {0, 0, 0},
102  {0, 0, 0},
103  {0, 0, 0},
104  {0, 0, 0},
105  {0, 0, 0},
106  {0, 0, 0},
107  {0, 0, 0},
108  {0, 0, 0},
109  {0, 0, 0},
110  {0, 0, 0},
111  {0, 0, 0},
112  {0, 0, 0},
113  {0, 0, 0},
114  {0, 0, 0x001D} /* RECORD TERMINATOR / GROUP SEPARATOR */,
115  {0, 0, 0x001E} /* FIELD TERMINATOR / RECORD SEPARATOR */,
116  {0, 0, 0x001F} /* SUBFIELD DELIMITER / UNIT SEPARATOR */,
117  {0, 0, 0x0020} /* SPACE, BLANK / SPACE */,
118  {0, 0, 0x0021} /* EXCLAMATION MARK */,
119  {0, 0, 0x0022} /* QUOTATION MARK */,
120  {0, 0, 0x0023} /* NUMBER SIGN */,
121  {0, 0, 0x0024} /* DOLLAR SIGN */,
122  {0, 0, 0x0025} /* PERCENT SIGN */,
123  {0, 0, 0x0026} /* AMPERSAND */,
124  {0, 0, 0x0027} /* APOSTROPHE */,
125  {0, 0, 0x0028} /* OPENING PARENTHESIS / LEFT PARENTHESIS */,
126  {0, 0, 0x0029} /* CLOSING PARENTHESIS / CLOSING PARENTHESIS */,
127  {0, 0, 0x002A} /* ASTERISK */,
128  {0, 0, 0x002B} /* PLUS SIGN */,
129  {0, 0, 0x002C} /* COMMA */,
130  {0, 0, 0x002D} /* HYPHEN-MINUS */,
131  {0, 0, 0x002E} /* PERIOD, DECIMAL POINT / FULL STOP */,
132  {0, 0, 0x002F} /* SLASH / SOLIDUS */,
133  {0, 0, 0x0030} /* DIGIT ZERO */,
134  {0, 0, 0x0031} /* DIGIT ONE */,
135  {0, 0, 0x0032} /* DIGIT TWO */,
136  {0, 0, 0x0033} /* DIGIT THREE */,
137  {0, 0, 0x0034} /* DIGIT FOUR */,
138  {0, 0, 0x0035} /* DIGIT FIVE */,
139  {0, 0, 0x0036} /* DIGIT SIX */,
140  {0, 0, 0x0037} /* DIGIT SEVEN */,
141  {0, 0, 0x0038} /* DIGIT EIGHT */,
142  {0, 0, 0x0039} /* DIGIT NINE */,
143  {0, 0, 0x003A} /* COLON */,
144  {0, 0, 0x003B} /* SEMICOLON */,
145  {0, 0, 0x003C} /* LESS-THAN SIGN */,
146  {0, 0, 0x003D} /* EQUALS SIGN */,
147  {0, 0, 0x003E} /* GREATER-THAN SIGN */,
148  {0, 0, 0x003F} /* QUESTION MARK */,
149  {0, 0, 0x0040} /* COMMERCIAL AT */,
150  {0, 0, 0x0041} /* LATIN CAPITAL LETTER A */,
151  {0, 0, 0x0042} /* LATIN CAPITAL LETTER B */,
152  {0, 0, 0x0043} /* LATIN CAPITAL LETTER C */,
153  {0, 0, 0x0044} /* LATIN CAPITAL LETTER D */,
154  {0, 0, 0x0045} /* LATIN CAPITAL LETTER E */,
155  {0, 0, 0x0046} /* LATIN CAPITAL LETTER F */,
156  {0, 0, 0x0047} /* LATIN CAPITAL LETTER G */,
157  {0, 0, 0x0048} /* LATIN CAPITAL LETTER H */,
158  {0, 0, 0x0049} /* LATIN CAPITAL LETTER I */,
159  {0, 0, 0x004A} /* LATIN CAPITAL LETTER J */,
160  {0, 0, 0x004B} /* LATIN CAPITAL LETTER K */,
161  {0, 0, 0x004C} /* LATIN CAPITAL LETTER L */,
162  {0, 0, 0x004D} /* LATIN CAPITAL LETTER M */,
163  {0, 0, 0x004E} /* LATIN CAPITAL LETTER N */,
164  {0, 0, 0x004F} /* LATIN CAPITAL LETTER O */,
165  {0, 0, 0x0050} /* LATIN CAPITAL LETTER P */,
166  {0, 0, 0x0051} /* LATIN CAPITAL LETTER Q */,
167  {0, 0, 0x0052} /* LATIN CAPITAL LETTER R */,
168  {0, 0, 0x0053} /* LATIN CAPITAL LETTER S */,
169  {0, 0, 0x0054} /* LATIN CAPITAL LETTER T */,
170  {0, 0, 0x0055} /* LATIN CAPITAL LETTER U */,
171  {0, 0, 0x0056} /* LATIN CAPITAL LETTER V */,
172  {0, 0, 0x0057} /* LATIN CAPITAL LETTER W */,
173  {0, 0, 0x0058} /* LATIN CAPITAL LETTER X */,
174  {0, 0, 0x0059} /* LATIN CAPITAL LETTER Y */,
175  {0, 0, 0x005A} /* LATIN CAPITAL LETTER Z */,
176  {0, 0, 0x005B} /* OPENING SQUARE BRACKET / LEFT SQUARE BRACKET */,
177  {0, 0, 0x005C} /* REVERSE SLASH / REVERSE SOLIDUS */,
178  {0, 0, 0x005D} /* CLOSING SQUARE BRACKET / RIGHT SQUARE BRACKET */,
179  {0, 0, 0x005E} /* SPACING CIRCUMFLEX / CIRCUMFLEX ACCENT */,
180  {0, 0, 0x005F} /* SPACING UNDERSCORE / LOW LINE */,
181  {0, 0, 0x0060} /* SPACING GRAVE / GRAVE ACCENT */,
182  {0, 0, 0x0061} /* LATIN SMALL LETTER A */,
183  {0, 0, 0x0062} /* LATIN SMALL LETTER B */,
184  {0, 0, 0x0063} /* LATIN SMALL LETTER C */,
185  {0, 0, 0x0064} /* LATIN SMALL LETTER D */,
186  {0, 0, 0x0065} /* LATIN SMALL LETTER E */,
187  {0, 0, 0x0066} /* LATIN SMALL LETTER F */,
188  {0, 0, 0x0067} /* LATIN SMALL LETTER G */,
189  {0, 0, 0x0068} /* LATIN SMALL LETTER H */,
190  {0, 0, 0x0069} /* LATIN SMALL LETTER I */,
191  {0, 0, 0x006A} /* LATIN SMALL LETTER J */,
192  {0, 0, 0x006B} /* LATIN SMALL LETTER K */,
193  {0, 0, 0x006C} /* LATIN SMALL LETTER L */,
194  {0, 0, 0x006D} /* LATIN SMALL LETTER M */,
195  {0, 0, 0x006E} /* LATIN SMALL LETTER N */,
196  {0, 0, 0x006F} /* LATIN SMALL LETTER O */,
197  {0, 0, 0x0070} /* LATIN SMALL LETTER P */,
198  {0, 0, 0x0071} /* LATIN SMALL LETTER Q */,
199  {0, 0, 0x0072} /* LATIN SMALL LETTER R */,
200  {0, 0, 0x0073} /* LATIN SMALL LETTER S */,
201  {0, 0, 0x0074} /* LATIN SMALL LETTER T */,
202  {0, 0, 0x0075} /* LATIN SMALL LETTER U */,
203  {0, 0, 0x0076} /* LATIN SMALL LETTER V */,
204  {0, 0, 0x0077} /* LATIN SMALL LETTER W */,
205  {0, 0, 0x0078} /* LATIN SMALL LETTER X */,
206  {0, 0, 0x0079} /* LATIN SMALL LETTER Y */,
207  {0, 0, 0x007A} /* LATIN SMALL LETTER Z */,
208  {0, 0, 0x007B} /* OPENING CURLY BRACKET / LEFT CURLY BRACKET */,
209  {0, 0, 0x007C} /* VERTICAL BAR (FILL) / VERTICAL LINE */,
210  {0, 0, 0x007D} /* CLOSING CURLY BRACKET / RIGHT CURLY BRACKET */,
211  {0, 0, 0x007E} /* SPACING TILDE / TILDE */,
212  {0, 0, 0},
213  {0, 0, 0},
214  {0, 0, 0},
215  {0, 0, 0},
216  {0, 0, 0},
217  {0, 0, 0},
218  {0, 0, 0},
219  {0, 0, 0},
220  {0, 0, 0},
221  {0, 0, 0},
222  {0, 0, 0},
223  {0, 0, 0},
224  {0, 0, 0},
225  {0, 0, 0},
226  {0, 0, 0},
227  {0, 0, 0},
228  {0, 0, 0},
229  {0, 0, 0},
230  {0, 0, 0},
231  {0, 0, 0},
232  {0, 0, 0},
233  {0, 0, 0},
234  {0, 0, 0},
235  {0, 0, 0},
236  {0, 0, 0},
237  {0, 0, 0},
238  {0, 0, 0},
239  {0, 0, 0},
240  {0, 0, 0},
241  {0, 0, 0},
242  {0, 0, 0},
243  {0, 0, 0},
244  {0, 0, 0},
245  {0, 0, 0},
246  {0, 0, 0},
247  {0, 0, 0},
248  {0, 0, 0},
249  {0, 0, 0},
250  {0, 0, 0},
251  {0, 0, 0},
252  {0, 0, 0},
253  {0, 0, 0},
254  {0, 0, 0},
255  {0, 0, 0},
256  {0, 0, 0},
257  {0, 0, 0},
258  {0, 0, 0},
259  {0, 0, 0},
260  {0, 0, 0},
261  {0, 0, 0},
262  {0, 0, 0},
263  {0, 0, 0},
264  {0, 0, 0},
265  {0, 0, 0},
266  {0, 0, 0},
267  {0, 0, 0},
268  {0, 0, 0},
269  {0, 0, 0},
270  {0, 0, 0},
271  {0, 0, 0},
272  {0, 0, 0},
273  {0, 0, 0},
274  {0, 0, 0},
275  {0, 0, 0},
276  {0, 0, 0},
277  {0, 0, 0},
278  {0, 0, 0},
279  {0, 0, 0},
280  {0, 0, 0},
281  {0, 0, 0},
282  {0, 0, 0},
283  {0, 0, 0},
284  {0, 0, 0},
285  {0, 0, 0},
286  {0, 0, 0},
287  {0, 0, 0},
288  {0, 0, 0},
289  {0, 0, 0},
290  {0, 0, 0},
291  {0, 0, 0},
292  {0, 0, 0},
293  {0, 0, 0},
294  {0, 0, 0},
295  {0, 0, 0},
296  {0, 0, 0},
297  {0, 0, 0},
298  {0, 0, 0},
299  {0, 0, 0},
300  {0, 0, 0},
301  {0, 0, 0},
302  {0, 0, 0},
303  {0, 0, 0},
304  {0, 0, 0},
305  {0, 0, 0},
306  {0, 0, 0},
307  {0, 0, 0},
308  {0, 0, 0},
309  {0, 0, 0},
310  {0, 0, 0},
311  {0, 0, 0},
312  {0, 0, 0},
313  {0, 0, 0},
314  {0, 0, 0},
315  {0, 0, 0},
316  {0, 0, 0},
317  {0, 0, 0},
318  {0, 0, 0},
319  {0, 0, 0},
320  {0, 0, 0},
321  {0, 0, 0},
322  {0, 0, 0},
323  {0, 0, 0},
324  {0, 0, 0},
325  {0, 0, 0},
326  {0, 0, 0},
327  {0, 0, 0},
328  {0, 0, 0},
329  {0, 0, 0},
330  {0, 0, 0},
331  {0, 0, 0},
332  {0, 0, 0},
333  {0, 0, 0},
334  {0, 0, 0},
335  {0, 0, 0},
336  {0, 0, 0},
337  {0, 0, 0},
338  {0, 0, 0},
339  {0, 0, 0},
340  {0, 0, 0}
341 };
343  0, iso5426_42page0_dir
344 };
347 0, };
348 
349 unsigned long yaz_iso5426_42_conv
350  (unsigned char *inp, size_t inbytesleft, size_t *no_read, int *combining, unsigned mask, unsigned int boffset)
351  {
352  unsigned long code;
353 
354  code = lookup(iso5426_42ptrs, 1, inp, inbytesleft, no_read, combining, mask, boffset);
355  if (!code)
356  {
357  *no_read = 1;
358  }
359  return code;
360  }
361 
362 /* TRIE: size 76 */
363 /* PAGE 0 */
365  {0, 0, 0},
366  {0, 0, 0},
367  {0, 0, 0},
368  {0, 0, 0},
369  {0, 0, 0},
370  {0, 0, 0},
371  {0, 0, 0},
372  {0, 0, 0},
373  {0, 0, 0},
374  {0, 0, 0},
375  {0, 0, 0},
376  {0, 0, 0},
377  {0, 0, 0},
378  {0, 0, 0},
379  {0, 0, 0},
380  {0, 0, 0},
381  {0, 0, 0},
382  {0, 0, 0},
383  {0, 0, 0},
384  {0, 0, 0},
385  {0, 0, 0},
386  {0, 0, 0},
387  {0, 0, 0},
388  {0, 0, 0},
389  {0, 0, 0},
390  {0, 0, 0},
391  {0, 0, 0},
392  {0, 0, 0},
393  {0, 0, 0},
394  {0, 0, 0},
395  {0, 0, 0},
396  {0, 0, 0},
397  {0, 0, 0},
398  {0, 0, 0},
399  {0, 0, 0},
400  {0, 0, 0},
401  {0, 0, 0},
402  {0, 0, 0},
403  {0, 0, 0},
404  {0, 0, 0},
405  {0, 0, 0},
406  {0, 0, 0},
407  {0, 0, 0},
408  {0, 0, 0},
409  {0, 0, 0},
410  {0, 0, 0},
411  {0, 0, 0},
412  {0, 0, 0},
413  {0, 0, 0},
414  {0, 0, 0},
415  {0, 0, 0},
416  {0, 0, 0},
417  {0, 0, 0},
418  {0, 0, 0},
419  {0, 0, 0},
420  {0, 0, 0},
421  {0, 0, 0},
422  {0, 0, 0},
423  {0, 0, 0},
424  {0, 0, 0},
425  {0, 0, 0},
426  {0, 0, 0},
427  {0, 0, 0},
428  {0, 0, 0},
429  {0, 0, 0},
430  {0, 0, 0},
431  {0, 0, 0},
432  {0, 0, 0},
433  {0, 0, 0},
434  {0, 0, 0},
435  {0, 0, 0},
436  {0, 0, 0},
437  {0, 0, 0},
438  {0, 0, 0},
439  {0, 0, 0},
440  {0, 0, 0},
441  {0, 0, 0},
442  {0, 0, 0},
443  {0, 0, 0},
444  {0, 0, 0},
445  {0, 0, 0},
446  {0, 0, 0},
447  {0, 0, 0},
448  {0, 0, 0},
449  {0, 0, 0},
450  {0, 0, 0},
451  {0, 0, 0},
452  {0, 0, 0},
453  {0, 0, 0},
454  {0, 0, 0},
455  {0, 0, 0},
456  {0, 0, 0},
457  {0, 0, 0},
458  {0, 0, 0},
459  {0, 0, 0},
460  {0, 0, 0},
461  {0, 0, 0},
462  {0, 0, 0},
463  {0, 0, 0},
464  {0, 0, 0},
465  {0, 0, 0},
466  {0, 0, 0},
467  {0, 0, 0},
468  {0, 0, 0},
469  {0, 0, 0},
470  {0, 0, 0},
471  {0, 0, 0},
472  {0, 0, 0},
473  {0, 0, 0},
474  {0, 0, 0},
475  {0, 0, 0},
476  {0, 0, 0},
477  {0, 0, 0},
478  {0, 0, 0},
479  {0, 0, 0},
480  {0, 0, 0},
481  {0, 0, 0},
482  {0, 0, 0},
483  {0, 0, 0},
484  {0, 0, 0},
485  {0, 0, 0},
486  {0, 0, 0},
487  {0, 0, 0},
488  {0, 0, 0},
489  {0, 0, 0},
490  {0, 0, 0},
491  {0, 0, 0},
492  {0, 0, 0},
493  {0, 0, 0},
494  {0, 0, 0},
495  {0, 0, 0},
496  {0, 0, 0},
497  {0, 0, 0},
498  {0, 0, 0},
499  {0, 0, 0},
500  {0, 0, 0},
501  {0, 0, 0x0098} /* NON-SORT BEGIN / START OF STRING */,
502  {0, 0, 0x009C} /* NON-SORT END / STRING TERMINATOR */,
503  {0, 0, 0},
504  {0, 0, 0},
505  {0, 0, 0},
506  {0, 0, 0},
507  {0, 0, 0},
508  {0, 0, 0},
509  {0, 0, 0},
510  {0, 0, 0},
511  {0, 0, 0},
512  {0, 0, 0},
513  {0, 0, 0},
514  {0, 0, 0},
515  {0, 0, 0},
516  {0, 0, 0},
517  {0, 0, 0},
518  {0, 0, 0},
519  {0, 0, 0},
520  {0, 0, 0},
521  {0, 0, 0},
522  {0, 0, 0},
523  {0, 0, 0},
524  {0, 0, 0},
525  {0, 0, 0},
526  {0, 0, 0x00A1} /* INVERTED EXCLAMATION MARK */,
527  {0, 0, 0x201E} /* LOW DOUBLE COMMA QUOTATION MARK */,
528  {0, 0, 0x00A3} /* BRITISH POUND / POUND SIGN */,
529  {0, 0, 0x0024} /* DOLLAR SIGN */,
530  {0, 0, 0x00A5} /* YEN SIGN */,
531  {0, 0, 0x2020} /* DAGGER */,
532  {0, 0, 0x00A7} /* SECTION SIGN */,
533  {0, 0, 0x2032} /* PRIME */,
534  {0, 0, 0x2018} /* SINGLE TURNED COMMA QUOTATION MARK */,
535  {0, 0, 0x201C} /* DOUBLE TURNED COMMA QUOTATION MARK */,
536  {0, 0, 0x00AB} /* LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (LEFT POINTING GUILLEMET) */,
537  {0, 0, 0x266D} /* MUSIC FLAT SIGN (FLAT) */,
538  {0, 0, 0x00A9} /* COPYRIGHT SIGN */,
539  {0, 0, 0x2117} /* SOUND RECORDING COPYRIGHT */,
540  {0, 0, 0x00AE} /* PATENT MARK / REGISTERED SIGN */,
541  {0, 0, 0x02BB} /* AYN / MODIFIER LETTER TURNED COMMA */,
542  {0, 0, 0x02BC} /* ALIF / MODIFIER LETTER APOSTROPHE */,
543  {0, 0, 0x201A} /* SINGLE LOW-9 QUOTATION MARK (LOW SINGLE COMMA QUOTATION MARK) */,
544  {0, 0, 0},
545  {0, 0, 0},
546  {0, 0, 0},
547  {0, 0, 0x2021} /* */,
548  {0, 0, 0x00B7} /* MIDDLE DOT */,
549  {0, 0, 0x2033} /* DOUBLE PRIME */,
550  {0, 0, 0x2019} /* RIGHT SINGLE QUOTATION MARK (SINGLE COMMA QUOTATION MARK) */,
551  {0, 0, 0x201D} /* RIGHT DOUBLE QUOTATION MARK (DOUBLE COMMA QUOTATION MARK) */,
552  {0, 0, 0x00BB} /* RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (RIGHT POINTING GUILLEMET) */,
553  {0, 0, 0x266F} /* MUSIC SHARP SIGN */,
554  {0, 0, 0x02B9} /* SOFT SIGN, PRIME / MODIFIER LETTER PRIME */,
555  {0, 0, 0x02BA} /* HARD SIGN, DOUBLE PRIME / MODIFIER LETTER DOUBLE PRIME */,
556  {0, 0, 0x00BF} /* INVERTED QUESTION MARK */,
557  {0, 1, 0x0309} /* PSEUDO QUESTION MARK / COMBINING HOOK ABOVE */,
558  {0, 1, 0x0300} /* GRAVE / COMBINING GRAVE ACCENT (Varia) */,
559  {0, 1, 0x0301} /* ACUTE / COMBINING ACUTE ACCENT (Oxia) */,
560  {0, 1, 0x0302} /* CIRCUMFLEX / COMBINING CIRCUMFLEX ACCENT */,
561  {0, 1, 0x0303} /* TILDE / COMBINING TILDE */,
562  {0, 1, 0x0304} /* MACRON / COMBINING MACRON */,
563  {0, 1, 0x0306} /* BREVE / COMBINING BREVE (Vrachy) */,
564  {0, 1, 0x0307} /* SUPERIOR DOT / COMBINING DOT ABOVE */,
565  {0, 1, 0x0308} /* U+034F COMBINING GRAPHEME JOINER (CGJ) / trĂ©ma */,
566  {0, 1, 0x0308} /* UMLAUT, DIAERESIS / COMBINING DIAERESIS (Dialytika) */,
567  {0, 1, 0x030A} /* CIRCLE ABOVE, ANGSTROM / COMBINING RING ABOVE */,
568  {0, 1, 0x0315} /* HIGH COMMA, OFF CENTER / COMBINING COMMA ABOVE RIGHT */,
569  {0, 1, 0x0313} /* HIGH COMMA, CENTERED / COMBINING COMMA ABOVE (Psili) */,
570  {0, 1, 0x030B} /* DOUBLE ACUTE / COMBINING DOUBLE ACUTE ACCENT */,
571  {0, 1, 0x031B} /* COMBINING HORN (NON-SPACING HORN) */,
572  {0, 1, 0x030C} /* HACEK / COMBINING CARON */,
573  {0, 1, 0x0327} /* CEDILLA / COMBINING CEDILLA */,
574  {0, 1, 0x031C} /* RIGHT CEDILLA / COMBINING LEFT HALF RING BELOW */,
575  {0, 1, 0x0326} /* LEFT HOOK (COMMA BELOW) / COMBINING COMMA BELOW */,
576  {0, 1, 0x0328} /* RIGHT HOOK, OGONEK / COMBINING OGONEK */,
577  {0, 1, 0x0325} /* CIRCLE BELOW / COMBINING RING BELOW */,
578  {0, 1, 0x032E} /* UPADHMANIYA / COMBINING BREVE BELOW */,
579  {0, 1, 0x0323} /* DOT BELOW / COMBINING DOT BELOW */,
580  {0, 1, 0x0324} /* DOUBLE DOT BELOW / COMBINING DIAERESIS BELOW */,
581  {0, 1, 0x0332} /* UNDERSCORE / COMBINING LOW LINE */,
582  {0, 1, 0x0333} /* DOUBLE UNDERSCORE / COMBINING DOUBLE LOW LINE */,
583  {0, 1, 0x0329} /* COMBINING VERTICAL LINE BELOW (NON-SPACING VERTICAL LINE BELOW) */,
584  {0, 1, 0x032D} /* COMBINING CIRCUMFLEX ACCENT BELOW (NON-SPACING CIRCUMFLEX BELOW) */,
585  {0, 0, 0},
586  {0, 1, 0x0360} /* DOUBLE TILDE, FIRST HALF / COMBINING DOUBLE TILDE */,
587  {0, 0, 0},
588  {0, 0, 0},
589  {0, 0, 0},
590  {0, 0, 0x00C6} /* UPPERCASE DIGRAPH AE / LATIN CAPITAL LIGATURE AE */,
591  {0, 0, 0x0110} /* UPPERCASE D WITH CROSSBAR / LATIN CAPITAL LETTER D WITH STROKE */,
592  {0, 0, 0},
593  {0, 0, 0},
594  {0, 0, 0},
595  {0, 0, 0x0132} /* LATIN CAPITAL LIGATURE IJ (LATIN CAPITAL LETTER I J) */,
596  {0, 0, 0},
597  {0, 0, 0x0141} /* UPPERCASE POLISH L / LATIN CAPITAL LETTER L WITH STROKE */,
598  {0, 0, 0x00D8} /* UPPERCASE SCANDINAVIAN O / LATIN CAPITAL LETTER O WITH STROKE */,
599  {0, 0, 0x0152} /* UPPERCASE DIGRAPH OE / LATIN CAPITAL LIGATURE OE */,
600  {0, 0, 0},
601  {0, 0, 0x00DE} /* UPPERCASE ICELANDIC THORN / LATIN CAPITAL LETTER THORN (Icelandic) */,
602  {0, 0, 0},
603  {0, 0, 0},
604  {0, 0, 0},
605  {0, 0, 0},
606  {0, 0, 0x00E6} /* LOWERCASE DIGRAPH AE / LATIN SMALL LIGATURE AE */,
607  {0, 0, 0x0111} /* LOWERCASE D WITH CROSSBAR / LATIN SMALL LETTER D WITH STROKE */,
608  {0, 0, 0x00F0} /* LOWERCASE ETH / LATIN SMALL LETTER ETH (Icelandic) */,
609  {0, 0, 0},
610  {0, 0, 0x0131} /* LOWERCASE TURKISH I / LATIN SMALL LETTER DOTLESS I */,
611  {0, 0, 0x0133} /* LATIN SMALL LIGATURE IJ (LATIN SMALL LETTER I J) */,
612  {0, 0, 0},
613  {0, 0, 0x0142} /* LOWERCASE POLISH L / LATIN SMALL LETTER L WITH STROKE */,
614  {0, 0, 0x00F8} /* LOWERCASE SCANDINAVIAN O / LATIN SMALL LETTER O WITH STROKE */,
615  {0, 0, 0x0153} /* LOWERCASE DIGRAPH OE / LATIN SMALL LIGATURE OE */,
616  {0, 0, 0x00DF} /* ESZETT SYMBOL */,
617  {0, 0, 0x00FE} /* LOWERCASE ICELANDIC THORN / LATIN SMALL LETTER THORN (Icelandic) */,
618  {0, 0, 0},
619  {0, 0, 0},
620  {0, 0, 0}
621 };
623  0, iso5426_45page0_dir
624 };
627 0, };
628 
629 unsigned long yaz_iso5426_45_conv
630  (unsigned char *inp, size_t inbytesleft, size_t *no_read, int *combining, unsigned mask, unsigned int boffset)
631  {
632  unsigned long code;
633 
634  code = lookup(iso5426_45ptrs, 1, inp, inbytesleft, no_read, combining, mask, boffset);
635  if (!code)
636  {
637  *no_read = 1;
638  }
639  return code;
640  }
641 
struct yaz_iconv_trie_dir iso5426_42page0_dir[256]
Definition: iso5426.c:84
static unsigned long lookup(struct yaz_iconv_trie **ptrs, int ptr, unsigned char *inp, size_t inbytesleft, size_t *no_read, int *combining, unsigned mask, unsigned int boffset)
Definition: iso5426.c:28
unsigned combining
Definition: iso5426.c:18
unsigned long yaz_iso5426_42_conv(unsigned char *inp, size_t inbytesleft, size_t *no_read, int *combining, unsigned mask, unsigned int boffset)
Definition: iso5426.c:350
struct yaz_iconv_trie_flat * flat
Definition: iso5426.c:23
unsigned to
Definition: iso5426.c:19
struct yaz_iconv_trie * iso5426_45ptrs[]
Definition: iso5426.c:625
struct yaz_iconv_trie * iso5426_42ptrs[]
Definition: iso5426.c:345
unsigned combining
Definition: iso5426.c:13
struct yaz_iconv_trie_dir * dir
Definition: iso5426.c:24
struct yaz_iconv_trie_dir iso5426_45page0_dir[256]
Definition: iso5426.c:364
struct yaz_iconv_trie iso5426_42page0
Definition: iso5426.c:342
struct yaz_iconv_trie iso5426_45page0
Definition: iso5426.c:622
unsigned long yaz_iso5426_45_conv(unsigned char *inp, size_t inbytesleft, size_t *no_read, int *combining, unsigned mask, unsigned int boffset)
Definition: iso5426.c:630
int mask
Definition: log.c:81