pas2js: added SetPas2JSGetFileSrcAttrCallBack

This commit is contained in:
mattias 2021-09-14 11:47:10 +03:00
parent 6c4198fdf3
commit ffc3e1780d
2 changed files with 23 additions and 1 deletions

View File

@ -49,6 +49,7 @@ Type
P : PDirectoryCache; ADirPath: PAnsiChar): boolean; {$IFDEF UseCDecl}cdecl{$ELSE}stdcall{$ENDIF}; P : PDirectoryCache; ADirPath: PAnsiChar): boolean; {$IFDEF UseCDecl}cdecl{$ELSE}stdcall{$ENDIF};
TUnitAliasCallBack = Function (Data: Pointer; TUnitAliasCallBack = Function (Data: Pointer;
AUnitName: PAnsiChar; AUnitNameMaxLen: Integer): boolean; {$IFDEF UseCDecl}cdecl{$ELSE}stdcall{$ENDIF}; AUnitName: PAnsiChar; AUnitNameMaxLen: Integer): boolean; {$IFDEF UseCDecl}cdecl{$ELSE}stdcall{$ENDIF};
TGetFileSrcAttrCallBack = procedure(AData: Pointer; AFileName: PAnsiChar; AFileNameLen: Integer; AFileInfo: PPas2jsFileSrcAttr); {$IFDEF UseCDecl}cdecl{$ELSE}stdcall{$ENDIF};
{ TLibraryPas2JSCompiler } { TLibraryPas2JSCompiler }
@ -67,6 +68,8 @@ Type
FOnWriteJSCallBack: TWriteJSCallBack; FOnWriteJSCallBack: TWriteJSCallBack;
FOnWriteJSData: Pointer; FOnWriteJSData: Pointer;
FReadBufferLen: Cardinal; FReadBufferLen: Cardinal;
FOnGetFileSrcAttr: TGetFileSrcAttrCallBack;
FOnGetFileSrcAttrData: Pointer;
function GetLogEncoding: String; function GetLogEncoding: String;
procedure SetLogEncoding(AValue: String); procedure SetLogEncoding(AValue: String);
Protected Protected
@ -75,6 +78,7 @@ Type
AErrorClass : PAnsiChar; Var AErrorClassLength : Longint); AErrorClass : PAnsiChar; Var AErrorClassLength : Longint);
Function ReadFile(aFilename: string; var aSource: string): boolean; virtual; Function ReadFile(aFilename: string; var aSource: string): boolean; virtual;
Function ReadDirectory(Dir: TPas2jsCachedDirectory): boolean; virtual; Function ReadDirectory(Dir: TPas2jsCachedDirectory): boolean; virtual;
procedure GetFileSrcAttr(AFilename: string; var AAttr: TPas2jsFileSrcAttr);
Public Public
Constructor Create; override; Constructor Create; override;
procedure CheckUnitAlias(var UseUnitName: string); override; procedure CheckUnitAlias(var UseUnitName: string); override;
@ -94,6 +98,8 @@ Type
Property OnReadDirData: Pointer read FOnReadDirData write FOnReadDirData; Property OnReadDirData: Pointer read FOnReadDirData write FOnReadDirData;
Property OnUnitAlias: TUnitAliasCallBack read FOnUnitAlias write FOnUnitAlias; Property OnUnitAlias: TUnitAliasCallBack read FOnUnitAlias write FOnUnitAlias;
Property OnUnitAliasData: Pointer read FOnUnitAliasData write FOnUnitAliasData; Property OnUnitAliasData: Pointer read FOnUnitAliasData write FOnUnitAliasData;
property OnGetFileSrcAttr: TGetFileSrcAttrCallBack read FOnGetFileSrcAttr write FOnGetFileSrcAttr;
property OnGetFileSrcAttrData: Pointer read FOnGetFileSrcAttrData write FOnGetFileSrcAttrData;
end; end;
Type Type
@ -111,6 +117,7 @@ Procedure FreePas2JSCompiler(P : PPas2JSCompiler); {$IFDEF UseCDecl}cdecl{$ELSE}
Function GetPas2JSCompiler : PPas2JSCompiler; {$IFDEF UseCDecl}cdecl{$ELSE}stdcall{$ENDIF}; Function GetPas2JSCompiler : PPas2JSCompiler; {$IFDEF UseCDecl}cdecl{$ELSE}stdcall{$ENDIF};
Procedure GetPas2JSCompilerLastError(P : PPas2JSCompiler; AError : PAnsiChar; Var AErrorLength : Longint; AErrorClass : PAnsiChar; Var AErrorClassLength : Longint); {$IFDEF UseCDecl}cdecl{$ELSE}stdcall{$ENDIF}; Procedure GetPas2JSCompilerLastError(P : PPas2JSCompiler; AError : PAnsiChar; Var AErrorLength : Longint; AErrorClass : PAnsiChar; Var AErrorClassLength : Longint); {$IFDEF UseCDecl}cdecl{$ELSE}stdcall{$ENDIF};
procedure SetPas2JSLogEncoding(P : PPas2JSCompiler; Enconding: PAnsiChar); {$IFDEF UseCDecl}cdecl{$ELSE}stdcall{$ENDIF}; procedure SetPas2JSLogEncoding(P : PPas2JSCompiler; Enconding: PAnsiChar); {$IFDEF UseCDecl}cdecl{$ELSE}stdcall{$ENDIF};
procedure SetPas2JSGetFileSrcAttrCallBack(P: PPas2JSCompiler; ACallBack: TGetFileSrcAttrCallBack; ACallBackData: Pointer); {$IFDEF UseCDecl}cdecl{$ELSE}stdcall{$ENDIF};
implementation implementation
@ -124,6 +131,13 @@ begin
Result:=OnReadDir(FOnReadDirData,Dir,PAnsiChar(Dir.Path)); Result:=OnReadDir(FOnReadDirData,Dir,PAnsiChar(Dir.Path));
end; end;
procedure TLibraryPas2JSCompiler.GetFileSrcAttr(AFilename: string; var AAttr: TPas2jsFileSrcAttr);
begin
AAttr.AllowSrcMap := True;
if Assigned(OnGetFileSrcAttr) then
OnGetFileSrcAttr(FOnGetFileSrcAttrData, PAnsiChar(AFilename), Length(AFileName), @AAttr);
end;
function TLibraryPas2JSCompiler.GetLogEncoding: String; function TLibraryPas2JSCompiler.GetLogEncoding: String;
begin begin
Result := Log.Encoding; Result := Log.Encoding;
@ -222,6 +236,7 @@ begin
FileCache.OnReadDirectory:=@ReadDirectory; FileCache.OnReadDirectory:=@ReadDirectory;
ConfigSupport:=TPas2JSFileConfigSupport.Create(Self); ConfigSupport:=TPas2JSFileConfigSupport.Create(Self);
PostProcessorSupport:=TPas2JSFSPostProcessorSupport.Create(Self); PostProcessorSupport:=TPas2JSFSPostProcessorSupport.Create(Self);
FileCache.OnGetFileSrcAttr:=@GetFileSrcAttr;
end; end;
procedure TLibraryPas2JSCompiler.CheckUnitAlias(var UseUnitName: string); procedure TLibraryPas2JSCompiler.CheckUnitAlias(var UseUnitName: string);
@ -373,5 +388,11 @@ begin
TLibraryPas2JSCompiler(P).LogEncoding := Enconding; TLibraryPas2JSCompiler(P).LogEncoding := Enconding;
end; end;
procedure SetPas2JSGetFileSrcAttrCallBack(P: PPas2JSCompiler; ACallBack: TGetFileSrcAttrCallBack; ACallBackData: Pointer); {$IFDEF UseCDecl}cdecl{$ELSE}stdcall{$ENDIF};
begin
TLibraryPas2JSCompiler(P).OnGetFileSrcAttr := ACallBack;
TLibraryPas2JSCompiler(P).OnGetFileSrcAttrData := ACallBackData;
end;
end. end.

View File

@ -18,7 +18,8 @@ exports
SetPas2JSUnitAliasCallBack, SetPas2JSUnitAliasCallBack,
SetPas2JSCompilerLogCallBack, SetPas2JSCompilerLogCallBack,
GetPas2JSCompilerLastError, GetPas2JSCompilerLastError,
SetPas2JSLogEncoding; SetPas2JSLogEncoding,
SetPas2JSGetFileSrcAttrCallBack;
end. end.