protected virtual void AddFields(int i, string name, PropertyInfo propertyInfo)
 {
     ColumnNames.Add(name, propertyInfo);
     ColumnIndex.Add(i, propertyInfo);
     IndexToName.Add(i, name);
     NameToIndex.Add(name, i);
 }
 protected override void Dispose(bool disposing)
 {
     ColumnNames.Clear();
     ColumnIndex.Clear();
     IndexToName.Clear();
     NameToIndex.Clear();
 }
Esempio n. 3
0
        void ForEnumPopulateMembers <TEnum>(string[] names, TEnum[] values)
            where TEnum : struct, IComparable, IFormattable, IConvertible
        {
            int index  = 0;
            int length = names.Length;

            #region Handle None values
            int last_value = Reflection.EnumUtil <TEnum> .GetHashCodeSignExtended(values[length - 1]);

            Contract.Assert(last_value.IsNoneOrPositive());
            // Enum.GetNames() sorts values by ToUInt64'ing, meaning negative values will appear after positive ones
            if (last_value.IsNone())
            {
                length--;
                Members.Add(names[length]);
                NameToIndex.Add(names[length], index);
            }
            #endregion

            for (; index < length; index++)
            {
                Members.Add(names[index]);
                NameToIndex.Add(names[index], index);
            }
        }
        public void CreateTable(List <PmxMaterial> ml)
        {
            NameToIndex.Clear();
            IndexToName.Clear();
            int num = 0;

            for (int i = 0; i < ml.Count; i++)
            {
                PmxMaterial pmxMaterial = ml[i];
                if (!string.IsNullOrEmpty(pmxMaterial.Tex) && !NameToIndex.ContainsKey(pmxMaterial.Tex))
                {
                    NameToIndex.Add(pmxMaterial.Tex, num);
                    IndexToName.Add(num, pmxMaterial.Tex);
                    num++;
                }
                if (!string.IsNullOrEmpty(pmxMaterial.Sphere) && !NameToIndex.ContainsKey(pmxMaterial.Sphere))
                {
                    NameToIndex.Add(pmxMaterial.Sphere, num);
                    IndexToName.Add(num, pmxMaterial.Sphere);
                    num++;
                }
                if (!string.IsNullOrEmpty(pmxMaterial.Toon) && !NameToIndex.ContainsKey(pmxMaterial.Toon) && !SystemToon.IsSystemToon(pmxMaterial.Toon))
                {
                    NameToIndex.Add(pmxMaterial.Toon, num);
                    IndexToName.Add(num, pmxMaterial.Toon);
                    num++;
                }
            }
        }
        public int GetIndex(string name)
        {
            int result = -1;

            if (NameToIndex.ContainsKey(name))
            {
                result = NameToIndex[name];
            }
            return(result);
        }
 public void CreateTable(string[] names)
 {
     NameToIndex.Clear();
     IndexToName.Clear();
     for (int i = 0; i < names.Length; i++)
     {
         if (!NameToIndex.ContainsKey(names[i]))
         {
             NameToIndex.Add(names[i], i);
         }
         IndexToName.Add(i, names[i]);
     }
 }
Esempio n. 7
0
        public void Serialize <TDoc, TCursor>(IO.TagElementStream <TDoc, TCursor, string> s)
            where TDoc : class
            where TCursor : class
        {
            s.StreamAttribute("name", ref Name);
            s.StreamElements("Member", Members);

            if (s.IsReading)
            {
                int index = 0;
                foreach (string name in Members)
                {
                    NameToIndex.Add(name, index++);
                }
            }

            Contract.Assert(!IsCodeEnum);
        }