/// ------------------------------------------------------------------------------------ /// <summary> /// Returns a clone of the phone information object. /// </summary> /// ------------------------------------------------------------------------------------ public IPhoneInfo Clone() { var clone = new PhoneInfo(_ambiguousSequences, Phone); clone.Description = Description; clone.TotalCount = TotalCount; clone.CountAsNonPrimaryUncertainty = CountAsNonPrimaryUncertainty; clone.CountAsPrimaryUncertainty = CountAsPrimaryUncertainty; clone.CharType = CharType; clone._moaKey = MOAKey; clone._poaKey = POAKey; clone._baseChar = _baseChar; clone.SiblingUncertainties = new List <string>(SiblingUncertainties); clone.IsUndefined = IsUndefined; clone._aMask = AMask.Clone(); clone._bMask = BMask.Clone(); clone._defaultAMask = DefaultAMask.Clone(); clone._defaultBMask = DefaultBMask.Clone(); return(clone); }
/// ------------------------------------------------------------------------------------ public IPASymbol Copy() { return(new IPASymbol { IsUndefined = IsUndefined, Literal = Literal, HexCharCode = HexCharCode, IPANumber = IPANumber, Name = Name, Usage = Usage, Description = Description, Type = Type, SubType = SubType, IsBase = IsBase, CanPrecedeBase = CanPrecedeBase, DisplayWithDottedCircle = DisplayWithDottedCircle, DisplayOrder = DisplayOrder, AMask = AMask.Clone(), BMask = BMask.Clone(), }); }
public AniDBFile(AniDBResponse fileResponse, FMask fMask, AMask aMask) : this() { if (fileResponse.Code != AniDBResponse.ReturnCode.FILE) { throw new ArgumentException("Response is not a FILE response"); } List <string> dataFields = new List <string>(); foreach (string[] sa in fileResponse.DataFields) { dataFields.AddRange(sa); } FID = int.Parse(dataFields[0]); int currentIndex = 1; for (int i = 39; /* 8*5 - 1 ie. 40 bits */ i >= 0; i--) { if (currentIndex >= dataFields.Count) { break; } FMask.FMaskValues flag = (FMask.FMaskValues)((long)Math.Pow(2, i)); if (!fMask.Mask.HasFlag(flag)) { continue; } //Parse value object field = null; if (dataFields[currentIndex] != "") { if (FMaskFields[flag].DataType == typeof(string)) { field = dataFields[currentIndex]; } else if (FMaskFields[flag].DataType == typeof(int)) { field = int.Parse(dataFields[currentIndex]); } else if (FMaskFields[flag].DataType == typeof(short)) { field = short.Parse(dataFields[currentIndex]); } else if (FMaskFields[flag].DataType == typeof(bool)) { field = short.Parse(dataFields[currentIndex]) == 1; } else if (FMaskFields[flag].DataType == typeof(long)) { field = long.Parse(dataFields[currentIndex]); } else if (FMaskFields[flag].DataType == typeof(StateMask)) { field = short.Parse(dataFields[currentIndex]); } else if (FMaskFields[flag].DataType == typeof(IDictionary <int, byte>)) { string[] splitString = dataFields[currentIndex].Split('\''); Dictionary <int, byte> otherEpisodes = new Dictionary <int, byte>(); if (dataFields[currentIndex] != "") { for (int j = 0; j < splitString.Length; j += 2) { otherEpisodes.Add(int.Parse(splitString[j]), byte.Parse(splitString[j + 1])); } } field = otherEpisodes; } else if (FMaskFields[flag].DataType == typeof(IList <string>)) { field = new List <string>(dataFields[currentIndex].Split('\'')); } else if (FMaskFields[flag].DataType == typeof(IList <int>)) { field = dataFields[currentIndex].Split('\'').Select(int.Parse).ToList(); } } FMaskFields[flag].SetValue(field); currentIndex++; } for (int i = 31; i >= 0; i--) { if (currentIndex >= dataFields.Count) { break; } AMask.AMaskValues flag = (AMask.AMaskValues)((uint)Math.Pow(2, i)); if (!aMask.Mask.HasFlag(flag)) { continue; } object field = null; if (AMaskFields[flag].DataType == typeof(int)) { field = int.Parse(dataFields[currentIndex]); } else if (AMaskFields[flag].DataType == typeof(string)) { field = dataFields[currentIndex]; } else if (AMaskFields[flag].DataType == typeof(IList <string>)) { field = new List <string>(dataFields[currentIndex].Split('\'')); } else if (AMaskFields[flag].DataType == typeof(IList <int>)) { field = dataFields[currentIndex].Split('\'').Select(int.Parse).ToList(); } else if (AMaskFields[flag].DataType == typeof(IList <Anime.AIDRelationType>)) { field = new List <Anime.AIDRelationType>(); foreach (string s in dataFields[currentIndex].Split('\'')) { ((List <Anime.AIDRelationType>)field).Add((Anime.AIDRelationType) int.Parse(s)); } } AMaskFields[flag].SetValue(field); currentIndex++; } }
public Anime(AniDBResponse response, AMask aMask) : this() { if (response.Code != AniDBResponse.ReturnCode.ANIME && response.Code != AniDBResponse.ReturnCode.ANIME_BEST_MATCH) { throw new ArgumentException("Response is not an ANIME response"); } List <string> dataFields = new List <string>(); foreach (string[] s in response.DataFields) { dataFields.AddRange(s); } int currentIndex = 0; for (int i = 55; i >= 0; i--) { if (currentIndex >= dataFields.Count) { break; } AMask.AMaskValues flag = (AMask.AMaskValues)((ulong)Math.Pow(2, i)); object field = null; if (!aMask.Mask.HasFlag(flag)) { continue; } if (AMaskDefs[flag].DataType == typeof(string)) { field = dataFields[currentIndex]; } else if (AMaskDefs[flag].DataType == typeof(int?)) { field = int.Parse(dataFields[currentIndex]); } else if (AMaskDefs[flag].DataType == typeof(bool?)) { field = bool.Parse(dataFields[currentIndex]); } else if (AMaskDefs[flag].DataType == typeof(IList <string>)) { //TODO: Make sure these are the only possibilities (and are the right choices) field = new List <string>(dataFields[currentIndex].Split(flag == AMask.AMaskValues.CategoryList ? ',' : '\'')); } else if (AMaskDefs[flag].DataType == typeof(IList <AIDRelationType>)) { field = new List <AIDRelationType>(); foreach (string s in dataFields[currentIndex].Split('\'')) { ((List <AIDRelationType>)field).Add((AIDRelationType)int.Parse(s)); } } else if (AMaskDefs[flag].DataType == typeof(DateFlag)) { field = (DateFlag)int.Parse(dataFields[currentIndex]); } currentIndex++; AMaskDefs[flag].SetValue(field); } }
public AniDBFile(AniDBResponse fileResponse, FMask fMask, AMask aMask) : this() { if (fileResponse.Code != AniDBResponse.ReturnCode.FILE) throw new ArgumentException("Response is not a FILE response"); List<string> dataFields = new List<string>(); foreach (string[] sa in fileResponse.DataFields) dataFields.AddRange(sa); FID = int.Parse(dataFields[0]); int currentIndex = 1; for (int i = 39; /* 8*5 - 1 ie. 40 bits */ i >= 0; i--) { if (currentIndex >= dataFields.Count) break; FMask.FMaskValues flag = (FMask.FMaskValues)((long)Math.Pow(2, i)); if (!fMask.Mask.HasFlag(flag)) continue; //Parse value object field = null; if (dataFields[currentIndex] != "") if (FMaskFields[flag].DataType == typeof(string)) field = dataFields[currentIndex]; else if (FMaskFields[flag].DataType == typeof(int)) field = int.Parse(dataFields[currentIndex]); else if (FMaskFields[flag].DataType == typeof(short)) field = short.Parse(dataFields[currentIndex]); else if (FMaskFields[flag].DataType == typeof(bool)) field = short.Parse(dataFields[currentIndex]) == 1; else if (FMaskFields[flag].DataType == typeof(long)) field = long.Parse(dataFields[currentIndex]); else if (FMaskFields[flag].DataType == typeof(StateMask)) field = short.Parse(dataFields[currentIndex]); else if (FMaskFields[flag].DataType == typeof(IDictionary<int, byte>)) { string[] splitString = dataFields[currentIndex].Split('\''); Dictionary<int, byte> otherEpisodes = new Dictionary<int, byte>(); if (dataFields[currentIndex] != "") for (int j = 0; j < splitString.Length; j += 2) otherEpisodes.Add(int.Parse(splitString[j]), byte.Parse(splitString[j + 1])); field = otherEpisodes; } else if (FMaskFields[flag].DataType == typeof(IList<string>)) field = new List<string>(dataFields[currentIndex].Split('\'')); else if (FMaskFields[flag].DataType == typeof(IList<int>)) field = dataFields[currentIndex].Split('\'').Select(int.Parse).ToList(); FMaskFields[flag].SetValue(field); currentIndex++; } for (int i = 31; i >= 0; i--) { if (currentIndex >= dataFields.Count) break; AMask.AMaskValues flag = (AMask.AMaskValues)((uint)Math.Pow(2, i)); if (!aMask.Mask.HasFlag(flag)) continue; object field = null; if (AMaskFields[flag].DataType == typeof (int)) field = int.Parse(dataFields[currentIndex]); else if (AMaskFields[flag].DataType == typeof(string)) field = dataFields[currentIndex]; else if (AMaskFields[flag].DataType == typeof(IList<string>)) field = new List<string>(dataFields[currentIndex].Split('\'')); else if (AMaskFields[flag].DataType == typeof(IList<int>)) field = dataFields[currentIndex].Split('\'').Select(int.Parse).ToList(); else if (AMaskFields[flag].DataType == typeof(IList<Anime.AIDRelationType>)) { field = new List<Anime.AIDRelationType>(); foreach (string s in dataFields[currentIndex].Split('\'')) ((List<Anime.AIDRelationType>)field).Add((Anime.AIDRelationType)int.Parse(s)); } AMaskFields[flag].SetValue(field); currentIndex++; } }
public Anime(AniDBResponse response, AMask aMask) : this() { if (response.Code != AniDBResponse.ReturnCode.ANIME && response.Code != AniDBResponse.ReturnCode.ANIME_BEST_MATCH) throw new ArgumentException("Response is not an ANIME response"); List<string> dataFields = new List<string>(); foreach (string[] s in response.DataFields) dataFields.AddRange(s); int currentIndex = 0; for (int i = 55; i >= 0; i--) { if (currentIndex >= dataFields.Count) break; AMask.AMaskValues flag = (AMask.AMaskValues)((ulong)Math.Pow(2, i)); object field = null; if (!aMask.Mask.HasFlag(flag)) continue; if (AMaskDefs[flag].DataType == typeof (string)) field = dataFields[currentIndex]; else if (AMaskDefs[flag].DataType == typeof(int?)) field = int.Parse(dataFields[currentIndex]); else if (AMaskDefs[flag].DataType == typeof(bool?)) field = bool.Parse(dataFields[currentIndex]); else if (AMaskDefs[flag].DataType == typeof(IList<string>)) //TODO: Make sure these are the only possibilities (and are the right choices) field = new List<string>(dataFields[currentIndex].Split(flag == AMask.AMaskValues.CategoryList ? ',' : '\'')); else if (AMaskDefs[flag].DataType == typeof(IList<AIDRelationType>)) { field = new List<AIDRelationType>(); foreach (string s in dataFields[currentIndex].Split('\'')) ((List<AIDRelationType>)field).Add((AIDRelationType)int.Parse(s)); } else if (AMaskDefs[flag].DataType == typeof(DateFlag)) field = (DateFlag) int.Parse(dataFields[currentIndex]); currentIndex++; AMaskDefs[flag].SetValue(field); } }
private void SetAMaskValue(AMask.AMaskValues a, object value) { AMaskDefs[a].SetValue(value); }
private object GetAMaskValue(AMask.AMaskValues a) { return AMaskDefs[a].GetValue(); }