You can subscribe to this list here.
2006 |
Jan
|
Feb
|
Mar
|
Apr
(20) |
May
(48) |
Jun
(8) |
Jul
(23) |
Aug
(41) |
Sep
(42) |
Oct
(22) |
Nov
(17) |
Dec
(36) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2007 |
Jan
(43) |
Feb
(42) |
Mar
(17) |
Apr
(39) |
May
(16) |
Jun
(35) |
Jul
(37) |
Aug
(47) |
Sep
(49) |
Oct
(9) |
Nov
(52) |
Dec
(37) |
2008 |
Jan
(48) |
Feb
(21) |
Mar
(7) |
Apr
(2) |
May
(5) |
Jun
(17) |
Jul
(17) |
Aug
(40) |
Sep
(58) |
Oct
(38) |
Nov
(19) |
Dec
(32) |
2009 |
Jan
(67) |
Feb
(46) |
Mar
(54) |
Apr
(34) |
May
(37) |
Jun
(52) |
Jul
(67) |
Aug
(72) |
Sep
(48) |
Oct
(35) |
Nov
(27) |
Dec
(12) |
2010 |
Jan
(56) |
Feb
(46) |
Mar
(19) |
Apr
(14) |
May
(21) |
Jun
(3) |
Jul
(13) |
Aug
(48) |
Sep
(34) |
Oct
(51) |
Nov
(16) |
Dec
(32) |
2011 |
Jan
(36) |
Feb
(14) |
Mar
(12) |
Apr
(3) |
May
(5) |
Jun
(24) |
Jul
(15) |
Aug
(30) |
Sep
(21) |
Oct
(4) |
Nov
(25) |
Dec
(23) |
2012 |
Jan
(45) |
Feb
(42) |
Mar
(19) |
Apr
(14) |
May
(13) |
Jun
(7) |
Jul
(3) |
Aug
(46) |
Sep
(21) |
Oct
(10) |
Nov
(2) |
Dec
|
2013 |
Jan
(5) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <ou...@us...> - 2011-08-10 15:44:50
|
Revision: 3567 http://jcl.svn.sourceforge.net/jcl/?rev=3567&view=rev Author: outchy Date: 2011-08-10 15:44:44 +0000 (Wed, 10 Aug 2011) Log Message: ----------- removal of the with..do statements. Modified Paths: -------------- trunk/jcl/source/windows/JclAppInst.pas Modified: trunk/jcl/source/windows/JclAppInst.pas =================================================================== --- trunk/jcl/source/windows/JclAppInst.pas 2011-08-08 17:49:53 UTC (rev 3566) +++ trunk/jcl/source/windows/JclAppInst.pas 2011-08-10 15:44:44 UTC (rev 3567) @@ -208,17 +208,17 @@ end; function TJclAppInstances.CheckInstance(const MaxInstances: Word): Boolean; +var + SharedData: PJclAISharedData; begin FOptex.Enter; try - with PJclAISharedData(FMappingView.Memory)^ do - begin - if MaxInst = 0 then - MaxInst := MaxInstances; - Result := Count < MaxInst; - ProcessIDs[Count] := GetCurrentProcessId; - Inc(Count); - end; + SharedData := PJclAISharedData(FMappingView.Memory); + if SharedData^.MaxInst = 0 then + SharedData^.MaxInst := MaxInstances; + Result := SharedData^.Count < SharedData^.MaxInst; + SharedData^.ProcessIDs[SharedData^.Count] := GetCurrentProcessId; + Inc(SharedData^.Count); finally FOptex.Leave; end; @@ -292,33 +292,34 @@ function TJclAppInstances.GetInstanceIndex(ProcessID: DWORD): Integer; var I: Integer; + SharedData: PJclAISharedData; begin Result := -1; FOptex.Enter; try - with PJclAISharedData(FMappingView.Memory)^ do - begin - for I := 0 to Count - 1 do - if ProcessIDs[I] = ProcessID then - begin - Result := I; - Break; - end; - end; + SharedData := PJclAISharedData(FMappingView.Memory); + for I := 0 to SharedData^.Count - 1 do + if SharedData^.ProcessIDs[I] = ProcessID then + begin + Result := I; + Break; + end; finally FOptex.Leave; end; end; function TJclAppInstances.GetProcessIDs(Index: Integer): DWORD; +var + SharedData: PJclAISharedData; begin FOptex.Enter; try - with PJclAISharedData(FMappingView.Memory)^ do - if Index >= Count then - Result := 0 - else - Result := ProcessIDs[Index]; + SharedData := PJclAISharedData(FMappingView.Memory); + if Index >= SharedData^.Count then + Result := 0 + else + Result := SharedData^.ProcessIDs[Index]; finally FOptex.Leave; end; @@ -354,8 +355,7 @@ function EnumNotifyWinProc(Wnd: THandle; Message: PMessage): BOOL; stdcall; begin - with Message^ do - SendNotifyMessage(Wnd, Msg, WParam, LParam); + SendNotifyMessage(Wnd, Message^.Msg, Message^.WParam, Message^.LParam); Result := True; end; @@ -365,26 +365,27 @@ Wnd: THandle; TID: DWORD; Msg: TMessage; + SharedData: PJclAISharedData; begin FOptex.Enter; try - with PJclAISharedData(FMappingView.Memory)^ do - for I := 0 to Count - 1 do - begin - Wnd := GetApplicationWnd(ProcessIDs[I]); - TID := GetWindowThreadProcessId(Wnd, nil); - while Wnd <> 0 do - begin // Send message to TApplication queue - if PostThreadMessage(TID, FMessageID, W, L) or - (GetLastError = ERROR_INVALID_THREAD_ID) then - Break; - Sleep(1); - end; - Msg.Msg := FMessageID; - Msg.WParam := W; - Msg.LParam := L; - EnumThreadWindows(TID, @EnumNotifyWinProc, LPARAM(@Msg)); + SharedData := PJclAISharedData(FMappingView.Memory); + for I := 0 to SharedData^.Count - 1 do + begin + Wnd := GetApplicationWnd(SharedData^.ProcessIDs[I]); + TID := GetWindowThreadProcessId(Wnd, nil); + while Wnd <> 0 do + begin // Send message to TApplication queue + if PostThreadMessage(TID, FMessageID, W, L) or + (GetLastError = ERROR_INVALID_THREAD_ID) then + Break; + Sleep(1); end; + Msg.Msg := FMessageID; + Msg.WParam := W; + Msg.LParam := L; + EnumThreadWindows(TID, @EnumNotifyWinProc, LPARAM(@Msg)); + end; finally FOptex.Leave; end; @@ -393,18 +394,19 @@ procedure TJclAppInstances.RemoveInstance; var I: Integer; + SharedData: PJclAISharedData; begin FOptex.Enter; try - with PJclAISharedData(FMappingView.Memory)^ do - for I := 0 to Count - 1 do - if ProcessIDs[I] = FCPID then - begin - ProcessIDs[I] := 0; - Move(ProcessIDs[I + 1], ProcessIDs[I], (Count - I) * SizeOf(DWORD)); - Dec(Count); - Break; - end; + SharedData := PJclAISharedData(FMappingView.Memory); + for I := 0 to SharedData^.Count - 1 do + if SharedData^.ProcessIDs[I] = FCPID then + begin + SharedData^.ProcessIDs[I] := 0; + Move(SharedData^.ProcessIDs[I + 1], SharedData^.ProcessIDs[I], (SharedData^.Count - I) * SizeOf(DWORD)); + Dec(SharedData^.Count); + Break; + end; finally FOptex.Leave; end; @@ -441,6 +443,7 @@ I: Integer; PID: DWORD; Found: Boolean; + SharedData: PJclAISharedData; begin if (GetClassName(Wnd, ClassName, Length(ClassName) - 1) > 0) and (StrComp(ClassName, Data.WindowClassName) = 0) then @@ -449,13 +452,13 @@ Found := False; Data.Self.FOptex.Enter; try - with PJclAISharedData(Data.Self.FMappingView.Memory)^ do - for I := 0 to Count - 1 do - if ProcessIDs[I] = PID then - begin - Found := True; - Break; - end; + SharedData := PJclAISharedData(Data.Self.FMappingView.Memory); + for I := 0 to SharedData^.Count - 1 do + if SharedData^.ProcessIDs[I] = PID then + begin + Found := True; + Break; + end; finally Data.Self.FOptex.Leave; end; @@ -560,32 +563,29 @@ procedure ReadMessageData(const Message: TMessage; var Data: Pointer; var Size: Integer); begin - with TWMCopyData(Message) do - if Msg = WM_COPYDATA then - begin - Size := CopyDataStruct^.cbData; - GetMem(Data, Size); - Move(CopyDataStruct^.lpData^, Data^, Size); - end; + if TWMCopyData(Message).Msg = WM_COPYDATA then + begin + Size := TWMCopyData(Message).CopyDataStruct^.cbData; + GetMem(Data, Size); + Move(TWMCopyData(Message).CopyDataStruct^.lpData^, Data^, Size); + end; end; procedure ReadMessageString(const Message: TMessage; out S: string); begin - with TWMCopyData(Message) do - if Msg = WM_COPYDATA then - SetString(S, PChar(CopyDataStruct^.lpData), CopyDataStruct^.cbData div SizeOf(Char)); + if TWMCopyData(Message).Msg = WM_COPYDATA then + SetString(S, PChar(TWMCopyData(Message).CopyDataStruct^.lpData), TWMCopyData(Message).CopyDataStruct^.cbData div SizeOf(Char)); end; procedure ReadMessageStrings(const Message: TMessage; const Strings: TStrings); var S: string; begin - with TWMCopyData(Message) do - if Msg = WM_COPYDATA then - begin - ReadMessageString(Message, S); - Strings.Text := S; - end; + if TWMCopyData(Message).Msg = WM_COPYDATA then + begin + ReadMessageString(Message, S); + Strings.Text := S; + end; end; function SendData(const Wnd, OriginatorWnd: HWND; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2011-08-08 17:49:59
|
Revision: 3566 http://jcl.svn.sourceforge.net/jcl/?rev=3566&view=rev Author: outchy Date: 2011-08-08 17:49:53 +0000 (Mon, 08 Aug 2011) Log Message: ----------- Mantis 5631: Add option to avoid BOM saving. Modified Paths: -------------- trunk/jcl/source/common/JclSimpleXml.pas Modified: trunk/jcl/source/common/JclSimpleXml.pas =================================================================== --- trunk/jcl/source/common/JclSimpleXml.pas 2011-08-02 15:42:16 UTC (rev 3565) +++ trunk/jcl/source/common/JclSimpleXml.pas 2011-08-08 17:49:53 UTC (rev 3566) @@ -491,7 +491,7 @@ TJclSimpleXMLOptions = set of (sxoAutoCreate, sxoAutoIndent, sxoAutoEncodeValue, sxoAutoEncodeEntity, sxoDoNotSaveProlog, sxoTrimPrecedingTextWhitespace, - sxoTrimFollowingTextWhitespace, sxoKeepWhitespace); + sxoTrimFollowingTextWhitespace, sxoKeepWhitespace, sxoDoNotSaveBOM); TJclSimpleXMLEncodeEvent = procedure(Sender: TObject; var Value: string) of object; TJclSimpleXMLEncodeStreamEvent = procedure(Sender: TObject; InStream, OutStream: TStream) of object; @@ -1293,7 +1293,8 @@ TJclAnsiStream(AStringStream).CodePage := CodePage; end; try - AStringStream.WriteBOM; + if not (sxoDoNotSaveBOM in Options) then + AStringStream.WriteBOM; SaveToStringStream(AStringStream); AStringStream.Flush; finally This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2011-08-02 15:42:21
|
Revision: 3565 http://jcl.svn.sourceforge.net/jcl/?rev=3565&view=rev Author: outchy Date: 2011-08-02 15:42:16 +0000 (Tue, 02 Aug 2011) Log Message: ----------- Mantis 5218: TJclSimpleXML LoadFromString very slow on large files. Modified Paths: -------------- trunk/jcl/source/common/JclStringConversions.pas Modified: trunk/jcl/source/common/JclStringConversions.pas =================================================================== --- trunk/jcl/source/common/JclStringConversions.pas 2011-08-01 14:13:46 UTC (rev 3564) +++ trunk/jcl/source/common/JclStringConversions.pas 2011-08-02 15:42:16 UTC (rev 3565) @@ -2646,31 +2646,39 @@ function AnsiGetNextBufferFromStream(S: TStream; var Buffer: TUCS4Array; var Start: SizeInt; Count: SizeInt): SizeInt; overload; var - B: Byte; + B: TDynByteArray; ReadSuccess: Boolean; - TmpPos: SizeInt; + ReadCount, TmpPos: SizeInt; UTF16Buffer: TUTF16String; begin Result := 0; ReadSuccess := True; + SetLength(B, Count); + SetLength(UTF16Buffer, 2 * Count); while ReadSuccess and (Count > 0) do begin - if StreamReadByte(S, B) then + ReadCount := S.Read(B[0], Count); + if ReadCount > 0 then begin - UTF16Buffer := WideString(AnsiString(Chr(B))); - TmpPos := 1; - Buffer[Start] := UTF16GetNextChar(UTF16Buffer, TmpPos); - if TmpPos <> -1 then + ReadCount := MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED or MB_ERR_INVALID_CHARS, @B[0], ReadCount, PWideChar(UTF16Buffer), 2 * Count); + if ReadCount > 0 then begin - Inc(Result); - Inc(Start); + TmpPos := 1; + ReadCount := UTF16GetNextBuffer(UTF16Buffer, TmpPos, Buffer, Start, Count); + if TmpPos <> -1 then + Inc(Result, ReadCount) + else + ReadSuccess := False; end else - ReadSuccess := False; + begin + Result := 0; + FlagInvalidSequence; + end; end else ReadSuccess := False; - Dec(Count); + Dec(Count, ReadCount); end; end; @@ -2763,27 +2771,27 @@ function AnsiGetNextBufferFromStream(S: TStream; CodePage: Word; var Buffer: TUCS4Array; var Start: SizeInt; Count: SizeInt): SizeInt; overload; var - B: Byte; + B: TDynByteArray; ReadSuccess: Boolean; - TmpPos: SizeInt; + ReadCount, TmpPos: SizeInt; UTF16Buffer: TUTF16String; begin Result := 0; ReadSuccess := True; + SetLength(B, Count); + SetLength(UTF16Buffer, 2 * Count); while ReadSuccess and (Count > 0) do begin - if StreamReadByte(S, B) then + ReadCount := S.Read(B[0], Count); + if ReadCount > 0 then begin - SetLength(UTF16Buffer, 2); - if MultiByteToWideChar(CodePage, MB_PRECOMPOSED or MB_ERR_INVALID_CHARS, @B, 1, PWideChar(UTF16Buffer), 2) <> 0 then + ReadCount := MultiByteToWideChar(CodePage, MB_PRECOMPOSED or MB_ERR_INVALID_CHARS, @B[0], ReadCount, PWideChar(UTF16Buffer), 2 * Count); + if ReadCount > 0 then begin TmpPos := 1; - Buffer[Start] := UTF16GetNextChar(UTF16Buffer, TmpPos); + ReadCount := UTF16GetNextBuffer(UTF16Buffer, TmpPos, Buffer, Start, Count); if TmpPos <> -1 then - begin - Inc(Result); - Inc(Start); - end + Inc(Result, ReadCount) else ReadSuccess := False; end @@ -2795,7 +2803,7 @@ end else ReadSuccess := False; - Dec(Count); + Dec(Count, ReadCount); end; end; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2011-08-01 14:13:53
|
Revision: 3564 http://jcl.svn.sourceforge.net/jcl/?rev=3564&view=rev Author: outchy Date: 2011-08-01 14:13:46 +0000 (Mon, 01 Aug 2011) Log Message: ----------- update to 7z 9.22. Modified Paths: -------------- trunk/jcl/source/common/JclCompression.pas trunk/jcl/source/common/JclResources.pas trunk/jcl/source/windows/sevenzip.pas Modified: trunk/jcl/source/common/JclCompression.pas =================================================================== --- trunk/jcl/source/common/JclCompression.pas 2011-08-01 13:01:13 UTC (rev 3563) +++ trunk/jcl/source/common/JclCompression.pas 2011-08-01 14:13:46 UTC (rev 3564) @@ -95,6 +95,7 @@ | |-- TJclGZipCompressArchive handled by sevenzip http://sevenzip.sourceforge.net/ | |-- TJclXzCompressArchive handled by sevenzip http://sevenzip.sourceforge.net/ | |-- TJclSwfcCompressArchive handled by sevenzip http://sevenzip.sourceforge.net/ + | |-- TJclWimCompressArchive handled by sevenzip http://sevenzip.sourceforge.net/ | |-- TJclDecompressArchive | | @@ -140,6 +141,12 @@ | |-- TJclSwfDecompressArchive handled by sevenzip http://sevenzip.sourceforge.net/ | |-- TJclSwfcDecompressArchive handled by sevenzip http://sevenzip.sourceforge.net/ | |-- TJclAPMDecompressArchive handled by sevenzip http://sevenzip.sourceforge.net/ + | |-- TJclPpmdDecompressArchive handled by sevenzip http://sevenzip.sourceforge.net/ + | |-- TJclTEDecompressArchive handled by sevenzip http://sevenzip.sourceforge.net/ + | |-- TJclUEFIcDecompressArchive handled by sevenzip http://sevenzip.sourceforge.net/ + | |-- TJclUEFIsDecompressArchive handled by sevenzip http://sevenzip.sourceforge.net/ + | |-- TJclSquashFSDecompressArchive handled by sevenzip http://sevenzip.sourceforge.net/ + | |-- TJclCramFSDecompressArchive handled by sevenzip http://sevenzip.sourceforge.net/ | |-- TJclUpdateArchive | @@ -1364,6 +1371,13 @@ class function ArchiveCLSID: TGUID; override; end; + TJclWimCompressArchive = class(TJclSevenzipCompressArchive, IInterface) + public + class function ArchiveExtensions: string; override; + class function ArchiveName: string; override; + class function ArchiveCLSID: TGUID; override; + end; + // sevenzip classes for decompression type TJclSevenzipDecompressItem = class(TJclDecompressItem) @@ -1742,6 +1756,41 @@ class function ArchiveCLSID: TGUID; override; end; + TJclTEDecompressArchive = class(TJclSevenzipDecompressArchive, IInterface) + public + class function ArchiveExtensions: string; override; + class function ArchiveName: string; override; + class function ArchiveCLSID: TGUID; override; + end; + + TJclUEFIcDecompressArchive = class(TJclSevenzipDecompressArchive, IInterface) + public + class function ArchiveExtensions: string; override; + class function ArchiveName: string; override; + class function ArchiveCLSID: TGUID; override; + end; + + TJclUEFIsDecompressArchive = class(TJclSevenzipDecompressArchive, IInterface) + public + class function ArchiveExtensions: string; override; + class function ArchiveName: string; override; + class function ArchiveCLSID: TGUID; override; + end; + + TJclSquashFSDecompressArchive = class(TJclSevenzipDecompressArchive, IInterface) + public + class function ArchiveExtensions: string; override; + class function ArchiveName: string; override; + class function ArchiveCLSID: TGUID; override; + end; + + TJclCramFSDecompressArchive = class(TJclSevenzipDecompressArchive, IInterface) + public + class function ArchiveExtensions: string; override; + class function ArchiveName: string; override; + class function ArchiveCLSID: TGUID; override; + end; + //sevenzip classes for updates (read and write) type TJclSevenzipUpdateArchive = class(TJclOutOfPlaceUpdateArchive, IInterface) @@ -4245,6 +4294,7 @@ RegisterFormat(TJclGZipCompressArchive); RegisterFormat(TJclXzCompressArchive); RegisterFormat(TJclSwfcCompressArchive); + RegisterFormat(TJclWimCompressArchive); // register decompression archives RegisterFormat(TJclZipDecompressArchive); RegisterFormat(TJclBZ2DecompressArchive); @@ -4283,6 +4333,13 @@ RegisterFormat(TJclFlvDecompressArchive); RegisterFormat(TJclSwfDecompressArchive); RegisterFormat(TJclSwfcDecompressArchive); + RegisterFormat(TJclAPMDecompressArchive); + RegisterFormat(TJclPpmdDecompressArchive); + RegisterFormat(TJclTEDecompressArchive); + RegisterFormat(TJclUEFIcDecompressArchive); + RegisterFormat(TJclUEFIsDecompressArchive); + RegisterFormat(TJclSquashFSDecompressArchive); + RegisterFormat(TJclCramFSDecompressArchive); // register update archives RegisterFormat(TJclZipUpdateArchive); RegisterFormat(TJclBZ2UpdateArchive); @@ -7294,6 +7351,23 @@ Result := CLSID_CFormatSwfc; end; +//=== { TJclWimCompressArchive } ============================================= + +class function TJclWimCompressArchive.ArchiveCLSID: TGUID; +begin + Result := CLSID_CFormatWim; +end; + +class function TJclWimCompressArchive.ArchiveExtensions: string; +begin + Result := LoadResString(@RsCompressionWimExtensions); +end; + +class function TJclWimCompressArchive.ArchiveName: string; +begin + Result := LoadResString(@RsCompressionWimName); +end; + //=== { TJclSevenzipOpenCallback } =========================================== constructor TJclSevenzipOpenCallback.Create( @@ -8584,6 +8658,91 @@ Result := CLSID_CFormatPpmd; end; +//=== { TJclTEDecompressArchive } ============================================ + +class function TJclTEDecompressArchive.ArchiveExtensions: string; +begin + Result := LoadResString(@RsCompressionTEExtensions); +end; + +class function TJclTEDecompressArchive.ArchiveName: string; +begin + Result := LoadResString(@RsCompressionTEName); +end; + +class function TJclTEDecompressArchive.ArchiveCLSID: TGUID; +begin + Result := CLSID_CFormatTE; +end; + +//=== { TJclUEFIcDecompressArchive } ========================================= + +class function TJclUEFIcDecompressArchive.ArchiveExtensions: string; +begin + Result := LoadResString(@RsCompressionUEFIcExtensions); +end; + +class function TJclUEFIcDecompressArchive.ArchiveName: string; +begin + Result := LoadResString(@RsCompressionUEFIcName); +end; + +class function TJclUEFIcDecompressArchive.ArchiveCLSID: TGUID; +begin + Result := CLSID_CFormatUEFIc; +end; + +//=== { TJclUEFIsDecompressArchive } ========================================= + +class function TJclUEFIsDecompressArchive.ArchiveExtensions: string; +begin + Result := LoadResString(@RsCompressionUEFIsExtensions); +end; + +class function TJclUEFIsDecompressArchive.ArchiveName: string; +begin + Result := LoadResString(@RsCompressionUEFIsName); +end; + +class function TJclUEFIsDecompressArchive.ArchiveCLSID: TGUID; +begin + Result := CLSID_CFormatUEFIs; +end; + +//=== { TJclSquashFSDecompressArchive } ====================================== + +class function TJclSquashFSDecompressArchive.ArchiveExtensions: string; +begin + Result := LoadResString(@RsCompressionSquashFSExtensions); +end; + +class function TJclSquashFSDecompressArchive.ArchiveName: string; +begin + Result := LoadResString(@RsCompressionSquashFSName); +end; + +class function TJclSquashFSDecompressArchive.ArchiveCLSID: TGUID; +begin + Result := CLSID_CFormatSquashFS; +end; + +//=== { TJclCramFSDecompressArchive } ======================================== + +class function TJclCramFSDecompressArchive.ArchiveExtensions: string; +begin + Result := LoadResString(@RsCompressionCramFSExtensions); +end; + +class function TJclCramFSDecompressArchive.ArchiveName: string; +begin + Result := LoadResString(@RsCompressionCramFSName); +end; + +class function TJclCramFSDecompressArchive.ArchiveCLSID: TGUID; +begin + Result := CLSID_CFormatCramFS; +end; + //=== { TJclSevenzipUpdateArchive } ========================================== class function TJclSevenzipUpdateArchive.ArchiveCLSID: TGUID; Modified: trunk/jcl/source/common/JclResources.pas =================================================================== --- trunk/jcl/source/common/JclResources.pas 2011-08-01 13:01:13 UTC (rev 3563) +++ trunk/jcl/source/common/JclResources.pas 2011-08-01 14:13:46 UTC (rev 3564) @@ -1117,6 +1117,16 @@ RsCompressionApmExtensions = '*.'; RsCompressionPpmdName = 'PPMD archive'; RsCompressionPpmdExtensions = '*.pmd'; + RsCompressionTEName = 'Terse Executable'; + RsCompressionTEExtensions = '*.te'; + RsCompressionUEFIcName = 'UEFIc archive'; + RsCompressionUEFIcExtensions = '*.scap'; + RsCompressionUEFIsName = 'UEFIs archive'; + RsCompressionUEFIsExtensions = '*.'; + RsCompressionSquashFSName = 'SquashFS archive'; + RsCompressionSquashFSExtensions = '*.squashfs'; + RsCompressionCramFSName = 'CramFS archive'; + RsCompressionCramFSExtensions = '*.cramfs'; RsCompressionDuplicate = 'The file %s already exists in the archive'; RsCompressionReplaceError = 'At least one compression volumes could not be replaced after an archive out-of-place update'; Modified: trunk/jcl/source/windows/sevenzip.pas =================================================================== --- trunk/jcl/source/windows/sevenzip.pas 2011-08-01 13:01:13 UTC (rev 3563) +++ trunk/jcl/source/windows/sevenzip.pas 2011-08-01 14:13:46 UTC (rev 3564) @@ -106,6 +106,11 @@ CLSID_CFormatLzma86 : TGUID = '{23170F69-40C1-278A-1000-0001100B0000}'; CLSID_CFormatXz : TGUID = '{23170F69-40C1-278A-1000-0001100C0000}'; CLSID_CFormatPpmd : TGUID = '{23170F69-40C1-278A-1000-0001100D0000}'; + CLSID_CFormatTE : TGUID = '{23170F69-40C1-278A-1000-000110CF0000}'; + CLSID_CFormatUEFIc : TGUID = '{23170F69-40C1-278A-1000-000110D00000}'; + CLSID_CFormatUEFIs : TGUID = '{23170F69-40C1-278A-1000-000110D10000}'; + CLSID_CFormatSquashFS : TGUID = '{23170F69-40C1-278A-1000-000110D20000}'; + CLSID_CFormatCramFS : TGUID = '{23170F69-40C1-278A-1000-000110D30000}'; CLSID_CFormatAPM : TGUID = '{23170F69-40C1-278A-1000-000110D40000}'; CLSID_CFormatMslz : TGUID = '{23170F69-40C1-278A-1000-000110D50000}'; CLSID_CFormatFlv : TGUID = '{23170F69-40C1-278A-1000-000110D60000}'; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2011-08-01 13:01:19
|
Revision: 3563 http://jcl.svn.sourceforge.net/jcl/?rev=3563&view=rev Author: outchy Date: 2011-08-01 13:01:13 +0000 (Mon, 01 Aug 2011) Log Message: ----------- Mantis 5597: Debug Expert fails to append jdbg on large projects. Loading the entire image in memory is not a good idea for big projects, this is a new approach based on file streams. Modified Paths: -------------- trunk/jcl/source/windows/JclDebug.pas trunk/jcl/source/windows/JclPeImage.pas Modified: trunk/jcl/source/windows/JclDebug.pas =================================================================== --- trunk/jcl/source/windows/JclDebug.pas 2011-07-30 11:22:59 UTC (rev 3562) +++ trunk/jcl/source/windows/JclDebug.pas 2011-08-01 13:01:13 UTC (rev 3563) @@ -1024,6 +1024,7 @@ implementation uses + RTLConsts, {$IFDEF HAS_UNIT_CHARACTER} Character, {$ENDIF HAS_UNIT_CHARACTER} @@ -2226,9 +2227,12 @@ BinDebug: TJclBinDebugGenerator; out LinkerBugUnit: string; out MapFileSize, JclDebugDataSize, LineNumberErrors: Integer): Boolean; var - ImageStream: TMemoryStream; - NtHeaders32: PImageNtHeaders32; - Sections, LastSection, JclDebugSection: PImageSectionHeader; + ImageStream: TStream; + NtHeaders32: TImageNtHeaders32; + ImageSectionHeaders: TImageSectionHeaderArray; + NtHeaders32Position, ImageSectionHeadersPosition, JclDebugSectionPosition: Int64; + JclDebugSection: TImageSectionHeader; + LastSection: PImageSectionHeader; VirtualAlignedSize: DWORD; I, X, NeedFill: Integer; @@ -2257,69 +2261,75 @@ if not Result then Exit; - ImageStream := TMemoryStream.Create; + ImageStream := TFileStream.Create(ExecutableFileName, fmOpenReadWrite or fmShareExclusive); try try - ImageStream.LoadFromFile(ExecutableFileName); - if PeMapImgTarget(ImageStream.Memory) = taWin32 then + if PeMapImgTarget(ImageStream, 0) = taWin32 then begin MapFileSize := BinDebug.Stream.Size; JclDebugDataSize := BinDebug.DataStream.Size; - NtHeaders32 := PeMapImgNtHeaders32(ImageStream.Memory); - Assert(NtHeaders32 <> nil); - Sections := PeMapImgSections32(NtHeaders32); - Assert(Sections <> nil); + NtHeaders32Position := PeMapImgNtHeaders32(ImageStream, 0, NtHeaders32); + Assert(NtHeaders32Position <> -1); + ImageSectionHeadersPosition := PeMapImgSections32(ImageStream, NtHeaders32Position, NtHeaders32, ImageSectionHeaders); + Assert(ImageSectionHeadersPosition <> -1); // Check whether there is not a section with the name already. If so, return True (#0000069) - if PeMapImgFindSection32(NtHeaders32, JclDbgDataResName) <> nil then + if PeMapImgFindSection(ImageSectionHeaders, JclDbgDataResName) <> -1 then begin Result := True; Exit; end; - LastSection := Sections; - Inc(LastSection, NtHeaders32^.FileHeader.NumberOfSections - 1); - JclDebugSection := LastSection; - Inc(JclDebugSection); + JclDebugSectionPosition := ImageSectionHeadersPosition + (SizeOf(ImageSectionHeaders[0]) * Length(ImageSectionHeaders)); + LastSection := @ImageSectionHeaders[High(ImageSectionHeaders)]; + + // Increase the number of sections + Inc(NtHeaders32.FileHeader.NumberOfSections); - // Increase the number of sections - Inc(NtHeaders32^.FileHeader.NumberOfSections); - ResetMemory(JclDebugSection^, SizeOf(TImageSectionHeader)); + ResetMemory(JclDebugSection, SizeOf(JclDebugSection)); // JCLDEBUG Virtual Address - JclDebugSection^.VirtualAddress := LastSection^.VirtualAddress + LastSection^.Misc.VirtualSize; - RoundUpToAlignment(JclDebugSection^.VirtualAddress, NtHeaders32^.OptionalHeader.SectionAlignment); + JclDebugSection.VirtualAddress := LastSection^.VirtualAddress + LastSection^.Misc.VirtualSize; + RoundUpToAlignment(JclDebugSection.VirtualAddress, NtHeaders32.OptionalHeader.SectionAlignment); // JCLDEBUG Physical Offset - JclDebugSection^.PointerToRawData := LastSection^.PointerToRawData + LastSection^.SizeOfRawData; - RoundUpToAlignment(JclDebugSection^.PointerToRawData, NtHeaders32^.OptionalHeader.FileAlignment); + JclDebugSection.PointerToRawData := LastSection^.PointerToRawData + LastSection^.SizeOfRawData; + RoundUpToAlignment(JclDebugSection.PointerToRawData, NtHeaders32.OptionalHeader.FileAlignment); // JCLDEBUG Section name - StrPLCopy(PAnsiChar(@JclDebugSection^.Name), JclDbgDataResName, IMAGE_SIZEOF_SHORT_NAME); + StrPLCopy(PAnsiChar(@JclDebugSection.Name), JclDbgDataResName, IMAGE_SIZEOF_SHORT_NAME); // JCLDEBUG Characteristics flags - JclDebugSection^.Characteristics := IMAGE_SCN_MEM_READ or IMAGE_SCN_CNT_INITIALIZED_DATA; + JclDebugSection.Characteristics := IMAGE_SCN_MEM_READ or IMAGE_SCN_CNT_INITIALIZED_DATA; // Size of virtual data area - JclDebugSection^.Misc.VirtualSize := JclDebugDataSize; + JclDebugSection.Misc.VirtualSize := JclDebugDataSize; VirtualAlignedSize := JclDebugDataSize; - RoundUpToAlignment(VirtualAlignedSize, NtHeaders32^.OptionalHeader.SectionAlignment); + RoundUpToAlignment(VirtualAlignedSize, NtHeaders32.OptionalHeader.SectionAlignment); // Update Size of Image - Inc(NtHeaders32^.OptionalHeader.SizeOfImage, VirtualAlignedSize); + Inc(NtHeaders32.OptionalHeader.SizeOfImage, VirtualAlignedSize); // Raw data size - JclDebugSection^.SizeOfRawData := JclDebugDataSize; - RoundUpToAlignment(JclDebugSection^.SizeOfRawData, NtHeaders32^.OptionalHeader.FileAlignment); + JclDebugSection.SizeOfRawData := JclDebugDataSize; + RoundUpToAlignment(JclDebugSection.SizeOfRawData, NtHeaders32.OptionalHeader.FileAlignment); // Update Initialized data size - Inc(NtHeaders32^.OptionalHeader.SizeOfInitializedData, JclDebugSection^.SizeOfRawData); + Inc(NtHeaders32.OptionalHeader.SizeOfInitializedData, JclDebugSection.SizeOfRawData); + // write NT Headers 32 + if (ImageStream.Seek(NtHeaders32Position, soBeginning) <> NtHeaders32Position) or + (ImageStream.Write(NtHeaders32, SizeOf(NtHeaders32)) <> SizeOf(NtHeaders32)) then + raise EJclPeImageError.CreateRes(@SWriteError); + + // write section header + if (ImageStream.Seek(JclDebugSectionPosition, soBeginning) <> JclDebugSectionPosition) or + (ImageStream.Write(JclDebugSection, SizeOf(JclDebugSection)) <> SizeOf(JclDebugSection)) then + raise EJclPeImageError.CreateRes(@SWriteError); + // Fill data to alignment - NeedFill := INT_PTR(JclDebugSection^.SizeOfRawData) - JclDebugDataSize; + NeedFill := INT_PTR(JclDebugSection.SizeOfRawData) - JclDebugDataSize; // Note: Delphi linker seems to generate incorrect (unaligned) size of // the executable when adding TD32 debug data so the position could be // behind the size of the file then. - ImageStream.Seek(JclDebugSection^.PointerToRawData, soFromBeginning); + ImageStream.Seek({0 +} JclDebugSection.PointerToRawData, soFromBeginning); ImageStream.CopyFrom(BinDebug.DataStream, 0); X := 0; for I := 1 to NeedFill do ImageStream.WriteBuffer(X, 1); - - ImageStream.SaveToFile(ExecutableFileName); end else Result := False; Modified: trunk/jcl/source/windows/JclPeImage.pas =================================================================== --- trunk/jcl/source/windows/JclPeImage.pas 2011-07-30 11:22:59 UTC (rev 3562) +++ trunk/jcl/source/windows/JclPeImage.pas 2011-08-01 13:01:13 UTC (rev 3563) @@ -940,23 +940,36 @@ // Mapped or loaded image related routines // use PeMapImgNtHeaders32 // function PeMapImgNtHeaders(const BaseAddress: Pointer): PImageNtHeaders; -function PeMapImgNtHeaders32(const BaseAddress: Pointer): PImageNtHeaders32; -function PeMapImgNtHeaders64(const BaseAddress: Pointer): PImageNtHeaders64; +function PeMapImgNtHeaders32(const BaseAddress: Pointer): PImageNtHeaders32; overload; +function PeMapImgNtHeaders32(Stream: TStream; const BasePosition: Int64; out NtHeaders32: TImageNtHeaders32): Int64; overload; +function PeMapImgNtHeaders64(const BaseAddress: Pointer): PImageNtHeaders64; overload; +function PeMapImgNtHeaders64(Stream: TStream; const BasePosition: Int64; out NtHeaders64: TImageNtHeaders64): Int64; overload; function PeMapImgLibraryName(const BaseAddress: Pointer): string; function PeMapImgLibraryName32(const BaseAddress: Pointer): string; function PeMapImgLibraryName64(const BaseAddress: Pointer): string; -function PeMapImgSize(const BaseAddress: Pointer): DWORD; -function PeMapImgSize32(const BaseAddress: Pointer): DWORD; -function PeMapImgSize64(const BaseAddress: Pointer): DWORD; +function PeMapImgSize(const BaseAddress: Pointer): DWORD; overload; +function PeMapImgSize(Stream: TStream; const BasePosition: Int64): DWORD; overload; +function PeMapImgSize32(const BaseAddress: Pointer): DWORD; overload; +function PeMapImgSize32(Stream: TStream; const BasePosition: Int64): DWORD; overload; +function PeMapImgSize64(const BaseAddress: Pointer): DWORD; overload; +function PeMapImgSize64(Stream: TStream; const BasePosition: Int64): DWORD; overload; -function PeMapImgTarget(const BaseAddress: Pointer): TJclPeTarget; +function PeMapImgTarget(const BaseAddress: Pointer): TJclPeTarget; overload; +function PeMapImgTarget(Stream: TStream; const BasePosition: Int64): TJclPeTarget; overload; +type + TImageSectionHeaderArray = array of TImageSectionHeader; + // use PeMapImgSections32 // function PeMapImgSections(NtHeaders: PImageNtHeaders): PImageSectionHeader; -function PeMapImgSections32(NtHeaders: PImageNtHeaders32): PImageSectionHeader; -function PeMapImgSections64(NtHeaders: PImageNtHeaders64): PImageSectionHeader; +function PeMapImgSections32(NtHeaders: PImageNtHeaders32): PImageSectionHeader; overload; +function PeMapImgSections32(Stream: TStream; const NtHeaders32Position: Int64; const NtHeaders32: TImageNtHeaders32; + out ImageSectionHeaders: TImageSectionHeaderArray): Int64; overload; +function PeMapImgSections64(NtHeaders: PImageNtHeaders64): PImageSectionHeader; overload; +function PeMapImgSections64(Stream: TStream; const NtHeaders64Position: Int64; const NtHeaders64: TImageNtHeaders64; + out ImageSectionHeaders: TImageSectionHeaderArray): Int64; overload; // use PeMapImgFindSection32 // function PeMapImgFindSection(NtHeaders: PImageNtHeaders; @@ -965,6 +978,8 @@ const SectionName: string): PImageSectionHeader; function PeMapImgFindSection64(NtHeaders: PImageNtHeaders64; const SectionName: string): PImageSectionHeader; +function PeMapImgFindSection(const ImageSectionHeaders: TImageSectionHeaderArray; + const SectionName: string): SizeInt; function PeMapImgFindSectionFromModule(const BaseAddress: Pointer; const SectionName: string): PImageSectionHeader; @@ -1083,6 +1098,7 @@ implementation uses + RTLConsts, {$IFDEF HAS_UNIT_CHARACTER} Character, {$ENDIF HAS_UNIT_CHARACTER} @@ -5703,6 +5719,31 @@ Result := nil end; +function PeMapImgNtHeaders32(Stream: TStream; const BasePosition: Int64; out NtHeaders32: TImageNtHeaders32): Int64; +var + ImageDosHeader: TImageDosHeader; +begin + ResetMemory(NtHeaders32, SizeOf(NtHeaders32)); + Result := -1; + + if (Stream.Seek(BasePosition, soBeginning) <> BasePosition) or + (Stream.Read(ImageDosHeader, SizeOf(ImageDosHeader)) <> SizeOf(ImageDosHeader)) then + raise EJclPeImageError.CreateRes(@SReadError); + + if (ImageDosHeader.e_magic <> IMAGE_DOS_SIGNATURE) or + (ImageDosHeader._lfanew = 0) then + Exit; + + Result := BasePosition + DWORD(ImageDosHeader._lfanew); + + if (Stream.Seek(Result, soBeginning) <> Result) or + (Stream.Read(NtHeaders32, SizeOf(NtHeaders32)) <> SizeOf(NtHeaders32)) then + raise EJclPeImageError.CreateRes(@SReadError); + + if NtHeaders32.Signature <> IMAGE_NT_SIGNATURE then + Result := -1; +end; + function PeMapImgNtHeaders64(const BaseAddress: Pointer): PImageNtHeaders64; begin Result := nil; @@ -5717,6 +5758,31 @@ Result := nil end; +function PeMapImgNtHeaders64(Stream: TStream; const BasePosition: Int64; out NtHeaders64: TImageNtHeaders64): Int64; +var + ImageDosHeader: TImageDosHeader; +begin + ResetMemory(NtHeaders64, SizeOf(NtHeaders64)); + Result := -1; + + if (Stream.Seek(BasePosition, soBeginning) <> BasePosition) or + (Stream.Read(ImageDosHeader, SizeOf(ImageDosHeader)) <> SizeOf(ImageDosHeader)) then + raise EJclPeImageError.CreateRes(@SReadError); + + if (ImageDosHeader.e_magic <> IMAGE_DOS_SIGNATURE) or + (ImageDosHeader._lfanew = 0) then + Exit; + + Result := BasePosition + DWORD(ImageDosHeader._lfanew); + + if (Stream.Seek(Result, soBeginning) <> Result) or + (Stream.Read(NtHeaders64, SizeOf(NtHeaders64)) <> SizeOf(NtHeaders64)) then + raise EJclPeImageError.CreateRes(@SReadError); + + if NtHeaders64.Signature <> IMAGE_NT_SIGNATURE then + Result := -1; +end; + function PeMapImgSize(const BaseAddress: Pointer): DWORD; begin case PeMapImgTarget(BaseAddress) of @@ -5730,6 +5796,19 @@ end; end; +function PeMapImgSize(Stream: TStream; const BasePosition: Int64): DWORD; +begin + case PeMapImgTarget(Stream, BasePosition) of + taWin32: + Result := PeMapImgSize32(Stream, BasePosition); + taWin64: + Result := PeMapImgSize64(Stream, BasePosition); + //taUnknown: + else + Result := 0; + end; +end; + function PeMapImgSize32(const BaseAddress: Pointer): DWORD; var NtHeaders32: PImageNtHeaders32; @@ -5740,6 +5819,15 @@ Result := NtHeaders32^.OptionalHeader.SizeOfImage; end; +function PeMapImgSize32(Stream: TStream; const BasePosition: Int64): DWORD; +var + NtHeaders32: TImageNtHeaders32; +begin + Result := 0; + if PeMapImgNtHeaders32(Stream, BasePosition, NtHeaders32) <> -1 then + Result := NtHeaders32.OptionalHeader.SizeOfImage; +end; + function PeMapImgSize64(const BaseAddress: Pointer): DWORD; var NtHeaders64: PImageNtHeaders64; @@ -5750,6 +5838,15 @@ Result := NtHeaders64^.OptionalHeader.SizeOfImage; end; +function PeMapImgSize64(Stream: TStream; const BasePosition: Int64): DWORD; +var + NtHeaders64: TImageNtHeaders64; +begin + Result := 0; + if PeMapImgNtHeaders64(Stream, BasePosition, NtHeaders64) <> -1 then + Result := NtHeaders64.OptionalHeader.SizeOfImage; +end; + function PeMapImgLibraryName(const BaseAddress: Pointer): string; begin case PeMapImgTarget(BaseAddress) of @@ -5823,6 +5920,23 @@ end; end; +function PeMapImgTarget(Stream: TStream; const BasePosition: Int64): TJclPeTarget; +var + ImageNtHeaders: TImageNtHeaders32; +begin + Result := taUnknown; + + if PeMapImgNtHeaders32(Stream, BasePosition, ImageNtHeaders) <> -1 then + begin + case ImageNtHeaders.FileHeader.Machine of + IMAGE_FILE_MACHINE_I386: + Result := taWin32; + IMAGE_FILE_MACHINE_AMD64: + Result := taWin64; + end; + end; +end; + function PeMapImgSections32(NtHeaders: PImageNtHeaders32): PImageSectionHeader; begin if NtHeaders = nil then @@ -5832,6 +5946,28 @@ NtHeaders^.FileHeader.SizeOfOptionalHeader); end; +function PeMapImgSections32(Stream: TStream; const NtHeaders32Position: Int64; const NtHeaders32: TImageNtHeaders32; + out ImageSectionHeaders: TImageSectionHeaderArray): Int64; +var + SectionSize: Integer; +begin + if NtHeaders32Position = -1 then + begin + SetLength(ImageSectionHeaders, 0); + Result := -1; + end + else + begin + SetLength(ImageSectionHeaders, NtHeaders32.FileHeader.NumberOfSections); + Result := NtHeaders32Position + SizeOf(NtHeaders32.Signature) + SizeOf(NtHeaders32.FileHeader) + NtHeaders32.FileHeader.SizeOfOptionalHeader; + + SectionSize := SizeOf(ImageSectionHeaders[0]) * Length(ImageSectionHeaders); + if (Stream.Seek(Result, soBeginning) <> Result) or + (Stream.Read(ImageSectionHeaders[0], SectionSize) <> SectionSize) then + raise EJclPeImageError.CreateRes(@SReadError); + end; +end; + function PeMapImgSections64(NtHeaders: PImageNtHeaders64): PImageSectionHeader; begin if NtHeaders = nil then @@ -5841,6 +5977,28 @@ NtHeaders^.FileHeader.SizeOfOptionalHeader); end; +function PeMapImgSections64(Stream: TStream; const NtHeaders64Position: Int64; const NtHeaders64: TImageNtHeaders64; + out ImageSectionHeaders: TImageSectionHeaderArray): Int64; +var + SectionSize: Integer; +begin + if NtHeaders64Position = -1 then + begin + SetLength(ImageSectionHeaders, 0); + Result := -1; + end + else + begin + SetLength(ImageSectionHeaders, NtHeaders64.FileHeader.NumberOfSections); + Result := NtHeaders64Position + SizeOf(NtHeaders64.Signature) + SizeOf(NtHeaders64.FileHeader) + NtHeaders64.FileHeader.SizeOfOptionalHeader; + + SectionSize := SizeOf(ImageSectionHeaders[0]) * Length(ImageSectionHeaders); + if (Stream.Seek(Result, soBeginning) <> Result) or + (Stream.Read(ImageSectionHeaders[0], SectionSize) <> SectionSize) then + raise EJclPeImageError.CreateRes(@SReadError); + end; +end; + function PeMapImgFindSection32(NtHeaders: PImageNtHeaders32; const SectionName: string): PImageSectionHeader; var @@ -5856,15 +6014,14 @@ UTF8Name := TUTF8String(SectionName); P := PAnsiChar(UTF8Name); Header := PeMapImgSections32(NtHeaders); - with NtHeaders^ do - for I := 1 to FileHeader.NumberOfSections do - if StrLComp(PAnsiChar(@Header^.Name), P, IMAGE_SIZEOF_SHORT_NAME) = 0 then - begin - Result := Header; - Break; - end - else - Inc(Header); + for I := 1 to NtHeaders^.FileHeader.NumberOfSections do + if StrLComp(PAnsiChar(@Header^.Name), P, IMAGE_SIZEOF_SHORT_NAME) = 0 then + begin + Result := Header; + Break; + end + else + Inc(Header); end; end; @@ -5883,18 +6040,35 @@ UTF8Name := TUTF8String(SectionName); P := PAnsiChar(UTF8Name); Header := PeMapImgSections64(NtHeaders); - with NtHeaders^ do - for I := 1 to FileHeader.NumberOfSections do - if StrLComp(PAnsiChar(@Header^.Name), P, IMAGE_SIZEOF_SHORT_NAME) = 0 then - begin - Result := Header; - Break; - end - else - Inc(Header); + for I := 1 to NtHeaders^.FileHeader.NumberOfSections do + if StrLComp(PAnsiChar(@Header^.Name), P, IMAGE_SIZEOF_SHORT_NAME) = 0 then + begin + Result := Header; + Break; + end + else + Inc(Header); end; end; +function PeMapImgFindSection(const ImageSectionHeaders: TImageSectionHeaderArray; + const SectionName: string): SizeInt; +var + P: PAnsiChar; + UTF8Name: TUTF8String; +begin + if Length(ImageSectionHeaders) > 0 then + begin + if not TryStringToUTF8(SectionName, UTF8Name) then + UTF8Name := TUTF8String(SectionName); + P := PAnsiChar(UTF8Name); + for Result := Low(ImageSectionHeaders) to High(ImageSectionHeaders) do + if StrLComp(PAnsiChar(@ImageSectionHeaders[Result].Name), P, IMAGE_SIZEOF_SHORT_NAME) = 0 then + Exit; + end; + Result := -1; +end; + function PeMapImgFindSectionFromModule(const BaseAddress: Pointer; const SectionName: string): PImageSectionHeader; function PeMapImgFindSectionFromModule32(const BaseAddress: Pointer; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2011-07-30 11:23:05
|
Revision: 3562 http://jcl.svn.sourceforge.net/jcl/?rev=3562&view=rev Author: outchy Date: 2011-07-30 11:22:59 +0000 (Sat, 30 Jul 2011) Log Message: ----------- make PeMapImgLibraryName32, PeMapImgLibraryName64, PeMapImgSize32 and PeMapImgSize64 public. Modified Paths: -------------- trunk/jcl/source/windows/JclPeImage.pas Modified: trunk/jcl/source/windows/JclPeImage.pas =================================================================== --- trunk/jcl/source/windows/JclPeImage.pas 2011-07-30 08:32:12 UTC (rev 3561) +++ trunk/jcl/source/windows/JclPeImage.pas 2011-07-30 11:22:59 UTC (rev 3562) @@ -944,7 +944,13 @@ function PeMapImgNtHeaders64(const BaseAddress: Pointer): PImageNtHeaders64; function PeMapImgLibraryName(const BaseAddress: Pointer): string; +function PeMapImgLibraryName32(const BaseAddress: Pointer): string; +function PeMapImgLibraryName64(const BaseAddress: Pointer): string; + function PeMapImgSize(const BaseAddress: Pointer): DWORD; +function PeMapImgSize32(const BaseAddress: Pointer): DWORD; +function PeMapImgSize64(const BaseAddress: Pointer): DWORD; + function PeMapImgTarget(const BaseAddress: Pointer): TJclPeTarget; // use PeMapImgSections32 @@ -5712,24 +5718,6 @@ end; function PeMapImgSize(const BaseAddress: Pointer): DWORD; - function PeMapImgSize32(const BaseAddress: Pointer): DWORD; - var - NtHeaders32: PImageNtHeaders32; - begin - Result := 0; - NtHeaders32 := PeMapImgNtHeaders32(BaseAddress); - if Assigned(NtHeaders32) then - Result := NtHeaders32^.OptionalHeader.SizeOfImage; - end; - function PeMapImgSize64(const BaseAddress: Pointer): DWORD; - var - NtHeaders64: PImageNtHeaders64; - begin - Result := 0; - NtHeaders64 := PeMapImgNtHeaders64(BaseAddress); - if Assigned(NtHeaders64) then - Result := NtHeaders64^.OptionalHeader.SizeOfImage; - end; begin case PeMapImgTarget(BaseAddress) of taWin32: @@ -5742,49 +5730,27 @@ end; end; +function PeMapImgSize32(const BaseAddress: Pointer): DWORD; +var + NtHeaders32: PImageNtHeaders32; +begin + Result := 0; + NtHeaders32 := PeMapImgNtHeaders32(BaseAddress); + if Assigned(NtHeaders32) then + Result := NtHeaders32^.OptionalHeader.SizeOfImage; +end; + +function PeMapImgSize64(const BaseAddress: Pointer): DWORD; +var + NtHeaders64: PImageNtHeaders64; +begin + Result := 0; + NtHeaders64 := PeMapImgNtHeaders64(BaseAddress); + if Assigned(NtHeaders64) then + Result := NtHeaders64^.OptionalHeader.SizeOfImage; +end; + function PeMapImgLibraryName(const BaseAddress: Pointer): string; - function PeMapImgLibraryName32(const BaseAddress: Pointer): string; - var - NtHeaders: PImageNtHeaders32; - DataDir: TImageDataDirectory; - ExportDir: PImageExportDirectory; - UTF8Name: TUTF8String; - begin - Result := ''; - NtHeaders := PeMapImgNtHeaders32(BaseAddress); - if NtHeaders = nil then - Exit; - DataDir := NtHeaders^.OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_EXPORT]; - if DataDir.Size = 0 then - Exit; - ExportDir := PImageExportDirectory(TJclAddr(BaseAddress) + DataDir.VirtualAddress); - if IsBadReadPtr(ExportDir, SizeOf(TImageExportDirectory)) or (ExportDir^.Name = 0) then - Exit; - UTF8Name := PAnsiChar(TJclAddr(BaseAddress) + ExportDir^.Name); - if not TryUTF8ToString(UTF8Name, Result) then - Result := string(UTF8Name); - end; - function PeMapImgLibraryName64(const BaseAddress: Pointer): string; - var - NtHeaders: PImageNtHeaders64; - DataDir: TImageDataDirectory; - ExportDir: PImageExportDirectory; - UTF8Name: TUTF8String; - begin - Result := ''; - NtHeaders := PeMapImgNtHeaders64(BaseAddress); - if NtHeaders = nil then - Exit; - DataDir := NtHeaders^.OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_EXPORT]; - if DataDir.Size = 0 then - Exit; - ExportDir := PImageExportDirectory(TJclAddr(BaseAddress) + DataDir.VirtualAddress); - if IsBadReadPtr(ExportDir, SizeOf(TImageExportDirectory)) or (ExportDir^.Name = 0) then - Exit; - UTF8Name := PAnsiChar(TJclAddr(BaseAddress) + ExportDir^.Name); - if not TryUTF8ToString(UTF8Name, Result) then - Result := string(UTF8Name); - end; begin case PeMapImgTarget(BaseAddress) of taWin32: @@ -5797,6 +5763,50 @@ end; end; +function PeMapImgLibraryName32(const BaseAddress: Pointer): string; +var + NtHeaders: PImageNtHeaders32; + DataDir: TImageDataDirectory; + ExportDir: PImageExportDirectory; + UTF8Name: TUTF8String; +begin + Result := ''; + NtHeaders := PeMapImgNtHeaders32(BaseAddress); + if NtHeaders = nil then + Exit; + DataDir := NtHeaders^.OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_EXPORT]; + if DataDir.Size = 0 then + Exit; + ExportDir := PImageExportDirectory(TJclAddr(BaseAddress) + DataDir.VirtualAddress); + if IsBadReadPtr(ExportDir, SizeOf(TImageExportDirectory)) or (ExportDir^.Name = 0) then + Exit; + UTF8Name := PAnsiChar(TJclAddr(BaseAddress) + ExportDir^.Name); + if not TryUTF8ToString(UTF8Name, Result) then + Result := string(UTF8Name); +end; + +function PeMapImgLibraryName64(const BaseAddress: Pointer): string; +var + NtHeaders: PImageNtHeaders64; + DataDir: TImageDataDirectory; + ExportDir: PImageExportDirectory; + UTF8Name: TUTF8String; +begin + Result := ''; + NtHeaders := PeMapImgNtHeaders64(BaseAddress); + if NtHeaders = nil then + Exit; + DataDir := NtHeaders^.OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_EXPORT]; + if DataDir.Size = 0 then + Exit; + ExportDir := PImageExportDirectory(TJclAddr(BaseAddress) + DataDir.VirtualAddress); + if IsBadReadPtr(ExportDir, SizeOf(TImageExportDirectory)) or (ExportDir^.Name = 0) then + Exit; + UTF8Name := PAnsiChar(TJclAddr(BaseAddress) + ExportDir^.Name); + if not TryUTF8ToString(UTF8Name, Result) then + Result := string(UTF8Name); +end; + function PeMapImgTarget(const BaseAddress: Pointer): TJclPeTarget; var ImageNtHeaders: PImageNtHeaders32; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2011-07-30 08:32:19
|
Revision: 3561 http://jcl.svn.sourceforge.net/jcl/?rev=3561&view=rev Author: outchy Date: 2011-07-30 08:32:12 +0000 (Sat, 30 Jul 2011) Log Message: ----------- Mantis 5596: Debug Expert displays incorrect error message. Modified Paths: -------------- trunk/jcl/experts/common/JclOtaResources.pas trunk/jcl/experts/debug/converter/JclDebugIdeImpl.pas Modified: trunk/jcl/experts/common/JclOtaResources.pas =================================================================== --- trunk/jcl/experts/common/JclOtaResources.pas 2011-07-30 06:50:39 UTC (rev 3560) +++ trunk/jcl/experts/common/JclOtaResources.pas 2011-07-30 08:32:12 UTC (rev 3561) @@ -268,6 +268,7 @@ RsDeletedMapFile = 'Deleted %s file "%s"'; RsEFailedToDeleteMapFile = 'Failed to delete %s file "%s"'; RsEMapConversion = 'Failed to convert MAP file "%s"'; + RsEMapInsertion = 'Failed to insert MAP file "%s"'; RsENoActiveProject = 'No active project'; RsENoProjectMenuItem = 'Project menu item not found'; RsEInsertDataMenuItemNotInserted = 'Can''t insert the insert data menu item'; Modified: trunk/jcl/experts/debug/converter/JclDebugIdeImpl.pas =================================================================== --- trunk/jcl/experts/debug/converter/JclDebugIdeImpl.pas 2011-07-30 06:50:39 UTC (rev 3560) +++ trunk/jcl/experts/debug/converter/JclDebugIdeImpl.pas 2011-07-30 08:32:12 UTC (rev 3561) @@ -486,7 +486,7 @@ OutputToolMessage(Format(LoadResString(@RsInsertedJdbg), [MapFileName, MapFileSize, JclDebugDataSize])); end else - OutputToolMessage(Format(LoadResString(@RsEMapConversion), [MapFileName])); + OutputToolMessage(Format(LoadResString(@RsEMapInsertion), [MapFileName])); end else OutputToolMessage(Format(LoadResString(@RsEExecutableNotFound), [ProjectFileName])); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2011-07-30 06:50:47
|
Revision: 3560 http://jcl.svn.sourceforge.net/jcl/?rev=3560&view=rev Author: outchy Date: 2011-07-30 06:50:39 +0000 (Sat, 30 Jul 2011) Log Message: ----------- Mantis 5614: Strange behaviour IJclIterator; iterators should not keep interface references to their lists. Modified Paths: -------------- trunk/jcl/source/common/JclArrayLists.pas trunk/jcl/source/common/JclLinkedLists.pas trunk/jcl/source/common/JclPreProcessorArrayListsTemplates.pas trunk/jcl/source/common/JclPreProcessorLinkedListsTemplates.pas trunk/jcl/source/common/JclPreProcessorVectorsTemplates.pas trunk/jcl/source/common/JclVectors.pas trunk/jcl/source/prototypes/containers/JclArrayLists.imp trunk/jcl/source/prototypes/containers/JclArrayLists.int trunk/jcl/source/prototypes/containers/JclLinkedLists.imp trunk/jcl/source/prototypes/containers/JclLinkedLists.int trunk/jcl/source/prototypes/containers/JclVectors.imp trunk/jcl/source/prototypes/containers/JclVectors.int Modified: trunk/jcl/source/common/JclArrayLists.pas =================================================================== --- trunk/jcl/source/common/JclArrayLists.pas 2011-07-29 20:22:25 UTC (rev 3559) +++ trunk/jcl/source/common/JclArrayLists.pas 2011-07-30 06:50:39 UTC (rev 3560) @@ -49,6 +49,7 @@ JclAlgorithms, JclBase, JclAbstractContainers, JclContainerIntf, JclSynch; + type TItrStart = (isFirst, isLast); @@ -106,12 +107,12 @@ private FCursor: Integer; FStart: TItrStart; - FOwnList: IJclIntfList; + FOwnList: TJclIntfArrayList; protected procedure AssignPropertiesTo(Dest: TJclAbstractIterator); override; function CreateEmptyIterator: TJclAbstractIterator; override; public - constructor Create(const AOwnList: IJclIntfList; ACursor: Integer; AValid: Boolean; AStart: TItrStart); + constructor Create(AOwnList: TJclIntfArrayList; ACursor: Integer; AValid: Boolean; AStart: TItrStart); { IJclIntfIterator } function Add(const AInterface: IInterface): Boolean; procedure Extract; @@ -187,12 +188,12 @@ private FCursor: Integer; FStart: TItrStart; - FOwnList: IJclAnsiStrList; + FOwnList: TJclAnsiStrArrayList; protected procedure AssignPropertiesTo(Dest: TJclAbstractIterator); override; function CreateEmptyIterator: TJclAbstractIterator; override; public - constructor Create(const AOwnList: IJclAnsiStrList; ACursor: Integer; AValid: Boolean; AStart: TItrStart); + constructor Create(AOwnList: TJclAnsiStrArrayList; ACursor: Integer; AValid: Boolean; AStart: TItrStart); { IJclAnsiStrIterator } function Add(const AString: AnsiString): Boolean; procedure Extract; @@ -268,12 +269,12 @@ private FCursor: Integer; FStart: TItrStart; - FOwnList: IJclWideStrList; + FOwnList: TJclWideStrArrayList; protected procedure AssignPropertiesTo(Dest: TJclAbstractIterator); override; function CreateEmptyIterator: TJclAbstractIterator; override; public - constructor Create(const AOwnList: IJclWideStrList; ACursor: Integer; AValid: Boolean; AStart: TItrStart); + constructor Create(AOwnList: TJclWideStrArrayList; ACursor: Integer; AValid: Boolean; AStart: TItrStart); { IJclWideStrIterator } function Add(const AString: WideString): Boolean; procedure Extract; @@ -352,12 +353,12 @@ private FCursor: Integer; FStart: TItrStart; - FOwnList: IJclUnicodeStrList; + FOwnList: TJclUnicodeStrArrayList; protected procedure AssignPropertiesTo(Dest: TJclAbstractIterator); override; function CreateEmptyIterator: TJclAbstractIterator; override; public - constructor Create(const AOwnList: IJclUnicodeStrList; ACursor: Integer; AValid: Boolean; AStart: TItrStart); + constructor Create(AOwnList: TJclUnicodeStrArrayList; ACursor: Integer; AValid: Boolean; AStart: TItrStart); { IJclUnicodeStrIterator } function Add(const AString: UnicodeString): Boolean; procedure Extract; @@ -454,12 +455,12 @@ private FCursor: Integer; FStart: TItrStart; - FOwnList: IJclSingleList; + FOwnList: TJclSingleArrayList; protected procedure AssignPropertiesTo(Dest: TJclAbstractIterator); override; function CreateEmptyIterator: TJclAbstractIterator; override; public - constructor Create(const AOwnList: IJclSingleList; ACursor: Integer; AValid: Boolean; AStart: TItrStart); + constructor Create(AOwnList: TJclSingleArrayList; ACursor: Integer; AValid: Boolean; AStart: TItrStart); { IJclSingleIterator } function Add(const AValue: Single): Boolean; procedure Extract; @@ -535,12 +536,12 @@ private FCursor: Integer; FStart: TItrStart; - FOwnList: IJclDoubleList; + FOwnList: TJclDoubleArrayList; protected procedure AssignPropertiesTo(Dest: TJclAbstractIterator); override; function CreateEmptyIterator: TJclAbstractIterator; override; public - constructor Create(const AOwnList: IJclDoubleList; ACursor: Integer; AValid: Boolean; AStart: TItrStart); + constructor Create(AOwnList: TJclDoubleArrayList; ACursor: Integer; AValid: Boolean; AStart: TItrStart); { IJclDoubleIterator } function Add(const AValue: Double): Boolean; procedure Extract; @@ -616,12 +617,12 @@ private FCursor: Integer; FStart: TItrStart; - FOwnList: IJclExtendedList; + FOwnList: TJclExtendedArrayList; protected procedure AssignPropertiesTo(Dest: TJclAbstractIterator); override; function CreateEmptyIterator: TJclAbstractIterator; override; public - constructor Create(const AOwnList: IJclExtendedList; ACursor: Integer; AValid: Boolean; AStart: TItrStart); + constructor Create(AOwnList: TJclExtendedArrayList; ACursor: Integer; AValid: Boolean; AStart: TItrStart); { IJclExtendedIterator } function Add(const AValue: Extended): Boolean; procedure Extract; @@ -717,12 +718,12 @@ private FCursor: Integer; FStart: TItrStart; - FOwnList: IJclIntegerList; + FOwnList: TJclIntegerArrayList; protected procedure AssignPropertiesTo(Dest: TJclAbstractIterator); override; function CreateEmptyIterator: TJclAbstractIterator; override; public - constructor Create(const AOwnList: IJclIntegerList; ACursor: Integer; AValid: Boolean; AStart: TItrStart); + constructor Create(AOwnList: TJclIntegerArrayList; ACursor: Integer; AValid: Boolean; AStart: TItrStart); { IJclIntegerIterator } function Add(AValue: Integer): Boolean; procedure Extract; @@ -798,12 +799,12 @@ private FCursor: Integer; FStart: TItrStart; - FOwnList: IJclCardinalList; + FOwnList: TJclCardinalArrayList; protected procedure AssignPropertiesTo(Dest: TJclAbstractIterator); override; function CreateEmptyIterator: TJclAbstractIterator; override; public - constructor Create(const AOwnList: IJclCardinalList; ACursor: Integer; AValid: Boolean; AStart: TItrStart); + constructor Create(AOwnList: TJclCardinalArrayList; ACursor: Integer; AValid: Boolean; AStart: TItrStart); { IJclCardinalIterator } function Add(AValue: Cardinal): Boolean; procedure Extract; @@ -879,12 +880,12 @@ private FCursor: Integer; FStart: TItrStart; - FOwnList: IJclInt64List; + FOwnList: TJclInt64ArrayList; protected procedure AssignPropertiesTo(Dest: TJclAbstractIterator); override; function CreateEmptyIterator: TJclAbstractIterator; override; public - constructor Create(const AOwnList: IJclInt64List; ACursor: Integer; AValid: Boolean; AStart: TItrStart); + constructor Create(AOwnList: TJclInt64ArrayList; ACursor: Integer; AValid: Boolean; AStart: TItrStart); { IJclInt64Iterator } function Add(const AValue: Int64): Boolean; procedure Extract; @@ -960,12 +961,12 @@ private FCursor: Integer; FStart: TItrStart; - FOwnList: IJclPtrList; + FOwnList: TJclPtrArrayList; protected procedure AssignPropertiesTo(Dest: TJclAbstractIterator); override; function CreateEmptyIterator: TJclAbstractIterator; override; public - constructor Create(const AOwnList: IJclPtrList; ACursor: Integer; AValid: Boolean; AStart: TItrStart); + constructor Create(AOwnList: TJclPtrArrayList; ACursor: Integer; AValid: Boolean; AStart: TItrStart); { IJclPtrIterator } function Add(APtr: Pointer): Boolean; procedure Extract; @@ -1041,12 +1042,12 @@ private FCursor: Integer; FStart: TItrStart; - FOwnList: IJclList; + FOwnList: TJclArrayList; protected procedure AssignPropertiesTo(Dest: TJclAbstractIterator); override; function CreateEmptyIterator: TJclAbstractIterator; override; public - constructor Create(const AOwnList: IJclList; ACursor: Integer; AValid: Boolean; AStart: TItrStart); + constructor Create(AOwnList: TJclArrayList; ACursor: Integer; AValid: Boolean; AStart: TItrStart); { IJclIterator } function Add(AObject: TObject): Boolean; procedure Extract; @@ -1137,7 +1138,7 @@ procedure AssignPropertiesTo(Dest: TJclAbstractIterator); override; function CreateEmptyIterator: TJclAbstractIterator; override; public - constructor Create(const AOwnList: IJclList<T>; ACursor: Integer; AValid: Boolean; AStart: TItrStart); + constructor Create(AOwnList: IJclList<T>; ACursor: Integer; AValid: Boolean; AStart: TItrStart); { IJclIterator<T> } function Add(const AItem: T): Boolean; procedure Extract; @@ -1889,7 +1890,7 @@ //=== { TJclIntfArrayIterator } =============================================================== -constructor TJclIntfArrayIterator.Create(const AOwnList: IJclIntfList; ACursor: Integer; AValid: Boolean; AStart: TItrStart); +constructor TJclIntfArrayIterator.Create(AOwnList: TJclIntfArrayList; ACursor: Integer; AValid: Boolean; AStart: TItrStart); begin inherited Create(AValid); FOwnList := AOwnList; @@ -2711,7 +2712,7 @@ //=== { TJclAnsiStrArrayIterator } =============================================================== -constructor TJclAnsiStrArrayIterator.Create(const AOwnList: IJclAnsiStrList; ACursor: Integer; AValid: Boolean; AStart: TItrStart); +constructor TJclAnsiStrArrayIterator.Create(AOwnList: TJclAnsiStrArrayList; ACursor: Integer; AValid: Boolean; AStart: TItrStart); begin inherited Create(AValid); FOwnList := AOwnList; @@ -3533,7 +3534,7 @@ //=== { TJclWideStrArrayIterator } =============================================================== -constructor TJclWideStrArrayIterator.Create(const AOwnList: IJclWideStrList; ACursor: Integer; AValid: Boolean; AStart: TItrStart); +constructor TJclWideStrArrayIterator.Create(AOwnList: TJclWideStrArrayList; ACursor: Integer; AValid: Boolean; AStart: TItrStart); begin inherited Create(AValid); FOwnList := AOwnList; @@ -4359,7 +4360,7 @@ {$IFDEF SUPPORTS_UNICODE_STRING} //=== { TJclUnicodeStrArrayIterator } =============================================================== -constructor TJclUnicodeStrArrayIterator.Create(const AOwnList: IJclUnicodeStrList; ACursor: Integer; AValid: Boolean; AStart: TItrStart); +constructor TJclUnicodeStrArrayIterator.Create(AOwnList: TJclUnicodeStrArrayList; ACursor: Integer; AValid: Boolean; AStart: TItrStart); begin inherited Create(AValid); FOwnList := AOwnList; @@ -5182,7 +5183,7 @@ //=== { TJclSingleArrayIterator } =============================================================== -constructor TJclSingleArrayIterator.Create(const AOwnList: IJclSingleList; ACursor: Integer; AValid: Boolean; AStart: TItrStart); +constructor TJclSingleArrayIterator.Create(AOwnList: TJclSingleArrayList; ACursor: Integer; AValid: Boolean; AStart: TItrStart); begin inherited Create(AValid); FOwnList := AOwnList; @@ -6004,7 +6005,7 @@ //=== { TJclDoubleArrayIterator } =============================================================== -constructor TJclDoubleArrayIterator.Create(const AOwnList: IJclDoubleList; ACursor: Integer; AValid: Boolean; AStart: TItrStart); +constructor TJclDoubleArrayIterator.Create(AOwnList: TJclDoubleArrayList; ACursor: Integer; AValid: Boolean; AStart: TItrStart); begin inherited Create(AValid); FOwnList := AOwnList; @@ -6826,7 +6827,7 @@ //=== { TJclExtendedArrayIterator } =============================================================== -constructor TJclExtendedArrayIterator.Create(const AOwnList: IJclExtendedList; ACursor: Integer; AValid: Boolean; AStart: TItrStart); +constructor TJclExtendedArrayIterator.Create(AOwnList: TJclExtendedArrayList; ACursor: Integer; AValid: Boolean; AStart: TItrStart); begin inherited Create(AValid); FOwnList := AOwnList; @@ -7648,7 +7649,7 @@ //=== { TJclIntegerArrayIterator } =============================================================== -constructor TJclIntegerArrayIterator.Create(const AOwnList: IJclIntegerList; ACursor: Integer; AValid: Boolean; AStart: TItrStart); +constructor TJclIntegerArrayIterator.Create(AOwnList: TJclIntegerArrayList; ACursor: Integer; AValid: Boolean; AStart: TItrStart); begin inherited Create(AValid); FOwnList := AOwnList; @@ -8470,7 +8471,7 @@ //=== { TJclCardinalArrayIterator } =============================================================== -constructor TJclCardinalArrayIterator.Create(const AOwnList: IJclCardinalList; ACursor: Integer; AValid: Boolean; AStart: TItrStart); +constructor TJclCardinalArrayIterator.Create(AOwnList: TJclCardinalArrayList; ACursor: Integer; AValid: Boolean; AStart: TItrStart); begin inherited Create(AValid); FOwnList := AOwnList; @@ -9292,7 +9293,7 @@ //=== { TJclInt64ArrayIterator } =============================================================== -constructor TJclInt64ArrayIterator.Create(const AOwnList: IJclInt64List; ACursor: Integer; AValid: Boolean; AStart: TItrStart); +constructor TJclInt64ArrayIterator.Create(AOwnList: TJclInt64ArrayList; ACursor: Integer; AValid: Boolean; AStart: TItrStart); begin inherited Create(AValid); FOwnList := AOwnList; @@ -10114,7 +10115,7 @@ //=== { TJclPtrArrayIterator } =============================================================== -constructor TJclPtrArrayIterator.Create(const AOwnList: IJclPtrList; ACursor: Integer; AValid: Boolean; AStart: TItrStart); +constructor TJclPtrArrayIterator.Create(AOwnList: TJclPtrArrayList; ACursor: Integer; AValid: Boolean; AStart: TItrStart); begin inherited Create(AValid); FOwnList := AOwnList; @@ -10936,7 +10937,7 @@ //=== { TJclArrayIterator } =============================================================== -constructor TJclArrayIterator.Create(const AOwnList: IJclList; ACursor: Integer; AValid: Boolean; AStart: TItrStart); +constructor TJclArrayIterator.Create(AOwnList: TJclArrayList; ACursor: Integer; AValid: Boolean; AStart: TItrStart); begin inherited Create(AValid); FOwnList := AOwnList; @@ -11756,7 +11757,7 @@ //=== { TJclArrayIterator<T> } =============================================================== -constructor TJclArrayIterator<T>.Create(const AOwnList: IJclList<T>; ACursor: Integer; AValid: Boolean; AStart: TItrStart); +constructor TJclArrayIterator<T>.Create(AOwnList: IJclList<T>; ACursor: Integer; AValid: Boolean; AStart: TItrStart); begin inherited Create(AValid); FOwnList := AOwnList; Modified: trunk/jcl/source/common/JclLinkedLists.pas =================================================================== --- trunk/jcl/source/common/JclLinkedLists.pas 2011-07-29 20:22:25 UTC (rev 3559) +++ trunk/jcl/source/common/JclLinkedLists.pas 2011-07-30 06:50:39 UTC (rev 3560) @@ -51,6 +51,7 @@ Classes, JclBase, JclAbstractContainers, JclContainerIntf, JclSynch; + type TItrStart = (isFirst, isLast); @@ -110,13 +111,13 @@ private FCursor: TJclIntfLinkedListItem; FStart: TItrStart; - FOwnList: IJclIntfList; + FOwnList: TJclIntfLinkedList; FEqualityComparer: IJclIntfEqualityComparer; public procedure AssignPropertiesTo(Dest: TJclAbstractIterator); override; function CreateEmptyIterator: TJclAbstractIterator; override; public - constructor Create(const AOwnList: IJclIntfList; ACursor: TJclIntfLinkedListItem; AValid: Boolean; AStart: TItrStart); + constructor Create(AOwnList: TJclIntfLinkedList; ACursor: TJclIntfLinkedListItem; AValid: Boolean; AStart: TItrStart); { IJclIntfIterator } function Add(const AInterface: IInterface): Boolean; procedure Extract; @@ -194,13 +195,13 @@ private FCursor: TJclAnsiStrLinkedListItem; FStart: TItrStart; - FOwnList: IJclAnsiStrList; + FOwnList: TJclAnsiStrLinkedList; FEqualityComparer: IJclAnsiStrEqualityComparer; public procedure AssignPropertiesTo(Dest: TJclAbstractIterator); override; function CreateEmptyIterator: TJclAbstractIterator; override; public - constructor Create(const AOwnList: IJclAnsiStrList; ACursor: TJclAnsiStrLinkedListItem; AValid: Boolean; AStart: TItrStart); + constructor Create(AOwnList: TJclAnsiStrLinkedList; ACursor: TJclAnsiStrLinkedListItem; AValid: Boolean; AStart: TItrStart); { IJclAnsiStrIterator } function Add(const AString: AnsiString): Boolean; procedure Extract; @@ -278,13 +279,13 @@ private FCursor: TJclWideStrLinkedListItem; FStart: TItrStart; - FOwnList: IJclWideStrList; + FOwnList: TJclWideStrLinkedList; FEqualityComparer: IJclWideStrEqualityComparer; public procedure AssignPropertiesTo(Dest: TJclAbstractIterator); override; function CreateEmptyIterator: TJclAbstractIterator; override; public - constructor Create(const AOwnList: IJclWideStrList; ACursor: TJclWideStrLinkedListItem; AValid: Boolean; AStart: TItrStart); + constructor Create(AOwnList: TJclWideStrLinkedList; ACursor: TJclWideStrLinkedListItem; AValid: Boolean; AStart: TItrStart); { IJclWideStrIterator } function Add(const AString: WideString): Boolean; procedure Extract; @@ -367,13 +368,13 @@ private FCursor: TJclUnicodeStrLinkedListItem; FStart: TItrStart; - FOwnList: IJclUnicodeStrList; + FOwnList: TJclUnicodeStrLinkedList; FEqualityComparer: IJclUnicodeStrEqualityComparer; public procedure AssignPropertiesTo(Dest: TJclAbstractIterator); override; function CreateEmptyIterator: TJclAbstractIterator; override; public - constructor Create(const AOwnList: IJclUnicodeStrList; ACursor: TJclUnicodeStrLinkedListItem; AValid: Boolean; AStart: TItrStart); + constructor Create(AOwnList: TJclUnicodeStrLinkedList; ACursor: TJclUnicodeStrLinkedListItem; AValid: Boolean; AStart: TItrStart); { IJclUnicodeStrIterator } function Add(const AString: UnicodeString): Boolean; procedure Extract; @@ -482,13 +483,13 @@ private FCursor: TJclSingleLinkedListItem; FStart: TItrStart; - FOwnList: IJclSingleList; + FOwnList: TJclSingleLinkedList; FEqualityComparer: IJclSingleEqualityComparer; public procedure AssignPropertiesTo(Dest: TJclAbstractIterator); override; function CreateEmptyIterator: TJclAbstractIterator; override; public - constructor Create(const AOwnList: IJclSingleList; ACursor: TJclSingleLinkedListItem; AValid: Boolean; AStart: TItrStart); + constructor Create(AOwnList: TJclSingleLinkedList; ACursor: TJclSingleLinkedListItem; AValid: Boolean; AStart: TItrStart); { IJclSingleIterator } function Add(const AValue: Single): Boolean; procedure Extract; @@ -566,13 +567,13 @@ private FCursor: TJclDoubleLinkedListItem; FStart: TItrStart; - FOwnList: IJclDoubleList; + FOwnList: TJclDoubleLinkedList; FEqualityComparer: IJclDoubleEqualityComparer; public procedure AssignPropertiesTo(Dest: TJclAbstractIterator); override; function CreateEmptyIterator: TJclAbstractIterator; override; public - constructor Create(const AOwnList: IJclDoubleList; ACursor: TJclDoubleLinkedListItem; AValid: Boolean; AStart: TItrStart); + constructor Create(AOwnList: TJclDoubleLinkedList; ACursor: TJclDoubleLinkedListItem; AValid: Boolean; AStart: TItrStart); { IJclDoubleIterator } function Add(const AValue: Double): Boolean; procedure Extract; @@ -650,13 +651,13 @@ private FCursor: TJclExtendedLinkedListItem; FStart: TItrStart; - FOwnList: IJclExtendedList; + FOwnList: TJclExtendedLinkedList; FEqualityComparer: IJclExtendedEqualityComparer; public procedure AssignPropertiesTo(Dest: TJclAbstractIterator); override; function CreateEmptyIterator: TJclAbstractIterator; override; public - constructor Create(const AOwnList: IJclExtendedList; ACursor: TJclExtendedLinkedListItem; AValid: Boolean; AStart: TItrStart); + constructor Create(AOwnList: TJclExtendedLinkedList; ACursor: TJclExtendedLinkedListItem; AValid: Boolean; AStart: TItrStart); { IJclExtendedIterator } function Add(const AValue: Extended): Boolean; procedure Extract; @@ -764,13 +765,13 @@ private FCursor: TJclIntegerLinkedListItem; FStart: TItrStart; - FOwnList: IJclIntegerList; + FOwnList: TJclIntegerLinkedList; FEqualityComparer: IJclIntegerEqualityComparer; public procedure AssignPropertiesTo(Dest: TJclAbstractIterator); override; function CreateEmptyIterator: TJclAbstractIterator; override; public - constructor Create(const AOwnList: IJclIntegerList; ACursor: TJclIntegerLinkedListItem; AValid: Boolean; AStart: TItrStart); + constructor Create(AOwnList: TJclIntegerLinkedList; ACursor: TJclIntegerLinkedListItem; AValid: Boolean; AStart: TItrStart); { IJclIntegerIterator } function Add(AValue: Integer): Boolean; procedure Extract; @@ -848,13 +849,13 @@ private FCursor: TJclCardinalLinkedListItem; FStart: TItrStart; - FOwnList: IJclCardinalList; + FOwnList: TJclCardinalLinkedList; FEqualityComparer: IJclCardinalEqualityComparer; public procedure AssignPropertiesTo(Dest: TJclAbstractIterator); override; function CreateEmptyIterator: TJclAbstractIterator; override; public - constructor Create(const AOwnList: IJclCardinalList; ACursor: TJclCardinalLinkedListItem; AValid: Boolean; AStart: TItrStart); + constructor Create(AOwnList: TJclCardinalLinkedList; ACursor: TJclCardinalLinkedListItem; AValid: Boolean; AStart: TItrStart); { IJclCardinalIterator } function Add(AValue: Cardinal): Boolean; procedure Extract; @@ -932,13 +933,13 @@ private FCursor: TJclInt64LinkedListItem; FStart: TItrStart; - FOwnList: IJclInt64List; + FOwnList: TJclInt64LinkedList; FEqualityComparer: IJclInt64EqualityComparer; public procedure AssignPropertiesTo(Dest: TJclAbstractIterator); override; function CreateEmptyIterator: TJclAbstractIterator; override; public - constructor Create(const AOwnList: IJclInt64List; ACursor: TJclInt64LinkedListItem; AValid: Boolean; AStart: TItrStart); + constructor Create(AOwnList: TJclInt64LinkedList; ACursor: TJclInt64LinkedListItem; AValid: Boolean; AStart: TItrStart); { IJclInt64Iterator } function Add(const AValue: Int64): Boolean; procedure Extract; @@ -1016,13 +1017,13 @@ private FCursor: TJclPtrLinkedListItem; FStart: TItrStart; - FOwnList: IJclPtrList; + FOwnList: TJclPtrLinkedList; FEqualityComparer: IJclPtrEqualityComparer; public procedure AssignPropertiesTo(Dest: TJclAbstractIterator); override; function CreateEmptyIterator: TJclAbstractIterator; override; public - constructor Create(const AOwnList: IJclPtrList; ACursor: TJclPtrLinkedListItem; AValid: Boolean; AStart: TItrStart); + constructor Create(AOwnList: TJclPtrLinkedList; ACursor: TJclPtrLinkedListItem; AValid: Boolean; AStart: TItrStart); { IJclPtrIterator } function Add(APtr: Pointer): Boolean; procedure Extract; @@ -1100,13 +1101,13 @@ private FCursor: TJclLinkedListItem; FStart: TItrStart; - FOwnList: IJclList; + FOwnList: TJclLinkedList; FEqualityComparer: IJclEqualityComparer; public procedure AssignPropertiesTo(Dest: TJclAbstractIterator); override; function CreateEmptyIterator: TJclAbstractIterator; override; public - constructor Create(const AOwnList: IJclList; ACursor: TJclLinkedListItem; AValid: Boolean; AStart: TItrStart); + constructor Create(AOwnList: TJclLinkedList; ACursor: TJclLinkedListItem; AValid: Boolean; AStart: TItrStart); { IJclIterator } function Add(AObject: TObject): Boolean; procedure Extract; @@ -1199,7 +1200,7 @@ procedure AssignPropertiesTo(Dest: TJclAbstractIterator); override; function CreateEmptyIterator: TJclAbstractIterator; override; public - constructor Create(const AOwnList: IJclList<T>; ACursor: TJclLinkedList<T>.TLinkedListItem; AValid: Boolean; AStart: TItrStart); + constructor Create(AOwnList: IJclList<T>; ACursor: TJclLinkedList<T>.TLinkedListItem; AValid: Boolean; AStart: TItrStart); { IJclIterator<T> } function Add(const AItem: T): Boolean; procedure Extract; @@ -2215,7 +2216,7 @@ //=== { TJclIntfLinkedListIterator } ============================================================ -constructor TJclIntfLinkedListIterator.Create(const AOwnList: IJclIntfList; ACursor: TJclIntfLinkedListItem; AValid: Boolean; AStart: TItrStart); +constructor TJclIntfLinkedListIterator.Create(AOwnList: TJclIntfLinkedList; ACursor: TJclIntfLinkedListItem; AValid: Boolean; AStart: TItrStart); begin inherited Create(AValid); FCursor := ACursor; @@ -3470,7 +3471,7 @@ //=== { TJclAnsiStrLinkedListIterator } ============================================================ -constructor TJclAnsiStrLinkedListIterator.Create(const AOwnList: IJclAnsiStrList; ACursor: TJclAnsiStrLinkedListItem; AValid: Boolean; AStart: TItrStart); +constructor TJclAnsiStrLinkedListIterator.Create(AOwnList: TJclAnsiStrLinkedList; ACursor: TJclAnsiStrLinkedListItem; AValid: Boolean; AStart: TItrStart); begin inherited Create(AValid); FCursor := ACursor; @@ -4725,7 +4726,7 @@ //=== { TJclWideStrLinkedListIterator } ============================================================ -constructor TJclWideStrLinkedListIterator.Create(const AOwnList: IJclWideStrList; ACursor: TJclWideStrLinkedListItem; AValid: Boolean; AStart: TItrStart); +constructor TJclWideStrLinkedListIterator.Create(AOwnList: TJclWideStrLinkedList; ACursor: TJclWideStrLinkedListItem; AValid: Boolean; AStart: TItrStart); begin inherited Create(AValid); FCursor := ACursor; @@ -5984,7 +5985,7 @@ {$IFDEF SUPPORTS_UNICODE_STRING} //=== { TJclUnicodeStrLinkedListIterator } ============================================================ -constructor TJclUnicodeStrLinkedListIterator.Create(const AOwnList: IJclUnicodeStrList; ACursor: TJclUnicodeStrLinkedListItem; AValid: Boolean; AStart: TItrStart); +constructor TJclUnicodeStrLinkedListIterator.Create(AOwnList: TJclUnicodeStrLinkedList; ACursor: TJclUnicodeStrLinkedListItem; AValid: Boolean; AStart: TItrStart); begin inherited Create(AValid); FCursor := ACursor; @@ -7240,7 +7241,7 @@ //=== { TJclSingleLinkedListIterator } ============================================================ -constructor TJclSingleLinkedListIterator.Create(const AOwnList: IJclSingleList; ACursor: TJclSingleLinkedListItem; AValid: Boolean; AStart: TItrStart); +constructor TJclSingleLinkedListIterator.Create(AOwnList: TJclSingleLinkedList; ACursor: TJclSingleLinkedListItem; AValid: Boolean; AStart: TItrStart); begin inherited Create(AValid); FCursor := ACursor; @@ -8495,7 +8496,7 @@ //=== { TJclDoubleLinkedListIterator } ============================================================ -constructor TJclDoubleLinkedListIterator.Create(const AOwnList: IJclDoubleList; ACursor: TJclDoubleLinkedListItem; AValid: Boolean; AStart: TItrStart); +constructor TJclDoubleLinkedListIterator.Create(AOwnList: TJclDoubleLinkedList; ACursor: TJclDoubleLinkedListItem; AValid: Boolean; AStart: TItrStart); begin inherited Create(AValid); FCursor := ACursor; @@ -9750,7 +9751,7 @@ //=== { TJclExtendedLinkedListIterator } ============================================================ -constructor TJclExtendedLinkedListIterator.Create(const AOwnList: IJclExtendedList; ACursor: TJclExtendedLinkedListItem; AValid: Boolean; AStart: TItrStart); +constructor TJclExtendedLinkedListIterator.Create(AOwnList: TJclExtendedLinkedList; ACursor: TJclExtendedLinkedListItem; AValid: Boolean; AStart: TItrStart); begin inherited Create(AValid); FCursor := ACursor; @@ -11005,7 +11006,7 @@ //=== { TJclIntegerLinkedListIterator } ============================================================ -constructor TJclIntegerLinkedListIterator.Create(const AOwnList: IJclIntegerList; ACursor: TJclIntegerLinkedListItem; AValid: Boolean; AStart: TItrStart); +constructor TJclIntegerLinkedListIterator.Create(AOwnList: TJclIntegerLinkedList; ACursor: TJclIntegerLinkedListItem; AValid: Boolean; AStart: TItrStart); begin inherited Create(AValid); FCursor := ACursor; @@ -12260,7 +12261,7 @@ //=== { TJclCardinalLinkedListIterator } ============================================================ -constructor TJclCardinalLinkedListIterator.Create(const AOwnList: IJclCardinalList; ACursor: TJclCardinalLinkedListItem; AValid: Boolean; AStart: TItrStart); +constructor TJclCardinalLinkedListIterator.Create(AOwnList: TJclCardinalLinkedList; ACursor: TJclCardinalLinkedListItem; AValid: Boolean; AStart: TItrStart); begin inherited Create(AValid); FCursor := ACursor; @@ -13515,7 +13516,7 @@ //=== { TJclInt64LinkedListIterator } ============================================================ -constructor TJclInt64LinkedListIterator.Create(const AOwnList: IJclInt64List; ACursor: TJclInt64LinkedListItem; AValid: Boolean; AStart: TItrStart); +constructor TJclInt64LinkedListIterator.Create(AOwnList: TJclInt64LinkedList; ACursor: TJclInt64LinkedListItem; AValid: Boolean; AStart: TItrStart); begin inherited Create(AValid); FCursor := ACursor; @@ -14770,7 +14771,7 @@ //=== { TJclPtrLinkedListIterator } ============================================================ -constructor TJclPtrLinkedListIterator.Create(const AOwnList: IJclPtrList; ACursor: TJclPtrLinkedListItem; AValid: Boolean; AStart: TItrStart); +constructor TJclPtrLinkedListIterator.Create(AOwnList: TJclPtrLinkedList; ACursor: TJclPtrLinkedListItem; AValid: Boolean; AStart: TItrStart); begin inherited Create(AValid); FCursor := ACursor; @@ -16025,7 +16026,7 @@ //=== { TJclLinkedListIterator } ============================================================ -constructor TJclLinkedListIterator.Create(const AOwnList: IJclList; ACursor: TJclLinkedListItem; AValid: Boolean; AStart: TItrStart); +constructor TJclLinkedListIterator.Create(AOwnList: TJclLinkedList; ACursor: TJclLinkedListItem; AValid: Boolean; AStart: TItrStart); begin inherited Create(AValid); FCursor := ACursor; @@ -17278,7 +17279,7 @@ //=== { TJclLinkedListIterator<T> } ============================================================ -constructor TJclLinkedListIterator<T>.Create(const AOwnList: IJclList<T>; ACursor: TJclLinkedList<T>.TLinkedListItem; AValid: Boolean; AStart: TItrStart); +constructor TJclLinkedListIterator<T>.Create(AOwnList: IJclList<T>; ACursor: TJclLinkedList<T>.TLinkedListItem; AValid: Boolean; AStart: TItrStart); begin inherited Create(AValid); FCursor := ACursor; Modified: trunk/jcl/source/common/JclPreProcessorArrayListsTemplates.pas =================================================================== --- trunk/jcl/source/common/JclPreProcessorArrayListsTemplates.pas 2011-07-29 20:22:25 UTC (rev 3559) +++ trunk/jcl/source/common/JclPreProcessorArrayListsTemplates.pas 2011-07-30 06:50:39 UTC (rev 3560) @@ -71,7 +71,7 @@ property SetterName: string index taSetterName read GetTypeAttribute write SetTypeAttribute stored False; end; - (* JCLARRAYLISTITRINT(SELFCLASSNAME, ITRINTERFACENAME, LISTINTERFACENAME, CONSTKEYWORD, PARAMETERNAME, + (* JCLARRAYLISTITRINT(SELFCLASSNAME, ITRINTERFACENAME, LISTCLASSNAME, CONSTKEYWORD, PARAMETERNAME, TYPENAME, GETTERNAME, SETTERNAME) *) TJclArrayListItrIntParams = class(TJclContainerInterfaceParams) protected @@ -81,7 +81,7 @@ published property SelfClassName: string index taArrayIteratorClassName read GetTypeAttribute write SetTypeAttribute stored IsTypeAttributeStored; property ItrInterfaceName: string index taIteratorInterfaceName read GetTypeAttribute write SetTypeAttribute stored False; - property ListInterfaceName: string index taListInterfaceName read GetTypeAttribute write SetTypeAttribute stored False; + property ListClassName: string index taArrayListClassName read GetTypeAttribute write SetTypeAttribute stored False; property ConstKeyword: string index taConstKeyword read GetTypeAttribute write SetTypeAttribute stored False; property ParameterName: string index taParameterName read GetTypeAttribute write SetTypeAttribute stored False; property TypeName: string index taTypeName read GetTypeAttribute write SetTypeAttribute stored False; @@ -116,7 +116,7 @@ property MacroFooter; end; - (* JCLARRAYLISTITRIMP(SELFCLASSNAME, ITRINTERFACENAME, LISTINTERFACENAME, + (* JCLARRAYLISTITRIMP(SELFCLASSNAME, ITRINTERFACENAME, LISTCLASSNAME, CONSTKEYWORD, PARAMETERNAME, TYPENAME, GETTERNAME, SETTERNAME) *) TJclArrayListItrImpParams = class(TJclContainerImplementationParams) protected @@ -124,7 +124,7 @@ published property SelfClassName: string index taArrayIteratorClassName read GetTypeAttribute write SetTypeAttribute stored False; property ItrInterfaceName: string index taIteratorInterfaceName read GetTypeAttribute write SetTypeAttribute stored False; - property ListInterfaceName: string index taListInterfaceName read GetTypeAttribute write SetTypeAttribute stored False; + property ListClassName: string index taArrayListClassName read GetTypeAttribute write SetTypeAttribute stored False; property ConstKeyword: string index taConstKeyword read GetTypeAttribute write SetTypeAttribute stored False; property ParameterName: string index taParameterName read GetTypeAttribute write SetTypeAttribute stored False; property TypeName: string index taTypeName read GetTypeAttribute write SetTypeAttribute stored False; Modified: trunk/jcl/source/common/JclPreProcessorLinkedListsTemplates.pas =================================================================== --- trunk/jcl/source/common/JclPreProcessorLinkedListsTemplates.pas 2011-07-29 20:22:25 UTC (rev 3559) +++ trunk/jcl/source/common/JclPreProcessorLinkedListsTemplates.pas 2011-07-30 06:50:39 UTC (rev 3560) @@ -79,7 +79,7 @@ property SetterName: string index taSetterName read GetTypeAttribute write SetTypeAttribute stored False; end; - (* JCLLINKEDLISTITRINT(SELFCLASSNAME, ITRINTERFACENAME, LISTINTERFACENAME, EQUALITYCOMPARERINTERFACENAME, + (* JCLLINKEDLISTITRINT(SELFCLASSNAME, ITRINTERFACENAME, LISTCLASSNAME, EQUALITYCOMPARERINTERFACENAME, ITEMCLASSNAME, CONSTKEYWORD, PARAMETERNAME, TYPENAME, DEFAULTVALUE, GETTERNAME, SETTERNAME) *) TJclLinkedListItrIntParams = class(TJclContainerInterfaceParams) @@ -90,7 +90,7 @@ published property SelfClassName: string index taLinkedListIteratorClassName read GetTypeAttribute write SetTypeAttribute stored IsTypeAttributeStored; property ItrInterfaceName: string index taIteratorInterfaceName read GetTypeAttribute write SetTypeAttribute stored False; - property ListInterfaceName: string index taListInterfaceName read GetTypeAttribute write SetTypeAttribute stored False; + property ListClassName: string index taLinkedListClassName read GetTypeAttribute write SetTypeAttribute stored False; property EqualityComparerInterfaceName: string index taEqualityComparerInterfaceName read GetTypeAttribute write SetTypeAttribute stored False; property ItemClassName: string index taLinkedListItemClassName read GetTypeAttribute write SetTypeAttribute stored False; property ConstKeyword: string index taConstKeyword read GetTypeAttribute write SetTypeAttribute stored False; @@ -130,7 +130,7 @@ property MacroFooter; end; - (* JCLLINKEDLISTITRIMP(SELFCLASSNAME, ITRINTERFACENAME, LISTINTERFACENAME, EQUALITYCOMPARERINTERFACENAME, + (* JCLLINKEDLISTITRIMP(SELFCLASSNAME, ITRINTERFACENAME, LISTCLASSNAME, EQUALITYCOMPARERINTERFACENAME, ITEMCLASSNAME, CONSTKEYWORD, PARAMETERNAME, TYPENAME, DEFAULTVALUE, GETTERNAME, SETTERNAME, RELEASERCALL) *) TJclLinkedListItrImpParams = class(TJclContainerImplementationParams) @@ -144,7 +144,7 @@ published property SelfClassName: string index taLinkedListIteratorClassName read GetTypeAttribute write SetTypeAttribute stored False; property ItrInterfaceName: string index taIteratorInterfaceName read GetTypeAttribute write SetTypeAttribute stored False; - property ListInterfaceName: string index taListInterfaceName read GetTypeAttribute write SetTypeAttribute stored False; + property ListClassName: string index taLinkedListClassName read GetTypeAttribute write SetTypeAttribute stored False; property EqualityComparerInterfaceName: string index taEqualityComparerInterfaceName read GetTypeAttribute write SetTypeAttribute stored False; property ItemClassName: string index taLinkedListItemClassName read GetTypeAttribute write SetTypeAttribute stored False; property ConstKeyword: string index taConstKeyword read GetTypeAttribute write SetTypeAttribute stored False; Modified: trunk/jcl/source/common/JclPreProcessorVectorsTemplates.pas =================================================================== --- trunk/jcl/source/common/JclPreProcessorVectorsTemplates.pas 2011-07-29 20:22:25 UTC (rev 3559) +++ trunk/jcl/source/common/JclPreProcessorVectorsTemplates.pas 2011-07-30 06:50:39 UTC (rev 3560) @@ -71,7 +71,7 @@ property SetterName: string index taSetterName read GetTypeAttribute write SetTypeAttribute stored False; end; - (* JCLVECTORITRINT(SELFCLASSNAME, ITRINTERFACENAME, LISTINTERFACENAME, + (* JCLVECTORITRINT(SELFCLASSNAME, ITRINTERFACENAME, LISTCLASSNAME, CONSTKEYWORD, PARAMETERNAME, TYPENAME, GETTERNAME, SETTERNAME) *) TJclVectorItrIntParams = class(TJclContainerInterfaceParams) protected @@ -81,7 +81,7 @@ published property SelfClassName: string index taVectorIteratorClassName read GetTypeAttribute write SetTypeAttribute stored IsTypeAttributeStored; property ItrInterfaceName: string index taIteratorInterfaceName read GetTypeAttribute write SetTypeAttribute stored False; - property ListInterfaceName: string index taListInterfaceName read GetTypeAttribute write SetTypeAttribute stored False; + property ListClassName: string index taVectorClassName read GetTypeAttribute write SetTypeAttribute stored False; property ConstKeyword: string index taConstKeyword read GetTypeAttribute write SetTypeAttribute stored False; property ParameterName: string index taParameterName read GetTypeAttribute write SetTypeAttribute stored False; property TypeName: string index taTypeName read GetTypeAttribute write SetTypeAttribute stored False; @@ -116,7 +116,7 @@ property MacroFooter; end; - (* JCLVECTORITRIMP(SELFCLASSNAME, ITRINTERFACENAME, LISTINTERFACENAME, + (* JCLVECTORITRIMP(SELFCLASSNAME, ITRINTERFACENAME, LISTCLASSNAME, CONSTKEYWORD, PARAMETERNAME, TYPENAME, GETTERNAME, SETTERNAME) *) TJclVectorItrImpParams = class(TJclContainerImplementationParams) protected @@ -124,7 +124,7 @@ published property SelfClassName: string index taVectorIteratorClassName read GetTypeAttribute write SetTypeAttribute stored False; property ItrInterfaceName: string index taIteratorInterfaceName read GetTypeAttribute write SetTypeAttribute stored False; - property ListInterfaceName: string index taListInterfaceName read GetTypeAttribute write SetTypeAttribute stored False; + property ListClassName: string index taVectorClassName read GetTypeAttribute write SetTypeAttribute stored False; property ConstKeyword: string index taConstKeyword read GetTypeAttribute write SetTypeAttribute stored False; property ParameterName: string index taParameterName read GetTypeAttribute write SetTypeAttribute stored False; property TypeName: string index taTypeName read GetTypeAttribute write SetTypeAttribute stored False; Modified: trunk/jcl/source/common/JclVectors.pas =================================================================== --- trunk/jcl/source/common/JclVectors.pas 2011-07-29 20:22:25 UTC (rev 3559) +++ trunk/jcl/source/common/JclVectors.pas 2011-07-30 06:50:39 UTC (rev 3560) @@ -52,6 +52,7 @@ Classes, JclBase, JclAbstractContainers, JclContainerIntf, JclSynch; + type TItrStart = (isFirst, isLast); TJclIntfVector = class(TJclIntfAbstractContainer, {$IFDEF THREADSAFE} IJclLockable, {$ENDIF THREADSAFE} @@ -109,12 +110,12 @@ private FCursor: Integer; FStart: TItrStart; - FOwnList: IJclIntfList; + FOwnList: TJclIntfVector; protected function CreateEmptyIterator: TJclAbstractIterator; override; procedure AssignPropertiesTo(Dest: TJclAbstractIterator); override; public - constructor Create(const AOwnList: IJclIntfList; ACursor: Integer; AValid: Boolean; AStart: TItrStart); + constructor Create(AOwnList: TJclIntfVector; ACursor: Integer; AValid: Boolean; AStart: TItrStart); { IJclIntfIterator } function Add(const AInterface: IInterface): Boolean; procedure Extract; @@ -191,12 +192,12 @@ private FCursor: Integer; FStart: TItrStart; - FOwnList: IJclAnsiStrList; + FOwnList: TJclAnsiStrVector; protected function CreateEmptyIterator: TJclAbstractIterator; override; procedure AssignPropertiesTo(Dest: TJclAbstractIterator); override; public - constructor Create(const AOwnList: IJclAnsiStrList; ACursor: Integer; AValid: Boolean; AStart: TItrStart); + constructor Create(AOwnList: TJclAnsiStrVector; ACursor: Integer; AValid: Boolean; AStart: TItrStart); { IJclAnsiStrIterator } function Add(const AString: AnsiString): Boolean; procedure Extract; @@ -273,12 +274,12 @@ private FCursor: Integer; FStart: TItrStart; - FOwnList: IJclWideStrList; + FOwnList: TJclWideStrVector; protected function CreateEmptyIterator: TJclAbstractIterator; override; procedure AssignPropertiesTo(Dest: TJclAbstractIterator); override; public - constructor Create(const AOwnList: IJclWideStrList; ACursor: Integer; AValid: Boolean; AStart: TItrStart); + constructor Create(AOwnList: TJclWideStrVector; ACursor: Integer; AValid: Boolean; AStart: TItrStart); { IJclWideStrIterator } function Add(const AString: WideString): Boolean; procedure Extract; @@ -358,12 +359,12 @@ private FCursor: Integer; FStart: TItrStart; - FOwnList: IJclUnicodeStrList; + FOwnList: TJclUnicodeStrVector; protected function CreateEmptyIterator: TJclAbstractIterator; override; procedure AssignPropertiesTo(Dest: TJclAbstractIterator); override; public - constructor Create(const AOwnList: IJclUnicodeStrList; ACursor: Integer; AValid: Boolean; AStart: TItrStart); + constructor Create(AOwnList: TJclUnicodeStrVector; ACursor: Integer; AValid: Boolean; AStart: TItrStart); { IJclUnicodeStrIterator } function Add(const AString: UnicodeString): Boolean; procedure Extract; @@ -461,12 +462,12 @@ private FCursor: Integer; FStart: TItrStart; - FOwnList: IJclSingleList; + FOwnList: TJclSingleVector; protected function CreateEmptyIterator: TJclAbstractIterator; override; procedure AssignPropertiesTo(Dest: TJclAbstractIterator); override; public - constructor Create(const AOwnList: IJclSingleList; ACursor: Integer; AValid: Boolean; AStart: TItrStart); + constructor Create(AOwnList: TJclSingleVector; ACursor: Integer; AValid: Boolean; AStart: TItrStart); { IJclSingleIterator } function Add(const AValue: Single): Boolean; procedure Extract; @@ -543,12 +544,12 @@ private FCursor: Integer; FStart: TItrStart; - FOwnList: IJclDoubleList; + FOwnList: TJclDoubleVector; protected function CreateEmptyIterator: TJclAbstractIterator; override; procedure AssignPropertiesTo(Dest: TJclAbstractIterator); override; public - constructor Create(const AOwnList: IJclDoubleList; ACursor: Integer; AValid: Boolean; AStart: TItrStart); + constructor Create(AOwnList: TJclDoubleVector; ACursor: Integer; AValid: Boolean; AStart: TItrStart); { IJclDoubleIterator } function Add(const AValue: Double): Boolean; procedure Extract; @@ -625,12 +626,12 @@ private FCursor: Integer; FStart: TItrStart; - FOwnList: IJclExtendedList; + FOwnList: TJclExtendedVector; protected function CreateEmptyIterator: TJclAbstractIterator; override; procedure AssignPropertiesTo(Dest: TJclAbstractIterator); override; public - constructor Create(const AOwnList: IJclExtendedList; ACursor: Integer; AValid: Boolean; AStart: TItrStart); + constructor Create(AOwnList: TJclExtendedVector; ACursor: Integer; AValid: Boolean; AStart: TItrStart); { IJclExtendedIterator } function Add(const AValue: Extended): Boolean; procedure Extract; @@ -727,12 +728,12 @@ private FCursor: Integer; FStart: TItrStart; - FOwnList: IJclIntegerList; + FOwnList: TJclIntegerVector; protected function CreateEmptyIterator: TJclAbstractIterator; override; procedure AssignPropertiesTo(Dest: TJclAbstractIterator); override; public - constructor Create(const AOwnList: IJclIntegerList; ACursor: Integer; AValid: Boolean; AStart: TItrStart); + constructor Create(AOwnList: TJclIntegerVector; ACursor: Integer; AValid: Boolean; AStart: TItrStart); { IJclIntegerIterator } function Add(AValue: Integer): Boolean; procedure Extract; @@ -809,12 +810,12 @@ private FCursor: Integer; FStart: TItrStart; - FOwnList: IJclCardinalList; + FOwnList: TJclCardinalVector; protected function CreateEmptyIterator: TJclAbstractIterator; override; procedure AssignPropertiesTo(Dest: TJclAbstractIterator); override; public - constructor Create(const AOwnList: IJclCardinalList; ACursor: Integer; AValid: Boolean; AStart: TItrStart); + constructor Create(AOwnList: TJclCardinalVector; ACursor: Integer; AValid: Boolean; AStart: TItrStart); { IJclCardinalIterator } function Add(AValue: Cardinal): Boolean; procedure Extract; @@ -891,12 +892,12 @@ private FCursor: Integer; FStart: TItrStart; - FOwnList: IJclInt64List; + FOwnList: TJclInt64Vector; protected function CreateEmptyIterator: TJclAbstractIterator; override; procedure AssignPropertiesTo(Dest: TJclAbstractIterator); override; public - constructor Create(const AOwnList: IJclInt64List; ACursor: Integer; AValid: Boolean; AStart: TItrStart); + constructor Create(AOwnList: TJclInt64Vector; ACursor: Integer; AValid: Boolean; AStart: TItrStart); { IJclInt64Iterator } function Add(const AValue: Int64): Boolean; procedure Extract; @@ -973,12 +974,12 @@ private FCursor: Integer; FStart: TItrStart; - FOwnList: IJclPtrList; + FOwnList: TJclPtrVector; protected function CreateEmptyIterator: TJclAbstractIterator; override; procedure AssignPropertiesTo(Dest: TJclAbstractIterator); override; public - constructor Create(const AOwnList: IJclPtrList; ACursor: Integer; AValid: Boolean; AStart: TItrStart); + constructor Create(AOwnList: TJclPtrVector; ACursor: Integer; AValid: Boolean; AStart: TItrStart); { IJclPtrIterator } function Add(APtr: Pointer): Boolean; procedure Extract; @@ -1055,12 +1056,12 @@ private FCursor: Integer; FStart: TItrStart; - FOwnList: IJclList; + FOwnList: TJclVector; protected function CreateEmptyIterator: TJclAbstractIterator; override; procedure AssignPropertiesTo(Dest: TJclAbstractIterator); override; public - constructor Create(const AOwnList: IJclList; ACursor: Integer; AValid: Boolean; AStart: TItrStart); + constructor Create(AOwnList: TJclVector; ACursor: Integer; AValid: Boolean; AStart: TItrStart); { IJclIterator } function Add(AObject: TObject): Boolean; procedure Extract; @@ -1152,7 +1153,7 @@ function CreateEmptyIterator: TJclAbstractIterator; override; procedure AssignPropertiesTo(Dest: TJclAbstractIterator); override; public - constructor Create(const AOwnList: IJclList<T>; ACursor: Integer; AValid: Boolean; AStart: TItrStart); + constructor Create(AOwnList: IJclList<T>; ACursor: Integer; AValid: Boolean; AStart: TItrStart); { IJclIterator<T> } function Add(const AItem: T): Boolean; procedure Extract; @@ -1896,7 +1897,7 @@ //=== { TJclIntfVectorIterator } =========================================================== -constructor TJclIntfVectorIterator.Create(const AOwnList: IJclIntfList; ACursor: Integer; AValid: Boolean; AStart: TItrStart); +constructor TJclIntfVectorIterator.Create(AOwnList: TJclIntfVector; ACursor: Integer; AValid: Boolean; AStart: TItrStart); begin inherited Create(AValid); FOwnList := AOwnList; @@ -2713,7 +2714,7 @@ //=== { TJclAnsiStrVectorIterator } =========================================================== -constructor TJclAnsiStrVectorIterator.Create(const AOwnList: IJclAnsiStrList; ACursor: Integer; AValid: Boolean; AStart: TItrStart); +constructor TJclAnsiStrVectorIterator.Create(AOwnList: TJclAnsiStrVector; ACursor: Integer; AValid: Boolean; AStart: TItrStart); begin inherited Create(AValid); FOwnList := AOwnList; @@ -3530,7 +3531,7 @@ //=== { TJclWideStrVectorIterator } =========================================================== -constructor TJclWideStrVectorIterator.Create(const AOwnList: IJclWideStrList; ACursor: Integer; AValid: Boolean; AStart: TItrStart); +constructor TJclWideStrVectorIterator.Create(AOwnList: TJclWideStrVector; ACursor: Integer; AValid: Boolean; AStart: TItrStart); begin inherited Create(AValid); FOwnList := AOwnList; @@ -4351,7 +4352,7 @@ {$IFDEF SUPPORTS_UNICODE_STRING} //=== { TJclUnicodeStrVectorIterator } =========================================================== -constructor TJclUnicodeStrVectorIterator.Create(const AOwnList: IJclUnicodeStrList; ACursor: Integer; AValid: Boolean; AStart: TItrStart); +constructor TJclUnicodeStrVectorIterator.Create(AOwnList: TJclUnicodeStrVector; ACursor: Integer; AValid: Boolean; AStart: TItrStart); begin inherited Create(AValid); FOwnList := AOwnList; @@ -5169,7 +5170,7 @@ //=== { TJclSingleVectorIterator } =========================================================== -constructor TJclSingleVectorIterator.Create(const AOwnList: IJclSingleList; ACursor: Integer; AValid: Boolean; AStart: TItrStart); +constructor TJclSingleVectorIterator.Create(AOwnList: TJclSingleVector; ACursor: Integer; AValid: Boolean; AStart: TItrStart); begin inherited Create(AValid); FOwnList := AOwnList; @@ -5986,7 +5987,7 @@ //=== { TJclDoubleVectorIterator } =========================================================== -constructor TJclDoubleVectorIterator.Create(const AOwnList: IJclDoubleList; ACursor: Integer; AValid: Boolean; AStart: TItrStart); +constructor TJclDoubleVectorIterator.Create(AOwnList: TJclDoubleVector; ACursor: Integer; AValid: Boolean; AStart: TItrStart); begin inherited Create(AValid); FOwnList := AOwnList; @@ -6803,7 +6804,7 @@ //=== { TJclExtendedVectorIterator } =========================================================== -constructor TJclExtendedVectorIterator.Create(const AOwnList: IJclExtendedList; ACursor: Integer; AValid: Boolean; AStart: TItrStart); +constructor TJclExtendedVectorIterator.Create(AOwnList: TJclExtendedVector; ACursor: Integer; AValid: Boolean; AStart: TItrStart); begin inherited Create(AValid); FOwnList := AOwnList; @@ -7620,7 +7621,7 @@ //=== { TJclIntegerVectorIterator } =========================================================== -constructor TJclIntegerVectorIterator.Create(const AOwnList: IJclIntegerList; ACursor: Integer; AValid: Boolean; AStart: TItrStart); +constructor TJclIntegerVectorIterator.Create(AOwnList: TJclIntegerVector; ACursor: Integer; AValid: Boolean; AStart: TItrStart); begin inherited Create(AValid); FOwnList := AOwnList; @@ -8437,7 +8438,7 @@ //=== { TJclCardinalVectorIterator } =========================================================== -constructor TJclCardinalVectorIterator.Create(const AOwnList: IJclCardinalList; ACursor: Integer; AValid: Boolean; AStart: TItrStart); +constructor TJclCardinalVectorIterator.Create(AOwnList: TJclCardinalVector; ACursor: Integer; AValid: Boolean; AStart: TItrStart); begin inherited Create(AValid); FOwnList := AOwnList; @@ -9254,7 +9255,7 @@ //=== { TJclInt64VectorIterator } =========================================================== -constructor TJclInt64VectorIterator.Create(const AOwnList: IJclInt64List; ACursor: Integer; AValid: Boolean; AStart: TItrStart); +constructor TJclInt64VectorIterator.Create(AOwnList: TJclInt64Vector; ACursor: Integer; AValid: Boolean; AStart: TItrStart); begin inherited Create(AValid); FOwnList := AOwnList; @@ -10071,7 +10072,7 @@ //=== { TJclPtrVectorIterator } =========================================================== -constructor TJclPtrVectorIterator.Create(const AOwnList: IJclPtrList; ACursor: Integer; AValid: Boolean; AStart: TItrStart); +constructor TJclPtrVectorIterator.Create(AOwnList: TJclPtrVector; ACursor: Integer; AValid: Boolean; AStart: TItrStart); begin inherited Create(AValid); FOwnList := AOwnList; @@ -10888,7 +10889,7 @@ //=== { TJclVectorIterator } =========================================================== -constructor TJclVectorIterator.Create(const AOwnList: IJclList; ACursor: Integer; AValid: Boolean; AStart: TItrStart); +constructor TJclVectorIterator.Create(AOwnList: TJclVector; ACursor: Integer; AValid: Boolean; AStart: TItrStart); begin inherited Create(AValid); FOwnList := AOwnList; @@ -11703,7 +11704,7 @@ //=== { TJclVectorIterator<T> } =========================================================== -constructor TJclVectorIterator<T>.Create(const AOwnList: IJclList<T>; ACursor: Integer; AValid: Boolean; AStart: TItrStart); +constructor TJclVectorIterator<T>.Create(AOwnList: IJclList<T>; ACursor: Integer; AValid: Boolean; AStart: TItrStart); begin inherited Create(AValid); FOwnList := AOwnList; Modified: trunk/jcl/source/prototypes/containers/JclArrayLists.imp =================================================================== --- trunk/jcl/source/prototypes/containers/JclArrayLists.imp 2011-07-29 20:22:25 UTC (rev 3559) +++ trunk/jcl/source/prototypes/containers/JclArrayLists.imp 2011-07-30 06:50:39 UTC (rev 3560) @@ -1,8 +1,8 @@ -(*$JPPDEFINEMACRO JCLARRAYLISTITRIMP(SELFCLASSNAME, ITRINTERFACENAME, LISTINTERFACENAME, +(*$JPPDEFINEMACRO JCLARRAYLISTITRIMP(SELFCLASSNAME, ITRINTERFACENAME, LISTCLASSNAME, CONSTKEYWORD, PARAMETERNAME, TYPENAME, GETTERNAME, SETTERNAME) //=== { SELFCLASSNAME } =============================================================== -constructor SELFCLASSNAME.Create(const AOwnList: LISTINTERFACENAME; ACursor: Integer; AValid: Boolean; AStart: TItrStart); +constructor SELFCLASSNAME.Create(AOwnList: LISTCLASSNAME; ACursor: Integer; AValid: Boolean; AStart: TItrStart); begin inherited Create(AValid); FOwnList := AOwnList; @@ -599,4 +599,4 @@ for I := First to Last do Result.Add(FElementData[I]); {$JPPEXPANDMACRO UNLOCK} -end;*) \ No newline at end of file +end;*) Modified: trunk/jcl/source/prototypes/containers/JclArrayLists.int =================================================================== --- trunk/jcl/source/prototypes/containers/JclArrayLists.int 2011-07-29 20:22:25 UTC (rev 3559) +++ trunk/jcl/source/prototypes/containers/JclArrayLists.int 2011-07-30 06:50:39 UTC (rev 3560) @@ -46,19 +46,19 @@ procedure SETTERNAME(Index: Integer; CONSTKEYWORDPARAMETERNAME: TYPENAME); function SubList(First, Count: Integer): LISTINTERFACENAME; end;*) -(*$JPPDEFINEMACRO JCLARRAYLISTITRINT(SELFCLASSNAME, ITRINTERFACENAME, LISTINTERFACENAME, +(*$JPPDEFINEMACRO JCLARRAYLISTITRINT(SELFCLASSNAME, ITRINTERFACENAME, LISTCLASSNAME, CONSTKEYWORD, PARAMETERNAME, TYPENAME, GETTERNAME, SETTERNAME) SELFCLASSNAME = class(TJclAbstractIterator, ITRINTERFACENAME, {$IFDEF THREADSAFE} IJclLockable, {$ENDIF THREADSAFE} IJclIntfCloneable, IJclCloneable) private FCursor: Integer; FStart: TItrStart; - FOwnList: LISTINTERFACENAME; + FOwnList: LISTCLASSNAME; protected procedure AssignPropertiesTo(Dest: TJclAbstractIterator); override; function CreateEmptyIterator: TJclAbstractIterator; override; public - constructor Create(const AOwnList: LISTINTERFACENAME; ACursor: Integer; AValid: Boolean; AStart: TItrStart); + constructor Create(AOwnList: LISTCLASSNAME; ACursor: Integer; AValid: Boolean; AStart: TItrStart); { ITRINTERFACENAME } function Add(CONSTKEYWORDPARAMETERNAME: TYPENAME): Boolean; procedure Extract; Modified: trunk/jcl/source/prototypes/containers/JclLinkedLists.imp =================================================================== --- trunk/jcl/source/prototypes/containers/JclLinkedLists.imp 2011-07-29 20:22:25 UTC (rev 3559) +++ trunk/jcl/source/prototypes/containers/JclLinkedLists.imp 2011-07-30 06:50:39 UTC (rev 3560) @@ -1,8 +1,8 @@ -(*$JPPDEFINEMACRO JCLLINKEDLISTITRIMP(SELFCLASSNAME, ITRINTERFACENAME, LISTINTERFACENAME, EQUALITYCOMPARERINTERFACENAME, +(*$JPPDEFINEMACRO JCLLINKEDLISTITRIMP(SELFCLASSNAME, ITRINTERFACENAME, LISTCLASSNAME, EQUALITYCOMPARERINTERFACENAME, ITEMCLASSNAME, CONSTKEYWORD, PARAMETERNAME, TYPENAME, DEFAULTVALUE, GETTERNAME, SETTERNAME, RELEASERCALL) //=== { SELFCLASSNAME } ============================================================ -constructor SELFCLASSNAME.Create(const AOwnList: LISTINTERFACENAME; ACursor: ITEMCLASSNAME; AValid: Boolean; AStart: TItrStart); +constructor SELFCLASSNAME.Create(AOwnList: LISTCLASSNAME; ACursor: ITEMCLASSNAME; AValid: Boolean; AStart: TItrStart); begin inherited Create(AValid); FCursor := ACursor; @@ -965,4 +965,4 @@ Current := Current.Next; end; {$JPPEXPANDMACRO UNLOCK} -end;*) \ No newline at end of file +end;*) Modified: trunk/jcl/source/prototypes/containers/JclLinkedLists.int =================================================================== --- trunk/jcl/source/prototypes/containers/JclLinkedLists.int 2011-07-29 20:22:25 UTC (rev 3559) +++ trunk/jcl/source/prototypes/containers/JclLinkedLists.int 2011-07-30 06:50:39 UTC (rev 3560) @@ -48,20 +48,20 @@ procedure SETTERNAME(Index: Integer; CONSTKEYWORDPARAMETERNAME: TYPENAME); function SubList(First, Count: Integer): LISTINTERFACENAME; end;*) -(*$JPPDEFINEMACRO JCLLINKEDLISTITRINT(SELFCLASSNAME, ITRINTERFACENAME, LISTINTERFACENAME, EQUALITYCOMPARERINTERFACENAME, +(*$JPPDEFINEMACRO JCLLINKEDLISTITRINT(SELFCLASSNAME, ITRINTERFACENAME, LISTCLASSNAME, EQUALITYCOMPARERINTERFACENAME, ITEMCLASSNAME, CONSTKEYWORD, PARAMETERNAME, TYPENAME, DEFAULTVALUE, GETTERNAME, SETTERNAME) SELFCLASSNAME = class(TJclAbstractIterator, ITRINTERFACENAME, {$IFDEF THREADSAFE} IJclLockable, {$ENDIF THREADSAFE} IJclIntfCloneable, IJclCloneable) private FCursor: ITEMCLASSNAME; FStart: TItrStart; - FOwnList: LISTINTERFACENAME; + FOwnList: LISTCLASSNAME; FEqualityComparer: EQUALITYCOMPARERINTERFACENAME; public procedure AssignPropertiesTo(Dest: TJclAbstractIterator); override; function CreateEmptyIterator: TJclAbstractIterator; override; public - constructor Create(const AOwnList: LISTINTERFACENAME; ACursor: ITEMCLASSNAME; AValid: Boolean; AStart: TItrStart); + constructor Create(AOwnList: LISTCLASSNAME; ACursor: ITEMCLASSNAME; AValid: Boolean; AStart: TItrStart); { ITRINTERFACENAME } function Add(CONSTKEYWORDPARAMETERNAME: TYPENAME): Boolean; procedure Extract; Modified: trunk/jcl/source/prototypes/containers/JclVectors.imp =================================================================== --- trunk/jcl/source/prototypes/containers/JclVectors.imp 2011-07-... [truncated message content] |
From: <ou...@us...> - 2011-07-29 20:22:31
|
Revision: 3559 http://jcl.svn.sourceforge.net/jcl/?rev=3559&view=rev Author: outchy Date: 2011-07-29 20:22:25 +0000 (Fri, 29 Jul 2011) Log Message: ----------- Mantis 5617: Add "Abort" ability for compression/decompression of archives. Modified Paths: -------------- trunk/jcl/source/common/JclCompression.pas Modified: trunk/jcl/source/common/JclCompression.pas =================================================================== --- trunk/jcl/source/common/JclCompression.pas 2011-07-29 20:00:32 UTC (rev 3558) +++ trunk/jcl/source/common/JclCompression.pas 2011-07-29 20:22:25 UTC (rev 3559) @@ -739,6 +739,7 @@ FVolumeMaxSize: Int64; FVolumeFileNameMask: TFileName; FProgressMax: Int64; + FCancelCurrentOperation: Boolean; function GetItemCount: Integer; function GetItem(Index: Integer): TJclCompressionItem; function GetVolumeCount: Integer; @@ -752,8 +753,8 @@ function InternalOpenStream(const FileName: TFileName): TStream; function TranslateItemPath(const ItemPath, OldBase, NewBase: WideString): WideString; - procedure DoProgress(const Value, MaxValue: Int64); - procedure DoRatio(const InSize, OutSize: Int64); + function DoProgress(const Value, MaxValue: Int64): Boolean; + function DoRatio(const InSize, OutSize: Int64): Boolean; function NeedStream(Index: Integer): TStream; function NeedStreamMaxSize(Index: Integer): Int64; procedure ReleaseVolumes; @@ -818,6 +819,7 @@ property Password: WideString read FPassword write FPassword; property SupportsNestedArchive: Boolean read GetSupportsNestedArchive; + property CancelCurrentOperation: Boolean read FCancelCurrentOperation write FCancelCurrentOperation; end; TJclCompressionArchiveClass = class of TJclCompressionArchive; @@ -4752,16 +4754,18 @@ // override to customize end; -procedure TJclCompressionArchive.DoProgress(const Value, MaxValue: Int64); +function TJclCompressionArchive.DoProgress(const Value, MaxValue: Int64): Boolean; begin if Assigned(FOnProgress) then FOnProgress(Self, Value, MaxValue); + Result := not FCancelCurrentOperation; end; -procedure TJclCompressionArchive.DoRatio(const InSize, OutSize: Int64); +function TJclCompressionArchive.DoRatio(const InSize, OutSize: Int64): Boolean; begin if Assigned(FOnRatio) then FOnRatio(Self, InSize, OutSize); + Result := not FCancelCurrentOperation; end; function TJclCompressionArchive.GetItem(Index: Integer): TJclCompressionItem; @@ -5783,7 +5787,7 @@ procedure SevenzipCheck(Value: HRESULT); begin - if Value <> S_OK then + if (Value <> S_OK) and (Value <> E_ABORT) then raise EJclCompressionError.CreateResFmt(@RsCompression7zReturnError, [Value, SysErrorMessage(Value)]); end; @@ -6485,9 +6489,9 @@ function TJclSevenzipUpdateCallback.SetCompleted( CompleteValue: PInt64): HRESULT; begin - if Assigned(CompleteValue) then - FArchive.DoProgress(CompleteValue^, FArchive.FProgressMax); Result := S_OK; + if Assigned(CompleteValue) and not FArchive.DoProgress(CompleteValue^, FArchive.FProgressMax) then + Result := E_ABORT; end; function TJclSevenzipUpdateCallback.SetOperationResult( @@ -6522,14 +6526,19 @@ AOutSize := OutSize^ else AOutSize := -1; - FArchive.DoRatio(AInSize, AOutSize); - Result := S_OK; + if FArchive.DoRatio(AInSize, AOutSize) then + Result := S_OK + else + Result := E_ABORT; end; function TJclSevenzipUpdateCallback.SetTotal(Total: Int64): HRESULT; begin FArchive.FProgressMax := Total; - Result := S_OK; + if FArchive.CancelCurrentOperation then + Result := E_ABORT + else + Result := S_OK; end; //=== { TJclSevenzipCompressArchive } ======================================== @@ -7304,16 +7313,19 @@ function TJclSevenzipOpenCallback.SetCompleted(Files, Bytes: PInt64): HRESULT; begin - if Assigned(Files) then - FArchive.DoProgress(Files^, FArchive.FProgressMax); Result := S_OK; + if Assigned(Files) and not FArchive.DoProgress(Files^, FArchive.FProgressMax) then + Result := E_ABORT; end; function TJclSevenzipOpenCallback.SetTotal(Files, Bytes: PInt64): HRESULT; begin if Assigned(Files) then FArchive.FProgressMax := Files^; - Result := S_OK; + if FArchive.CancelCurrentOperation then + Result := E_ABORT + else + Result := S_OK; end; //=== { TJclSevenzipExtractCallback } ======================================== @@ -7367,9 +7379,9 @@ function TJclSevenzipExtractCallback.SetCompleted( CompleteValue: PInt64): HRESULT; begin - if Assigned(CompleteValue) then - FArchive.DoProgress(CompleteValue^, FArchive.FProgressMax); Result := S_OK; + if Assigned(CompleteValue) and not FArchive.DoProgress(CompleteValue^, FArchive.FProgressMax) then + Result := E_ABORT; end; function TJclSevenzipExtractCallback.SetOperationResult( @@ -7420,14 +7432,19 @@ AOutSize := OutSize^ else AOutSize := -1; - FArchive.DoRatio(AInSize, AOutSize); - Result := S_OK; + if FArchive.DoRatio(AInSize, AOutSize) then + Result := S_OK + else + Result := E_ABORT; end; function TJclSevenzipExtractCallback.SetTotal(Total: Int64): HRESULT; begin FArchive.FProgressMax := Total; - Result := S_OK; + if FArchive.CancelCurrentOperation then + Result := E_ABORT + else + Result := S_OK; end; //=== { TJclSevenzipDecompressItem } ========================================= This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2011-07-29 20:00:38
|
Revision: 3558 http://jcl.svn.sourceforge.net/jcl/?rev=3558&view=rev Author: outchy Date: 2011-07-29 20:00:32 +0000 (Fri, 29 Jul 2011) Log Message: ----------- dictionary size is only supported by the bzip2 and LZMA/LZMA2 compression methods. Modified Paths: -------------- trunk/jcl/source/common/JclCompression.pas Modified: trunk/jcl/source/common/JclCompression.pas =================================================================== --- trunk/jcl/source/common/JclCompression.pas 2011-07-29 19:45:36 UTC (rev 3557) +++ trunk/jcl/source/common/JclCompression.pas 2011-07-29 20:00:32 UTC (rev 3558) @@ -6107,7 +6107,9 @@ and (EncryptionMethod.EncryptionMethod <> emNone) then AddWideStringProperty('EM', EncryptionMethodNames[EncryptionMethod.EncryptionMethod]); - if Supports(AJclArchive, IJclArchiveDictionarySize, DictionarySize) and Assigned(DictionarySize) then + if Supports(AJclArchive, IJclArchiveDictionarySize, DictionarySize) and Assigned(DictionarySize) and + Supports(AJclArchive, IJclArchiveCompressionMethod, CompressionMethod) and Assigned(CompressionMethod) and + (CompressionMethod.CompressionMethod in [cmBZip2,cmLZMA,cmLZMA2]) then AddWideStringProperty('D', IntToStr(DictionarySize.DictionarySize) + 'B'); if Supports(AJclArchive, IJclArchiveNumberOfPasses, NumberOfPasses) and Assigned(NumberOfPasses) then This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2011-07-29 19:45:43
|
Revision: 3557 http://jcl.svn.sourceforge.net/jcl/?rev=3557&view=rev Author: outchy Date: 2011-07-29 19:45:36 +0000 (Fri, 29 Jul 2011) Log Message: ----------- set the compression method before compressing/updating the archive. xz archive format only supports LZMA2 compression method. Modified Paths: -------------- trunk/jcl/source/common/JclCompression.pas Modified: trunk/jcl/source/common/JclCompression.pas =================================================================== --- trunk/jcl/source/common/JclCompression.pas 2011-07-29 19:34:00 UTC (rev 3556) +++ trunk/jcl/source/common/JclCompression.pas 2011-07-29 19:45:36 UTC (rev 3557) @@ -6019,6 +6019,7 @@ InArchive, OutArchive: Boolean; Unused: IInterface; MultiThreadStrategy: IJclArchiveNumberOfThreads; + CompressionMethod: IJclArchiveCompressionMethod; CompressionLevel: IJclArchiveCompressionLevel; EncryptionMethod: IJclArchiveEncryptionMethod; DictionarySize: IJclArchiveDictionarySize; @@ -6071,20 +6072,20 @@ AddProperty(Name, PropValue); end; const - EncryptionMethodName: array [TJclEncryptionMethod] of WideString = + EncryptionMethodNames: array [TJclEncryptionMethod] of WideString = ( '' {emNone}, kAES128MethodName {emAES128}, kAES192MethodName {emAES192}, kAES256MethodName {emAES256}, kZipCryptoMethodName {emZipCrypto} ); - // CompressionMethodNames: array [TJclCompressionMethod] of WideString = - // ( kCopyMethodName {cmCopy}, - // kDeflateMethodName {cmDeflate}, - // kDeflate64MethodName {cmDeflate64}, - // kBZip2MethodName {cmBZip2}, - // kLZMAMethodName {cmLZMA}, - // kLZMA2MethodName {cmLZMA2}, - // kPPMdMethodName {cmPPMd} ); + CompressionMethodNames: array [TJclCompressionMethod] of WideString = + ( kCopyMethodName {cmCopy}, + kDeflateMethodName {cmDeflate}, + kDeflate64MethodName {cmDeflate64}, + kBZip2MethodName {cmBZip2}, + kLZMAMethodName {cmLZMA}, + kLZMA2MethodName {cmLZMA2}, + kPPMdMethodName {cmPPMd} ); begin if Supports(ASevenzipArchive, Sevenzip.ISetProperties, PropertySetter) and Assigned(PropertySetter) then begin @@ -6096,12 +6097,15 @@ if OutArchive then begin + if Supports(AJclArchive, IJclArchiveCompressionMethod, CompressionMethod) and Assigned(CompressionMethod) then + AddWideStringProperty('M', CompressionMethodNames[CompressionMethod.CompressionMethod]); + if Supports(AJclArchive, IJclArchiveCompressionLevel, CompressionLevel) and Assigned(CompressionLevel) then AddCardinalProperty('X', CompressionLevel.CompressionLevel); if Supports(AJclArchive, IJclArchiveEncryptionMethod, EncryptionMethod) and Assigned(EncryptionMethod) and (EncryptionMethod.EncryptionMethod <> emNone) then - AddWideStringProperty('EM', EncryptionMethodName[EncryptionMethod.EncryptionMethod]); + AddWideStringProperty('EM', EncryptionMethodNames[EncryptionMethod.EncryptionMethod]); if Supports(AJclArchive, IJclArchiveDictionarySize, DictionarySize) and Assigned(DictionarySize) then AddWideStringProperty('D', IntToStr(DictionarySize.DictionarySize) + 'B'); @@ -7246,13 +7250,13 @@ function TJclXzCompressArchive.GetSupportedCompressionMethods: TJclCompressionMethods; begin - Result := [cmLZMA]; + Result := [cmLZMA2]; end; procedure TJclXzCompressArchive.InitializeArchiveProperties; begin inherited InitializeArchiveProperties; - FCompressionMethod := cmLZMA; + FCompressionMethod := cmLZMA2; end; procedure TJclXzCompressArchive.SetCompressionMethod( @@ -9512,13 +9516,13 @@ function TJclXzUpdateArchive.GetSupportedCompressionMethods: TJclCompressionMethods; begin - Result := [cmLZMA]; + Result := [cmLZMA2]; end; procedure TJclXzUpdateArchive.InitializeArchiveProperties; begin inherited InitializeArchiveProperties; - FCompressionMethod := cmLZMA + FCompressionMethod := cmLZMA2 end; procedure TJclXzUpdateArchive.SetCompressionMethod( This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2011-07-29 19:34:06
|
Revision: 3556 http://jcl.svn.sourceforge.net/jcl/?rev=3556&view=rev Author: outchy Date: 2011-07-29 19:34:00 +0000 (Fri, 29 Jul 2011) Log Message: ----------- do not check for compression/decompression in property getters. Modified Paths: -------------- trunk/jcl/source/common/JclCompression.pas Modified: trunk/jcl/source/common/JclCompression.pas =================================================================== --- trunk/jcl/source/common/JclCompression.pas 2011-07-29 18:15:37 UTC (rev 3555) +++ trunk/jcl/source/common/JclCompression.pas 2011-07-29 19:34:00 UTC (rev 3556) @@ -7241,7 +7241,6 @@ function TJclXzCompressArchive.GetCompressionMethod: TJclCompressionMethod; begin - CheckNotCompressing; Result := FCompressionMethod; end; @@ -9508,8 +9507,6 @@ function TJclXzUpdateArchive.GetCompressionMethod: TJclCompressionMethod; begin - CheckNotDecompressing; - CheckNotCompressing; Result := FCompressionMethod; end; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2011-07-29 18:15:44
|
Revision: 3555 http://jcl.svn.sourceforge.net/jcl/?rev=3555&view=rev Author: outchy Date: 2011-07-29 18:15:37 +0000 (Fri, 29 Jul 2011) Log Message: ----------- TThread.Synchronize cannot be used for processing progress events when the archive extraction/update is started from the main thread. Modified Paths: -------------- trunk/jcl/examples/windows/compression/archive/UMain.pas Modified: trunk/jcl/examples/windows/compression/archive/UMain.pas =================================================================== --- trunk/jcl/examples/windows/compression/archive/UMain.pas 2011-07-29 16:28:09 UTC (rev 3554) +++ trunk/jcl/examples/windows/compression/archive/UMain.pas 2011-07-29 18:15:37 UTC (rev 3555) @@ -10,6 +10,9 @@ Dialogs, StdCtrls, ExtCtrls, ActnList, ComCtrls, ImgList, Contnrs, JclCompression; +const + WM_SYNC_ARCHIVE_PROGRESS = WM_USER + 153; + type TFormMain = class(TForm) ActionList1: TActionList; @@ -86,9 +89,7 @@ private FArchiveStack: TObjectList; FArchive: TJclCompressionArchive; - FProgressValue: Byte; - FProgressMax: Byte; - procedure SyncArchiveProgress; + procedure WmSyncArchiveProgress(var Message: TMessage); message WM_SYNC_ARCHIVE_PROGRESS; public procedure CloseArchive; procedure CloseAllArchive; @@ -500,9 +501,7 @@ MyValue := MyValue shr 8; end; - FProgressMax := MyMaxValue; - FProgressValue := MyValue; - TThread.Synchronize(nil, SyncArchiveProgress); + PostMessage(Handle, WM_SYNC_ARCHIVE_PROGRESS, MyValue, MyMaxValue); end; procedure TFormMain.CloseAllArchive; @@ -663,10 +662,10 @@ Item.SubItems.Add(''); end; -procedure TFormMain.SyncArchiveProgress; +procedure TFormMain.WMSyncArchiveProgress(var Message: TMessage); begin - ProgressBar1.Max := FProgressMax; - ProgressBar1.Position := FProgressValue; + ProgressBar1.Max := Message.LParam; + ProgressBar1.Position := Message.WParam; end; initialization This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2011-07-29 16:28:15
|
Revision: 3554 http://jcl.svn.sourceforge.net/jcl/?rev=3554&view=rev Author: outchy Date: 2011-07-29 16:28:09 +0000 (Fri, 29 Jul 2011) Log Message: ----------- Mantis 5625: Couldn't create ZIP archive with 7zip.dll version >= 9.20. First patch: add support for ICompressProgressInfo to TJclSevenzipExtractCallback and TJclSevenzipUpdateCallback. Modified Paths: -------------- trunk/jcl/source/common/JclCompression.pas Modified: trunk/jcl/source/common/JclCompression.pas =================================================================== --- trunk/jcl/source/common/JclCompression.pas 2011-07-29 09:31:35 UTC (rev 3553) +++ trunk/jcl/source/common/JclCompression.pas 2011-07-29 16:28:09 UTC (rev 3554) @@ -557,6 +557,7 @@ TJclCompressionVolumeMaxSizeEvent = procedure(Sender: TObject; Index: Integer; var AVolumeMaxSize: Int64) of object; TJclCompressionProgressEvent = procedure(Sender: TObject; const Value, MaxValue: Int64) of object; + TJclCompressionRatioEvent = procedure(Sender: TObject; const InSize, OutSize: Int64) of object; TJclCompressionItemProperty = (ipPackedName, ipPackedSize, ipPackedExtension, ipFileSize, ipFileName, ipAttributes, ipCreationTime, ipLastAccessTime, @@ -729,6 +730,7 @@ TJclCompressionArchive = class(TObject, IInterface) private FOnProgress: TJclCompressionProgressEvent; + FOnRatio: TJclCompressionRatioEvent; FOnVolume: TJclCompressionVolumeEvent; FOnVolumeMaxSize: TJclCompressionVolumeMaxSizeEvent; FPassword: WideString; @@ -751,6 +753,7 @@ function TranslateItemPath(const ItemPath, OldBase, NewBase: WideString): WideString; procedure DoProgress(const Value, MaxValue: Int64); + procedure DoRatio(const InSize, OutSize: Int64); function NeedStream(Index: Integer): TStream; function NeedStreamMaxSize(Index: Integer): Int64; procedure ReleaseVolumes; @@ -806,6 +809,7 @@ property VolumeIndexOffset: Integer read FVolumeIndexOffset write FVolumeIndexOffset; property OnProgress: TJclCompressionProgressEvent read FOnProgress write FOnProgress; + property OnRatio: TJclCompressionRatioEvent read FOnRatio write FOnRatio; // volume events property OnVolume: TJclCompressionVolumeEvent read FOnVolume write FOnVolume; @@ -2023,7 +2027,7 @@ end; TJclSevenzipExtractCallback = class(TInterfacedObject, IUnknown, IProgress, - IArchiveExtractCallback, ICryptoGetTextPassword) + IArchiveExtractCallback, ICryptoGetTextPassword, ICompressProgressInfo) private FArchive: TJclCompressionArchive; FLastStream: Cardinal; @@ -2039,10 +2043,13 @@ function SetTotal(Total: Int64): HRESULT; stdcall; // ICryptoGetTextPassword function CryptoGetTextPassword(password: PBStr): HRESULT; stdcall; + // ICompressProgressInfo + function SetRatioInfo(InSize: PInt64; OutSize: PInt64): HRESULT; stdcall; end; TJclSevenzipUpdateCallback = class(TInterfacedObject, IUnknown, IProgress, - IArchiveUpdateCallback, IArchiveUpdateCallback2, ICryptoGetTextPassword2) + IArchiveUpdateCallback, IArchiveUpdateCallback2, ICryptoGetTextPassword2, + ICompressProgressInfo) private FArchive: TJclCompressionArchive; FLastStream: Cardinal; @@ -2064,6 +2071,8 @@ // ICryptoGetTextPassword2 function CryptoGetTextPassword2(PasswordIsDefined: PInteger; Password: PBStr): HRESULT; stdcall; + // ICompressProgressInfo + function SetRatioInfo(InSize: PInt64; OutSize: PInt64): HRESULT; stdcall; end; type @@ -2090,10 +2099,12 @@ procedure SetSevenzipArchiveCompressionProperties(AJclArchive: IInterface; ASevenzipArchive: IInterface); -function Create7zFile(SourceFiles: TStrings; const DestinationFile: TFileName; VolumeSize: Int64 = 0; Password: String - = ''; OnArchiveProgress: TJclCompressionProgressEvent = nil): Boolean; overload; +function Create7zFile(SourceFiles: TStrings; const DestinationFile: TFileName; VolumeSize: Int64 = 0; + Password: String = ''; OnArchiveProgress: TJclCompressionProgressEvent = nil; + OnArchiveRatio: TJclCompressionRatioEvent = nil): Boolean; overload; function Create7zFile(const SourceFile, DestinationFile: TFileName; VolumeSize: Int64 = 0; Password: String = ''; - OnArchiveProgress: TJclCompressionProgressEvent = nil): Boolean; overload; + OnArchiveProgress: TJclCompressionProgressEvent = nil; + OnArchiveRatio: TJclCompressionRatioEvent = nil): Boolean; overload; {$ENDIF MSWINDOWS} @@ -4747,6 +4758,12 @@ FOnProgress(Self, Value, MaxValue); end; +procedure TJclCompressionArchive.DoRatio(const InSize, OutSize: Int64); +begin + if Assigned(FOnRatio) then + FOnRatio(Self, InSize, OutSize); +end; + function TJclCompressionArchive.GetItem(Index: Integer): TJclCompressionItem; begin Result := TJclCompressionItem(FItems.Items[Index]); @@ -6135,8 +6152,8 @@ end; end; -function Create7zFile(SourceFiles: TStrings; const DestinationFile: TFileName; VolumeSize: Int64 = 0; Password: String - = ''; OnArchiveProgress: TJclCompressionProgressEvent = nil): Boolean; +function Create7zFile(SourceFiles: TStrings; const DestinationFile: TFileName; VolumeSize: Int64; Password: String; + OnArchiveProgress: TJclCompressionProgressEvent; OnArchiveRatio: TJclCompressionRatioEvent): Boolean; var ArchiveFileName: string; SourceFile : String; @@ -6161,6 +6178,7 @@ try Archive.Password := Password; Archive.OnProgress := OnArchiveProgress; + Archive.OnRatio := OnArchiveRatio; InnerList := tStringList.Create; try @@ -6185,14 +6203,15 @@ end; end; -function Create7zFile(const SourceFile, DestinationFile: TFileName; VolumeSize: Int64 = 0; Password: String = ''; - OnArchiveProgress: TJclCompressionProgressEvent = nil): Boolean; -var SourceFiles : TStringList; +function Create7zFile(const SourceFile, DestinationFile: TFileName; VolumeSize: Int64; Password: String; + OnArchiveProgress: TJclCompressionProgressEvent; OnArchiveRatio: TJclCompressionRatioEvent): Boolean; +var + SourceFiles : TStringList; begin SourceFiles := TStringList.Create; try SourceFiles.Add(SourceFile); - Result := Create7zFile(SourceFiles, DestinationFile, VolumeSize, Password, OnArchiveProgress); + Result := Create7zFile(SourceFiles, DestinationFile, VolumeSize, Password, OnArchiveProgress, OnArchiveRatio); finally SourceFiles.Free; end; @@ -6484,6 +6503,23 @@ Result := S_OK; end; +function TJclSevenzipUpdateCallback.SetRatioInfo(InSize, + OutSize: PInt64): HRESULT; +var + AInSize, AOutSize: Int64; +begin + if Assigned(InSize) then + AInSize := InSize^ + else + AInSize := -1; + if Assigned(OutSize) then + AOutSize := OutSize^ + else + AOutSize := -1; + FArchive.DoRatio(AInSize, AOutSize); + Result := S_OK; +end; + function TJclSevenzipUpdateCallback.SetTotal(Total: Int64): HRESULT; begin FArchive.FProgressMax := Total; @@ -7366,6 +7402,23 @@ Result := S_OK; end; +function TJclSevenzipExtractCallback.SetRatioInfo(InSize, + OutSize: PInt64): HRESULT; +var + AInSize, AOutSize: Int64; +begin + if Assigned(InSize) then + AInSize := InSize^ + else + AInSize := -1; + if Assigned(OutSize) then + AOutSize := OutSize^ + else + AOutSize := -1; + FArchive.DoRatio(AInSize, AOutSize); + Result := S_OK; +end; + function TJclSevenzipExtractCallback.SetTotal(Total: Int64): HRESULT; begin FArchive.FProgressMax := Total; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2011-07-29 09:31:42
|
Revision: 3553 http://jcl.svn.sourceforge.net/jcl/?rev=3553&view=rev Author: outchy Date: 2011-07-29 09:31:35 +0000 (Fri, 29 Jul 2011) Log Message: ----------- Mantis 5616: TPropVariant memory leak. Modified Paths: -------------- trunk/jcl/source/prototypes/JclWin32.pas trunk/jcl/source/prototypes/win32api/PropIdl.int trunk/jcl/source/windows/JclNTFS.pas trunk/jcl/source/windows/JclWin32.pas Added Paths: ----------- trunk/jcl/source/prototypes/win32api/PropIdl.imp Modified: trunk/jcl/source/prototypes/JclWin32.pas =================================================================== --- trunk/jcl/source/prototypes/JclWin32.pas 2011-07-29 09:02:58 UTC (rev 3552) +++ trunk/jcl/source/prototypes/JclWin32.pas 2011-07-29 09:31:35 UTC (rev 3553) @@ -130,11 +130,11 @@ {$I win32api\WinUser.int} {$I win32api\PowrProf.int} {$I win32api\DelayImp.int} -{$I win32api\PropIdl.int} {$I win32api\MsiDefs.int} {$I win32api\ShlGuid.int} {$I win32api\imgguids.int} {$I win32api\ObjBase.int} +{$I win32api\PropIdl.int} {$I win32api\NtSecApi.int} {$I win32api\TlHelp32.int} {$I win32api\Winternl.int} @@ -287,6 +287,7 @@ {$I win32api\WinNT.imp} {$I win32api\PowrProf.imp} {$I win32api\ObjBase.imp} +{$I win32api\PropIdl.imp} {$I win32api\NtSecApi.imp} {$I win32api\TlHelp32.imp} {$I win32api\Winternl.imp} Added: trunk/jcl/source/prototypes/win32api/PropIdl.imp =================================================================== --- trunk/jcl/source/prototypes/win32api/PropIdl.imp (rev 0) +++ trunk/jcl/source/prototypes/win32api/PropIdl.imp 2011-07-29 09:31:35 UTC (rev 3553) @@ -0,0 +1,12 @@ +type + TPropVariantClear = function (var Prop: TPropVariant): HResult; stdcall; + +var + _PropVariantClear: TPropVariantClear = nil; + +function PropVariantClear(var Prop: TPropVariant): HResult; +begin + GetProcedureAddress(Pointer(@_PropVariantClear), Ole32Lib, 'PropVariantClear'); + Result := _PropVariantClear(Prop); +end; + Property changes on: trunk/jcl/source/prototypes/win32api/PropIdl.imp ___________________________________________________________________ Added: svn:eol-style + native Modified: trunk/jcl/source/prototypes/win32api/PropIdl.int =================================================================== --- trunk/jcl/source/prototypes/win32api/PropIdl.int 2011-07-29 09:02:58 UTC (rev 3552) +++ trunk/jcl/source/prototypes/win32api/PropIdl.int 2011-07-29 09:31:35 UTC (rev 3553) @@ -133,3 +133,6 @@ PIDMSI_COPYRIGHT = $0000000B; // VT_LPWSTR {$EXTERNALSYM PIDMSI_COPYRIGHT} +function PropVariantClear(var Prop: TPropVariant): HResult; stdcall; +{$EXTERNALSYM PropVariantClear} + Modified: trunk/jcl/source/windows/JclNTFS.pas =================================================================== --- trunk/jcl/source/windows/JclNTFS.pas 2011-07-29 09:02:58 UTC (rev 3552) +++ trunk/jcl/source/windows/JclNTFS.pas 2011-07-29 09:31:35 UTC (rev 3553) @@ -1804,18 +1804,22 @@ var PropValue: TPropVariant; begin + Result := ''; PropValue := GetProperty(ID); - case PropValue.vt of - VT_EMPTY, VT_NULL: - Result := ''; - VT_LPSTR: - Result := PropValue.pszVal; - VT_LPWSTR: - Result := AnsiString(WideString(PropValue.pwszVal)); - VT_BSTR: - Result := AnsiString(WideString(PropValue.bstrVal)); - else - raise EJclFileSummaryError.CreateRes(@RsEIncomatibleDataFormat); + try + case PropValue.vt of + VT_EMPTY, VT_NULL: ; + VT_LPSTR: + Result := PropValue.pszVal; + VT_LPWSTR: + Result := AnsiString(WideString(PropValue.pwszVal)); + VT_BSTR: + Result := AnsiString(WideString(PropValue.bstrVal)); + else + raise EJclFileSummaryError.CreateRes(@RsEIncomatibleDataFormat); + end; + finally + PropVariantClear(PropValue); end; end; @@ -1823,14 +1827,18 @@ var PropValue: TPropVariant; begin + Result := False; PropValue := GetProperty(ID); - case PropValue.vt of - VT_EMPTY, VT_NULL: - Result := False; - VT_BOOL: - Result := PropValue.bool; - else - raise EJclFileSummaryError.CreateRes(@RsEIncomatibleDataFormat); + try + case PropValue.vt of + VT_EMPTY, VT_NULL: ; + VT_BOOL: + Result := PropValue.bool; + else + raise EJclFileSummaryError.CreateRes(@RsEIncomatibleDataFormat); + end; + finally + PropVariantClear(PropValue); end; end; @@ -1838,18 +1846,22 @@ var PropValue: TPropVariant; begin + Result := ''; PropValue := GetProperty(ID); - case PropValue.vt of - VT_EMPTY, VT_NULL: - Result := ''; - VT_LPSTR: - Result := WideString(AnsiString(PropValue.pszVal)); - VT_LPWSTR: - Result := PropValue.pwszVal; - VT_BSTR: - Result := PropValue.bstrVal; - else - raise EJclFileSummaryError.CreateRes(@RsEIncomatibleDataFormat); + try + case PropValue.vt of + VT_EMPTY, VT_NULL: ; + VT_LPSTR: + Result := WideString(AnsiString(PropValue.pszVal)); + VT_LPWSTR: + Result := PropValue.pwszVal; + VT_BSTR: + Result := PropValue.bstrVal; + else + raise EJclFileSummaryError.CreateRes(@RsEIncomatibleDataFormat); + end; + finally + PropVariantClear(PropValue); end; end; @@ -1857,24 +1869,28 @@ var PropValue: TPropVariant; begin + Result := 0; PropValue := GetProperty(ID); - case PropValue.vt of - VT_EMPTY, VT_NULL: - Result := 0; - VT_I2: - Result := PropValue.iVal; - VT_I4, VT_INT: - Result := PropValue.lVal; - VT_I1: - Result := PropValue.bVal; // no ShortInt? (cVal) - VT_UI1: - Result := PropValue.bVal; - VT_UI2: - Result := PropValue.uiVal; - VT_UI4, VT_UINT: - Result := PropValue.ulVal; - else - raise EJclFileSummaryError.CreateRes(@RsEIncomatibleDataFormat); + try + case PropValue.vt of + VT_EMPTY, VT_NULL: ; + VT_I2: + Result := PropValue.iVal; + VT_I4, VT_INT: + Result := PropValue.lVal; + VT_I1: + Result := PropValue.bVal; // no ShortInt? (cVal) + VT_UI1: + Result := PropValue.bVal; + VT_UI2: + Result := PropValue.uiVal; + VT_UI4, VT_UINT: + Result := PropValue.ulVal; + else + raise EJclFileSummaryError.CreateRes(@RsEIncomatibleDataFormat); + end; + finally + PropVariantClear(PropValue); end; end; @@ -1882,14 +1898,18 @@ var PropValue: TPropVariant; begin + Result := nil; PropValue := GetProperty(ID); - case PropValue.vt of - VT_EMPTY, VT_NULL: - Result := nil; - VT_CF: - Result := PropValue.pclipdata - else - raise EJclFileSummaryError.CreateRes(@RsEIncomatibleDataFormat); + try + case PropValue.vt of + VT_EMPTY, VT_NULL: ; + VT_CF: + Result := PropValue.pclipdata + else + raise EJclFileSummaryError.CreateRes(@RsEIncomatibleDataFormat); + end; + finally + PropVariantClear(PropValue); end; end; @@ -1897,14 +1917,18 @@ var PropValue: TPropVariant; begin + ZeroMemory(@Result, SizeOf(Result)); PropValue := GetProperty(ID); - case PropValue.vt of - VT_EMPTY, VT_NULL: - ZeroMemory(@Result, SizeOf(Result)); - VT_FILETIME: - Result := PropValue.filetime; - else - raise EJclFileSummaryError.CreateRes(@RsEIncomatibleDataFormat); + try + case PropValue.vt of + VT_EMPTY, VT_NULL: ; + VT_FILETIME: + Result := PropValue.filetime; + else + raise EJclFileSummaryError.CreateRes(@RsEIncomatibleDataFormat); + end; + finally + PropVariantClear(PropValue); end; end; @@ -1917,24 +1941,28 @@ var PropValue: TPropVariant; begin + Result := 0; PropValue := GetProperty(ID); - case PropValue.vt of - VT_EMPTY, VT_NULL: - Result := 0; - VT_I2: - Result := PropValue.iVal; - VT_I4, VT_INT: - Result := PropValue.lVal; - VT_I1: - Result := PropValue.bVal; // no ShortInt? (cVal) - VT_UI1: - Result := PropValue.bVal; - VT_UI2: - Result := PropValue.uiVal; - VT_UI4, VT_UINT: - Result := PropValue.ulVal; - else - raise EJclFileSummaryError.CreateRes(@RsEIncomatibleDataFormat); + try + case PropValue.vt of + VT_EMPTY, VT_NULL: ; + VT_I2: + Result := PropValue.iVal; + VT_I4, VT_INT: + Result := PropValue.lVal; + VT_I1: + Result := PropValue.bVal; // no ShortInt? (cVal) + VT_UI1: + Result := PropValue.bVal; + VT_UI2: + Result := PropValue.uiVal; + VT_UI4, VT_UINT: + Result := PropValue.ulVal; + else + raise EJclFileSummaryError.CreateRes(@RsEIncomatibleDataFormat); + end; + finally + PropVariantClear(PropValue); end; end; @@ -1976,14 +2004,18 @@ var PropValue: TPropVariant; begin + ZeroMemory(@Result, SizeOf(Result)); PropValue := GetProperty(ID); - case PropValue.vt of - VT_EMPTY, VT_NULL: - ZeroMemory(@Result, SizeOf(Result)); - VT_LPSTR or VT_VECTOR: - Result := PropValue.calpstr; - else - raise EJclFileSummaryError.CreateRes(@RsEIncomatibleDataFormat); + try + case PropValue.vt of + VT_EMPTY, VT_NULL: ; + VT_LPSTR or VT_VECTOR: + Result := PropValue.calpstr; + else + raise EJclFileSummaryError.CreateRes(@RsEIncomatibleDataFormat); + end; + finally + PropVariantClear(PropValue); end; end; @@ -1992,14 +2024,18 @@ var PropValue: TPropVariant; begin + ZeroMemory(@Result, SizeOf(Result)); PropValue := GetProperty(ID); - case PropValue.vt of - VT_EMPTY, VT_NULL: - ZeroMemory(@Result, SizeOf(Result)); - VT_VARIANT or VT_VECTOR: - Result := PropValue.capropvar; - else - raise EJclFileSummaryError.CreateRes(@RsEIncomatibleDataFormat); + try + case PropValue.vt of + VT_EMPTY, VT_NULL: ; + VT_VARIANT or VT_VECTOR: + Result := PropValue.capropvar; + else + raise EJclFileSummaryError.CreateRes(@RsEIncomatibleDataFormat); + end; + finally + PropVariantClear(PropValue); end; end; @@ -2008,18 +2044,22 @@ var PropValue: TPropVariant; begin + Result := ''; PropValue := GetProperty(ID); - case PropValue.vt of - VT_EMPTY, VT_NULL: - Result := ''; - VT_LPSTR: - Result := WideString(AnsiString(PropValue.pszVal)); - VT_LPWSTR: - Result := PropValue.pwszVal; - VT_BSTR: - Result := PropValue.bstrVal; - else - raise EJclFileSummaryError.CreateRes(@RsEIncomatibleDataFormat); + try + case PropValue.vt of + VT_EMPTY, VT_NULL: ; + VT_LPSTR: + Result := WideString(AnsiString(PropValue.pszVal)); + VT_LPWSTR: + Result := PropValue.pwszVal; + VT_BSTR: + Result := PropValue.bstrVal; + else + raise EJclFileSummaryError.CreateRes(@RsEIncomatibleDataFormat); + end; + finally + PropVariantClear(PropValue); end; end; @@ -2027,20 +2067,24 @@ var PropValue: TPropVariant; begin + Result := 0; PropValue := GetProperty(ID); - case PropValue.vt of - VT_EMPTY, VT_NULL: - Result := 0; - VT_I2: - Result := PropValue.iVal; - VT_I1: - Result := PropValue.bVal; // no ShortInt? (cVal) - VT_UI1: - Result := PropValue.bVal; - VT_UI2: - Result := PropValue.uiVal; - else - raise EJclFileSummaryError.CreateRes(@RsEIncomatibleDataFormat); + try + case PropValue.vt of + VT_EMPTY, VT_NULL: ; + VT_I2: + Result := PropValue.iVal; + VT_I1: + Result := PropValue.bVal; // no ShortInt? (cVal) + VT_UI1: + Result := PropValue.bVal; + VT_UI2: + Result := PropValue.uiVal; + else + raise EJclFileSummaryError.CreateRes(@RsEIncomatibleDataFormat); + end; + finally + PropVariantClear(PropValue); end; end; @@ -2070,7 +2114,7 @@ PropValue: TPropVariant; begin PropValue.vt := VT_BSTR; - PropValue.bstrVal := PWideChar(Value); + PropValue.bstrVal := SysAllocString(PWideChar(Value)); SetProperty(ID, PropValue); end; Modified: trunk/jcl/source/windows/JclWin32.pas =================================================================== --- trunk/jcl/source/windows/JclWin32.pas 2011-07-29 09:02:58 UTC (rev 3552) +++ trunk/jcl/source/windows/JclWin32.pas 2011-07-29 09:31:35 UTC (rev 3553) @@ -6811,142 +6811,6 @@ //PImgDelayDescr = ImgDelayDescr; //TImgDelayDescr = ImgDelayDescr; -// propidl.h line 386 - -// Reserved global Property IDs -const - PID_DICTIONARY = $00000000; // integer count + array of entries - {$EXTERNALSYM PID_DICTIONARY} - PID_CODEPAGE = $00000001; // short integer - {$EXTERNALSYM PID_CODEPAGE} - PID_FIRST_USABLE = $00000002; - {$EXTERNALSYM PID_FIRST_USABLE} - PID_FIRST_NAME_DEFAULT = $00000FFF; - {$EXTERNALSYM PID_FIRST_NAME_DEFAULT} - PID_LOCALE = $80000000; - {$EXTERNALSYM PID_LOCALE} - PID_MODIFY_TIME = $80000001; - {$EXTERNALSYM PID_MODIFY_TIME} - PID_SECURITY = $80000002; - {$EXTERNALSYM PID_SECURITY} - PID_BEHAVIOR = $80000003; - {$EXTERNALSYM PID_BEHAVIOR} - PID_ILLEGAL = $FFFFFFFF; - {$EXTERNALSYM PID_ILLEGAL} - -// Range which is read-only to downlevel implementations - -const - PID_MIN_READONLY = $80000000; - {$EXTERNALSYM PID_MIN_READONLY} - PID_MAX_READONLY = $BFFFFFFF; - {$EXTERNALSYM PID_MAX_READONLY} - -// Property IDs for the DiscardableInformation Property Set - -const - PIDDI_THUMBNAIL = $00000002; // VT_BLOB - {$EXTERNALSYM PIDDI_THUMBNAIL} - -// Property IDs for the SummaryInformation Property Set - -const - PIDSI_TITLE = $00000002; // VT_LPSTR - {$EXTERNALSYM PIDSI_TITLE} - PIDSI_SUBJECT = $00000003; // VT_LPSTR - {$EXTERNALSYM PIDSI_SUBJECT} - PIDSI_AUTHOR = $00000004; // VT_LPSTR - {$EXTERNALSYM PIDSI_AUTHOR} - PIDSI_KEYWORDS = $00000005; // VT_LPSTR - {$EXTERNALSYM PIDSI_KEYWORDS} - PIDSI_COMMENTS = $00000006; // VT_LPSTR - {$EXTERNALSYM PIDSI_COMMENTS} - PIDSI_TEMPLATE = $00000007; // VT_LPSTR - {$EXTERNALSYM PIDSI_TEMPLATE} - PIDSI_LASTAUTHOR = $00000008; // VT_LPSTR - {$EXTERNALSYM PIDSI_LASTAUTHOR} - PIDSI_REVNUMBER = $00000009; // VT_LPSTR - {$EXTERNALSYM PIDSI_REVNUMBER} - PIDSI_EDITTIME = $0000000A; // VT_FILETIME (UTC) - {$EXTERNALSYM PIDSI_EDITTIME} - PIDSI_LASTPRINTED = $0000000B; // VT_FILETIME (UTC) - {$EXTERNALSYM PIDSI_LASTPRINTED} - PIDSI_CREATE_DTM = $0000000C; // VT_FILETIME (UTC) - {$EXTERNALSYM PIDSI_CREATE_DTM} - PIDSI_LASTSAVE_DTM = $0000000D; // VT_FILETIME (UTC) - {$EXTERNALSYM PIDSI_LASTSAVE_DTM} - PIDSI_PAGECOUNT = $0000000E; // VT_I4 - {$EXTERNALSYM PIDSI_PAGECOUNT} - PIDSI_WORDCOUNT = $0000000F; // VT_I4 - {$EXTERNALSYM PIDSI_WORDCOUNT} - PIDSI_CHARCOUNT = $00000010; // VT_I4 - {$EXTERNALSYM PIDSI_CHARCOUNT} - PIDSI_THUMBNAIL = $00000011; // VT_CF - {$EXTERNALSYM PIDSI_THUMBNAIL} - PIDSI_APPNAME = $00000012; // VT_LPSTR - {$EXTERNALSYM PIDSI_APPNAME} - PIDSI_DOC_SECURITY = $00000013; // VT_I4 - {$EXTERNALSYM PIDSI_DOC_SECURITY} - -// Property IDs for the DocSummaryInformation Property Set - -const - PIDDSI_CATEGORY = $00000002; // VT_LPSTR - {$EXTERNALSYM PIDDSI_CATEGORY} - PIDDSI_PRESFORMAT = $00000003; // VT_LPSTR - {$EXTERNALSYM PIDDSI_PRESFORMAT} - PIDDSI_BYTECOUNT = $00000004; // VT_I4 - {$EXTERNALSYM PIDDSI_BYTECOUNT} - PIDDSI_LINECOUNT = $00000005; // VT_I4 - {$EXTERNALSYM PIDDSI_LINECOUNT} - PIDDSI_PARCOUNT = $00000006; // VT_I4 - {$EXTERNALSYM PIDDSI_PARCOUNT} - PIDDSI_SLIDECOUNT = $00000007; // VT_I4 - {$EXTERNALSYM PIDDSI_SLIDECOUNT} - PIDDSI_NOTECOUNT = $00000008; // VT_I4 - {$EXTERNALSYM PIDDSI_NOTECOUNT} - PIDDSI_HIDDENCOUNT = $00000009; // VT_I4 - {$EXTERNALSYM PIDDSI_HIDDENCOUNT} - PIDDSI_MMCLIPCOUNT = $0000000A; // VT_I4 - {$EXTERNALSYM PIDDSI_MMCLIPCOUNT} - PIDDSI_SCALE = $0000000B; // VT_BOOL - {$EXTERNALSYM PIDDSI_SCALE} - PIDDSI_HEADINGPAIR = $0000000C; // VT_VARIANT | VT_VECTOR - {$EXTERNALSYM PIDDSI_HEADINGPAIR} - PIDDSI_DOCPARTS = $0000000D; // VT_LPSTR | VT_VECTOR - {$EXTERNALSYM PIDDSI_DOCPARTS} - PIDDSI_MANAGER = $0000000E; // VT_LPSTR - {$EXTERNALSYM PIDDSI_MANAGER} - PIDDSI_COMPANY = $0000000F; // VT_LPSTR - {$EXTERNALSYM PIDDSI_COMPANY} - PIDDSI_LINKSDIRTY = $00000010; // VT_BOOL - {$EXTERNALSYM PIDDSI_LINKSDIRTY} - -// FMTID_MediaFileSummaryInfo - Property IDs - -const - PIDMSI_EDITOR = $00000002; // VT_LPWSTR - {$EXTERNALSYM PIDMSI_EDITOR} - PIDMSI_SUPPLIER = $00000003; // VT_LPWSTR - {$EXTERNALSYM PIDMSI_SUPPLIER} - PIDMSI_SOURCE = $00000004; // VT_LPWSTR - {$EXTERNALSYM PIDMSI_SOURCE} - PIDMSI_SEQUENCE_NO = $00000005; // VT_LPWSTR - {$EXTERNALSYM PIDMSI_SEQUENCE_NO} - PIDMSI_PROJECT = $00000006; // VT_LPWSTR - {$EXTERNALSYM PIDMSI_PROJECT} - PIDMSI_STATUS = $00000007; // VT_UI4 - {$EXTERNALSYM PIDMSI_STATUS} - PIDMSI_OWNER = $00000008; // VT_LPWSTR - {$EXTERNALSYM PIDMSI_OWNER} - PIDMSI_RATING = $00000009; // VT_LPWSTR - {$EXTERNALSYM PIDMSI_RATING} - PIDMSI_PRODUCTION = $0000000A; // VT_FILETIME (UTC) - {$EXTERNALSYM PIDMSI_PRODUCTION} - PIDMSI_COPYRIGHT = $0000000B; // VT_LPWSTR - {$EXTERNALSYM PIDMSI_COPYRIGHT} - - // msidefs.h line 349 // PIDs given specific meanings for Installer @@ -7206,6 +7070,145 @@ {$EXTERNALSYM StgOpenStorageEx} +// propidl.h line 386 + +// Reserved global Property IDs +const + PID_DICTIONARY = $00000000; // integer count + array of entries + {$EXTERNALSYM PID_DICTIONARY} + PID_CODEPAGE = $00000001; // short integer + {$EXTERNALSYM PID_CODEPAGE} + PID_FIRST_USABLE = $00000002; + {$EXTERNALSYM PID_FIRST_USABLE} + PID_FIRST_NAME_DEFAULT = $00000FFF; + {$EXTERNALSYM PID_FIRST_NAME_DEFAULT} + PID_LOCALE = $80000000; + {$EXTERNALSYM PID_LOCALE} + PID_MODIFY_TIME = $80000001; + {$EXTERNALSYM PID_MODIFY_TIME} + PID_SECURITY = $80000002; + {$EXTERNALSYM PID_SECURITY} + PID_BEHAVIOR = $80000003; + {$EXTERNALSYM PID_BEHAVIOR} + PID_ILLEGAL = $FFFFFFFF; + {$EXTERNALSYM PID_ILLEGAL} + +// Range which is read-only to downlevel implementations + +const + PID_MIN_READONLY = $80000000; + {$EXTERNALSYM PID_MIN_READONLY} + PID_MAX_READONLY = $BFFFFFFF; + {$EXTERNALSYM PID_MAX_READONLY} + +// Property IDs for the DiscardableInformation Property Set + +const + PIDDI_THUMBNAIL = $00000002; // VT_BLOB + {$EXTERNALSYM PIDDI_THUMBNAIL} + +// Property IDs for the SummaryInformation Property Set + +const + PIDSI_TITLE = $00000002; // VT_LPSTR + {$EXTERNALSYM PIDSI_TITLE} + PIDSI_SUBJECT = $00000003; // VT_LPSTR + {$EXTERNALSYM PIDSI_SUBJECT} + PIDSI_AUTHOR = $00000004; // VT_LPSTR + {$EXTERNALSYM PIDSI_AUTHOR} + PIDSI_KEYWORDS = $00000005; // VT_LPSTR + {$EXTERNALSYM PIDSI_KEYWORDS} + PIDSI_COMMENTS = $00000006; // VT_LPSTR + {$EXTERNALSYM PIDSI_COMMENTS} + PIDSI_TEMPLATE = $00000007; // VT_LPSTR + {$EXTERNALSYM PIDSI_TEMPLATE} + PIDSI_LASTAUTHOR = $00000008; // VT_LPSTR + {$EXTERNALSYM PIDSI_LASTAUTHOR} + PIDSI_REVNUMBER = $00000009; // VT_LPSTR + {$EXTERNALSYM PIDSI_REVNUMBER} + PIDSI_EDITTIME = $0000000A; // VT_FILETIME (UTC) + {$EXTERNALSYM PIDSI_EDITTIME} + PIDSI_LASTPRINTED = $0000000B; // VT_FILETIME (UTC) + {$EXTERNALSYM PIDSI_LASTPRINTED} + PIDSI_CREATE_DTM = $0000000C; // VT_FILETIME (UTC) + {$EXTERNALSYM PIDSI_CREATE_DTM} + PIDSI_LASTSAVE_DTM = $0000000D; // VT_FILETIME (UTC) + {$EXTERNALSYM PIDSI_LASTSAVE_DTM} + PIDSI_PAGECOUNT = $0000000E; // VT_I4 + {$EXTERNALSYM PIDSI_PAGECOUNT} + PIDSI_WORDCOUNT = $0000000F; // VT_I4 + {$EXTERNALSYM PIDSI_WORDCOUNT} + PIDSI_CHARCOUNT = $00000010; // VT_I4 + {$EXTERNALSYM PIDSI_CHARCOUNT} + PIDSI_THUMBNAIL = $00000011; // VT_CF + {$EXTERNALSYM PIDSI_THUMBNAIL} + PIDSI_APPNAME = $00000012; // VT_LPSTR + {$EXTERNALSYM PIDSI_APPNAME} + PIDSI_DOC_SECURITY = $00000013; // VT_I4 + {$EXTERNALSYM PIDSI_DOC_SECURITY} + +// Property IDs for the DocSummaryInformation Property Set + +const + PIDDSI_CATEGORY = $00000002; // VT_LPSTR + {$EXTERNALSYM PIDDSI_CATEGORY} + PIDDSI_PRESFORMAT = $00000003; // VT_LPSTR + {$EXTERNALSYM PIDDSI_PRESFORMAT} + PIDDSI_BYTECOUNT = $00000004; // VT_I4 + {$EXTERNALSYM PIDDSI_BYTECOUNT} + PIDDSI_LINECOUNT = $00000005; // VT_I4 + {$EXTERNALSYM PIDDSI_LINECOUNT} + PIDDSI_PARCOUNT = $00000006; // VT_I4 + {$EXTERNALSYM PIDDSI_PARCOUNT} + PIDDSI_SLIDECOUNT = $00000007; // VT_I4 + {$EXTERNALSYM PIDDSI_SLIDECOUNT} + PIDDSI_NOTECOUNT = $00000008; // VT_I4 + {$EXTERNALSYM PIDDSI_NOTECOUNT} + PIDDSI_HIDDENCOUNT = $00000009; // VT_I4 + {$EXTERNALSYM PIDDSI_HIDDENCOUNT} + PIDDSI_MMCLIPCOUNT = $0000000A; // VT_I4 + {$EXTERNALSYM PIDDSI_MMCLIPCOUNT} + PIDDSI_SCALE = $0000000B; // VT_BOOL + {$EXTERNALSYM PIDDSI_SCALE} + PIDDSI_HEADINGPAIR = $0000000C; // VT_VARIANT | VT_VECTOR + {$EXTERNALSYM PIDDSI_HEADINGPAIR} + PIDDSI_DOCPARTS = $0000000D; // VT_LPSTR | VT_VECTOR + {$EXTERNALSYM PIDDSI_DOCPARTS} + PIDDSI_MANAGER = $0000000E; // VT_LPSTR + {$EXTERNALSYM PIDDSI_MANAGER} + PIDDSI_COMPANY = $0000000F; // VT_LPSTR + {$EXTERNALSYM PIDDSI_COMPANY} + PIDDSI_LINKSDIRTY = $00000010; // VT_BOOL + {$EXTERNALSYM PIDDSI_LINKSDIRTY} + +// FMTID_MediaFileSummaryInfo - Property IDs + +const + PIDMSI_EDITOR = $00000002; // VT_LPWSTR + {$EXTERNALSYM PIDMSI_EDITOR} + PIDMSI_SUPPLIER = $00000003; // VT_LPWSTR + {$EXTERNALSYM PIDMSI_SUPPLIER} + PIDMSI_SOURCE = $00000004; // VT_LPWSTR + {$EXTERNALSYM PIDMSI_SOURCE} + PIDMSI_SEQUENCE_NO = $00000005; // VT_LPWSTR + {$EXTERNALSYM PIDMSI_SEQUENCE_NO} + PIDMSI_PROJECT = $00000006; // VT_LPWSTR + {$EXTERNALSYM PIDMSI_PROJECT} + PIDMSI_STATUS = $00000007; // VT_UI4 + {$EXTERNALSYM PIDMSI_STATUS} + PIDMSI_OWNER = $00000008; // VT_LPWSTR + {$EXTERNALSYM PIDMSI_OWNER} + PIDMSI_RATING = $00000009; // VT_LPWSTR + {$EXTERNALSYM PIDMSI_RATING} + PIDMSI_PRODUCTION = $0000000A; // VT_FILETIME (UTC) + {$EXTERNALSYM PIDMSI_PRODUCTION} + PIDMSI_COPYRIGHT = $0000000B; // VT_LPWSTR + {$EXTERNALSYM PIDMSI_COPYRIGHT} + +function PropVariantClear(var Prop: TPropVariant): HResult; stdcall; +{$EXTERNALSYM PropVariantClear} + + // NtSecApi.h line 566 type PLSA_UNICODE_STRING = ^LSA_UNICODE_STRING; @@ -8795,6 +8798,19 @@ type + TPropVariantClear = function (var Prop: TPropVariant): HResult; stdcall; + +var + _PropVariantClear: TPropVariantClear = nil; + +function PropVariantClear(var Prop: TPropVariant): HResult; +begin + GetProcedureAddress(Pointer(@_PropVariantClear), Ole32Lib, 'PropVariantClear'); + Result := _PropVariantClear(Prop); +end; + + +type TLsaOpenPolicy = function (SystemName: PLSA_UNICODE_STRING; var ObjectAttributes: LSA_OBJECT_ATTRIBUTES; DesiredAccess: ACCESS_MASK; var PolicyHandle: LSA_HANDLE): NTSTATUS; stdcall; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2011-07-29 09:03:05
|
Revision: 3552 http://jcl.svn.sourceforge.net/jcl/?rev=3552&view=rev Author: outchy Date: 2011-07-29 09:02:58 +0000 (Fri, 29 Jul 2011) Log Message: ----------- unused variable. Modified Paths: -------------- trunk/jcl/source/common/JclUnitVersioning.pas Modified: trunk/jcl/source/common/JclUnitVersioning.pas =================================================================== --- trunk/jcl/source/common/JclUnitVersioning.pas 2011-07-24 15:21:41 UTC (rev 3551) +++ trunk/jcl/source/common/JclUnitVersioning.pas 2011-07-29 09:02:58 UTC (rev 3552) @@ -711,7 +711,6 @@ procedure ExportUnitVersioningToFile(iFileName : string); var I: Integer; - Item: TUnitVersion; sl: TStringList; begin sl := TStringList.Create; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ah...@us...> - 2011-07-24 15:21:47
|
Revision: 3551 http://jcl.svn.sourceforge.net/jcl/?rev=3551&view=rev Author: ahuser Date: 2011-07-24 15:21:41 +0000 (Sun, 24 Jul 2011) Log Message: ----------- TJclDebugInfoSymbols.InitializeSource looked at from record Modified Paths: -------------- trunk/jcl/source/windows/JclDebug.pas Modified: trunk/jcl/source/windows/JclDebug.pas =================================================================== --- trunk/jcl/source/windows/JclDebug.pas 2011-07-22 19:20:57 UTC (rev 3550) +++ trunk/jcl/source/windows/JclDebug.pas 2011-07-24 15:21:41 UTC (rev 3551) @@ -3921,7 +3921,7 @@ Result := (SymLoadModuleFunc(ProcessHandle, 0, PAnsiChar(AnsiString(ModuleFileName)), nil, 0, 0) <> 0) and SymGetModuleInfoAFunc(ProcessHandle, Module, ModuleInfoA); end; - Result := Result and (ModuleInfoW.BaseOfImage <> 0) and + Result := Result and (ModuleInfoA.BaseOfImage <> 0) and not (ModuleInfoA.SymType in [SymNone, SymExport]); end else This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jfu...@us...> - 2011-07-22 19:21:04
|
Revision: 3550 http://jcl.svn.sourceforge.net/jcl/?rev=3550&view=rev Author: jfudickar Date: 2011-07-22 19:20:57 +0000 (Fri, 22 Jul 2011) Log Message: ----------- Mantis 0005620 + 0005623 UnitVersioning.pas doesn't compile at install time if uncheck "Include Unit Versioning" box. Modified Paths: -------------- trunk/jcl/source/common/JclUnitVersioning.pas Modified: trunk/jcl/source/common/JclUnitVersioning.pas =================================================================== --- trunk/jcl/source/common/JclUnitVersioning.pas 2011-07-06 22:13:58 UTC (rev 3549) +++ trunk/jcl/source/common/JclUnitVersioning.pas 2011-07-22 19:20:57 UTC (rev 3550) @@ -725,8 +725,8 @@ end; end; +initialization {$IFDEF UNITVERSIONING} -initialization RegisterUnitVersion(HInstance, UnitVersioning); {$ENDIF UNITVERSIONING} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jfu...@us...> - 2011-07-06 22:14:04
|
Revision: 3549 http://jcl.svn.sourceforge.net/jcl/?rev=3549&view=rev Author: jfudickar Date: 2011-07-06 22:13:58 +0000 (Wed, 06 Jul 2011) Log Message: ----------- RegisterUnitVersion and UnregisterUnitVersion is only called when {$IFDEF UNITVERSIONING} is defined. So the unit could be used without registring the version of the unit itself. Modified Paths: -------------- trunk/jcl/source/common/JclUnitVersioning.pas Modified: trunk/jcl/source/common/JclUnitVersioning.pas =================================================================== --- trunk/jcl/source/common/JclUnitVersioning.pas 2011-07-05 21:40:43 UTC (rev 3548) +++ trunk/jcl/source/common/JclUnitVersioning.pas 2011-07-06 22:13:58 UTC (rev 3549) @@ -145,6 +145,7 @@ function GetUnitVersioning: TUnitVersioning; procedure ExportUnitVersioningToFile(iFileName : string); + const UnitVersioning: TUnitVersionInfo = ( RCSfile: '$URL$'; @@ -724,10 +725,15 @@ end; end; +{$IFDEF UNITVERSIONING} initialization RegisterUnitVersion(HInstance, UnitVersioning); +{$ENDIF UNITVERSIONING} finalization +{$IFDEF UNITVERSIONING} + UnregisterUnitVersion(HInstance); +{$ENDIF UNITVERSIONING} FinalizeUnitVersioning; end. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jfu...@us...> - 2011-07-05 21:40:49
|
Revision: 3548 http://jcl.svn.sourceforge.net/jcl/?rev=3548&view=rev Author: jfudickar Date: 2011-07-05 21:40:43 +0000 (Tue, 05 Jul 2011) Log Message: ----------- TUnitVersion.Summary added procedure ExportUnitVersioningToFile(iFileName : string); added Modified Paths: -------------- trunk/jcl/source/common/JclUnitVersioning.pas Modified: trunk/jcl/source/common/JclUnitVersioning.pas =================================================================== --- trunk/jcl/source/common/JclUnitVersioning.pas 2011-06-19 17:14:02 UTC (rev 3547) +++ trunk/jcl/source/common/JclUnitVersioning.pas 2011-07-05 21:40:43 UTC (rev 3548) @@ -69,6 +69,7 @@ function LogPath: string; function Data: Pointer; function DateTime: TDateTime; + function Summary: string; end; TUnitVersioningModule = class(TObject) @@ -143,6 +144,7 @@ function GetUnitVersioning: TUnitVersioning; +procedure ExportUnitVersioningToFile(iFileName : string); const UnitVersioning: TUnitVersionInfo = ( RCSfile: '$URL$'; @@ -330,6 +332,13 @@ Result := EncodeDate(Year, Month, Day) + EncodeTime(Hour, Minute, Second, 0); end; +function TUnitVersion.Summary: string; +begin + Result := LogPath + #9 + RCSFile + #9 + Revision + #9 + Date; + if Extra <> '' then + Result := Result + #9 + Extra; +end; + //=== { TUnitVersioningModule } ============================================== constructor TUnitVersioningModule.Create(AInstance: THandle); @@ -698,6 +707,23 @@ UnitVersioning.UnregisterModule(Instance); end; +procedure ExportUnitVersioningToFile(iFileName : string); +var + I: Integer; + Item: TUnitVersion; + sl: TStringList; +begin + sl := TStringList.Create; + try + for I := 0 to GetUnitVersioning.Count - 1 do + sl.Add(GetUnitVersioning.Items[I].Summary); + sl.Sort; + sl.SaveToFile(iFileName); + finally + sl.Free; + end; +end; + initialization RegisterUnitVersion(HInstance, UnitVersioning); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jfu...@us...> - 2011-06-19 17:14:09
|
Revision: 3547 http://jcl.svn.sourceforge.net/jcl/?rev=3547&view=rev Author: jfudickar Date: 2011-06-19 17:14:02 +0000 (Sun, 19 Jun 2011) Log Message: ----------- Hints Removed Modified Paths: -------------- trunk/jcl/source/common/JclFileUtils.pas trunk/jcl/source/vcl/JclVersionCtrlGITImpl.pas Modified: trunk/jcl/source/common/JclFileUtils.pas =================================================================== --- trunk/jcl/source/common/JclFileUtils.pas 2011-06-19 17:04:06 UTC (rev 3546) +++ trunk/jcl/source/common/JclFileUtils.pas 2011-06-19 17:14:02 UTC (rev 3547) @@ -2725,7 +2725,6 @@ L: Integer; B, P: string; begin - Result := False; B := PathRemoveSeparator(Base); P := PathRemoveSeparator(Path); // an empty path or one that's not longer than base cannot be a subdirectory Modified: trunk/jcl/source/vcl/JclVersionCtrlGITImpl.pas =================================================================== --- trunk/jcl/source/vcl/JclVersionCtrlGITImpl.pas 2011-06-19 17:04:06 UTC (rev 3546) +++ trunk/jcl/source/vcl/JclVersionCtrlGITImpl.pas 2011-06-19 17:14:02 UTC (rev 3547) @@ -219,9 +219,6 @@ end; function TJclVersionControlGIT.GetFileActions(const FileName: TFileName): TJclVersionControlActionTypes; -var - EntryFileName: TFileName; - IndexDir: Integer; begin Result := inherited GetFileActions(FileName); @@ -261,10 +258,10 @@ function TJclVersionControlGIT.GetSandboxNames(const FileName: TFileName; SdBxNames: TStrings): Boolean; var DirectoryName: string; - IndexDir, IndexFileName: Integer; List: TStringList; i: Integer; Found: Boolean; + IndexDir: Integer; begin Result := True; Found := False; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jfu...@us...> - 2011-06-19 17:04:12
|
Revision: 3546 http://jcl.svn.sourceforge.net/jcl/?rev=3546&view=rev Author: jfudickar Date: 2011-06-19 17:04:06 +0000 (Sun, 19 Jun 2011) Log Message: ----------- TJclVersionControlGIT enhanced Smaller Code fixes Modified Paths: -------------- trunk/jcl/source/vcl/JclVersionControl.pas trunk/jcl/source/vcl/JclVersionCtrlGITImpl.pas trunk/jcl/source/vcl/JclVersionCtrlSVNImpl.pas Modified: trunk/jcl/source/vcl/JclVersionControl.pas =================================================================== --- trunk/jcl/source/vcl/JclVersionControl.pas 2011-06-19 17:02:28 UTC (rev 3545) +++ trunk/jcl/source/vcl/JclVersionControl.pas 2011-06-19 17:04:06 UTC (rev 3546) @@ -556,8 +556,7 @@ Result := []; end; -function TJclVersionControlPlugin.GetSandboxNames(const FileName: TFileName; - SdBxNames: TStrings): Boolean; +function TJclVersionControlPlugin.GetSandboxNames(const FileName: TFileName; SdBxNames: TStrings): Boolean; var Index: Integer; begin @@ -568,9 +567,7 @@ SdBxNames.Clear; for Index := Length(FileName) downto 1 do if FileName[Index] = DirDelimiter then - begin - SdBxNames.Add(Copy(FileName, 1, Index)); - end; + SdBxNames.Add(Copy(FileName, 1, Index)); finally SdBxNames.EndUpdate; end; @@ -578,8 +575,7 @@ //=== TJclVersionControlCache ================================================ -constructor TJclVersionControlCache.Create(APlugin: TJclVersionControlPlugin; - const AFileName: TFileName); +constructor TJclVersionControlCache.Create(APlugin: TJclVersionControlPlugin; const AFileName: TFileName); var Index: Integer; SandboxNames: TStrings; Modified: trunk/jcl/source/vcl/JclVersionCtrlGITImpl.pas =================================================================== --- trunk/jcl/source/vcl/JclVersionCtrlGITImpl.pas 2011-06-19 17:02:28 UTC (rev 3545) +++ trunk/jcl/source/vcl/JclVersionCtrlGITImpl.pas 2011-06-19 17:04:06 UTC (rev 3546) @@ -1,29 +1,29 @@ -{**************************************************************************************************} -{ } -{ Project JEDI Code Library (JCL) } -{ } +{ ************************************************************************************************** } +{ } +{ Project JEDI Code Library (JCL) } +{ } { The contents of this file are subject to the Mozilla Public License Version 1.1 (the "License"); } -{ you may not use this file except in compliance with the License. You may obtain a copy of the } -{ License at http://www.mozilla.org/MPL/ } -{ } -{ Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF } -{ ANY KIND, either express or implied. See the License for the specific language governing rights } -{ and limitations under the License. } -{ } -{ The Original Code is JclVersionCtrlGITImpl.pas } -{ } -{ The Initial Developer of the Original Code is Florent Ouchet. } -{ Portions created by Florent Ouchet are Copyright (C) of Florent Ouchet. } -{ Portions created by Elahn Ientile are Copyright (C) of Elahn Ientile. } -{ } -{ } -{**************************************************************************************************} -{ } +{ you may not use this file except in compliance with the License. You may obtain a copy of the } +{ License at http://www.mozilla.org/MPL/ } +{ } +{ Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF } +{ ANY KIND, either express or implied. See the License for the specific language governing rights } +{ and limitations under the License. } +{ } +{ The Original Code is JclVersionCtrlGITImpl.pas } +{ } +{ The Initial Developer of the Original Code is Florent Ouchet. } +{ Portions created by Florent Ouchet are Copyright (C) of Florent Ouchet. } +{ Portions created by Elahn Ientile are Copyright (C) of Elahn Ientile. } +{ } +{ } +{ ************************************************************************************************** } +{ } { Last modified: $Date:: 2011-06-13 22:29:42 +0200 (Mo, 13 Jun 2011) $ } { Revision: $Rev:: 3537 $ } { Author: $Author:: jfudickar $ } -{ } -{**************************************************************************************************} +{ } +{ ************************************************************************************************** } unit JclVersionCtrlGITImpl; @@ -32,9 +32,9 @@ interface uses - {$IFDEF UNITVERSIONING} +{$IFDEF UNITVERSIONING} JclUnitVersioning, - {$ENDIF UNITVERSIONING} +{$ENDIF UNITVERSIONING} SysUtils, Classes, Windows, Graphics, JclVersionControl; @@ -43,27 +43,26 @@ private FTortoiseGITProc: string; protected - function GetSupportedActionTypes: TJclVersionControlActionTypes; override; + function GetEnabled: Boolean; override; function GetFileActions(const FileName: TFileName): TJclVersionControlActionTypes; override; - function GetEnabled: Boolean; override; + function GetGitBaseDir(const FileName: TFileName): string; function GetName: string; override; + function GetSupportedActionTypes: TJclVersionControlActionTypes; override; + function IsGitSupportedDir(const FileDir: string): Boolean; public constructor Create; override; destructor Destroy; override; - function ExecuteAction(const FileName: TFileName; - const Action: TJclVersionControlActionType): Boolean; override; + function ExecuteAction(const FileName: TFileName; const Action: TJclVersionControlActionType): Boolean; override; + function GetSandboxNames(const FileName: TFileName; SdBxNames: TStrings): Boolean; override; end; {$IFDEF UNITVERSIONING} + const UnitVersioning: TUnitVersionInfo = ( RCSfile: '$URL: https://jcl.svn.sourceforge.net:443/svnroot/jcl/trunk/jcl/source/vcl/JclVersionCtrlGITImpl.pas $'; - Revision: '$Revision: 3537 $'; - Date: '$Date: 2011-06-13 22:29:42 +0200 (Mo, 13 Jun 2011) $'; - LogPath: 'JCL\source\vcl'; - Extra: ''; - Data: nil - ); + Revision: '$Revision: 3537 $'; Date: '$Date: 2011-06-13 22:29:42 +0200 (Mo, 13 Jun 2011) $'; + LogPath: 'JCL\source\vcl'; Extra: ''; Data: nil); {$ENDIF UNITVERSIONING} implementation @@ -77,29 +76,29 @@ JclVersionCtrlRegValueName = 'ProcPath'; JclVersionCtrlGITAddVerb = 'add'; JclVersionCtrlGITBlameVerb = 'blame'; - //JclVersionCtrlGITBranchVerb = 'copy'; + // JclVersionCtrlGITBranchVerb = 'copy'; JclVersionCtrlGITCheckOutVerb = 'checkout'; JclVersionCtrlGITCommitVerb = 'commit'; JclVersionCtrlGITDiffVerb = 'diff'; -// JclVersionCtrlGITGraphVerb = 'revisiongraph'; + // JclVersionCtrlGITGraphVerb = 'revisiongraph'; JclVersionCtrlGITLogVerb = 'log'; - //JclVersionCtrlGITLockVerb = 'lock'; + // JclVersionCtrlGITLockVerb = 'lock'; JclVersionCtrlGITMergeVerb = 'merge'; JclVersionCtrlGITRenameVerb = 'rename'; JclVersionCtrlGITRepoBrowserVerb = 'repobrowser'; JclVersionCtrlGITRevertVerb = 'revert'; JclVersionCtrlGITStatusVerb = 'repostatus'; -// JclVersionCtrlGITTagVerb = 'copy'; + // JclVersionCtrlGITTagVerb = 'copy'; JclVersionCtrlGITUpdateVerb = 'sync'; -// JclVersionCtrlGITUpdateToParam = '/rev'; - //JclVersionCtrlGITUnlockVerb = 'unlock'; + // JclVersionCtrlGITUpdateToParam = '/rev'; + // JclVersionCtrlGITUnlockVerb = 'unlock'; JclVersionCtrlGITDirectory1 = '.git\'; - JclVersionCtrlGITEntryFile = 'tortoisegit.data'; + JclVersionCtrlGITIndexFile = 'index'; + JclVersionCtrlGITIgnoreFile = '.gitignore'; - JclVersionCtrlGITDirectories: array [0..0] of string = - ( JclVersionCtrlGITDirectory1); + JclVersionCtrlGITDirectories: array [0 .. 0] of string = (JclVersionCtrlGITDirectory1); -//=== TJclVersionControlGIT ================================================== + // === TJclVersionControlGIT ================================================== constructor TJclVersionControlGIT.Create; var @@ -117,7 +116,8 @@ finally RegSetWOW64AccessMode(SaveAcc); end; - if FTortoiseGITProc = '' then // when the 64bit Version is not found try to find the 32bit version + if FTortoiseGITProc = '' then + // when the 64bit Version is not found try to find the 32bit version FTortoiseGITProc := RegReadStringDef(HKLM, JclVersionCtrlRegKeyName, JclVersionCtrlRegValueName, ''); end else @@ -132,8 +132,7 @@ function TJclVersionControlGIT.ExecuteAction(const FileName: TFileName; const Action: TJclVersionControlActionType): Boolean; - function CallTortoiseGITProc(const ActionName: string; - const Param: string = ''): Boolean; + function CallTortoiseGITProc(const ActionName: string; const Param: string = ''): Boolean; var StartupInfo: TStartupInfo; ProcessInfo: TProcessInformation; @@ -141,9 +140,9 @@ begin ResetMemory(StartupInfo, SizeOf(TStartupInfo)); ResetMemory(ProcessInfo, SizeOf(TProcessInformation)); - startupInfo.cb := SizeOf(TStartupInfo); - startupInfo.dwFlags := STARTF_USESHOWWINDOW; - startupInfo.wShowWindow := SW_SHOW; + StartupInfo.cb := SizeOf(TStartupInfo); + StartupInfo.dwFlags := STARTF_USESHOWWINDOW; + StartupInfo.wShowWindow := SW_SHOW; if FileName = '' then raise EJclVersionControlError.Create(RsEEmptyFileName); @@ -156,8 +155,8 @@ CurrentDir := ExtractFilePath(FileName); CommandLine := Format('%s /command:%s /path:"%s" %s /notempfile', [FTortoiseGITProc, ActionName, FileName, Param]); - Result := CreateProcess(nil, PChar(CommandLine), nil, - nil, False, 0, nil, PChar(CurrentDir), StartupInfo, ProcessInfo); + Result := CreateProcess(nil, PChar(CommandLine), nil, nil, False, 0, nil, PChar(CurrentDir), StartupInfo, + ProcessInfo); if Result then begin @@ -168,56 +167,49 @@ begin case Action of - vcaAdd, - vcaAddSandbox: + vcaAdd, vcaAddSandbox: Result := CallTortoiseGITProc(JclVersionCtrlGITAddVerb); - vcaBlame : + vcaBlame: Result := CallTortoiseGITProc(JclVersionCtrlGITBlameVerb); -// vcaBranch, -// vcaBranchSandbox: -// Result := CallTortoiseGITProc(JclVersionCtrlGITBranchVerb); + // vcaBranch, + // vcaBranchSandbox: + // Result := CallTortoiseGITProc(JclVersionCtrlGITBranchVerb); vcaCheckOutSandbox: Result := CallTortoiseGITProc(JclVersionCtrlGITCheckOutVerb); - vcaCommit, - vcaCommitSandbox: + vcaCommit, vcaCommitSandbox: Result := CallTortoiseGITProc(JclVersionCtrlGITCommitVerb); vcaDiff: Result := CallTortoiseGITProc(JclVersionCtrlGITDiffVerb); -// vcaGraph: -// Result := CallTortoiseGITProc(JclVersionCtrlGITGraphVerb); - vcaLog, - vcaLogSandbox: + // vcaGraph: + // Result := CallTortoiseGITProc(JclVersionCtrlGITGraphVerb); + vcaLog, vcaLogSandbox: Result := CallTortoiseGITProc(JclVersionCtrlGITLogVerb); -// vcaLock, -// vcaLockSandbox: -// Result := CallTortoiseGITProc(JclVersionCtrlGITLockVerb); - vcaMerge, - vcaMergeSandbox: + // vcaLock, + // vcaLockSandbox: + // Result := CallTortoiseGITProc(JclVersionCtrlGITLockVerb); + vcaMerge, vcaMergeSandbox: Result := CallTortoiseGITProc(JclVersionCtrlGITMergeVerb); vcaRename: Result := CallTortoiseGITProc(JclVersionCtrlGITRenameVerb); vcaRepoBrowser: Result := CallTortoiseGITProc(JclVersionCtrlGITRepoBrowserVerb); - vcaRevert, - vcaRevertSandbox: + vcaRevert, vcaRevertSandbox: Result := CallTortoiseGITProc(JclVersionCtrlGITRevertVerb); - vcaStatus, - vcaStatusSandbox: + vcaStatus, vcaStatusSandbox: Result := CallTortoiseGITProc(JclVersionCtrlGITStatusVerb); -// vcaTag, -// vcaTagSandBox: -// Result := CallTortoiseGITProc(JclVersionCtrlGITTagVerb); - vcaUpdate, - vcaUpdateSandbox: + // vcaTag, + // vcaTagSandBox: + // Result := CallTortoiseGITProc(JclVersionCtrlGITTagVerb); + vcaUpdate, vcaUpdateSandbox: Result := CallTortoiseGITProc(JclVersionCtrlGITUpdateVerb); -// vcaUpdateTo, -// vcaUpdateSandboxTo: -// Result := CallTortoiseGITProc(JclVersionCtrlGITUpdateVerb, JclVersionCtrlGITUpdateToParam); -// vcaUnlock, -// vcaUnlockSandbox: -// Result := CallTortoiseGITProc(JclVersionCtrlGITUnlockVerb); - else - Result := inherited ExecuteAction(FileName, Action); + // vcaUpdateTo, + // vcaUpdateSandboxTo: + // Result := CallTortoiseGITProc(JclVersionCtrlGITUpdateVerb, JclVersionCtrlGITUpdateToParam); + // vcaUnlock, + // vcaUnlockSandbox: + // Result := CallTortoiseGITProc(JclVersionCtrlGITUnlockVerb); + else + Result := inherited ExecuteAction(FileName, Action); end; end; @@ -226,8 +218,7 @@ Result := FTortoiseGITProc <> ''; end; -function TJclVersionControlGIT.GetFileActions( - const FileName: TFileName): TJclVersionControlActionTypes; +function TJclVersionControlGIT.GetFileActions(const FileName: TFileName): TJclVersionControlActionTypes; var EntryFileName: TFileName; IndexDir: Integer; @@ -236,49 +227,143 @@ if Enabled then begin + if IsGitSupportedDir(ExtractFilePath(FileName)) then + Result := GetSupportedActionTypes; + end; +end; - for IndexDir := Low(JclVersionCtrlGITDirectories) to High(JclVersionCtrlGITDirectories) do +function TJclVersionControlGIT.GetGitBaseDir(const FileName: TFileName): string; +var + DirectoryName: String; + IndexFileName: Integer; + IndexDir: Integer; +begin + Result := ''; + if Enabled then + for IndexFileName := Length(FileName) downto 1 do + if FileName[IndexFileName] = DirDelimiter then + begin + DirectoryName := Copy(FileName, 1, IndexFileName); + for IndexDir := Low(JclVersionCtrlGITDirectories) to High(JclVersionCtrlGITDirectories) do + if FileExists(DirectoryName + JclVersionCtrlGITDirectories[IndexDir] + JclVersionCtrlGITIndexFile) then + begin + Result := DirectoryName; + Exit; + end; + end; +end; + +function TJclVersionControlGIT.GetName: string; +begin + Result := LoadResString(@RsVersionCtrlGITName); +end; + +function TJclVersionControlGIT.GetSandboxNames(const FileName: TFileName; SdBxNames: TStrings): Boolean; +var + DirectoryName: string; + IndexDir, IndexFileName: Integer; + List: TStringList; + i: Integer; + Found: Boolean; +begin + Result := True; + Found := False; + + SdBxNames.BeginUpdate; + try + SdBxNames.Clear; + + if Enabled then begin - EntryFileName := PathAddSeparator(ExtractFilePath(FileName)) - + JclVersionCtrlGITDirectories[IndexDir] + JclVersionCtrlGITEntryFile; - if FileExists(EntryFileName) then - begin - Result := GetSupportedActionTypes; + List := TStringList.Create; + try + StrIToStrings(ExtractFilePath(FileName), DirDelimiter, List, True); + for i := List.Count downto 1 do + begin + DirectoryName := StringsToStr(List, DirDelimiter, i)+DirDelimiter; + SdBxNames.Add(DirectoryName); + for IndexDir := Low(JclVersionCtrlGITDirectories) to High(JclVersionCtrlGITDirectories) do + if DirectoryExists(DirectoryName + JclVersionCtrlGITDirectories[IndexDir]) then + begin + // When the first directory is found stop searching + Found := True; + break; + end; + end; + if not Found then // if no direcory is found delete the list + SdBxNames.Clear; + finally + List.Free; end; end; - Result := Result + [vcaAdd]; + finally + SdBxNames.EndUpdate; end; + + if SdBxNames.Count = 0 then + Result := inherited GetSandboxNames(FileName, SdBxNames); end; function TJclVersionControlGIT.GetSupportedActionTypes: TJclVersionControlActionTypes; begin Result := inherited GetSupportedActionTypes; if Enabled then - Result := Result + [vcaAdd, {vcaAddSandbox, }vcaBlame, {vcaBranch, - vcaBranchSandbox, vcaCheckOutSandbox, }vcaCommit, {vcaCommitSandbox, }vcaDiff, - {vcaGraph, }vcaLog, {vcaLogSandbox, vcaLock, vcaLockSandbox, }vcaMerge, - {vcaMergeSandbox, }vcaRename, vcaRepoBrowser, vcaRevert, {vcaRevertSandbox,} - vcaStatus, {vcaStatusSandbox, vcaTag, vcaTagSandBox, }vcaUpdate{, - vcaUpdateSandbox, vcaUpdateTo, vcaUpdateSandboxTo, vcaUnlock, vcaUnlockSandbox}]; + Result := Result + [vcaAdd, { vcaAddSandbox, } vcaBlame, { vcaBranch, + vcaBranchSandbox, vcaCheckOutSandbox, } vcaCommit, + { vcaCommitSandbox, } vcaDiff, + { vcaGraph, } vcaLog, { vcaLogSandbox, vcaLock, vcaLockSandbox, } vcaMerge, + { vcaMergeSandbox, } vcaRename, vcaRepoBrowser, vcaRevert, + { vcaRevertSandbox, } + vcaStatus, { vcaStatusSandbox, vcaTag, vcaTagSandBox, } vcaUpdate { , + vcaUpdateSandbox, vcaUpdateTo, vcaUpdateSandboxTo, vcaUnlock, vcaUnlockSandbox } ]; end; -function TJclVersionControlGIT.GetName: string; +function TJclVersionControlGIT.IsGitSupportedDir(const FileDir: string): Boolean; +var + BaseDir: String; + IgnoreList: TStringList; + IgnoreDir : String; + i: Integer; begin - Result := LoadResString(@RsVersionCtrlGITName); + Result := False; + if Enabled then + begin + BaseDir := GetGitBaseDir(FileDir); + if (BaseDir <> '') then + begin + if FileExists(BaseDir + JclVersionCtrlGITIgnoreFile) then + begin + IgnoreList := TStringList.Create; + try + IgnoreList.LoadFromFile(BaseDir + JclVersionCtrlGITIgnoreFile); + for i := 0 to IgnoreList.Count - 1 do + if (IgnoreList[i] <> '') then + begin + IgnoreDir := PathAppend(BaseDir, StrReplaceChar(IgnoreList[i], '/', DirDelimiter)); + if PathIsEqualOrChild(FileDir, IgnoreDir) then + Exit; + end; + finally + IgnoreList.Free; + end; + end; + Result := True; + end; + end; end; initialization - {$IFDEF UNITVERSIONING} +{$IFDEF UNITVERSIONING} RegisterUnitVersion(HInstance, UnitVersioning); - {$ENDIF UNITVERSIONING} - RegisterVersionControlPluginClass(TJclVersionControlGIT); +{$ENDIF UNITVERSIONING} +RegisterVersionControlPluginClass(TJclVersionControlGIT); finalization - UnregisterVersionControlPluginClass(TJclVersionControlGIT); - {$IFDEF UNITVERSIONING} - UnregisterUnitVersion(HInstance); - {$ENDIF UNITVERSIONING} +UnregisterVersionControlPluginClass(TJclVersionControlGIT); +{$IFDEF UNITVERSIONING} +UnregisterUnitVersion(HInstance); +{$ENDIF UNITVERSIONING} end. Modified: trunk/jcl/source/vcl/JclVersionCtrlSVNImpl.pas =================================================================== --- trunk/jcl/source/vcl/JclVersionCtrlSVNImpl.pas 2011-06-19 17:02:28 UTC (rev 3545) +++ trunk/jcl/source/vcl/JclVersionCtrlSVNImpl.pas 2011-06-19 17:04:06 UTC (rev 3546) @@ -285,9 +285,9 @@ finally Entries.Free; end; + Result := Result + [vcaAdd]; end; end; - Result := Result + [vcaAdd]; end; end; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jfu...@us...> - 2011-06-19 17:02:34
|
Revision: 3545 http://jcl.svn.sourceforge.net/jcl/?rev=3545&view=rev Author: jfudickar Date: 2011-06-19 17:02:28 +0000 (Sun, 19 Jun 2011) Log Message: ----------- function PathIsEqualOrChild added function PathRemoveSeparator : small Performance Tuning Modified Paths: -------------- trunk/jcl/source/common/JclFileUtils.pas Modified: trunk/jcl/source/common/JclFileUtils.pas =================================================================== --- trunk/jcl/source/common/JclFileUtils.pas 2011-06-19 17:01:22 UTC (rev 3544) +++ trunk/jcl/source/common/JclFileUtils.pas 2011-06-19 17:02:28 UTC (rev 3545) @@ -144,6 +144,7 @@ function PathGetTempPath: string; function PathIsAbsolute(const Path: string): Boolean; function PathIsChild(const Path, Base: string): Boolean; +function PathIsEqualOrChild(const Path, Base: string): Boolean; function PathIsDiskDevice(const Path: string): Boolean; function PathIsUNC(const Path: string): Boolean; function PathRemoveSeparator(const Path: string): string; @@ -2719,6 +2720,32 @@ {$ENDIF UNIX} end; +function PathIsEqualOrChild(const Path, Base: string): Boolean; +var + L: Integer; + B, P: string; +begin + Result := False; + B := PathRemoveSeparator(Base); + P := PathRemoveSeparator(Path); + // an empty path or one that's not longer than base cannot be a subdirectory + L := Length(B); + {$IFDEF MSWINDOWS} + Result := AnsiSameText(P, B); + {$ENDIF MSWINDOWS} + {$IFDEF UNIX} + Result := AnsiSameStr(P, B); + {$ENDIF UNIX} + if Result or (P = '') or (L >= Length(P)) then + Exit; + {$IFDEF MSWINDOWS} + Result := AnsiSameText(StrLeft(P, L), B) and (P[L+1] = DirDelimiter); + {$ENDIF MSWINDOWS} + {$IFDEF UNIX} + Result := AnsiSameStr(StrLeft(P, L), B) and (P[L+1] = DirDelimiter); + {$ENDIF UNIX} +end; + function PathIsDiskDevice(const Path: string): Boolean; {$IFDEF UNIX} var @@ -2894,7 +2921,7 @@ L: Integer; begin L := Length(Path); - if (L <> 0) and (Path[Length(Path)] = DirDelimiter) then + if (L <> 0) and (Path[L] = DirDelimiter) then Result := Copy(Path, 1, L - 1) else Result := Path; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jfu...@us...> - 2011-06-19 17:01:28
|
Revision: 3544 http://jcl.svn.sourceforge.net/jcl/?rev=3544&view=rev Author: jfudickar Date: 2011-06-19 17:01:22 +0000 (Sun, 19 Jun 2011) Log Message: ----------- Overloaded Function StringsToStr added: function StringsToStr(const List: TStrings; const Sep: string; const NumberOfItems: SizeInt; const AllowEmptyString: Boolean = True): string; overload; Modified Paths: -------------- trunk/jcl/source/common/JclStrings.pas Modified: trunk/jcl/source/common/JclStrings.pas =================================================================== --- trunk/jcl/source/common/JclStrings.pas 2011-06-17 09:47:58 UTC (rev 3543) +++ trunk/jcl/source/common/JclStrings.pas 2011-06-19 17:01:22 UTC (rev 3544) @@ -358,7 +358,9 @@ // TStrings Manipulation procedure StrIToStrings(S, Sep: string; const List: TStrings; const AllowEmptyString: Boolean = True); procedure StrToStrings(S, Sep: string; const List: TStrings; const AllowEmptyString: Boolean = True); -function StringsToStr(const List: TStrings; const Sep: string; const AllowEmptyString: Boolean = True): string; +function StringsToStr(const List: TStrings; const Sep: string; const AllowEmptyString: Boolean = True): string; overload; +function StringsToStr(const List: TStrings; const Sep: string; const NumberOfItems: SizeInt; const AllowEmptyString: + Boolean = True): string; overload; procedure TrimStrings(const List: TStrings; DeleteIfEmpty: Boolean = True); procedure TrimStringsRight(const List: TStrings; DeleteIfEmpty: Boolean = True); procedure TrimStringsLeft(const List: TStrings; DeleteIfEmpty: Boolean = True); @@ -3322,7 +3324,7 @@ end; end; -function StringsToStr(const List: TStrings; const Sep: string; const AllowEmptyString: Boolean): string; +function StringsToStr(const List: TStrings; const Sep: string; const AllowEmptyString: Boolean = True): string; var I, L: SizeInt; begin @@ -3337,13 +3339,40 @@ end; end; // remove terminating separator - if List.Count <> 0 then + if List.Count > 0 then begin L := Length(Sep); Delete(Result, Length(Result) - L + 1, L); end; end; +function StringsToStr(const List: TStrings; const Sep: string; const NumberOfItems: SizeInt; const AllowEmptyString: + Boolean = True): string; +var + I, L, N: SizeInt; +begin + Result := ''; + if List.Count > NumberOfItems then + N := NumberOfItems + else + N := List.Count; + for I := 0 to N - 1 do + begin + if (List[I] <> '') or AllowEmptyString then + begin + // don't combine these into one addition, somehow it hurts performance + Result := Result + List[I]; + Result := Result + Sep; + end; + end; + // remove terminating separator + if N > 0 then + begin + L := Length(Sep); + Delete(Result, Length(Result) - L + 1, L); + end; +end; + procedure TrimStrings(const List: TStrings; DeleteIfEmpty: Boolean); var I: SizeInt; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2011-06-17 09:48:04
|
Revision: 3543 http://jcl.svn.sourceforge.net/jcl/?rev=3543&view=rev Author: outchy Date: 2011-06-17 09:47:58 +0000 (Fri, 17 Jun 2011) Log Message: ----------- sync with the changes made in the documentation wiki. Modified Paths: -------------- trunk/jcl/packages/help/Jcl.dox trunk/jcl/packages/xml/Jcl-R.xml Added Paths: ----------- trunk/help/CppExceptions.dtx Added: trunk/help/CppExceptions.dtx =================================================================== --- trunk/help/CppExceptions.dtx (rev 0) +++ trunk/help/CppExceptions.dtx 2011-06-17 09:47:58 UTC (rev 3543) @@ -0,0 +1,201 @@ + +@@JclInstallCppExceptionFilter +Summary +Installs the C++ exception filter. +Description +Calling the function JclInstallCppExceptionFilter() installs +an exception filter which generates wrapper exceptions of +type EJclCppStdException for external C++ exceptions. Returns +true if the installation was successful, false otherwise. + + + +\NOTE: This function requires that JclHookExceptions from +JclHookExcept.pas has been called before. It will fail if +this is not the case; it will not set up the required hooks +implicitly! + +@@JclCppExceptionFilterInstalled +Summary +Determines whether the C++ exception filter is installed. +Description +Determines whether the C++ exception filter has been +installed properly by calling JclInstallCppExceptionFilter. + +@@JclUninstallCppExceptionFilter +Summary +Removes the C++ exception filter. +Description +Removes the C++ exception filter installed by +JclInstallCppExceptionFilter. + +@@JclCppException.pas +Summary +JclCppException.pas contains utilities to handle C++ +\exceptions in Delphi. +Description +Calling the function JclInstallCppExceptionFilter() installs +an exception filter which generates wrapper exceptions of +type EJclCppStdException for external C++ exceptions. This is +similar to Delphi's own mechanism of generating wrapper +\objects for unknown external exceptions. + + + +An extensive discussion of the problem of C++ exceptions +leaking into Delphi code, possible workarounds and the +solution presented here can be read in the following article: + + + +<extlink http://www.audacia-software.de/en/bcb/external-exception-eefface.htm>External +Exception EEFFACE</extlink> +See Also +EJclCppException + +EJclCppStdException + +JclInstallCppExceptionFilter + +JclUninstallCppExceptionFilter + +JclCppExceptionFilterInstalled + +JclCppExceptionFlags + +@@EJclCppException.IsCppClass +Summary +\Returns True if the underlying C++ exception object is a +class. +Description +C++ permits to throw exceptions of any type, even scalar +types or raw pointers. This function allows to distinguish +them from exceptions which are C++ classes. + +@@EJclCppException.GetCppExceptionObject +Summary +\Returns an untyped pointer to the C++ exception object being +wrapped. +Description + +@@EJclCppException.AsCppClass +Summary +(C++ only) Returns a pointer to the underlying exception +\object. +Description +This function is useful to access the original exception +type. Example: + + + +<c>const char* msg = TheException-\>AsCppClass\<std::exception\> +()-\>what ();</c> + + + +Supported in C++Builder XE and higher only. + +@@EJclCppException.AsCppClass@AnsiString +Summary +(C++ only) Returns a pointer to the underlying exception +\object. +Description +This function is useful to access the original exception +type. Example: + + + +<c>const char* msg = static_cast\<std::exception*\> +(TheException-\>AsCppClass ("std::exception"))-\>what ();</c> + + + +Users of C++Builder XE or higher releases should consider +using EJclCppException.AsCppClass\<\> instead because it +avoids explicit string literals and type casting. + +@@EJclCppException +Summary +Exception wrapper object created for C++ exceptions. +Description +To make them usable in Delphi code, the C++ exceptions are +wrapped into Delphi exceptions, the ECppException class and +the ECppStdException class (the latter one for exception +classes derived from std::exception). + +@@EJclCppException.ThrowFile +Summary +\Returns the source file name from which the exception has +been thrown. +Description +This only works if position information is enabled; look up +the "-xp" switch in the <extlink http://docwiki.embarcadero.com/RADStudio/en/C%2B%2B_Compiler>compiler +command line</extlink>. + +@@EJclCppException.ThrowLine +Summary +\Returns the source line on which the exception has been +thrown. +Description +This only works if position information is enabled; look up +the "-xp" switch in the <extlink http://docwiki.embarcadero.com/RADStudio/en/C%2B%2B_Compiler>compiler +command line</extlink>. + +@@EJclCppException.TypeName +Summary +\Returns the typeid().name() of the C++ exception object +being wrapped. +Description + +@@EJclCppStdException +Summary +Exception wrapper object created for C++ exceptions which +inherit from std::exception. +Description +If a C++ exception object derives from std::exception, we +have a common base class which simplifies things a lot. In +this case, the exception filter creates a wrapper object of +type ECppStdException, which itself inherits from +EJclCppException and provides one more property: +EJclCppStdException.StdException. + + + +The exception message generated for objects of this type +propagates the original exception message returned by +std::exception::what(). + +@@EJclCppStdException.StdException +Summary +\Returns a pointer of type std::exception* which points to +the actual exception object. (Useful in C++ only.) +Description +Use dynamic_cast\<\> to dispatch the pointer provided by this +property. + +@@TJclCppExceptionFlags +Summary +Controls the creation of Delphi exception wrapper objects for +C++ exceptions. +Description +The following values are defined: + + + +\* cefPrependCppClassName - specifies whether the name of the +C++ class is to be included in the exception message. For +\example, a std::runtime_error will generate the error +message "[std::runtime_error] \<exception message\>". This +may be helpful for error diagnosis during development, but it +should not be in the final application because users will +find the cryptic prefix irritating. Note that the original +class name can still be retrieved using +EJclCppException.TypeName. + +@@JclCppExceptionFlags +Summary +Controls the creation of Delphi exception wrapper objects for +C++ exceptions. +Description +See the description of TJclCppExceptionFlags for a list of +\options. Property changes on: trunk/help/CppExceptions.dtx ___________________________________________________________________ Added: svn:eol-style + native Modified: trunk/jcl/packages/help/Jcl.dox =================================================================== --- trunk/jcl/packages/help/Jcl.dox 2011-06-17 09:46:16 UTC (rev 3542) +++ trunk/jcl/packages/help/Jcl.dox 2011-06-17 09:47:58 UTC (rev 3543) @@ -30,7 +30,7 @@ File1=..\..\..\help\JEDI.doxdb [Source Files] -Count=153 +Count=154 File0=..\..\source\include\crossplatform.inc File1=..\..\source\include\jcl.inc File2=..\..\source\include\jclc6.inc @@ -146,44 +146,45 @@ File112=..\..\..\help\Common.dtx File113=..\..\..\help\Complex.dtx File114=..\..\..\help\Counter.dtx -File115=..\..\..\help\DateTime.dtx -File116=..\..\..\help\Debug.dtx -File117=..\..\..\help\ExprEval.dtx -File118=..\..\..\help\FileUtils.dtx -File119=..\..\..\help\Hardlinks.dtx -File120=..\..\..\help\IncludedFiles.dtx -File121=..\..\..\help\IniFiles.dtx -File122=..\..\..\help\Jcl.dtx -File123=..\..\..\help\LANMan.dtx -File124=..\..\..\help\Locales.dtx -File125=..\..\..\help\Logic.dtx -File126=..\..\..\help\Mapi.dtx -File127=..\..\..\help\Math.dtx -File128=..\..\..\help\Midi.dtx -File129=..\..\..\help\Mime.dtx -File130=..\..\..\help\Miscel.dtx -File131=..\..\..\help\Multimedia.dtx -File132=..\..\..\help\Notify.dtx -File133=..\..\..\help\NTFS.dtx -File134=..\..\..\help\pcre.dtx -File135=..\..\..\help\PE.dtx -File136=..\..\..\help\Registry.dtx -File137=..\..\..\help\RTTI.dtx -File138=..\..\..\help\Schedule.dtx -File139=..\..\..\help\Security.dtx -File140=..\..\..\help\Shell.dtx -File141=..\..\..\help\Statistics.dtx -File142=..\..\..\help\Streams.dtx -File143=..\..\..\help\StrHashMap.dtx -File144=..\..\..\help\Strings.dtx -File145=..\..\..\help\SvcCtrl.dtx -File146=..\..\..\help\Synch.dtx -File147=..\..\..\help\SysInfo.dtx -File148=..\..\..\help\SysUtils.dtx -File149=..\..\..\help\Unicode.dtx -File150=..\..\..\help\UnitConv.dtx -File151=..\..\..\help\WideStrings.dtx -File152=..\..\..\help\Win32.dtx +File115=..\..\..\help\CppExceptions.dtx +File116=..\..\..\help\DateTime.dtx +File117=..\..\..\help\Debug.dtx +File118=..\..\..\help\ExprEval.dtx +File119=..\..\..\help\FileUtils.dtx +File120=..\..\..\help\Hardlinks.dtx +File121=..\..\..\help\IncludedFiles.dtx +File122=..\..\..\help\IniFiles.dtx +File123=..\..\..\help\Jcl.dtx +File124=..\..\..\help\LANMan.dtx +File125=..\..\..\help\Locales.dtx +File126=..\..\..\help\Logic.dtx +File127=..\..\..\help\Mapi.dtx +File128=..\..\..\help\Math.dtx +File129=..\..\..\help\Midi.dtx +File130=..\..\..\help\Mime.dtx +File131=..\..\..\help\Miscel.dtx +File132=..\..\..\help\Multimedia.dtx +File133=..\..\..\help\Notify.dtx +File134=..\..\..\help\NTFS.dtx +File135=..\..\..\help\pcre.dtx +File136=..\..\..\help\PE.dtx +File137=..\..\..\help\Registry.dtx +File138=..\..\..\help\RTTI.dtx +File139=..\..\..\help\Schedule.dtx +File140=..\..\..\help\Security.dtx +File141=..\..\..\help\Shell.dtx +File142=..\..\..\help\Statistics.dtx +File143=..\..\..\help\Streams.dtx +File144=..\..\..\help\StrHashMap.dtx +File145=..\..\..\help\Strings.dtx +File146=..\..\..\help\SvcCtrl.dtx +File147=..\..\..\help\Synch.dtx +File148=..\..\..\help\SysInfo.dtx +File149=..\..\..\help\SysUtils.dtx +File150=..\..\..\help\Unicode.dtx +File151=..\..\..\help\UnitConv.dtx +File152=..\..\..\help\WideStrings.dtx +File153=..\..\..\help\Win32.dtx [General] Copyright=Copyright (C) 1999, 2011 Project JEDI Modified: trunk/jcl/packages/xml/Jcl-R.xml =================================================================== --- trunk/jcl/packages/xml/Jcl-R.xml 2011-06-17 09:46:16 UTC (rev 3542) +++ trunk/jcl/packages/xml/Jcl-R.xml 2011-06-17 09:47:58 UTC (rev 3543) @@ -134,6 +134,7 @@ <File Name="..\..\..\help\Common.dtx" Targets="help" Formname="" Condition=""/> <File Name="..\..\..\help\Complex.dtx" Targets="help" Formname="" Condition=""/> <File Name="..\..\..\help\Counter.dtx" Targets="help" Formname="" Condition=""/> + <File Name="..\..\..\help\CppExceptions.dtx" Targets="help" Formname="" Condition=""/> <File Name="..\..\..\help\DateTime.dtx" Targets="help" Formname="" Condition=""/> <File Name="..\..\..\help\Debug.dtx" Targets="help" Formname="" Condition=""/> <File Name="..\..\..\help\ExprEval.dtx" Targets="help" Formname="" Condition=""/> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |