]> granicus.if.org Git - postgresql/blobdiff - src/backend/utils/mb/conversion_procs/utf8_and_win/utf8_and_win.c
Phase 2 of pgindent updates.
[postgresql] / src / backend / utils / mb / conversion_procs / utf8_and_win / utf8_and_win.c
index 338c85507700b3ce6941640c75cb29ec679e33cb..cec458c9f41ddd1791901ee6eceee631a13cebdb 100644 (file)
@@ -2,7 +2,7 @@
  *
  *       WIN <--> UTF8
  *
- * Portions Copyright (c) 1996-2010, PostgreSQL Global Development Group
+ * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
@@ -42,9 +42,6 @@ PG_MODULE_MAGIC;
 PG_FUNCTION_INFO_V1(win_to_utf8);
 PG_FUNCTION_INFO_V1(utf8_to_win);
 
-extern Datum win_to_utf8(PG_FUNCTION_ARGS);
-extern Datum utf8_to_win(PG_FUNCTION_ARGS);
-
 /* ----------
  * conv_proc(
  *             INTEGER,        -- source encoding id
@@ -59,46 +56,22 @@ extern Datum utf8_to_win(PG_FUNCTION_ARGS);
 typedef struct
 {
        pg_enc          encoding;
-       pg_local_to_utf *map1;          /* to UTF8 map name */
-       pg_utf_to_local *map2;          /* from UTF8 map name */
-       int                     size1;                  /* size of map1 */
-       int                     size2;                  /* size of map2 */
+       const pg_mb_radix_tree *map1;   /* to UTF8 map name */
+       const pg_mb_radix_tree *map2;   /* from UTF8 map name */
 } pg_conv_map;
 
-static pg_conv_map maps[] = {
-       {PG_WIN866, LUmapWIN866, ULmapWIN866,
-               sizeof(LUmapWIN866) / sizeof(pg_local_to_utf),
-       sizeof(ULmapWIN866) / sizeof(pg_utf_to_local)},
-       {PG_WIN874, LUmapWIN874, ULmapWIN874,
-               sizeof(LUmapWIN874) / sizeof(pg_local_to_utf),
-       sizeof(ULmapWIN874) / sizeof(pg_utf_to_local)},
-       {PG_WIN1250, LUmapWIN1250, ULmapWIN1250,
-               sizeof(LUmapWIN1250) / sizeof(pg_local_to_utf),
-       sizeof(ULmapWIN1250) / sizeof(pg_utf_to_local)},
-       {PG_WIN1251, LUmapWIN1251, ULmapWIN1251,
-               sizeof(LUmapWIN1251) / sizeof(pg_local_to_utf),
-       sizeof(ULmapWIN1251) / sizeof(pg_utf_to_local)},
-       {PG_WIN1252, LUmapWIN1252, ULmapWIN1252,
-               sizeof(LUmapWIN1252) / sizeof(pg_local_to_utf),
-       sizeof(ULmapWIN1252) / sizeof(pg_utf_to_local)},
-       {PG_WIN1253, LUmapWIN1253, ULmapWIN1253,
-               sizeof(LUmapWIN1253) / sizeof(pg_local_to_utf),
-       sizeof(ULmapWIN1253) / sizeof(pg_utf_to_local)},
-       {PG_WIN1254, LUmapWIN1254, ULmapWIN1254,
-               sizeof(LUmapWIN1254) / sizeof(pg_local_to_utf),
-       sizeof(ULmapWIN1254) / sizeof(pg_utf_to_local)},
-       {PG_WIN1255, LUmapWIN1255, ULmapWIN1255,
-               sizeof(LUmapWIN1255) / sizeof(pg_local_to_utf),
-       sizeof(ULmapWIN1255) / sizeof(pg_utf_to_local)},
-       {PG_WIN1256, LUmapWIN1256, ULmapWIN1256,
-               sizeof(LUmapWIN1256) / sizeof(pg_local_to_utf),
-       sizeof(ULmapWIN1256) / sizeof(pg_utf_to_local)},
-       {PG_WIN1257, LUmapWIN1257, ULmapWIN1257,
-               sizeof(LUmapWIN1257) / sizeof(pg_local_to_utf),
-       sizeof(ULmapWIN1257) / sizeof(pg_utf_to_local)},
-       {PG_WIN1258, LUmapWIN1258, ULmapWIN1258,
-               sizeof(LUmapWIN1258) / sizeof(pg_local_to_utf),
-       sizeof(ULmapWIN1258) / sizeof(pg_utf_to_local)},
+static const pg_conv_map maps[] = {
+       {PG_WIN866, &win866_to_unicode_tree, &win866_from_unicode_tree},
+       {PG_WIN874, &win874_to_unicode_tree, &win874_from_unicode_tree},
+       {PG_WIN1250, &win1250_to_unicode_tree, &win1250_from_unicode_tree},
+       {PG_WIN1251, &win1251_to_unicode_tree, &win1251_from_unicode_tree},
+       {PG_WIN1252, &win1252_to_unicode_tree, &win1252_from_unicode_tree},
+       {PG_WIN1253, &win1253_to_unicode_tree, &win1253_from_unicode_tree},
+       {PG_WIN1254, &win1254_to_unicode_tree, &win1254_from_unicode_tree},
+       {PG_WIN1255, &win1255_to_unicode_tree, &win1255_from_unicode_tree},
+       {PG_WIN1256, &win1256_to_unicode_tree, &win1256_from_unicode_tree},
+       {PG_WIN1257, &win1257_to_unicode_tree, &win1257_from_unicode_tree},
+       {PG_WIN1258, &win1258_to_unicode_tree, &win1258_from_unicode_tree},
 };
 
 Datum
@@ -112,18 +85,23 @@ win_to_utf8(PG_FUNCTION_ARGS)
 
        CHECK_ENCODING_CONVERSION_ARGS(-1, PG_UTF8);
 
-       for (i = 0; i < sizeof(maps) / sizeof(pg_conv_map); i++)
+       for (i = 0; i < lengthof(maps); i++)
        {
                if (encoding == maps[i].encoding)
                {
-                       LocalToUtf(src, dest, maps[i].map1, NULL, maps[i].size1, 0, encoding, len);
+                       LocalToUtf(src, len, dest,
+                                          maps[i].map1,
+                                          NULL, 0,
+                                          NULL,
+                                          encoding);
                        PG_RETURN_VOID();
                }
        }
 
        ereport(ERROR,
                        (errcode(ERRCODE_INTERNAL_ERROR),
-         errmsg("unexpected encoding ID %d for WIN character sets", encoding)));
+                        errmsg("unexpected encoding ID %d for WIN character sets",
+                                       encoding)));
 
        PG_RETURN_VOID();
 }
@@ -139,18 +117,23 @@ utf8_to_win(PG_FUNCTION_ARGS)
 
        CHECK_ENCODING_CONVERSION_ARGS(PG_UTF8, -1);
 
-       for (i = 0; i < sizeof(maps) / sizeof(pg_conv_map); i++)
+       for (i = 0; i < lengthof(maps); i++)
        {
                if (encoding == maps[i].encoding)
                {
-                       UtfToLocal(src, dest, maps[i].map2, NULL, maps[i].size2, 0, encoding, len);
+                       UtfToLocal(src, len, dest,
+                                          maps[i].map2,
+                                          NULL, 0,
+                                          NULL,
+                                          encoding);
                        PG_RETURN_VOID();
                }
        }
 
        ereport(ERROR,
                        (errcode(ERRCODE_INTERNAL_ERROR),
-         errmsg("unexpected encoding ID %d for WIN character sets", encoding)));
+                        errmsg("unexpected encoding ID %d for WIN character sets",
+                                       encoding)));
 
        PG_RETURN_VOID();
 }