mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-20 04:59:26 +02:00
* remove tdirectorycache that is now in cfileutils
git-svn-id: trunk@5109 -
This commit is contained in:
parent
c606162d3d
commit
ff6c1fa285
@ -3487,127 +3487,4 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
{****************************************************************************
|
||||
TDirectoryCache
|
||||
****************************************************************************}
|
||||
|
||||
type
|
||||
TCachedDirectory = class(TFPHashObject)
|
||||
private
|
||||
FDirectoryEntries : TFPHashList;
|
||||
public
|
||||
constructor Create(AList:TFPHashObjectList;const AName:string);
|
||||
destructor destroy;override;
|
||||
procedure Reload;
|
||||
function FileExists(const AName:string):boolean;
|
||||
function DirectoryExists(const AName:string):boolean;
|
||||
property DirectoryEntries:TFPHashList read FDirectoryEntries;
|
||||
end;
|
||||
|
||||
TDirectoryCache = class
|
||||
private
|
||||
FDirectories : TFPHashObjectList;
|
||||
function GetDirectory(const ADir:string):TCachedDirectory;
|
||||
public
|
||||
constructor Create;
|
||||
destructor destroy;override;
|
||||
function FileExists(const AName:string):boolean;
|
||||
function DirectoryExists(const AName:string):boolean;
|
||||
end;
|
||||
|
||||
|
||||
constructor TCachedDirectory.create(AList:TFPHashObjectList;const AName:string);
|
||||
begin
|
||||
inherited create(AList,AName);
|
||||
FDirectoryEntries:=TFPHashList.Create;
|
||||
end;
|
||||
|
||||
|
||||
destructor TCachedDirectory.destroy;
|
||||
begin
|
||||
FDirectoryEntries.Free;
|
||||
inherited destroy;
|
||||
end;
|
||||
|
||||
|
||||
procedure TCachedDirectory.Reload;
|
||||
var
|
||||
dir : TSearchRec;
|
||||
Attr : PtrInt;
|
||||
begin
|
||||
DirectoryEntries.Clear;
|
||||
if findfirst(IncludeTrailingPathDelimiter(Name)+'*',faAnyFile or faDirectory,dir) = 0 then
|
||||
begin
|
||||
repeat
|
||||
if ((dir.attr and faDirectory)<>0) then
|
||||
Attr:=2
|
||||
else
|
||||
Attr:=1;
|
||||
DirectoryEntries.Add(Dir.Name,Pointer(Attr));
|
||||
until findnext(dir) <> 0;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
function TCachedDirectory.FileExists(const AName:string):boolean;
|
||||
begin
|
||||
Result:=(PtrInt(DirectoryEntries.Find(AName))=1);
|
||||
end;
|
||||
|
||||
|
||||
function TCachedDirectory.DirectoryExists(const AName:string):boolean;
|
||||
begin
|
||||
Result:=(PtrInt(DirectoryEntries.Find(AName))=2);
|
||||
end;
|
||||
|
||||
|
||||
constructor TDirectoryCache.create;
|
||||
begin
|
||||
inherited create;
|
||||
FDirectories:=TFPHashObjectList.Create(false);
|
||||
end;
|
||||
|
||||
|
||||
destructor TDirectoryCache.destroy;
|
||||
begin
|
||||
FDirectories.Free;
|
||||
inherited destroy;
|
||||
end;
|
||||
|
||||
|
||||
function TDirectoryCache.GetDirectory(const ADir:string):TCachedDirectory;
|
||||
var
|
||||
CachedDir : TCachedDirectory;
|
||||
begin
|
||||
CachedDir:=TCachedDirectory(FDirectories.Find(ADir));
|
||||
if not assigned(CachedDir) then
|
||||
begin
|
||||
CachedDir:=TCachedDirectory.Create(FDirectories,ADir);
|
||||
CachedDir.Reload;
|
||||
end;
|
||||
Result:=CachedDir;
|
||||
end;
|
||||
|
||||
|
||||
function TDirectoryCache.FileExists(const AName:string):boolean;
|
||||
var
|
||||
CachedDir : TCachedDirectory;
|
||||
begin
|
||||
Result:=false;
|
||||
CachedDir:=GetDirectory(ExtractFileDir(AName));
|
||||
if assigned(CachedDir) then
|
||||
Result:=CachedDir.FileExists(ExtractFileName(AName));
|
||||
end;
|
||||
|
||||
|
||||
function TDirectoryCache.DirectoryExists(const AName:string):boolean;
|
||||
var
|
||||
CachedDir : TCachedDirectory;
|
||||
begin
|
||||
Result:=false;
|
||||
CachedDir:=GetDirectory(ExtractFilePath(AName));
|
||||
if assigned(CachedDir) then
|
||||
Result:=CachedDir.DirectoryExists(ExtractFileName(AName));
|
||||
end;
|
||||
|
||||
end.
|
||||
|
Loading…
Reference in New Issue
Block a user