コード例 #1
0
ファイル: KeyNameMap.cs プロジェクト: Ktarianen/s3pi-wrappers
 private void FillKNMP(KNMPackage knmp, IDictionary<ulong, string> map)
 {
     GenCLIP gc;
     ulong h, ch;
     string s, cs;
     foreach (KeyValuePair<ulong, string> nm in map)
     {
         h = nm.Key;
         s = nm.Value;
         if (FNVHash.HashString64(s) == h ||
             FNVHash.HashString32(s) == h)
         {
             knmp.Names[h] = s;
         }
         else if (FNVCLIP.HashString(s) == h)
         {
             cs = FNVCLIP.GetGenericValue(s);
             ch = FNVHash.HashString64(cs) & 0x7FFFFFFFFFFFFFFF;
             knmp.Generics[ch] = cs;
             if (!this.mGenCLIPs.TryGetValue(ch, out gc))
             {
                 gc = new GenCLIP(cs);
                 this.mGenCLIPs.Add(ch, gc);
             }
             gc.CLIPNames[h] = new CLIP(s, knmp.Path);
         }
         else
         {
             knmp.Labels[h] = s;
         }
     }
     if (knmp.Names.Count > 0)
     {
         List<KeyValuePair<ulong, string>> names
             = new List<KeyValuePair<ulong, string>>(knmp.Names);
         foreach (KeyValuePair<ulong, string> name in names)
         {
             s = name.Value;
             if (name.Key < 0x100000000)
             {
                 h = FNVHash.HashString64(s);
                 if (!knmp.Names.ContainsKey(h))
                 {
                     knmp.Names[h] = s;
                 }
             }
             else
             {
                 h = FNVHash.HashString32(s);
                 if (!knmp.Names.ContainsKey(h))
                 {
                     knmp.Names[h] = s;
                 }
             }
             cs = FNVCLIP.GetGenericValue(s);
             if (!string.Equals(s, cs,
                 StringComparison.OrdinalIgnoreCase))
             {
                 h = FNVHash.HashString32(cs);
                 if (!knmp.Names.ContainsKey(h))
                 {
                     knmp.Names[h] = cs;
                 }
                 h = FNVHash.HashString64(cs);
                 if (!knmp.Names.ContainsKey(h))
                 {
                     knmp.Names[h] = cs;
                 }
             }
         }
     }
     if (knmp.Generics.Count > 0)
     {
         foreach (KeyValuePair<ulong, string> gen in knmp.Generics)
         {
             s = gen.Value;
             h = FNVHash.HashString32(s);
             if (!knmp.Names.ContainsKey(h))
             {
                 knmp.Names[h] = s;
             }
             h = FNVHash.HashString64(s);
             if (!knmp.Names.ContainsKey(h))
             {
                 knmp.Names[h] = s;
             }
             cs = FNVCLIP.GetGenericValue(s);
             h = FNVHash.HashString32(cs);
             if (!knmp.Names.ContainsKey(h))
             {
                 knmp.Names[h] = cs;
             }
             h = FNVHash.HashString64(cs);
             if (!knmp.Names.ContainsKey(h))
             {
                 knmp.Names[h] = cs;
             }
             cs = string.Concat(cs, ".ma");
             h = FNVHash.HashString32(cs);
             if (!knmp.Names.ContainsKey(h))
             {
                 knmp.Names[h] = cs;
             }
             h = FNVHash.HashString64(cs);
             if (!knmp.Names.ContainsKey(h))
             {
                 knmp.Names[h] = cs;
             }
             s = string.Concat(s, ".ma");
             h = FNVHash.HashString32(s);
             if (!knmp.Names.ContainsKey(h))
             {
                 knmp.Names[h] = s;
             }
             h = FNVHash.HashString64(s);
             if (!knmp.Names.ContainsKey(h))
             {
                 knmp.Names[h] = s;
             }
         }
     }
     if (knmp.Labels.Count > 0)
     {
         foreach (KeyValuePair<ulong, string> label in knmp.Labels)
         {
             s = label.Value;
             h = FNVHash.HashString32(s);
             if (!knmp.Names.ContainsKey(h))
             {
                 knmp.Names[h] = s;
             }
             h = FNVHash.HashString64(s);
             if (!knmp.Names.ContainsKey(h))
             {
                 knmp.Names[h] = s;
             }
             cs = FNVCLIP.GetGenericValue(s);
             if (!string.Equals(s, cs,
                 StringComparison.OrdinalIgnoreCase))
             {
                 h = FNVHash.HashString32(cs);
                 if (!knmp.Names.ContainsKey(h))
                 {
                     knmp.Names[h] = cs;
                 }
                 h = FNVHash.HashString64(cs);
                 if (!knmp.Names.ContainsKey(h))
                 {
                     knmp.Names[h] = cs;
                 }
                 cs = string.Concat(cs, ".ma");
                 h = FNVHash.HashString32(cs);
                 if (!knmp.Names.ContainsKey(h))
                 {
                     knmp.Names[h] = cs;
                 }
                 h = FNVHash.HashString64(cs);
                 if (!knmp.Names.ContainsKey(h))
                 {
                     knmp.Names[h] = cs;
                 }
             }
             s = string.Concat(s, ".ma");
             h = FNVHash.HashString32(s);
             if (!knmp.Names.ContainsKey(h))
             {
                 knmp.Names[h] = s;
             }
             h = FNVHash.HashString64(s);
             if (!knmp.Names.ContainsKey(h))
             {
                 knmp.Names[h] = s;
             }
         }
     }
 }
コード例 #2
0
ファイル: KeyNameMap.cs プロジェクト: Nofasar/s3pi-wrappers
        private void FillKNMP(KNMPackage knmp, IDictionary <ulong, string> map)
        {
            GenCLIP gc;
            ulong   h, ch;
            string  s, cs;

            foreach (KeyValuePair <ulong, string> nm in map)
            {
                h = nm.Key;
                s = nm.Value;
                if (FNVHash.HashString64(s) == h ||
                    FNVHash.HashString32(s) == h)
                {
                    knmp.Names[h] = s;
                }
                else if (FNVCLIP.HashString(s) == h)
                {
                    cs = FNVCLIP.GetGenericValue(s);
                    ch = FNVHash.HashString64(cs) & 0x7FFFFFFFFFFFFFFF;
                    knmp.Generics[ch] = cs;
                    if (!this.mGenCLIPs.TryGetValue(ch, out gc))
                    {
                        gc = new GenCLIP(cs);
                        this.mGenCLIPs.Add(ch, gc);
                    }
                    gc.CLIPNames[h] = new CLIP(s, knmp.Path);
                }
                else
                {
                    knmp.Labels[h] = s;
                }
            }
            if (knmp.Names.Count > 0)
            {
                List <KeyValuePair <ulong, string> > names
                    = new List <KeyValuePair <ulong, string> >(knmp.Names);
                foreach (KeyValuePair <ulong, string> name in names)
                {
                    s = name.Value;
                    if (name.Key < 0x100000000)
                    {
                        h = FNVHash.HashString64(s);
                        if (!knmp.Names.ContainsKey(h))
                        {
                            knmp.Names[h] = s;
                        }
                    }
                    else
                    {
                        h = FNVHash.HashString32(s);
                        if (!knmp.Names.ContainsKey(h))
                        {
                            knmp.Names[h] = s;
                        }
                    }
                    cs = FNVCLIP.GetGenericValue(s);
                    if (!string.Equals(s, cs,
                                       StringComparison.OrdinalIgnoreCase))
                    {
                        h = FNVHash.HashString32(cs);
                        if (!knmp.Names.ContainsKey(h))
                        {
                            knmp.Names[h] = cs;
                        }
                        h = FNVHash.HashString64(cs);
                        if (!knmp.Names.ContainsKey(h))
                        {
                            knmp.Names[h] = cs;
                        }
                    }
                }
            }
            if (knmp.Generics.Count > 0)
            {
                foreach (KeyValuePair <ulong, string> gen in knmp.Generics)
                {
                    s = gen.Value;
                    h = FNVHash.HashString32(s);
                    if (!knmp.Names.ContainsKey(h))
                    {
                        knmp.Names[h] = s;
                    }
                    h = FNVHash.HashString64(s);
                    if (!knmp.Names.ContainsKey(h))
                    {
                        knmp.Names[h] = s;
                    }
                    cs = FNVCLIP.GetGenericValue(s);
                    h  = FNVHash.HashString32(cs);
                    if (!knmp.Names.ContainsKey(h))
                    {
                        knmp.Names[h] = cs;
                    }
                    h = FNVHash.HashString64(cs);
                    if (!knmp.Names.ContainsKey(h))
                    {
                        knmp.Names[h] = cs;
                    }
                    cs = string.Concat(cs, ".ma");
                    h  = FNVHash.HashString32(cs);
                    if (!knmp.Names.ContainsKey(h))
                    {
                        knmp.Names[h] = cs;
                    }
                    h = FNVHash.HashString64(cs);
                    if (!knmp.Names.ContainsKey(h))
                    {
                        knmp.Names[h] = cs;
                    }
                    s = string.Concat(s, ".ma");
                    h = FNVHash.HashString32(s);
                    if (!knmp.Names.ContainsKey(h))
                    {
                        knmp.Names[h] = s;
                    }
                    h = FNVHash.HashString64(s);
                    if (!knmp.Names.ContainsKey(h))
                    {
                        knmp.Names[h] = s;
                    }
                }
            }
            if (knmp.Labels.Count > 0)
            {
                foreach (KeyValuePair <ulong, string> label in knmp.Labels)
                {
                    s = label.Value;
                    h = FNVHash.HashString32(s);
                    if (!knmp.Names.ContainsKey(h))
                    {
                        knmp.Names[h] = s;
                    }
                    h = FNVHash.HashString64(s);
                    if (!knmp.Names.ContainsKey(h))
                    {
                        knmp.Names[h] = s;
                    }
                    cs = FNVCLIP.GetGenericValue(s);
                    if (!string.Equals(s, cs,
                                       StringComparison.OrdinalIgnoreCase))
                    {
                        h = FNVHash.HashString32(cs);
                        if (!knmp.Names.ContainsKey(h))
                        {
                            knmp.Names[h] = cs;
                        }
                        h = FNVHash.HashString64(cs);
                        if (!knmp.Names.ContainsKey(h))
                        {
                            knmp.Names[h] = cs;
                        }
                        cs = string.Concat(cs, ".ma");
                        h  = FNVHash.HashString32(cs);
                        if (!knmp.Names.ContainsKey(h))
                        {
                            knmp.Names[h] = cs;
                        }
                        h = FNVHash.HashString64(cs);
                        if (!knmp.Names.ContainsKey(h))
                        {
                            knmp.Names[h] = cs;
                        }
                    }
                    s = string.Concat(s, ".ma");
                    h = FNVHash.HashString32(s);
                    if (!knmp.Names.ContainsKey(h))
                    {
                        knmp.Names[h] = s;
                    }
                    h = FNVHash.HashString64(s);
                    if (!knmp.Names.ContainsKey(h))
                    {
                        knmp.Names[h] = s;
                    }
                }
            }
        }