예제 #1
0
        private static void InitUTF16(CoreUnsafe.Pairs.Links links)
        {
            if (UTF16Initialized)
                return;

            UTF16Initialized = true;
            UTF16FirstCharLink = 1;
            UTF16LastCharLink = UTF16FirstCharLink + char.MaxValue - 1;

            ulong firstLink = links.Create(0, 0);

            if (firstLink != UTF16FirstCharLink)
            {
                links.Delete(ref firstLink);
                Console.WriteLine("Assume UTF16 table already created.");
            }
            else
            {
                for (ulong i = UTF16FirstCharLink + 1; i <= UTF16LastCharLink; i++)
                {
                    ulong createdLink = links.Create(0, 0);
                    if (createdLink != i)
                        throw new Exception("Unable to initialize UTF 16 table.");
                }

                Console.WriteLine("UTF16 table created and initialized.");
            }

            Console.WriteLine("Total links count: {0}.", links.Total);
        }
예제 #2
0
        private static void PrintContents(CoreUnsafe.Pairs.Links links)
        {
            if (links.Total == char.MaxValue)
                Console.WriteLine("Database is empty.");
            else
            {
                Console.WriteLine("Contents:");

                int linksTotalLength = links.Total.ToString("0").Length;

                var printFormatBase = new String('0', linksTotalLength);

                string printFormat = string.Format("\t[{{0:{0}}}]: {{1:{0}}} -> {{2:{0}}} ({{3}})", printFormatBase);

                for (ulong link = UTF16LastCharLink + 1; link <= links.Total; link++)
                {
                    Console.WriteLine(printFormat, link, links.GetSource(link), links.GetTarget(link),
                        links.GetLink(link));
                }
            }
        }