/// <summary> /// Set the data list /// </summary> /// <typeparam name="TLayoutModel"></typeparam> /// <param name="enumVal"></param> /// <returns></returns> public void SetData <TLayoutModel>(EnumReaderLayoutType enumVal, TLayoutModel modelList, int position = -1) where TLayoutModel : class { if (this.FileData.ContainsKey(enumVal) == true) { this.FileData[enumVal] = modelList; } else { this.FileData.Add(enumVal, modelList); } int fIndex = this.LayoutOrder.FindIndex(e => e == enumVal); if (fIndex == position) { return; } if (fIndex >= 0) { this.LayoutOrder.Insert(position, enumVal); } else { this.LayoutOrder.Add(enumVal); } }
/// <summary> /// Delete the model /// </summary> /// <param name="enumVal"></param> public void Delete(EnumReaderLayoutType enumVal) { this.LayoutOrder.Remove(enumVal); if (this.FileData.ContainsKey(enumVal) == true) { this.FileData.Remove(enumVal); } }
internal LayoutModel <OptionalHeaderDataDirImageOnly> GetDataDirectory(EnumReaderLayoutType dataDirType) { if (!(dataDirType >= EnumReaderLayoutType.OPT_HEADER_DATADIR_EXPORT_TABLE && dataDirType <= EnumReaderLayoutType.OPT_HEADER_DATADIR_RESERVED)) { throw new System.ArgumentOutOfRangeException("dataDirType"); } return(this.DataStore.GetData <LayoutModel <OptionalHeaderDataDirImageOnly> >(dataDirType)); }
/// <summary> /// Get the data /// </summary> /// <typeparam name="TLayoutModel"></typeparam> /// <param name="enumVal"></param> /// <returns></returns> public TLayoutModel GetData <TLayoutModel>(EnumReaderLayoutType enumVal) where TLayoutModel : class { TLayoutModel model = null; if (this.FileData.ContainsKey(enumVal) == true) { model = this.FileData[enumVal] as TLayoutModel; } return(model); }
/// <summary> /// Each data directory gives the address and size of a table or string that Windows uses. /// These data directory entries are all loaded into memory so that the system can use them /// at run time. A data directory is an 8byte field. /// </summary> internal void ReadOptHeaderDataDirectoriesImageOnly() { // Read the data directories OptHeaderDataDirectoriesImageOnly dirsImage = new OptHeaderDataDirectoriesImageOnly(); for (int indx = 0; indx < this.DataStore.NumberOfDataDirImageOnly; ++indx) { EnumReaderLayoutType enumVal = (EnumReaderLayoutType) ((int)EnumReaderLayoutType.OPT_HEADER_DATADIR_EXPORT_TABLE + indx); dirsImage.Add(enumVal, this.ReaderStrategy.ReadLayout <OptionalHeaderDataDirImageOnly>()); } this.DataStore.OptHDataDirImages = dirsImage; }
/// <summary> /// Get the data /// </summary> /// <typeparam name="TLayoutModel"></typeparam> /// <param name="index"></param> /// <returns></returns> public TLayoutModel GetData <TLayoutModel>(int index) where TLayoutModel : class { if (!(index >= 0 && index < this.FileData.Count)) { return(null); } EnumReaderLayoutType enumVal = this.LayoutOrder[index]; TLayoutModel model = null; if (this.FileData.ContainsKey(enumVal) == true) { model = this.FileData[enumVal] as TLayoutModel; } return(model); }
/// <summary> /// Basic Constructor /// </summary> /// <param name="layoutType"></param> public COFFReaderHandler(EnumReaderLayoutType layoutType) { this.LayoutType = layoutType; }