aboutsummaryrefslogtreecommitdiff
path: root/externals/mysql/strings/uca-dump.c
diff options
context:
space:
mode:
authorclick <none@none>2010-08-07 19:01:57 +0200
committerclick <none@none>2010-08-07 19:01:57 +0200
commitce435f6d4f84462c0707bbc608d767648d5e99c3 (patch)
treedabac44fd559c925acf2171adb0ae3038f05ad7b /externals/mysql/strings/uca-dump.c
parent3cc24e0971f96b9ffa4032a154750e4224ea499d (diff)
BuildSystem/VS: Remove now defunct an unmaintained buildfiles - use CMake for generating solutionfiles
--HG-- branch : trunk
Diffstat (limited to 'externals/mysql/strings/uca-dump.c')
-rw-r--r--externals/mysql/strings/uca-dump.c332
1 files changed, 0 insertions, 332 deletions
diff --git a/externals/mysql/strings/uca-dump.c b/externals/mysql/strings/uca-dump.c
deleted file mode 100644
index 774e940c7da..00000000000
--- a/externals/mysql/strings/uca-dump.c
+++ /dev/null
@@ -1,332 +0,0 @@
-/* Copyright (C) 2004 MySQL AB
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; version 2 of the License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-typedef unsigned char uchar;
-typedef unsigned short uint16;
-
-struct uca_item_st
-{
- uchar num;
- uint16 weight[4][9];
-};
-
-#if 0
-#define MY_UCA_NPAGES 1024
-#define MY_UCA_NCHARS 64
-#define MY_UCA_CMASK 63
-#define MY_UCA_PSHIFT 6
-#else
-#define MY_UCA_NPAGES 256
-#define MY_UCA_NCHARS 256
-#define MY_UCA_CMASK 255
-#define MY_UCA_PSHIFT 8
-#endif
-
-static char *pname[]= {"", "2", "3"};
-
-int main(int ac, char **av)
-{
- char str[256];
- char *weights[64];
- struct uca_item_st uca[64*1024];
- size_t code, w;
- int pageloaded[MY_UCA_NPAGES];
-
- bzero(uca, sizeof(uca));
- bzero(pageloaded, sizeof(pageloaded));
-
- while (fgets(str,sizeof(str),stdin))
- {
- char *comment;
- char *weight;
- char *s;
- size_t codenum;
-
- code= strtol(str,NULL,16);
-
- if (str[0]=='#' || (code > 0xFFFF))
- continue;
- if ((comment=strchr(str,'#')))
- {
- *comment++= '\0';
- for ( ; *comment==' ' ; comment++);
- }else
- continue;
-
- if ((weight=strchr(str,';')))
- {
- *weight++= '\0';
- for ( ; *weight==' ' ; weight++);
- }
- else
- continue;
-
- codenum= 0;
- s= strtok(str, " \t");
- while (s)
- {
- s= strtok(NULL, " \t");
- codenum++;
- }
-
- if (codenum>1)
- {
- /* Multi-character weight,
- i.e. contraction.
- Not supported yet.
- */
- continue;
- }
-
- uca[code].num= 0;
- s= strtok(weight, " []");
- while (s)
- {
- weights[uca[code].num]= s;
- s= strtok(NULL, " []");
- uca[code].num++;
- }
-
- for (w=0; w < uca[code].num; w++)
- {
- size_t partnum;
-
- partnum= 0;
- s= weights[w];
- while (*s)
- {
- char *endptr;
- size_t part;
- part= strtol(s+1,&endptr,16);
- uca[code].weight[partnum][w]= part;
- s= endptr;
- partnum++;
- }
- }
- /* Mark that a character from this page was loaded */
- pageloaded[code >> MY_UCA_PSHIFT]++;
- }
-
-
-
- /* Now set implicit weights */
- for (code=0; code <= 0xFFFF; code++)
- {
- size_t base, aaaa, bbbb;
-
- if (uca[code].num)
- continue;
-
- /*
- 3400;<CJK Ideograph Extension A, First>
- 4DB5;<CJK Ideograph Extension A, Last>
- 4E00;<CJK Ideograph, First>
- 9FA5;<CJK Ideograph, Last>
- */
-
- if (code >= 0x3400 && code <= 0x4DB5)
- base= 0xFB80;
- else if (code >= 0x4E00 && code <= 0x9FA5)
- base= 0xFB40;
- else
- base= 0xFBC0;
-
- aaaa= base + (code >> 15);
- bbbb= (code & 0x7FFF) | 0x8000;
- uca[code].weight[0][0]= aaaa;
- uca[code].weight[0][1]= bbbb;
-
- uca[code].weight[1][0]= 0x0020;
- uca[code].weight[1][1]= 0x0000;
-
- uca[code].weight[2][0]= 0x0002;
- uca[code].weight[2][1]= 0x0000;
-
- uca[code].weight[3][0]= 0x0001;
- uca[code].weight[3][2]= 0x0000;
-
- uca[code].num= 2;
- }
-
- printf("#include \"my_uca.h\"\n");
-
- printf("#define MY_UCA_NPAGES %d\n",MY_UCA_NPAGES);
- printf("#define MY_UCA_NCHARS %d\n",MY_UCA_NCHARS);
- printf("#define MY_UCA_CMASK %d\n",MY_UCA_CMASK);
- printf("#define MY_UCA_PSHIFT %d\n",MY_UCA_PSHIFT);
-
- for (w=0; w<3; w++)
- {
- size_t page;
- int pagemaxlen[MY_UCA_NPAGES];
-
- for (page=0; page < MY_UCA_NPAGES; page++)
- {
- size_t offs;
- size_t maxnum= 0;
- size_t nchars= 0;
- size_t mchars;
- size_t ndefs= 0;
-
- pagemaxlen[page]= 0;
-
- /*
- Skip this page if no weights were loaded
- */
-
- if (!pageloaded[page])
- continue;
-
- /*
- Calculate maximum weight
- length for this page
- */
-
- for (offs=0; offs < MY_UCA_NCHARS; offs++)
- {
- size_t i, num;
-
- code= page*MY_UCA_NCHARS+offs;
-
- /* Calculate only non-zero weights */
- for (num=0, i=0; i < uca[code].num; i++)
- if (uca[code].weight[w][i])
- num++;
-
- maxnum= maxnum < num ? num : maxnum;
-
- /* Check if default weight */
- if (w == 1 && num == 1)
- {
- /* 0020 0000 ... */
- if (uca[code].weight[w][0] == 0x0020)
- ndefs++;
- }
- else if (w == 2 && num == 1)
- {
- /* 0002 0000 ... */
- if (uca[code].weight[w][0] == 0x0002)
- ndefs++;
- }
- }
- maxnum++;
-
- /*
- If the page have only default weights
- then no needs to dump it, skip.
- */
- if (ndefs == MY_UCA_NCHARS)
- {
- continue;
- }
- switch (maxnum)
- {
- case 0: mchars= 8; break;
- case 1: mchars= 8; break;
- case 2: mchars= 8; break;
- case 3: mchars= 9; break;
- case 4: mchars= 8; break;
- default: mchars= uca[code].num;
- }
-
- pagemaxlen[page]= maxnum;
-
-
- /*
- Now print this page
- */
-
-
- printf("uint16 page%03Xdata%s[]= { /* %04X (%d weights per char) */\n",
- page, pname[w], page*MY_UCA_NCHARS, maxnum);
-
- for (offs=0; offs < MY_UCA_NCHARS; offs++)
- {
- uint16 weight[8];
- size_t num, i;
-
- code= page*MY_UCA_NCHARS+offs;
-
- bzero(weight,sizeof(weight));
-
- /* Copy non-zero weights */
- for (num=0, i=0; i < uca[code].num; i++)
- {
- if (uca[code].weight[w][i])
- {
- weight[num]= uca[code].weight[w][i];
- num++;
- }
- }
-
- for (i=0; i < maxnum; i++)
- {
- /*
- Invert weights for secondary level to
- sort upper case letters before their
- lower case counter part.
- */
- int tmp= weight[i];
- if (w == 2 && tmp)
- tmp= (int)(0x20 - weight[i]);
-
-
- printf("0x%04X", tmp);
- if ((offs+1 != MY_UCA_NCHARS) || (i+1!=maxnum))
- printf(",");
- nchars++;
- }
- if (nchars >=mchars)
- {
- printf("\n");
- nchars=0;
- }
- else
- {
- printf(" ");
- }
- }
- printf("};\n\n");
- }
-
- printf("uchar uca_length%s[%d]={\n", pname[w], MY_UCA_NPAGES);
- for (page=0; page < MY_UCA_NPAGES; page++)
- {
- printf("%d%s%s",pagemaxlen[page],page<MY_UCA_NPAGES-1?",":"",(page+1) % 16 ? "":"\n");
- }
- printf("};\n");
-
-
- printf("uint16 *uca_weight%s[%d]={\n", pname[w], MY_UCA_NPAGES);
- for (page=0; page < MY_UCA_NPAGES; page++)
- {
- const char *comma= page < MY_UCA_NPAGES-1 ? "," : "";
- const char *nline= (page+1) % 4 ? "" : "\n";
- if (!pagemaxlen[page])
- printf("NULL %s%s%s", w ? " ": "", comma , nline);
- else
- printf("page%03Xdata%s%s%s", page, pname[w], comma, nline);
- }
- printf("};\n");
- }
-
-
- printf("int main(void){ return 0;};\n");
- return 0;
-}