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
This commit is contained in:
inoussa
2012-04-03 17:41:29 +00:00
parent 1287ce1650
commit 2e30bc622b
2 changed files with 54 additions and 18 deletions

View File

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

View File

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