mirror of
https://github.com/reactos/reactos.git
synced 2025-08-05 01:55:39 +00:00
Import TechBot
svn path=/trunk/; revision=13064
This commit is contained in:
parent
568b27baeb
commit
9dab4509fa
94 changed files with 24386 additions and 0 deletions
175
irc/TechBot/CHMLibrary/CHMDecoding/UrlTableEntry.cs
Normal file
175
irc/TechBot/CHMLibrary/CHMDecoding/UrlTableEntry.cs
Normal file
|
@ -0,0 +1,175 @@
|
|||
using System;
|
||||
using System.IO;
|
||||
|
||||
namespace HtmlHelp.ChmDecoding
|
||||
{
|
||||
/// <summary>
|
||||
/// The class <c>UrlTableEntry</c> stores data for an URL-Table entry
|
||||
/// </summary>
|
||||
internal sealed class UrlTableEntry
|
||||
{
|
||||
/// <summary>
|
||||
/// Internal member storing the offset of this entry
|
||||
/// </summary>
|
||||
private int _entryOffset = 0;
|
||||
/// <summary>
|
||||
/// Internal member storing a unique id
|
||||
/// </summary>
|
||||
private uint _uniqueID = 0;
|
||||
/// <summary>
|
||||
/// Internal member storing the topics index
|
||||
/// </summary>
|
||||
private int _topicsIndex = 0;
|
||||
/// <summary>
|
||||
/// Internal member storing the offset in the urlstr table
|
||||
/// </summary>
|
||||
private int _urlStrOffset = 0;
|
||||
/// <summary>
|
||||
/// Internal member storing the associated chmfile object
|
||||
/// </summary>
|
||||
private CHMFile _associatedFile = null;
|
||||
|
||||
/// <summary>
|
||||
/// Constructor of the class
|
||||
/// </summary>
|
||||
/// <param name="uniqueID">unique id</param>
|
||||
/// <param name="entryOffset">offset of the entry</param>
|
||||
/// <param name="topicIndex">topic index</param>
|
||||
/// <param name="urlstrOffset">urlstr offset for filename</param>
|
||||
public UrlTableEntry(uint uniqueID, int entryOffset, int topicIndex, int urlstrOffset) : this(uniqueID, entryOffset, topicIndex, urlstrOffset, null)
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Constructor of the class
|
||||
/// </summary>
|
||||
/// <param name="uniqueID">unique id</param>
|
||||
/// <param name="entryOffset">offset of the entry</param>
|
||||
/// <param name="topicIndex">topic index</param>
|
||||
/// <param name="urlstrOffset">urlstr offset for filename</param>
|
||||
/// <param name="associatedFile">associated chm file</param>
|
||||
internal UrlTableEntry(uint uniqueID, int entryOffset, int topicIndex, int urlstrOffset, CHMFile associatedFile)
|
||||
{
|
||||
_uniqueID = uniqueID;
|
||||
_entryOffset = entryOffset;
|
||||
_topicsIndex = topicIndex;
|
||||
_urlStrOffset = urlstrOffset;
|
||||
_associatedFile = associatedFile;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Standard constructor
|
||||
/// </summary>
|
||||
internal UrlTableEntry()
|
||||
{
|
||||
}
|
||||
|
||||
#region Data dumping
|
||||
/// <summary>
|
||||
/// Dump the class data to a binary writer
|
||||
/// </summary>
|
||||
/// <param name="writer">writer to write the data</param>
|
||||
internal void Dump(ref BinaryWriter writer)
|
||||
{
|
||||
writer.Write( _urlStrOffset );
|
||||
writer.Write( _entryOffset );
|
||||
writer.Write( _topicsIndex );
|
||||
writer.Write( _urlStrOffset );
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Reads the object data from a dump store
|
||||
/// </summary>
|
||||
/// <param name="reader">reader to read the data</param>
|
||||
internal void ReadDump(ref BinaryReader reader)
|
||||
{
|
||||
_urlStrOffset = reader.ReadInt32();
|
||||
_entryOffset = reader.ReadInt32();
|
||||
_topicsIndex = reader.ReadInt32();
|
||||
_urlStrOffset = reader.ReadInt32();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sets the associated CHMFile instance
|
||||
/// </summary>
|
||||
/// <param name="associatedFile">instance to set</param>
|
||||
internal void SetCHMFile(CHMFile associatedFile)
|
||||
{
|
||||
_associatedFile = associatedFile;
|
||||
}
|
||||
#endregion
|
||||
|
||||
/// <summary>
|
||||
/// Gets the unique id of the entry
|
||||
/// </summary>
|
||||
internal uint UniqueID
|
||||
{
|
||||
get {return _uniqueID; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the offset of the entry
|
||||
/// </summary>
|
||||
internal int EntryOffset
|
||||
{
|
||||
get {return _entryOffset; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the topics index
|
||||
/// </summary>
|
||||
internal int TopicIndex
|
||||
{
|
||||
get {return _topicsIndex; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the urlstr offset
|
||||
/// </summary>
|
||||
internal int UrlstrOffset
|
||||
{
|
||||
get { return _urlStrOffset; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the url of the entry
|
||||
/// </summary>
|
||||
public string URL
|
||||
{
|
||||
get
|
||||
{
|
||||
if(_associatedFile == null)
|
||||
return String.Empty;
|
||||
|
||||
if(_associatedFile.UrlstrFile == null)
|
||||
return String.Empty;
|
||||
|
||||
string sTemp = (string)_associatedFile.UrlstrFile.GetURLatOffset( _urlStrOffset );
|
||||
|
||||
if( sTemp == null)
|
||||
return String.Empty;
|
||||
|
||||
return sTemp;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the associated topic for this url entry
|
||||
/// </summary>
|
||||
internal TopicEntry Topic
|
||||
{
|
||||
get
|
||||
{
|
||||
if(_associatedFile == null)
|
||||
return null;
|
||||
|
||||
if(_associatedFile.TopicsFile == null)
|
||||
return null;
|
||||
|
||||
TopicEntry tentry = _associatedFile.TopicsFile[ _topicsIndex*16 ];
|
||||
|
||||
return tentry;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue