From 2e30bc622b5fd72ef74bc3e5778404779ce6f5a4 Mon Sep 17 00:00:00 2001 From: inoussa Date: Tue, 3 Apr 2012 17:41:29 +0000 Subject: [PATCH] Provide a property manager to the filters so a "Password" can be store and retrieved. git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@2379 8e941d3f-bd1b-0410-a28a-d453659cc2b4 --- wst/trunk/client_utils.pas | 12 +++++--- wst/trunk/filter_intf.pas | 60 +++++++++++++++++++++++++++++--------- 2 files changed, 54 insertions(+), 18 deletions(-) diff --git a/wst/trunk/client_utils.pas b/wst/trunk/client_utils.pas index 9aa19b2dc..427446e3e 100644 --- a/wst/trunk/client_utils.pas +++ b/wst/trunk/client_utils.pas @@ -227,7 +227,11 @@ var locOldPos : Int64; begin if ASource.InheritsFrom(TMemoryStream) then begin - locBuffer := FFilter.ExecuteInput(TMemoryStream(ASource).Memory^,ASource.Size); + locBuffer := FFilter.ExecuteInput( + TMemoryStream(ASource).Memory^, + ASource.Size, + FFilter.GetPropertyManager() + ); end else begin SetLength(locInBuffer,ASource.Size); locOldPos := ASource.Position; @@ -237,7 +241,7 @@ begin finally ASource.Position := locOldPos; end; - locBuffer := FFilter.ExecuteInput(locInBuffer[0],Length(locInBuffer)); + locBuffer := FFilter.ExecuteInput(locInBuffer[0],Length(locInBuffer),FFilter.GetPropertyManager()); end; ADest.Size := Length(locBuffer); ADest.Position := 0; @@ -251,7 +255,7 @@ var locOldPos : Int64; begin if ASource.InheritsFrom(TMemoryStream) then begin - locBuffer := FFilter.ExecuteOutput(TMemoryStream(ASource).Memory^,ASource.Size); + locBuffer := FFilter.ExecuteOutput(TMemoryStream(ASource).Memory^,ASource.Size,FFilter.GetPropertyManager()); end else begin SetLength(locInBuffer,ASource.Size); locOldPos := ASource.Position; @@ -261,7 +265,7 @@ begin finally ASource.Position := locOldPos; end; - locBuffer := FFilter.ExecuteOutput(locInBuffer[0],Length(locInBuffer)); + locBuffer := FFilter.ExecuteOutput(locInBuffer[0],Length(locInBuffer),FFilter.GetPropertyManager()); end; ADest.Size := Length(locBuffer); ADest.Position := 0; diff --git a/wst/trunk/filter_intf.pas b/wst/trunk/filter_intf.pas index fcc4e4b80..26f226360 100644 --- a/wst/trunk/filter_intf.pas +++ b/wst/trunk/filter_intf.pas @@ -28,8 +28,16 @@ type ['{9D9886A4-37B6-4D62-BD3B-603A8EF00A13}'] function GetPropertyManager() : IPropertyManager; function GetName() : string; - function ExecuteInput(const AData; const ASize : Integer) : TByteDynArray; - function ExecuteOutput(const AData; const ASize : Integer) : TByteDynArray; + function ExecuteInput( + const AData; + const ASize : Integer; + ADataProps : IPropertyManager + ) : TByteDynArray; + function ExecuteOutput( + const AData; + const ASize : Integer; + ADataProps : IPropertyManager + ) : TByteDynArray; function GetNext() : IDataFilter; procedure SetNext(AItem: IDataFilter); end; @@ -55,13 +63,29 @@ type FPropertyManager : IPropertyManager; FNext : IDataFilter; protected - function DoExecuteInput(const AData; const ASize : Integer) : TByteDynArray;virtual;abstract; - function DoExecuteOutput(const AData; const ASize : Integer) : TByteDynArray;virtual;abstract; + function DoExecuteInput( + const AData; + const ASize : Integer; + ADataProps : IPropertyManager + ) : TByteDynArray;virtual;abstract; + function DoExecuteOutput( + const AData; + const ASize : Integer; + ADataProps : IPropertyManager + ) : TByteDynArray;virtual;abstract; protected function GetPropertyManager() : IPropertyManager; function GetName() : string;virtual;abstract; - function ExecuteInput(const AData; const ASize : Integer) : TByteDynArray; - function ExecuteOutput(const AData; const ASize : Integer) : TByteDynArray; + function ExecuteInput( + const AData; + const ASize : Integer; + ADataProps : IPropertyManager + ) : TByteDynArray; + function ExecuteOutput( + const AData; + const ASize : Integer; + ADataProps : IPropertyManager + ) : TByteDynArray; function GetNext() : IDataFilter; procedure SetNext(AItem: IDataFilter); public @@ -197,30 +221,38 @@ begin Result := FPropertyManager; end; -function TBaseFilter.ExecuteInput(const AData; const ASize : Integer) : TByteDynArray; +function TBaseFilter.ExecuteInput( + const AData; + const ASize : Integer; + ADataProps : IPropertyManager +) : TByteDynArray; var n : IDataFilter; r : TByteDynArray; begin - Result := DoExecuteInput(AData,ASize); + Result := DoExecuteInput(AData,ASize,ADataProps); n := GetNext(); if (n <> nil) then begin r := Result; - Result := n.ExecuteInput(r[Low(r)],Length(r)); + Result := n.ExecuteInput(r[Low(r)],Length(r),ADataProps); end; end; -function TBaseFilter.ExecuteOutput(const AData; const ASize : Integer) : TByteDynArray; +function TBaseFilter.ExecuteOutput( + const AData; + const ASize : Integer; + ADataProps : IPropertyManager +) : TByteDynArray; var n : IDataFilter; r : TByteDynArray; begin n := GetNext(); if (n = nil) then begin - Result := DoExecuteOutput(AData,ASize); + Result := DoExecuteOutput(AData,ASize,ADataProps); end else begin - r := n.ExecuteOutput(AData,ASize); - Result := DoExecuteOutput(r[Low(r)],Length(r)); + r := n.ExecuteOutput(AData,ASize,ADataProps); + Result := DoExecuteOutput(r[Low(r)],Length(r),ADataProps); end; end; @@ -238,7 +270,7 @@ end; constructor TBaseFilter.Create(); begin inherited; - FPropertyManager := TPublishedPropertyManager.Create(Self); + FPropertyManager := TPublishedPropertyManager.Create(Self,True); end; { TDataFilterRegistry }