void IDeserializationCallback.OnDeserialization(object sender)
		{
			if (UseManagedCollation) {
				collator = new SimpleCollator (new CultureInfo (culture));
			} else {
				/* This will build the ICU collator, and store
				 * the pointer in ICU_collator
				 */
				try {
					this.construct_compareinfo (icu_name);
				} catch {
				//	ICU_collator=IntPtr.Zero;
				}
			}
		}
Beispiel #2
0
		SimpleCollator GetCollator ()
		{
			if (collator != null)
				return collator;

			if (collators == null) {
				Interlocked.CompareExchange (ref collators, new Dictionary<string, SimpleCollator> (StringComparer.Ordinal), null);
			}

			lock (collators) {
				if (!collators.TryGetValue (m_sortName, out collator)) {
					collator = new SimpleCollator (CultureInfo.GetCultureInfo (m_name));
					collators [m_sortName] = collator;
				}
			}

			return collator;
		}
		internal CompareInfo (CultureInfo ci)
		{
			this.culture = ci.LCID;
			if (UseManagedCollation) {
				lock (monitor) {
					if (collators == null)
						collators = new Hashtable ();
					collator = (SimpleCollator)collators [ci.LCID];
					if (collator == null) {
						collator = new SimpleCollator (ci);
						collators [ci.LCID] = collator;
					}
				}
			} else {
#if !MOONLIGHT
				this.icu_name = ci.IcuName;
				this.construct_compareinfo (icu_name);
#endif
			}
		}
Beispiel #4
0
		internal CompareInfo (CultureInfo ci)
		{
			this.culture = ci.LCID;
			this.m_name = ci.Name;
			if (UseManagedCollation) {
				lock (monitor) {
					if (collators == null)
						collators = new Dictionary<int, SimpleCollator> ();

					if (!collators.TryGetValue (ci.LCID, out collator)) {
						collator = new SimpleCollator (ci);
						collators [ci.LCID] = collator;
					}
				}
			} else {
/*
				this.icu_name = ci.IcuName;
				this.construct_compareinfo (icu_name);
*/
			}
		}
Beispiel #5
0
		void Run ()
		{
LastIndexOf ("\u30D1\u30FC", "\u30A2", CompareOptions.IgnoreNonSpace);
return;
			/*
			DumpSortKey ("AE");
			DumpSortKey ("\u00C6");
			DumpSortKey ("ABCABC", 5, 1, CompareOptions.IgnoreCase);
			DumpSortKey ("-");
			DumpSortKey ("--");
			DumpSortKey ("A-B-C");
			DumpSortKey ("A\u0304");
			DumpSortKey ("\u0100");

			Compare ("1", "2");
			Compare ("A", "a");
			Compare ("A", "a", CompareOptions.IgnoreCase);
			Compare ("\uFF10", "0", CompareOptions.IgnoreWidth);
			Compare ("\uFF21", "a", CompareOptions.IgnoreCase | CompareOptions.IgnoreWidth);
			Compare ("12", "1");
			Compare ("AE", "\u00C6");
			Compare ("AB\u01c0C", "A\u01c0B\u01c0C", CompareOptions.IgnoreSymbols);
			Compare ("A\u0304", "\u0100"); // diacritical weight addition
			Compare ("ABCABC", 5, 1, "c", 0, 1, CompareOptions.IgnoreCase);
			Compare ("-d:NET_1_1", 0, 1, "-", 0, 1, CompareOptions.None);

			IndexOf ("ABC", '1', CompareOptions.None);
			IndexOf ("ABCABC", 'c', CompareOptions.IgnoreCase);
			IndexOf ("ABCABC", '\uFF22', CompareOptions.IgnoreCase | CompareOptions.IgnoreWidth);
			IndexOf ("ABCDE", '\u0117', CompareOptions.IgnoreNonSpace | CompareOptions.IgnoreCase);
			IndexOf ("ABCABC", 'B', 1, 5, CompareOptions.IgnoreCase);
			IndexOf ("\u00E6", 'a', CompareOptions.None);

			LastIndexOf ("ABC", '1', CompareOptions.None);
			LastIndexOf ("ABCABC", 'c', CompareOptions.IgnoreCase);
			LastIndexOf ("ABCABC", '\uFF22', CompareOptions.IgnoreCase | CompareOptions.IgnoreWidth);
			LastIndexOf ("ABCDE", '\u0117', CompareOptions.IgnoreNonSpace | CompareOptions.IgnoreCase);

			IsPrefix ("ABC", "c", CompareOptions.IgnoreCase);
			IsPrefix ("BC", "c", CompareOptions.IgnoreCase);
			IsPrefix ("C", "c", CompareOptions.IgnoreCase);
			IsPrefix ("EDCBA", "\u0117", CompareOptions.IgnoreNonSpace | CompareOptions.IgnoreCase);
			IsPrefix ("ABC", "AB", CompareOptions.IgnoreCase);
			IsPrefix ("ae", "\u00E6", CompareOptions.None);
			IsPrefix ("\u00E6", "ae", CompareOptions.None);
			IsPrefix ("\u00E6", "a", CompareOptions.None);
			IsPrefix ("\u00E6s", "ae", CompareOptions.None);
			IsPrefix ("\u00E6", "aes", CompareOptions.None);
			IsPrefix ("--start", "--", CompareOptions.None);
			IsPrefix ("-d:NET_1_1", "-", CompareOptions.None);
			IsPrefix ("-d:NET_1_1", "@", CompareOptions.None);

			IsSuffix ("ABC", "c", CompareOptions.IgnoreCase);
			IsSuffix ("BC", "c", CompareOptions.IgnoreCase);
			IsSuffix ("CBA", "c", CompareOptions.IgnoreCase);
			IsSuffix ("ABCDE", "\u0117", CompareOptions.IgnoreNonSpace | CompareOptions.IgnoreCase);
			IsSuffix ("\u00E6", "a", CompareOptions.None);
			IsSuffix ("\u00E6", "e", CompareOptions.None);
			IsSuffix ("\u00E6", "ae", CompareOptions.None);
			IsSuffix ("ae", "\u00E6", CompareOptions.None);
			IsSuffix ("e", "\u00E6", CompareOptions.None);

			IndexOf ("ABC", "1", CompareOptions.None);
			IndexOf ("ABCABC", "c", CompareOptions.IgnoreCase);
			IndexOf ("ABCABC", "\uFF22", CompareOptions.IgnoreCase | CompareOptions.IgnoreWidth);
			IndexOf ("ABCDE", "\u0117", CompareOptions.IgnoreNonSpace | CompareOptions.IgnoreCase);
			IndexOf ("ABCABC", "BC", CompareOptions.IgnoreCase);
			IndexOf ("BBCBBC", "BC", CompareOptions.IgnoreCase);
			IndexOf ("ABCDEF", "BCD", 0, 3, CompareOptions.IgnoreCase);
			IndexOf ("-ABC", "-", CompareOptions.None);
			IndexOf ("--ABC", "--", CompareOptions.None);

			LastIndexOf ("ABC", "1", CompareOptions.None);
			LastIndexOf ("ABCABC", "c", CompareOptions.IgnoreCase);
			LastIndexOf ("ABCABC", "\uFF22", CompareOptions.IgnoreCase | CompareOptions.IgnoreWidth);
			LastIndexOf ("ABCDE", "\u0117", CompareOptions.IgnoreNonSpace | CompareOptions.IgnoreCase);
			LastIndexOf ("ABCABC", "BC", CompareOptions.IgnoreCase);
			LastIndexOf ("BBCBBC", "BC", CompareOptions.IgnoreCase);
			LastIndexOf ("original", "rig", CompareOptions.None);
			LastIndexOf ("\u00E6", "ae", CompareOptions.None);
			LastIndexOf ("-ABC", "-", CompareOptions.None);
			LastIndexOf ("--ABC", "--", CompareOptions.None);
			*/

			coll = new SimpleCollator (new CultureInfo ("hu"));
			DumpSortKey ("ZSAZS1");
			IsSuffix ("zs", "z", CompareOptions.None);
			IsSuffix ("zs", "s", CompareOptions.None);
			IsSuffix ("zs", "zs", CompareOptions.None);
			IsSuffix ("sz", "z", CompareOptions.None);
			IsSuffix ("sz", "s", CompareOptions.None);
			IsSuffix ("--ABC", "--", CompareOptions.None);
			IsSuffix ("ABC--", "--", CompareOptions.None);

/*
			coll = new SimpleCollator (new CultureInfo (""));
			Compare ("c\u00F4te", "cot\u00E9");
			DumpSortKey ("c\u00F4te");
			DumpSortKey ("cot\u00E9");
			coll = new SimpleCollator (new CultureInfo ("fr"));
			Compare ("c\u00F4te", "cot\u00E9");
			DumpSortKey ("c\u00F4te");
			DumpSortKey ("cot\u00E9");
*/
		}
Beispiel #6
0
        void Run()
        {
            LastIndexOf("\u30D1\u30FC", "\u30A2", CompareOptions.IgnoreNonSpace);
            return;

            /*
             * DumpSortKey ("AE");
             * DumpSortKey ("\u00C6");
             * DumpSortKey ("ABCABC", 5, 1, CompareOptions.IgnoreCase);
             * DumpSortKey ("-");
             * DumpSortKey ("--");
             * DumpSortKey ("A-B-C");
             * DumpSortKey ("A\u0304");
             * DumpSortKey ("\u0100");
             *
             * Compare ("1", "2");
             * Compare ("A", "a");
             * Compare ("A", "a", CompareOptions.IgnoreCase);
             * Compare ("\uFF10", "0", CompareOptions.IgnoreWidth);
             * Compare ("\uFF21", "a", CompareOptions.IgnoreCase | CompareOptions.IgnoreWidth);
             * Compare ("12", "1");
             * Compare ("AE", "\u00C6");
             * Compare ("AB\u01c0C", "A\u01c0B\u01c0C", CompareOptions.IgnoreSymbols);
             * Compare ("A\u0304", "\u0100"); // diacritical weight addition
             * Compare ("ABCABC", 5, 1, "c", 0, 1, CompareOptions.IgnoreCase);
             * Compare ("-d:NET_1_1", 0, 1, "-", 0, 1, CompareOptions.None);
             *
             * IndexOf ("ABC", '1', CompareOptions.None);
             * IndexOf ("ABCABC", 'c', CompareOptions.IgnoreCase);
             * IndexOf ("ABCABC", '\uFF22', CompareOptions.IgnoreCase | CompareOptions.IgnoreWidth);
             * IndexOf ("ABCDE", '\u0117', CompareOptions.IgnoreNonSpace | CompareOptions.IgnoreCase);
             * IndexOf ("ABCABC", 'B', 1, 5, CompareOptions.IgnoreCase);
             * IndexOf ("\u00E6", 'a', CompareOptions.None);
             *
             * LastIndexOf ("ABC", '1', CompareOptions.None);
             * LastIndexOf ("ABCABC", 'c', CompareOptions.IgnoreCase);
             * LastIndexOf ("ABCABC", '\uFF22', CompareOptions.IgnoreCase | CompareOptions.IgnoreWidth);
             * LastIndexOf ("ABCDE", '\u0117', CompareOptions.IgnoreNonSpace | CompareOptions.IgnoreCase);
             *
             * IsPrefix ("ABC", "c", CompareOptions.IgnoreCase);
             * IsPrefix ("BC", "c", CompareOptions.IgnoreCase);
             * IsPrefix ("C", "c", CompareOptions.IgnoreCase);
             * IsPrefix ("EDCBA", "\u0117", CompareOptions.IgnoreNonSpace | CompareOptions.IgnoreCase);
             * IsPrefix ("ABC", "AB", CompareOptions.IgnoreCase);
             * IsPrefix ("ae", "\u00E6", CompareOptions.None);
             * IsPrefix ("\u00E6", "ae", CompareOptions.None);
             * IsPrefix ("\u00E6", "a", CompareOptions.None);
             * IsPrefix ("\u00E6s", "ae", CompareOptions.None);
             * IsPrefix ("\u00E6", "aes", CompareOptions.None);
             * IsPrefix ("--start", "--", CompareOptions.None);
             * IsPrefix ("-d:NET_1_1", "-", CompareOptions.None);
             * IsPrefix ("-d:NET_1_1", "@", CompareOptions.None);
             *
             * IsSuffix ("ABC", "c", CompareOptions.IgnoreCase);
             * IsSuffix ("BC", "c", CompareOptions.IgnoreCase);
             * IsSuffix ("CBA", "c", CompareOptions.IgnoreCase);
             * IsSuffix ("ABCDE", "\u0117", CompareOptions.IgnoreNonSpace | CompareOptions.IgnoreCase);
             * IsSuffix ("\u00E6", "a", CompareOptions.None);
             * IsSuffix ("\u00E6", "e", CompareOptions.None);
             * IsSuffix ("\u00E6", "ae", CompareOptions.None);
             * IsSuffix ("ae", "\u00E6", CompareOptions.None);
             * IsSuffix ("e", "\u00E6", CompareOptions.None);
             *
             * IndexOf ("ABC", "1", CompareOptions.None);
             * IndexOf ("ABCABC", "c", CompareOptions.IgnoreCase);
             * IndexOf ("ABCABC", "\uFF22", CompareOptions.IgnoreCase | CompareOptions.IgnoreWidth);
             * IndexOf ("ABCDE", "\u0117", CompareOptions.IgnoreNonSpace | CompareOptions.IgnoreCase);
             * IndexOf ("ABCABC", "BC", CompareOptions.IgnoreCase);
             * IndexOf ("BBCBBC", "BC", CompareOptions.IgnoreCase);
             * IndexOf ("ABCDEF", "BCD", 0, 3, CompareOptions.IgnoreCase);
             * IndexOf ("-ABC", "-", CompareOptions.None);
             * IndexOf ("--ABC", "--", CompareOptions.None);
             *
             * LastIndexOf ("ABC", "1", CompareOptions.None);
             * LastIndexOf ("ABCABC", "c", CompareOptions.IgnoreCase);
             * LastIndexOf ("ABCABC", "\uFF22", CompareOptions.IgnoreCase | CompareOptions.IgnoreWidth);
             * LastIndexOf ("ABCDE", "\u0117", CompareOptions.IgnoreNonSpace | CompareOptions.IgnoreCase);
             * LastIndexOf ("ABCABC", "BC", CompareOptions.IgnoreCase);
             * LastIndexOf ("BBCBBC", "BC", CompareOptions.IgnoreCase);
             * LastIndexOf ("original", "rig", CompareOptions.None);
             * LastIndexOf ("\u00E6", "ae", CompareOptions.None);
             * LastIndexOf ("-ABC", "-", CompareOptions.None);
             * LastIndexOf ("--ABC", "--", CompareOptions.None);
             */

            coll = new SimpleCollator(new CultureInfo("hu"));
            DumpSortKey("ZSAZS1");
            IsSuffix("zs", "z", CompareOptions.None);
            IsSuffix("zs", "s", CompareOptions.None);
            IsSuffix("zs", "zs", CompareOptions.None);
            IsSuffix("sz", "z", CompareOptions.None);
            IsSuffix("sz", "s", CompareOptions.None);
            IsSuffix("--ABC", "--", CompareOptions.None);
            IsSuffix("ABC--", "--", CompareOptions.None);

/*
 *                      coll = new SimpleCollator (new CultureInfo (""));
 *                      Compare ("c\u00F4te", "cot\u00E9");
 *                      DumpSortKey ("c\u00F4te");
 *                      DumpSortKey ("cot\u00E9");
 *                      coll = new SimpleCollator (new CultureInfo ("fr"));
 *                      Compare ("c\u00F4te", "cot\u00E9");
 *                      DumpSortKey ("c\u00F4te");
 *                      DumpSortKey ("cot\u00E9");
 */
        }