unit Chilkat.Spider;

{
  Pascal wrapper for Chilkat Spider.
  Auto-generated by PascalWrapperGenerator -- do not edit manually.
}

{$IFDEF FPC}
  {$MODE DELPHI}
{$ENDIF}

interface

uses
  SysUtils,
  Chilkat.Base;

type

  { TSpider wraps CkSpider via the C bridge layer. }
  TSpider = class(TChilkatBase)
  private
    FOnAbortCheck: TChilkatAbortCheckEvent;
    FOnPercentDone: TChilkatPercentDoneEvent;
    FOnProgressInfo: TChilkatProgressInfoEvent;
    function  GetLastErrorHtml: string;
    function  GetLastErrorText: string;
    function  GetLastErrorXml: string;
    function  GetVersion: string;
    function  GetDebugLogFilePath: string;
    procedure SetDebugLogFilePath(AValue: string);
    function  GetVerboseLogging: Boolean;
    procedure SetVerboseLogging(AValue: Boolean);
    function  GetLastMethodSuccess: Boolean;
    procedure SetLastMethodSuccess(AValue: Boolean);
    function  GetAvoidHttps: Boolean;
    procedure SetAvoidHttps(AValue: Boolean);
    function  GetCacheDir: string;
    procedure SetCacheDir(AValue: string);
    function  GetChopAtQuery: Boolean;
    procedure SetChopAtQuery(AValue: Boolean);
    function  GetConnectTimeout: Integer;
    procedure SetConnectTimeout(AValue: Integer);
    function  GetDomain: string;
    function  GetFetchFromCache: Boolean;
    procedure SetFetchFromCache(AValue: Boolean);
    function  GetHeartbeatMs: Integer;
    procedure SetHeartbeatMs(AValue: Integer);
    function  GetLastFromCache: Boolean;
    function  GetLastHtml: string;
    function  GetLastHtmlDescription: string;
    function  GetLastHtmlKeywords: string;
    function  GetLastHtmlTitle: string;
    function  GetLastModDateStr: string;
    function  GetLastUrl: string;
    function  GetMaxResponseSize: Integer;
    procedure SetMaxResponseSize(AValue: Integer);
    function  GetMaxUrlLen: Integer;
    procedure SetMaxUrlLen(AValue: Integer);
    function  GetNumAvoidPatterns: Integer;
    function  GetNumFailed: Integer;
    function  GetNumOutboundLinks: Integer;
    function  GetNumSpidered: Integer;
    function  GetNumUnspidered: Integer;
    function  GetPreferIpv6: Boolean;
    procedure SetPreferIpv6(AValue: Boolean);
    function  GetProxyDomain: string;
    procedure SetProxyDomain(AValue: string);
    function  GetProxyLogin: string;
    procedure SetProxyLogin(AValue: string);
    function  GetProxyPassword: string;
    procedure SetProxyPassword(AValue: string);
    function  GetProxyPort: Integer;
    procedure SetProxyPort(AValue: Integer);
    function  GetReadTimeout: Integer;
    procedure SetReadTimeout(AValue: Integer);
    function  GetUpdateCache: Boolean;
    procedure SetUpdateCache(AValue: Boolean);
    function  GetUserAgent: string;
    procedure SetUserAgent(AValue: string);
    function  GetWindDownCount: Integer;
    procedure SetWindDownCount(AValue: Integer);
    function  GetAbortCurrent: Boolean;
    procedure SetAbortCurrent(AValue: Boolean);
    function  GetWasRedirected: Boolean;
    function  GetFinalRedirectUrl: string;
    procedure SetOnAbortCheck(AValue: TChilkatAbortCheckEvent);
    procedure SetOnPercentDone(AValue: TChilkatPercentDoneEvent);
    procedure SetOnProgressInfo(AValue: TChilkatProgressInfoEvent);
  public
    constructor Create;
    destructor  Destroy; override;

    property LastErrorHtml: string read GetLastErrorHtml;
    property LastErrorText: string read GetLastErrorText;
    property LastErrorXml: string read GetLastErrorXml;
    property Version: string read GetVersion;
    property DebugLogFilePath: string read GetDebugLogFilePath write SetDebugLogFilePath;
    property VerboseLogging: Boolean read GetVerboseLogging write SetVerboseLogging;
    property LastMethodSuccess: Boolean read GetLastMethodSuccess write SetLastMethodSuccess;
    property AvoidHttps: Boolean read GetAvoidHttps write SetAvoidHttps;
    property CacheDir: string read GetCacheDir write SetCacheDir;
    property ChopAtQuery: Boolean read GetChopAtQuery write SetChopAtQuery;
    property ConnectTimeout: Integer read GetConnectTimeout write SetConnectTimeout;
    property Domain: string read GetDomain;
    property FetchFromCache: Boolean read GetFetchFromCache write SetFetchFromCache;
    property HeartbeatMs: Integer read GetHeartbeatMs write SetHeartbeatMs;
    property LastFromCache: Boolean read GetLastFromCache;
    property LastHtml: string read GetLastHtml;
    property LastHtmlDescription: string read GetLastHtmlDescription;
    property LastHtmlKeywords: string read GetLastHtmlKeywords;
    property LastHtmlTitle: string read GetLastHtmlTitle;
    property LastModDateStr: string read GetLastModDateStr;
    property LastUrl: string read GetLastUrl;
    property MaxResponseSize: Integer read GetMaxResponseSize write SetMaxResponseSize;
    property MaxUrlLen: Integer read GetMaxUrlLen write SetMaxUrlLen;
    property NumAvoidPatterns: Integer read GetNumAvoidPatterns;
    property NumFailed: Integer read GetNumFailed;
    property NumOutboundLinks: Integer read GetNumOutboundLinks;
    property NumSpidered: Integer read GetNumSpidered;
    property NumUnspidered: Integer read GetNumUnspidered;
    property PreferIpv6: Boolean read GetPreferIpv6 write SetPreferIpv6;
    property ProxyDomain: string read GetProxyDomain write SetProxyDomain;
    property ProxyLogin: string read GetProxyLogin write SetProxyLogin;
    property ProxyPassword: string read GetProxyPassword write SetProxyPassword;
    property ProxyPort: Integer read GetProxyPort write SetProxyPort;
    property ReadTimeout: Integer read GetReadTimeout write SetReadTimeout;
    property UpdateCache: Boolean read GetUpdateCache write SetUpdateCache;
    property UserAgent: string read GetUserAgent write SetUserAgent;
    property WindDownCount: Integer read GetWindDownCount write SetWindDownCount;
    property AbortCurrent: Boolean read GetAbortCurrent write SetAbortCurrent;
    property WasRedirected: Boolean read GetWasRedirected;
    property FinalRedirectUrl: string read GetFinalRedirectUrl;

    { Event callbacks.  Return True from OnAbortCheck / OnPercentDone
      to abort the running method.  Callbacks are invoked on the
      thread that called the Chilkat method.  The HeartbeatMs
      property controls the AbortCheck frequency. }
    property OnAbortCheck: TChilkatAbortCheckEvent read FOnAbortCheck write SetOnAbortCheck;
    property OnPercentDone: TChilkatPercentDoneEvent read FOnPercentDone write SetOnPercentDone;
    property OnProgressInfo: TChilkatProgressInfoEvent read FOnProgressInfo write SetOnProgressInfo;

    procedure AddAvoidOutboundLinkPattern(const pattern: string);
    procedure AddAvoidPattern(const pattern: string);
    procedure AddMustMatchPattern(const pattern: string);
    procedure AddUnspidered(const url: string);
    function  CanonicalizeUrl(const url: string): string;
    procedure ClearFailedUrls;
    procedure ClearOutboundLinks;
    procedure ClearSpideredUrls;
    function  CrawlNext: Boolean;
    function  FetchRobotsText: string;
    function  GetAvoidPattern(index: Integer): string;
    function  GetBaseDomain(const domain: string): string;
    function  GetFailedUrl(index: Integer): string;
    function  GetOutboundLink(index: Integer): string;
    function  GetSpideredUrl(index: Integer): string;
    function  GetUnspideredUrl(index: Integer): string;
    function  GetUrlDomain(const url: string): string;
    procedure Initialize(const domain: string);
    function  RecrawlLast: Boolean;
    procedure SkipUnspidered(index: Integer);
    procedure SleepMs(numMilliseconds: Integer);
  end;

implementation

uses
  CkDllLoader,
  Chilkat.Utils;

{ ---- C bridge function pointer types ---- }
type
  TCkSpider_Create  = function(): Pointer; cdecl;
  TCkSpider_Dispose = procedure(handle: Pointer); cdecl;
  TCkBridgeAbortCheckCb   = function(userData: Pointer): Integer; cdecl;
  TCkBridgePercentDoneCb  = function(pctDone: Integer; userData: Pointer): Integer; cdecl;
  TCkBridgeProgressInfoCb = procedure(name: PAnsiChar; value: PAnsiChar; userData: Pointer); cdecl;
  TCkSpider_SetAbortCheckCallback   = procedure(handle: Pointer; cb: TCkBridgeAbortCheckCb; userData: Pointer); cdecl;
  TCkSpider_SetPercentDoneCallback  = procedure(handle: Pointer; cb: TCkBridgePercentDoneCb; userData: Pointer); cdecl;
  TCkSpider_SetProgressInfoCallback = procedure(handle: Pointer; cb: TCkBridgeProgressInfoCb; userData: Pointer); cdecl;
  TCkSpider_get_LastErrorHtml = function(handle: Pointer): PAnsiChar; cdecl;
  TCkSpider_get_LastErrorText = function(handle: Pointer): PAnsiChar; cdecl;
  TCkSpider_get_LastErrorXml = function(handle: Pointer): PAnsiChar; cdecl;
  TCkSpider_get_Version = function(handle: Pointer): PAnsiChar; cdecl;
  TCkSpider_get_DebugLogFilePath = function(handle: Pointer): PAnsiChar; cdecl;
  TCkSpider_put_DebugLogFilePath = procedure(handle: Pointer; value: PAnsiChar); cdecl;
  TCkSpider_get_VerboseLogging = function(handle: Pointer): LongBool; cdecl;
  TCkSpider_put_VerboseLogging = procedure(handle: Pointer; value: LongBool); cdecl;
  TCkSpider_get_LastMethodSuccess = function(handle: Pointer): LongBool; cdecl;
  TCkSpider_put_LastMethodSuccess = procedure(handle: Pointer; value: LongBool); cdecl;
  TCkSpider_get_AvoidHttps = function(handle: Pointer): LongBool; cdecl;
  TCkSpider_put_AvoidHttps = procedure(handle: Pointer; value: LongBool); cdecl;
  TCkSpider_get_CacheDir = function(handle: Pointer): PAnsiChar; cdecl;
  TCkSpider_put_CacheDir = procedure(handle: Pointer; value: PAnsiChar); cdecl;
  TCkSpider_get_ChopAtQuery = function(handle: Pointer): LongBool; cdecl;
  TCkSpider_put_ChopAtQuery = procedure(handle: Pointer; value: LongBool); cdecl;
  TCkSpider_get_ConnectTimeout = function(handle: Pointer): Integer; cdecl;
  TCkSpider_put_ConnectTimeout = procedure(handle: Pointer; value: Integer); cdecl;
  TCkSpider_get_Domain = function(handle: Pointer): PAnsiChar; cdecl;
  TCkSpider_get_FetchFromCache = function(handle: Pointer): LongBool; cdecl;
  TCkSpider_put_FetchFromCache = procedure(handle: Pointer; value: LongBool); cdecl;
  TCkSpider_get_HeartbeatMs = function(handle: Pointer): Integer; cdecl;
  TCkSpider_put_HeartbeatMs = procedure(handle: Pointer; value: Integer); cdecl;
  TCkSpider_get_LastFromCache = function(handle: Pointer): LongBool; cdecl;
  TCkSpider_get_LastHtml = function(handle: Pointer): PAnsiChar; cdecl;
  TCkSpider_get_LastHtmlDescription = function(handle: Pointer): PAnsiChar; cdecl;
  TCkSpider_get_LastHtmlKeywords = function(handle: Pointer): PAnsiChar; cdecl;
  TCkSpider_get_LastHtmlTitle = function(handle: Pointer): PAnsiChar; cdecl;
  TCkSpider_get_LastModDateStr = function(handle: Pointer): PAnsiChar; cdecl;
  TCkSpider_get_LastUrl = function(handle: Pointer): PAnsiChar; cdecl;
  TCkSpider_get_MaxResponseSize = function(handle: Pointer): Integer; cdecl;
  TCkSpider_put_MaxResponseSize = procedure(handle: Pointer; value: Integer); cdecl;
  TCkSpider_get_MaxUrlLen = function(handle: Pointer): Integer; cdecl;
  TCkSpider_put_MaxUrlLen = procedure(handle: Pointer; value: Integer); cdecl;
  TCkSpider_get_NumAvoidPatterns = function(handle: Pointer): Integer; cdecl;
  TCkSpider_get_NumFailed = function(handle: Pointer): Integer; cdecl;
  TCkSpider_get_NumOutboundLinks = function(handle: Pointer): Integer; cdecl;
  TCkSpider_get_NumSpidered = function(handle: Pointer): Integer; cdecl;
  TCkSpider_get_NumUnspidered = function(handle: Pointer): Integer; cdecl;
  TCkSpider_get_PreferIpv6 = function(handle: Pointer): LongBool; cdecl;
  TCkSpider_put_PreferIpv6 = procedure(handle: Pointer; value: LongBool); cdecl;
  TCkSpider_get_ProxyDomain = function(handle: Pointer): PAnsiChar; cdecl;
  TCkSpider_put_ProxyDomain = procedure(handle: Pointer; value: PAnsiChar); cdecl;
  TCkSpider_get_ProxyLogin = function(handle: Pointer): PAnsiChar; cdecl;
  TCkSpider_put_ProxyLogin = procedure(handle: Pointer; value: PAnsiChar); cdecl;
  TCkSpider_get_ProxyPassword = function(handle: Pointer): PAnsiChar; cdecl;
  TCkSpider_put_ProxyPassword = procedure(handle: Pointer; value: PAnsiChar); cdecl;
  TCkSpider_get_ProxyPort = function(handle: Pointer): Integer; cdecl;
  TCkSpider_put_ProxyPort = procedure(handle: Pointer; value: Integer); cdecl;
  TCkSpider_get_ReadTimeout = function(handle: Pointer): Integer; cdecl;
  TCkSpider_put_ReadTimeout = procedure(handle: Pointer; value: Integer); cdecl;
  TCkSpider_get_UpdateCache = function(handle: Pointer): LongBool; cdecl;
  TCkSpider_put_UpdateCache = procedure(handle: Pointer; value: LongBool); cdecl;
  TCkSpider_get_UserAgent = function(handle: Pointer): PAnsiChar; cdecl;
  TCkSpider_put_UserAgent = procedure(handle: Pointer; value: PAnsiChar); cdecl;
  TCkSpider_get_WindDownCount = function(handle: Pointer): Integer; cdecl;
  TCkSpider_put_WindDownCount = procedure(handle: Pointer; value: Integer); cdecl;
  TCkSpider_get_AbortCurrent = function(handle: Pointer): LongBool; cdecl;
  TCkSpider_put_AbortCurrent = procedure(handle: Pointer; value: LongBool); cdecl;
  TCkSpider_get_WasRedirected = function(handle: Pointer): LongBool; cdecl;
  TCkSpider_get_FinalRedirectUrl = function(handle: Pointer): PAnsiChar; cdecl;
  TCkSpider_AddAvoidOutboundLinkPattern = procedure(handle: Pointer; pattern: PAnsiChar); cdecl;
  TCkSpider_AddAvoidPattern = procedure(handle: Pointer; pattern: PAnsiChar); cdecl;
  TCkSpider_AddMustMatchPattern = procedure(handle: Pointer; pattern: PAnsiChar); cdecl;
  TCkSpider_AddUnspidered = procedure(handle: Pointer; url: PAnsiChar); cdecl;
  TCkSpider_CanonicalizeUrl = function(handle: Pointer; url: PAnsiChar): PAnsiChar; cdecl;
  TCkSpider_ClearFailedUrls = procedure(handle: Pointer); cdecl;
  TCkSpider_ClearOutboundLinks = procedure(handle: Pointer); cdecl;
  TCkSpider_ClearSpideredUrls = procedure(handle: Pointer); cdecl;
  TCkSpider_CrawlNext = function(handle: Pointer): LongBool; cdecl;
  TCkSpider_FetchRobotsText = function(handle: Pointer): PAnsiChar; cdecl;
  TCkSpider_GetAvoidPattern = function(handle: Pointer; index: Integer): PAnsiChar; cdecl;
  TCkSpider_GetBaseDomain = function(handle: Pointer; domain: PAnsiChar): PAnsiChar; cdecl;
  TCkSpider_GetFailedUrl = function(handle: Pointer; index: Integer): PAnsiChar; cdecl;
  TCkSpider_GetOutboundLink = function(handle: Pointer; index: Integer): PAnsiChar; cdecl;
  TCkSpider_GetSpideredUrl = function(handle: Pointer; index: Integer): PAnsiChar; cdecl;
  TCkSpider_GetUnspideredUrl = function(handle: Pointer; index: Integer): PAnsiChar; cdecl;
  TCkSpider_GetUrlDomain = function(handle: Pointer; url: PAnsiChar): PAnsiChar; cdecl;
  TCkSpider_Initialize = procedure(handle: Pointer; domain: PAnsiChar); cdecl;
  TCkSpider_RecrawlLast = function(handle: Pointer): LongBool; cdecl;
  TCkSpider_SkipUnspidered = procedure(handle: Pointer; index: Integer); cdecl;
  TCkSpider_SleepMs = procedure(handle: Pointer; numMilliseconds: Integer); cdecl;

{ ---- C bridge function pointer variables ---- }
var
  CkSpider_Create:  TCkSpider_Create  = nil;
  CkSpider_Dispose: TCkSpider_Dispose = nil;
  CkSpider_SetAbortCheckCallback:   TCkSpider_SetAbortCheckCallback   = nil;
  CkSpider_SetPercentDoneCallback:  TCkSpider_SetPercentDoneCallback  = nil;
  CkSpider_SetProgressInfoCallback: TCkSpider_SetProgressInfoCallback = nil;
  CkSpider_get_LastErrorHtml: TCkSpider_get_LastErrorHtml = nil;
  CkSpider_get_LastErrorText: TCkSpider_get_LastErrorText = nil;
  CkSpider_get_LastErrorXml: TCkSpider_get_LastErrorXml = nil;
  CkSpider_get_Version: TCkSpider_get_Version = nil;
  CkSpider_get_DebugLogFilePath: TCkSpider_get_DebugLogFilePath = nil;
  CkSpider_put_DebugLogFilePath: TCkSpider_put_DebugLogFilePath = nil;
  CkSpider_get_VerboseLogging: TCkSpider_get_VerboseLogging = nil;
  CkSpider_put_VerboseLogging: TCkSpider_put_VerboseLogging = nil;
  CkSpider_get_LastMethodSuccess: TCkSpider_get_LastMethodSuccess = nil;
  CkSpider_put_LastMethodSuccess: TCkSpider_put_LastMethodSuccess = nil;
  CkSpider_get_AvoidHttps: TCkSpider_get_AvoidHttps = nil;
  CkSpider_put_AvoidHttps: TCkSpider_put_AvoidHttps = nil;
  CkSpider_get_CacheDir: TCkSpider_get_CacheDir = nil;
  CkSpider_put_CacheDir: TCkSpider_put_CacheDir = nil;
  CkSpider_get_ChopAtQuery: TCkSpider_get_ChopAtQuery = nil;
  CkSpider_put_ChopAtQuery: TCkSpider_put_ChopAtQuery = nil;
  CkSpider_get_ConnectTimeout: TCkSpider_get_ConnectTimeout = nil;
  CkSpider_put_ConnectTimeout: TCkSpider_put_ConnectTimeout = nil;
  CkSpider_get_Domain: TCkSpider_get_Domain = nil;
  CkSpider_get_FetchFromCache: TCkSpider_get_FetchFromCache = nil;
  CkSpider_put_FetchFromCache: TCkSpider_put_FetchFromCache = nil;
  CkSpider_get_HeartbeatMs: TCkSpider_get_HeartbeatMs = nil;
  CkSpider_put_HeartbeatMs: TCkSpider_put_HeartbeatMs = nil;
  CkSpider_get_LastFromCache: TCkSpider_get_LastFromCache = nil;
  CkSpider_get_LastHtml: TCkSpider_get_LastHtml = nil;
  CkSpider_get_LastHtmlDescription: TCkSpider_get_LastHtmlDescription = nil;
  CkSpider_get_LastHtmlKeywords: TCkSpider_get_LastHtmlKeywords = nil;
  CkSpider_get_LastHtmlTitle: TCkSpider_get_LastHtmlTitle = nil;
  CkSpider_get_LastModDateStr: TCkSpider_get_LastModDateStr = nil;
  CkSpider_get_LastUrl: TCkSpider_get_LastUrl = nil;
  CkSpider_get_MaxResponseSize: TCkSpider_get_MaxResponseSize = nil;
  CkSpider_put_MaxResponseSize: TCkSpider_put_MaxResponseSize = nil;
  CkSpider_get_MaxUrlLen: TCkSpider_get_MaxUrlLen = nil;
  CkSpider_put_MaxUrlLen: TCkSpider_put_MaxUrlLen = nil;
  CkSpider_get_NumAvoidPatterns: TCkSpider_get_NumAvoidPatterns = nil;
  CkSpider_get_NumFailed: TCkSpider_get_NumFailed = nil;
  CkSpider_get_NumOutboundLinks: TCkSpider_get_NumOutboundLinks = nil;
  CkSpider_get_NumSpidered: TCkSpider_get_NumSpidered = nil;
  CkSpider_get_NumUnspidered: TCkSpider_get_NumUnspidered = nil;
  CkSpider_get_PreferIpv6: TCkSpider_get_PreferIpv6 = nil;
  CkSpider_put_PreferIpv6: TCkSpider_put_PreferIpv6 = nil;
  CkSpider_get_ProxyDomain: TCkSpider_get_ProxyDomain = nil;
  CkSpider_put_ProxyDomain: TCkSpider_put_ProxyDomain = nil;
  CkSpider_get_ProxyLogin: TCkSpider_get_ProxyLogin = nil;
  CkSpider_put_ProxyLogin: TCkSpider_put_ProxyLogin = nil;
  CkSpider_get_ProxyPassword: TCkSpider_get_ProxyPassword = nil;
  CkSpider_put_ProxyPassword: TCkSpider_put_ProxyPassword = nil;
  CkSpider_get_ProxyPort: TCkSpider_get_ProxyPort = nil;
  CkSpider_put_ProxyPort: TCkSpider_put_ProxyPort = nil;
  CkSpider_get_ReadTimeout: TCkSpider_get_ReadTimeout = nil;
  CkSpider_put_ReadTimeout: TCkSpider_put_ReadTimeout = nil;
  CkSpider_get_UpdateCache: TCkSpider_get_UpdateCache = nil;
  CkSpider_put_UpdateCache: TCkSpider_put_UpdateCache = nil;
  CkSpider_get_UserAgent: TCkSpider_get_UserAgent = nil;
  CkSpider_put_UserAgent: TCkSpider_put_UserAgent = nil;
  CkSpider_get_WindDownCount: TCkSpider_get_WindDownCount = nil;
  CkSpider_put_WindDownCount: TCkSpider_put_WindDownCount = nil;
  CkSpider_get_AbortCurrent: TCkSpider_get_AbortCurrent = nil;
  CkSpider_put_AbortCurrent: TCkSpider_put_AbortCurrent = nil;
  CkSpider_get_WasRedirected: TCkSpider_get_WasRedirected = nil;
  CkSpider_get_FinalRedirectUrl: TCkSpider_get_FinalRedirectUrl = nil;
  CkSpider_AddAvoidOutboundLinkPattern: TCkSpider_AddAvoidOutboundLinkPattern = nil;
  CkSpider_AddAvoidPattern: TCkSpider_AddAvoidPattern = nil;
  CkSpider_AddMustMatchPattern: TCkSpider_AddMustMatchPattern = nil;
  CkSpider_AddUnspidered: TCkSpider_AddUnspidered = nil;
  CkSpider_CanonicalizeUrl: TCkSpider_CanonicalizeUrl = nil;
  CkSpider_ClearFailedUrls: TCkSpider_ClearFailedUrls = nil;
  CkSpider_ClearOutboundLinks: TCkSpider_ClearOutboundLinks = nil;
  CkSpider_ClearSpideredUrls: TCkSpider_ClearSpideredUrls = nil;
  CkSpider_CrawlNext: TCkSpider_CrawlNext = nil;
  CkSpider_FetchRobotsText: TCkSpider_FetchRobotsText = nil;
  CkSpider_GetAvoidPattern: TCkSpider_GetAvoidPattern = nil;
  CkSpider_GetBaseDomain: TCkSpider_GetBaseDomain = nil;
  CkSpider_GetFailedUrl: TCkSpider_GetFailedUrl = nil;
  CkSpider_GetOutboundLink: TCkSpider_GetOutboundLink = nil;
  CkSpider_GetSpideredUrl: TCkSpider_GetSpideredUrl = nil;
  CkSpider_GetUnspideredUrl: TCkSpider_GetUnspideredUrl = nil;
  CkSpider_GetUrlDomain: TCkSpider_GetUrlDomain = nil;
  CkSpider_Initialize: TCkSpider_Initialize = nil;
  CkSpider_RecrawlLast: TCkSpider_RecrawlLast = nil;
  CkSpider_SkipUnspidered: TCkSpider_SkipUnspidered = nil;
  CkSpider_SleepMs: TCkSpider_SleepMs = nil;

constructor TSpider.Create;
begin
  inherited Create;
  FHandle := CkSpider_Create();
end;

destructor TSpider.Destroy;
begin
  if FHandle <> nil then
    CkSpider_Dispose(FHandle);
  FHandle := nil;
  inherited;
end;

{ ---- Event callback thunks ---- }
{ Standalone cdecl functions registered with the C bridge.  The bridge
  passes back the userData pointer, which carries the Pascal object
  instance.  A non-zero return value aborts the running method. }

function TSpider_AbortCheckThunk(userData: Pointer): Integer; cdecl;
var
  obj: TSpider;
begin
  Result := 0;
  obj := TSpider(userData);
  if Assigned(obj) and Assigned(obj.FOnAbortCheck) then
    if obj.FOnAbortCheck(obj) then Result := 1;
end;

function TSpider_PercentDoneThunk(pctDone: Integer; userData: Pointer): Integer; cdecl;
var
  obj: TSpider;
begin
  Result := 0;
  obj := TSpider(userData);
  if Assigned(obj) and Assigned(obj.FOnPercentDone) then
    if obj.FOnPercentDone(obj, pctDone) then Result := 1;
end;

procedure TSpider_ProgressInfoThunk(name: PAnsiChar; value: PAnsiChar; userData: Pointer); cdecl;
var
  obj: TSpider;
begin
  obj := TSpider(userData);
  if Assigned(obj) and Assigned(obj.FOnProgressInfo) then
    obj.FOnProgressInfo(obj, CkToStr(name), CkToStr(value));
end;

procedure TSpider.SetOnAbortCheck(AValue: TChilkatAbortCheckEvent);
begin
  FOnAbortCheck := AValue;
  if Assigned(AValue) then
    CkSpider_SetAbortCheckCallback(FHandle, @TSpider_AbortCheckThunk, Self)
  else
    CkSpider_SetAbortCheckCallback(FHandle, nil, nil);
end;

procedure TSpider.SetOnPercentDone(AValue: TChilkatPercentDoneEvent);
begin
  FOnPercentDone := AValue;
  if Assigned(AValue) then
    CkSpider_SetPercentDoneCallback(FHandle, @TSpider_PercentDoneThunk, Self)
  else
    CkSpider_SetPercentDoneCallback(FHandle, nil, nil);
end;

procedure TSpider.SetOnProgressInfo(AValue: TChilkatProgressInfoEvent);
begin
  FOnProgressInfo := AValue;
  if Assigned(AValue) then
    CkSpider_SetProgressInfoCallback(FHandle, @TSpider_ProgressInfoThunk, Self)
  else
    CkSpider_SetProgressInfoCallback(FHandle, nil, nil);
end;

function TSpider.GetLastErrorHtml: string;
begin
  Result := CkToStr(CkSpider_get_LastErrorHtml(FHandle));
end;

function TSpider.GetLastErrorText: string;
begin
  Result := CkToStr(CkSpider_get_LastErrorText(FHandle));
end;

function TSpider.GetLastErrorXml: string;
begin
  Result := CkToStr(CkSpider_get_LastErrorXml(FHandle));
end;

function TSpider.GetVersion: string;
begin
  Result := CkToStr(CkSpider_get_Version(FHandle));
end;

function TSpider.GetDebugLogFilePath: string;
begin
  Result := CkToStr(CkSpider_get_DebugLogFilePath(FHandle));
end;

procedure TSpider.SetDebugLogFilePath(AValue: string);
begin
  CkSpider_put_DebugLogFilePath(FHandle, PAnsiChar(StrToCk(AValue)));
end;

function TSpider.GetVerboseLogging: Boolean;
begin
  Result := Boolean(CkSpider_get_VerboseLogging(FHandle));
end;

procedure TSpider.SetVerboseLogging(AValue: Boolean);
begin
  CkSpider_put_VerboseLogging(FHandle, LongBool(AValue));
end;

function TSpider.GetLastMethodSuccess: Boolean;
begin
  Result := Boolean(CkSpider_get_LastMethodSuccess(FHandle));
end;

procedure TSpider.SetLastMethodSuccess(AValue: Boolean);
begin
  CkSpider_put_LastMethodSuccess(FHandle, LongBool(AValue));
end;

function TSpider.GetAvoidHttps: Boolean;
begin
  Result := Boolean(CkSpider_get_AvoidHttps(FHandle));
end;

procedure TSpider.SetAvoidHttps(AValue: Boolean);
begin
  CkSpider_put_AvoidHttps(FHandle, LongBool(AValue));
end;

function TSpider.GetCacheDir: string;
begin
  Result := CkToStr(CkSpider_get_CacheDir(FHandle));
end;

procedure TSpider.SetCacheDir(AValue: string);
begin
  CkSpider_put_CacheDir(FHandle, PAnsiChar(StrToCk(AValue)));
end;

function TSpider.GetChopAtQuery: Boolean;
begin
  Result := Boolean(CkSpider_get_ChopAtQuery(FHandle));
end;

procedure TSpider.SetChopAtQuery(AValue: Boolean);
begin
  CkSpider_put_ChopAtQuery(FHandle, LongBool(AValue));
end;

function TSpider.GetConnectTimeout: Integer;
begin
  Result := CkSpider_get_ConnectTimeout(FHandle);
end;

procedure TSpider.SetConnectTimeout(AValue: Integer);
begin
  CkSpider_put_ConnectTimeout(FHandle, AValue);
end;

function TSpider.GetDomain: string;
begin
  Result := CkToStr(CkSpider_get_Domain(FHandle));
end;

function TSpider.GetFetchFromCache: Boolean;
begin
  Result := Boolean(CkSpider_get_FetchFromCache(FHandle));
end;

procedure TSpider.SetFetchFromCache(AValue: Boolean);
begin
  CkSpider_put_FetchFromCache(FHandle, LongBool(AValue));
end;

function TSpider.GetHeartbeatMs: Integer;
begin
  Result := CkSpider_get_HeartbeatMs(FHandle);
end;

procedure TSpider.SetHeartbeatMs(AValue: Integer);
begin
  CkSpider_put_HeartbeatMs(FHandle, AValue);
end;

function TSpider.GetLastFromCache: Boolean;
begin
  Result := Boolean(CkSpider_get_LastFromCache(FHandle));
end;

function TSpider.GetLastHtml: string;
begin
  Result := CkToStr(CkSpider_get_LastHtml(FHandle));
end;

function TSpider.GetLastHtmlDescription: string;
begin
  Result := CkToStr(CkSpider_get_LastHtmlDescription(FHandle));
end;

function TSpider.GetLastHtmlKeywords: string;
begin
  Result := CkToStr(CkSpider_get_LastHtmlKeywords(FHandle));
end;

function TSpider.GetLastHtmlTitle: string;
begin
  Result := CkToStr(CkSpider_get_LastHtmlTitle(FHandle));
end;

function TSpider.GetLastModDateStr: string;
begin
  Result := CkToStr(CkSpider_get_LastModDateStr(FHandle));
end;

function TSpider.GetLastUrl: string;
begin
  Result := CkToStr(CkSpider_get_LastUrl(FHandle));
end;

function TSpider.GetMaxResponseSize: Integer;
begin
  Result := CkSpider_get_MaxResponseSize(FHandle);
end;

procedure TSpider.SetMaxResponseSize(AValue: Integer);
begin
  CkSpider_put_MaxResponseSize(FHandle, AValue);
end;

function TSpider.GetMaxUrlLen: Integer;
begin
  Result := CkSpider_get_MaxUrlLen(FHandle);
end;

procedure TSpider.SetMaxUrlLen(AValue: Integer);
begin
  CkSpider_put_MaxUrlLen(FHandle, AValue);
end;

function TSpider.GetNumAvoidPatterns: Integer;
begin
  Result := CkSpider_get_NumAvoidPatterns(FHandle);
end;

function TSpider.GetNumFailed: Integer;
begin
  Result := CkSpider_get_NumFailed(FHandle);
end;

function TSpider.GetNumOutboundLinks: Integer;
begin
  Result := CkSpider_get_NumOutboundLinks(FHandle);
end;

function TSpider.GetNumSpidered: Integer;
begin
  Result := CkSpider_get_NumSpidered(FHandle);
end;

function TSpider.GetNumUnspidered: Integer;
begin
  Result := CkSpider_get_NumUnspidered(FHandle);
end;

function TSpider.GetPreferIpv6: Boolean;
begin
  Result := Boolean(CkSpider_get_PreferIpv6(FHandle));
end;

procedure TSpider.SetPreferIpv6(AValue: Boolean);
begin
  CkSpider_put_PreferIpv6(FHandle, LongBool(AValue));
end;

function TSpider.GetProxyDomain: string;
begin
  Result := CkToStr(CkSpider_get_ProxyDomain(FHandle));
end;

procedure TSpider.SetProxyDomain(AValue: string);
begin
  CkSpider_put_ProxyDomain(FHandle, PAnsiChar(StrToCk(AValue)));
end;

function TSpider.GetProxyLogin: string;
begin
  Result := CkToStr(CkSpider_get_ProxyLogin(FHandle));
end;

procedure TSpider.SetProxyLogin(AValue: string);
begin
  CkSpider_put_ProxyLogin(FHandle, PAnsiChar(StrToCk(AValue)));
end;

function TSpider.GetProxyPassword: string;
begin
  Result := CkToStr(CkSpider_get_ProxyPassword(FHandle));
end;

procedure TSpider.SetProxyPassword(AValue: string);
begin
  CkSpider_put_ProxyPassword(FHandle, PAnsiChar(StrToCk(AValue)));
end;

function TSpider.GetProxyPort: Integer;
begin
  Result := CkSpider_get_ProxyPort(FHandle);
end;

procedure TSpider.SetProxyPort(AValue: Integer);
begin
  CkSpider_put_ProxyPort(FHandle, AValue);
end;

function TSpider.GetReadTimeout: Integer;
begin
  Result := CkSpider_get_ReadTimeout(FHandle);
end;

procedure TSpider.SetReadTimeout(AValue: Integer);
begin
  CkSpider_put_ReadTimeout(FHandle, AValue);
end;

function TSpider.GetUpdateCache: Boolean;
begin
  Result := Boolean(CkSpider_get_UpdateCache(FHandle));
end;

procedure TSpider.SetUpdateCache(AValue: Boolean);
begin
  CkSpider_put_UpdateCache(FHandle, LongBool(AValue));
end;

function TSpider.GetUserAgent: string;
begin
  Result := CkToStr(CkSpider_get_UserAgent(FHandle));
end;

procedure TSpider.SetUserAgent(AValue: string);
begin
  CkSpider_put_UserAgent(FHandle, PAnsiChar(StrToCk(AValue)));
end;

function TSpider.GetWindDownCount: Integer;
begin
  Result := CkSpider_get_WindDownCount(FHandle);
end;

procedure TSpider.SetWindDownCount(AValue: Integer);
begin
  CkSpider_put_WindDownCount(FHandle, AValue);
end;

function TSpider.GetAbortCurrent: Boolean;
begin
  Result := Boolean(CkSpider_get_AbortCurrent(FHandle));
end;

procedure TSpider.SetAbortCurrent(AValue: Boolean);
begin
  CkSpider_put_AbortCurrent(FHandle, LongBool(AValue));
end;

function TSpider.GetWasRedirected: Boolean;
begin
  Result := Boolean(CkSpider_get_WasRedirected(FHandle));
end;

function TSpider.GetFinalRedirectUrl: string;
begin
  Result := CkToStr(CkSpider_get_FinalRedirectUrl(FHandle));
end;

procedure TSpider.AddAvoidOutboundLinkPattern(const pattern: string);
begin
  CkSpider_AddAvoidOutboundLinkPattern(FHandle, PAnsiChar(StrToCk(pattern)));
end;

procedure TSpider.AddAvoidPattern(const pattern: string);
begin
  CkSpider_AddAvoidPattern(FHandle, PAnsiChar(StrToCk(pattern)));
end;

procedure TSpider.AddMustMatchPattern(const pattern: string);
begin
  CkSpider_AddMustMatchPattern(FHandle, PAnsiChar(StrToCk(pattern)));
end;

procedure TSpider.AddUnspidered(const url: string);
begin
  CkSpider_AddUnspidered(FHandle, PAnsiChar(StrToCk(url)));
end;

function TSpider.CanonicalizeUrl(const url: string): string;
begin
  Result := CkToStr(CkSpider_CanonicalizeUrl(FHandle, PAnsiChar(StrToCk(url))));
end;

procedure TSpider.ClearFailedUrls;
begin
  CkSpider_ClearFailedUrls(FHandle);
end;

procedure TSpider.ClearOutboundLinks;
begin
  CkSpider_ClearOutboundLinks(FHandle);
end;

procedure TSpider.ClearSpideredUrls;
begin
  CkSpider_ClearSpideredUrls(FHandle);
end;

function TSpider.CrawlNext: Boolean;
begin
  Result := Boolean(CkSpider_CrawlNext(FHandle));
end;

function TSpider.FetchRobotsText: string;
begin
  Result := CkToStr(CkSpider_FetchRobotsText(FHandle));
end;

function TSpider.GetAvoidPattern(index: Integer): string;
begin
  Result := CkToStr(CkSpider_GetAvoidPattern(FHandle, index));
end;

function TSpider.GetBaseDomain(const domain: string): string;
begin
  Result := CkToStr(CkSpider_GetBaseDomain(FHandle, PAnsiChar(StrToCk(domain))));
end;

function TSpider.GetFailedUrl(index: Integer): string;
begin
  Result := CkToStr(CkSpider_GetFailedUrl(FHandle, index));
end;

function TSpider.GetOutboundLink(index: Integer): string;
begin
  Result := CkToStr(CkSpider_GetOutboundLink(FHandle, index));
end;

function TSpider.GetSpideredUrl(index: Integer): string;
begin
  Result := CkToStr(CkSpider_GetSpideredUrl(FHandle, index));
end;

function TSpider.GetUnspideredUrl(index: Integer): string;
begin
  Result := CkToStr(CkSpider_GetUnspideredUrl(FHandle, index));
end;

function TSpider.GetUrlDomain(const url: string): string;
begin
  Result := CkToStr(CkSpider_GetUrlDomain(FHandle, PAnsiChar(StrToCk(url))));
end;

procedure TSpider.Initialize(const domain: string);
begin
  CkSpider_Initialize(FHandle, PAnsiChar(StrToCk(domain)));
end;

function TSpider.RecrawlLast: Boolean;
begin
  Result := Boolean(CkSpider_RecrawlLast(FHandle));
end;

procedure TSpider.SkipUnspidered(index: Integer);
begin
  CkSpider_SkipUnspidered(FHandle, index);
end;

procedure TSpider.SleepMs(numMilliseconds: Integer);
begin
  CkSpider_SleepMs(FHandle, numMilliseconds);
end;

initialization
  Chilkat_GetProcedureAddress(CkSpider_Create,  'CkSpider_Create');
  Chilkat_GetProcedureAddress(CkSpider_Dispose, 'CkSpider_Dispose');
  Chilkat_GetProcedureAddress(CkSpider_SetAbortCheckCallback, 'CkSpider_SetAbortCheckCallback');
  Chilkat_GetProcedureAddress(CkSpider_SetPercentDoneCallback, 'CkSpider_SetPercentDoneCallback');
  Chilkat_GetProcedureAddress(CkSpider_SetProgressInfoCallback, 'CkSpider_SetProgressInfoCallback');
  Chilkat_GetProcedureAddress(CkSpider_get_LastErrorHtml, 'CkSpider_get_LastErrorHtml');
  Chilkat_GetProcedureAddress(CkSpider_get_LastErrorText, 'CkSpider_get_LastErrorText');
  Chilkat_GetProcedureAddress(CkSpider_get_LastErrorXml, 'CkSpider_get_LastErrorXml');
  Chilkat_GetProcedureAddress(CkSpider_get_Version, 'CkSpider_get_Version');
  Chilkat_GetProcedureAddress(CkSpider_get_DebugLogFilePath, 'CkSpider_get_DebugLogFilePath');
  Chilkat_GetProcedureAddress(CkSpider_put_DebugLogFilePath, 'CkSpider_put_DebugLogFilePath');
  Chilkat_GetProcedureAddress(CkSpider_get_VerboseLogging, 'CkSpider_get_VerboseLogging');
  Chilkat_GetProcedureAddress(CkSpider_put_VerboseLogging, 'CkSpider_put_VerboseLogging');
  Chilkat_GetProcedureAddress(CkSpider_get_LastMethodSuccess, 'CkSpider_get_LastMethodSuccess');
  Chilkat_GetProcedureAddress(CkSpider_put_LastMethodSuccess, 'CkSpider_put_LastMethodSuccess');
  Chilkat_GetProcedureAddress(CkSpider_get_AvoidHttps, 'CkSpider_get_AvoidHttps');
  Chilkat_GetProcedureAddress(CkSpider_put_AvoidHttps, 'CkSpider_put_AvoidHttps');
  Chilkat_GetProcedureAddress(CkSpider_get_CacheDir, 'CkSpider_get_CacheDir');
  Chilkat_GetProcedureAddress(CkSpider_put_CacheDir, 'CkSpider_put_CacheDir');
  Chilkat_GetProcedureAddress(CkSpider_get_ChopAtQuery, 'CkSpider_get_ChopAtQuery');
  Chilkat_GetProcedureAddress(CkSpider_put_ChopAtQuery, 'CkSpider_put_ChopAtQuery');
  Chilkat_GetProcedureAddress(CkSpider_get_ConnectTimeout, 'CkSpider_get_ConnectTimeout');
  Chilkat_GetProcedureAddress(CkSpider_put_ConnectTimeout, 'CkSpider_put_ConnectTimeout');
  Chilkat_GetProcedureAddress(CkSpider_get_Domain, 'CkSpider_get_Domain');
  Chilkat_GetProcedureAddress(CkSpider_get_FetchFromCache, 'CkSpider_get_FetchFromCache');
  Chilkat_GetProcedureAddress(CkSpider_put_FetchFromCache, 'CkSpider_put_FetchFromCache');
  Chilkat_GetProcedureAddress(CkSpider_get_HeartbeatMs, 'CkSpider_get_HeartbeatMs');
  Chilkat_GetProcedureAddress(CkSpider_put_HeartbeatMs, 'CkSpider_put_HeartbeatMs');
  Chilkat_GetProcedureAddress(CkSpider_get_LastFromCache, 'CkSpider_get_LastFromCache');
  Chilkat_GetProcedureAddress(CkSpider_get_LastHtml, 'CkSpider_get_LastHtml');
  Chilkat_GetProcedureAddress(CkSpider_get_LastHtmlDescription, 'CkSpider_get_LastHtmlDescription');
  Chilkat_GetProcedureAddress(CkSpider_get_LastHtmlKeywords, 'CkSpider_get_LastHtmlKeywords');
  Chilkat_GetProcedureAddress(CkSpider_get_LastHtmlTitle, 'CkSpider_get_LastHtmlTitle');
  Chilkat_GetProcedureAddress(CkSpider_get_LastModDateStr, 'CkSpider_get_LastModDateStr');
  Chilkat_GetProcedureAddress(CkSpider_get_LastUrl, 'CkSpider_get_LastUrl');
  Chilkat_GetProcedureAddress(CkSpider_get_MaxResponseSize, 'CkSpider_get_MaxResponseSize');
  Chilkat_GetProcedureAddress(CkSpider_put_MaxResponseSize, 'CkSpider_put_MaxResponseSize');
  Chilkat_GetProcedureAddress(CkSpider_get_MaxUrlLen, 'CkSpider_get_MaxUrlLen');
  Chilkat_GetProcedureAddress(CkSpider_put_MaxUrlLen, 'CkSpider_put_MaxUrlLen');
  Chilkat_GetProcedureAddress(CkSpider_get_NumAvoidPatterns, 'CkSpider_get_NumAvoidPatterns');
  Chilkat_GetProcedureAddress(CkSpider_get_NumFailed, 'CkSpider_get_NumFailed');
  Chilkat_GetProcedureAddress(CkSpider_get_NumOutboundLinks, 'CkSpider_get_NumOutboundLinks');
  Chilkat_GetProcedureAddress(CkSpider_get_NumSpidered, 'CkSpider_get_NumSpidered');
  Chilkat_GetProcedureAddress(CkSpider_get_NumUnspidered, 'CkSpider_get_NumUnspidered');
  Chilkat_GetProcedureAddress(CkSpider_get_PreferIpv6, 'CkSpider_get_PreferIpv6');
  Chilkat_GetProcedureAddress(CkSpider_put_PreferIpv6, 'CkSpider_put_PreferIpv6');
  Chilkat_GetProcedureAddress(CkSpider_get_ProxyDomain, 'CkSpider_get_ProxyDomain');
  Chilkat_GetProcedureAddress(CkSpider_put_ProxyDomain, 'CkSpider_put_ProxyDomain');
  Chilkat_GetProcedureAddress(CkSpider_get_ProxyLogin, 'CkSpider_get_ProxyLogin');
  Chilkat_GetProcedureAddress(CkSpider_put_ProxyLogin, 'CkSpider_put_ProxyLogin');
  Chilkat_GetProcedureAddress(CkSpider_get_ProxyPassword, 'CkSpider_get_ProxyPassword');
  Chilkat_GetProcedureAddress(CkSpider_put_ProxyPassword, 'CkSpider_put_ProxyPassword');
  Chilkat_GetProcedureAddress(CkSpider_get_ProxyPort, 'CkSpider_get_ProxyPort');
  Chilkat_GetProcedureAddress(CkSpider_put_ProxyPort, 'CkSpider_put_ProxyPort');
  Chilkat_GetProcedureAddress(CkSpider_get_ReadTimeout, 'CkSpider_get_ReadTimeout');
  Chilkat_GetProcedureAddress(CkSpider_put_ReadTimeout, 'CkSpider_put_ReadTimeout');
  Chilkat_GetProcedureAddress(CkSpider_get_UpdateCache, 'CkSpider_get_UpdateCache');
  Chilkat_GetProcedureAddress(CkSpider_put_UpdateCache, 'CkSpider_put_UpdateCache');
  Chilkat_GetProcedureAddress(CkSpider_get_UserAgent, 'CkSpider_get_UserAgent');
  Chilkat_GetProcedureAddress(CkSpider_put_UserAgent, 'CkSpider_put_UserAgent');
  Chilkat_GetProcedureAddress(CkSpider_get_WindDownCount, 'CkSpider_get_WindDownCount');
  Chilkat_GetProcedureAddress(CkSpider_put_WindDownCount, 'CkSpider_put_WindDownCount');
  Chilkat_GetProcedureAddress(CkSpider_get_AbortCurrent, 'CkSpider_get_AbortCurrent');
  Chilkat_GetProcedureAddress(CkSpider_put_AbortCurrent, 'CkSpider_put_AbortCurrent');
  Chilkat_GetProcedureAddress(CkSpider_get_WasRedirected, 'CkSpider_get_WasRedirected');
  Chilkat_GetProcedureAddress(CkSpider_get_FinalRedirectUrl, 'CkSpider_get_FinalRedirectUrl');
  Chilkat_GetProcedureAddress(CkSpider_AddAvoidOutboundLinkPattern, 'CkSpider_AddAvoidOutboundLinkPattern');
  Chilkat_GetProcedureAddress(CkSpider_AddAvoidPattern, 'CkSpider_AddAvoidPattern');
  Chilkat_GetProcedureAddress(CkSpider_AddMustMatchPattern, 'CkSpider_AddMustMatchPattern');
  Chilkat_GetProcedureAddress(CkSpider_AddUnspidered, 'CkSpider_AddUnspidered');
  Chilkat_GetProcedureAddress(CkSpider_CanonicalizeUrl, 'CkSpider_CanonicalizeUrl');
  Chilkat_GetProcedureAddress(CkSpider_ClearFailedUrls, 'CkSpider_ClearFailedUrls');
  Chilkat_GetProcedureAddress(CkSpider_ClearOutboundLinks, 'CkSpider_ClearOutboundLinks');
  Chilkat_GetProcedureAddress(CkSpider_ClearSpideredUrls, 'CkSpider_ClearSpideredUrls');
  Chilkat_GetProcedureAddress(CkSpider_CrawlNext, 'CkSpider_CrawlNext');
  Chilkat_GetProcedureAddress(CkSpider_FetchRobotsText, 'CkSpider_FetchRobotsText');
  Chilkat_GetProcedureAddress(CkSpider_GetAvoidPattern, 'CkSpider_GetAvoidPattern');
  Chilkat_GetProcedureAddress(CkSpider_GetBaseDomain, 'CkSpider_GetBaseDomain');
  Chilkat_GetProcedureAddress(CkSpider_GetFailedUrl, 'CkSpider_GetFailedUrl');
  Chilkat_GetProcedureAddress(CkSpider_GetOutboundLink, 'CkSpider_GetOutboundLink');
  Chilkat_GetProcedureAddress(CkSpider_GetSpideredUrl, 'CkSpider_GetSpideredUrl');
  Chilkat_GetProcedureAddress(CkSpider_GetUnspideredUrl, 'CkSpider_GetUnspideredUrl');
  Chilkat_GetProcedureAddress(CkSpider_GetUrlDomain, 'CkSpider_GetUrlDomain');
  Chilkat_GetProcedureAddress(CkSpider_Initialize, 'CkSpider_Initialize');
  Chilkat_GetProcedureAddress(CkSpider_RecrawlLast, 'CkSpider_RecrawlLast');
  Chilkat_GetProcedureAddress(CkSpider_SkipUnspidered, 'CkSpider_SkipUnspidered');
  Chilkat_GetProcedureAddress(CkSpider_SleepMs, 'CkSpider_SleepMs');

end.
