unit ImportPaths;

//==============================================================================
//  INTERFACE
//==============================================================================
interface

procedure importPathsClear;
procedure addImportPath(const s:string);
function fetchPath(var path:string; const current:string=''):boolean;

//==============================================================================
//  IMPLEMENTATION
//==============================================================================
implementation
uses SysUtils;

var
    importpathz:array of string;
    importpathn:integer=0;

//==============================================================================
procedure importPathsClear;
begin
    importpathn:=0;
end;

//==============================================================================
procedure addImportPath(const s:string);
begin

    if(s='') then Exit;
    if (Length(importpathz)<=importpathn) then begin
        SetLength(importpathz,importpathn+1);
    end;
    if(s[Length(s)]<>'\') then
        importpathz[importpathn]:=s+'\'
    else
        importpathz[importpathn]:=s;
    importpathn:=importpathn+1;

end;

//==============================================================================
function fetchPath(var path:string; const current:string=''):boolean;
 var s:string;
 var x:integer;
begin
	 //import path
	 Result:=true;

	 if(not fileExists(path)) then begin
		 if (current<>'') then begin    //should have priority.
			 s:=current+path;
			 if(fileexists(s)) then begin
				 path:=s;
				 exit;
			 end;
		 end;

		 for x := 0 to importpathn-1 do begin
			 s:=importpathz[x]+path;
			 if(fileexists(s)) then begin
				 path:=s;
				 exit;
			 end;
		 end;
		 Result:=false;
	 end;

end;    

end.
