Browse Source

pas2js: added SetPas2JSGetFileSrcAttrCallBack

mattias 3 years ago
parent
commit
ffc3e1780d
2 changed files with 23 additions and 1 deletions
  1. 21 0
      packages/pastojs/src/pas2jslibcompiler.pp
  2. 2 1
      utils/pas2js/pas2jslib.pp

+ 21 - 0
packages/pastojs/src/pas2jslibcompiler.pp

@@ -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.
 
 

+ 2 - 1
utils/pas2js/pas2jslib.pp

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